ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ชุดเร ี ยนร ้ ู Arduino Starter Kit Internet of Things 8 LAB
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ แนะนําและทาํความรู้จกักับ Arduino บอร์ด พร้อมทั>งติดตั>งซอฟต์แวร์สําหรับการพัฒนา Arduino เป็นชื/อเรียกของแพลตฟอร์มการเขียนโปรแกรมลงไมโครคอนโทรเลอร์มีการพัฒนาแบบ Open Source คือมีการเปิดเผยข้อมูลทั Pงด้าน Hardware และ Software โดยเราสามารถสร้ างสรรสิ/งต่าง ๆ จาก การออกแบบได้ตามความคิด แล้วสร้ างออกมาเป็นชิ Pนงานที/ใช้ได้จริง โดยไม่จําเป็นต้องมีความรู้ เรื/องการ ต่อวงจรที/ซับซ้อน การเขียนโปรแกรมทีเข้าใจง่ายด้วยภาษา C มีโค้ดตัวอย่างและโปรเจกให้ศึกษาจํานวน มาก บอร์ดทดลองราคาไม่แพง มีให้เลือกใช้งานตามความเหมาะสม มีเซนเซอร์โมดูล และอุปกร์เสริม จํานวนมาก รูปที/ 1 เว็ปไซต์ของโครงการ www.arduino.cc ไมโครคอนโทรลเลอร์ ไมโครคอนโทรเลอร์จริง ๆ เป็นคอมพิวเตอร์ขนาดเล็กที/รวมอุปกรณ์ทุกอย่างอยู่ในชิฟเพียงตัวเดียว มี โปรเซสเซอร์ทําหน้าที/ประมวลผลมีหน่วยความจําแบบ RAM สําหรับเก็บข้อมูลขณะทํางานมีหน่วยความจํา EPROM หรือหน่วยความจํา Flash ทําหรับการเก็บข้อมูลโปรแกรมโดยไม่ต้องใช้ไฟฟ้า มีหน่วยควบคุม Input สามารถอ่านสัญญาณแบบดิจิตอลค่า t หรือ u และสัญญาณแบบ analog ช่วงแรงดันไฟฟ้า t-xV ทําให้เราสามารถติดต่อกับเซนเซอร์ต่าง ๆ เช่น แสง อุณหภูมิ ความชื Pน เสียงและอื/น ๆ มีหน่วยควบคุม Output สามารถควบคุมอุปกรณ์สั/งงานเปิด/ปิด หรือส่งสัญญาณแบบ analog ช่วงแรงดันไฟฟ้า t-xV ทํา ให้เราสามารถ เปิด/ปิดไฟ หรี/ไฟ ควบคุมความเร็วมอเตอร์ และอื/น ๆ บอร์ด Arduino Uno / Arduino Pro mini / Arduino Nano เป็นบอร์ดที/นิยมใช้กันมาก เพราะมีราคาไม่แพง มีพื Pนที/สําหรับเขียนโปรแกรมและ ขาควบคุม I/O จํานวนมาก เพียงพอกับงานทั/ว ๆ ไป ซึ/งทั Pงหมดใช้ชิฟ Atmega328P ตัวเดียวกัน • เรียนรู้Input/Output ทั>ง Digital Analog GPIO ย่อมาจาก General Purpose Input/Output เรียกเป็นภาษาไทยง่ายๆว่า พอร์ตเอนกประสงค์ ที/ เป็นได้ทั Pง อินพุต และ เอาต์พุต คือเราสามารถควบคุม คอนโทรลให้เป็นลอจิก “1” หรือ ลอจิก “0” ได้ ตามใจชอบ โดยที/จะสามารถควบคุมได้แต่ละ pin เหมือนไมโครคอนโทรลเลอร์ทั/วไป • สอนภาษาซีพื>นฐาน
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ภาษาซีของ Arduino จะจัดแบ่งรูปแบบโครงสร้ างของการเขียนโปรแกรมออกเป็นส่วนย่อยๆหลายๆส่วน โดยเรียกแต่ละส่วนว่า ฟังก์ชั/น และ เมื/อนําฟังก์ชั/น มารวมเข้าด้วยกัน ก็จะเรียกว่าโปรแกรม โดยโครงสร้าง การเขียนโปรแกรมของ Arduino นั Pน ทุกๆโปรแกรมจะต้องประกอบไปด้วยฟังก์ชั/นจํานวน เท่าใดก็ได้ แต่ อย่างน้อยที/สุดต้องมีฟังก์ชัน จํานวน 2 ฟังก์ชัน คือ setup() และ loop() ดังตัวอย่าง #include <Servo.h> // ส่งผนวกไฟล์ ชื/อ Servo.h เข้ามาใช้ในโปรแกรม int Servo1 = 9; // กําหนดให้ Servol แทน Pin Digital-9 Servo myservo; // สร้าง object ชื/อ myservo เพื/อควบคุม Servo void setup() { myservo.attach(Servo1); // กําหนดให้ใช้ขา Digital-9 สร้างสัญญาณควบคุม Servo } void loop() { myservo.write(180); // กําหนดค่าตําแหน่งให้กับ Servo = 180องศา } จะเห็นได้ว่าโครงสร้ างพื Pนฐานของภาษาซีที/ใช้กับ Arduino นั Pน จะประกอบไปด้วย 3 ส่วนใหญ่ๆ ด้วยกัน คือ header ในส่วนนี Pจะมีหรือไม่มีก็ได้ ถ้ามีต้องกําหนดไว้ในส่วนเริ/มต้นของโปรแกรม ซึ/งส่วนของ Header ได้แก่ ส่วนที/เป็น Compiler Directive ต่างๆ รวมไปถึงส่วนของการประกาศตัวแปร และ ค่าคงที/ต่างๆที/จะ ใช้ในโปรแกรม setup() ในส่วนนี Pเป็นฟังก์ชั/นบังคับที/ต้องกําหนดให้มีในทุกๆโปรแกรม ถึงแม้ว่าในบางโปรแกรมจะไม่ ต้องการใช้งานก็ยังจําเป็นต้องประกาศไว้ด้วยเสมอ เพียงแต่ไม่ต้องเขียนคําสั/งใดๆไว้ในระหว่าง วงเล็บปีก กา { } ที/ใช้เป็นตัวกําหนดขอบเขตของฟังก์ชั/น โดยฟังก์ชั/นนี Pจะใช้สําหรับบรรจุคําสั/งใน ส่วนที/ต้องการให้ โปรแกรมทํางานเพียงรอบเดียวตอนเริ/มต้นทํางานของโปรแกรมครั Pงแรกเท่านั Pน ซึ/ง ได้แก่คําสั/งเกี/ยวกับการ Setup ค่าการทํางานต่างๆ เช่น การกําหนดหน้าที/การใช้งานของ PinMode และการกําหนดค่า Baudrate สําหรับใช้งานพอร์ตสื/อสารอนุกรม เป็นต้น loop() เป็นส่วนฟังก์ชั/นบังคับที/ต้องกําหนดให้มีในทุกๆโปรแกรมเช่นเดียวกันกับฟังก์ชั/น setup( ) โดย ฟังก์ชั/น loop( ) นี Pจะใช้ บรรจุคําสั/งที/ต้องการให้โปรแกรมทํางานเป็นวงรอบซํ Pาๆกันไปไม่รู้ จบ ซึ/ง ถ้ า เปรียบเทียบกับรูปแบบของ ANSI-C ส่วนนี Pก็คือ ฟังก์ชั/น main( ) นั/นเอง
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ • ตัวแปรในภาษาซี ตัวแปร หมายถึง กลุ่มของ ตัวอักษร ตัวเลข และ เครื/องหมายใดๆ ที/รวมกันเป็นชื/อ เพื/อใช้กําหนด เป็น ตัวแทนของค่าข้อมูลที/เราต้องการจะอ้างถึงในโปรแกรม ทั Pงนี Pก็เนื/องจากว่าในการทํางานของโปรแกรม จริงๆนั Pนจะใช้ค่าตัวเลขที/ผู้ใช้กําหนดให้ มาทําการประมวลผล ซึ/งในการเขียนโปรแกรมถ้าเราต้องเขียน โปรแกรมโดยกําหนดเป็นค่าตัวเลขให้กับโปรแกรมตรงๆเลย ก็จะทําให้โปรแกรมที/เราเขียนขึ Pนเต็มไปด้วยค่า ตัวเลขต่างๆมากมาย ซึ/งยากต่อการอ่าน ยากต่อการทําความเข้าใจ และยากต่อการตรวจสอบความถูกต้อง และอาจทําให้เกิดความผิดพลาดได้ง่ายด้วย ดังนั Pนทุกภาษา จึงยอมให้มีการกําหนดชื/อ ขึ Pนมาใช้งานแทน ค่าตัวเลข เพื/อให้เขียนโปรแกรมได้สะดวกและง่ายต่อการอ่าน ทําความเข้าใจ ได้มากยิ/งขึ Pน ซึ/งลักษณะของข้อมูล อาจมีทั Pงแบบที/เป็นค่าซึ/งสามารถเปลี/ยนแปลงได้ (variable) หรือ อาจเป็น แบบที/มี ค่าคงที/ไม่สามารถเปลี/ยนแปลงได้ (constant) ในการประกาศใช้งานตัวแปร จําเป็นต้องประกาศ ชนิดของ ตัวแปร หรือบางครั Pงอาจมีการกําหนดค่าเริ/มต้นให้กับตัวแปรด้วยก็ได้ ชนิดและประเภทของตัวแปร ถ้าหากว่าเราจะเปรียบเทียบว่า ตัวแปร คือ ภาชนะสําหรับบรรจุสิ/งของ และ ข้อมูล คือ สิ/งของที/เรา ต้องการ จะเก็บ จะเห็นได้ว่า สิ/งของต่างๆรอบๆตัวเรานั Pน จะมีคุณสมบัติที/แตกต่างกันไป ดังนั Pนในการเลือก ภาชนะ สําหรับใช้บรรจุสิ/งของ เราก็จําเป็นต้องเลือกชนิดของภาชนะให้มีความเหมาะสมที/จะใช้เก็บสิ/งของ ด้วย ซึ/ง สิ/งแรกที/ต้องพิจารณาคือ เราจะต้องรู้จักคุณสมบัติของสิ/งของที/ต้องการจะจัดเก็บ และ จุดประสงค์ การใช้ งาน ก่อน จากนั Pนจึงจัดหาภาชนะที/มี ขนาด และ รูปทรงของภาชนะ เหมาะสมที/จะใช้เก็บสิ/งของ เพื/อให้ สามารถจัดเก็บ และ นําสิ/งของออกมาใช้งานได้อย่างเขประหยัดมากที/สุด ในภาษาซีนั Pน มีการกําหนด และ จําแนก ชนิดของตัวแปร ไว้เป็น 5 ชนิดด้วยกัน โดยแต่ละชนิดจะมี คุณสมบัติการใช้งานที/ต่างกัน เพื/อใช้ในการเก็บข้อมูลที/มีรูปแบบแตกต่างกัน คือ char ใช้เก็บข้อมูลที/เป็นตัวอักษร (character) ใช้เก็บข้อมูลที/เป็นเลขจํานวนเต็มได้ 256 ค่า int ใช้เก็บข้อมูลที/เป็นเลขจํานวนเต็ม (integer) ใช้เก็บข้อมูลที/เป็นเลขจํานวนเต็มได้ 65536 ค่า float ใช้เก็บข้อมูลที/เป็นเลขทศนิยมแบบ Single Precision double ใช้เก็บข้อมูลที/เป็นเลขทศนิยมแบบ Double Precision ซึ/ง สามารถเก็บค่าตัวเลขทศนิยมที/มีความ ละเอียดและถูกต้องของทศนิยมมากว่าแบบ float ถึง 2เท่า void ใช้เก็บตัวแปรที/ไม่มีค่า คุณสมบัติเฉพาะของตัวแปร
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ สําหรับตัวแปรชนิดที/ใช้เก็บค่าเลขจํานวนเต็ม (char และ int) นั Pน ในภาษาซี ไม่ได้มีการจําแนก ชนิด ของตัวแปรเพื/อใช้เก็บค่าตัวเลขที/เป็น ค่าบวก หรือ ค่าลบ เป็นการเฉพาะ แต่ภาษาซี จะใช้วิธีการเพิ/ม คําสั/ง สําหรับกําหนดคุณสมบัติเฉาพะให้กับตัวแปรไว้อีก 4 คําสั/ง สําหรับใช้กําหนดคุณสมบัติของตัวแปรแบบนี P ให้มีคุณสมบัติที/เฉพาะเจาะจงลงไปอีกเป็นต้นว่า จะใช้ตัวแปรในการเก็บค่าตัวเลขที/เป็นค่าบวกอย่างเดียว หรือต้องการเก็บค่าตัวเลขแบบคิดเครื/องหมายด้วย เพื/อให้ผู้ใช้สามารถปรับแก้คุณสมบัติในการใช้งานของ ตัวแปรให้มีคุณสมบัติใกล้เคียงกับความต้องการใช้งานมากขึ Pนไปอีก และเพื/อจํากัดขอบเขตการใช้งานของ ตัวแปรให้ตรงกับจุดประสงค์มากยิ/งขึ Pน และยังเป็นการช่วยให้ประหยัดจํานวนของหน่วยความจําที/ใช้สร้าง ตัวแปรด้วยและทําให้โปรแกรมทํางานได้เร็วขึ Pนกว่าเดิมอีกด้วย โดยในภาษาซีจะมีคําสั/ง ที/ใช้สําหรับระบุ คุณสมบัติเฉพาะของตัวแปรที/ใช้เก็บค่าเลขจํานวนเต็ม 4 คําสั/ง คือ unsigned ใช้ระบุให้เก็บค่าเลขจํานวนเต็มในตัวแปรเฉพาะค่าที/เป็นบวกเท่านั Pน signed ใช้ระบุให้เก็บค่าเลขจํานวนเต็มในตัวแปรทั Pงค่า บวก และ ลบ short ใช้ระบุให้เก็บค่าเลขจํานวนเต็มในตัวแปรที/มีค่าน้อยกว่า int long ใช้ระบุให้เก็บค่าเลขจํานวนเต็มในตัวแปรที/มีค่ามากกว่า int เป็น 2เท่า ชนิดข้อมูล การเก็บข้อมูล ขนาด boolean จริง (True) หรือ เท็จ (False) 1 บิต char ตัวเลข หรือตัวอักษร 1ไบต์ ใส่ค่าได้ตั Pงแต่ -128 ถึง 127 unsigned char ตัวเลข หรือตัวอักษร 1ไบต์ ใส่ค่าได้ตั Pงแต่ 0 ถึง 255 byte ไบต์ 1ไบต์ ใส่ค่าได้ตั Pงแต่ 0 ถึง 255 int ตัวเลขจํานวนเต็ม 2ไบต์ ใส่ค่าได้ตั Pงแต่ -32,768 ถึง 32,767 unsigned int ตัวเลขจํานวนเต็ม 2ไบต์ ใส่ค่าได้ตั Pงแต่ 0 ถึง 65,535 (2^16) -1) long ตัวเลขจํานวนเต็มที/มีความยาว 4ไบต์ ใส่ค่าได้ตั Pงแต่ - 2,147,483,648 ถึง 2,147,483,647 unsigned long ตัวเลขจํานวนเต็มที/มีความยาว 4ไบต์ ใส่ค่าได้ตั Pงแต่ 0 ถึง 4,294,967,295 (2^32 -1) float ตัวเลขทศนิยมใช้ในการคํานวน 4ไบต์ ใส่ค่าได้ตั Pงแต่ 3.4028235E+38 ถึง - 3.4028235E+38 มีทศนิยมได้ 6 ถึง 7 ตําแหน่ง double (เฉพาะบอร์ด Arduino Due) ตัวเลขทศนิยมที/มีความยาวและ ต้องการความแม่นยํา 8ไบต์ ใช้ในการคํานวนที/ ต้องการประสทิธิ° ภาพสงู String ข้อความ ไม่ระบุ
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ การประกาศตัวแปร เซ็ตค่าตัวแปร การประกาศตัวแปรจะเหมือนกับภาษา C โดยปกติ คือ TYPE KEY; โดย TYPE เป็นชนิดของข้อมูล ส่วน KEY เป็นชื/อตัวแปร การประกาศตัวแปรข้างต้นคือการประกาศตัวแปร แบบไม่กําหนดค่า ดังนั Pนค่าปกติที/อ่านจากตัวแปรจะเป็น 0 TYPE KEY = VAL; จากตัวอย่างด้านบน เป็นลักษณะของการประกาศตัวแปรแบบกําหนดค่า เมื/ออ่านค่าของตัวแปรออกมา จะได้เป็นค่าที/กําหนดไว้ตอนประกาศ ตัวอย่างการประกาศตัวแปร int i; int a = 10, b = 20; จากตัวอย่าง จะเห็นว่าเราสามารถกําหนดชนิดของข้อมูลให้ทีเดียวหลายๆตัวแปรก็ได้ โดยใช้เครื/องหมาย , คั/นไว้ int i; int a = 10, b = 20; i = a + b; จากตัวอย่างด้านบน เราสามารถกําหนดค่าให้กับตัวแปรเมื/อไรก็ได้ โดยใช้เครื/องหมายเท่ากับ = เป็น ตัวเชื/อม ชื/อตัวแปรจะอยู่ทางซ้าย และจะกําหนดค่าเป็นอะไร ให้อยู่ทางขวา ค่าที/อยู่ทางขวาจะถูกนํามาใส่ ในค่าที/อยู่ทางซ้ายเสมอ int i = 10, a; a = i; จากตัวอย่างด้านบน จะเห็นว่า a ไม่ได้กําหนดค่าไว้ตอนประกาศ ทําให้ค่าที/อ่านได้จาก a คือ 0แต่บรรทัด ถัดมา มีการกําหนดค่าให้ a เท่ากับ i ซึ/งตอนประกาศ i ได้ประกาศไว้ว่าค่าเท่ากับ 10 เมื/อนํามาใส่ a ค่าที/ อ่านได้จาก a จึงเป็น 10 ด้วยเช่นกัน booleanis = false; is = !is; จากตัวอย่างด้านบน มีการประกาศตัวแปร boolean ซึ/งเป็นตัวแปรทางลอจิก มีค่าเป็น True (1) หรือ False (0) ได้เท่านั Pน ในบรรทัดแรกได้ประกาศว่าตัวแปร is เป็นตัวแปรชนิด boolean และมีค่าเป็น false หรือ ลอจิก 0 บรรทัดต่อมา ได้มีการกําหนดให้ is เท่ากับ !is การที/เครื/องหมายนิเสธไปอยู่หน้าตัวแปร หมายถึง การกลับเป็นค่าตรงข้าม จากบรรทัดแรก ตัวแปร is มีค่าเป็น false เมื/อเจอ !is ค่าจึงถูกกลับเป็น true และ ถูกนําไปเซ็ตในตัวแปร is ทําให้สุดท้ายแล้วตัวแปร is มีค่าเป็น true String text = "Myarduino"; จากตัวอย่างด้านบน ได้มีการประกาศตัวแปรชื/อ text เป็นชนิด String เมื/ออ่านค่าที/ได้จาก text จึงได้ค่า ออกมาเป็น "Myarduino" เลย * การกําหนดค่าแบบข้อความให้กับตัวแปร จะต้องอยู่ภายใต้เครื/องหมาย "" เท่านั Pน มิฉนั Pนโปรแกรมจะ แสดงข้อความผิดพลาดออกมา
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ สรุปชนิดของตัวแปรใน Arduino ที/ใช้บ่อยๆ booleanใช้เก็บค่าข้อมูล เพียง 2จํานวน คือ TRUE (จริง) และ FALSE (เท็จ) char ใช้เก็บค่าข้อมูลขนาด 8 บิต ใช้สําหรับเก็บค่ารหัสของตัวอักษร ซึ/งสามารถกําหนดเป็นค่า หรือ เขียน ตัวอักษรไว้ภายใต้เครื/องหมาย ฟันเดียวก็ได้เช่น 'A' หรือ 0x41 หรือ 65 byteใช้เก็บค่าข้อมูลขนาด 8 บิตที/เป็นค่าจํานวนเต็มแบบไม่คิดเครื/องหมาย เหมือนกันกับunsigned char ในภาษาซี) ซึ/งสามารถเก็บค่าข้อมูลได้ 256 ค่า คือ 0-255 int หรือ Integer ใช้เก็บค่าข้อมูลขนาด 16บิต ที/เป็นค่าจํานวนเต็ม แบบคิดเครื/องหมาย โดยสามารถใช้เก็บ ข้อมูลได้ 65536 ค่า คือ -32768 ถึง +32767 unsigned int ใช้เก็บค่าข้อมูลขนาด 16บิต ที/เป็นค่าจํานวนเต็ม แบบไม่คิดเครื/องหมาย โดยสามารถใช้เก็บ ข้อมูลได้ 65536 ค่า คือ 0-65535 longใช้เก็บค่าข้อมูลขนาด 32บิต ที/เป็นค่าเลขจํานวนเต็มแบบคิดเครื/องหมาย โดยสามารถใช้เก็บข้อมูลได้ 4294967296 ค่า คือ -2,147,483,648 ถึง 2,147,483,647 unsigned longใช้เก็บค่าข้อมูลขนาด 32 บิต ที/เป็นค่าเลขจํานวนเต็มแบบไม่คิดเครื/องหมาย โดยสามารถ ใช้เก็บข้อมูลได้ 4294967296 ค่า คือ 0 ถึง 4,294,967,295 float ใช้เก็บค่าข้อมูลที/เป็นเลขทศนิยมแบบคิดเครื/องหมายขนาด 32 บิต โดยสามารถเก็บค่าได้ ระหว่าง 3.4E-38 ถึง 3.4E+38 (-3.4028235E+38 ถึง 3.4028235E+38) doubleใช้เก็บค่า เลขทศนิยมเช่นเดียวกันกับ float แต่มีค่าความละเอียดกว่า float ถึง 2เท่า สามารถเก็บ ค่าได้มากถึง 1.7E+308 voidเป็นตัวแปรแบบที/ไม่มีการเก็บค่าใดๆ คือ ไม่มีค่านั Pนเอง arrays เป็นตัวแปรที/ใช้เก็บข้อมูลหลายๆค่าไว้ในตัวแปรตัวเพียงชื/อเดียว แต่มีตัวเลขสําหรับชี P ตําแหน่งการ เก็บข้อมูลต่างกัน โดยตัวเลขที/ใช้ทําหน้าที/เป็นตัวชี Pตําแหน่งของข้อมูล เรียกว่า Index Number โดยค่า ลําดับของข้อมูลในตัวแปร array ตําแหน่งแรกจะมีค่าเป็น ศูนย์เสมอ stringเป็นตัวแปรใช้เก็บข้อความ หรือ ตัวอักษรหลายๆตัว ซึ/ง string ก็คือ array ของตัวแปร แบบ char นั/นเอง pointer เป็นตัวแปรที/ไม่ได้ใช้เก็บข้อมูล แต่ใช้เก็บค่าตําแหน่งแอดเดรสของหน่วยความจําที/ใช้ สร้างเป็นตัว แปรสําหรับเก็บข้อมูล ซึ/งตัวแปรแบบนี Pจะใช้ทําหน้าที/เป็นตัวชี Pไปยังตําแหน่งแอดเดรส ของตัวแปรอื/นๆอีกที/ หนึ/ง • Library ในภาษาซีคืออะไร Libraries คือ โค้ดที/ทําให้ sensor และโมดูลต่างๆ ใช้งานได้ง่ายขึ Pนสะดวกต่อการใช้งานและไม่มีความ ซับซ้อนมากนัก ซึ/งการใช้งาน Libraries บางตัวผู้ใช้งานจะต้องเพิ/มเข้าไปด้วยตนเอง ให้เราทําการติดตั Pง Library ก่อนให้เข้าไปที/ SKetch -> Include Libary -> Manage Library ตามรูป
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ให้พิมพ์ในช่องค้นหา Library โดยในที/นี Pเราจะทําการใช้ Library ชื/อ BH1750FVI ดังนั Pนให้พิมพ์คําว่า BH1750FVI แล้วกด Install เป็นการลง Library ของ เซ็นเซอร์วัดความเข้มแสง GY-302 BH1750FVI เสร็จ สิ Pน (ถ้าเราต้องการหา Library Sensor ตัวใหน สามารถมาค้นหาในหน้านี Pได้)
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ เมื/อติดตั Pง Library เสร็จ เราก็สามารถใช้งาน Library ดังกล่าวได้ • Function ฟังก์ชั/นต่าง ๆ ที/ได้กล่าวมาแล้วเป็นฟังก์ชั/นที/ภาษาซีมีให้ใช้งาน แต่ถ้าหากผู้ใช้งานต้องการฟังก์ชั/นที/มีการ ทํางานตามลักษณะเฉพาะส่วนอย่างใดอย่างหนึ/งที/มีการเรียกใช้งานซํ Pาๆ หรือเพื/อแยกงานให้เป็นส่วน ๆ ให้ ง่ายต่อการเขียนโปรแกรมสามารถเขียนขึ Pนเฟังกืชั/น Arduino เปรียบเสมือน เครื/องมือผลิตของ ที/เราป้อน วัตถุดิบเข้าไป ก็จะได้สิ/งของออกมา เช่น เครื/องมื/อผลิตไข่ทอด วัตถุดิบคือ ไข่ และนํ Pามัน สามารถเขียนในรูปแบบที/สั/น ๆ ได้ ไข่เจียว = เครื/องมื/อผลิตไข่ทอด(ไข่ , นํ Pามัน); ในคณิตศาสตร์พื Pนฐาน เกือบทุกคนคงเคยแก้สมการฟังก์ชั/นง่าย ๆ แบบนี P เช่น f(x) = x+20; ถ้า x=ut ผลลัพธ์ของฟังก์ชั/นนี Pก็คือ ™t ฟังก์ชั/นในการเขียนโปรแกรม Arduino ก็เหมือนกับทางคณิตศาสตร์ แบบนี P โครงสร้างฟังก์ชั/น int fnName(int para1, int para2){ int sum = para1+para2; return sum; } int คือ ประเภทตัวแปรที/ส่งค่ากลับ ถ้าไม่มีการส่งค่ากลับให้เขียนว่า void fnName คือ ชื/อของฟังก์ชั/นที/เราตั Pงเอง int para1,int para´ คือ ค่าที/ส่งให้กับฟังก์ชั/น จะมีกี/ค่าหรือไม่มีก็ได้ ถ้ามีหลายค่าใช้ ‘,’ คั/น return คือ ค่าตัวแปรที/จะให้ส่งค่ากลับ ถ้าเป็นฟังก์ชั/นแบบไม่มีการส่งค่ากลับ ตรงนี Pไม่ต้องเขียน
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ดัดแปลงจากตัวอย่างนี P f(x) = x+20; ถ้า x=10 เขียนเป็นฟังก์ชั/นใน Arduino ได้ง่าย ๆ แบบนี Pพื/อใช้งานเองได้ int f(int x){ return x+20; } ตัวอย่างวิธีเรียกใช้ฟังก์ชั/น Arduino เรียกใช้โดยเอาตัวแปรมารับ ในกรณีมีการส่งค่ากลับ เช่น int val = f(10); // จะได้ค่า val = 30 Arduino function อีกตัวอย่าง สร้างฟังก์ชั/นชื/อ about ให้แสดงคําว่า “Arduino Easy by “+ชื/อที/ส่งเข้ามาในฟังก์ชั/น โดยในฟังก์ชั/นนี Pเป็นเพียงการแสดงค่าออกหน้าจอ Serial Monitor ไม่มีการส่งค่ากลับ void setup() { } void loop() { about("All"); } void about(String name) { Serial.print("Arduino Easy by "); Serial.println(name); } • วนลูปเชค็เงpอืนไข while if else break ในการเขียนโปรแกรมเพื/อให้ไมโครคอนโทรลเลอร์ทํางานในสิ/งที/ตอ้งการ นอกจากฟังก์ชั/นที/สั/ง ให้ทํางานเป็นลําดับแล้วจําเป็นต้องใช้ฟังก์ชั/นที/มีการทํางานแบบให้เลือกเส้นทางการทํางาน โดยการทํา ตามเงื/อนไข หรือการให้ทําซํ Pาแบบมีเงื/อนไขหรือไม่มีเงื/อนไข โดยฟังก์ชั/นที/มีการทํางานแบบทางเลือก ในภาษาซีมีดว้ยกัน Æ ฟังก์ชั/น คือ u. ฟังก์ชั/น if ´. ฟังก์ชั/น if-else ™. ฟังก์ชั/น if-else if-else Æ. ฟังก์ชั/น switchcase ฟังก์ชัpน if (ทางเลือกเดียว) ฟังก์ชั/น if เป็นฟังก์ชั/นที/มีการตรวจสอบเงื/อนไขโดยถ้าเงื/อนไขเป็นจริงจะทํางานตามชุดฟังก์ชั/น ที/กําหนดไว้ รูปแบบเป็นดังนี P if (เงื/อนไขที/ตรวจสอบ)
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ผังงาน โค้ดตัวอย่าง if (conditional) { // put your code here // if conditional true } Example: if (value<50) { digitalWrite(13,HIGH); } ฟังก์ชัpน if-else (สองทางเลือก) การตรวจสอบเงื/อนไขที/มีชุดฟังก์ชั/น ให้ทา งานเมื/อเงื/อนไขเป็นจริงและมีชุดฟังก์ชั/น ให้ทํางาน เมื/อเงื/อนไขเป็นเท็จเราจะใชฟังก์ชั/น if-else มาใช้งาน มีรูปแบบดังนี P if (เงื/อนไขที/ตรวจสอบ) else ผังงาน โค้ดตัวอย่าง if (conditional) { // put main code here // if conditional true } else { //put main code here //if conditional false } ฟังก์ชัpน if-else if....else (หลายทางเลือก) เป็นฟังก์ชั/นที/มีการตรวจสอบเงื/อนไขหลายเงื/อนไข และมีชุดฟังก์ชั/นที/เตรียมให้ทํางานในแต่ละเงื/อนไขหาก เงื/อนไขนั Pนๆถูกต้อง if (เงื/อนไขที/ตรวจสอบ) else if (เงื/อนไขที/ตรวจสอบ) ผังงาน โค้ดตัวอย่าง
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ if (conditional1) { // put main code here // if conditional1true } else if (conditional2) { //put main code here //if conditional2true } ฟังก์ชัpน switch...case (หลายทางเลือก) ฟังก์ชั/น switch…case เป็นฟังก์ชั/นหลายทางเลือกอีกฟังก์ชน ั/ หน่ ึ งท ี/ มีการทํางานคล้ายๆ ฟังก์ชั/น if-else if…else ต่างตรงที/การตรวจสอบเงื/อนไขจะใช้การตรวจสอบการเท่ากันของตัวแปรที/ใช้ตรวจสอบเท่านั Pน โดยเมื/อตรวจสอบค่าแล้วเท่ากับค่าที/กําหนดให้ทําฟังก์ชั/นที/เตรียมไว้ ผังงาน โค้ดตัวอย่าง switch (variable) { case 1: // put code here for case 1 break; case 2: // put code here for case 2 break; default: // put code here for default break; } ฟังก์ชัpนการดําเนินการแบบวนซํ>า การเขียนโปรแกรมสั/งงานไมโครคอนโทรลเลอร์ ต้องมีการทา งานแบบวนซํ Pาหรือวนรอบเพื/อที/จะทํางานใน ชุดคําสั/งเดิม ลักษณะการทํางานมีทั Pงแบบมีเงื/อนไขหรือไม่มีเงื/อนไขในภาษาซีมีฟังก์ชั/นสั/งงานให้ ไมโครคอนโทรลเลอร์ทํางานซ้า มีดังนี P u. ฟังก์ชั/น for ´. ฟังก์ชั/น while 3. ฟังก์ชั/น do-while
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ฟังก์ชัpน for ฟังก์ชั/น for เป็นฟังก์ชั/นที/ใช้ในกรณีที/ทราบจํานวนรอบที/จะทํางานซํ Pาโดยมีรูปแบบดังนี P ผังงาน รูปแบบ for(ค่าเริ/มต้น;เงื/อนไข;เพิ/มหรือลดค่า ) { //ชุดฟังก์ชั/นที/ต้องการทา ซ้า } ตัวอย่าง โค้ดตัวอย่าง อธิบาย for(int i=0;i<10;i++) { digitalWrite(13, HIGH); delay(500); digitalWrite(13,LOW); delay(500); } ประกาศและกําหนดตัวแปรนับรอบเป็นตัวแปร i เป็นตัวแปรชนิด integer โดยให้มีค่าเริ/มต้นเท่ากับ ศูนย์ ทําวนซ้าไปเรื/อย ๆ หากค่าตัวแปรยังน้อยกว่า ut โดยในรอบถัดไปให้เพิ/มค่าในตัวแปรนับรอบขึ Pน u ค่า ฟังก์ชัpน while ฟังก์ชั/น while เป็นฟังก์ชั/นที/ให้ทํางานวนซํ Pาหรือวนรอบโดยมีการตรวจสอบเงื/อนไขก่อนถ้าหากเงื/อนไขเป็น จริงจะทํางานตามชุดฟังก์ชั/นที/เตรียมไว้ เมื/อทํางานในชุดฟังก์ชั/นที/เตรียมไว้เสร็จจะมีการวนกลับไป ตรวจสอบเงื/อนไขอีก หากเงื/อนไขเป็นจริงจะทํางานในชุดฟังก์ชั/นที/เตรียมไว้โดยทําแบบนี Pไปเรื/อย ๆ จนกว่า เงื/อนไขจะเป็นเท็จจะออกจากวงรอบการทําซํ Pาโดยมีรูปแบบดังนี P ผังงาน รูปแบบ
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ while(เงื/อนไข ) { //ชุดฟังก์ชั/นที/ต้องการทา ซ้า } ตัวอย่าง โค้ดโปรแกรม คําอธิบาย i=0; while(i<10) { digitalWrite(13,HIGH); delay(500); digitalWrite(13,LOW); delay(500); i++; } ตรวจสอบก่อนว่าเงื/อนไขเป็นจริงอยู่หรือไม่ ( i ยัง น้อย กว่า ut ) หากเงื/อนไขเป็นจริงให้ทํางานที/เตรียมไว้ เมื/อทา งานครบให้กลับมาตรวจสอบเงื/อนไขใหม่ วนซํ Pาไปเรื/อย ๆ จนกว่าเงื/อนไขจะเป็นเท็จ ฟังก์ชัpน do-while ฟังก์ชั/น do-while เป็นฟังก์ชั/นที/ให้ทํางานวนซํ Pาหรือวนรอบ โดยมีการตรวจสอบเงื/อนไขการทํางานคล้ายกับ ฟังก์ชั/น while ต่างตรงที/ฟังก์ชั/น do-while จะทํางานในชุดฟังก์ชั/นที/เตรียมไว้ทําซํ Pาไปก่อน u รอบแล้วจึง ตรวจสอบเงื/อนไข ผังงาน รูปแบบ do { //ชุดฟังก์ชั/นที/ต้องการทา ซ้า } while(เงื/อนไข ) ตัวอย่าง โค้ดโปรแกรม คําอธิบาย i=0; do { ทํางานในฟังก์ชั/นที/เตรียมไว้ แล้วตรวจสอบ เงื/อนไขว่าตัวแปร i ยังมีค่าน้อยกว่า ut หรือไม่
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ digitalWrite(13,HIGH); delay(500); digitalWrite(13,LOW); delay(500); i++; } while(i<10) หากยังน้อยกว่าให้วนกลับไปทําใหม่ซํ Pาๆ จนกว่า เงื/อนไขจะเป็นเท็จ • Workshop เขียนโค้ด if else , switch case ให้แสดงใน Serial Monitor
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ติดตั&งโปรแกรม Arduino IDE การติดตั Pง Arduino IDE คือการติดตั Pงโปรแกรมเพื/อใช้ในการเขียนโปรแกรมให้กับไมโครคอนโทรลเลอร์ บอร์ด Arduino UNO , NodeMCU ESP8266 , ESP-32 เป็นต้น ใช้ภาษาหลักการของภาษา C++ ครอบด้วยภาษาของ Arduino เพื/อให้การเขียนโปรแกรมมีความง่ายมากยิ/งขึ Pน หากตอ้งการดูคู่มือภาพเวบไซต์เพือ7สามารถกดล ิ<งค์ต่างๆได้ที7 https://www.arduinorayong.com/product/239 (สามารถดูvideo ประกอบด้วยก็ได้ที7 https://www.youtube.com/watch?v=dMujuIKpWdM :เครดิต BulanTech ) 1. เริ/มต้นเลยให้ติดตั Pงโปรแกรม Arduino สําหรับเครื/อง Windows รองรับตั Pงแต่ Windows XP ขึ Pนมา download ได้ที/ https://www.arduino.cc/en/Main/Donate คลิ¥ก Just Download หรือหากอยากบริจาคเงินช่วยพัฒนาให้ทีมงานก็คลิ¥ก Contribute & Download สําหรับเครื/อง Mac ดาวน์โหลดที/ https://www.arduino.cc/download_handler.php?f=/arduino-1.8.10-macosx.zip
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ หลังจากดาวน์โหลดแล้วก็ทําการติดตั Pง
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ หลังจากติดตั Pงเสร็จแล้ว ทําการเปิดโปรแกรมขึ Pนมา
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ 2. การติดตั Pง Arduino กรณีเครื/อง Windows 7 ให้ทําการลงไดร์เวอร์ของชิป Arduino / NodeMCU ESP8266 ก่อน แต่ถ้าเป็นเครื/อง Windows 10 เมื/อเสียบสายโหลดกับตัว Arduino / NodeMCU แล้วจะมีการติดตั Pงให้อัตโนมัติ ดาวน์โหลดไฟล์ติดตั Pง Driver ชื/อว่า ชิป CH340 ชื/อไฟลต์ CH341SER.EXE จาก http://www.wch.cn/downloads/file/65.html
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ตรวจสอบว่าติดตั Pงสําเร็จหรือไม่ ให้ไปที/ Device Manager / Port (COM &LPT) จะขึ Pนตามรูป port COM6
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ การทดสอบบอร์ดไมโครคอนโทรลเลอร์ Arduino UNO , MEGA , Nana , Micro (ถ้าเป็ น NodeMCU ESP8266 ข้ามไปบทถัดไป) ทดสอบโมโครคอนโทรลเลอร์ ที/โปรแกรม Arduino IDE เมนูหลัก เลือก Tools / Board / Board Manager เลือก Arduino Uno ให้ทําการนําสายโหลด USB เสียบกับ Arduino UNO จากนั Pนไปที/ Tool / Port หากทุกอย่างถูกต้องจะพบ ชื/อ Port ขึ Pนมา เช่น COM3 , COM5 , COM7 หากพบหลาย port ให้เลือก Port ที/แสดง CH340 ใน Device Manager
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ทดสอบคําสัpงให้ LED ทีpบิ>วอินติดมากับบอร์ดกระพริบ ไปที/ File/ Examples / 01.Basics / Blink โปรแกรมจะเปิดโปรเจคตัวอย่างทดลอง ตามรูป เลือก Port ให้ตรงกับ Device Manager เช่น COM4 , COM14
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ แล้วกดปุ่ ม Compile ที/อยู่มุมบนซ้ายมือ เพื/อประมวลผล หากสําเร็จด้านล่างจะขึ Pน Done Compiling
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ หากไม่สําเร็จ จะขึ Pน Error ตัวหนังสือสีแดงตรงพื Pนที/แสดง Error สีดําด้านล่าง ซึ/งต้องมาไล่โค้ดดูว่าผิดพลาดตรงจุดใด (ส่วนใหญ่หากเป็นผู้เริ/มต้นทดลอง ควร copy ข้อความ error ตัว สีแดงไปขึ Pนค้นหาใน Google ก่อน เพื/อฝึกเรียนรู้การแก้ไขปัญหาด้วยตัวเอง ซึ/งนักพัฒนาทุกท่าน จําเป็นต้องผ่านเรื/องนี Pกันมา (หากพบปัญหาไม่สามารถแก้ไขได้ให้แคปเจอร์หน้าจอแสดง error ตามรูป ด้านล่าง แจ้งปัญหามาได้) หากไม่พบ Error แล้ว ให้กด Upload ตามรูป ด้านล่างจะแสดงเปอร์เซ็นต์ความคืบหน้าการอัพโหลด เมื/อสําเร็จจะขึ Pน Done Downloading
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ผลทีpได้ไฟ LED บิ Pวอินจะกระพริบ ติด 1000 Millisecond (0.001 วินาที) และดับ 1000 Millisecond สลับกัน ทดลองแก้ไขโค้ดโปรแกรมภาษา C โดยการปรับเพิ/มหรือลดความถี/ของ 1000 Millisecond เช่น แก้เป็น 500 , 800 หรือ 2,500 กด Save As ตั>งชืpอ BlinkTest กด Compile , กด Uploadไปอีกครั Pง หากมีการกระพริบเปลี/ยนแปลง แสดงว่าทํางานถูกต้อง ถ้าถูกต้อง แสดงว่าไมโครคอนโทรลเลอร์ใช้และโปรแกรม Arduino สามารถใช้งานได้ดี
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ การทดสอบบอร์ดไมโครคอนโทรลเลอร์ NodeMCU ESP8266 WiFi Module การติดตั Pง NodeMCU ESP8266 เนื/องจากโปรแกรม Arduino IDE เป็นโปรแกรมที/พัฒนาเน้นไปที/จัดการ บอร์ด Arduino ดังนั Pนเมื/อจะทําการติดตั Pงบอร์ด NodeMCU ซึ/งพัฒนาโดยผู้ผลิตรายอื/น จะต้องทําการตั Pง ค่าเพิ/มเติมดังนี P - เปิดโปรแกรม Arduino IDE แล้วไปที/ Preferences ช่อง Additional Board Manager URLs: ให้คัดลอก URL นี Pไปใส่ http://arduino.esp8266.com/stable/package_esp8266com_index.json
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ จากนั Pนไปที/โปรแกรม Arduino IDE เมนูหลัก เลือก Tools / Board / Board Manager พิมพ์ค้นหาด้วยคําว่า “esp8266” จะเจอตามรูป ให้เลือก Version. เป็ น 2.5.2 แล้งกด Install
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ จากนั Pนทดสอบทั Pงหมดโดยการไปที/ Tool เลือกบอร์ด NodeMCU 1.0 (ESP-12E Module)
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ให้ทําการนําสายโหลด Micro USB (สายของมือถือแอนดรอย์) เสียบกับ NodeMCU จากนั Pนไปที/ Tool / Port หากทุกอย่างถูกต้องจะพบชื/อ Port ขึ Pนมา เช่น COM3 , COM5 , COM7 หากพบหลาย port ให้เลือก Port ที/แสดง CH340 ใน Device Manager
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ทดสอบคําสัpงให้ LED ทีpบิ>วอินติดมากับบอร์ดกระพริบ ไปที/ File/ Examples / ESP8266 / Blink โปรแกรมจะเปิดโปรเจคตัวอย่างทดลอง ตามรูป แก้ไขตําแหน่งขา pinout โดยแก้คําว่า LED_BUILTIN เป็น 2 (จากเดิม ESP8266 รุ่นแรก ขาบิ Pวอินคือขา 1 แต่ของ NodeMCU คือขา 2)
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ เมื/อแก้เป็นเลข 2 แล้วกด Compile เพื/อประมวลผล หากสําเร็จด้านล่างจะขึ Pน Done Compilng หากไม่สําเร็จ จะขึ Pน Error ตัวหนังสือสีแดงตรงพื Pนที/แสดง Error สีดําด้านล่าง ซึ/งต้องมาไล่โค้ดดูว่าผิดพลาดตรงจุดใด (ส่วนใหญ่หากเป็นผู้เริ/มต้นทดลอง ควร copy ข้อความ error ตัว สีแดงไปขึ Pนค้นหาใน Google ก่อน เพื/อฝึกเรียนรู้การแก้ไขปัญหาด้วยตัวเอง ซึ/งนักพัฒนาทุกท่าน จําเป็นต้องผ่านเรื/องนี Pกันมา หากไม่พบ Error แล้ว ให้กด Upload ตามรูป
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ด้านล่างจะแสดงเปอร์เซ็นต์ความคืบหน้าการอัพโหลด เมื/อสําเร็จจะขึ Pน Done Downloading ผลทีpได้ไฟ LED บิ Pวอินจะกระพริบ ติด 1000 Millisecond (0.001 วินาที) และดับ 2000 Millisecond สลับกัน
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ทดลองแก้ไขโค้ดโปรแกรมภาษา C โดยการปรับเพิ/มหรือลดความถี/ของ 1000 Millisecond เช่น แก้เป็น 500 , 500 หรือ 1,500 กับ 300 แล้ว กด Save As ตั>งชืpอ BlinkNodeTest กด Compile , กด Uploadไปอีกครั Pง หากมีการกระพริบเปลี/ยนแปลง แสดงว่าทํางานถูกต้อง
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ทําการติดตั>ง Library Function ทีpจะเป็ นสําหรับการ Workshop กับ Modela Store ร้าน Arduino ระยอง เนื/องจากอุปกรณ์ต่างๆในนิเวศของ ioT มีจํานวนมาก อุปกรณ์นั Pนๆจะมีฟังชั/นการ complier ที/สร้างมาเพื/อ อุปกรณ์ของตัวเอง เมื/อเราจะนํามาใช้ก็ไม่จําเป็นต้องมาเขียนโค้ดสร้างฟังชั/นเอง ให้ดาวน์โหลดเรียกใช้ได้ เลย เราเรียกชุดโค้ดฟังชั/นพร้อมใช้นี Pว่า “Library” นามสกุลไฟลต์ .h เช่น Libray ของการต่อ WiFi ของ ESP8266 (WiFiManager.h, ESP8266WiFi.h) Library การเชื/อมต่อ Bluetooth (BLE.h) Library ของเซนเซอร์วัดอุณหภูมิ (DHT.h) Library ของการนับเวลา (SimpleTimer.h) ทางร้านได้รวบรวมไว้เท่าที/จําเป็น สามารถดาวน์โหลดได้ที/ https://drive.google.com/open?id=18SROfw_gLzzsArfegJZbSAzYvukaQKz0 - ดาวน์โหลดแล้วจะได้ไฟลต์ซิป ชื/อ ModelaLibrary.zip - แตกไฟลต์แล้วย้ายไปไว้ใน folder ชื/อ libraries ซึ/งจะอยู่ภายใน folder ของ Arduino IDE ถ้า ต้องการดูว่าLibrary ต่างๆ อยู่ที/ไหน ให้ไปที/ Sketch -> Show Sketch Folder และเลื/อนการเลือก ของ Browser ขึ Pนไป จนเจอ Folder Libraries - หรือจะลองค้นหาโฟลเดอร์ BlinkTest หรือ BlynkNodeTest ที/เรา Save as ไปก่อนหน้านี P จะพบ โฟลเดอร์ libraries อยู่ในพาร์ทเดียวกัน
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ให้ทําการแตกไฟลต์ Zip ที/เราดาวน์โหลดมาที/ได้คัดลอกไปวางไปไว้ใน folder ที/ชื/อ libraries หากต้องการ Library อื/นๆ สามารถดูวิธีการค้นหาและติดตั Pงได้ที/ https://www.youtube.com/watch?v=6lQLZ4mb7cs&feature=youtu.be
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ จากนั>น Copy ไฟลต์โค้ดทีpได้รับในแผ่น CD หรือทีpดาวน์โหลดมาไว้ในโฟลเดอร์ Arduino จากนั>นเข้าไปทีpโฟลเดอร์ของโค้ด LAB ทีpต้องการทดลอง แล้วดับเบิ>ลคลิáกเปิ ดไฟลต์รอไว้ได้เลย
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ NodeMCU ESP8266 คืออะไร ไมโครคอนโทรเลอร์ Arduino ในรุ่นแรกๆ จะเป็นบอร์ดที/ทํางานอิสระ ไม่มีการเชื/อมต่ออินเตอร์เน็ต ทําให้การควบคุมทางไกลจะทําไม่ได้ (รุ่นหลังๆจะมี Shield WiFi ) ESP8266 ในแต่ละรุ่น เมื/อถึงยุคที/อินเตอร์เน็ตผ่านมือถือบูมมากๆ ความต้องการใช้งานควบคุมอุปกรณ์ ไมโครคอนโทรเลอร์ผ่านเครือข่ายไร้สาย จึงเกิดขึ Pน บริษัท Espressif ประเทศจีน ได้พัฒนาชิป ไมโครคอนโทรลเลอร์ที/ต่อ WiFI ได้ในตัว (เป็น Access Point ก็ได้) ในราคาประหยัด เพื/อให้คนใช้งานได้ แพร่หลาย ชื/อรุ่นว่า ESP8266 เริ/มจากรุ่นย่อย ESP-01 จนถึง ESP-14 แต่ว่าลักษณะการใช้งานแบบชิป คอมพิวเตอร์จะไม่สามารถนําไปใช้งานได้สะดวกนัก ทางผู้คิดค้นจึงได้นําชิป ESP8266 รุ่น ESP-12 มาต่อ ลงบอร์ดและใส่ส่วนประกอบเพิ/มเติมดังนี P - ต่อช่องเสียบสาย USB เพื/ออัพโหลดโค้ดโปรแกรมได้ง่าย - มี flash memory ขนาดเล็กให้ (RAM) - ต่อขาพินที/เชื/อมกับขอของชิป ให้สามารถต่อกับสายจั¥มเปอร์ขนาดมาตรฐานได้ - เพิ/มปุ่ มรีเซ็ตและเพิ/ม LED บิ Pวอินให้ดูสถานะต่างๆ -ออกชุดโค้ด พัฒนาซอฟแวร์รองรับ - ให้รองรับการเชื/อมต่อเครือข่ายด้วยโปรโตคอล MQTT IoT - ต่อร่วมกับ Arduino UNO , Nano , Mega , Pro miro เพื/อทําหน้าที/ต่อ WiFI ให้ Arduino โดยใช้ชื/อผลิตภัณฑ์นี Pว่า NodeMCU ESP8266
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ NodeMCU = Node Micro Controller Unit อาจจะเรียกได้ว่านี/คือบอร์ดยอดนิยมที/สุดของการเรียนรู้ไปสู่ Internet of Thing (การนําสรรพสิ/งทั Pงหลาย มาเชื/อมต่อกันผ่านอินเตอร์เน็ต) ขา I/O มีอะไรบ้าง - I/O มี 11 ขา -ขา D3 ไว้ flash memory ไม่ควรต่อใช้งานเป็น I/O - ทุกขาสามารถทําเป็นขา PWM ได้ ยกเว้น DO - มี ขา Analog input เพียงขาเดียว - หากต้องการต่อเซนเซอร์ตจํานวนมาก แนะนําให้ต่อผ่าน Arduino UNO แล้วให้ NodeMCU มีหน้าที/ต่อ WiFI - มีขาสําหรับรับส่งข้อมูลจากภายนอก RX , TX Espressif ยังได้พัฒนาชิป ESP32 เชื/อมต่อได้ทั Pง WiFI , Bluetooth , มีโมดูลกล้อง , โมดูลเมมโมรี/การ์ด ซึ/ง ESP32 ต่อยอดมาจาก ESP8266 ปัจจุบันอุปกรณ์ IoT สมาร์ทดีไวซ์ที/ผลิตจากประเทศจีนจนเป็นที/นิยมแพร่หลายในขณะนี Pเช่น เสี/ยวมี/ โซ นอฟ ทูย่า (Sonoff , Tuya , Xiaomi , Smart Life) เกือบทุกรุ่น ทุกยี/ห้อ ใช้ชิป ESP8266 และ ESP32
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ เรียงลําดับ Pin ที7ควรนํามาใช้เป็น Digital Input/Output หน้าที7หลัก/รอง ของแต่ละ Pin ควรเลือกใช้ให้เหมาะสม
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ การสร้างส่วนควบคุมด้วย App Blynk Blynk คือแอพสําเร็จรูปสําหรับควบคุมอุปกรณ์ไร้สาย Internet of Things (IoT) สามารถเข้าใช้งานได้ฟรี จนกว่า Widget (อุปกรณ์) ที/ใช้จะเต็ม สามารถซื Pอเพิ/มได้ในราคาที/ถูกมาก (เหมือนซื Pอไอเทมเกมส์) - Blynk app คือแอพสําเร็จรูป ใช้งานได้ทั Pง iOS และ Android - Blynk Server คือ Cloud Server ที/สําหรับให้อุปกรณ์ Thing ต่างๆมาเชื/อมต่อส่งข้อมูลมาควบคุม ผ่าน Blynk app - Blynk Libraries คือโค้ดฟังชั/นสําเร็จรูปที/ Blynk พัฒนามาไว้ให้เราใช้เชื/อมต่อ Blynk app และ Blynk Server ทางร้านบรรจุไว้ใน ModelaLibrary.zip ให้แล้ว - ใช้เชื/อมต่อไมโครคอนโทรลเลอร์ ได้ทั Pง Arduino , NodeMCU , Raberry PI , Sparkfun , WeMos etc. เพื/อให้ทําการควบคุมผ่านเครือข่ายไร้สายได้ทั Pง Ethernet , WiFi , Bluetooth , BLE , GSM 3G/4G - สามารถเรียกดูค่าจาก Sensor ที/เรามาต่อกับบอร์ดได้ โดยมี Widget ที/ไว้แสดงผลค่าของ Sensor ได้ เช่น แสดง Gauge : เกจวัดค่าอุณหภูมิ ความชื Pน กระแสไฟฟ้า แรงดันไฟฟ้า ปริมาณ - แสดงค่าเป็นข้อความด้วย LCD , LED , Terminal Text Box - เชื/อมต่อเซอร์เวอร์และฐานข้อมูลภายนอก แสดงค่าเป็นกราฟ Super Cart - เชื/อมต่อโมดูล GPS และ Accelerometer ได้ - Bridge ควบคุมไมโครคอนโทรลเลอร์พร้อมกัน 2 ตัว Bridge - Timer สําหรับการฟังชั/นเวลาแบบ real time - Input ได้ทั Pงแบบปุ่ มกด (Button) , Joystick , Slider , ปุ่ ม Step , แบบ Menu เลือก
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ - แจ้งเตือนผ่าน Push Notify , E-Mail , Twitter - Widget ทั Pงหมดให้ใช้ฟรี 2000 Energy (ประมาณ 6-8 Widget) หากต้องการเพิ/มสามารถซื Pอเพิ/ม ได้ (เหมือนซื Pอไอเทมเกมส์) หรือใช้ผ่านเซอร์เวอร์ของเมกเกอร์ท่านอื/น ที/สําคัญเป็นที/นิมใช้กว้างขวาง ทําให้มีผู้ทําโปรเจ็ค-เขียนโค้ดด้วย Blynk จํานวนมากมาแชร์ในอินเตอร์เน็ต เราสามารถค้นหาโปรเจค Blynk ในอินเตอร์เน็ต มาทําลองทําตามได้
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ 1. ให้ทําการ Download & Install 2. Create New Account ลงทะเบียนบัญชีสมาชิก โดยใช้ E-Mail ที/ใช้จริง เพราะ E-Mail นี Pจะเอาไว้รับ Authen Key (รหัสผ่านเฉพาะตัวอุปกรณ์) iOS , iPhone , iPad https://apps.apple.com/th/app/blynk-iot-for-arduinoesp32/id808760481?l=th Android https://apps.apple.com/th/app/blynk-iot-for-arduinoesp32/id808760481?l=th
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ LAB 1 สัญญาณไฟกระพริบทดสอบไมโครคอนโทรลเลอร์ ESP8266 การเขียนโปรแกรมเพื/อควบคุมการ ติด-ดับ ของหลอดไฟ LED ถือเป็นการเขียนโปรแกรมบน Arduino IDE ที/ง่ายที/สุด โดยที/ยังไม่มีการเชื/อมต่ออินเตอร์เน็ต ทําให้ผู้ที/ไม่เคยเขียนโปรแกรมคอมพิวเตอร์มาก่อนก็ สามารถทําความเข้าใจได้ไม่ยาก อีกทั Pงยังเป็นการเรียนรู้การต่อวงจรอิเล็คทรอนิกส์เบื Pองต้นไปพร้อมกัน ด้วย ในหัวข้อนี Pเราจะมาต่อวงจรให้กับ LED เพื/อทําให้มันสว่างและกระพริบตามต้องการ อุปกรณ์ที/ใช้ 1. บอร์ด NodeMCU ESP8266 2. หลอด LED ขนาด 5MM สีแดง สีเขียว สีเหลือง อย่างละ 1 ตัว 3. ตัวต้านทาน (Resistance) 47 โอห์ม , 100 โอห์ม , 220โอห์มอย่างละ 1 ตัว วงจรอิเล็กทรอนิกส์ เริ/มต่อวงจร กับบอร์ด NodeMCU ESP8266 หลักการในการต่อคือ ต่อให้แรงดันจากขา Digital Output 3.3โวลต์ ให้ไหลผ่านหลอด LED แล้วไหลลงสู่ GND หลอด LED ก็จะสว่างขึ Pนมา แต่เราจําเป็นต้องเพิ/มตัว ต้านทานขนาด 220 โอห์ม (ใช้ 47 โอห์มหรือ 100 โอห์มก็ได้) เข้าไปในเส้นทางของวงจรด้วย เพื/อต้านทาน กระแสไฟฟ้าไม่ให้ไหลผ่าน LED มากเกินไป การต่อวงจรภายในแผ่นบอร์ดทดลอง (Breadboard) จะเป็นดังรูปกล่าวคือ ด้านบนและด้านล่างจะใช้ สําหรับต่อไฟเลี Pยงวงจรซึ/งวงจรด้านล่างจะต่อถึงกันทั Pงแถว ส่วนการต่อวงจรด้านใน วงจรจะต่อถึงกันตาม แนวตั Pงดังภาพ
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ และรูปด้านล่างคือรูปของการต่อวงจรด้วยอุปกรณ์ต่างๆบน Breadboard การต่อไม่จําเป็นต้องต่อตาม ภาพ สามารถจะต่อเป็นรูปแบบไหนก็ได้ ขอเพียงให้ถูกต้องตามวงจร ก็จะสามารถทํางานได้เช่นเดียวกัน NodeMCU ESP8266 มีขาที/เป็นแบบดิจิตอลอินพุท/เอาพุทโดยตรง ให้เราใช้งานได้เต็ม 9ขา ในกรอบสี เหลี/ยมสีแดงตามที/เห็นในรูปด้านล่างซึ/งจะเขียนกํากับที/บอร์ดตั Pงแต่ D0-D8โดยเทียบเท่าขา GPIO ของ Arduino คือ D0 = 16 , D1 = 5 , D2 = 4 , D3 = 0 , D4 = 2 , D5 = 14 , D6 = 12 , D7 = 13 , D8 = 15
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ขาดิจิตอลของ NodeMCU สามารถส่งค่าที/เป็นดิจิตอลออกมาได้ โดยสัญญาณดิจิตอลนั Pนถ้าอธิบายให้ เข้าใจง่ายๆ มีอยู่ 2 รูปแบบคือ HIGH (มีไฟ) และ LOW (ไม่มีไฟ) • pinMode(xx, OUTPUT); คือการตั Pงค่าให้ให้ขาอะไรเป็นเอาท์พุท เช่น ขา D5, D6, D7,11 , 12 , 13 เป็น ต้น • digitalWrite() คือคําสั/งที/ใช้ควบคุมการจ่ายไฟ สําหรับแบบ Digital จะมีอยู่ 2 ค่าคือ HIGH (มีไฟ) และ LOW (ไม่มีไฟ) • delay() คือคําสั/งที/ใช้หน่วงเวลา หรือนับเวลานั/นเองโดยจะมีหน่วยเป็น มิลลิวินาที (1 วินาที = 1000 มิลลิวินาที) 500 จึงเท่ากับ ครึ/งวินาที ขั Pนตอน 1. ต่อวงจรตามรูป // NodeMCU ESP8266 <--->LED // D5 <---> ตัวต้านทาน 47 โอห์มแล้วอนุกรม LED สีเขียวขาบวก // D6 <---> ตัวต้านทาน 100 โอห์มแล้วต่ออนุกรม LED สีเหลืองขาบวก // D7 <---> ตัวต้านทาน 220 โอห์มแล้วต่ออนุกรม LED สีแดงขาบวก // G <---> LED ขาลบ ทั Pง3 ตัว
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ 2. เปิดโปรแกรม Arduino (IDE) แล้วกดสร้างโปรเจคใหม่ จากนั Pน copy โค้ดนี Pไปใช้แทน void setup() { pinMode(D5, OUTPUT); pinMode(D6, OUTPUT); pinMode(D7, OUTPUT); } void loop() { digitalWrite(D5, HIGH); delay(500); digitalWrite(D5, LOW); delay(500); digitalWrite(D6, HIGH); delay(500); digitalWrite(D6, LOW); delay(500); digitalWrite(D7, HIGH); delay(500); digitalWrite(D7, LOW);
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ delay(500); } ให้เรากด Upload เพื/อตรวจสอบโค้ดโปรแกรม บอร์ดว่าใช้งานได้ปกติหรือไม่. โค้ดเขียนถูกหลักไวยากรณ์ หรือไม่ พร้อมทั Pงส่งโค้ดโปรแกรมที/เราเขียนไปยังบอร์ด NodeMCU ESP8266 ผ่านทางสาย Micro USB ถ้าวงจรที/เราต่ออยู่ถูกต้อง จะพบว่าหลอด LED ที/เราต่อนั Pนสว่าง และ กระพริบ เรียงกันตามลําดับใน ช่วงเวลาเท่ากันหมด (500 มิลลิวินาที) ถ้า LED ไฟไม่ติด .ให้ตรวจสอบการต่อวงจร หรือ ลองกลับขั Pว LED ซึ/งอาจจะต่อผิดอยู่ และในหัวข้อนี Pมาเรียนรู้ตัวแปรภาษา C เพิ/มเติมด้วยครับ ตัวแปร (Variables) จะเป็นชื/อที/ใช้ในการบอกจํานวนหรือปริมาณ ซึ/งสามารถที/จะทําการเปลี/ยนแปลง จํานวนได้ด้วยโปรแกรมคอมพิวเตอร์ การตั Pงชื/อตัวแปร จะต้องตั Pงชื/อให้แตกต่างไปจากชื/อของตัวแปรอื/นๆ ยกตัวอย่างชื/อของตัวแปร ได้แก่ x, y, peter, num_of_points และ streetnum เป็นต้น โดยปกติการเขียน โปรแกรมที/ดี ควรจะตั Pงชื/อตัวแปรให้สอดคล้องกับการทํางานหรือหน้าที/ของตัวแปรนั Pนๆ เพราะเมื/อถึงเวลา ต้องมาทําการปรับปรุงแก้ไขโปรแกรม จะสามารถทําได้โดยไม่ยากนัก int เป็นชนิดตัวแปรที/สามารถแทนค่าจํานวนเต็มได้ทั Pงบวกและลบ ดังนั Pนเราจะลองใช้ ตัวแปร int แทนขาดิจิตอลต่างๆ ของ บอร์ด NodeMCU ESP9266เช่น int LED1 = D5; int คือประกาศตัวแปรเป็นชนิดจํานวนเต็ม และให้ชื/อตัวแปรว่า LED1 และกําหนดค่าให้เป็น D5 ด้วย จากนั Pน นําโค้ดเดิมด้านบนมาแก้ไขโค้ด โดยเพิ/มการประกาศตัวแปรเข้าไปดังนี P int LED1 = D5; int LED2 = D6; int LED3 = D7; void setup() {
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); } void loop() { digitalWrite(LED1, HIGH); delay(500); digitalWrite(LED1, LOW); delay(500); digitalWrite(LED2, HIGH); delay(500); digitalWrite(LED2, LOW); delay(500); digitalWrite(LED3, HIGH); delay(500); digitalWrite(LED3, LOW); delay(500); } // (เครื/องหมายทับสองอัน) สิ/งที/พิมพ์ตามมาในบรรทัดนั Pน จะไม่ถูกนํามาแปลภาษาเพื/ออัพโหลดให้กับ บอร์ด จึงใช้เขียนอธิบายการทํางาน หรือ บันทึกช่วยจําต่างๆเป็นต้น กด Save As ตั Pงชื/อเป็น LAB1_3LED_Blink แล้ว Upload โปรแกรมลงบอร์ด NodeMCU ESP8266อีก ครั Pง จะเห็นการทํางานของวงจร ติด-ดับของหลอดไฟ LED ทํางานเหมือนกับโปรแกรมแรก แต่.. ข้อดีของการเขียนโปรแกรม แบบมีตัวแปร คือ เมื/อเราต้องการแก้ไขการต่อวงจรของเรา เช่น ต้องการ แก้ไข วงจร จาก ขาดิจิตอล จาก ขา D5 เป็น ขา D7และ D5 เป็น D7เมื/อเราย้ายสาย การต่อวงจร เรียบร้อยแล้ว เราก็เพียงไป แก้ไข ค่าตัวแปร int LED1 = D5; เป็น int LED1 = D7; int LED1 = D7; เป็น int LED1 = D5;
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ ซึ/งเป็นการแก้ไขเพียงจุดเดียว โปรแกรมก็จะทํางานตามความต้องการของเรา ต่างจากการเขียนแบบแรก ซึงต้องไปแก้ทุกจุดที/ เป็น ขา D5และ ยังลดความผิดพลาดในการแก้ไขโปรแกรมไม่ครบทุกจุดอีกด้วย ลองทําการ Upload อีกครั Pง จะเห็นว่าการสว่างของ LED จะเรียงลําดับใหม่ 3. ทดลองแก้ไขค่าเวลาดีเลย์ เปลี/ยนตัวเลข 500ในแต่ละบรรทัดให้ไม่เหมือนกัน ผลที/ได้รับ 1. หากมีการนําตัวแปรมาใช้อย่างถูกต้อง เมื/อต้องมีการแก้ไขโปรแกรม ก็จะลดการแก้ไขโค้ดได้มาก 2. เมื/อมีการแก้ไขค่าเวลาหน่วงให้ทํางานไม่เหมือนกัน เราก็จะสามารถควบคุมช่วงไฟติดและไฟดับ สามารถนําไปประยุกต์ใช้ทําไฟสัญญาณต่างๆได้ เช่น ไฟจราจร ไฟเตือน เป็นต้น
ModelaStore ร้าน Arduino ระยอง shopee.co.th/niratkk. , facebook.com/ArduinoRayongbyModela ___________________________________________________________________________ LAB 2 จําลอง Smart Home เปิ ดปิ ดรีเลย์และ LED แบบ 5 ช่องควบคุม แลบนี'จะทําการเชื2อมต่อบอร์ดไมโครคอนโทรลเลอร์ชนิดมี WiFi ในตัว NodeMCU ESP8266 กับ Blynk Server และมือถือ เพื2อควบคุมสั2งการผ่าน WiFi โดยมีอุปกรณ์หลักที2ใช้คือรีเลย์ รีเลย์ (Relay) เป็นอุปกรณ์ที/เปลี/ยนพลังงานไฟฟ้าให้เป็นพลังงานแม่เหล็ก เพื/อใช้ในการดึงดูดหน้าสัมผัส ของคอนแทคให้เปลี/ยนสภาวะ โดยการป้อนกระแสไฟฟ้าให้กับขดลวด เพื/อทําการปิดหรือเปิดหน้าสัมผัส คล้ายกับสวิตช์อิเล็กทรอนิกส์ ซึ/งเราสามารถนํารีเลย์ไปประยุกต์ใช้ ในการควบคุมวงจรต่าง ๆ ในงานช่าง อิเล็กทรอนิกส์มากมาย รีเลย์ประกอบด้วยส่วนสําคัญ ´ ส่วนหลักก็คือ 1. ส่วนของขดลวด (coil) เหนี/ยวนํากระแสตํ/า ทําหน้าที/สร้างสนามแม่เหล็กไฟฟ้าให้แกนโลหะไปกระทุ้งให้ หน้าสัมผัสต่อกัน ทํางานโดยการรับแรงดันจากภายนอกต่อคร่อมที/ขดลวดเหนี/ยวนํานี P เมื/อขดลวดได้รับ แรงดัน(ค่าแรงดันที/รีเลย์ต้องการขึ Pนกับชนิดและรุ่นตามที/ผู้ผลิตกําหนด) จะเกิดสนามแม่เหล็กไฟฟ้าทําให้ แกนโลหะด้านในไปกระทุ้งให้แผ่นหน้าสัมผัสต่อกัน 2. ส่วนของหน้าสัมผัส (contact) ทําหน้าที/เหมือนสวิตช์จ่ายกระแสไฟให้กับอุปกรณ์ที/เราต้องการนั/นเอง จุดต่อใช้งานมาตรฐาน ประกอบด้วย จุดต่อ NC ย่อมาจาก normal close หมายความว่าปกติดปิด หรือ หากยังไม่จ่ายไฟให้ขดลวดเหนี/ยวนํา หน้าสัมผัสจะติดกัน โดยทั/วไปเรามักต่อจุดนี Pเข้ากับอุปกรณ์หรือเครื/องใช้ไฟฟ้าที/ต้องการให้ทํางาน ตลอดเวลาเช่น จุดต่อ NO ย่อมาจาก normal open หมายความว่าปกติเปิด หรือหากยังไม่จ่ายไฟให้ขดลวดเหนี/ยวนํา หน้าสัมผัสจะไม่ติดกัน โดยทั/วไปเรามักต่อจุดนี Pเข้ากับอุปกรณ์หรือเครื/องใช้ไฟฟ้าที/ต้องการควบคุมการเปิด ปิดเช่นโคมไฟสนามหนือหน้าบ้าน จุดต่อ C ย่อมากจาก common คือจุดร่วมที/ต่อมาจากแหล่งจ่ายไฟ