ESP32 DS18B20

ไอโอทีเส้นทางสู่เมืองอัจฉริยะ

Created with Sketch.

ESP32 DS18B20

วันนี้มาทดสอบ  ESP32  กับ  DS18B20  โดยเป็นการเตรียมจะใช้  ต้นแบบนี้สำหรับการวัดอุณหภูมิรถห้องเย็นขนส่งอาหาร  หรือตู้เย็น  ตู้แช่ทั้งหลาย

โดย  DS18B20 นี้สามารถที่จะวัดอุณหภูมิติดลบได้  โดยในงานของเราครั้งนี้จะวัดที่อุณหภูมิประมาณ -10’c

อุปกรณ์ที่ต้องใช้  ESP32 V2 ,  Shield Board ,  DS18B20

การต่อขาก็ง่ายมากครับ

  • สายสีแดงของ DS18B20 ต่อเข้ากับ  3V3
  • สายสีดำต่อกับกราวน์   GND
  • และสายสีเหลืองต่อกับ  GPIO2   แต่ตามรูปเป็น  GPIO4 
  • และมี Resistor  4.7 ต่อคร่อม  3V3 กับ  GPIO2  ตามรูป

เลือก  ESP32 Dev Module  และ  Programmer AVRSIP mkll

ทั้งนี้จะต้องนำ Library Onewire และ  DallasTemperature มาลงให้ถูกต้องนะครับ  ตามลิงก์นี้เลย

https://github.com/milesburton/Arduino-Temperature-Control-Library

และ  OneWire  https://github.com/PaulStoffregen/OneWire

โดยในการดาวน์โหลดจาก github  ท่านจะต้องนำมาลง  โดยการ Include Library .Zip ไฟล์   จากนั้นจะต้องเข้าไปเปลี่ยน   โฟลเดอร์

Arduino-Temperture-Control-Library   เป็น  DallasTemperature  (โดยจะต้องระวังจะไปทับการ DallasTemperature Version ก่อนๆ ที่อาจจะต้องทำสำรองไว้ก่อน)   และ OneWire-Master เป็น  OneWire  (โดยจะต้องระวังจะไปทับการ OneWire Version ก่อนๆ ที่อาจจะต้องทำสำรองไว้ก่อน)

จากนั้นทำการปิด  Arduino IDE และเปิดใหม่  ก็จะทำให้ระบบทำงานได้เรียบร้อยดี

  1. /*
  2. * This sketch sends data via HTTP GET requests to data.sparkfun.com service.
  3. *
  4. * You need to get streamId and privateKey at data.sparkfun.com and paste them
  5. * below. Or just customize this script to talk to other HTTP servers.
  6. * Set board NodeMCU-32S pr ESP32 Dev Module
  7. * Set Programmer AVRISP mkll
  8. */
  9. // Use 3V3 GIOP 2 ESP32 Dev Module
  10. // Programmer AVRSIP mkll
  11. #include <Adafruit_Sensor.h>
  12. /*********
  13. Rui Santos
  14. Complete project details at https://RandomNerdTutorials.com
  15. *********/
  16. #include <OneWire.h>
  17. #include <DallasTemperature.h>
  18. // GPIO where the DS18B20 is connected to
  19. const int oneWireBus = 2;
  20. // Setup a oneWire instance to communicate with any OneWire devices
  21. OneWire oneWire(oneWireBus);
  22. // Pass our oneWire reference to Dallas Temperature sensor
  23. DallasTemperature sensors(&oneWire);
  24. //=========
  25. #include <WiFi.h>
  26. //======
  27. //====
  28. const char* ssid = “Arsenal2019_2.4G”;
  29. const char* password = “kb75699212”;
  30. //const char* ssid = “dlink_DWR-932C_0C4E”;
  31. //const char* password = “gkyVD35784”;
  32. //const char* ssid = “true_home2G_F78”;
  33. //const char* password = “96104427”;
  34. //const char* ssid = “AndroidAP-J7”;
  35. //const char* password = “braw5645”;
  36. const char* host = “otrixiot.com”;
  37. const char* code = “xxxxxxxx”;
  38. float tempC_0 = 0;
  39. float tempF_0=0;
  40. float humid_0 = 0;
  41. float vHumidity = 0;
  42. float vTemperature = 0;
  43. float data1=15;
  44. float data2=33;
  45. float data3=33;
  46. float data4=140;
  47. float data5=200;
  48. float data6=33;
  49. float data7=33;
  50. float data8=33;
  51. float data9=33;
  52. float data10=33;
  53. float data11=33;
  54. float data12=33;
  55. float data13=33;
  56. float data14=33;
  57. float data15=33;
  58. float data16=33;
  59. float data17=33;
  60. float data18=33;
  61. float data19=33;
  62. float data20=33;
  63. float temperatureC=30;
  64. float temperatureF=75;
  65. /*
  66. void setup_Sensor_Box_Temperature()
  67. {
  68. dht.begin();
  69. }
  70. */
  71. /// ===
  72. void ds18b20_setup()
  73. {
  74. // Start the Serial Monitor
  75. Serial.begin(115200);
  76. // Start the DS18B20 sensor
  77. sensors.begin();
  78. }
  79. // Main setup ========
  80. void setup()
  81. {
  82. Serial.begin(115200);
  83. ds18b20_setup();
  84. delay(10);
  85. // We start by connecting to a WiFi network
  86. Serial.println();
  87. Serial.println();
  88. Serial.print(“Connecting to “);
  89. Serial.println(ssid);
  90. WiFi.begin(ssid, password);
  91. while (WiFi.status() != WL_CONNECTED) {
  92. delay(500);
  93. Serial.print(“.”);
  94. }
  95. Serial.println(“”);
  96. Serial.println(“WiFi connected”);
  97. Serial.println(“IP address: “);
  98. Serial.println(WiFi.localIP());
  99. }
  100. int value = 0;
  101. void loop()
  102. {
  103. delay(5000);
  104. ds18b20_loop();
  105. // scanSensor_Box_Temperature();
  106. //data1 = vTemperature;
  107. ++value;
  108. data1 = tempC_0;
  109. data2 = tempF_0;
  110. Serial.print(“connecting to “);
  111. Serial.println(host);
  112. // Use WiFiClient class to create TCP connections
  113. WiFiClient client;
  114. const int httpPort = 80;
  115. if (!client.connect(host, httpPort)) {
  116. Serial.println(“connection failed”);
  117. return;
  118. }
  119. // We now create a URI for the request
  120. String url = “/api/insertData?device_id=” + String(xxx)+”&code=”+String(code)+”&data1=” +String(data1) +”&data2=”
  121. + String(data2)+”&data3=” +String(data3)+”&data4=” +String(data4)+”&data5=” +String(data5)
  122. +”&data6=” +String(data6)+”&data7=” +String(data7)+”&data8=” +String(data8)+”&data9=” +String(data9)
  123. +”&data10=” +String(data10)+”&data11=” +String(data11)+”&data12=” +String(data12)+”&data13=” +String(data13)
  124. +”&data14=” +String(data14)+”&data15=” +String(data15)+”&data16=” +String(data16)+”&data17=” +String(data17)
  125. +”&data18=” +String(data18)+”&data19=” +String(data19)+”&data20=” +String(data20);
  126. Serial.print(“Requesting URL: “);
  127. Serial.println(url);
  128. // This will send the request to the server
  129. client.print(String(“GET “) + url + ” HTTP/1.1\r\n” +
  130. “Host: ” + host + “\r\n” +
  131. “Connection: close\r\n\r\n”);
  132. unsigned long timeout = millis();
  133. while (client.available() == 0) {
  134. if (millis() – timeout > 5000) {
  135. Serial.println(“>>> Client Timeout !”);
  136. client.stop();
  137. return;
  138. }
  139. }
  140. // Read all the lines of the reply from server and print them to Serial
  141. while(client.available()) {
  142. String line = client.readStringUntil(‘\r’);
  143. //Serial.print(line);
  144. }
  145. Serial.println();
  146. Serial.println(“closing connection”);
  147. delay(50000);
  148. }
  149. //====
  150. void ds18b20_loop()
  151. {
  152. sensors.requestTemperatures();
  153. float temperatureC = sensors.getTempCByIndex(0);
  154. float temperatureF = sensors.getTempFByIndex(0);
  155. Serial.print(temperatureC);
  156. Serial.println(“ºC”);
  157. Serial.print(temperatureF);
  158. Serial.println(“ºF”);
  159. delay(5000);
  160. tempC_0 = temperatureC;
  161. tempF_0 = temperatureF;
  162. }
  163. //====

ตามโปรแกรมจะเป็นการส่งไปยังแพลตฟอร์ม    Otrixiot.com