บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ กุมภาพันธ์ 11, 2018, 05:34:55 AM

หัวข้อ: งานครั้งที่ 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 (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)

โค้ดโปรแกรม
โค๊ด: [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 ทดสอบโดยการเลื่อนสไลเดอร์
(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)