งานครั้งที่ 30 [iot#5 Blynk] การแสดงความชื้น/อุณหภูมิด้วยแอฟ Blynk
ก่อนที่จะแสดงค่าความชื้นและอุณภูมิด้วยแอฟ Blynk ได้ตัวบอร์ดต้องอ่านค่าจากตัวเซนเซอร์ให้ได้ก่อน ตัวเซนเซอร์ที่ใช้ในการทดลองนี้ใช้เบอร์ DHT11 ซึ่งขั้นตอนการเขียนโค้ดคำสั่งเพื่ออ่านค่าได้ทดลองผ่านมาแล้วในใบงานที่ 8 (DHT22 กับ DHT11 ใช้โค้ดตัวเดียวกันเพียงแต่แก้การกำหนดค่าเพียงคำสั่งเดียว) หากยังไม่ได้ติดตั้งไลบรารี่สำหรับเซนเซอร์ DHT ให้กลับไปศึกษาใน เขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น (http://www.praphas.com/forum/index.php?topic=311.0) สำหรับงานครั้งนี้มีขั้นตอนการดำเนินการทดลองเป็นดังนี้
[หมายเหตุ] จะใช้งานแอฟและไลบรารี่ Blynk ทั้งในสมาร์ตโฟนและโปรแกรม ArduinoIDE ได้ จะต้องดำเนินติดตั้งก่อน สามารถศึกษาวิธีการจากงานครั้งที่ 26 ได้ที่ งานครั้งที่ 26 [iot Blynk #1] เริ่มการใช้งาน Blynk (http://www.praphas.com/forum/index.php?topic=337.0)
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/1.png)
ส่วนจัดการแอฟ Blynk
2. เปิดแอฟ Blynk ในมือถือแตะสร้างโปรเจคใหม่
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/2.png)
3. ดำเนินการกำหนดคุณสมบัติโปรเจค
(1) ตั้งชื่อโปรเจค
(2) เลือกบอร์ดที่ใช้ควบคุม
(3) คลิกสร้าง
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/3.png)
4. รหัส Token ของโปรเจคจะถูกส่งเข้าไปยังอีเมล์ (เป็นอีเมล์ที่ลงเบียนไว้ตอนล็อกอินแอฟ)
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/4.png)
5. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/5.png)
6. แตะเลือกวิตเจทเกจ
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/6.png)
7. จะได้เกจอยู่บนหน้าพื้นที่ใช้งาน ทำการแตะที่ตัวเกจเพื่อตั้งค่า
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/7.png)
8. ทำการตั้งค่า
(1) ตั้งชื่อเกจ (สามารถตั้งชื่อเป็นภาษาไทยได้ เช่น "ความชื้น")
(2) เลือกขาพอร์ตที่ใช้อ่านค่า
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/8.png)
9. ทำการเลือกขา ซึ่งเป็นขาบอร์ดที่เชื่อม LED ไว้
(1) เลือกขาเสมือน (มีลักษณะเป็นตัวแปรรับค่า)
(2) เลือกขาที่ใช้รับค่า (เป็นตัวแปรขาที่ถูกส่งค่ามาจากบอร์ด)
(3) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/9.png)
10. ตั้งค่าเกจ (เพิ่มเติม)
(1) ตั้งตัวเลขสูงสุดของสเกล (ความชื้นใช้ 100 เนื่องจากเป็นค่าเปอร์เซ็น)
(2) กำหนดรูปแบบแสดงผล
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/10.png)
11. ทำการเพิ่มเกจอีก 1 ตัวพร้อมตั้งค่าเกจ
(1) ตั้งชื่อ
(2) เลือกขาที่ใช้รับค่า (เป็นตัวแปรขาที่ถูกส่งค่ามาจากบอร์ด)
(3) ตั้งตัวเลขสูงสุดของสเกล (ความอุณภูมิในที่นี้ใช้ 50 )
(4) กำหนดรูปแบบแสดงผล
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/11.png)
12. รูปแบบที่ใช้กำหนดการแสดงผลโดยให้แสดงผลที่มีจำนวนหลักทศนิยมตามต้องการดังนี้
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/12.png)
ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
13. ฟังชั่นเปิดใช้งาน BlynkTimer ซึ่งทำหน้าที่คล้าย ๆ interrupt timer หมายถึงเมื่อครบเวลาตามที่กำหนดไว้โปรแกรมหลักจะกระโดดไปทำงานในโปรแกรมตอบสนองที่กำหนดไว้
(1) ชื่อออฟเจคไว้อ้างอิง (ผู้ใช้งานตั้งชื่อเองในที่นี้ตั้งคำว่า "timer")
(2) กำหนดค่าช่วงเวลาที่ให้บอร์ดกระโดดไปทำงานในโปรแกรมตอบสนอง ในที่นี้กำหนดเป็น 2000L หมายถึงให้บอร์ดมาทำงานในโปรแกรมตอบสนองทุก ๆ 2 วินาที
(3) ชื่อโปรแกรมตอบสนอง (ฟังก์ชั่นย่อย) ในที่นี้ตั้งชื่อว่า sendSensor ซึ่งบอร์ดจะวนมาทำงานฟังก์ชั่นชื่อนี้ทุก ๆ เวลาที่กำหนด
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/13.png)
14. ฟังก์ชั่นการส่งค่าความชื้นและอุณภูมิไปยังแอฟ Blynk
(-) ส่งค่าความชื้นจากค่าในตัวแปร h ไปยังตัวแปรขาเสมือน V5
(-) ส่งค่าอุณหภูมิจากค่าในตัวแปร t ไปยังตัวแปรขาเสมือน V6
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/14.png)
15. เปิดอีเมล์ทำการคัดลอกรหัส Token โปรเจค
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/15.png)
16. เขียนโค้ดควบคุม
(1) วางรหัส Token ที่คัดลอกมาจากอีเมล์
(2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
(3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")
(4) ส่วนของโปรแกรมตอบสนอง BlynkTimer เขียนโค้ดเพื่อส่งสถานะในทุก ๆ 2 วินาที
(5) อ่านค่าความชื้นและอุณหภูมิ
(6) หากการอ่านล้มเหลวให้กลับไปอ่านค่าใหม่
(7) หากอ่านค่าได้ให้ส่งค่าไปยังตัวแปรสำหรับส่งค่า
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/16.png)
โค้ดโปรแกรม
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <DHT.h>
#define BLYNK_PRINT Serial
char auth[] = "e04464999c544b0a9fbffc776ae44d85";
char ssid[] = "wifi name";
char pass[] = "wifi password";
BlynkTimer timer;
#define LED D4 // LED on chip ESP8266
#define DHTPIN D3 // pin of sensor connected to
#define DHTTYPE DHT11 // DHT22 if useDHT22
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
// Blynk.begin(auth, ssid, pass);
// Blynk.begin(auth, ssid, pass, "prakitblog.com", 8181);
Blynk.begin(auth, ssid, pass, "blynk.iot-cm.com", 8080);
dht.begin();
timer.setInterval(2500, Sensor);
}
void loop()
{
Blynk.run(); // Initiates Blynk
timer.run(); // run BlynkTimer
}
void Sensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
digitalWrite(LED, LOW);
delay(1500);
return;
}
Serial.print("Humidity is: "); Serial.println(h, 1);
Serial.print("Temperature is: "); Serial.println(t, 1);
digitalWrite(LED, HIGH);
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}
17. ทำการอัพโหลดลงบอร์ด เปิดหน้าต่าง Serial monitor จะได้ดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/17.png)
ทดสอบการทำงาน
18. กลับไปที่แอฟ Blynk ทำการแตะตัวสามเหลี่ยมเพื่อรันแอฟ
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/18.png)
19. ผลของการรันที่แอฟ Blynk
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/19.png)
20. การเชื่อมต่อบอร์ดทดลอง
(http://www.praphas.com/PhotoForum/iot/Lab-30-BlynkDHT/20.jpg)