สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
ในชุดคำสั่งนี้ เราจะมาดูวิธีสร้างโพรบวัดอุณหภูมิที่เปิดใช้งาน WiFi โดยใช้ ESP8266 แบบง่ายสำหรับการยกของหนัก และเซ็นเซอร์อุณหภูมิ/ความชื้น DHT11 เราจะใช้แผงวงจรที่ฉันสร้างขึ้นและวางจำหน่ายในร้านค้าดีบุกของช่องหากคุณต้องการซื้อ
เริ่มต้นด้วยรายการวัสดุที่คุณต้องการ:
โมดูล WiFi ESP8266
amzn.to/2pkGPoa
เซ็นเซอร์ DHT11
amzn.to/2phwwfhO
TP-Link Smart Plug
amzn.to/2GElQUz
คุณยังสามารถรับโมดูลทั้งหมดได้ที่ร้านค้า tindie สำหรับช่อง:
www.tindie.com/products/misperry/wifi-enab…
ตรวจสอบ JLCPCB สำหรับการผลิต PCB พวกเขาคือคนที่ฉันเคยสร้าง PCB:
จัดส่งฟรีเมื่อสั่งซื้อครั้งแรก & สร้างต้นแบบ PCB มูลค่า $2 ที่
ขั้นตอนที่ 1: การเพิ่มรหัสลงใน ESP8266
ตอนนี้เราจะต้องแฟลชรหัสต่อไปนี้บน ESP8266 รหัสนี้สามารถพบได้ที่ที่เก็บ github ต่อไปนี้:
ในโค้ดด้านล่างนี้ คุณจะต้องตั้งค่าส่วนคำจำกัดความบางส่วนเท่านั้น:
เซิร์ฟเวอร์ MQTT:
ผู้ใช้ MQTT:
รหัสผ่าน MQTT:
MQTT_sensor_topic:
-WiFi
กล่าวว่า: พูดถึงเครือข่าย wifi ที่คุณกำลังเชื่อมต่อ
รหัสผ่าน: รหัสผ่าน WiFi
เมื่อคุณกรอกโค้ดด้านล่างนี้แล้ว คุณสามารถคอมไพล์และตรวจสอบข้อผิดพลาด และหากมีข้อผิดพลาด 0 รายการ คุณอาจแฟลชไปที่ ESP8266
/* * ชื่อไฟล์: TempHumSensor.ino * * แอปพลิเคชัน: HomeAssistant Space Heater Thermostat * * คำอธิบาย: รหัสนี้มีไว้สำหรับ Arduino ที่เปิดใช้งาน ESP8266 WiFi * อุปกรณ์ที่รองรับ สิ่งนี้จะถ่ายทอดข้อมูลอุณหภูมิ * ของอุปกรณ์ DHT11 ไปยังส่วนหน้า HASS สำหรับการประมวลผล * * ผู้แต่ง: M. Sperry - https://www.youtube.com/misperry * วันที่: 03/* แก้ไข: 1.0 * * */
#รวม
#รวม #รวม #รวม #รวม #รวม
#define CON_TIME_OUT 20 // หมดเวลาของการเชื่อมต่อกับ wifi
#define MQTT_TIME_OUT 10 //หมดเวลาของการเชื่อมต่อกับเซิร์ฟเวอร์ MQTT
#define DHTPIN 0 // พินที่เชื่อมต่อกับเซ็นเซอร์ DHT
#define DHTTYPE DHT11 // ประเภทของเซ็นเซอร์คือ DHT11 คุณสามารถเปลี่ยนเป็น DHT22 (AM2302), DHT21 (AM2301)
#define mqtt_server "" // ป้อนแอดเดอร์เซิร์ฟเวอร์ MQTT หรือ IP ฉันใช้แอดเดรส DuckDNS (ชื่อของคุณ.duckdns.org) ในช่องนี้
#define mqtt_user "" // ป้อนชื่อผู้ใช้ MQTT ของคุณ #define mqtt_password "" // ป้อนรหัสผ่านของคุณ #define MQTT_SENSOR_TOPIC "ha/bedroom_temp" // ป้อนหัวข้อสำหรับ MQTT ของคุณ
// Wifi: SSID และรหัสผ่าน
const ถ่าน* ssid = ""; const ถ่าน* รหัสผ่าน = "";
//ตั้งค่า DHT
DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t ล่าช้าMS;
WiFiClient wifiClient;
ไคลเอนต์ PubSubClient (wifiClient);
// เรียกใช้ฟังก์ชันเพื่อเผยแพร่อุณหภูมิและความชื้น
เป็นโมฆะ publishData (float p_temperature) { // สร้างวัตถุ JSON // doc: https://github.com/bblanchon/ArduinoJson/wiki/API%20Reference StaticJsonBuffer jsonBuffer; JsonObject& root = jsonBuffer.createObject(); // INFO: ข้อมูลต้องถูกแปลงเป็นสตริง ปัญหาเกิดขึ้นเมื่อใช้ floats… //แปลงเป็นฟาเรนไฮต์ p_temperature = (p_temperature * 1.8) + 32; // แปลงเป็นรากฟาเรนไฮต์["อุณหภูมิ"] = (สตริง)p_temperature; root.prettyPrintTo (อนุกรม); Serial.println("");
ข้อมูลถ่าน[200];
root.printTo(ข้อมูล, root.measureLength() + 1); client.publish(MQTT_SENSOR_TOPIC, ข้อมูล, จริง); }
// เรียกฟังก์ชันเมื่อข้อความ MQTT มาถึง
การโทรกลับเป็นโมฆะ (char* p_topic, byte* p_payload, unsigned int p_length) { }
เป็นโมฆะเชื่อมต่อใหม่ () {
// วนซ้ำจนกว่าเราจะเชื่อมต่อใหม่ในขณะที่ (!client.connected()) { Serial.print("INFO: พยายามเชื่อมต่อ MQTT…"); // พยายามเชื่อมต่อ if (client.connect ("ESPBlindstl", mqtt_user, mqtt_password)) { Serial.println ("INFO: เชื่อมต่อแล้ว"); } อื่น ๆ { Serial.print ("ข้อผิดพลาด: ล้มเหลว rc="); Serial.print(client.state()); Serial.println("DEBUG: ลองอีกครั้งใน 5 วินาที"); // รอ 5 วินาทีก่อนที่จะลองดีเลย์อีกครั้ง (5000); } } }
การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) {
Serial.begin(9600);
// เราเริ่มต้นด้วยการเชื่อมต่อกับเครือข่าย WiFi
Serial.println(); Serial.println(); Serial.print("กำลังเชื่อมต่อกับ "); Serial.println(ssid);
WiFi.begin(ssid, รหัสผ่าน);
ในขณะที่ (WiFi.status () != WL_CONNECTED) {
ล่าช้า (800); Serial.print("."); }
Serial.println("");
Serial.println ("เชื่อมต่อ WiFi"); Serial.println("ที่อยู่ IP:"); Serial.println(WiFi.localIP()); // เริ่มต้นการเชื่อมต่อ MQTT client.setServer(mqtt_server, 1883); client.setCallback(โทรกลับ);
// เริ่มต้นเซ็นเซอร์ DHT
dht.begin(); Serial.println ("DHT11 Unified Sensor Data");
//พิมพ์รายละเอียดเซ็นเซอร์อุณหภูมิ
sensor_t เซ็นเซอร์; dht.temperature().getSensor(&เซ็นเซอร์); Serial.println("-----------------------------"); Serial.println("อุณหภูมิ"); Serial.print ("เซ็นเซอร์: "); Serial.println(sensor.name); Serial.print ("เวอร์ชันไดรเวอร์: "); Serial.println (เซ็นเซอร์รุ่น); Serial.print ("รหัสเฉพาะ: "); Serial.println(sensor.sensor_id); Serial.print ("ค่าสูงสุด: "); Serial.print(sensor.max_value); Serial.println(" *C"); Serial.print ("ค่าต่ำสุด: "); Serial.print(sensor.min_value); Serial.println(" *C"); Serial.print ("ความละเอียด: "); Serial.print(เซ็นเซอร์.ความละเอียด); Serial.println(" *C"); Serial.println("-----------------------------"); // พิมพ์รายละเอียดเซ็นเซอร์ความชื้น dht.humidity().getSensor(&เซ็นเซอร์); Serial.println("-----------------------------"); Serial.println("ความชื้น"); Serial.print ("เซ็นเซอร์: "); Serial.println(sensor.name); Serial.print ("เวอร์ชันไดรเวอร์: "); Serial.println (เซ็นเซอร์รุ่น); Serial.print ("รหัสเฉพาะ: "); Serial.println(sensor.sensor_id); Serial.print ("ค่าสูงสุด: "); Serial.print(sensor.max_value); Serial.println("%"); Serial.print ("ค่าต่ำสุด: "); Serial.print(sensor.min_value); Serial.println("%"); Serial.print ("ความละเอียด: "); Serial.print(เซ็นเซอร์.ความละเอียด); Serial.println("%"); Serial.println("-----------------------------");
//ตั้งค่าการหน่วงเวลาระหว่างการอ่านเซ็นเซอร์ตามรายละเอียดของเซ็นเซอร์
delayMS = sensor.min_delay / 1000; }
วงโมฆะ (เป็นโมฆะ) {
อุณหภูมิลอยตัว;
ถ้า (!client.connected())
{ เชื่อมต่อใหม่ (); }
ล่าช้า (delayMS);
// รับเหตุการณ์อุณหภูมิและพิมพ์ค่าของมัน
เหตุการณ์ sensors_event_t; dht.temperature().getEvent(&เหตุการณ์); if (isnan (event.temperature)) { Serial.println ("ข้อผิดพลาดในการอ่านอุณหภูมิ!"); อุณหภูมิ = 0.00; } อื่น ๆ { อุณหภูมิ = เหตุการณ์ อุณหภูมิ; Serial.print("อุณหภูมิ:"); Serial.print(อุณหภูมิ); Serial.println(" *C"); } // เผยแพร่ไปยัง MQTT publishData(อุณหภูมิ); }
ขั้นตอนที่ 2: การตั้งค่า TP-LINK Smart Plug
คุณจะต้องตั้งค่าสมาร์ทปลั๊ก TP-LINK ของคุณ หรือปลั๊กอัจฉริยะใดๆ สำหรับวัสดุนั้น ตามที่ผู้ผลิตแนะนำ
อย่าลืมจดบันทึกที่อยู่ MAC บนอุปกรณ์ หากอุปกรณ์ของคุณเหมือนกับอุปกรณ์ TP-LINK ของฉัน คุณจะไม่สามารถระบุที่อยู่ IP แบบคงที่ได้ ดังนั้น คุณจะต้องกำหนดค่าเราเตอร์ของคุณสำหรับการสำรอง DHCP การดำเนินการนี้จะใช้ที่อยู่ MAC ของอุปกรณ์ของคุณ และเมื่ออุปกรณ์นั้นขอที่อยู่ เราเตอร์จะให้ที่อยู่เดียวกันทุกครั้ง
นี่คือลิงค์ไปยังวิธีตั้งค่าด้วย Linksys
www.linksys.com/us/support-article?article…
ขั้นตอนที่ 3: การตั้งค่า Home Assistant
ตอนนี้เพื่อตั้งค่า Home Assistant สำหรับสิ่งนี้ คุณจะต้องเพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ configuration.yaml ที่อยู่ในโครงสร้างโฟลเดอร์ /home/homeassistant/.homeassistant บนอุปกรณ์ที่คุณติดตั้งไว้
เมื่อเพิ่มสิ่งนี้ลงในการกำหนดค่าผู้ช่วยในบ้านของคุณเสร็จแล้ว คุณจะต้องรีสตาร์ทซอฟต์แวร์ผู้ช่วยในบ้านเพื่อให้การเปลี่ยนแปลงมีผล
นอกจากนี้ฉันจะใช้สมาร์ทปลั๊ก TP-LINK สำหรับอุปกรณ์สวิตช์และคำจำกัดความอยู่ด้านล่างในไฟล์การกำหนดค่า ที่อยู่ IP ที่ใช้สำหรับอุปกรณ์คือที่อยู่ที่คุณตั้งค่าสำหรับการจอง DHCP ในขั้นตอนก่อนหน้า
การกำหนดค่านี้สามารถพบได้ที่ repo github ต่อไปนี้:
mqtt:switch: - แพลตฟอร์ม: tplink ชื่อ: Bedroom Heater host: 192.168.2.11
เซ็นเซอร์ 1:
แพลตฟอร์ม: mqtt state_topic: 'ha/bedroom_temp' ชื่อ: Bedroom Temp unit_of_measurement: '°F' value_template: '{{ value_json.temperature }}'
ระบบอัตโนมัติ:
- นามแฝง: _Temp Bedroom Temp ทริกเกอร์สูง: - แพลตฟอร์ม: numeric_state entity_id: sensor. Bedroom_Temp ด้านบน: 73
การกระทำ:
บริการ: homeassistant.turn_off entity_id: switch. Bedroom_Heater
- นามแฝง: _Temp Bedroom Temp Low
ทริกเกอร์: - แพลตฟอร์ม: numeric_state entity_id: sensor. Bedroom_Temp ด้านล่าง: 73 การกระทำ: บริการ: homeassistant.turn_on entity_id: switch. Bedroom_Heater
ขั้นตอนที่ 4: ขั้นตอนสุดท้าย
ด้วยการกำหนดค่าผู้ช่วยในบ้านและรหัส Arduino ของคุณ คุณก็พร้อมที่จะเปิดใช้งานทั้งระบบ ดังนั้น ให้เสียบปลั๊กฮีตเตอร์/พัดลม/คูลเลอร์ของคุณเข้ากับปลั๊กอัจฉริยะ และเสียบปลั๊กอัจฉริยะ เมื่อพร้อมแล้ว คุณจะต้องเสียบที่ชาร์จ USB ขนาดเล็ก จากนั้นใช้หัววัดอุณหภูมิที่เปิดใช้งาน WiFi เมื่อทุกอย่างออนไลน์แล้ว คุณควรดูแดชบอร์ดผู้ช่วยในบ้านและดูอุณหภูมิใหม่ที่กำลังรายงาน
ขอบคุณมากสำหรับความช่วยเหลือและการสนับสนุนของคุณ อย่าลืมกดไลค์และมาเยี่ยมชมช่องที่ https://www.youbue.com/misperry และดูว่าเรามีอะไรให้คุณบ้าง ตรวจสอบให้แน่ใจว่าคุณสมัครและแชร์กับเพื่อน ๆ เพื่อช่วยช่อง
แนะนำ:
ความแรงของสัญญาณ ESP32 TTGO WiFi: 8 ขั้นตอน (พร้อมรูปภาพ)
ความแรงของสัญญาณ WiFi ESP32 TTGO: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีแสดงความแรงของสัญญาณเครือข่าย WiFi โดยใช้บอร์ด ESP32 TTGO ดูวิดีโอ
ระบบอัตโนมัติภายในบ้าน WiFi พลังงานต่ำพิเศษ: 6 ขั้นตอน (พร้อมรูปภาพ)
ระบบอัตโนมัติภายในบ้าน WiFi พลังงานต่ำพิเศษ: ในโปรเจ็กต์นี้ เราจะแสดงวิธีที่คุณสามารถสร้างระบบอัตโนมัติภายในบ้านขั้นพื้นฐานในไม่กี่ขั้นตอน เราจะใช้ Raspberry Pi ซึ่งจะทำหน้าที่เป็นอุปกรณ์ WiFi ส่วนกลาง สำหรับ end nodes เราจะใช้ IOT Cricket เพื่อใช้พลังงานจากแบตเตอรี่
ESP8266 RGB LED STRIP WIFI ควบคุม - NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi - RGB LED STRIP การควบคุมสมาร์ทโฟน: 4 ขั้นตอน
ESP8266 RGB LED STRIP WIFI ควบคุม | NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi | การควบคุมสมาร์ทโฟน RGB LED STRIP: สวัสดีทุกคนในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ nodemcu หรือ esp8266 เป็นรีโมท IR เพื่อควบคุมแถบ LED RGB และ Nodemcu จะถูกควบคุมโดยสมาร์ทโฟนผ่าน wifi โดยพื้นฐานแล้ว คุณสามารถควบคุม RGB LED STRIP ได้ด้วยสมาร์ทโฟนของคุณ
บอร์ด HiFive1 Arduino พร้อมโมดูล WiFi ESP-01 WiFi: 5 ขั้นตอน
บอร์ด Arduino HiFive1 พร้อมการสอนโมดูล WiFi ESP-01: HiFive1 เป็นบอร์ดที่ใช้ RISC-V ที่เข้ากันได้กับ Arduino ตัวแรกที่สร้างขึ้นด้วย FE310 CPU จาก SiFive บอร์ดนี้เร็วกว่า Arduino UNO ประมาณ 20 เท่า แต่เหมือนกับบอร์ด UNO ที่ไม่มีการเชื่อมต่อไร้สาย โชคดีที่มีราคาไม่แพงหลาย
ESP8266-NODEMCU $3 โมดูล WiFi #1- เริ่มต้นใช้งาน WiFi: 6 ขั้นตอน
ESP8266-NODEMCU $3 โมดูล WiFi #1- เริ่มต้นใช้งาน WiFi: โลกใหม่ของไมโครคอมพิวเตอร์เหล่านี้มาถึงแล้ว และสิ่งนี้คือ ESP8266 NODEMCU นี่เป็นส่วนแรกที่แสดงให้เห็นว่าคุณจะติดตั้งสภาพแวดล้อมของ esp8266 ใน arduino IDE ของคุณได้อย่างไรผ่านวิดีโอเริ่มต้นใช้งานและตามส่วนต่าง ๆ