บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ มกราคม 21, 2018, 06:03:39 PM

หัวข้อ: งานครั้งที่ 30 [iot#5 Blynk] การแสดงความชื้น/อุณหภูมิด้วยแอฟ Blynk
เริ่มหัวข้อโดย: admin ที่ มกราคม 21, 2018, 06:03:39 PM
งานครั้งที่ 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)

โค้ดโปรแกรม
โค๊ด: [Select]
#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)