กระทู้เมื่อเร็วๆ นี้

หน้า: [1] 2 3 ... 10
1
งานครั้งที่ 37 [iot#12 Anto] แสดงค่าความชื้นและอุณภูมิด้วย Anto
Anto สามารถรับค่าที่ส่งมาจากบอร์ดเข้ามาเป็นตัวเลขได้ โดยสามารถแสดงค่าข้อมูลเป็นตัวเลขหรือแสดงผลเป็นวิตเจ็ตที่เป็นเกจในกรณีที่ค่าที่ส่งมาเกิดจากการวัดปริมาณต่าง ๆ ทำให้ผู้ใช้งานสามารถสะดวกในการอ่านค่ายิ่งขึ้น  สำหรับผู้ที่ยังไม่ได้สมัครใช้งาน Anto สามารถศึกษาขั้นตอนได้จากงานครั้งที่ 36 [iot#11 Anto ] เริ่มต้นการใช้งาน Anto (ควบคุม LED) และในงานครั้งนี้เป็นการส่งค่าอุณหภูมิและความชื้นซึ่งการเขียนโค้ดที่บอร์ดควบคุมจำเป็นต้องมีไลบรารี่ท่านใดยังไม่ได้ดำเนินการให้ศึกษาขั้นตอนได้ในงานครั้งที่ 8 การเขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น

คอนเซ็ปต์หลักของงาน
บอร์ดส่งค่าตัวเลขชนิดที่มีทศนิยม (float) ขึ้นเซิร์ฟเวอร์เพื่อแสดงผลหน้าเวปไซต์


[ขั้นตอนการดำเนินการ]
-สร้าง Thing
-สร้าง Channel (Channel คือช่องทางการสื่อสารซึ่งอยู่ภายใน Thing)
-สร้าง Key รหัสลับของ Thing
-นำค่า Thing, Channel, Key มาเขียนโค้ดเพื่อส่งข้อมูลขึ้นเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด
-เขียนโค้ดเพื่อใช้งาน

ซึ่งรายละเอียดเป็นดังนี้
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


2. งานครั้งนี้เป็นการแสดงค่าอุณหภูมิและความชื้นสัมพัทธ์โดยเป้าประสงค์ต้องการแสดงเป็นเกจดังรูป


ส่วนจัดการเวปไซต์
3. เริ่่มจากสร้าง Thing โดยคลิกที่ Thing (1) และ Create new thing (2) ดังรูป


4. ป้อนรายละเอียด Thing(1) โดยในช่อง Name เป็นชื่อ Thing ที่ต้องนำไปใช้ในโค้ดโปรแกรม เมื่อป้อนเรียบร้อยแล้วคลิกที่ Add new (2)


5. รายการ Thing ที่สร้างขึ้นใหม่ ( 1 )  ทำการสร้าง Channel เพื่อเป็นช่องในการสื่อสารข้อมูลโดยคลิกตรงแว่นขยาย (2)


6. ผลจากการคลิกสร้าง Channel ในข้อที่ผ่านมาจะเป็นดังรูป ให้ทำการคลิกสร้างตามขั้นตอนดังรูป


7. สร้าง Channel แรกเป็นช่องสำหรับแสดงค่าอุณหภูมิโดยต้องตั้งค่าให้แสดงเป็นตัวเลขชนิดทศนิยม (Float)โดยดำเนินการดังนี้
   (1) ตั้งชื่อ Channel (ชื่อนี้จะต้องเอาไปใส่ในโค้ดโปรแกรม) ช่องนี้สร้างเพื่อใช้แสดงค่าที่เป็นอุณหภูมิ
   (2) คำอธิบาย Channel
   (3) ค่าข้อมูลที่ต้องการใช้งาน ในที่นี้ต้องการแสดงค่าเป็นตัวเลขที่มีทศนิยม


8. สร้าง Channel ถัดมาเป็นช่องสำหรับแสดงค่าความชื่นสัมพัทธ์โดยต้องตั้งค่าให้แสดงเป็นตัวเลขชนิดทศนิยม (Float)โดยดำเนินการดังนี้
   (1) ตั้งชื่อ Channel (ชื่อนี้จะต้องเอาไปใส่ในโค้ดโปรแกรม)
   (2) คำอธิบาย Channel
   (3) ค่าข้อมูลที่ต้องการใช้งาน ในที่นี้ต้องการแสดงค่าเป็นตัวเลขที่มีทศนิยม


9. เมื่อสร้าง Channel เสร็จจะมีรายการอยู่ 2 รายการ โดยค่าที่รับมาแล้วแสดงผลจะอยู่ใน Current Value


10. สร้างคีย์ของ Channel โดยคลิกที่ Key (1) และคลิกสร้างที่ Create new key (2)


11. ป้อนคำอธิบายของคีย์ที่ต้องการสร้าง (1) แล้วคลิกเลือกการอ่านค่าและอัพเดจใน Channel ที่ต้องการ (เป็น Channel ใน Thing ที่สร้างขึ้นในครั้งนี้)


เตรียมค่าที่เอาไปใช้ในการเขียนโค้ดโปรแกรม
ซึ่งต้องนำค่าจากเวปไซต์ไปใส่ในโค้ดจำนวน 4 อย่างได้แก่
-USERNAME
-Key (Token)
-Thing
-Channel

12. UserName ดูได้จากเมนู Account ดังรูป


13. Key (Token) ต้องเลือกรายการ Key ที่สร้างให้เชื่อมโยงใน Thing ที่ต้องการใช้งาน
   (1) เข้าไปที่เมนู Key
   (2) คลิกคัดลอก จากคีย์ที่ถูกสร้างใช้งานในครั้งนี้ (สังเกตจากคำอธิบาย)  แล้วนำไปวางในโค้ดโปรแกรม


14. Thing คลิกที่เมนู Thing เลือกชื่อที่ต้องการนำไปเขียนโปรแกรม


15. Channel สามารถเข้าไปดูรายการได้โดยคลิกที่แว่นขยายของ Thing


ส่วนจัดการโค้ด
16. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) ใส่รายละเอียดของไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (2) ใส่ค่า user(UserName), token(key),thing(Thing) ที่คัดลอกมาจากเวปไซต์จากข้อ 12-15


17. ฟังก์ชั่นที่ใช้สำหรับส่งค่าขึ้นเซิร์ฟเวอร์ Anto เป็นดังรูป
    (1)(3) ชื่อ Channel ที่ต้องการส่งค่า
    (2)(4) ค่าที่ต้องการส่งขึ้น ในตัวอย่างนี้เป็นการส่งค่าจากตัวแปร temp และ humid ซึ่งทั้งสองตัวแปรเป็น float


โค้ดโปรแกรม
โค๊ด: [Select]
#include <AntoIO.h>
#include <DHT.h>
#define DHTPIN D1
#define DHTTYPE DHT11

const char *ssid = "wifi name";
const char *pass = "wifi password";
const char *user = "anto username";
const char *token = "key of thing";
const char *thing = "thing name";

AntoIO anto(user, token, thing);
DHT dht(DHTPIN,DHTTYPE);
void setup() {
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.print("Anto library version: ");
  Serial.println(anto.getVersion());
  Serial.print("\nTrying to connect ");
  Serial.print(ssid);
  Serial.println("...");
  anto.begin(ssid, pass, messageReceived);
  Serial.println("\nConnected Anto done");
  dht.begin();
}

void loop() {
  anto.mqtt.loop();
  if (!anto.mqtt.isConnected())
    Serial.println("Disconnected");
  float temp = dht.readTemperature();
  float humid = dht.readHumidity();
  Serial.print("TEMP: ");
  Serial.println(temp);
  Serial.print("HUMID: ");
  Serial.println(humid);
  if(temp >= 0){
     anto.pub("Temp",temp);           
  }
  if(humid >= 0){
     anto.pub("Humid",humid);
  }
  delay(1000);
}
void messageReceived(String thing, String channel, String payload) {
  Serial.print("Recieved: ");
  Serial.print(thing);
  Serial.print("/");
  Serial.print(channel);
  Serial.print("-> ");
  Serial.println(payload);
}
ทดสอบการทำงาน
18. หลังจากการ upload โค้ด เปิดหน้า Serial monitor ดูผลการเชื่อมต่อกับเซิร์ฟเวอร์หากเชื่อมต่อได้จะเป็นดังรูป


19.  สามารถดูค่าได้จาก Channel ทั้ง 2 ที่สร้างขึ้น


*หมายเหตุ การเชื่อมต่อกับเซิร์ฟเวอร์ได้หรือไม่ สามารถดูได้จากตัวแจ้งเตือนดังรูป
  (1) เชื่อมต่อได้ สามารถใช้งานได้ตามปกติ
  (2) เชื่อมต่อไม่ได้ หากเกิดจากฝั่งเซิร์ฟเวอร์ให้รอสักระยะจนกว่าจะเชื่อมต่อได้จึงจะสามารถใช้งานได้



ออกแบบหน้า DashBoard เพื่อแสดงผลแบบเกจ
20. การออกแบบหน้า DashBoard เพื่อให้ผู้ใช้งานสะดวกในการอ่านค่า
   (1) เข้าไปที่เมนู Dashboard
   (2) คลิกสร้างใหม่


21. เลือกวิตเจ็ตที่ต้องการ ในงานนี้เลือกเกจในการแสดงผล


22. ตั้งค่าวิตเจ็ต
   (1) ปรับขนาด
   (2) ตั้งค่าเชื่อมต่อ


23. ตั้งค่ารายละเอียดของเกจที่ใช้แสดงผล
   (1) ชื่อเกจ
   (2) Channel ที่ต้องการนำค่ามาแสดงผล
   (3) ค่าต่ำสุดและสูงสุดของสเกลเกจ
-สำหรับเกจวัดอุณหภูมิ   

-สำหรับเกจวัดความชื้นสัมพัทธ์


25. หลังตั้งค่าเสร็จเมื่อคลิก Apply สามารถใช้งานได้ทันที


26. วงจรเชื่อมต่อ
2
งานครั้งที่ 36 [iot#11 Anto ] เริ่มต้นการใช้งาน Anto (ควบคุม LED)
Anto เป็นเวปไซต์ที่สร้างขึ้นเพื่อให้บริการทางด้าน iot เช่นเดียวกับหลาย ๆ เวปไซต์ มีการออกแบบให้มีการใช้งานที่ง่ายซึ่งงานครั้งนี้เป็นการแนะนำการใช้งานเบื้องต้น
คอนเซ็ปต์หลักของงาน
เซิร์ฟเวอร์ส่งค่า 0,1 จากการคลิกหน้าเวปไซต์เข้ามายังบอร์ดเพื่อควบคุมการติดดับของ LED


[ขั้นตอนการดำเนินการ]
-ลงทะเบียนใช้งานเวปไซต์ Anto
-สร้าง Thing
-สร้าง Channel (Channel คือช่องทางการสื่อสารซึ่งอยู่ภายใน Thing)
-สร้าง Key รหัสลับของ Thing
-นำค่า Thing, Channel, Key มาเขียนโค้ดเพื่อส่งข้อมูลขึ้นเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด

ซึ่งรายละเอียดเป็นดังนี้

1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการเวปไซต์
2. เข้าเวปไซต์ https://www.anto.io คลิกที่ Sign IN สัหรับผู้ที่ลงทะเบียนแล้ว แต่ถ้าหากเคยล็อกอินเข้ามาแล้วปุ่มดังกล่าวจะเปลี่ยนเป็นชื่อ CONTROL PANEL


3. หากผู้ใช้งานยังไม่ได้ลงทะเบียนใช้งานให้เลื่อนลงมาด้านล่างเวปไซต์คลิกที่ SIGN UP เพื่อทำการลงทะเบียน


4. สร้าง Thing ดำเนินการดังนี้
   (1) หากยังไม่เคยสร้างในช่องรายการจะไม่มีรายการ Thing
   (2) คลิกที่ Thing
   (3) คลิกสร้าง Thing ใหม่


5. ใส่รายละเอียดของ Thing ที่ต้องการสร้าง
   (1) รายละเอียดของ Thing (ชื่อ Thing ห้ามเว้นวรรค)
   (2) คลิกสร้าง


6. สร้าง Channel โดยคลิกที่แว่นขยาย


7. หากยังไม่เคยสร้าง Channel ในช่องรายการจะไม่มี (1) ทำการคลิกที่ (2) เพื่อเริ่มสร้าง Channel


8. คลิกสร้าง Channel ( Thing 1 ตัวสามารถมี Channel หลายตัวได้)


9. ใส่รายละเอียดของ Channel
   (1) ชื่อ Channel
   (2) คำอธิบายของ Channel ที่สร้าง
   (3) เลือกชนิดของข้อมูลที่ Channel ใช้งาน (งานนี้เป็นสวิตช์ควบคุม LED)


10. จะได้ Channel ที่สามารถควบคุมได้ด้วยการคลิก ที่ทำงานเป็นแบบสวิตช์
    หากต้องการควบคุม LED จำนวนหลายตัวให้สร้าง Channel ตามจำนวน LED ที่ต้องการควบคุม


11. สร้าง Key ของ Thing (หน้าเวปไซต์ใช้คำว่า Key ส่วนในโค้ดโปรแกรมส่วนนี้ไปใช้ในคำว่า token)
   (1) คลิกที่ Key
   (2) คลิกสร้าง Key ใหม่


12. ดำเนินการสร้าง Key ใหม่
   (1) รายละเอียด Key (ค่านี้จะใช้แสดงหน้ารายการ Key)
   (2) เลือก Thing ที่ต้องการสร้าง Key
   (3) กำหนด Channel ที่ต้องการใช้งาน
   (4) คลิกสร้าง Key ใหม่


13. รายการ Key ที่ได้หลังจากการสร้าง


ค่าที่เอาไปใช้ในการเขียนโค้ดโปรแกรม
ต้องต้องนำค่าจากเวปไซต์ไปใส่ในโค้ดจำนวน 4 อย่างได้แก่
-USERNAME
-Key (Token)
-Thing
-Channel

14. UserName ดูได้จากเมนู Account ดังรูป


15. Key (Token) ต้องเลือกรายการ Key ที่สร้างให้เชื่อมโยงใน Thing ที่ต้องการใช้งาน
   (1)เข้าไปที่เมนู Key
   (2) คลิกคัดลอก แล้วนำไปวางในโค้ดโปรแกรม


16. Thing คลิกที่เมนู Thing เลือกชื่อที่ต้องการนำไปเขียนโปรแกรม


17 Channel สามารถเข้าไปดูรายการได้โดยคลิกที่แว่นขยายของ Thing


ส่วนจัดการโค้ด
18. การใช้งาน Anto ต้องใช้ไลบรารี่โดยเฉพาะ ทำการเพิ่มไลบรารี่เริ่มจาก


19. พิมพ์ช่องค้นหาว่า anto เลือกเวอร์ชั่นล่าสุดแล้วทำการติดตั้ง


20. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) ใส่รายละเอียดของไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (2) ใส่ค่า user(UserName), token(key),thing(Thing) ที่คัดลอกมาจากเวปไซต์จากข้อ 14-16


21. ใส่ค่า Channel ที่ต้องการควบคุม (เป็น Channel ที่ถูกสร้างไว้ในเวปไซต์ ดูได้จากข้อ 17)  หากมีจำนวน Channel ที่ต้องการรับเพิ่มให้เพิ่มคำสั่ง anto.sub("..."); โดยใส่ชื่อ Channel ที่ต้องการ


22. ในฟังก์ชั่นรับค่าจากเซิร์ฟเวอร์สามารถควบคุม LED ได้จากการตรวจสอบค่าที่ถูกส่งมาจาก Channel ในตัวอย่างนี้หากข้อความที่ส่งมาเป็นของ Channel "LED1" โดยค่าที่ส่งมาอยู่ในตัวแปรที่ชื่อว่า payload ทำการตรวจค่า payload เพื่อสั่งทำงาน LED


23. อธิบายคำสั่ง if แบบย่อจากข้อ 22


โค้ดโปรแกรม
โค๊ด: [Select]
#include <AntoIO.h>
const char *ssid = "wifi name";
const char *pass = "wifi password";
const char *user = "anto username";
const char *token = "key of thing";
const char *thing = "thing name";
AntoIO anto(user, token, thing);    /* initialize AntoIO instance */
void setup(){
  pinMode(D1,OUTPUT);
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.print("Anto library version: ");
  Serial.println(anto.getVersion());
  Serial.print("\nTrying to connect ");
  Serial.print(ssid);
  Serial.println("...");
  anto.begin(ssid, pass, messageReceived);
  Serial.println("\nConnected Anto done");
  anto.sub("LED1");              /*Subscript Channels "LED1"*/
}
void loop(){
  anto.mqtt.loop();
}
// a callback function for arriving data.
void messageReceived(String thing, String channel, String payload) {
    Serial.print("Recieved: ");
    Serial.print(thing);
    Serial.print("/");
    Serial.print(channel);
    Serial.print("-> ");
    Serial.println(payload);
    if(channel.equals("LED1"))
      digitalWrite(D1,(payload == "1")? 1:0);
}
ทดสอบการทำงาน
24. หลังจากการ upload โค้ด เปิดหน้า Serial monitor ดูผลการเชื่อมต่อกับเซิร์ฟเวอร์หากเชื่อมต่อได้จะเป็นดังรูป


25. ควบคุมการทำงานของบอร์ดได้จากการควบคุมจากหน้า Channel โดยเริ่มจากเข้าไปที่เมนู Thing ดังรูป


*หมายเหตุ การเชื่อมต่อกับเซิร์ฟเวอร์ได้หรือไม่ สามารถดูได้จากตัวแจ้งเตือนดังรูป
  (1) เชื่อมต่อได้ สามารถใช้งานได้ตามปกติ
  (2) เชื่อมต่อไม่ได้ หากเกิดจากฝ้่งเซิร์ฟเวอร์ให้รอสักระยะจนกว่าจะเชื่อมต่อได้จึงจะสามารถใช้งานได้


ออกแบบหน้า DashBoard
26. ออกแบบหน้า DashBoard (สำหรับต้องการออกแบบหน้าต่างควบคุมตามต้องการ)
   (1) เข้าไปที่เมนู Dashboard
   (2) คลิกสร้างใหม่


27. เลือกวิตเจ็ตที่ต้องการ ในงานนี้เลือกหลอดไฟและสวิตช์ดังรูป


28. ตั้งค่าวิตเจ็ต
   (1) ปรับขนาด
   (2) ตั้งค่าเชื่อมต่อ


29. เลือก Channel ที่ต้องการเชื่อมต่อ
   -ตั้งค่าหลอดไฟ (สามารถกำหนดสีของหลอดไฟระหว่างติดและดับได้ตามต้องการ)


   -ตั้งค่าสวิตช์ (สามารถกำหนดสีของสวิตช์ระหว่างเปิดและปิดได้ตามต้องการ)


27. หลังตั้งค่าเสร็จเมื่อคลิก Apply สามารถใช้งานได้ทันที



25. การเชื่อมต่อ
3
งานครั้งที่ 35 [iot#10 iottweet] แสดงค่าความชื้นและอุณภูมิด้วย iottweet
iottweet มีวิตเจ็ตที่แสดงค่าที่รับเข้ามาจากบอร์ด (Thing) โดยค่าที่รับมาแสดงเป็นข้อมูลตัวเลข สามารถแสดงผลได้ 2 แบบคือแสดงเป็นกราฟและแสดงเป็นเกจ ณ ปัจจุบัน (2018) iottweet รับค่าตัวเลขได้สูงสุด 4 จำนวน ซึ่งหน้าต่างตั้งค่ารับจะเรียกว่า slot สำหรับผู้ที่ยังไม่ได้สมัครใช้งาน iottweet สามารถศึกษาขั้นตอนได้จากงานครั้งที่ 33 [iot#8 iottweet ] เริ่มต้นการใช้งาน iottweet และในงานครั้งนี้เป็นการส่งค่าอุณหภูมิและความชื้นซึ่งการเขียนโค้ดที่บอร์ดควบคุมจำเป็นต้องมีไลบรารี่ท่านใดยังไม่ได้ดำเนินการให้ศึกษาขั้นตอนได้ในงานครั้งที่ 8 การเขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น
คอนเซ็ปต์หลักของงาน
บอร์ดส่งค่าตัวเลขขึ้นเซิร์ฟเวอร์เพื่อแสดงผลหน้าเวปไซต์


[ขั้นตอนการดำเนินการ]
-สร้างช่องใช้งาน (รายละเอียดของขั้นตอนการสร้างให้ดูจากงานครั้งที่ 33)
-นำค่า Key มาเขียนโค้ดเพื่อสื่อสารระหว่างบอร์ดกับเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด
-เขียนโค้ดเพื่อใช้งาน

ซึ่งรายละเอียดเป็นดังนี้
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการเวปไซต์
2. ทำการ Log in
   (1) จะได้ User ID ซึ่งเป็นตัวเลข 6 หลักโดยจะนำค่านี้ไปใช้ในโค้ดโปรแกรม
   (2) คลิกที่ DASHBOARD เพื่อสร้างหน้าต่างการสื่อสาร


3. คลิกที่ My IoT Garage เพื่อสร้างช่องทางการสื่อสาร (Thing)


4. คัดลอก key ของ Thing ที่ต้องการสื่อสารเพื่อในไปใส่ในโค้ดโปรแกรม (หากยังไม่ได้สร้าง Thing ให้กลับไปดูขั้นตอนการสร้างในงานครั้งที่ 33)


5. คลิกกลับไปยังหน้า DASHBOARD เพื่อออกแบบหน้าต่างการเชื่อมต่อ
   (1) คลิกเลือกรายการอุปกรณ์เชื่อมต่อ (Think) สำหรับจะออกแบบหน้าต่าง
   (2) คลิกที่ Edit layout เพื่อสร้าง/แก้ไข หน้าต่างการเชื่อมต่อ


6. งานครั้งนี้เป็นการแสดงค่าตัวเลขที่ส่งมาจากบอร์ด (Thing) สามารถแสดงได้ 2 แบบ
   (1) คลิกเลือกแสดงกราฟ
   (2) คลิกเลือกแสดงเป็นเกจ
*เมื่อเลือกแล้วสามารถเคลื่อนย้ายตำแหน่งได้โดยการคลิกค้างแล้วลากไปยังตำแหน่งที่ต้องการ


7. ตั้งค่าใช้งานกราฟให้แสดงเป็นค่าความชื้นในอากาศ
   (1) คลิก setting
   (2) คลิกเลือกข้อมูลที่ใช้แสดง ในที่นี้เลือก slot0 ซึ่งเป็นข้อมูลตัวแรกที่ส่งเข้ามา
   (3) ตั้งค่ากราฟในการแสดงผล


8. ตั้งค่าใช้งานกราฟให้แสดงเป็นอุณหภูมิ
   (1) คลิก setting
   (2) คลิกเลือกข้อมูลที่ใช้แสดง ในที่นี้เลือก slot1 ซึ่งเป็นข้อมูลตัวที่สองที่ส่งเข้ามา
   (3) ตั้งค่ากราฟในการแสดงผล


9. ตั้งค่าใช้งานเกจให้แสดงเป็นค่าความชื้นในอากาศ
   (1) คลิก setting
   (2) คลิกเลือกข้อมูลที่ใช้แสดง ในที่นี้เลือก slot0 ซึ่งเป็นข้อมูลตัวแรกที่ส่งเข้ามา
   (3) ตั้งค่าเกจในการแสดงผล


10. ตั้งค่าใช้งานเกจให้แสดงเป็นค่าอุณหภูมิ
   (1) คลิก setting
   (2) คลิกเลือกข้อมูลที่ใช้แสดง ในที่นี้เลือก slot1 ซึ่งเป็นข้อมูลตัวที่สองที่ส่งเข้ามา
   (3) ตั้งค่าเกจในการแสดงผล


ส่วนจัดการโค้ด
เนื่องจากการทำงานของบอร์ดแบ่งเป็นสองส่วนหลัก ๆ โดยแต่ละส่วนจำเป็นต้องใช้คาบเวลาที่เหมาะสมในการทำงานดังนี้
-ตัวเซนเซอร์ DHT ควรใช้คาบเวลาในการอ่านค่าไม่ต่ำกว่า 2 วินาทีในกรณีที่ใช้ DHT22 และไม่ต่ำกว่า 1 วินาทีเมื่อใช้ DHT11
-คาบเวลาในการส่งค่าขึ้นเซิร์ฟเวอร์ไม่ควรต่ำกว่า 15 วินาทีต่อการส่ง 1 ครั้ง
ดังนั้นเพื่อให้การเขียนโค้ดง่ายขึ้นขอแนะนำให้ใช้ไลบรารี่กำหนดคาบเวลาทำงานในฟังก์ชั่นย่อยที่ชื่อว่า SimpleTime มีขั้นตอนการดำเนินการดังนี้

11. เข้าไปที่เวปไซต์ https://github.com/schinken/SimpleTimer ทำการดาวน์โหลดไลบรารี่ คลิกที่ (1)->(2)


12. ติดตั้งไลบรารี่จากไฟล์ที่ดาวน์โหลดมาดังรูป


13. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) userid ที่คัดลอกมาจากเวปไซต์
    (2) key ของ Thing ที่คัดลอกมาจากเวปไซต์
    (3) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (4) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


14. การใช้งานไลบรารี่ SimpleTime
    (1) เริ่มใช้งานไลบรารี่
    (2) กำหนดคาบเวลา (หน่วยเป็นมิลลิวินาที) ในการวนไปทำงานในฟังก์ชั่น และชื่อฟังก์ชั่นที่ต้องการให้ไปทำ


15. รูปแบบของการกำหนดค่าของฟังก์ชั่นในการส่งค่าขึ้นเซิร์ฟเวอร์
    (1) ข้อมูลที่ส่งขึ้นจำนวน 4 ค่าซึ่งเป็นข้อมูลที่เป็นตัวเลข
    (2) ข้อความที่ต้องการส่งขึ้นข้อความที่ 1 จะปรากฏเมื่อใช้วิตเจ็ต Tweet private panel
    (3) ข้อความที่ต้องการส่งขึ้นข้อความที่ 2 จะปรากฏเมื่อใช้วิตเจ็ต Tweet public panel


16. รายละเอียดโค้ดโปรแกรม
    (1) ส่งค่าอุณภูมิและความชื้อเข้าในตัวแปรหากสามารถอ่านค่าได้
    (2) แสดงค่าที่อ่านได้จากเซนเซอร์
    (3) หน่วงเวลาสำหรับการวนอ่านค่าจากเซนเซอร์
    (4) ฟังก์ชั่นย่อยที่ส่งค่าขึ้นเซอร์เวอร์ ในที่นี้ส่งค่าขึ้นเพียง 2 ค่า


โค้ดโปรแกรม
โค๊ด: [Select]
#include <ESP8266WiFi.h>
#include <IoTtweet.h>
#include <SimpleTimer.h>
#include <DHT.h>
const char *userid = "number user id";      /*IoTtweet account user ID */
const char *key = "key of think";           /*IoTtweet registered device key in "MY IOT Garage"*/
const char *ssid = "wifi name";             /*Your-WiFi-router-SSID*/
const char *password = "wifi password";     /*Your-WiFi-password*/
#define DHTPIN  D1        /* pin of sensor connected to*/
#define DHTTYPE DHT11     /* DHT22 if useDHT22*/

IoTtweet myiot; 
SimpleTimer timer;
DHT dht(DHTPIN, DHTTYPE);
float h;                  /*keep Humidity*/
float t;                  /*keep Temperature*/

void setup()
{
  Serial.begin(9600);
  dht.begin();
  timer.setInterval(15000, sendData);
  /*----------Connect WiFi----------------*/
  Serial.println("\nConnect wifi...");
  bool conn = myiot.begin(ssid,password);
    if(!conn)
      Serial.println("WiFi connection failed.");
    else
      Serial.println("WiFi connected !");
}
void loop()
{
  timer.run();
  float newh = dht.readHumidity();
  float newt = dht.readTemperature();
  if (isnan(newh) || isnan(newt)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  h=newh;
  t=newt;
  Serial.print("Humidity is: ");Serial.println(h,1);
  Serial.print("Temperature is: ");Serial.println(t,1);
  delay(2500);
}
void sendData()
{
  String response = myiot.WriteDashboard(userid,key,h,t,0,0,"","");
  Serial.println(response);   /*Show response JSON from www.iottweet.com*/
}
ทดสอบการทำงาน
17. หลังจากการ upload โค้ด ทำการเปิดหน้า DASHBOARD ของเวป iottweet สังเกตผล


18. สังเกตผลการทำงานของบอร์ดจากค่าที่แสดงในหน้าต่าง Serial monitor


19. วงจรเชื่อมต่อ
4
IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) / งานครั้งที่ 34 [iot#9 iottweet] ควบคุมความสว่าง LED(PWM) ด้วย iottweet
« กระทู้ล่าสุด โดย admin เมื่อ กุมภาพันธ์ 11, 2018, 05:34:55 AM »
งานครั้งที่ 34 [iot#9 iottweet] ควบคุมความสว่าง LED(PWM) ด้วย iottweet
iottweet มีวิตเจ็ตชนิดแถบเลื่อน (หรือที่เรียกว่าสไลเดอร์) โดยส่งค่าไปยังบอร์ด (Thing) ที่มีค่าระหว่าง 0-100 ผู้ใช้งานสามารถปรับค่าได้โดยการเลื่อนสไลเดอร์ไปยังค่าที่ต้องการ โดยบอร์ดรับค่าดังกล่าวไปควบคุมการทำงานต่าง ๆ ของบอร์ดได้ ในงานครั้งนี้ทดลองการควบคุมความสว่างของ LED ซึ่งบอร์ดที่ใช้ชิพ ESP8266 เช่น NodeMCU, WeMOS D1 mini สามารถใช้งาน PWM เพื่อควบคุมความสว่างของ LED ได้เกิบทุกขา ยกเว้นเพียงขาเดียวคือขา D0 สำหรับผู้ที่ยังไม่ได้สมัครใช้งาน iottweet สามารถศึกษาขั้นตอนได้จากงานครั้งที่ 33 [iot#8 iottweet ] เริ่มต้นการใช้งาน iottweet
คอนเซ็ปต์หลักของงาน
เซิร์ฟเวอร์ส่งค่าตัวเลขจากการใช้งานวิตเจ็ตบนหน้าเวปไซต์เข้ามายังบอร์ดเพื่อควบคุมความสว่างของ LED


[ขั้นตอนการดำเนินการ]
-สร้างช่องใช้งาน (รายละเอียดของขั้นตอนการสร้างให้ดูจากงานครั้งที่ 33)
-นำค่า Key มาเขียนโค้ดเพื่อสื่อสารระหว่างบอร์ดกับเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด
-เขียนโค้ดเพื่อใช้งาน

ซึ่งรายละเอียดเป็นดังนี้
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการเวปไซต์
2. ทำการ Log in
   (1) จะได้ User ID ซึ่งเป็นตัวเลข 6 หลักโดยจะนำค่านี้ไปใช้ในโค้ดโปรแกรม
   (2) คลิกที่ DASHBOARD เพื่อสร้างหน้าต่างการสื่อสาร


3. คลิกที่ My IoT Garage เพื่อสร้างช่องทางการสื่อสาร (Thing)


4. คัดลอก key ของ Thing ที่ต้องการสื่อสารเพื่อในไปใส่ในโค้ดโปรแกรม (หากยังไม่ได้สร้าง Thing ให้กลับไปดูขั้นตอนการสร้างในงานครั้งที่ 33)


5. คลิกกลับไปยังหน้า DASHBOARD เพื่อออกแบบหน้าต่างการเชื่อมต่อ
   (1) คลิกเลือกรายการอุปกรณ์เชื่อมต่อ (Think) สำหรับจะออกแบบหน้าต่าง
   (2) คลิกที่ Edit layout เพื่อสร้าง/แก้ไข หน้าต่างการเชื่อมต่อ


6. งานครั้งนี้เป็นการควบคุมความสว่างของ LED โดยใช้แถบเลื่อนส่งค่าไปยังบอร์ดผ่านหน้าเวปเพจ
   (1) คลิกเลือกสไลเดอร์
   (2) คลิก set เพื่อกำหนดค่า
   (3) เลือกช่องทางการสื่อสาร (ปัจจุบันสามารถควบคุมได้ 4 ช่องพอร์ต) แล้วคลิก save


ส่วนจัดการโค้ด

7. เปิดโปรแกรมตัวอย่างที่ใช้งานสไลเดอร์


8. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) userid ที่คัดลอกมาจากเวปไซต์
    (2) key ของ Thing ที่คัดลอกมาจากเวปไซต์
    (3) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (4) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


9. ปรับปรุงโค้ดโปรแกรมเพื่อให้สามารถควบคุมความสว่างของ LED ได้
    (1) ฟังก์ชั่นอ่านค่าจากสไลเดอร์ที่ส่งมาจากเซิร์ฟเวอร์ (งานครั้งนี้กำหนดการส่งค่ามาจาก port1)
    (2) ทำการปรับย่านตัวเลขที่รับมาจากสไลเดอร์ที่มีค่าระหว่าง 0-100 ไปเป็น 0-1023 เพื่อควบคุมความสว่างของ LED
    (3) ฟังก์ชั่นควบคุมความสว่างของ LED โดยส่งค่าเป็น PWM ออกทางของพอร์ตที่ใช้เชื่อมต่อกับ LED


10. ความเชื่อมโยงระหว่างค่าที่กำหนดใน DASHBOARD กับค่าของฟังก์ชั่นการใช้งานในโค้ดโปรแกรมเป็นดังรูป


โค้ดโปรแกรม
โค๊ด: [Select]
#include <ESP8266WiFi.h>
#include <IoTtweet.h>

const char *userid = "number user id";          /*IoTtweet account user ID */
const char *key = "key of think";       /*IoTtweet registered device key in "MY IOT Garage"*/
const char *ssid = "wifi name";   /*Your-WiFi-router-SSID*/
const char *password = "wifi password";    /*Your-WiFi-password*/

IoTtweet myiot;  /*naming your devices*/

void setup() {
  pinMode(D1,OUTPUT);
  Serial.begin(115200);
  String libvers = myiot.getVersion();
  Serial.println("IoTtweet Library vesion : " + String(libvers));
  Serial.println("\nConnect wifi...");
  bool conn = myiot.begin(ssid,password);
    if(!conn)
      Serial.println("WiFi connection failed.");
    else
      Serial.println("WiFi connected !");

void loop() {
  float slider1_read = myiot.ReadAnalogSlider(userid,key,1);
  Serial.print("Analog Slider 1 value is ");
  Serial.println(slider1_read);
  slider1_read=map(slider1_read,0,100,0,1023);
  analogWrite(D1,slider1_read);
  delay(10);
}

ทดสอบการทำงาน
11. หลังจากการ upload โค้ด ทำการเปิดหน้า DASHBOARD ของเวป iottweet ทดสอบโดยการเลื่อนสไลเดอร์


12. สังเกตผลความสว่างของ LED และค่าที่แสดงในหน้าต่าง Serial monitor


13. ทดลองเพิ่มจำนวน LED ที่ใช้งาน

14. วงจรเชื่อมต่อ
5
งานครั้งที่ 33 [iot#8 iottweet] เริ่มต้นการใช้งาน iottweet (ควบคุม LED)
iottweet เป็นเวปไซต์ของคนไทยที่สร้างขึ้นเพื่อให้บริการทางด้าน iot โดยออกแบบให้มีการใช้งานที่ไม่ซับซ้อนง่ายต่อการใช้งาน งานครั้งนี้เป็นการแนะนำการใช้งานเบื้องต้นในการใช้บริการของเวป iottweet
คอนเซ็ปต์หลักของงาน
เซิร์ฟเวอร์ส่งข้อความ "ON", "OFF" จากการคลิกหน้าเวปไซต์เข้ามายังบอร์ดเพื่อควบคุมการติดดับของ LED


[ขั้นตอนการดำเนินการ]
-ลงทะเบียนใช้งานเวปไซต์ iottweet
-สร้างช่องใช้งาน
-นำค่า Key มาเขียนโค้ดเพื่อส่งข้อมูลขึ้นเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด

ซึ่งรายละเอียดเป็นดังนี้

1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการเวปไซต์
2. เข้าเวปไซต์ https://www.iottweet.com คลิกที่ Sign Up เพื่อลงทะเบียนใช้งาน


3. หน้าเวปจะแสดงผลการลงทะเบียน เมื่อทำการ Log in จะได้ User ID ซึ่งเป็นตัวเลข 6 หลักโดยจะนำค่านี้ไปใช้ในโค้ดโปรแกรม


4. คลิกที่ DASHBOARD เพื่อสร้างหน้าต่างการสื่อสาร


5. หากยังไม่เคยสร้างช่องการเชื่อมต่อจะปรากฏดังรูป
   (1) เวปแสดงข้อความว่ายังไม่มีรายการอุปกรณ์ (อุปกรณ์เชื่อมต่อ)
   (2) คลิกที่ My IoT Garage เพื่อสร้างช่องทางเชื่อมต่อ


6. รายการของอุปกรณ์ที่ใช้เชื่อมต่อ (หากยังไม่เคยกำหนดจะไม่มีในรายการ)


7. เลื่อนลงด้านล่างของเวปเพจ ทำการกำหนดค่าอุปกรณ์ต่อเชื่อม (Thing)
   (1) ตั้งชื่ออุปกรณ์เชื่อมต่อ (Thing)
   (2) โมเดลของอุปกรณ์ที่ใช้เชื่อมต่อ
   (3) คีย์ที่ได้ (ค่านี้จะนำไปใช้ในการเขียนโค้ด)
   (4) คลิก Add


8. ค่าที่จะต้องนำไปใช้ในการเขียนโค้ด
   (1) userid
   (2) key
   (3) คลิกกลับไปยังหน้า DASHBOARD เพื่อออกแบบหน้าต่างการเชื่อมต่อ


9. ค่าที่จะต้องนำไปใช้ในการเขียนโค้ด
   (1) คลิกเลือกรายการอุปกรณ์เชื่อมต่อ (Think) สำหรับจะออกแบบหน้าต่าง
   (2) คลิกที่ Edit layout เพื่อสร้าง/แก้ไข หน้าต่างการเชื่อมต่อ


10. วิตเจ็ทที่มีให้ใช้งาน


11. งานครั้งนี้เป็นการควบคุม LED ที่บอร์ดผ่านหน้าเวปเพจ
   (1) คลิกเลือกสวิตช์
   (2) คลิก set เพื่อกำหนดค่า
   (3) เลือกช่องทางการสื่อสาร (ปัจจุบันสามารถควบคุมได้ 5 ช่องพอร์ต)
   (4) ตั้งชื่อสวิตช์
   (5) คลิก Save


12. เมื่อออกแบบหน้าต่างการสื่อสารเป็นที่พอใจแล้วให้ทำการคลิก Save laout


ส่วนจัดการโค้ด
13. การใช้งาน iot ของ iottweet จำเป็นต้องใช้ไลบรารี่ช่วยทำงาน 2 ตัวคือ ArduinoJSON และ iottweet ขั้นตอนการเพิ่มไลบรารี่เริ่มจาก


14. ติดตั้งไลบรารี่ ArduinoJSON
   (1) พิมพ์ในช่องค้นหาด้วยคำว่า ArduinoJSON
   (2) คลิกที่รายการ
   (3) เลือกเวอร์ชั่นล่าสุด
   (4) คลิกติดตั้ง


15. ติดตั้งไลบรารี่ iottweet
   (1) พิมพ์ในช่องค้นหาด้วยคำว่า iottweet
   (2) คลิกที่รายการ
   (3) เลือกเวอร์ชั่นล่าสุด
   (4) คลิกติดตั้ง


16. เปิดโปรแกรมตัวอย่าง


17 แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) userid ที่คัดลอกมาจากเวปไซต์
    (2) key ของ Thing ที่คัดลอกมาจากเวปไซต์
    (3) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (4) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


18. ความเชื่อมโยงระหว่างค่าที่กำหนดใน DASHBOARD กับค่าของฟังก์ชั่นการใช้งานในโค้ดโปรแกรมเป็นดังรูป


หมายเหตุ เวอร์ชั่นของแพคเก็ต ESP8266 มีผลต่อการใช้งาน
*ปัจจุบัน(ก.พ. 2018) ESP8266 เวอร์ชั่น 2.4.0 จะทำให้ iottweet ใช้งานไม่ได้ หากท่านใดใช้งานอยู่ให้ทำการถอนออกแล้วติดตั้งใหม่โดยเลือกเป็นเวอร์ชั่น 2.3.0 แทน

19. การดูเวอร์ชั่นแพคเก็ต ESP8266 ที่ติดตั้งไว้ โดยเข้าไปที่


20. พิมพ์ช่องค้นหาว่า 8266 สังเกตเวอร์ชั่นที่ติดตั้งไว้ (ต้องเป็น 2.3.0)


21. ผลการรันโค้ดเดียวกันระหว่าง 2.3.0 กับ 2.4.0 ในการเชื่อมต่อกับ iottweet


22. เมื่อทำการ upload โค้ดเรียบร้อยแล้ว เปิดที่หน้าต่าง DASHBOARD ทดลองคลิกสวิตช์ สังเกตผลที่เกิดขึ้นที่ LED ของบอร์ด (อาจมีการหน่วงบ้าง 2-3 วินาที)


โค้ดโปรแกรม
โค๊ด: [Select]
#include <ESP8266WiFi.h>
#include <IoTtweet.h>
const char *userid = "number user id";          /*IoTtweet account user ID (6 digits, included zeor pre-fix)*/
const char *key = "key of think";       /*IoTtweet registered device key in "MY IOT Garage"*/
const char *ssid = "wifi name";   /*Your-WiFi-router-SSID*/
const char *password = "wifi password";    /*Your-WiFi-password*/

IoTtweet myiot;                         /*naming your devices*/
void setup() {
  Serial.begin(115200);
  pinMode(D1,OUTPUT);
  String libvers = myiot.getVersion();
  Serial.println("IoTtweet Library vesion : " + String(libvers));
  Serial.println("\nConnect wifi...");
  bool conn = myiot.begin(ssid,password);
    if(!conn){
      Serial.println("WiFi connection failed.");
    }else{
      Serial.println("WiFi connected !");
     }

void loop() {
  String sw = myiot.ReadDigitalSwitch(userid,key,1);
  delay(10);
  if(sw1=="ON")
    digitalWrite(D1,HIGH);
  else
    digitalWrite(D1,LOW); 
}

23. ในกรณีที่ต้องการเพิ่มสวิตช์ควบคุมสามารถแก้ไขและเพิ่มได้ดังรูป


24. ทำการแก้ไขโค้ดโปรแกรมดังรูป (ต้องเพิ่ม pinMode ใน setup ด้วยเมื่อเพิ่มพอร์ตควบคุม)
  (1) เพิ่มช่องทางรับค่า จากตัวอย่างสวิตช์กำหนดการเชื่อมต่อเป็น port1, port2 จากการกำหนดหน้า DashBoard
  (2) เงื่อนไขควบคุม LED จากตัวอย่างเป็นคำสั่ง if แบบย่อ


โค้ดโปรแกรม
โค๊ด: [Select]
#include <ESP8266WiFi.h>
#include <IoTtweet.h>
const char *userid = "number user id";          /*IoTtweet account user ID (6 digits, included zeor pre-fix)*/
const char *key = "key of think";       /*IoTtweet registered device key in "MY IOT Garage"*/
const char *ssid = "wifi name";   /*Your-WiFi-router-SSID*/
const char *password = "wifi password";    /*Your-WiFi-password*/

IoTtweet myiot;                         /*naming your devices*/
void setup() {
  Serial.begin(115200);
  pinMode(D1,OUTPUT);
  pinMode(D2,OUTPUT);
  String libvers = myiot.getVersion();
  Serial.println("IoTtweet Library vesion : " + String(libvers));

  /*Connect WiFi*/
  Serial.println("\nConnect wifi...");
  bool conn = myiot.begin(ssid,password);
    if(!conn){
      Serial.println("WiFi connection failed.");
    }else{
      Serial.println("WiFi connected !");
     }

void loop() {
  String sw1 = myiot.ReadDigitalSwitch(userid,key,1);
  String sw2 = myiot.ReadDigitalSwitch(userid,key,2);
  delay(10);
  /*Control to  LED*/
  digitalWrite(D1,sw1=="ON"? 1:0);
  digitalWrite(D2,sw2=="ON"? 1:0);
}

25. การเชื่อมต่อ
6
งานครั้งที่ 32 [iot#7 ThinkSpeak] การแสดงความชื้น/อุณหภูมิขึ้นเวปไซต์ ThingSpeak
ThingSpeak เป็นเวปไซต์ที่ให้บริการเก็บข้อมูลและแสดงผล ซึ่งสามารถนำมาใช้ในงาน iot ได้เพียงแต่มีข้อแม้ว่าข้อมูลในการส่งขึ้นไปบันทึกค่าแต่ละครั้งจะต้องไม่น้อยกว่า 15 วินาที (หากละเมิดอาจถูกแบนได้) งานครั้งนี้เป็นการแสดงค่าความชื้นและอุณภูมิบนหน้าเวปไซต์ ดังนั้นตัวบอร์ดต้องอ่านค่าจากตัวเซนเซอร์ให้ได้ก่อน ตัวเซนเซอร์ที่ใช้ในการทดลองนี้ใช้เบอร์ DHT11 ซึ่งขั้นตอนการเขียนโค้ดคำสั่งเพื่ออ่านค่าได้ทดลองผ่านมาแล้วในใบงานที่ 8 (DHT22 กับ DHT11 ใช้โค้ดตัวเดียวกันเพียงแต่แก้การกำหนดค่าเพียงคำสั่งเดียว) หากยังไม่ได้ติดตั้งไลบรารี่สำหรับเซนเซอร์ DHT ให้กลับไปศึกษาใน เขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น สำหรับงานครั้งนี้มีขั้นตอนการดำเนินการทดลองเป็นดังนี้

[ขั้นตอนการดำเนินการ]
-ลงทะเบียนใช้งานเวปไซต์ ThingSpeak
-สร้างช่องใช้งาน
-นำค่า API Key มาเขียนโค้ดเพื่อส่งข้อมูลขึ้นเซิร์ฟเวอร์

ซึ่งรายละเอียดเป็นดังนี้

1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการเวปไซต์
2. เข้าเวปไซต์ https://thingspeak.com คลิกที่ Sign Up เพื่อลงทะเบียนใช้งาน


3. กรอกข้อมูลลงทะเบียนใช้งาน ใช้อีเมล์จริงเนื่องจากจะต้องมีการดำเนินการยืนยันการลงทะเบียน


4. ตัวอย่างการกรอกข้อมูลลงทะเบียน


5. เปิดอีเมล์ทำการคลิกที่ปุ่มเพื่อยืนยันการลงทะเบียน


6. หน้าเวปจะแสดงผลการลงทะเบียน


7. สำหรับเวอร์ชั่นปัจจุบัน (30/1/2018) ทางเวปไซต์ให้ผู้ใช้งานลงทะเบียน MathWorsk ด้วย (ดำเนินการให้เสร็จสิ้น)


8. คลิกยอมรับ


9. คลิกสร้างช่อง (Channel) ใช้งาน


10. ตั้งค่าช่อง (Channel Settings)
    (1) ชื่อกราฟ
    (2) คำอธิบาย
    (3) ชื่อข้อมูลของกราฟในฟิลด์ที่ 1
    (4) ชื่อข้อมูลของกราฟในฟิลด์ที่ 2
*ตัวอย่างนี้แสดงผลข้อมูล 2 ชุด ซึ่งใน 1 ช่องสามารถแสดงผลข้อมูลได้สูงสุด 8 ชุด


11. คลิกที่ API Keys ทำการคัดลอกคีย์เพื่อนำไปใช้ในโค้ดโปรแกรม


ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
12. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
    (1) รหัส apiKey ที่คัดลอกมาจากเวปไซต์
    (2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


13 รายละเอียดของ api


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


โค้ดโปรแกรม
โค๊ด: [Select]
#include <DHT.h>
#include <ESP8266WiFi.h>

String apiKey         = "apiKey";     // thingspeak API key,
const char* ssid      = "wifi name";
const char* password  = "wifi password";
const char* server    = "api.thingspeak.com";

#define DHTPIN  D1
#define DHTTYPE DHT11
 
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
   
void setup() {
                 
  Serial.begin(115200);
  delay(10);
  dht.begin();
 
  WiFi.begin(ssid, password);
 
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
}
void loop() {
 
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  if (client.connect(server,80)) {
    String  url = "/update?api_key="+ apiKey ;
            url += "&field1=" + (String)t;
            url += "&field2=" + (String)h; 
    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + server + "\r\n" +
                   "Connection: close\r\n\r\n");
    Serial.print("Temp: ");
    Serial.print(t);
    Serial.print(" *C  and Humidity: ");
    Serial.print(h);
    Serial.println("% ");   
  }
  client.stop();
  Serial.print("Waiting...");   
  delay(20000);  // thingspeak needs minimum 15 sec delay between updates
}

ทดสอบการทำงาน
15. คลิกที่ Private view


16. สังเกตผลที่ได้ จะมีข้อมูลค่อย ๆ ทะยอยเข้ามาทุก ๆ 20 วินาทีตามที่โค้ดโปรแกรมเขียนไว้


กรณีที่ต้องการชี้จุดที่วางบอร์ดเพื่อแสดงตำแหน่งของการวัด
17. เข้าเวปไซต์กูเกิลแมพ คลิกขวาที่ตำแหน่งที่ต้องการชี้จุด คลิกที่คำว่า "ที่นี่มีอะไร"


18. คลิกบริเวณตัวเลขพิกัด


19. คัดลอกพิกัด (ดับเบิลคลิกที่ตัวเลขแล้ว Ctrl+c)


20. ที่เวปไซต์ ThingSpeak คลิกที่ Channel Settings


21. วางพิกัดที่คัดลองมา


22. ผลที่ได้


23. ในกรณีที่ต้องการแชร์ข้อมูล (ผู้อื่นสามารถเห็นผลได้) ให้ทำการกำหนดสิทธิ์ที่ Sharing


24. การแชร์คลิกที่ Public View (คัดลอก URL เพื่อใช้ในการแชร์ได้)


25. การเชื่อมต่อ
7
งานครั้งที่ 31 [iot#6 Blynk] การควบคุม RGB LED(PWM) ด้วยแอฟ Blynk
การควบคุมให้ LED แบบ RGB ให้แสดงเป็นสีต่าง ๆ ให้หลักการผสมสีจากแม่สีหลักคือ สีแดง สีเขียวและสีน้ำเงิน การควบคุมให้แต่ละสีให้มีความสว่างมากน้อยตามต้องการให้หลักการขับ LED แบบ PWM ซึ่งขาพอร์ตเกือบทุกขาของ NodeMCU WeMOS D1 mini ทำงานได้หมดยกเว้น D0 ผู้ใช้งานสามารถประยุกต์การควบคุมขาพอร์ตแบบ PWM ไปควบคุมความเร็วของมอเตอร์กระแสตรงได้เช่นกัน  (ข้อมูลการขับพอร์ตแบบ PWM สามารถศึกษาได้จากงานงานครั้งที่ 4 เขียนโปรแกรมปรับค่าความสว่างของ LED (PWM)) ขั้นตอนการดำเนินการทดลองเป็นดังนี้
[หมายเหตุ] จะใช้งานแอฟและไลบรารี่ Blynk ทั้งในสมาร์ตโฟนและโปรแกรม ArduinoIDE ได้ จะต้องดำเนินติดตั้งก่อน สามารถศึกษาวิธีการจากงานครั้งที่ 26 ได้ที่ งานครั้งที่ 26 [iot Blynk #1] เริ่มการใช้งาน Blynk

1. วงจรที่ใช้ทดลอง ทั้งบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการแอฟ Blynk
2. เปิดแอฟ Blynk ในมือถือแตะสร้างโปรเจคใหม่


3. ดำเนินการกำหนดคุณสมบัติโปรเจค
    (1) ตั้งชื่อโปรเจค
    (2) เลือกบอร์ดที่ใช้ควบคุม
    (3) คลิกสร้าง


4. รหัส Token ของโปรเจคจะถูกส่งเข้าไปยังอีเมล์ (เป็นอีเมล์ที่ลงเบียนไว้ตอนล็อกอินแอฟ)


5. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน


6. แตะเลือกวิตเจ็ทที่เป็นแถบเลื่อน ในที่นี้เลือกแบบแนวนอน (ผู้ใช้งานสามารถเลือกแบบแนวตั้งได้)


7. จะได้แถบเลื่อนบนหน้าพื้นที่ใช้งาน ทำการแตะเพื่อตั้งค่า


8. ทำการตั้งค่า
    (1) ตั้งชื่อแถบเลื่อน
    (2) เลือกสี
    (3) เลือกขาพอร์ตที่ใช้ควบคุม


9. ทำการเลือกขา ซึ่งเป็นขาบอร์ดที่เชื่อม LED ไว้
    (1) เลือกชนิดขาเป็น Digital (เป็นขาจริงของบอร์ด)
    (2) เลือกขาพอร์ตที่ใช้ควบคุม ที่ต่อใช้งานในวงจรจริงไว้
    (3) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK


10. ผลการตั้งค่าของขาควบคุมสีแดง 


11. ทำการเพิ่มวิตเจ็ทแถบเลื่อน เพื่อใช้ควบคุมสีเขียว แล้วทำการตั้งค่า


12. ทำการเพิ่มวิตเจ็ทแถบเลื่อน เพื่อใช้ควบคุมสีน้ำเงิน แล้วทำการตั้งค่า


13. ผลการเพิ่มวิตเจ็ทควบคุม LED RGB ครบทั้ง 3 สี


ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
14. เปิดอีเมล์ทำการคัดลอกรหัส Token โปรเจค


15. เขียนโค้ดควบคุม
    (1) วางรหัส Token ที่คัดลอกมาจากอีเมล์
    (2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


โค้ดโปรแกรม
โค๊ด: [Select]
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "6eed7b24096e46a5b3fa120c54fde668";
char ssid[] = "wifi name";
char pass[] = "wifi password";
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
}
void loop()
{
  Blynk.run();
}

16. ทำการอัพโหลดลงบอร์ด เปิดหน้าต่าง Serial monitor จะได้ดังรูป แต่ถ้าหากยังนิ่งให้ทดลองกดสวิตช์รีเซตที่บอร์ด


ทดสอบการทำงาน
17. กลับไปที่แอฟ Blynk ทำการแตะตัวสามเหลี่ยมเพื่อรันแอฟ


18. ทดสอบการเลื่อนแถบเลื่อนของแต่ละตัว


19. ตรวจสอบผลการทำงานที่บอร์ดจริง
8
งานครั้งที่ 30 [iot#5 Blynk] การแสดงความชื้น/อุณหภูมิด้วยแอฟ Blynk
ก่อนที่จะแสดงค่าความชื้นและอุณภูมิด้วยแอฟ Blynk ได้ตัวบอร์ดต้องอ่านค่าจากตัวเซนเซอร์ให้ได้ก่อน ตัวเซนเซอร์ที่ใช้ในการทดลองนี้ใช้เบอร์ DHT11 ซึ่งขั้นตอนการเขียนโค้ดคำสั่งเพื่ออ่านค่าได้ทดลองผ่านมาแล้วในใบงานที่ 8 (DHT22 กับ DHT11 ใช้โค้ดตัวเดียวกันเพียงแต่แก้การกำหนดค่าเพียงคำสั่งเดียว) หากยังไม่ได้ติดตั้งไลบรารี่สำหรับเซนเซอร์ DHT ให้กลับไปศึกษาใน เขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นด้วย DHT22 เบื้องต้น สำหรับงานครั้งนี้มีขั้นตอนการดำเนินการทดลองเป็นดังนี้

[หมายเหตุ] จะใช้งานแอฟและไลบรารี่ Blynk ทั้งในสมาร์ตโฟนและโปรแกรม ArduinoIDE ได้ จะต้องดำเนินติดตั้งก่อน สามารถศึกษาวิธีการจากงานครั้งที่ 26 ได้ที่ งานครั้งที่ 26 [iot Blynk #1] เริ่มการใช้งาน Blynk

1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการแอฟ Blynk
2. เปิดแอฟ Blynk ในมือถือแตะสร้างโปรเจคใหม่


3. ดำเนินการกำหนดคุณสมบัติโปรเจค
    (1) ตั้งชื่อโปรเจค
    (2) เลือกบอร์ดที่ใช้ควบคุม
    (3) คลิกสร้าง


4. รหัส Token ของโปรเจคจะถูกส่งเข้าไปยังอีเมล์ (เป็นอีเมล์ที่ลงเบียนไว้ตอนล็อกอินแอฟ)


5. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน


6. แตะเลือกวิตเจทเกจ


7. จะได้เกจอยู่บนหน้าพื้นที่ใช้งาน ทำการแตะที่ตัวเกจเพื่อตั้งค่า


8. ทำการตั้งค่า
    (1) ตั้งชื่อเกจ (สามารถตั้งชื่อเป็นภาษาไทยได้ เช่น "ความชื้น")
    (2) เลือกขาพอร์ตที่ใช้อ่านค่า


9. ทำการเลือกขา ซึ่งเป็นขาบอร์ดที่เชื่อม LED ไว้
    (1) เลือกขาเสมือน (มีลักษณะเป็นตัวแปรรับค่า)
    (2) เลือกขาที่ใช้รับค่า (เป็นตัวแปรขาที่ถูกส่งค่ามาจากบอร์ด)
    (3) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK


10. ตั้งค่าเกจ (เพิ่มเติม)
    (1) ตั้งตัวเลขสูงสุดของสเกล (ความชื้นใช้ 100 เนื่องจากเป็นค่าเปอร์เซ็น)
    (2) กำหนดรูปแบบแสดงผล


11. ทำการเพิ่มเกจอีก 1 ตัวพร้อมตั้งค่าเกจ
    (1) ตั้งชื่อ
    (2) เลือกขาที่ใช้รับค่า (เป็นตัวแปรขาที่ถูกส่งค่ามาจากบอร์ด)
    (3) ตั้งตัวเลขสูงสุดของสเกล (ความอุณภูมิในที่นี้ใช้ 50 )
    (4) กำหนดรูปแบบแสดงผล


12. รูปแบบที่ใช้กำหนดการแสดงผลโดยให้แสดงผลที่มีจำนวนหลักทศนิยมตามต้องการดังนี้


ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
13. ฟังชั่นเปิดใช้งาน BlynkTimer ซึ่งทำหน้าที่คล้าย ๆ interrupt timer หมายถึงเมื่อครบเวลาตามที่กำหนดไว้โปรแกรมหลักจะกระโดดไปทำงานในโปรแกรมตอบสนองที่กำหนดไว้
    (1) ชื่อออฟเจคไว้อ้างอิง (ผู้ใช้งานตั้งชื่อเองในที่นี้ตั้งคำว่า "timer")
    (2) กำหนดค่าช่วงเวลาที่ให้บอร์ดกระโดดไปทำงานในโปรแกรมตอบสนอง ในที่นี้กำหนดเป็น 2000L หมายถึงให้บอร์ดมาทำงานในโปรแกรมตอบสนองทุก ๆ 2 วินาที
    (3) ชื่อโปรแกรมตอบสนอง (ฟังก์ชั่นย่อย)  ในที่นี้ตั้งชื่อว่า sendSensor ซึ่งบอร์ดจะวนมาทำงานฟังก์ชั่นชื่อนี้ทุก ๆ เวลาที่กำหนด


14. ฟังก์ชั่นการส่งค่าความชื้นและอุณภูมิไปยังแอฟ Blynk
    (-) ส่งค่าความชื้นจากค่าในตัวแปร h ไปยังตัวแปรขาเสมือน V5
    (-) ส่งค่าอุณหภูมิจากค่าในตัวแปร t ไปยังตัวแปรขาเสมือน V6


15. เปิดอีเมล์ทำการคัดลอกรหัส Token โปรเจค


16. เขียนโค้ดควบคุม
    (1) วางรหัส Token ที่คัดลอกมาจากอีเมล์
    (2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")
    (4) ส่วนของโปรแกรมตอบสนอง BlynkTimer เขียนโค้ดเพื่อส่งสถานะในทุก ๆ 2 วินาที
    (5) อ่านค่าความชื้นและอุณหภูมิ
    (6) หากการอ่านล้มเหลวให้กลับไปอ่านค่าใหม่
    (7) หากอ่านค่าได้ให้ส่งค่าไปยังตัวแปรสำหรับส่งค่า


โค้ดโปรแกรม
โค๊ด: [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;
timer.setInterval(2000L, sendSensor);
#define DHTPIN  D1        /* pin of sensor connected to */
#define DHTTYPE DHT11     /* DHT22 if useDHT22 */
DHT dht(DHTPIN, DHTTYPE);
float h;                  /* keep Humidity */
float t;                  /* keep Temperature */
void sendSensor()
{
  Blynk.virtualWrite(V5, h);
  Blynk.virtualWrite(V6, t);
}
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  dht.begin();
  timer.setInterval(2000L, sendSensor);
}
void loop()
{
  Blynk.run();   /* Initiates Blynk */
  timer.run();    /* run BlynkTimer */
  float newh = dht.readHumidity();
  float newt = dht.readTemperature();
  if (isnan(newh) || isnan(newt)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  h=newh;
  t=newt;
  Serial.print("Humidity is: ");Serial.println(h,1);
  Serial.print("Temperature is: ");Serial.println(t,1);
  delay(2000);
}


17. ทำการอัพโหลดลงบอร์ด เปิดหน้าต่าง Serial monitor จะได้ดังรูป


ทดสอบการทำงาน
18. กลับไปที่แอฟ Blynk ทำการแตะตัวสามเหลี่ยมเพื่อรันแอฟ


19. ผลของการรันที่แอฟ Blynk


20. การเชื่อมต่อบอร์ดทดลอง
9
งานครั้งที่ 29 [iot#4 Blynk] การแสดงสถานะ LED บนแอฟ Blynk จากบอร์ดทดลอง
การส่งค่าสถานะ LED ที่ต่อไว้กับบอร์ดจะต้องเขียนโค้ดเพิ่มเติมว่าผู้ใช้งานต้องการส่งค่าใดให้กับแอฟบ้าง รายละเอียดของการเขียนโค้ดจะกล่าวในส่วนของการเขียนโค้ดควบคุมต่อไป ขั้นตอนการดำเนินการทดลองเป็นดังนี้
[หมายเหตุ] จะใช้งานแอฟและไลบรารี่ Blynk ทั้งในสมาร์ตโฟนและโปรแกรม ArduinoIDE ได้ จะต้องดำเนินติดตั้งก่อน สามารถศึกษาวิธีการจากงานครั้งที่ 26 ได้ที่ งานครั้งที่ 26 [iot Blynk #1] เริ่มการใช้งาน Blynk

1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini


ส่วนจัดการแอฟ Blynk
2. เปิดแอฟ Blynk ในมือถือแตะสร้างโปรเจคใหม่


3. ดำเนินการกำหนดคุณสมบัติโปรเจค
    (1) ตั้งชื่อโปรเจค
    (2) เลือกบอร์ดที่ใช้ควบคุม
    (3) คลิกสร้าง


4. รหัส Token ของโปรเจคจะถูกส่งเข้าไปยังอีเมล์ (เป็นอีเมล์ที่ลงเบียนไว้ตอนล็อกอินแอฟ)


5. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน


6. แตะเลือกวิตเจท LED


7. จะได้ปุ่มหน้าพื้นที่ใช้งาน ทำการแตะที่ตัว LED เพื่อตั้งค่า


8. ทำการตั้งค่า
    (1) ตั้งชื่อ LED (สามารถตั้งชื่อเป็นภาษาไทยได้ เช่น "ไฟหน้าบ้าน")
    (2) เลือกขาพอร์ตที่ใช้ควบคุม


9. ทำการเลือกขา ซึ่งเป็นขาบอร์ดที่เชื่อม LED ไว้
    (1) เลือกขาพอร์ตที่ใช้รับค่า ซึ่งเป็นขาเสมือน (มีลักษณะเป็นตัวแปรรับค่า)
    (2) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK


ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
10. ฟังชั่นเปิดใช้งาน BlynkTimer ซึ่งทำหน้าที่คล้าย ๆ interrupt timer หมายถึงเมื่อครบเวลาตามที่กำหนดไว้โปรแกรมหลักจะกระโดดไปทำงานในโปรแกรมตอบสนองที่กำหนดไว้
    (1) ชื่อออฟเจคไว้อ้างอิง (ผู้ใช้งานตั้งชื่อเองในที่นี้ตั้งคำว่า "timer")
    (2) กำหนดค่าช่วงเวลาที่ให้บอร์ดกระโดดไปทำงานในโปรแกรมตอบสนอง ในที่นี้กำหนดเป็น 2000L หมายถึงให้บอร์ดมาทำงานในโปรแกรมตอบสนองทุก ๆ 2 วินาที
    (3) ชื่อโปรแกรมตอบสนอง (ฟังก์ชั่นย่อย)  ในที่นี้ตั้งชื่อว่า timerEvent ซึ่งบอร์ดจะวนมาทำงานฟังก์ชั่นชื่อนี้ทุก ๆ เวลาที่กำหนด


11. ฟังก์ชั่นการส่งค่า LED ไปยังแอฟ Blynk
    (1) ชื่อตัวแปรและขาเสมือนที่ใช้ส่งค่า
    (2) ฟังก์ชั่นการส่งค่าติด/ดับของ LED
    (3) ฟังก์ชั่นส่งค่าการติดของ LED ชนิดกำหนดความสว่าง


12. เปิดอีเมล์ทำการคัดลอกรหัส Token โปรเจค


13. เขียนโค้ดควบคุม
    (1) วางรหัส Token ที่คัดลอกมาจากอีเมล์
    (2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")
    (4) ส่วนของโปรแกรมตอบสนอง BlynkTimer เขียนโค้ดเพื่อส่งสถานะในทุก ๆ 2 วินาที
    (5) ส่วนของฟังก์ชั่นสั่งให้ LED ติด/ดับ ตามการกดสวิตช์ )
*แอฟ Blynk จะแสดงผลทุก ๆ 2 วินาที แต่ที่บอร์ดทดลอง LED จะติด/ดับตามการกดสวิตช์ทันทีทันใด


โค้ดโปรแกรม
โค๊ด: [Select]
#define BLYNK_PRINT Serial
#define LED D1
#define SW1 D3
#define SW2 D4
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "850bbb64791348858c06c620e94be7e0";
char ssid[] = "wifi name";
char pass[] = "wifi password";
BlynkTimer timer;
WidgetLED led(V1);
void timerEvent()
{
  if(digitalRead(LED)==HIGH)
    led.on();
  else
    led.off();
}
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(2000L, timerEvent);
  pinMode(LED,OUTPUT);
  pinMode(SW1,INPUT_PULLUP);
  pinMode(SW2,INPUT_PULLUP);   
}
void loop()
{
  Blynk.run();
  timer.run(); // run BlynkTimer
  if(digitalRead(SW1)==LOW)
    digitalWrite(LED,HIGH);
  else if (digitalRead(SW2)==LOW)
    digitalWrite(LED,LOW);
}

14. ทำการอัพโหลดลงบอร์ด เปิดหน้าต่าง Serial monitor จะได้ดังรูป แต่ถ้าหากยังนิ่งให้ทดลองกดสวิตช์รีเซตที่บอร์ด


ทดสอบการทำงาน
15. กลับไปที่แอฟ Blynk ทำการแตะตัวสามเหลี่ยมเพื่อรันแอฟ


16. ทดสอบการกดสวิตช์ที่บอร์ดทดลอง สังเกตการติดดับของ LED ที่บอร์ดทดลองและที่แอฟ
-ตัวอย่างผลการรันเมื่อ LED ที่บอร์ดติดสว่าง

-ตัวอย่างผลการรันเมื่อ LED ที่บอร์ดดับ


17. การเชื่อมต่อบอร์ดทดลอง
10
งานครั้งที่ 28 [iot#3 Blynk] การอ่านค่าจากพอร์ตแอนะลอก A0
การอ่านค่าจากพอร์ตแอนะลอก A0 ในกรณีที่ผู้ใช้งานเลือกใช้บอร์ดที่มีชิพหลักเป็น ESP8266 ไม่ว่าจะเป็น ESP8266, NodeMCU, WeMos จะมีพอร์ตที่ใช้งานเพียง 1 ช่องสัญญาณเท่านั้นคือ A0 สำหรับโค้ดที่เขียนลงในตัวบอร์ดไม่ต้องเขียนอะไรเพิ่มเติม การอ่านค่าจากพอร์ตจะถูกสั่งมาจากแอฟ Blynk ขั้นตอนการดำเนินการทดลองเป็นดังนี้
[หมายเหตุ] จะใช้งานแอฟและไลบรารี่ Blynk ทั้งในสมาร์ตโฟนและโปรแกรม ArduinoIDE ได้ จะต้องดำเนินติดตั้งก่อน สามารถศึกษาวิธีการจากงานครั้งที่ 26 ได้ที่ งานครั้งที่ 26 [iot Blynk #1] เริ่มการใช้งาน Blynk

1. วงจรที่ใช้ทดลองกรณีที่ใช้บอร์ด NodeMCU และ WeMOS D1 mini บอร์ดทั้ง 2 ชนิดจะรับแรงดันสูงสุด 3.2V เข้ามายังพอร์ต A0 เนื่องจากบนบอร์ดใช้ตัวต้านทานแบ่งแรงดันไว้ (รายละเอียดในงานครั้งที่ 6) แต่สำหรับ ESP8266 จะรับได้เพียง 1V


ส่วนจัดการแอฟ Blynk
2. เปิดแอฟ Blynk ในมือถือแตะสร้างโปรเจคใหม่


3. ดำเนินการกำหนดคุณสมบัติโปรเจค
    (1) ตั้งชื่อโปรเจค
    (2) เลือกบอร์ดที่ใช้ควบคุม
    (3) คลิกสร้าง


4. รหัส Token ของโปรเจคจะถูกส่งเข้าไปยังอีเมล์ (เป็นอีเมล์ที่ลงเบียนไว้ตอนล็อกอินแอฟ)


5. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน


6. แตะเลือกเกจวัดค่า


7. จะได้เกจปรากฏที่หน้าพื้นที่ใช้งาน ทำการแตะเพื่อตั้งค่า


8. ทำการตั้งค่า
    (1) ตั้งชื่อเกจ
    (2) เลือกขาพอร์ตที่ใช้ควบคุม


9. ทำการเลือกช่องทางอ่านค่า ในที่นี้จะอ่านค่าจากพอร์ตแอนะลอก A0 ดำเนินการดังนี้
    (1) เลือกชนิดขาเป็น Analog (เป็นขาจริงของบอร์ด)
    (2) เลือกขาพอร์ต A0
    (3) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK


10. แตะที่เครื่องหมายบวกเพื่อเลือกวิตเจ็ทใช้งาน สามารถเพิ่มวิตเจ็ทแสดงผลได้เท่าที่ค่าพลังงานยังมีพอ


11. แตะที่กราฟเพื่อตั้งค่า


12. ทำการตั้งค่า
    (1) ตั้งชื่อกราฟ
    (2) เลือกขาพอร์ตที่ใช้ควบคุม


13. ทำการเลือกช่องทางอ่านค่า ในที่นี้จะอ่านค่าจากพอร์ตแอนะลอก A0 ดำเนินการดังนี้
    (1) เลือกชนิดขาเป็น Analog (เป็นขาจริงของบอร์ด)
    (2) เลือกขาพอร์ต A0
    (3) เมื่อเลือกตรงกับค่าที่ใช้งานจริงที่บอร์ดให้แตะที่ OK


ส่วนจัดการโค้ดโปรแกรมควบคุมบอร์ด
14. เปิดอีเมล์ทำการคัดลอกรหัส Token โปรเจค


15. เขียนโค้ดควบคุม
    (1) วางรหัส Token ที่คัดลอกมาจากอีเมล์
    (2) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
    (3) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")


โค้ดโปรแกรม
โค๊ด: [Select]
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "a3480a1576344837b109ddff560986c4";
char ssid[] = "wifi name";
char pass[] = "wifi password";
void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
}
void loop()
{
  Blynk.run();
}

16. ทำการอัพโหลดลงบอร์ด เปิดหน้าต่าง Serial monitor จะได้ดังรูป แต่ถ้าหากยังนิ่งให้ทดลองกดสวิตช์รีเซตที่บอร์ด


ทดสอบการทำงาน
17. กลับไปที่แอฟ Blynk ทำการแตะตัวสามเหลี่ยมเพื่อรันแอฟ


18. ทดลองปรับเปลี่ยนค่าสัญญาณแอนะลอกที่บอร์ดทดลองแล้วดูผลการรัน


19. บอร์ดทดลอง
หน้า: [1] 2 3 ... 10