- ส่วนประกอบที่ต้องการ:
- LM35 เซ็นเซอร์อุณหภูมิ:
- การเชื่อมต่อ LM35 กับ NodeMCU:
- คำอธิบายรหัส:
- รหัส HTML เพื่อแสดงอุณหภูมิบนหน้าเว็บ:
- การทำงาน:
ในการเริ่มต้นใช้งานบทช่วยสอน NodeMCU ก่อนหน้านี้เราได้เห็น NodeMCU คืออะไร และ เราจะตั้งโปรแกรมโดยใช้ Arduino IDE ได้อย่างไร อย่างที่ทราบกันดีว่า NodeMCU มีชิป Wi-Fi อยู่ภายในจึงสามารถเชื่อมต่ออินเทอร์เน็ตได้ด้วย มีประโยชน์มากในการสร้างโครงการ IoT ก่อนหน้านี้เราใช้ ThingSpeak กับ Arduino เพื่อสร้างเครื่องวัดอุณหภูมิ IoT แต่ที่นี่เราจะสร้างหน้าเว็บของเราเองเพื่อแสดงอุณหภูมิ
ในบทช่วยสอนนี้เราจะสำรวจเพิ่มเติมเกี่ยวกับ MCU ที่น่าสนใจนี้และค่อยๆดำดิ่งสู่โลกอินเทอร์เน็ตของสิ่งต่าง ๆ โดยการเชื่อมต่อ NodeMCU กับอินเทอร์เน็ต ที่นี่เราจะใช้โมดูลนี้เพื่อรับอุณหภูมิห้องบนเว็บเบราว์เซอร์เช่นเราจะสร้างเว็บเซิร์ฟเวอร์เพื่อแสดงอุณหภูมิโดยใช้ LM35เป็นเซ็นเซอร์อุณหภูมิ
ส่วนประกอบที่ต้องการ:
- NodeMCU - ESP12
- LM35 เซ็นเซอร์อุณหภูมิ
- เขียงหั่นขนม
- ขั้วต่อชาย - หญิง
LM35 เซ็นเซอร์อุณหภูมิ:
LM35 เป็นเซนเซอร์วัดอุณหภูมิเชิงเส้นแบบอะนาล็อก ผลผลิตเป็นสัดส่วนกับอุณหภูมิ (องศาเซลเซียส) ช่วงอุณหภูมิในการทำงานอยู่ระหว่าง -55 ° C ถึง 150 ° C แรงดันไฟฟ้าขาออกจะแตกต่างกันไป 10mV เพื่อตอบสนองต่ออุณหภูมิที่เพิ่มขึ้นหรือลดลงทุกๆ o C สามารถใช้งานได้จากแหล่งจ่าย 5V เช่นเดียวกับ 3.3 V และกระแสไฟสแตนด์บายน้อยกว่า 60uA
โปรดทราบว่า LM35 มีให้เลือก 3 แบบ ได้แก่ LM35A, LM35C และ LM35D series ความแตกต่างหลักอยู่ที่ช่วงการวัดอุณหภูมิ ซีรี่ส์ LM35D ได้รับการออกแบบมาเพื่อวัด 0 ถึง 100 องศาเซลเซียสโดยที่ซีรี่ส์ LM35A ได้รับการออกแบบมาเพื่อวัดช่วงที่กว้างขึ้น -55 ถึง 155 องศาเซลเซียส ซีรี่ส์ LM35C ได้รับการออกแบบให้วัดได้ตั้งแต่ -40 ถึง 110 องศาเซลเซียส
เราได้ใช้ LM35 กับไมโครคอนโทรลเลอร์อื่น ๆ เพื่อวัดอุณหภูมิแล้ว:
- เครื่องวัดอุณหภูมิดิจิตอลโดยใช้ไมโครคอนโทรลเลอร์ LM35 และ 8051
- การวัดอุณหภูมิโดยใช้ไมโครคอนโทรลเลอร์ LM35 และ AVR
- เครื่องวัดอุณหภูมิดิจิตอลโดยใช้ Arduino และ LM35 Temperature Sensor
- การวัดอุณหภูมิห้องด้วย Raspberry Pi
การเชื่อมต่อ LM35 กับ NodeMCU:
แผนภาพวงจรสำหรับเชื่อมต่อ LM35 กับ NodeMCUมีดังต่อไปนี้:
LM35 เป็นเซ็นเซอร์อนาล็อกดังนั้นเราจึงต้องแปลงเอาต์พุตอนาล็อกนี้เป็นดิจิตอล สำหรับสิ่งนี้เราใช้ขา ADC ของ NodeMCU ซึ่งกำหนดเป็น A0 เราจะเชื่อมต่อเอาต์พุตของ LM35 กับ A0
เรามี 3.3 V เป็นแรงดันเอาต์พุตบนพินของ NodeMCU ดังนั้นเราจะใช้ 3.3V เป็น Vcc สำหรับ LM35
คำอธิบายรหัส:
รหัสที่สมบูรณ์พร้อมวิดีโอสาธิตจะได้รับในตอนท้ายของบทความ เรากำลังอธิบายบางส่วนของโค้ด เราได้อธิบายการอัปโหลดโค้ดไปยัง MCU โดยใช้ Arduino IDE แล้ว
ก่อนอื่นเราต้องรวมไลบรารี ESP8266wifi เพื่อเข้าถึงฟังก์ชั่น Wi-Fi..
# รวม
จากนั้นใส่ชื่อ Wi-Fi และรหัสผ่านของคุณใน SSID และ รหัสผ่าน ข้อมูล เริ่มต้นตัวแปรและเริ่มเซิร์ฟเวอร์บนพอร์ต 80 ด้วยอัตราการส่งข้อมูล 115200
const ถ่าน * ssid = "*********"; // ssid const char * password ของคุณ = "***********"; // รหัสผ่านของคุณ ลอย temp_celsius = 0; ลอย temp_fahrenheit = 0; เซิร์ฟเวอร์ WiFiServer (80); การตั้งค่าเป็นโมฆะ () { Serial.begin (115200);
การเชื่อมต่อ Wi-Fi ทำได้โดยการเรียกใช้ฟังก์ชันเหล่านี้
Serial.println (); Serial.println (); Serial.print ("กำลังเชื่อมต่อกับ"); Serial.println (ssid); WiFi.begin (ssid รหัสผ่าน);
การเชื่อมต่ออาจใช้เวลาไม่กี่วินาทีในการสร้างดังนั้นให้แสดง '… ' ต่อไปจนกว่าการเชื่อมต่อจะไม่สร้าง จากนั้นระบบจะรอและตรวจสอบลูกค้าเพื่อเชื่อมต่อ…
ในขณะที่ (WiFi.status ()! = WL_CONNECTED) { ล่าช้า (500); Serial.print ("."); } Serial.println (""); Serial.println ("เชื่อมต่อ WiFi แล้ว"); server.begin (); Serial.println ("เซิร์ฟเวอร์เริ่มทำงาน"); Serial.println (WiFi.localIP ()); }
ในส่วน ลูป อ่านค่าเซ็นเซอร์และแปลงเป็นเซลเซียสและฟาเรนไฮต์และแสดงค่าเหล่านี้บนมอนิเตอร์แบบอนุกรม
ห่วงเป็นโมฆะ () { temp_celsius = (analogRead (A0) * 330.0) / 1023.0; // ในการแปลงค่าอะนาล็อกเป็นเซลเซียสเรามี 3.3 V บนบอร์ดของเราและเรารู้ว่าแรงดันเอาต์พุตของ LM35 จะแตกต่างกันไป 10 mV สำหรับการขึ้น / ลงทุกองศาเซลเซียส ดังนั้น (A0 * 3300/10 ) / 1023 = อุณหภูมิเซลเซียส_ ฟาเรนไฮต์ = เซลเซียส * 1.8 + 32.0; Serial.print ("อุณหภูมิ ="); Serial.print (อุณหภูมิ _ องศาเซลเซียส); Serial.print ("เซลเซียส,");
รหัส HTML เพื่อแสดงอุณหภูมิบนหน้าเว็บ:
เรากำลังแสดงอุณหภูมิบนหน้าเว็บเพื่อให้สามารถเข้าถึงได้จากทุกที่ในโลกผ่านอินเทอร์เน็ต โค้ด HTML นั้นง่ายมาก เราต้องใช้ฟังก์ชัน client.println เพื่อสะท้อนโค้ด HTML แต่ละบรรทัดเพื่อให้เบราว์เซอร์สามารถดำเนินการได้
ส่วนนี้แสดงโค้ด HTML เพื่อสร้างเว็บเพจซึ่งแสดงค่าอุณหภูมิ
ไคลเอนต์ WiFiClient = server.available (); client.println ("HTTP / 1.1 200 ตกลง"); client.println ("ประเภทเนื้อหา: text / html"); client.println ("การเชื่อมต่อ: ปิด"); // การเชื่อมต่อจะถูกปิดหลังจากเสร็จสิ้นการตอบสนอง client.println ("รีเฟรช: 10"); // อัปเดตเพจหลังจาก 10 วินาที client.println (); client.println (""); client.println (""); client.print ("
เครื่องวัดอุณหภูมิดิจิตอล
"); client.print ("อุณหภูมิ (* C) = "); client.println (temp_celsius); client.print ("
อุณหภูมิ (F) = "); client.println (temp_fahrenheit); client.print ("
"); client.println (" "); ล่าช้า (5000); }การทำงาน:
หลังจากอัปโหลดโค้ดโดยใช้ Arduino IDE แล้วให้เปิดมอนิเตอร์แบบอนุกรมแล้วกดปุ่มรีเซ็ตบน NodeMCU
ตอนนี้คุณสามารถเห็นบอร์ดเชื่อมต่อกับเครือข่าย Wi-Fi ซึ่งคุณได้กำหนดไว้ในรหัสของคุณและคุณได้รับ IP ด้วย คัดลอก IP นี้และวางในเว็บเบราว์เซอร์ใดก็ได้ ตรวจสอบให้แน่ใจว่าระบบของคุณที่คุณใช้งานเว็บเบราว์เซอร์ควรเชื่อมต่อกับเครือข่ายเดียวกัน
เครื่องวัดอุณหภูมิดิจิตอลของคุณพร้อมแล้วและอุณหภูมิจะรีเฟรชโดยอัตโนมัติในเว็บเบราว์เซอร์ทุก ๆ 10 วินาที
ในการทำให้หน้าเว็บนี้สามารถเข้าถึงได้จากอินเทอร์เน็ตคุณเพียงแค่ตั้งค่าPort Forwardingในเราเตอร์ / โมเด็มของคุณ ตรวจสอบโค้ดและวิดีโอด้านล่าง
ตรวจสอบด้วย:
- Raspberry Pi Weather Station: ตรวจสอบความชื้นอุณหภูมิและความดันผ่านอินเทอร์เน็ต
- การตรวจสอบอุณหภูมิและความชื้นสดผ่านอินเทอร์เน็ตโดยใช้ Arduino และ ThingSpeak