<< Go Back

       โปรแกรม Arduino IDE เป็นโปรแกรมที่ใช้สำหรับการเขียนโปรแกรมควบคุมและสามารถทำการแปลงไฟล์ดังกล่าวเพื่อนำไปอัพโหลดลงยังบอร์ด Arduino โดยเราสามารถที่จะเลือกใช้โปรแกรมแบบ online IDE หรือ desktop IDE ก็ได้ (สำหรับในบทความนี้ จะอธิบายเฉพาะแบบ Desktop IDE ที่ใช้กับ Windows OS เท่านั้น)
       1. โปรแกรมแบบ online IDE (Arduino Web Editor) จะเป็นการเขียนโปรแกรมผ่านเว็บไซต์ โดยข้อมูลต่าง ๆ ที่เราทำการเขียนขึ้นมา จะถูกนำไปเก็บไว้บน Cloud ซึ่งทำให้สะดวกในการใช้งานที่ไหนก็ได้ นอกจากนั้นเรายังไม่จำเป็นต้องอัพเดทโปรแกรมหรือไลบอรี่ สามารถเข้าได้ที่ https://create.arduino.cc/editor
       2. โปรแกรมแบบ desktop IDE เป็นโปรแกรมแบบ offline นั่นคือ เราจะต้องทำการดาวน์โหลดโปรแกรมที่ https://www.arduino.cc/en/software ซึ่งจะมีให้เลือกตามการใช้งาน OS ในที่นี้จะทำการดาวน์โหลดที่ Windows Win 10 and newer จากนั้นทำการ Install ไฟล์ EXE ที่เราดาวน์โหลดมา

รูปหน้า Download บนเว็บไซค์ (Update : 5-7-2566)


       3. คลิกตรงคำว่า JUST DOWNLOAD เพื่อดาวน์โหลดไฟล์


       1. เมื่อทำการดาวน์โหลดโปรแกรมเสร็จเรียบร้อยแล้ว ให้ทำการดับเบิ้ลคลิ๊กที่ตัวโปรแกรม เพื่อเริ่มทำการติดตั้ง

รูปโปรแกรมติดตั้ง Arduino IDE

       2. ตัวโปรแกรมจะเริ่มต้นขั้นตอนการติดตั้ง ให้กดปุ่ม Run จากนั้น คลิกที่ I Agree



       3. จากนั้นคลิกเลือกว่าใครใช้โปรแกรมนี้บ้าง จากนั้นคลิก Next และ Install


       4. เมื่อโปรแกรมทำการติดตั้งเสร็จเรียบร้อย หน้าจอจะขึ้นคำว่า Finish ให้ทำการกดปุ่ม Finish เพื่อจบการติดตั้ง


       โปรแกรม Arduino IDE จะประกอบไปด้วยเมนูบาร์, เมนู shortcut, พื้นที่เขียนโปรแกรมควบคุม, พื้นที่แสดงสถานะของโปรแกรม ตัวโปรแกรมสามารถอัพโหลดข้อมูลไปยังบอร์ด Arduino และติดต่อได้โดยตรง
       ในการเขียนโปรแกรมควบคุมของโปรแกรม Arduino IDE นั้น เราจะเรียกว่า Sketch โดยการเขียน Sketch นี้ จะเป็นการเขียนในลักษณะของข้อความและทำการบันทึกให้เป็นไฟล์นามสกุล ino ซึ่งเราสามารถที่จะเขียน ลบ ค้นหาและเปลี่ยนแปลงข้อความได้



แถบเครื่องมือในโปรแกรม Arduino IDE มีแถบรายการคําสั่งต่าง ๆ ดังนี้
1. แถบเครื่องมือไฟล์ (File) มีเครื่องมือช่วยในคําสั่งต่าง ๆ ซึ่งแต่ละปุ่มมีหน้าที่การใช้งานดังนี้
           1. New : เป็นแถบสร้างไฟล์ใหม่เพื่อเริ่มการเขียนโปรแกรมใหม่
           2. Open : เป็นแถบเปิดไฟล์งานที่เก็บในโฟลเดอร์
           3. Sketchbook : เป็นแถบเปิดไฟล์งานล่าสุด
           4. Example : เป็นแถบในการเลือกเปิดไฟล์ตัวอย่างที่อยู่ในโปรแกรม
           5. Close : เป็นแถบปิดไฟล์งานล่าสุด
           6. Save : เป็นแถบบันทึกไฟล์งานที่สร้างขึ้นปัจจุบัน
           7. Save As : เป็นแถบบันทึกไฟล์งานโดยเปลี่ยนชื่อไฟล์
           8. Page Setup : เป็นแถบตั้งค่าหน้ากระดาษของไฟล์งานปัจจุบัน
           9. Print : เป็นแถบสั่งพิมพ์งานออกทางเครื่องพิมพ์
           10. Preference : เป็นแถบกําหนดค่าการทํางานของโปรแกรม
           11. Quit : เป็นแถบใช้ออกจากโปรแกรม

รูป แถบเครื่องมือไฟล์ (File)


2. แถบเครื่องมือแก้ไข (Edit) มีเครื่องมือช่วยในคําสั่งต่าง ๆ ซึ่งแต่ละปุ่มมีหน้าที่การใช้งานดังนี้

           1. Undo : เป็นแถบย้อนกลับไปคําสั่งล่าสุด
           2. Redo : เป็นแถบย้อนกลับคืนเมื่อกดแถบ Undo มากเกินไป
           3. Cut : เป็นแถบตัดข้อความที่ต้องการคัดลอก
           4. Copy : เป็นแถบสําหรับคัดลอกข้อความ
           5. Paste : เป็นแถบสําหรับวางข้อความที่ตัดหรือคัดลอกมา
           6. Select All : เป็นแถบเลือกข้อความทั้งหมด
           7. Comment/UnComment : เป็นแถบสําหรับเติมเครื่องหมาย // เพื่อสร้างหมายเหตุหรือคําอธิบายลงในโปรแกรม
           8. Increase Indent : เป็นแถบสําหรับเลื่อนเคอร์เซอร์
           9. Decrease Indent : เป็นแถบสําหรับยกเลิกการเลื่อนเคอร์เซอร์
           10. Find.. : เป็นแถบค้นหา
           11. Find Next : เป็นแถบค้นหาต่อไป
           12. Find Previous : เป็นแถบย้อนกลับการค้นหา


3. แถบเครื่องมือสเกตช์ (Sketch) มีเครื่องมือช่วยในคําสั่งต่าง ๆ ซึ่งแต่ละปุ่มมีหน้าที่การใช้งานดังนี้
           1. Verify/Compile : เป็นแถบสําหรับการคอมไพล์โปรแกรม
           2. Upload : เป็นแถบสําหรับการอัปโหลดโปรแกรมที่เขียนขึ้นลงบอร์ด Arduino
           3. Show Sketch folder : เป็นแถบใช้ในการสั่งเปิดโฟลเดอร์ที่เก็บโปรแกรม
           4. Import Library : เป็นแถบคําสั่งเรียกใช้ไลบรารีเพิ่มเติม
           5. Add File : เป็นแถบเพิ่มไฟล์ให้กับสเกตซ์บุ๊กปัจจุบัน


4. แถบเครื่องมือ (Tools) มีเครื่องมือช่วยในคําสั่งต่าง ๆ ซึ่งแต่ละปุ่มมีหน้าที่การใช้งานดังนี้
           1. Auto Format : เป็นแถบจัดรูปแบบโปรแกรมแบบอัตโนมัติ
           2. Archive Sketch : เป็นแถบสั่งบีบอัดไฟล์โปรแกรมทั้งโฟลเดอร์ หลักและโฟลเดอร์ย่อยของไฟล์งานปัจจุบันไฟล์ที่สร้างใหม่ให้มีชื่อเดียวกับไฟล์งานปัจจุบัน
           3. Board : เป็นแถบสําหรับเลือกฮาร์ดแวร์ของบอร์ด Arduino
           4. Serial Port : เป็นแถบสําหรับเลือกหมายเลขพอร์ตของคอมพิวเตอร์ที่ต่อกับบอร์ด Arduino


           5. แถบเครื่องมือตัวช่วย (Help) ถ้าต้องการความช่วยเหลือหรือข้อมูลที่เกี่ยวข้องกับโปรแกรมให้เลือกเมนูนี้ และเลือกแถบเมนูย่อยของโปรแกรมโปรแกรมจะเปิดไฟล์เว็บเพจที่เกี่ยวข้องกับหัวข้อที่เลือก



           6. ปุ่ม Serial Monitor เป็นปุ่มสําหรับการติดต่อสื่อสารบอร์ด Arduino กับคอมพิวเตอร์ เมื่อคลิกปุ่มนี้คอมพิวเตอร์ทําการเปิดหน้าต่างใหม่ แล้วนําค่าในการรับส่งข้อมูลมาแสดง ที่หน้าต่างที่เปิดขึ้นนี้

 

ส่วนประกอบของโปรแกรม Arduino (IDE)
      โครงสร้างโปรแกรมภาษา C บน Arduino จะมีลักษณะแบบเดียวกับ C ทั่วๆไป โดยมีโครงสร้าง ดังต่อไปนี้
      1. Preprocessor directives
      2. ฟังก์ชัน setup()
      3. ฟังก์ชัน loop()


1. Preprocessor directives
   ส่วนที่ 1 นอกจากจะเป็นส่วนของ Preprocessor directives แล้วยังมี ส่วนของการกำหนดค่า (Global declarations) คือ การกำหนดชนิดตัวแปรแบบนอกฟังก์ชัน
   ส่วน Preprocessor directives จะเป็นส่วนที่คอมไพลเลอร์จะมีการประมวลผลและทำตามคำสั่งก่อนที่จะมีการคอมไพล์โปรแกรม ซึ่งจะเริ่มต้นด้วยเครื่องหมายไดเร็กทีฟ (directive) หรือเครื่องหมายสี่เหลี่ยม # แล้วจึงตามด้วยชื่อคำสั่งที่ต้องการเรียกใช้หรือกำหนด โดยปกติแล้วส่วนนี้จะอยู่ในส่วนบนสุด หรือส่วนหัวของโปรแกรมและต้องอยู่นอกฟังก์ชันหลักใดๆ ก็ตาม
#include เป็นคำสั่งที่ใช้อ้างอิงไฟล์ภายนอก เพื่อเรียกใช้ฟังก์ชันหรือตัวแปรที่มีการสร้างหรือกำหนดไว้ในไฟล์นั้นรูปแบบการใช้งานคือ #include <ชื่อไฟล์.h>
ตัวอย่างเช่น
     #include <Wire.h>
     #include <Time.h>

   จากตัวอย่าง จะเห็นว่าได้มีการอ้างอิงไฟล์ Wire.h และไฟล์ Time.h ซึ่งเป็นไลบารี่พื้นฐานที่มีอยู่ใน Arduino ทำให้เราสามารถใช้ฟังก์ชันเกี่ยวกับเวลาที่ไลบารี่ Time มีการสร้างไว้ให้ใช้งานได้

   การอ้างอิงไฟล์จากภายในหรือการอ้างอิงไฟล์ไลบารี่ที่มีอยู่แล้วใน Arduino หรือไลบารี่ที่นักเขียนโปรแกรมเพิ่มเข้าไปเองจะใช้เครื่องหมาย <> ในการคร่อมชื่อไฟล์ไว้ เพื่อให้โปรแกรมคอมไพลเลอร์เข้าใจว่าควรไปหาไฟล์เหล่านี้จากในโฟลเดอร์ไลบารี่ แต่หากต้องการอ้างอิงไฟล์ที่อยู่ในโฟลเดอร์โปรเจคจะต้องใช้เครื่องหมาย "" คร่อมแทน ซึ่งคอมไพล์เลอร์จะวิ่งไปหาไฟล์นี้โดยอ้างอิงจากไฟล์โปรแกรมที่คอมไพล์เลอร์อยู่

เช่น
#include "mywork.h"
      จากตัวอย่างด้านบนคอมไพล์เลอร์จะวิ่งไปหาไฟล์ mywork.h ภายในโฟลเดอร์โปรเจคทันที หากไม่พบก็จะแจ้งเป็นข้อผิดพลาดออกมา

     #define เป็นคำสั่งที่ใช้ในการแทนข้อความที่กำหนดไว้ด้วยข้อความที่กำหนดไว้ ซึ่งการใช้คำสั่งนี้ ข้อดีคือจะไม่มีการอ้างอิงกับตัวโปรแกรมเลย

รูปแบบ     

#define NAME VALUE

ตัวอย่างเช่น
      #define LEDPIN 12
      จากตัวอย่าง ไม่ว่าคำว่า LEDPIN จะอยู่ส่วนใดของโค้ดโปรแกรมก็ตามคอมไพล์เลอร์จะแทนคำว่า LEDPIN ด้วยเลข 12 แทน ซึ่งข้อดีคือเราไม่ต้องสร้างเป็นตัวแปรขึ้นมาเพื่อเปลืองพื้นที่แรม และยังช่วยให้โปรแกรมทำงานเร็วขึ้นอีกด้วยเพราะซีพียูไม่ต้องไปขอข้อมูลมาจากแรมหลายต่อ

ส่วนของการกำหนดค่า (Global declarations)
      ส่วนนี้จะเป็นส่วนที่ใช้ในการกำหนดชนิดตัวแปรแบบนอกฟังก์ชันหรือประกาศฟังก์ชัน เพื่อให้ฟังก์ชันที่ประกาศสามารถกำหนดหรือเรียกใช้ได้จากทุกส่วนของโปรแกรม
เช่น
      int pin_led = A1;
     int pin_sensor = 8;

2. ฟังก์ชัน void setup()
      ฟังก์ชัน void setup() เป็นฟังก์ชันแรกที่ถูกเรียกใช้นิยมใช้กำหนดค่าหรือเริ่มต้นใช้งานไลบารี่ต่างๆ เช่น ในฟังก์ชัน setup() จะมีคำสั่ง pinMode() เพื่อกำหนดให้ขาใดๆ ก็ตามเป็นดิจิตอลอินพุตหรือเอาต์พุต โดย OUTPUT เป็นค่าคงที่เมื่อใช้ขาดิจิตอลบน Arduino ต้องระบุโหมดเป็น OUTPUT หรือ INPUT เสมอ ตามหลักของภาษา C (ที่ Arduino ใช้) คำสั่งหนึ่งๆ จะลงท้ายด้วยเครื่องหมายอัฒภาค (;) เช่น
      pinMode(trigPin, OUTPUT);

      pinMode(echoPin, INPUT);

3. ฟังก์ชัน void loop ()
      เป็นฟังก์ชันที่ทำงานหลังจากฟังก์ชัน setup() ได้ทำงานเสร็จสิ้นไปแล้วและมีการวนรอบแบบไม่รู้จบ เมื่อฟังก์ชัน loop() งานครบตามคำสั่งแล้วฟังก์ชัน loop() ก็จะถูกเรียกขึ้นมาใช้อีก

ตัวอย่าง


      โปรแกรมจะวนกลับมาทำงานฟังก์ชัน loop() ซ้ำไปเรื่อย ๆ โดยอัตโนมัติจนกว่านักเขียนโปรแกรมจะถอดสายไฟออกจากบอร์ด Arduino

 

          ESP8266 เป็นไมโครชิป Wi-Fi พร้อมซอฟต์แวร์เครือข่าย TCP/IP ในตัวและ ความสามารถของ ไมโครคอนโทรลเลอร์ผลิตโดย Espressif Systems ในเซี่ยงไฮ้ ประเทศจีน บอร์ดมีขนาดเล็ก ใช้งานง่าย และที่สำคัญมีชิปโมดูล ESP8266 ซึ่งเป็นระบบ Wi-Fi ที่สามารถเชื่อมต่อกับเครือข่าย โดยใช้เป็น Access Point หรือ Web Server ซึ่งในหลักสูตรนี้จะใช้บอร์ด ESP8266 V2

คุณสมบัติ
          1. หน่วยประมวลผล: L106 แกนไมโครโปรเซสเซอร์ RISC 32 บิตที่ใช้ Tensilica Diamond      Standard 106Micro ทำงานที่ 80 หรือ 160 MHz
          2. หน่วยความจำ:
              - RAM คำสั่ง 32 KiB
              - RAM แคชคำสั่ง 32 KiB
              - RAM ข้อมูลผู้ใช้ 80 KiB
              - แรมข้อมูลระบบ 16 KiB ETS
          3. แฟลช QSPI ภายนอก: รองรับสูงสุด 16 MiB (รวม 512 KiB ถึง 4 MiB)
          4. Wi-Fi มาตรฐานIEEE 802.11 b/g/n
              - สวิตช์ TR ในตัวบาลัน LNA เพาเวอร์แอมป์และเครือข่ายที่ตรงกัน
              - การรับรองความถูกต้อง WEP หรือ WPA/WPA2 หรือเครือข่ายแบบเปิด
          5. 17 ขา GPIO
          6. Serial Peripheral Interface Bus (SPI)
          7. I2C (การใช้งานซอฟต์แวร์)
          8. อินเทอร์เฟซ I²Sพร้อม DMA (การแชร์ขากับ GPIO)
          9. UARTบนขาเฉพาะ รวมถึง UART ที่ส่งอย่างเดียวสามารถเปิดใช้งานบน GPIO2
         10. ADC 10 บิต (ADC ประมาณต่อเนื่อง)


ขาที่ใช้โดยทั่วไป มีดังนี้

D0 = 16 D7 = 13
D1 = 5 D8 = 15
D2 = 4 RX = 3
D3 = 0 TX = 1
D4 = 2 A0 = ADC
D5 = 14 SD3 = 10
D6 = 12 SD2 = 9
D0-D4 หรือ GPIO เป็นขาดิจิตอลที่สามารถกำหนดให้ขาที่ต้องการเป็น Input หรือ Output ก็ได้ เช่น อ่านค่าจากเซ็นเซอร์ดิจิตอลเป็น Input เข้ามา แล้วส่งค่าเป็น Output ออกไปเพื่อควบคุมอุปกรณ์ที่ต้องการ
** ขณะเดียวกันที่ขา D2/GPIO4 และ D1/GPIO5 ก็ถูกกำหนดให้เป็นขา SDA และ SDL เพื่อใช้สื่อสารกับโมดูลอื่นผ่านอินเตอร์เฟส I2C ด้วย เช่น โมดูลแสดงผล LCD และ OLED เป็นต้น
3V เป็นขาที่มีแรงดันไฟ 3.3 โวลท์ (ถูกปรับลดมาจากพอร์ต USB
ที่มีแรงดันไฟ 5V)
G เป็นขากราวด์ (Ground)
D5-D8 เป็นทั้งขา GPIO และขาที่ใช้ติดต่อสื่อสารกับโมดูลอื่นผ่านอินเตอร์เฟส HSPI
RX/TX เป็นขา GPIO และขาที่ใช้รับส่งข้อมูลแบบ Serial กับอุปกรณ์อื่น ๆ
G เป็นขากราวด์ (Ground)
3V เป็นขาที่มีแรงดันไฟ 3.3 โวลท์ (ถูกปรับลดมาจากพอร์ต USB
ที่มีแรงดันไฟ 5V)
A0 หรือ ADC เป็นขา Input ที่ใช้อ่านค่าจากเซ็นเซอร์อนาล็อก (Analog) มาแปลงเป็นดิจิตอล (Digital) ทำให้บอร์ดนี้สามารถใช้งานกับเซ็นเซอร์อนาล็อกได้
SD3 และ SD2 เป็นทั้งขา GPIO และขาที่ใช้ติดต่อสื่อสารกับอุปกรณ์ SD Card โดยตรงผ่านอินเตอร์เฟส SDIO (Secure Digital Input/Output)
SD1 และ S0 เป็นทั้งขา GPIO, ขาที่ใช้ติดต่อสื่อสารกับอุปกรณ์ SD Card ผ่านอินเตอร์เฟส SDIO และขาที่ใช้ติดต่อสื่อสารกับโมดูลอื่นผ่านอินเตอร์เฟส SPI ที่เร็วกว่า I2C
3V เป็นขาที่มีแรงดันไฟ 3.3 โวลท์
EN เป็นขาที่ควบคุมให้โมเดลทำงาน เมื่อมีการจ่ายไฟหรือกำหนดสถานะ ให้เป็น Active High
RST เป็นขาที่ใช้รีเซ็ตโมดูล เมื่อต่อกับกราวด์หรือกำหนดสถานะให้เป็น Active Low
G เป็นขากราวด์ (Ground)
VIN เป็นขาที่ใช้รับไฟเข้าจากแหล่งจ่ายภายนอกเพื่อจ่ายไฟให้กับบอร์ด และอุปกรณ์เชื่อมต่ออื่น ๆ โดยตรง ซึ่งไฟที่จ่ายให้ควรมีขนาดไม่เกิน 5V


การเพิ่มบอร์ด ESP8266 ลงในโปรแกรม Arduino IDE

       1. เปิดโปรแกรม Arduino IDE คลิกที่ File คลิกเลือก Preferences

       เพิ่ม http://arduino.esp8266.com/stable/package_esp8266com_index.json ลงในช่อง Additional Boards Manager URLs: จากนั้นคลิก OK


       2. จากนั้นคลิกที่ Tools ชี้เมาส์ที่ Board คลิกที่ Boards Manager…



       จากนั้นพิมพ์ esp ที่ช่องค้นหา และคลิกปุ่ม Install ที่ esp8266 by ESP8266 Community เสร็จสิ้นขั้นตอนการ Install บอร์ด ESP8266


       จากนั้นก่อนการโหลดโค้ดให้คลิกเลือกบอร์ดก่อนโดยไปที่ Tools ชี้เมาส์ที่ Board คลิกเลือก NodeMCU 0.9 (ESP-12 Module)


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

ที่มา : https://www.artronshop.co.th/article/53/
esp32-เบื้องต้น-บทที่-3-พื้นฐานอุปกรณ์และวงจรดิจิตอล

       ซึ่งจะสามารถนำวงจรไปต่อลงโพรโทบอร์ดได้หลายรูปแบบ ดังตัวอย่างต่อไปนี้

ที่มา : https://www.artronshop.co.th/article/53/
esp32-เบื้องต้น-บทที่-3-พื้นฐานอุปกรณ์และวงจรดิจิตอล

 

ที่มา : https://www.artronshop.co.th/article/53/
esp32-เบื้องต้น-บทที่-3-พื้นฐานอุปกรณ์และวงจรดิจิตอล


การเขียนโค้ดแบบ Output

การต่อวงจร LED 5V

อุปกรณ์

1. บอร์ด ESP8266 2. หลอด LED 5V

3. สายจั้มเปอร์หรือสายแพ ผู้-ผู้
ชิ้นงานนี้จะใช้สายผู้-ผู้

หมายเหตุ
    มาตรฐานสากลโลก
    สายแพสีดำคือ กราวน์ (GND) หรือ -
    สายแพสีแดงคือ ไฟ (VCC) หรือ +
4. ตัวต้านทาน 220 โอห์ม
5. Breadboard

       1. เชื่อมต่อ Pin GND บนบอร์ด ESP8266 อีกด้านให้เชื่อมต่อขา GND (-) ไหนก็ได้บน Breadboard
       2. เสียบตัวต้านทาน 220 โอห์ม บน Breadboard โดยขาทั้ง 2 ข้าง อยู่คนละช่องสัญญาณ
       3. เชื่อมต่อ Pin D2 (4) บนบอร์ด ESP8266 อีกด้านให้เชื่อมต่อช่องสัญญานเดียวกันกับขาด้านหนึ่งของตัวต้านทาน
       4. เชื่อมต่อขา + (A) ของหลอดไฟ 5V ที่ช่องสัญญานเดียวกันกับขาอีกด้านของตัวต้านทาน
       5. เชื่อมต่อขาที่ช่องสัญญานเดียวกันกับขา -  (K)  อีกด้านให้เชื่อมต่อขา GND (-) ไหนก็ได้บน Breadboard

การเขียนโค้ดสั่งให้หลอด LDE5 V ติด-ดับ สลับกัน



LED 5V

ที่มา : https://www.inventor.in.th/home/led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/


       การต่อวงจรให้ไฟติดนั้นให้ต่อขั้วบวกของแหล่งจ่ายไฟเข้าที่ขาแอโนดของ LED (A) และขั้วลบต่อที่ขาแคโทด (K) ดังรูป

ที่มา : https://www.inventor.in.th/home/led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/

การนำไปใช้งาน
       หลอดไฟ LED มีให้เลือกมากมายหลายสีและหลากรูปทรงจึงทำให้ LED ถูกนำไปใช้ในทุกวงการ เช่น ใช้ทำไฟฉาย, แสดงสถานะการทำงาน และแม้กระทั่งสร้างงานศิลปะจาก LED

       แต่เนื่องจากความหลากสีของ LED ทำให้ต้องใช้ส่วนผสมหรือสารกึ่งตัวนำที่ทำให้เกิดแสงในช่วงความยาวคลื่นต่าง ๆ ที่ส่งผลให้เรามองเห็นเป็นสีนั้นสีนี้นั่งเอง ดังนั้นเรามาดูความต้องการแรงดันตกคร่อมของ LED สีต่าง ๆ ดังตาราง

       ดังนั้นการนำไปใช้งานจึงมีความจำเป็นต้องต่อตัวต้านทาน (R) อนุกรมกับ LED หรือการต่อคั่นระหว่างขั้วบวกของแบตเตอรี่กับขา A ของ LED ดังรูปที่ 3 เพื่อจำกัดกระแสไม่ให้ LED พัง ดังสูตรคำนวณง่าย ๆ ดังนี้

       R (ค่าตัวต้านทานที่ต้องการ) หาได้จาก

การต่อตัวต้านทานเพื่อจำกัดกระแส

ที่มา : https://www.inventor.in.th/home/led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/


       โดยปกติหากเป็น LED แบบธรรมดาจะต้องการกระแสประมาณ 10 มิลลิแอมป์ แต่หากเป็นประเภทความสว่างสูง อย่างซูเปอร์ไบรต์ส่วนมากจะต้องการกระแสที่ 20 ถึง 30 มิลลิแอมป์ (โดยค่ากระแสนี้ได้มาจากคุณสมบัติของ LED แต่ละผู้ผลิต)

ตัวอย่างการคำนวณ
การต่อ LED หนึ่งดวง
       หากต้องการนำ LED สีน้ำเงินหนึ่งดวง ต่อกับไฟเลี้ยง 12 โวลต์ ดังนั้นจะสามารถแทนค่าจากสูตรได้ดังนี้

12V – 2.5V = 9.5V

       จากนั้นนำไปหารกับกระแสคือ 20 มิลลิแอมป์ โดยแปลงให้เป็นหน่วยแอมป์ ด้วยการหาร1,000 ได้เท่ากับ 0.02 แอมป์ คือ

9.5 / 0.02 = 475

       ค่าตัวต้านทานที่ต้องการคือ 475 โอห์ม
       แต่เนื่องจากค่า 475 โอห์ม ไม่มีจำหน่ายจริงจึงสามารถเลือกค่าใกล้เคียงได้เช่น 470 หรือ 510 โอห์ม

       อย่างไรก็ตามหากต่อแล้ว LED สว่างมากเกินไป ก็ควรเพิ่มค่าตัวต้านทานขึ้นได้หรือหาก LED หรี่เกินไปก็ให้ลดค่าตัวต้านทานลง

การต่อ LED แบบหลายดวง

       หลายครั้งที่โครงงานต้องการต่อ LED หลายดวง เช่น อาจใช้เป็นโคมไฟส่องสว่างสามารถแบ่งรูปแบบการต่อได้ 3 ลักษณะ คือ การต่อแบบอนุกรม, การต่อแบบขนานและต่อแบบผสม ดังนี้
       1. การต่อแบบอนุกรม
          การต่อแบบอนุกรมนั้นเหมาะสำหรับการต่อกับ LED จำนวนไม่มากเพราะแรงดันที่ต้องการใช้ในวงจรจะเพิ่มขึ้นตามจำนวน LED ที่เพิ่มขึ้น และที่สำคัญหาก LED ดวงใดดวงหนึ่งเสีย LED ดวงอื่นก็จะไม่สามารถทำงานได้ตามไปด้วย

การต่อแบบอนุกรม

ที่มา : https://www.inventor.in.th/home/
led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/

       จากรูปสามารถคำนวณหาค่าตัวต้านทานจากสูตรเดียวกันแต่ต้องบวกค่าความต้องการแรงดันตกคร่อมของ LED แต่ละดวงเข้าไปด้วยเช่น
                   12 – (2.5 + 2.5 + 2.5) = 5.5
                   5.5 / 0.02 = 275 โอห์ม

        2. การต่อแบบขนาน
            2.1 ต่อแบบตัวต้านทานแยก
       การต่อขนานแบบตัวต้านทานแยกเหมาะสำหรับใช้กับวงจรที่ต้องต่อ LED จำนวนมากเพราะต้องการแรงดันตกคร่อม LED เท่าเดิม แต่ต้องการกระแสเพิ่มมากขึ้นตามจำนวน LED ที่เพิ่มขึ้นและสิ้นเปลืองจำนวนตัวต้านทานแต่จะได้ความสว่างของ LED เท่ากันจึงเหมาะสำหรับการต่อใช้เพื่อทำเป็นโคมไฟอ่านหนังสือดังรูป

การต่อแบบขนานแบบตัวต้านทานแยก

ที่มา : https://www.inventor.in.th/home/
led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/

            2.2 ต่อแบบตัวต้านทานร่วม
               การต่อแบบนี้จะทำให้ความสว่างของ LED ไม่เท่ากันโดย LED ดวงที่มีศักย์ทางไฟฟ้าต่ำสุดจะสว่างมากกว่าดวงอื่น แต่ก็ช่วยประหยัดจำนวนตัวต้านทานที่ต้องใช้ลดลง

การต่อแบบขนานแบบตัวต้านทานร่วม

ที่มา : https://www.inventor.in.th/home/
led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/


3. การต่อแบบผสม
               เป็นการต่อโดยนำวงจรที่ต่ออนุกรมกันอยู่แล้วตั้งแต่ 2 ชุดขึ้นไปมาต่อขนานกันโดยการต่อแบบนี้เหมาะสำหรับใช้กับ LED จำนวนมาก ๆ จะช่วยรักษาความสมดุลกันระหว่างแรงดันและกระแสที่ต้องการใช้ได้ดังรูป

การต่อวงจร LED แบบผสม

ที่มา : https://www.inventor.in.th/home/
led-อุปกรณ์พื้นฐานการสร้างสิ่งประดิษฐ์/

การเขียนโค้ดแบบ Input

การต่อวงจรเซ็นเซอร์รับค่าแสง LDR (Photoresistor)

อุปกรณ์

1. บอร์ด ESP8266 2. เซนเซ็อร์ LDR

3. สายจั้มเปอร์หรือสายแพ ผู้-ผู้
ชิ้นงานนี้จะใช้สายแพผู้-ผู้

หมายเหตุ
มาตรฐานสากลโลก
สายแพสีดำคือ กราวน์ (GND) หรือ -
สายแพสีแดงคือ ไฟ (VCC) หรือ +
4. ตัวต้านทาน 4.7 กิโลโอห์ม
5. Breadboard

 

       1. Pin GND บนบอร์ด ESP8266 เชื่อมต่อไปที่ช่องลบไหนก็ได้บน Breadboard
       2. Pin 3V3 บนบอร์ด ESP8266 เชื่อมต่อไปที่ช่องบวกไหนก็ได้บน Breadboard
       3. เสียบตัวต้านทาน 4.7 กิโลโอห์ม บน Breadboard
       4. เชื่อมต่อขาที่ช่องสัญญานเดียวกันกับขาด้านหนึ่งของตัวต้านทาน อีกด้านเชื่อมต่อช่อง VCC (+) ไหนก็ได้บน Breadboard
       5. เชื่อมต่อ Pin A0 บนบอร์ด ESP8266 อีกด้านให้เชื่อมต่อช่องสัญญานเดียวกันกับขาด้านหนึ่งของตัวต้านทาน (คนละช่องสัญญานกับข้อ 4) หมายเหตุ เสียบด้านหน้าตัวต้านทาน
       6. เชื่อมต่อขาด้านหนึ่งของเซ็นเซอร์ LDR ให้อยู่ด้านหลังตัวต้านทานในช่องสัญญานเดียวกันกับข้อ 5
       7. เชื่อมต่อที่ช่องสัญญานเดียวกันกับขาอีกด้านของเซ็นเซอร์ LDR อีกด้านให้เชื่อมต่อช่อง GND (-) บน Breadboard ดังรูป

การเขียนโค้ดรับค่าความเข้มแสง


หมายเหตุ เนื่องจาก Analog มีค่า 0-1023 จึงใช้คำสั่ง map เพื่อให้แสดงค่า 0-100 เท่านั้น
                 เซ็นเซอร์ LDR ค่ามาก คือ เจอแสงน้อย
                 ค่าน้อย คือ เจอแสงมาก
                 ที่ฟังก์ชัน map จึงกลับค่าอ่านจาก 100,0 (อาจไม่ต้องกลับค่าก็ได้ ขึ้นอยู่กับการนำไปใช้ของผู้ใช้แต่ละคน)

เซ็นเซอร์รับค่าแสง LDR (Photoresistor)
       ตัวต้านทานที่แปรค่าตามแสง (Light Dependent Resistor : LDR) เป็นอุปกรณ์กึ่งตัวนำ (Semi-conductor) ใช้วัดความสว่างของปริมาณแสงที่ตกกระทบลงบริเวณฐานรองรับที่ไวต่อแสงที่ผลิตจากแคดเมียมซัลไฟด์ (CdS)  ซึ่งจะแปลงปริมาณทางแสงที่ตกกระทบเป็นสัญญาณไฟฟ้าด้วยสัญญาณอนาล็อคหรือไมโครคอนโทรลเลอร์

สัญลักษณ์ทางวงจรไฟฟ้า LDR

ที่มา : https://www.ai-corporation.net/2021/11/08/photoresistor/

 

หลักการทำงาน

       หลักการการทำงานของ Photoresistor คือ เป็นตัวต้านทานชนิดหนึ่งที่ค่าความต้านทานจะเปลี่ยนแปลงตามปริมาณแสงที่ตกกระทบลงบนฐานรองรับ โดยระหว่างขั้วไฟฟ้าทั้งสองมีสารกึ่งตัวนำ (บริเวณแคดเมียมซัลไฟด์ Cds) เมื่อสารกึ่งตัวนำไม่ติด ค่าความต้านทานของมันสูงถึงหลายเมกะโอห์มเมื่อบริเวณนี้สว่างขึ้นทำให้ “ความต้านทานทางไฟฟ้าลดลง ส่งผลให้มีกระแสไฟฟ้าไหลเพิ่มขึ้นในวงจรไฟฟ้า”

การตรวจสอบ LDR ด้วยมัลติมิเตอร์

           เราสามารถตรวจสอบ photoresistor ด้วยมัลติมิเตอร์ในโหมด “การวัดความต้านทาน” โดยการวัดความต้านทานขององค์ประกอบโดยพื้นที่สว่างและมืด

 

       ซึ่งในหลักสูตรนี้จะใช้แบบ SMD (Surface Mount Device) Arduino UNO R3 Specification

Microcontroller ATmega328P
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (ATmega328P)of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
Length 68.6 mm
Width 53.4 mm
Weight 25 g

- ไมโครคอนโทรลเลอร์
       Arduino Uno R3 จะมีชิป Microcontroller ซึ่งผลิตโดยบริษัท Atmel โดยส่วนนี้จะเป็นเหมือนสมองของบอร์ดที่ใช้สำหรับการประมวลผลรวมถึงการควบคุมหมุด I/O
- Digital Pin
       Digital Pin คือ หมุดสำหรับรับและส่งสัญญาณที่เป็น Digital โดยมี 2 สถานะ คือ On (0V) และ Off (5V)

- Analog in Pin

       Analog in Pin คือ หมุดสำหรับรับค่าสัญญาณที่เป็น Analog

- Power Pin
       Power Pin คือ หมุดสำหรับจ่ายแรงดันไฟฟ้าให้กับอุปกรณ์อิเล็กทรอนิกส์หรือชุดโมดูลเซ็นเซอร์ต่างๆ ซึ่งจะมีทั้ง 5V และ 3.3V นอกจากนี้ยังมีหมุด Vin ที่จะให้ค่าความต่างศักย์เท่ากับไฟที่ต่อมาจากพอร์ตอะแดปเตอร์ (External Power Jack)

- USB Socket
       USB Socket คือ พอร์ตที่ใช้ในการเชื่อมต่อสาย USB ในการ Upload Sketch Code ไปยังชิปไมโครคอนโทรลเลอร์ รวมถึงจ่ายแรงดันไฟให้กับบอร์ด Arduino

- External Power Jack
       External Power Jack คือ ช่องสำหรับเสียบ Power Adapter เพื่อต่อไฟจากแหล่งจ่ายภายนอก

- LED On Board
L  LED
       L  LED คือ ไฟ LED ที่ติดอยู่กับบอร์ดซึ่งเชื่อมต่อกับหมุด D13 ซึ่งจะใช้ในการทดสอบการทำงานของบอร์ดหรือใช้สำหรับ Sketch Code ที่กำหนดให้โมดูลทำงานแล้วไฟ LED ติด

- RX, TX LED
       RX, TX LED คือ ไฟ LED ที่แสดงสถานะของการรับและส่งข้อมูลในขณะที่บอร์ดกำลังทำการส่งหรือรับข้อมูล

- Reset Button

       Reset Button คือ ปุ่มสำหรับ Reset โปรแกรม Sketch Code ที่บอร์ด Arduino กำลังทำงานเพื่อให้บอร์ดหยุดทำงานเดิม จากนั้นจะเริ่มต้นทำงานใหม่ตั้งแต่บรรทัดแรก

       นักพัฒนาโปรแกรมคงสงสัยว่าทำไมถึงมี Uno ยี่ห้ออื่นมากมายและบอร์ดไมโครคอนโทรลเลอร์บางยี่ห้อตั้งชื่อรุ่นเป็น Uno R4 ก็มี อีกทั้งบอร์ดยี่ห้ออื่นๆที่ไม่ใช่ Arduino ยังมีรูปร่างและลักษณะเหมือนกันกับบอร์ด Arduino ด้วย สาเหตุเป็นเพราะว่าบอร์ดไมโครคอนโทรลเลอร์เป็นแฟลตฟอร์มแบบ Open-Source ฉะนั้นลายวงจรรวมถึง PCB Design ของบอร์ด Arduino จึงคล้ายกัน

 

 

       Blynk เป็นแอปพลิเคชันบนโทรศัพท์มือถือ (Mobile Application) สำหรับระบบ Internet of Things (IoT) สามารถติดตั้งได้ทั้งระบบ Android และ ios จึงทำให้สามารถควบคุมการทำงานของบอร์ด ESP8266, Arduino, และRaspberry Pi ได้ผ่านระบบอินเทอร์เน็ต 3โดยแอปพลิเคชันผู้ใช้สามารถเลือก Widget ที่ต้องการใช้งานมาวางบนหน้าจอโดยที่ทำงานแบบกราฟิก (Graphic Interface) ทำให้สามารถสร้าง dashboard เพื่อควบคุมอุปกรณ์ IoT ได้ง่ายมากขึ้น ซึ่งมีขั้นตอนการสร้างดังต่อไปนี้

       1. ลงทะเบียนเพื่อสร้างรหัสผ่านเข้าใช้งานแอปพลิเคชัน Blynk โดยเข้าไปที่ https://blynk.cloud/dashboard/login จากนั้นคลิกที่ Create new account กรอกอีเมล์ จากนั้นติ๊กหน้า agree to… และคลิกที่ปุ่ม Sign Up


       2. จากนั้นจะปรากฏกล่องข้อความให้ผู้ใช้เข้าไปคลิกลิงค์ในอีเมล์เพื่อสร้างรหัสผ่านที่จะใช้สร้างโครงงานในแอปลิเคชัน Blynk (รหัสนี้ไม่ใช่รหัสเข้าอีเมล์)


       หลังจากคลิกลิงค์ในอีเมล์แล้วให้คลิกที่ปุ่ม Create Password จากนั้นกรอกรหัสแล้วคลิกที่ Next


       3. กรอกชื่อของผู้ใช้งาน (ไม่ใช่ชื่อโครงงาน) จากนั้นคลิกที่ปุ่ม Done


        จากนั้นจะปรากฏหน้าแนะนำขั้นตอนการสร้างโครงงานในเว็ปแอปพลิเคชัน Blynk สามารถคลิกที่ปุ่ม Skip



        จากนั้นจะเข้าสู่หน้าเริ่มใช้งาน ให้คลิกที่ปุ่ม Let’s go และคลิกที่ปุ่ม Cancel


        จากนั้นจะเข้าสู่หน้าสร้างโครงงาน



        1. คลิกที่ Template แล้วคลิกที่ปุ่ม + New Template

         จากนั้นจะปรากฏหน้าต่างสร้างโดยกรอกและเลือกรายละเอียด ดังนี้
         1. ชื่อ Template
         2. เลือกบอร์ดสำหรับทำโครงงาน เช่น Arduino, ESP32, ESP8266 เป็นต้น (ในหลักสูตรนี้จะเลือก ESP8266)
         3. เลือกประเภทการเชื่อมต่อ เช่น WiFi, Ethernet เป็นต้น
        4. คลิก Done

         จากนั้นจะปรากฏหน้า Template ที่ผู้ใช้สร้าง



          จากนั้นคลิกที่ Datastreams แล้วคลิกที่ +New Datastream กำหนด Pin เพื่อสร้าง widget โดยให้เลือก Vitual Pin โดยจะเริ่มที่ Pin V0


         Virtual Pin คือการกำหนด Pin ให้กับอุปกรณ์และปุ่มควบคุม เพื่อแสดงผลหรือควบคุมอุปกรณ์ ตัวอย่างเช่น



         ในที่นี้จะยกตัวอย่างการสร้าง Gate โดยจะตั้งค่า 0-100 ซึ่งจะใช้แสดงค่าจากเซ็นเซอร์วัดความชื้น จากนั้นคลิกที่ +ADVANCED SETTINGS เลื่อน Sync with latest… ให้เป็นสีเขียว จากนั้นคลิกที่ปุ่ม Create


        หากต้องการสร้าง widget เพิ่มให้คลิกที่ +New Datastream หลักจากที่สร้างทุกอย่างเรียบร้อยแล้วให้คลิกที่ปุ่ม Save

หมายเหตุ กรณีไม่เสียค่าใช้การสร้าง widget จะสามารถได้ 32 Pin (ณ วันที่ 16/7/66)


        หลังจากที่สร้าง Template เสร็จแล้วจะเป็นการสร้าง Interface (Device) โดยไปที่ Search และคลิกที่ปุ่ม New Device


หมายเหตุ กรณีไม่เสียค่าใช้การสร้าง Device จะสร้างได้ 2 Device (16/7-66)

        จากนั้นคลิกที่ From template ที่ช่อง TEMPLATE จะปรากฏชื่อ Template ที่ได้สร้างไว้ให้คลิกเลือก จากนั้นคลิกที่ปุ่ม Create

       จากนั้นจะปรากฏหน้าต่างข้อมูล Device ซึ่งประกอบด้วย ID, NANE และ TOKEN ซึ่งในที่นี้จะใช้ TOKEN ในการเขียนเชื่อมโยงข้อมูลไปยังบอร์ด ESP8266

หมายเหตุ ถ้าหากปิดหน้าต่างข้อมูล Device ไป สามารถเปิดได้ที่ Device Info

        จากนั้นจะไปสร้างหน้า Interface บนสมาร์ทโฟน โดยให้ติดตั้งแอปพลิเคชัน Blynk IoT (แอปพลิเคชันนี้รองรับได้ทั้งระบบปฏิบัติการ IOS และ Android) จากนั้นเปิดแอปพลิเคชัน และ Log In User/ Password ที่สร้างไว้


         แอปพลิเคชันจะปรากฏหน้าต่างแนะนำการใช้งานให้คลิก Skip หรือกากบาทปิด จากนั้นจะพบกับ Device ที่สร้างไว้ ให้แตะที่ชื่อ Device


        จากนั้นแตะที่รูปประแจด้านขวาล่าง เพื่อตั้งค่าเพิ่มเติมจะปรากฏหน้าต่างแนะนำการตั้งค่าให้แตะกากบาทปิด


         หลังจากนั้นแตะที่เครื่องหมาย + ด้านขวามือบน จะพบกับ Widget Box ที่มีทั้งที่ต้องเสียค่าใช้จ่าย (UPGRADE) และไม่เสียค่าใช้จ่าย ในที่นี้จะเลือก Gauge


         จากนั้นแตะที่ Gauge และแตะที่ DATASTREAM และแตะที่วงกลม Integer V0(V0)



        จากนั้นแตะที่ Design จะเข้าสู่หน้าตั้งค่าซึ่งประกอบด้วย ชื่อ ขนาดตัวอักษร สีตัวอักษร จัดวางตัวอักษร สี Gauge รวมถึงการเปลี่ยน Pin


        หากต้องการเพิ่ม Device ให้แตะที่เครื่องหมาย + ด้านขวามือบน

ตัวอย่างการสร้าง Device


 

<< Go Back