Advertisement
Guest User

Kod1

a guest
Mar 18th, 2022
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.37 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <ESP8266WebServer.h>
  3. #include <WiFiClient.h>
  4. #include <OneWire.h>
  5. #include <DallasTemperature.h>
  6.  
  7. extern "C" {
  8.    ADC_MODE(ADC_VCC);
  9. }
  10. //------------------------------------------
  11. //DS18B20
  12. #define ONE_WIRE_BUS 2 //Pin to which is attached a temperature sensor
  13. #define ONE_WIRE_MAX_DEV 15 //The maximum number of devices
  14.  
  15. OneWire oneWire(ONE_WIRE_BUS);
  16. DallasTemperature DS18B20(&oneWire);
  17. int numberOfDevices; //Number of temperature devices found
  18. DeviceAddress devAddr[ONE_WIRE_MAX_DEV];  //An array device temperature sensors
  19. float tempDev[ONE_WIRE_MAX_DEV]; //Saving the last measurement of temperature
  20. float tempDevLast[ONE_WIRE_MAX_DEV]; //Previous temperature measurement
  21. long lastTemp; //The last measurement
  22. const int durationTemp = 5000; //The frequency of temperature measurement
  23.  
  24. //------------------------------------------
  25. //WIFI
  26. const char *ssid = "Orange_Swiatlowod_3378";
  27. const char *password = "YCFFK7NTHKHD";
  28.  
  29. //------------------------------------------
  30. //HTTP
  31. ESP8266WebServer server(80);
  32.  
  33. //------------------------------------------
  34. //Convert device id to String
  35. String GetAddressToString(DeviceAddress deviceAddress){
  36.   String str = "";
  37.   for (uint8_t i = 0; i < 8; i++){
  38.     if( deviceAddress[i] < 16 ) str += String(0, HEX);
  39.     str += String(deviceAddress[i], HEX);
  40.   }
  41.   return str;
  42. }
  43.  
  44. //Setting the temperature sensor
  45. void SetupDS18B20(){
  46.   DS18B20.begin();
  47.  
  48.   Serial.print("Parasite power is: ");
  49.   if( DS18B20.isParasitePowerMode() ){
  50.     Serial.println("ON");
  51.   }else{
  52.     Serial.println("OFF");
  53.   }
  54.  
  55.   numberOfDevices = DS18B20.getDeviceCount();
  56.   Serial.print( "Device count: " );
  57.   Serial.println( numberOfDevices );
  58.  
  59.   lastTemp = millis();
  60.   DS18B20.requestTemperatures();
  61.  
  62.   // Loop through each device, print out address
  63.   for(int i=0;i<numberOfDevices; i++){
  64.     // Search the wire for address
  65.     if( DS18B20.getAddress(devAddr[i], i) ){
  66.       //devAddr[i] = tempDeviceAddress;
  67.       Serial.print("Found device ");
  68.       Serial.print(i, DEC);
  69.       Serial.print(" with address: " + GetAddressToString(devAddr[i]));
  70.       Serial.println();
  71.     }else{
  72.       Serial.print("Found ghost device at ");
  73.       Serial.print(i, DEC);
  74.       Serial.print(" but could not detect address. Check power and cabling");
  75.     }
  76.  
  77.     //Get resolution of DS18b20
  78.     Serial.print("Resolution: ");
  79.     Serial.print(DS18B20.getResolution( devAddr[i] ));
  80.     Serial.println();
  81.  
  82.     //Read temperature from DS18b20
  83.     float tempC = DS18B20.getTempC( devAddr[i] );
  84.     Serial.print("Temp C: ");
  85.     Serial.println(tempC);
  86.   }
  87. }
  88.  
  89. //Loop measuring the temperature
  90. void TempLoop(long now){
  91.   if( now - lastTemp > durationTemp ){ //Take a measurement at a fixed time (durationTemp = 5000ms, 5s)
  92.     for(int i=0; i<numberOfDevices; i++){
  93.       float tempC = DS18B20.getTempC( devAddr[i] ); //Measuring temperature in Celsius
  94.       tempDev[i] = tempC; //Save the measured value to the array
  95.     }
  96.     DS18B20.setWaitForConversion(false); //No waiting for measurement
  97.     DS18B20.requestTemperatures(); //Initiate the temperature measurement
  98.     lastTemp = millis();  //Remember the last time measurement
  99.   }
  100. }
  101.  
  102. //------------------------------------------
  103. void HandleRoot(){
  104.   int nap1 = ESP.getVcc() / 1000;
  105.   int nap2 = ESP.getVcc() - nap1*1000;
  106.   String message = "Number of devices: ";
  107.   message += numberOfDevices;
  108.   message += "\r\n<br>";
  109.   char temperatureString[6];
  110.  
  111.   message += "<table border='1'>\r\n";
  112.   message += "<tr><td>Device id</td><td>Temperature</td></tr>\r\n";
  113.   for(int i=0;i<numberOfDevices;i++){
  114.     dtostrf(tempDev[i], 2, 2, temperatureString);
  115.     Serial.print( "Sending temperature: " );
  116.     Serial.println( temperatureString );
  117.     Serial.print(nap1,nap2);
  118.     message += "<tr><td>";
  119.     message += GetAddressToString( devAddr[i] );
  120.     message += "</td>\r\n";
  121.     message += "<td>";
  122.     message += temperatureString;
  123.     message += "</td></tr>\r\n";
  124.     message += "\r\n";
  125.    
  126.   }
  127.   message += "</table>\r\n";
  128.   message += "<h1>nap=<h1>";
  129.   message += nap1;
  130.   message += nap2;
  131.   message += "<h1>V<h1>";
  132.  
  133.   server.send(200, "text/html", message );
  134. }
  135.  
  136. void HandleNotFound(){
  137.   String message = "File Not Found\n\n";
  138.   message += "URI: ";
  139.   message += server.uri();
  140.   message += "\nMethod: ";
  141.   message += (server.method() == HTTP_GET)?"GET":"POST";
  142.   message += "\nArguments: ";
  143.   message += server.args();
  144.   message += "\n";
  145.   for (uint8_t i=0; i<server.args(); i++){
  146.     message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
  147.   }
  148.   server.send(404, "text/html", message);
  149. }
  150.  
  151.  
  152. //------------------------------------------
  153. void setup() {
  154.   //Setup Serial port speed
  155.   Serial.begin(115200);
  156.  
  157.   //Setup WIFI
  158.   WiFi.begin(ssid, password);
  159.   Serial.println("");
  160.  
  161.   //Wait for WIFI connection
  162.   while (WiFi.status() != WL_CONNECTED) {
  163.     delay(500);
  164.     Serial.print(".");
  165.   }
  166.   Serial.println("");
  167.   Serial.print("Connected to ");
  168.   Serial.println(ssid);
  169.   Serial.print("IP address: ");
  170.   Serial.println(WiFi.localIP());
  171.   server.on("/", HandleRoot);
  172.   server.onNotFound( HandleNotFound );
  173.   server.begin();
  174.   Serial.println("HTTP server started at ip " + WiFi.localIP().toString() );
  175.  
  176.   //Setup DS18b20 temperature sensor
  177.   SetupDS18B20();
  178.  
  179. }
  180.  
  181. void loop() {
  182.   long t = millis();
  183.  
  184.   server.handleClient();
  185.   TempLoop( t );
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement