สารบัญ:

IoT เป็นเรื่องง่าย: การตรวจสอบเซ็นเซอร์หลายตัว: 7 ขั้นตอน
IoT เป็นเรื่องง่าย: การตรวจสอบเซ็นเซอร์หลายตัว: 7 ขั้นตอน

วีดีโอ: IoT เป็นเรื่องง่าย: การตรวจสอบเซ็นเซอร์หลายตัว: 7 ขั้นตอน

วีดีโอ: IoT เป็นเรื่องง่าย: การตรวจสอบเซ็นเซอร์หลายตัว: 7 ขั้นตอน
วีดีโอ: อุปกรณ์ IoT (Ep.5) IFTTT เซ็นเซอร์ประตูร้อยกว่าบาท ใช้งานสร้างเงื่อนไขควบคุมอุปกรณ์ IoT ตัวอื่นๆ 2024, กรกฎาคม
Anonim
IoT ทำได้ง่าย: การตรวจสอบเซ็นเซอร์หลายตัว
IoT ทำได้ง่าย: การตรวจสอบเซ็นเซอร์หลายตัว
IoT ทำได้ง่าย: การตรวจสอบเซ็นเซอร์หลายตัว
IoT ทำได้ง่าย: การตรวจสอบเซ็นเซอร์หลายตัว

เมื่อไม่กี่สัปดาห์ก่อน ฉันได้เผยแพร่บทแนะนำเกี่ยวกับการตรวจสอบอุณหภูมิโดยใช้ 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 เซ็นเซอร์อุณหภูมิ
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

การเชื่อมต่อเซ็นเซอร์กับ NodeMCU
การเชื่อมต่อเซ็นเซอร์กับ NodeMCU
  1. ต่อสายไฟ 3 เส้นจากเซ็นเซอร์แต่ละตัวที่ mini Breadboard ตามที่แสดงในภาพด้านบน ฉันใช้ขั้วต่อพิเศษเพื่อยึดสายเคเบิลของเซ็นเซอร์ไว้
  2. โปรดทราบว่าเซ็นเซอร์ทั้งสองแบบขนานกัน หากคุณมีเซ็นเซอร์มากกว่า 2 ตัว คุณควรทำเช่นเดียวกัน

    • สีแดง ==> 3.3V
    • สีดำ ==> GND
    • สีเหลือง ==> D4
  3. ใช้ตัวต้านทาน 4.7K ohms ระหว่าง VCC (3.3V) กับ Data (D4)

ขั้นตอนที่ 4: การติดตั้ง Libraries ที่เหมาะสม

ในการใช้ DS18B20 อย่างถูกต้อง จำเป็นต้องมีไลบรารีสองไลบรารี:

  1. OneWire
  2. ดัลลาสอุณหภูมิ

ติดตั้งไลบรารีทั้งสองในคลัง 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
ใช้ Blynk
ใช้ Blynk
ใช้ Blynk

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

ทำตามขั้นตอนด้านล่าง:

  1. สร้างโครงการใหม่
  2. ตั้งชื่อ (ในกรณีของฉัน "Dual Temperature Monitor")
  3. เลือกอุปกรณ์ใหม่ - ESP8266(WiFi) เป็น "อุปกรณ์ของฉัน"
  4. คัดลอก AUTH TOKEN เพื่อใช้ในรหัส (คุณสามารถส่งไปที่อีเมลของคุณ)
  5. ประกอบด้วยวิดเจ็ต "Gauge" สองชุด ซึ่งกำหนด:

    • พินเสมือนที่จะใช้กับเซ็นเซอร์แต่ละตัว: V10 (เซ็นเซอร์[0]) และ V11 (เซ็นเซอร์[1])
    • ช่วงอุณหภูมิ: -5 ถึง 100 oC สำหรับเซนเซอร์ [0]
    • ช่วงอุณหภูมิ: 25 ถึง 212 oC สำหรับเซนเซอร์ [1]
    • ความถี่ในการอ่านข้อมูล: 1 วินาที
  6. รวมวิดเจ็ต "กราฟประวัติ" ซึ่งกำหนด V10 และ V11 เป็นหมุดเสมือน
  7. กด "เล่น" (สามเหลี่ยมที่มุมบนขวา)

แน่นอน แอป 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 จากทางใต้ของโลก!

เจอกันที่คำสั่งครั้งต่อไปของฉัน!

ขอขอบคุณ, มาร์เซโล

แนะนำ: