ผู้เขียน หัวข้อ: งานครั้งที่ 34 [iot#9 iottweet] ควบคุมความสว่าง LED(PWM) ด้วย iottweet  (อ่าน 4266 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
งานครั้งที่ 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. วงจรเชื่อมต่อ
« แก้ไขครั้งสุดท้าย: กุมภาพันธ์ 18, 2018, 09:58:21 AM โดย admin »