สารบัญ:
- ขั้นตอนที่ 1: รายการวัสดุ
- ขั้นตอนที่ 2: เซ็นเซอร์อุณหภูมิ DS18B20
- ขั้นตอนที่ 3: เชื่อมต่อเซ็นเซอร์กับ NodeMCU
- ขั้นตอนที่ 4: การติดตั้ง Libraries ที่เหมาะสม
- ขั้นตอนที่ 5: การทดสอบเซ็นเซอร์
- ขั้นตอนที่ 6: การใช้ Blynk
- ขั้นตอนที่ 7: บทสรุป
วีดีโอ: IoT เป็นเรื่องง่าย: การตรวจสอบเซ็นเซอร์หลายตัว: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
เมื่อไม่กี่สัปดาห์ก่อน ฉันได้เผยแพร่บทแนะนำเกี่ยวกับการตรวจสอบอุณหภูมิโดยใช้ DS18B20 ซึ่งเป็นเซ็นเซอร์ดิจิทัลที่สื่อสารผ่านบัส 1-Wire โดยส่งข้อมูลผ่านอินเทอร์เน็ตด้วย NodeMCU และ Blynk:
IoT ทำได้ง่าย: ตรวจสอบอุณหภูมิได้ทุกที่
แต่สิ่งที่เราพลาดไปในการสำรวจคือข้อดีอย่างหนึ่งของเซ็นเซอร์ประเภทนี้ ที่มีความเป็นไปได้ในการรวบรวมข้อมูลหลายตัว จากเซ็นเซอร์หลายตัวที่เชื่อมต่อกับบัส 1 สายเดียวกัน และตอนนี้ก็ถึงเวลาสำรวจด้วยเช่นกัน
เราจะขยายสิ่งที่พัฒนาขึ้นในบทช่วยสอนล่าสุด โดยตรวจสอบเซ็นเซอร์ DS18B20 สองตัวในขณะนี้ กำหนดค่าหนึ่งตัวใน Celcius และอีกตัวใน Fahrenheit ข้อมูลจะถูกส่งไปยังแอพ Blynk ตามที่แสดงในบล็อกไดอะแกรมด้านบน
ขั้นตอนที่ 1: รายการวัสดุ
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 อุณหภูมิ เซนเซอร์
- ตัวต้านทาน 4.7K โอห์ม
- เขียงหั่นขนม
- การเดินสายไฟ
(*) สามารถใช้อุปกรณ์ ESP ประเภทใดก็ได้ที่นี่ ที่พบมากที่สุดคือ NodeMCU V2 หรือ V3 ทั้งสองจะทำงานได้ดีเสมอ
ขั้นตอนที่ 2: เซ็นเซอร์อุณหภูมิ DS18B20
เราจะใช้ในบทช่วยสอนนี้เกี่ยวกับเซ็นเซอร์ DS18B20 รุ่นกันน้ำ มีประโยชน์มากสำหรับอุณหภูมิระยะไกลในสภาพเปียก เช่น บนดินชื้น เซ็นเซอร์ถูกแยกออกมาและสามารถวัดได้จนถึง 125oC (Adafrut ไม่แนะนำให้ใช้เกิน 100oC เนื่องจากปลอกหุ้มสาย PVC)
DS18B20 เป็นเซ็นเซอร์ดิจิทัลที่ทำให้ใช้งานได้ดีแม้ในระยะทางไกล! เซ็นเซอร์อุณหภูมิดิจิตอลแบบ 1 สายเหล่านี้มีความเที่ยงตรงพอสมควร (±0.5°C ในช่วงส่วนใหญ่) และสามารถให้ความแม่นยำสูงสุด 12 บิตจากตัวแปลงดิจิทัลเป็นแอนะล็อกออนบอร์ด มันใช้งานได้ดีกับ NodeMCU โดยใช้พินดิจิทัลเพียงอันเดียว และคุณยังสามารถเชื่อมต่อหลายอันเข้ากับพินเดียวกันได้ แต่ละอันมี ID 64 บิตที่ไม่ซ้ำกันซึ่งถูกฝังไว้ที่โรงงานเพื่อสร้างความแตกต่าง
เซ็นเซอร์ทำงานตั้งแต่ 3.0 ถึง 5.0V ซึ่งหมายความว่าสามารถขับเคลื่อนโดยตรงจากพิน NodeMCU 3.3V ตัวใดตัวหนึ่ง
เซ็นเซอร์มี 3 สาย:
- สีดำ: GND
- สีแดง: VCC
- สีเหลือง: 1-Wire Data
คุณสามารถค้นหาข้อมูลทั้งหมดได้ที่นี่: DS18B20 เอกสารข้อมูลสินค้า
ขั้นตอนที่ 3: เชื่อมต่อเซ็นเซอร์กับ NodeMCU
- ต่อสายไฟ 3 เส้นจากเซ็นเซอร์แต่ละตัวที่ mini Breadboard ตามที่แสดงในภาพด้านบน ฉันใช้ขั้วต่อพิเศษเพื่อยึดสายเคเบิลของเซ็นเซอร์ไว้
-
โปรดทราบว่าเซ็นเซอร์ทั้งสองแบบขนานกัน หากคุณมีเซ็นเซอร์มากกว่า 2 ตัว คุณควรทำเช่นเดียวกัน
- สีแดง ==> 3.3V
- สีดำ ==> GND
- สีเหลือง ==> D4
- ใช้ตัวต้านทาน 4.7K ohms ระหว่าง VCC (3.3V) กับ Data (D4)
ขั้นตอนที่ 4: การติดตั้ง Libraries ที่เหมาะสม
ในการใช้ DS18B20 อย่างถูกต้อง จำเป็นต้องมีไลบรารีสองไลบรารี:
- OneWire
- ดัลลาสอุณหภูมิ
ติดตั้งไลบรารีทั้งสองในคลัง Arduino IDE Library ของคุณ
โปรดทราบว่าไลบรารี OneWire จะต้องเป็นแบบพิเศษ แก้ไขเพื่อใช้กับ ESP8266 ไม่เช่นนั้น คุณจะได้รับข้อผิดพลาดระหว่างการรวบรวม คุณจะพบเวอร์ชันล่าสุดที่ลิงค์ด้านบน
ขั้นตอนที่ 5: การทดสอบเซ็นเซอร์
สำหรับการทดสอบเซ็นเซอร์ ให้ดาวน์โหลดไฟล์ด้านล่างจาก GitHub ของฉัน:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* การทดสอบผู้ส่งอุณหภูมิหลายตัว * * 2 x OneWire Sensor: DS18B20 * เชื่อมต่อกับ NodeMCU D4 (หรือ Arduino Pin 2) * * พัฒนาโดย Marcelo Rovai - 25 สิงหาคม 2017 **************** **********************************************/ #รวม # รวม #define ONE_WIRE_BUS 2 // DS18B20 บนพิน NodeMCU D4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); ดัลลัสอุณหภูมิ DS18B20(&oneWire); การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); DS18B20.begin(); Serial.println ("การทดสอบข้อมูลเซนเซอร์คู่"); } วงเป็นโมฆะ () { float temp_0; ลอย temp_1; DS18B20.requestอุณหภูมิ(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 จะจับ Temp ใน Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 จะจับ Temp ใน Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println("oF"); ล่าช้า (1000); }
เมื่อดูโค้ดข้างต้น เราควรสังเกตว่าบรรทัดที่สำคัญที่สุดคือ:
temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 จะจับ Temp ใน Celcius
temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 จะจับ Temp ใน Fahrenheit
อันแรกจะคืนค่าจาก Sensor [0] (ดู "index(0)") ใน Celcius (ดูส่วนของโค้ด: "getTempC" บรรทัดที่สองเกี่ยวข้องกับ Sensor[1] และจะส่งคืนข้อมูล ในฟาเรนไฮต์ คุณสามารถมีเซ็นเซอร์ "n" ที่นี่ได้เนื่องจากคุณมี "ดัชนี" ที่แตกต่างกันสำหรับแต่ละตัว
อัปโหลดโค้ดใน NodeMCU ของคุณตอนนี้ และตรวจสอบอุณหภูมิโดยใช้ Serial Monitor
ภาพด้านบนแสดงผลที่คาดหวัง ถือเซ็นเซอร์แต่ละตัวไว้ในมือ คุณจะเห็นอุณหภูมิเพิ่มขึ้น
ขั้นตอนที่ 6: การใช้ Blynk
เมื่อคุณเริ่มบันทึกข้อมูลอุณหภูมิแล้ว ก็ถึงเวลาดูข้อมูลได้จากทุกที่ เราจะทำสิ่งนี้โดยใช้ Blynk ดังนั้น ข้อมูลที่บันทึกไว้ทั้งหมดจะแสดงแบบเรียลไทม์บนอุปกรณ์มือถือของคุณ และเราจะสร้างคลังข้อมูลย้อนหลังสำหรับสิ่งนั้น
ทำตามขั้นตอนด้านล่าง:
- สร้างโครงการใหม่
- ตั้งชื่อ (ในกรณีของฉัน "Dual Temperature Monitor")
- เลือกอุปกรณ์ใหม่ - ESP8266(WiFi) เป็น "อุปกรณ์ของฉัน"
- คัดลอก AUTH TOKEN เพื่อใช้ในรหัส (คุณสามารถส่งไปที่อีเมลของคุณ)
-
ประกอบด้วยวิดเจ็ต "Gauge" สองชุด ซึ่งกำหนด:
- พินเสมือนที่จะใช้กับเซ็นเซอร์แต่ละตัว: V10 (เซ็นเซอร์[0]) และ V11 (เซ็นเซอร์[1])
- ช่วงอุณหภูมิ: -5 ถึง 100 oC สำหรับเซนเซอร์ [0]
- ช่วงอุณหภูมิ: 25 ถึง 212 oC สำหรับเซนเซอร์ [1]
- ความถี่ในการอ่านข้อมูล: 1 วินาที
- รวมวิดเจ็ต "กราฟประวัติ" ซึ่งกำหนด V10 และ V11 เป็นหมุดเสมือน
- กด "เล่น" (สามเหลี่ยมที่มุมบนขวา)
แน่นอน แอป Blynk จะบอกคุณว่า NodeMCU ออฟไลน์อยู่ ได้เวลาอัปโหลดโค้ดแบบเต็มที่ Arduino IDE ของคุณแล้ว คุณสามารถรับได้ที่นี่:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
เปลี่ยน "ข้อมูลจำลอง" ด้วยข้อมูลประจำตัวของคุณเอง
/* ข้อมูลรับรอง Blynk */
char auth = "รหัสยืนยัน BLYNK ของคุณที่นี่"; /* ข้อมูลรับรอง WiFi */ char ssid = "SSID ของคุณ"; char pass = "รหัสผ่านของคุณ";
และนั่นแหล่ะ!
ร้องรหัสเต็ม โดยพื้นฐานแล้วเป็นรหัสก่อนหน้าที่เราป้อนด้วยพารามิเตอร์ Blynk และฟังก์ชันเฉพาะ หมายเหตุ 2 บรรทัดสุดท้ายของรหัส สิ่งที่สำคัญที่สุดที่นี่ หากคุณมีเซ็นเซอร์เก็บข้อมูลมากขึ้น คุณควรมีบรรทัดใหม่ที่เทียบเท่ากับบรรทัดเหล่านั้น (โดยกำหนดพินเสมือนใหม่ที่เกี่ยวข้อง)
/**************************************************************
* IoT Multiple Temperature Monitor พร้อม Blynk * ไลบรารี Blynk ได้รับอนุญาตภายใต้ลิขสิทธิ์ MIT * รหัสตัวอย่างนี้เป็นสาธารณสมบัติ * * เซ็นเซอร์ OneWire หลายตัว: DS18B20 * พัฒนาโดย Marcelo Rovai - 25 สิงหาคม 2017 ********************************** **********************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Serial // แสดงความคิดเห็นไปที่ ปิดการใช้งานการพิมพ์และประหยัดพื้นที่ /* Blynk credentials */ char auth = "Your BLYNK AUTH CODE HERE"; /* ข้อมูลรับรอง WiFi */ char ssid = "SSID ของคุณ"; char pass = "รหัสผ่านของคุณ"; /* TIMER */ #include SimpleTimer จับเวลา; /* DS18B20 Temperature Sensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 บน arduino pin2 ตรงกับ D4 บนบอร์ดจริง OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); ดัลลัสอุณหภูมิ DS18B20(&oneWire); int temp_0; int temp_1; การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); Blynk.begin(รับรองความถูกต้อง, ssid, ผ่าน); DS18B20.begin(); timer.setInterval (1000L, getSendData); Serial.println(" "); Serial.println ("การทดสอบข้อมูลเซนเซอร์คู่"); } วงเป็นโมฆะ () { timer.run (); // เริ่ม SimpleTimer Blynk.run (); } /****************************************************** *** * ส่งข้อมูลเซ็นเซอร์ไปที่ Blynk ***************************************** *********/ เป็นโมฆะ getSendData () { DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 จะจับ Temp ใน Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 จะจับ Temp ใน Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println("oF"); Blynk.virtualWrite(10, temp_0); //พินเสมือน V10 Blynk.virtualWrite(11, temp_1); //พินเสมือน V11 }
เมื่ออัปโหลดและรันโค้ดแล้ว ให้ตรวจสอบแอป Blynk ตอนนี้ควรจะทำงานตามที่แสดงในหน้าจอพิมพ์ด้านบนจาก iPhone ของฉัน
ขั้นตอนที่ 7: บทสรุป
และเช่นเคย ฉันหวังว่าโครงการนี้จะช่วยให้ผู้อื่นค้นพบหนทางสู่โลกที่น่าตื่นเต้นของอิเล็กทรอนิกส์ หุ่นยนต์ และ IoT!
โปรดไปที่ GitHub ของฉันสำหรับไฟล์ที่อัปเดต: NodeMCU Dual Temp Monitor
สำหรับโครงการเพิ่มเติม โปรดเยี่ยมชมบล็อกของฉัน: MJRoBot.org
Saludos จากทางใต้ของโลก!
เจอกันที่คำสั่งครั้งต่อไปของฉัน!
ขอขอบคุณ, มาร์เซโล
แนะนำ:
Easy IOT – ฮับเซ็นเซอร์ RF ที่ควบคุมด้วยแอปสำหรับอุปกรณ์ IOT ระยะกลาง: 4 ขั้นตอน
Easy IOT – ฮับเซ็นเซอร์ RF ที่ควบคุมด้วยแอปสำหรับอุปกรณ์ IOT ระยะกลาง: ในบทช่วยสอนนี้ เราจะสร้างเครือข่ายของอุปกรณ์ที่สามารถควบคุมผ่านลิงก์วิทยุจากอุปกรณ์ศูนย์กลาง ประโยชน์ของการใช้การเชื่อมต่อวิทยุแบบอนุกรม 433MHz แทน WIFI หรือ Bluetooth คือช่วงที่กว้างกว่ามาก (พร้อม
IoT APIS V2 - ระบบชลประทานพืชอัตโนมัติที่เปิดใช้งาน IoT แบบอัตโนมัติ: 17 ขั้นตอน (พร้อมรูปภาพ)
IoT APIS V2 - ระบบชลประทานพืชอัตโนมัติที่เปิดใช้งาน IoT แบบอัตโนมัติ: โครงการนี้เป็นวิวัฒนาการของคำสั่งก่อนหน้าของฉัน: APIS - ระบบชลประทานพืชอัตโนมัติฉันใช้ APIS มาเกือบปีแล้วและต้องการปรับปรุงจากการออกแบบก่อนหน้านี้: ความสามารถในการ ตรวจสอบโรงงานจากระยะไกล นี่คือวิธีที่
โมดูลพลังงาน IoT: การเพิ่มคุณสมบัติการวัดพลังงาน IoT ให้กับตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน: 19 ขั้นตอน (พร้อมรูปภาพ)
โมดูลพลังงาน IoT: การเพิ่มคุณสมบัติการวัดพลังงาน IoT ให้กับตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน: สวัสดีทุกคน ฉันหวังว่าพวกคุณทุกคนจะยอดเยี่ยม! ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นว่าฉันสร้างโมดูลการวัดพลังงาน IoT ที่คำนวณปริมาณพลังงานที่สร้างโดยแผงโซลาร์เซลล์ของฉันได้อย่างไรซึ่งถูกใช้โดยตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน t
พื้นฐาน IoT: การเชื่อมต่อ IoT ของคุณกับคลาวด์โดยใช้ Mongoose OS: 5 ขั้นตอน
พื้นฐาน IoT: การเชื่อมต่อ IoT ของคุณกับคลาวด์โดยใช้ Mongoose OS: หากคุณเป็นคนที่ชอบซ่อมแซมและอุปกรณ์อิเล็กทรอนิกส์ บ่อยครั้งคุณจะเจอคำว่า Internet of Things ซึ่งปกติจะย่อว่า IoT และมัน หมายถึงชุดอุปกรณ์ที่สามารถเชื่อมต่ออินเทอร์เน็ตได้! เป็นคนแบบนี้
IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: 7 ขั้นตอน
IoT เป็นเรื่องง่าย: เก็บข้อมูลสภาพอากาศระยะไกล: UV และอุณหภูมิอากาศและความชื้น: ในบทช่วยสอนนี้ เราจะบันทึกข้อมูลระยะไกลเป็น UV (รังสีอัลตราไวโอเลต) อุณหภูมิอากาศและความชื้น ข้อมูลเหล่านี้จะมีความสำคัญมากและจะนำไปใช้ในสถานีตรวจอากาศที่สมบูรณ์ในอนาคต แผนภาพบล็อกแสดงสิ่งที่เราจะได้รับในตอนท้าย