Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:iot-open:practical:hardware:sut:esp32:emb4_1 [2024/03/21 20:07] – [Task to be implemented] pczekalskien:iot-open:practical:hardware:sut:esp32:emb4_1 [2024/04/22 17:55] (current) – ToDo checked: check if you don't need to call sensors.requestTemperatures(); before the code below ktokarz
Line 1: Line 1:
-<todo @pczekalski>Finish this scenario </todo> 
 ====== EMB4: 1-Wire Temperature Sensor ===== ====== EMB4: 1-Wire Temperature Sensor =====
 The temperature-only sensor **DS18B20** uses a 1-wire protocol. "1-wire" applies only to the bidirectional bus; power and GND are on separate pins. The sensor is connected to the MCU using GPIO 6 only. Many devices can be connected on a single 1-wire bus, each with a unique ID. **DS18B20** also has a water-proof metal enclosure version (but here, in our lab, we use a plastic one) that enables easy monitoring of the liquid's temperature. The temperature-only sensor **DS18B20** uses a 1-wire protocol. "1-wire" applies only to the bidirectional bus; power and GND are on separate pins. The sensor is connected to the MCU using GPIO 6 only. Many devices can be connected on a single 1-wire bus, each with a unique ID. **DS18B20** also has a water-proof metal enclosure version (but here, in our lab, we use a plastic one) that enables easy monitoring of the liquid's temperature.
Line 31: Line 30:
  
 ==== Start ==== ==== Start ====
-//Write starting conditions, i.e. what to do in the beginning, what to pay attention to before beginning, how the mechanical part should look, etc.// Include needed compiler configuration, etc.+Check if your display of choice is visible in the FOV of the camera once the device is booked.
  
 ==== Steps ==== ==== Steps ====
-// Write some extra information if, i.e. some steps are optional; otherwise, cancel this paragraph (but do not remove the header).//+The steps below present only interaction with the sensorThose steps should be supplied to present the data (or send it over the networkusing other scenarios accordingly.
 === Step 1 === === Step 1 ===
-//Describe activities done in Step 1.//+Include Dallas sensor library and 1-Wire protocol implementation library: 
 +<code c> 
 +#include <OneWire.h> 
 +#include <DallasTemperature.h> 
 +</code> 
 +<note important>Also, remember to add the LCD handling library, as present in the EMB9 scenario, unless you decide to use another output device.</note> 
 +=== Step 2 === 
 +Declare the 1-Wire GPIO bus pin, 1-Wire communication handling object, sensor proxy and a variable to store readings: 
 +<code c> 
 +#define ONE_WIRE_BUS 6 
 +static OneWire oneWire(ONE_WIRE_BUS); 
 +static DallasTemperature sensors(&oneWire); 
 +static float tempDS; 
 +</code> 
 +<note>Note, the ''sensors'' class represents a list of all sensors available on the 1-Wire bus. Obviously, there is just a single one in each of our laboratory nodes.</note>
  
-...+=== Step 3 === 
 +Initialise sensors' proxy class: 
 +<code c> 
 +  sensors.begin(); 
 +</code>
  
-=== Step === + 
-//Describe activities done in Step n.//+=== Step === 
 +<todo @pczekalski #ktokarz:2024-04-22> check if you don't need to call sensors.requestTemperatures(); before the code below </todo> 
 +Read the data: 
 +<code c> 
 +  if (sensors.getDeviceCount()>0) 
 +  { 
 +    tempDS = sensors.getTempCByIndex(0); 
 +  } 
 +  else 
 +  { 
 +    // Sensors not present (broken?) or 1-wire bus error 
 +  } 
 +</code>  
 +Remember not to read the sensor too frequently. 10s between consecutive readings is just fine.\\ 
 +Devices in the 1-Wire bus are addressable either by index (as in the example above) or by their address.\\ 
 +Some useful functions are present below: 
 +  * ''DallasTemperature::toFahrenheit(tempDS)'' - converts temperature in C to F, 
 +  * ''sensors.getAddress(sensorAddress, index)'' - reads device address given by ''uint8_t index'' and stores it in ''DeviceAddress sensorAddress''
 + 
 +The library can make non-blocking calls, which can also be implemented using timers, as presented in the scenario [[en:iot-open:practical:hardware:sut:esp32:adv1_1|]].
  
 ==== Result validation ==== ==== Result validation ====
-//Provide some result validation methods for self-assessment.//+The observable temperature is usually within the range of 19-24C. If you find the temperature much higher, check your code, and if that is okay, please contact our administrator to inform us about the faulty AC.
  
-===== FAQ ===== 
-This section is to be extended as new questions appear. \\ 
-When using the printed version of this manual, please refer to the latest online version of this document to obtain the valid and up-to-date list of the FAQ. 
-//Provide some FAQs in the following form:\\ 
-**Question?**: Answer. 
-// 
  
 +
 +<WRAP noprint>
 ===== Project information ===== ===== Project information =====
 {{:en:iot-open:logo_iot_200_px.png?200|}}\\ {{:en:iot-open:logo_iot_200_px.png?200|}}\\
Line 69: Line 101:
 {{:en:iot-open:ccbync.png?100|}} {{:en:iot-open:ccbync.png?100|}}
 </figure> </figure>
 +</WRAP>
  
  
en/iot-open/practical/hardware/sut/esp32/emb4_1.1711051621.txt.gz · Last modified: 2024/03/21 20:07 by pczekalski
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0