งานครั้งที่ 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 (http://www.praphas.com/forum/index.php?topic=344.0)
คอนเซ็ปต์หลักของงาน
เซิร์ฟเวอร์ส่งค่าตัวเลขจากการใช้งานวิตเจ็ตบนหน้าเวปไซต์เข้ามายังบอร์ดเพื่อควบคุมความสว่างของ LED
[ขั้นตอนการดำเนินการ]
-สร้างช่องใช้งาน (รายละเอียดของขั้นตอนการสร้างให้ดูจากงานครั้งที่ 33)
-นำค่า Key มาเขียนโค้ดเพื่อสื่อสารระหว่างบอร์ดกับเซิร์ฟเวอร์
-ออกแบบหน้าเวปสำหรับใช้สื่อสารกับบอร์ด
-เขียนโค้ดเพื่อใช้งาน
ซึ่งรายละเอียดเป็นดังนี้
1. วงจรที่ใช้ทดลอง ทั้งที่เป็นบอร์ด NodeMCU และ WeMOS D1 mini
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/1.png)
ส่วนจัดการเวปไซต์
2. ทำการ Log in
(1) จะได้ User ID ซึ่งเป็นตัวเลข 6 หลักโดยจะนำค่านี้ไปใช้ในโค้ดโปรแกรม
(2) คลิกที่ DASHBOARD เพื่อสร้างหน้าต่างการสื่อสาร
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/2.png)
3. คลิกที่ My IoT Garage เพื่อสร้างช่องทางการสื่อสาร (Thing)
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/3.png)
4. คัดลอก key ของ Thing ที่ต้องการสื่อสารเพื่อในไปใส่ในโค้ดโปรแกรม (หากยังไม่ได้สร้าง Thing ให้กลับไปดูขั้นตอนการสร้างในงานครั้งที่ 33)
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/4.png)
5. คลิกกลับไปยังหน้า DASHBOARD เพื่อออกแบบหน้าต่างการเชื่อมต่อ
(1) คลิกเลือกรายการอุปกรณ์เชื่อมต่อ (Think) สำหรับจะออกแบบหน้าต่าง
(2) คลิกที่ Edit layout เพื่อสร้าง/แก้ไข หน้าต่างการเชื่อมต่อ
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/5.png)
6. งานครั้งนี้เป็นการควบคุมความสว่างของ LED โดยใช้แถบเลื่อนส่งค่าไปยังบอร์ดผ่านหน้าเวปเพจ
(1) คลิกเลือกสไลเดอร์
(2) คลิก set เพื่อกำหนดค่า
(3) เลือกช่องทางการสื่อสาร (ปัจจุบันสามารถควบคุมได้ 4 ช่องพอร์ต) แล้วคลิก save
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/6.png)
ส่วนจัดการโค้ด
7. เปิดโปรแกรมตัวอย่างที่ใช้งานสไลเดอร์
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/7.png)
8. แก้ค่าต่าง ๆ ของโค้ดโปรแกรมดังนี้
(1) userid ที่คัดลอกมาจากเวปไซต์
(2) key ของ Thing ที่คัดลอกมาจากเวปไซต์
(3) ใส่ชื่อไวไฟที่บอร์ดควบคุมใช้เชื่อมต่อ
(4) ใส่พาสเวิร์ดไวไฟ (ในกรณีที่ไวไฟมีการใช้รหัสผ่าน แต่ถ้าไม่มีให้ใช้ "")
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/8.png)
9. ปรับปรุงโค้ดโปรแกรมเพื่อให้สามารถควบคุมความสว่างของ LED ได้
(1) ฟังก์ชั่นอ่านค่าจากสไลเดอร์ที่ส่งมาจากเซิร์ฟเวอร์ (งานครั้งนี้กำหนดการส่งค่ามาจาก port1)
(2) ทำการปรับย่านตัวเลขที่รับมาจากสไลเดอร์ที่มีค่าระหว่าง 0-100 ไปเป็น 0-1023 เพื่อควบคุมความสว่างของ LED
(3) ฟังก์ชั่นควบคุมความสว่างของ LED โดยส่งค่าเป็น PWM ออกทางของพอร์ตที่ใช้เชื่อมต่อกับ LED
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/9.png)
10. ความเชื่อมโยงระหว่างค่าที่กำหนดใน DASHBOARD กับค่าของฟังก์ชั่นการใช้งานในโค้ดโปรแกรมเป็นดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/9a.png)
โค้ดโปรแกรม
#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 ทดสอบโดยการเลื่อนสไลเดอร์
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/10.png)
12. สังเกตผลความสว่างของ LED และค่าที่แสดงในหน้าต่าง Serial monitor
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/11.png)
13. ทดลองเพิ่มจำนวน LED ที่ใช้งาน
14. วงจรเชื่อมต่อ
(http://www.praphas.com/PhotoForum/iot/Lab-34-iottweetPWM/18.jpg)