สอนใช้งาน NodeMCU ESP8266 เชื่อมต่อ DHT11
เซ็นเซอร์วัดอุณหภูมิและความชื้น แสดงค่าผ่าน wifi web server
/********* | |
| Rui Santos | |
| Complete project details at http://randomnerdtutorials.com | |
| *********/ | |
| // Including the ESP8266 WiFi library | |
| #include <ESP8266WiFi.h> | |
| #include "DHT.h" | |
| // Uncomment one of the lines below for whatever DHT sensor type you're using! | |
| #define DHTTYPE DHT11 // DHT 11 | |
| //#define DHTTYPE DHT21 // DHT 21 (AM2301) | |
| //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 | |
| // Replace with your network details | |
| const char* ssid = "my_arduino"; | |
| const char* password = "0927566556"; | |
| // Web Server on port 80 | |
| WiFiServer server(80); | |
| // DHT Sensor | |
| const int DHTPin = 5; | |
| // Initialize DHT sensor. | |
| DHT dht(DHTPin, DHTTYPE); | |
| // Temporary variables | |
| static char celsiusTemp[7]; | |
| static char fahrenheitTemp[7]; | |
| static char humidityTemp[7]; | |
| // only runs once on boot | |
| void setup() { | |
| // Initializing serial port for debugging purposes | |
| Serial.begin(115200); | |
| delay(10); | |
| dht.begin(); | |
| // Connecting to WiFi network | |
| Serial.println(); | |
| Serial.print("Connecting to "); | |
| Serial.println(ssid); | |
| WiFi.begin(ssid, password); | |
| while (WiFi.status() != WL_CONNECTED) { | |
| delay(500); | |
| Serial.print("."); | |
| } | |
| Serial.println(""); | |
| Serial.println("WiFi connected"); | |
| // Starting the web server | |
| server.begin(); | |
| Serial.println("Web server running. Waiting for the ESP IP..."); | |
| delay(10000); | |
| // Printing the ESP IP address | |
| Serial.println(WiFi.localIP()); | |
| } | |
| // runs over and over again | |
| void loop() { | |
| // Listenning for new clients | |
| WiFiClient client = server.available(); | |
| if (client) { | |
| Serial.println("New client"); | |
| // bolean to locate when the http request ends | |
| boolean blank_line = true; | |
| while (client.connected()) { | |
| if (client.available()) { | |
| char c = client.read(); | |
| if (c == '\n' && blank_line) { | |
| // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) | |
| float h = dht.readHumidity(); | |
| // Read temperature as Celsius (the default) | |
| float t = dht.readTemperature(); | |
| // Read temperature as Fahrenheit (isFahrenheit = true) | |
| float f = dht.readTemperature(true); | |
| // Check if any reads failed and exit early (to try again). | |
| if (isnan(h) || isnan(t) || isnan(f)) { | |
| Serial.println("Failed to read from DHT sensor!"); | |
| strcpy(celsiusTemp, "Failed"); | |
| strcpy(fahrenheitTemp, "Failed"); | |
| strcpy(humidityTemp, "Failed"); | |
| } | |
| else { | |
| // Computes temperature values in Celsius + Fahrenheit and Humidity | |
| float hic = dht.computeHeatIndex(t, h, false); | |
| dtostrf(hic, 6, 2, celsiusTemp); | |
| float hif = dht.computeHeatIndex(f, h); | |
| dtostrf(hif, 6, 2, fahrenheitTemp); | |
| dtostrf(h, 6, 2, humidityTemp); | |
| // You can delete the following Serial.print's, it's just for debugging purposes | |
| Serial.print("Humidity: "); | |
| Serial.print(h); | |
| Serial.print(" %\t Temperature: "); | |
| Serial.print(t); | |
| Serial.print(" *C "); | |
| Serial.print(f); | |
| Serial.print(" *F\t Heat index: "); | |
| Serial.print(hic); | |
| Serial.print(" *C "); | |
| Serial.print(hif); | |
| Serial.print(" *F"); | |
| Serial.print("Humidity: "); | |
| Serial.print(h); | |
| Serial.print(" %\t Temperature: "); | |
| Serial.print(t); | |
| Serial.print(" *C "); | |
| Serial.print(f); | |
| Serial.print(" *F\t Heat index: "); | |
| Serial.print(hic); | |
| Serial.print(" *C "); | |
| Serial.print(hif); | |
| Serial.println(" *F"); | |
| } | |
| client.println("HTTP/1.1 200 OK"); | |
| client.println("Content-Type: text/html"); | |
| client.println("Connection: close"); | |
| client.println(); | |
| // your actual web page that displays temperature and humidity | |
| client.println("<!DOCTYPE HTML>"); | |
| client.println("<html>"); | |
| client.println("<head></head><body><h1>ESP8266 - Temperature and Humidity Myarduino.net</h1><h3>Temperature in Celsius: "); | |
| client.println(celsiusTemp); | |
| client.println("*C</h3><h3>Temperature in Fahrenheit: "); | |
| client.println(fahrenheitTemp); | |
| client.println("*F</h3><h3>Humidity: "); | |
| client.println(humidityTemp); | |
| client.println("%</h3><h3>"); | |
| client.println("</body></html>"); | |
| break; | |
| } | |
| if (c == '\n') { | |
| // when starts reading a new line | |
| blank_line = true; | |
| } | |
| else if (c != '\r') { | |
| // when finds a character on the current line | |
| blank_line = false; | |
| } | |
| } | |
| } | |
| // closing the client connection | |
| delay(1); | |
| client.stop(); | |
| Serial.println("Client disconnected."); | |
| } | |
| } อ้างอิง https://www.myarduino.net |

ไม่มีความคิดเห็น:
แสดงความคิดเห็น