วันอาทิตย์ที่ 23 ตุลาคม พ.ศ. 2559

เริ่มต้นใช้งาน 7-Segment (1 Digit)

เริ่มต้นใช้งาน 7-Segment (1 Digit)



              หลอดแสดงผล LED 7-Segment เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ใช้ในการแสดงผลเช่นเดียวกับหลอดแสดงผล LED ทั่วไป แต่ต่างตรงที่หลอดแสดงผล LED 7 ส่วน เป็นการนำเอาหลอดแสดงผล LED จำนวน 7 ตัวมาต่อกันเป็นรูปตัวเลข เพื่อนำมาแสดงผลเป็นตัวเลข 0 ถึง 9 โดยในบทความนี้จะพูดถึงการเขียนโปรแกรมควบคุมการทำงานของหลอดแสดงผล LED 7 ส่วน ด้วย Arduino UNO R3

          1. รู้จักกับโครงสร้างและการทำงานของ 7-Segment


   
        2. ต่อวงจรตามภาพ




        3. จะได้ผังวงจร ดังนี้

  



        4. เขียนโปรแกรมแสดงผลตัวเลข (ตัวอย่าง โปรแกรมแสดงผลเลข 5)


       5. ตัวอย่างโปรแกรม นับ 1 - 10






***************************************************
Montien Ngamkaew
***************************************************

วันพุธที่ 19 ตุลาคม พ.ศ. 2559

สั่งงาน Sonoff ด้วยเสียง ผ่าน App "ฟ้าใส เลขาส่วนตัว"


สั่งงาน Sonoff ด้วยเสียง ผ่าน App "ฟ้าใส เลขาส่วนตัว"



         Sonoff นอกจาก จะสามารถเปิด-ปิดไฟ ผ่านมือถือได้แล้ว สำหรับนัก Modify ทั้งหลายมักจะนำเจ้า Sonoff ไปดัดแปลงทำอย่างอื่นได้อีกหลากหลาย ถือว่าเป็นอุปกรณ์เล็กๆ ราคาเบาๆ ที่คุ้มค่า คุ้มราคา ตัวนึงเลยทีเดียว

           สำหรับวันนี้เราจะมาแนะนำวิธีการ สั่งงาน Sonoff ด้วยเสียง ผ่าน แอพที่ชื่อว่า ฟ้าใส "ฟ้าใส" คือแอพ ของคนไทย พูดง่ายๆ คือ Siri คนไทย นั่นเอง ในบทความนี้จะพูดถึงการควบคุม Sonoff ผ่าน Anto Cloud แล้วนำคำสั่งไปใช้งานผ่านแอพฟ้าใส อีกที เพื่อเป็นการไม่เสียเวลา มาเริ่มกันเลยดีกว่าครับ

          1. ก่อนอื่น เข้าไปสมัครสมาชิก Anto.io กันก่อนครับ โดยเลือกที่ Sign Up จากนั้น กรอกรายละเอียดให้เรียบร้อย แล้วดลือก Create a new account (จำ Username ที่เราตั้งไว้ด้วยนะครับ)




            กรอกหมายเลขโทรศัพท์  และจุดประสงค์ในการใช้งาน แล้วกด Update Account and Continue



              2. Login เพื่อเข้าใช้งาน Anto.io จากนั้นเข้าไปที่เมนู Thing ที่แถบเมนูด้านซ้ายมือ  จากนั้นเลือก Create new thing


             จากนั้นกรอกข้อมูลลงไป ดังนี้
                      NAME = ชื่องานที่เราจะสร้าง (ภาษาอังกฤษ)
                      Description = คำอธิบาย
                      Hardware = ใส่เป็น ESP8266
             แล้วกด  +Add New




             3. เมื่อสร้าง Thing เสร็จแล้ว ต่อไปเป็นการสร้าง Channel เพื่อใช้ควบคุม Input/Output ดดยเข้าไปที่ รูปแว่นขยายสีน้ำเงิน 

            คลิก +Create New Channel เพื่อ สร้าง Channel

            กรอกข้อมูล Channel ให้เรียบร้อย จากนั้นกด +Add new


             4. สร้าง Key เพื่อนำไปใช้งาน โดยไปที่ เมนู Key แล้วเลือก +Add New Key จากนั้นเลือก Permission ให้ LED1 โดยติ๊กเครื่องหมายถูกที่ Read และ Update ดังรูป แล้วคลิกที่ +Add New


            จะได้ Key สำหรับนำไปใช้ในการเขียนโปรแกรมพเื่อควบคุม ดังรูป
            

             5. เมื่อทำการตั้งค่าบน Anto.io แล้ว ต่อไปจะเป็นการ เขียนโปรแกรมลงบน Sonoff (คำเตือน : เมื่อเขียนลงไปแล้ว จะไม่สามารถใช้งาน Software เก่าได้นะครับ) โดยต่อ Sonoff เข้ากับ Bootloader ดังรูป


ขอบคุณภาพจาก http://tridenttd-iot.blogspot.com/2016/03/sonoff-hack-pin-upload.html

            6. ติดตั้ง Library Anto (Download คลิก) จากนั้นเขียนโปรแกรมบน Arduino IDE ดังตัวอย่าง

                  แก้ Code ต่อไปนี้
                             1. บรรทัดที่ 4 >> user = Username ที่ตั้งไว้ จากข้อ 1
                             2. บรรทัดที่ 5 >> key = key ที่ได้จากข้อ 4
                             3. บรรทัดที่ 8 >> thing = ชื่อ thing ที่ได้จากข้อ 2
                             4. บรรทัดที่ 19 >> ssid = ชื่อ Wifi ที่ต้องการเชื่อมต่อ
                                 บรรทัดที่ 20 >> pwd = รหัสผ่าน Wifi
                             5. บรรทัดที่ 101 และ 104 >> เปลี่ยนเป็น ขา 12


             จากทำการ Upload โปรแกรม ลงบน Sonoff ได้เลยครับ (อย่าลืมกดปุ่ม Reset ก่อนเสียบ USB นะครับ)

            7. ทดลองเปิด-ปิดไฟ ผ่านหน้าเว็บ Anto.io โดยเ้าไปที่ เมนุ Thing แล้วไปที่ Channel ที่เราสร้างไว้


             ถ้าเปิด-ปิด ได้ ให้ข้ามไปข้อ 8 ได้เลย แต่ถ้ายังไม่ได้ให้กลับไปเช็คใหม่ อีกรอบครับ

             8. ดาวน์โหลดแอพ ฟ้าใส จาก Play Store จากนั้นเปิด แอพ ขึ้นมา แล้วทำการสมัครสมาชิกให้เรียบร้อยครับ


               พูดคำสั่ง "เชื่อมต่ออุปกรณ์ผ่านเน็ต"


              พูดคำสั่ง "เพิ่มคำสั่ง"


             พูดคำสั่ง "ส่งค่าผ่าน URL"


            จากนั้น พิมพ์คำสั่งที่ต้องการ เช่น ต้องการใช้คำสั่ง เปิดไฟ ให้พิมพ์ว่า

             เปิดไฟ ส่งค่า https://api.anto.io/channel/set/key/thing/channel/ค่าที่ต้องการส่ง

            จากตัวอย่างที่ผ่านมา จะได้

       เปิดไฟ ส่งค่า https://api.anto.io/channel/set/mBGoLWI6PYxxxx/Sonoff/LED1/1

           เช่นเดียวกันกับคำสั่งปิดไฟ ครับ จะได้

      ปิดไฟ ส่งค่า https://api.anto.io/channel/set/mBGoLWI6PYxxxx/Sonoff/LED1/0

            จากนั้นทดลอง ใช้คำสั่ง เปิด-ปิด ไฟ ผ่านฟ้าใสดูครับ (ดูวิธีการใช้งานได้จาก ในคลิปด้านล่างครับ)


วันอาทิตย์ที่ 28 สิงหาคม พ.ศ. 2559

ตอนที่ 1 เขียนโปรแกรมให้ยืดหยุ่นด้วย Macro (#define)


ตอนที่ 1 เขียนโปรแกรมให้ยืดหยุ่นด้วย Macro (#define)



         preprocessor คือพวกชุดคำสั่งที่ขึ้นต้นด้วย ‘#’ เช่น #include, #define เป็นชุดคำสั่งที่ compiler จะทำการแปลข้อความก่อนที่จะ compile ชุดคำสั่งจริง (เช่นการใช้ #include ไฟล์ ก็คือการนำเอา source code ของไฟล์นั้นมาแปะไว้ตรงบรรทัดนั้น ก่อนจะทำการ compile) macro ก็เป็น preprocessor ตัวหนึ่งที่เรียกใช้ด้วย #define ใช้ในการแทนที่ (เหมือนการใช้ replace ใน Microsoft Word) โดย macro นี้ สามารถนำมาใช้ได้ 2 แบบ คือแบบ object-like macro กับ function-like macro


object-like macro ก็คือ macro ที่ใช้แทนที่คำ ตัวอย่างเช่น

#define BUF_SIZE 128 

        เป็นการกำหนดขนาดของ buffer โดยคำว่า BUF_SIZE ใน code จะถูกจะแทนที่ด้วยคำว่า 128 ก่อนที่จะ compile

     ดังนั้น  ถ้าเราประกาศตัวแปรว่า unsigned char buf[BUZ_SIZE] 
คำว่า BUF_SIZE ก็จะถูกแทนที่ด้วย 128 ดังนั้นตอนที่ทำการ compile ตัว compiler จะเห็นเป็น
unsigned char buf[128]

**หมายเหตุ โดยทั่วไปการ define แบบนี้ จะใช้คำที่เขียนด้วยตัวพิมพ์ใหญ่ เพื่อให้มีความแตกต่างจากตัวแปร

function-like macro ก็คือ macro ที่ใช้แทนที่ แต่จะมีลักษณะเหมือนกับ function ตัวอย่างเช่น

#define average(a,b) ((a+b)/2)

ถ้าใช้เขียน code ว่า

int avg = average(x1,x2)

ตอนที่ทำการ compile ตัว compiler จะเห็นเป็น

int avg = ((x1+x2)/2)



           บางคนอาจจะสงสัยว่า แล้วมันต่างกับ function ยังไง สิ่งที่ต่างกันก็คือ การใช้ function ต้องมีการกระโดดเข้าไปทำงาน แล้วจึง return กลับออกมาจึงใช้เวลามากกว่าแต่ก็จะประหยัด code กว่า ส่วนการใช้ macro แบบนี้จะเห็นว่าจะใช้การแทนที่ทุกๆครั้งที่เจอคำว่า average ดังนั้นเมื่อใช้งานใน code แล้วก็จะทำให้ code ยาวขึ้นแต่จะทำงานได้เร็วกว่า

           นอกจากนี้ เราสามารถ define คำขึ้นมาเฉยๆ แล้วเขียน code เพื่อตรวจสอบว่ามีการ define คำนี้หรือไม่ก็ได้ เช่น

#define DEBUG_MODE
#ifdef DEBUG_MODE
… //code ส่วนที่ 1
#else
… //code ส่วนที่ 2
#endif

           ตัวอย่างการใช้งานในที่นี้คือ ถ้ามีการ define คำว่า DEBUG_MODE ไว้ ก็จะให้ทำงานตามที่เขียนใน code ส่วนที่ 1 แต่ถ้าไม่มีการ define ไว้ ก็จะทำงานใน code ส่วนที่ 2 หรือในทางตรงกันข้าม ถ้าเราไม่ทำการ #define DEBUG_MODE ไว้อาจจะใช้ #ifndef แทนเพื่อตรวจสอบเงื่อนไขที่จะเป็นจริงเมื่อไม่มีการ define
           จากตัวอย่างนี้ ถ้าถามว่าต่างจากการสร้างตัวแปร debug_mode ขึ้นมาแล้วใช้ if (debug_mode) ยังไง ก็คือถ้าเราใช้ #ifdef DEBUG_MODE แล้ว define DEBUG_MODE ไว้ compiler ก็จะ compile เฉพาะ code ส่วนที่ 1 และจะตัดส่วนที่ 2 ออกไปเลย ทำให้ได้ code ที่สั้นกว่า แต่ถ้าเราใช้ debug_mode เป็นตัวแปร compiler ก็จะ compile code ทั้งหมด ดังนั้นวิธีการเลือกว่าจะใช้แบบไหน จึงอยู่ที่ว่าใน run-time (คือในขณะที่โปรแกรมทำงาน) เราจะมีการปิดเปิดการ debug หรือไม่ ถ้าไม่มีเลย การใช้ macro ก็จะประหยัดพื้นที่ของ code มากกว่า



สรุปประโยชน์ของการใช้ macro (#define)

     1. ทำให้เราเข้าใจ code ได้ง่ายขึ้น ถ้าเราเขียนตัวเลขใน code เฉยๆ วันหลังเราอาจจะจำไม่ได้ว่าตัวเลขพวกนั้นมาจากไหน ทำให้เกิด bug ได้
     2. แก้ไขเปลี่ยนแปลงในภายหลังได้ง่าย อย่างตัวอย่างที่เรากำหนด BUF_SIZE ถ้าเราต้องการจะเปลี่ยน เราก็ไม่ต้องไปตามเปลี่ยนค่า 128 เป็นค่าใหม่ทุกที่ ทั้งที่ตัวเลข 128 บางที่อาจจะไม่เกี่ยวข้องกับขนาดของ buffer ก็ได้ หรือถ้าใช้กับการกำหนด pin ของ I/O ที่ใช้ควบคุม ในอนาคตก็จะเปลี่ยนแปลงได้ง่าย
     3. การใช้ function-like macro โดยส่วนใหญ่ จะใช้เพื่อให้เขียน code ได้ง่ายขึ้น ใช้คำสั่งที่สั้นลง ทำให้เขียน code ได้เร็วขึ้น
     4. ใช้กับ code ที่มีการนำไปใช้งานหลายๆรูปแบบได้ดี ไม่ต้องมาคอย comment ด้วย /**/ เช่นตัวอย่างการใช้ #define DEBUG_MODE



ข้อควรระวังในการนำไปใช้งาน

       ในการ define ค่าตัวเลขที่มาจากการบวก ลบ คูณ หรือหาร ควรใส่ ( ) ไว้เสมอ เพื่อให้การแทนที่ ไม่ผิดไปจากความตั้งใจ เช่น

#define WIDTH 5
#define HEIGHT 4
#define AREA (WIDTH* HEIGHT)

ค่า AREA อาจถูกนำไปใช้เป็นตัวหาร ถ้าเราไม่ใส่วงเล็บ ลำดับการคำนวณก็จะผิดไปจากที่ควรจะเป็น





################################################################################

ความรู้เกี่ยวกับการเขียนโปรแกรมภาษา C ที่นักอิเล็กทรอนิกส์ไม่ค่อยรู้




              นักอิเล็กทรอนิกส์ส่วนใหญ่ อาจจะไม่ได้ศึกษาการเขียนโปรแกรมภาษา C จากในห้องเรียน จึงอาจจะขาดความรู้หรือเทคนิคสำคัญๆ ที่ช่วยให้การเขียนโปรแกรมบน microcontroller มีประสิทธิภาพ ยืดหยุ่น ไม่ซับซ้อน หรือบางครั้ง การขาดความเข้าใจในบางเรื่องก็ทำให้อ่าน code คนอื่นไม่เข้าใจ ดังนั้นในเดือนเมษายน 2558 นี้ ทางทีมงาน ThaiEasyElec จึงได้คัดเอาความรู้และเทคนิคต่างๆในการเขียนโปรแกรมที่คนที่ศึกษาการเขียนโปรแกรมด้วยตนเองมักจะไม่ทราบ มาเขียนเป็นบทความจำนวน 8 ตอนด้วยกัน ซึ่งจะครอบคลุมตั้งแต่การใช้งาน preprocessor, casting, constant ไปจนถึง pointer 

             ในบทความนี้จะแบ่งออกเป็น 8 ตอน ดังต่อไปนี้

          ตอนที่ 1 เขียนโปรแกรมให้ยืดหยุ่นด้วย Macro (#define)
          ตอนที่ 2 การ Compile และการ Build
          ตอนที่ 3 เริ่มต้นรู้จักกับตัวแปร Pointer
          ตอนที่ 4 ตัวแปร Pointer (ภาคต่อ)
          ตอนที่ 5 การใช้ Pointer กับ Function
          ตอนที่ 6 การใช้งาน Structure เบื้องต้น
          ตอนที่ 7 ประโยชน์ของ Structure (ภาคต่อ)
          ตอนที่ 8 ความรู้อื่นๆ เกี่ยวกับการเขียนโปรแกรมภาษา C บน Microcontroller




###############################################################################

วันศุกร์ที่ 22 เมษายน พ.ศ. 2559

วิธีดึงเวลาสากล จาก Internet มาใช้งานกับ ESP8266

วิธีดึงเวลาสากล จาก Internet มาใช้งานกับ ESP8266


      สำหรับนักพัฒนา เรื่องของเวลาถือเป็นเรื่องที่น่าเบื่อ และน่ารำคาญ พอสมควร สำหรับงานที่ต้องการเสถียรภาพของเวลา เช่น การตั้งเวลาเพื่อควสบคุมอุปกรณ์ต่างๆ หรือการบันทึกข้อมูลจากฐานเวลา เป็นต้น อุปกรณ์ที่ใช้นับเวลา โดยทั่วไปนั้น คือ โมดูลนาฬิกา (Real Time Clock Module) ซึ่งก็พอมีให้เลือกอยู่หลายชนิดด้วยกัน ตั้งแต่ราคาถูกๆ ซึ่งก็ใช้งานได้ตามสภาพ ไปจนถึงราคาแพงๆ


        แต่ทุกวันนี้อุปกรณ์ Microcontroller เข้าสู่ยุคของ Internet of things แล้ว ในเมื่ออุปกรณ์ควบคุมสามารถเชื่อมต่อกับ Internet ได้ เวลาก็ไม่ใช่ปัญหาอีกต่อไป บทความนี้จะเป็นการนำNode MCU หรือ ESP8266 มาตั้งเวลา โดยไม่ต้องใช้โมดูลนาฬิกา แต่จะเป็นการดึงเอาเวลาสากลจาก Server มาใช้งานแทน

       เตรียม ESP8266 หรือ Node MCU ของท่านให้พร้อม แล้วมาเริ่มกันเลย..!!

          1) สำหรับใครที่ยังไม่ได้ติดตั้ง ESP8266 บน Arduino IDE ก่อนอื่นให้ติดตั้ง Board ESP8266 ก่อน ดูวิธีการติดตั้งได้จาก บทความ การใช้งาน NodeMCU + Arduino IDE + Blynk App

          2) เมื่อติดตั้งเสร็จแล้ว ให้ Copy หรือ เขียน Code ตามตัวอย่าง


          3) ทำการ Upload Program ให้เรียบร้อย แล้วเปิด Serial Monitor


         โปรแกรมก็จะแสดง วัน และเวลาปัจจุบัน ออกทาง Serial Monitor เพียงเท่านี้เราก็จะได้เวลาปัจจุบันโดยไม่ต้องต่อ RTC แล้ว

         แล้วเราจะ ดึงค่าเวลา ต่างๆ มาใช้ยังไง ????? ง่ายมากครับ ให้สังเกตุที่บรรทัด  struct tm* p_tm = localtime(&now)  ซึ่งเป็น Struct เก็บค่าตัวแปรต่างๆไว้ ดังนี้


struct tm {
   int tm_sec;         /* วินาที,  range 0 to 59          */
   int tm_min;         /* นาที, range 0 to 59           */
   int tm_hour;        /* ชั่วโมง, range 0 to 23             */
   int tm_mday;        /* วันที่, range 1 to 31  */
   int tm_mon;         /* เดือน, range 0 to 11             */
   int tm_year;        /* ปีคริสศักราช ตั้งแต่ 1900   */
   int tm_wday;        /* วัน, range 0 to 6    */
   int tm_yday;        /* วันใน 1 ปี, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

        เราสามารถนำค่า Parameter ต่างๆ ไปใช้งานได้เลย โดยใช้ตัวแปร p_tm->tm_hour (ตัวแปรเก็บค่าชั่วโมง) คราวนี้ ผมจะลองดึงเฉพาะ วินาที แสดงออกทาง Serial Monitor โดยเพิ่มโค้ด Serial.Print (p_tm -> tm_sec) เข้าไป ตามตัวอย่าง


void loop()
{
  //configTime(timezone, dst, "pool.ntp.org", "time.nist.gov");    //แสดงเวลาปัจจุบัน
  time_t now = time(nullptr);
  struct tm* p_tm = localtime(&now);
  Serial.print("Sec = ");
  Serial.print(p_tm->tm_sec);
  Serial.println("");
  delay(1000);
}

       ทดสอบการทำงาน


      เพียงเท่านี้เราก็สามารถเลือกค่าเวลาต่างๆ ไปใช้ในการ แสเงเวลา หรือตั้งเวลา ได้เลย โดยไม่ต้องเสียเงินซื้อ RTC Module อีกต่อไป.....


*********************************************************************************
 Montien Ngamkaew 
*********************************************************************************

วันเสาร์ที่ 19 มีนาคม พ.ศ. 2559

การใช้งาน NodeMCU + Arduino IDE + Blynk App


การใช้งาน NodeMCU + Arduino IDE + Blynk App

       พบกับรูปแบบ IOTs ในแบบฉบับของ application ที่น่าสนใจ ” Blynk” ที่สามารถเชื่อมต่ออุปกรณ์ Device ของเราเข้ากับ internet ได้อย่างง่ายดาย ไม่ว่าจะเป็น Arduino , ESP8266 , Rasberry pi หรือแม้แต่อื่นๆ ที่รวมเอา widget ต่างๆมาควบคุมแทนการเขียน code ยากๆ ไม่เพียงเท่านั้น ทางเลือกในการเชื่อมต่อเข้ากับ Blynk server เรายังสามารถใช้ได้ทั้ง WiFi และเครือข่ายมือถือ โดยสามารถ Download application นี้ได้ฟรีทั้งระบบ IOS และ Android (ที่มา : Ayarafun) 



          การใช้งาน Node MCU หรือ ESP8266 ผ่านแอพ Blynk นั้น ถือเป็นวิธีที่ง่ายและสะดวกอย่างมากในการใช้งาน เนื่องจากมี Widget มากมายให้เลือกใช้งาน ไม่ต้องเขียน App เอง และไม่ต้องนั่งปวดหัวกับ Code ยาวๆ เพราะใช้ Code เพียงไม่กี่บรรทัด ก็สามารถทำงานได้แล้ว โดย สิ่งที่ต้องใช้ มีดังนี้
  1. Node MCU V.2
  2. LED
  3. Program Arduino IDE
  4. Smart Phone + App Blynk
ติดตั้ง Board Node MCU

          ก่อนอื่น ติดตั้ง Board Node MCU สำหรับ Arduino IDE โดยเข้าไปที่ Menu File >> Preferences



      - ใส่ URL >> ลงในช่อง Addition Board Manager URLs: ดังนี้ 
http://arduino.esp8266.com/stable/package_esp8266com_index.json  แล้วกด OK




       จากนั้น ไปที่ Menu Tools >> Board >> Board Manager....



      เลือก Type เป็น Contribute แล้วเลือกที่ ESP8266 คลิก Install



       เสร็จสิ้นการ ติดตั้ง Node MCU บน Arduino IDE




ติดตั้ง Library และตั่งค่า App Blynk 

       Download และติดตั้ง Library สำหรับ App Blynk ได้ที่ Blink Library  เมื่อติดตั้งเสร็จแล้วให้ไปที่ App Blynk เพื่อทำการลงทะเบียน โดยเลือกที่ Create New Account 


          ใส่ E-mail ที่ต้องการลงทะเบียน และตั้งรหัสผ่าน แล้วกด Sign Up


      เมื่อลงทะเบียนเสร็จ ให้ทำการสร้าง Project โดยเลือกที่ Create New Project


        ตั้งชื่อ Project แล้วเลือก Hardware Model เป็น ESP8266 กด Email เพื่อส่งรหัส Auth Token ไปที่ Email ของเรา เสร็จแล้ว กด Create เพื่อสร้าง Project


         App จะปรากฎหน้า Project ของเราขึ้นมา จากนั้น กดที่เครื่องหมาย + ที่มุมบนขวา เพื่อเลือก Widget


      จะเห็นว่ามี Widget มากมายให้เลือกใช้ สำหรับตัวอย่างนี้จะเลือกใช้ Button Switch


       กดที่ Widget Button เพื่อตั้งค่า Button ใส่ชื่อ Button เลือกขา Output เป็น GP16 หรือ ขา D0 บน Node MCU (คลิกเพื่อดู Pin ของ Node MCU) และเลือกชนิด Button เป็น Switch 



         เสร็จแล้ว กดย้อนกลับไปที่หน้า Project



เขียนโปรแกรมเพื่อใช้งาน App Blynk

           หลังจากติดตั้ง Board Node MCU, Library และตั้งค่า App Blynk เรียบร้อยแล้ว ต่อไปจะเป็นการเขียนโปรแกรมลงบน Node MCU เพื่อควบคุม LED ผ่าน App Blynk 

          ไปที่ Arduino IDE เลือกชนิด Board เวอร์ชันที่ใช้งาน (จากตัวอย่างเป็น Board Node MCU V2)



        จากนั้น ไปที่ File >> Example >> Blynk >> BoardAndShield >> ESP8266_StandAlone
      


       หรือ เขียน Code ต่อไปนี้

        ในโค๊ดนี้เราจะสังเกตเห็นว่ารูปแบบการสั่งงานสั้นมากๆใน void loop() มีเพียง Blynk.run(); เพื่อสั่งงานจากภายนอก

        แก้ไข Code ดังนี้  "YourAuthToken" ให้ Copy Code ที่ส่งไปทาง Email มาใส่
        "ssid" เป็น "ชื่อ Wifi ที่ต้องการเชื่อมต่อ"
        "pass" "เป็น รหัสผ่าน Wifi"

       เสร็จแล้ว Upload Program ลงบน Node MCU แล้วเปิด Serial Monitor จนกระทั่งขึ้นข้อความ ดังรูป


      ต่อวงจร ดังรูป



        จากนั้นไปที่ App Blynk แล้ว Run Project โดยกดที่ปุ่มลูกศร ที่มุมบนขวา เพื่อ Run Project


       เมื่อเชื่อมต่อสำเร็จ ทดสอบเปิด-ปิด LED ด้วย Button Switch



     จะเห็นว่าการทำงานผ่าน App Blynk นั้น ใช้งานง่าย สะดวก ไม่ต้องยุ่งยากในการเขียน Code ยาวๆ และมี Widget ให้ใช้งานอีกเพียบ


*********************************************************************************
 Montien Ngamkaew 
*********************************************************************************