หน้าแรก ดูโปรเจกต์ทั้งหมด
Easy

โปรเจกต์ Multi-Location Weather Station

สร้าง Multi-Location Weather Station ของคุณเอง และแสดงผลข้อมูลแบบ Wireless บนหน้าจอเดียว

โปรเจกต์ Multi-Location Weather Station

รายการอุปกรณ์และเครื่องมือ

1x Nanomesher Human Machine Interface
-
2x Resistor 4.7k Ohm
🛒 สั่งซื้อ
1x Jumper wires (generic)
🛒 สั่งซื้อ
}

รายละเอียดและวิธีทำ

สร้างสถานีตรวจวัดอุณหภูมิหลายห้องด้วยตัวคุณเองด้วย Arduino board ที่ใช้ ESP8266

บทนำ

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

อุณหภูมิและความชื้น

เพื่อให้ได้ความแม่นยำสูงสุด เราจึงเลือกใช้ SHT31 sensor เนื่องจาก SHT31 มีความเสถียรในการปรับจูน (Calibration) มากกว่า DHT22 ซึ่งเป็น sensor ที่ราคาถูกกว่าและพบได้ทั่วไปในท้องตลาด โชคดีที่ Adafruit ได้จัดเตรียม API ที่ดีและใช้งานง่ายมากสำหรับ SHT31 โดยสามารถดาวน์โหลด library ได้ที่นี่

การแสดงผลข้อมูล - Wireless HMI

มันจะคุ้มค่ากว่ามากหากเราสามารถดูข้อมูลทั้งหมดได้ในหน้าจอเดียว เราต้องการหน้าจอแสดงผลแบบง่ายๆ ที่สามารถรับคำขอแบบไร้สายและแสดงผลบนหน้าจอได้ แต่เราไม่พบอุปกรณ์ใดที่ตอบโจทย์นี้ได้อย่างสมบูรณ์ เราจึงสร้างมันขึ้นมาเองโดยการรวม Nextion Display แบบหน้าจอสัมผัสเข้ากับ Wemos D1 mini จนกลายเป็น Nanomesher Human Machine Interface (Nanomesher HMI) นอกจากนี้ยังมี LED + Speaker ติดตั้งมาบน board ของ Nanomesher HMI อีกด้วย

เราได้เปิดตัว Nanomesher HMI บน kickstarter

การสร้าง user interface บน Nextion Display ไม่จำเป็นต้องเขียน code เลย เพราะมี WYSIWYG editor ที่ช่วยให้เราสามารถลากและวางส่วนควบคุม (control) ทำการ compile และทดสอบผลลัพธ์บน PC ได้ หลังจากนั้นให้คัดลอกไฟล์ผลลัพธ์ที่ compile แล้ว (.tft) ลงใน Nextion display (ไม่ใช่ Wemos)

เราได้เขียน API ทั้งแบบ HTTP และ MQTT เพื่อใช้สำหรับตั้งค่าบนหน้าจอแสดงผล

ตัวอย่างเช่น หากมี Text component ชื่อ "line1" ในการตั้งค่าส่วนควบคุมข้อความ เพียงส่ง http request ดังต่อไปนี้เพื่อกำหนดเป็นคำว่า "Hello" โดยที่ p คือ pageid และ n คือชื่อ component ส่วน 192.168.1.12 คือ IP address ของ wireless HMI การที่มี API สำเร็จรูปนี้ช่วยให้นักพัฒนา application สามารถมุ่งเน้นไปที่การสร้าง application ได้โดยตรง แทนที่จะต้องวุ่นวายกับการเขียน code แสดงผลระดับ low level ของ Arduino

http://192.168.1.12/TextSetText?p=0&n=line1&v=Hello

การออกแบบ User Interface

เราใช้ Nextion editor ซึ่งเป็นโปรแกรมฟรีเพื่อสร้าง user interface แบบง่ายๆ ที่มี 8 Text Controls โดยการลากและวางแล้วตั้งชื่อ component อย่าลืมจดชื่อ component ไว้ เช่น "line1", "line2", "line3", "line4"

Nextion Editor

ถัดไป คุณสามารถใช้เครื่องมือ debug เพื่อทดสอบ user interface บน PC ได้

หลังการทดสอบ ให้เปิดโฟลเดอร์ build แล้วคัดลอกไฟล์ tft ลงใน sd card

เสียบ sd card เข้ากับช่องเสียบ sd card ของ Nextion display แล้วเปิดเครื่อง ไฟล์ tft ใหม่จะถูกติดตั้งลงใน Nextion display โดยอัตโนมัติ

การติดตั้ง tft จาก SD card ลงใน Nextion display

WeatherSender - WeatherHttpSender Arduino Code

วัตถุประสงค์ของ WeatherHttpSender คือการอ่านค่าอุณหภูมิและความชื้นอย่างต่อเนื่องและอัปเดตไปยัง Wireless HMI

นี่คือ code สำหรับอ่านค่าความชื้นและอุณหภูมิ ซึ่งทำได้ง่ายมากด้วย Adafruit library

       t = sht31.readTemperature(); 
h = sht31.readHumidity();

ในการอัปเดต Wireless HMI การเรียกใช้ http ด้านล่างนี้จะส่งข้อมูลไปยังหน้าจอ HMI โดยที่ 192.168.1.12 คือ IP address ของหน้าจอ Wireless HMI display

       String url = "http://192.168.1.12/TextSetText?p=0&n=line1&v="; 
HTTPClient http;
USE_SERIAL.print("[HTTP] begin...\
");
http.begin(url + temp + "c " + humid + "%"); //HTTP

จำเป็นต้องมีการแก้ไขบางส่วนก่อนการติดตั้ง ใน code ด้านล่างนี้ ให้ตั้งค่า SSID และ password ของ wifi ของคุณที่นี่:

WiFiMulti.addAP("SSID", "PASSWORD"); 

และตั้งค่าช่วงเวลาการอัปเดต (delay) ได้ที่นี่:

delay(10000); 

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: multi-location-weather-station-ea9c5c
2450 บาท
PromptPay QR Code