D E S I G N A N D fiffffl ffiflfl fifffflffi M A N U F A C T U R I N G
สารบัญ ใบงานที่ 1 แนะนำ ESP32 • แนะนำเกี่ยวกับ ESP32 • แนะนำ IO ต่างทางกายภาพ ใบงานที่ 2 แนะนำ Tool FT_IDE • การติดตั้งโปรแกรม FT-IDE • แนะนำเครื่องมือต่างๆใน FT-IDE • การใช้งาน FT-IDE • การ Compile และลงโปรแกรมใน FT-IDE ใบงานที่ 3 การใช้งาน Block ต่าง ๆ ใน FT-IDE 1 • การใช้งาน Block Logic • การใช้งาน Block loop • การใช้งาน Block Math • การใช้งาน Block Variables • การใช้งาน Block GPIO ใบงานที่ 4 การใช้งานอินพุตเอาต์พุต ใบงานที่ 5 แนะนำการใช้งาน Module SPI I2C ESP32 ใบงานที่ 6 การใช้งานระบบ Blynk IOT Platform (Android) ใบงานที่ 7 การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer • การใช้งาน โมดูล Relay • การใช้งาน โมดูล LED แสดงไฟสถานะ 8 ดวง • การใช้งาน โมดูล Passive Buzzer • การใช้งาน โมดูล Switch ใบงานที่ 8 การใช้งาน ESP32 กับ จอ LCD และ LED • การใช้งาน โมดูล OLED Display • การใช้งาน โมดูล LCD 1602 (I2C) • การใช้งาน โมดูล Dot Matrix • การใช้งาน โมดูล 7 Segment ใบงานที่ 9 การใช้งาน ESP32 กับ เซนเซอร์ต่าง ๆ • การใช้งาน โมดูล Temp and Humidity • การใช้งาน โมดูล Line Tracking • การใช้งาน โมดูล Water Level Sensor
• การใช้งาน โมดูล Ultrasonic Sensor HC-SR04 • การใช้งาน โมดูล Tilt Switch Sensor • การใช้งาน โมดูล Soil Humidity Sensor • การใช้งาน โมดูล Load Cell • การใช้งาน โมดูล IR Flame Detector • การใช้งาน โมดูล Small Sound • การใช้งาน โมดูล Raindrop Detection Sensor • การใช้งาน โมดูล Joy Stick • การใช้งาน โมดูล IR Receiver Remote • การใช้งาน โมดูล IR Infrared ใบงานที่ 10 การใช้งาน ESP32 กับ Rotary Encoders, Membrane Switch • การใช้งาน โมดูล Rotary Encoders • การใช้งาน โมดูล Membrane Switch ใบงานที่ 11 การใช้งาน ESP32 กับ RS485 โมดูลสื่อสาร, โมดูลเครื่องส่งสัญญาณอุณหภูมิ-ความชื้น • การใช้งาน โมดูล RS485 SH20 • การใช้งาน โมดูล ESP-01S DHT11 ใบงานที่ 12 การใช้งาน ESP32 กับ USB To FT232 ใบงานที่ 13 การใช้งาน ESP32 กับ โมดูลบันทึกข้อมูล และ โมดูลบอร์ดเก็บค่าเวลา ใบงานที่ 14 การใช้งาน ESP32 กับ โมดูลจีพีเอส ใบงานที่ 15 การใช้งาน ESP32 กับ โมดูลบอร์ดไวไฟและบลูทูธพร้อมกล้อง • การใช้งาน โมดูล Wifi Smart Relay • การใช้งาน โมดูล ESP Camera ใบงานที่ 16 การใช้งาน ESP32 กับ โมดูล Motor และ Stepper Drive • การใช้งาน โมดูล Drive & Stepper Motor • การใช้งาน โมดูล Driver L298N ใบงานที่ 17 การใช้งาน ESP32 กับ โมดูล Servo Motor ใบงานที่ 18 การใช้งาน ESP32 กับ โมดูล Gy Module 3 แกน X,Y,Z ใบงานที่ 19 การใช้งาน ESP32 กับ โมดูล RFID Reader RFID Tag ใบงานที่ 20 การใช้งาน ESP32 กับ โมดูล Bluetooth
แนะนำ การใช้งาน ESP32 หน้า 1/1 ใบงานที่ 1 4.1 แนะนำเกี่ยวกับ ESP32 ESP32 เป็นชื่อของไอซีไมโครคอนโทรลเลอร์ที่รองรับการ เชื่อมต่อ WiFi และ Bluetooth 4.2 BLE ในตัว โดยตัวไอซีESP32 มีสเปคโดยละเอียด ดังนี้ 4.1.1 ซีพียูใช้สถาปัตยกรรม Tensilica LX6 แบบ 2 แกนสมอง สัญญาณนาฬิกา 240MHz 4.1.2 มีแรมในตัว 512KB 4.1.3 รองรับการเชื่อมต่อรอมภายนอกสูงสุด 16MB 4.1.4 มาพร้อมกับ WiFi มาตรฐาน 802.11 b/g/n รองรับการใช้งานทั้งในโหมด Station softAP และ Wi-Fi direct 4.1.5 มีบลูทูธในตัว รองรับการใช้งานในโหมด 2.0 และโหมด 4.0 BLE 4.1.6 ใช้แรงดันไฟฟ้าในการทำงาน 2.6V ถึง 3V 4.1.7 ทำงานได้ที่อุณหภูมิ -40◦C ถึง 125◦C รูปที่ 4.1 ESP32 ฟังก์ชั่น Block Diagram
แนะนำ การใช้งาน ESP32 หน้า 1/2 ใบงานที่ 1 4.2 นอกจากนี้ESP32 ยังมีเซ็นเซอร์ต่าง ๆ มาในตัวด้วย ดังนี้ 4.2.1 วงจรกรองสัญญาณรบกวนในวงจรขยายสัญญาณ 4.2.2 เซ็นเซอร์แม่เหล็ก 4.2.3 เซ็นเซอร์สัมผัส (Capacitive touch) รองรับ 10 ช่อง 4.2.4 รองรับการเชื่อมต่อคลิสตอล 32.768kHz สำหรับใช้กับส่วนวงจรนับเวลาโดยเฉพาะ 4.3 ขาใช้งานต่าง ๆ ของ ESP32 รองรับการเชื่อมต่อบัสต่าง ๆ ดังนี้ 4.3.1 มีGPIO จำนวน 32 ช่อง 4.3.2 รองรับ UART จำนวน 3 ช่อง 4.3.3 รองรับ SPI จำนวน 3 ช่อง 4.3.4 รองรับ I2C จำนวน 2 ช่อง 4.3.5 รองรับ ADC จำนวน 12 ช่อง 4.3.6 รองรับ DAC จำนวน 2 ช่อง 4.3.7 รองรับ I2S จำนวน 2 ช่อง 4.3.8 รองรับ PWM / Timer ทุกช่อง 4.3.9 รองรับการเชื่อมต่อกับ SD-Card 4.4 นอกจากนี้ESP32 ยังรองรับฟังก์ชั่นเกี่ยวกับความปลอดภัยต่าง ๆ ดังนี้ 4.4.1 รองรับการเข้ารหัส WiFi แบบ WEP และ WPA/WPA2 PSK/Enterprise 4.4.2 มีวงจรเข้ารหัส AES / SHA2 / Elliptical Curve Cryptography / RSA-4096 ในตัว 4.5 ในด้านประสิทธิ์ภาพการใช้งาน ตัว ESP32 สามารถทำงานได้ดี โดย 4.5.1 รับ – ส่ง ข้อมูลได้ความเร็วสูงสุดที่ 150Mbps เมื่อเชื่อมต่อแบบ 11n HT40 ได้ความเร็วสูงสุด 72Mbps เมื่อเชื่อมต่อแบบ 11n HT20 ได้ความเร็วสูงสุดที่ 54Mbps เมื่อเชื่อมต่อแบบ 11g และได้ความเร็วสูงสุดที่ 11Mbps เมื่อเชื่อมต่อแบบ 11b 4.5.2 เมื่อใช้การเชื่อมต่อผ่านโปรโตคอล UDP จะสามารถรับ – ส่งข้อมูลได้ที่ความเร็ว 135Mbps 4.5.3 ในโหมด Sleep ใช้กระแสไฟฟ้าเพียง 2.5uA บอร์ด ESP32
แนะนำ การใช้งาน ESP32 หน้า 1/3 ใบงานที่ 1 ESP32 BROAD ESP32
แนะนำ Tool FT_IDE หน้า 2/1 ใบงานที่ 2 2.1 การติดตั้งโปรแกรม FT-IDE FT-IDE เป็น Tool Block program อย่างหนึ่งซึ่งการใช้งานเพียงแค่มีความรู้ในเรื่องของ Logic พื้นฐานก็สามารถที่จะเขียนโปรแกรมง่ายขึ้นมาได้เลย โดย FT-IDE ได้เรียบเรียงเครื่องมือต่างๆเอาไว้ให้ใช้ ครบถ้วน โดยการใช้งานเพียงแค่ลาก block ออกมาต่อกันจนกลายเป็นโปรแกรมๆ หนึ่ง 2.2 แนะนำเครื่องมือต่างๆ ใน FT-IDE 1. Board Menager ใช้สำหรับเลือกชนิดของบอร์ดที่ใช้งาน 2. Package Manager ใช้สำหรับติดตั้ง Tool เพิ่มเติม 3. ใช้สำหรับติดตั้ง Plugin เพิ่มเติม 4. เปิดตัวอย่างแต่ละโปรเจ็ค 5. ตั้งค่า (Setting)
แนะนำ Tool FT_IDE หน้า 2/2 ใบงานที่ 2 1. Serial Monitor 2. new Block 3. open Block 4. save Block 5. Compile code อย่างเดี่ยว 6. Compile code และลงโปรแกรมทรี่ ESP32 7. Setup Boardrat ของ Board ESP32 2.3 แนะนำเมนู และ block การใช้งานแบบต่างๆ 2.3.1 GPIO Block จะรวมเอา Block ต่างๆที่ใช้ในการสั่งงาน GPIO ทั้งหมดอยู่ในแถบเมนูนี้ 2.3.2 Time เป็น Block ที่รวมเอาการใช้งานด้านเวลาทั้ง delay และการนับเวลาต่าง
แนะนำ Tool FT_IDE หน้า 2/3 ใบงานที่ 2 2.3.3 Variable ใช้ในการสร้างตัวแปลที่ใช้ในโปรแกรม 2.3.4 Math จะรวม Block เกี่ยวกับการคำนวณ บวก ลบ คูณ หาร sin code 2.3.5 Logic รวมการตัดสินใจทาง Logic AND OR NOR และ IF-ELSE 2.3.6 Loop รวม block การทำงานของการวนการทำงานแบบ ไม่รู้จบ และการวนการทำงานแบบ มีเงื่อนไข
แนะนำ Tool FT_IDE หน้า 2/4 ใบงานที่ 2 2.3.7 Advaanced รวม Block การทำงาน การสร้าง Function String WIFI Bluetooth Serial Task MQTT ไว้ด้วยกัน 2.3.8 Plugins จะรวม Block การทำงานที่เป็น lib พิเศษทั้งหมด lib ที่เดี่ยวกับ sensor ต่างๆ 2.4 การใช้งาน FT-IDE 2.4.1 ให้เลือกตรง Board Menager จากนั้นเลือก ESP32 Doit หากขึ้นเตือน ERROR อะไรไม่ต้อง ตกใจให้กด OK หรือ Cancel ออกมาก็พอ
แนะนำ Tool FT_IDE หน้า 2/5 ใบงานที่ 2 2.4.2 เริ่มการเขียนโปรแกรมอย่างง่าย 2.4.3 ทุกครั้งที่มีการ NEW File ใหม่ จะมีฟังก์ชั้นหลักสร้างตัวนี้สร้านขึ้นมาเอง เสมอคือ Setup และ Loop ซึ่งเหมือนกับการเขียนโปแกรม Arduino จะเริ่มทำโปรแกรมไฟกระพริบ 1 ดวง แบบง่ายๆ 2.4.4 ลาก Block ต่างๆให้ได้แบบในรูป 2.4.5 จากนั้นกด Compile Code เพื่อเช็คว่าเราลาก Block มาต่อกันถูกต้องหรือไหม หาก compile ผ่าน จะขึ้นดังในรูป
แนะนำการใช้งาน Block ต่างๆ ใน FT-IDE 1 หน้า 3/1 ใบงานที่ 3 3.1แนะนำการใช้งาน Block ต่างๆ 3.1.1 การใช้งาน Block Logic เป็นการกระทำด้านการตัดสิ้นในต่างๆโดยการใช้ logic ใช่หรือไม่ใช้ หรือเทากับมากกว่าน้อย กว่า โดยสามารถนำตัวแปลที่สร้างไว้มาใช้ใน Block นี้เพ่อตัดสินใจก็ได้
แนะนำการใช้งาน Block ต่างๆ ใน FT-IDE 1 หน้า 3/2 ใบงานที่ 3 3.1.2 การใช้งาน Block Time มีรายละเอียดดังนี้ 1. Delay millisecond delay MS 2. Delay microseconds delay Us 3. Sysnc internet time ซิงเวลา กับ Internet 4. Get year อ่านปี 5. Get month อ่านเดือน 6. Get day of month อ่านวันที่ในเดือนนั้น 7. Get day of week อ่านค่า จ-อ 8. Get hour, get minute, get second อ่านค่าเวลา
แนะนำการใช้งาน Block ต่างๆ ใน FT-IDE 1 หน้า 3/3 ใบงานที่ 3 3.1.3 การใช้งาน Block Math เป็นการคำนวณ พื้นฐานทั้งหมด
แนะนำการใช้งาน Block ต่างๆ ใน FT-IDE 1 หน้า 3/4 ใบงานที่ 3 3.1.4 การใช้งาน Block Variables เราสามารถสร้างตัวแปลเพื่อเก็บค่าต่างได้จากการกด Create varible เมื่อและใส่ชื่อตัวแปล เราจะได้ตัวแปลนั้นที่สร้างขึ้นมาเป็น Block ดังในรูปด้านล่าง
แนะนำการใช้งาน Block ต่างๆ ใน FT-IDE 1 หน้า 3/5 ใบงานที่ 3 3.1.5 การใช้งาน Block GPIO มีรายละเอียดดังนี้ 1. Set pin กำหนดการทำงานของ GPIO จะให้เป็น input หรือ output 2. Digital read pin อ่านค่า logic ของขาที่สนใจ 3. Read analog input pin อ่านค่า ADC 4. Analog write pin เขียนค่าไปยังขา DAC 5. PWM write pin สั่งงาน PWM ไปยังขาที่กำหนด 6. Read pulse in from pin อ่านค่า เวลาจากขาที่สนใจ
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/1 ใบงานที่ 4 4.1 การใช้ FT-IDE ควบคุมและสั่งงาน IoT ESP32 4.2 การใช้งาน Serial port ผ่าน FT-IDE • การใช้งาน Serial debug การใช้งาน Serial function เพื่อนำค่าต่างๆของตัวแปลหรือขข้อความโชว์ออกไปยัง serial terminal ซึ่ง Block ที่ใช้งานจะอยู่ในต่ำแหน่งดังรูปด้านบน 4.3 การใช้งาน Serial port รับค่าข้อมูลจาก - ใช้ init serial USB ความเร็ว 115200 - ใช่สำหรับ init serial ที่ต่ำแหน่งค่าที่เราต้องการจะใช้งาน - ใช้สำหรับวนรอรับค่าจาก Serial - ใช้สำหรับเขียนค่าต่างๆไปยัง serial - ใช้สำหรับอ่านค่าจาก buffer serial
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/2 ใบงานที่ 4 ด้านล่างจะเป็นโปรแกรมตัวอย่าง ในการ print ค่ำว่า HELLO World ออกทาง serial terminal 4.4 การ Debug ผ่าน serial port #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); } void loop() { }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/3 ใบงานที่ 4 4.5 การใช้งาน A to D และ การใช้งาน D to A A to D คือการรับค่าจากสัญญาณแรงดันไฟตั้งแต่ 0-3.3V กลับมายัง ESP32 ให้เป็นค่าตัวเลข 0-4095 โดยใช้ D to A คือการแปลงกลับจากค่า ตัวเลข 0-128 ไปเป็น 0-3.3V การเรียกใช้งานดูได้จากตัวอย่างโปรแกรมด้านล่าง #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> Number ADC; void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); } void loop() { ADC = analogRead(36); dacWrite(25, 128); Serial.println(((String("ADC:") + String(ADC)))); }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/4 ใบงานที่ 4 4.6 การใช้งาน Timer Delay จะมีสองตัวคือ delayms และ delayus #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); pinMode(23, OUTPUT); } void loop() { digitalWrite(23, 1); delayMicroseconds(1000); digitalWrite(23, 0); delayMicroseconds(1000); }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/5 ใบงานที่ 4 4.7 การใช้งาน PWM การใช้ PWM จะใช้ Block หน้าตาแบบด้านบน #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> void setup() { ledcSetup(0, 5000, 8); ledcAttachPin(23, 0); Serial.begin(115200); Serial.println(String("Hello World!")); pinMode(23, OUTPUT); } void loop() { ledcWrite(0, 128); }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/6 ใบงานที่ 4 4.8 การใช้งาน Block WIFI เบื้องต้น ใน SSD ให้ใส่ wifi ที่เราต้องการจะเชื่อมต่อ Password ใส่ของ wifi ตัวนั้นๆ ดังตัวอย่าง #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); WiFi.begin("WOFO1", "1234567890"); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void loop() { } การเชื่อมต่อ MQTT server การจะเชื่อมต่อ MQTT server ได้ขั้นตอนแรกเราจะต้องทำการเชื่อม WIFI ให้เสร็จก่อนจากนั้นถึง จะทำกระบวนการของ MQTT ดังตัวอย่างด้านล่าง MQTT begin จะต้องใส่ parameter Host Port username password Connect ตามด้วยชื่อของ ที่เราจะให้โชว์ ชิ้นงานสำหรับสั่งให้เชื่อมต่อไปยัง MQtt server • MQTT subscribe ใช้สำหรับ รอรับข้อมูลกลับมาจาก topic ที่เราสนใจ • MQTT Callback message รอรับข้อมูลที่ส่งกลับมาจาก server • MQTT LOOP จะต้องใส่ไว้ด้วยเสมอใน loop main
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/7 ใบงานที่ 4 #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> #include <WiFi.h> #include <PubSubClient.h> WiFiClient client; PubSubClient mqtt(client, "mqtt.cmmc.io", 1883); void callback(const MQTT::Publish& pub) { String topic = String(pub.topic()); String payload = pub.payload_string(); Serial.println((topic)); Serial.println((payload)); } void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); WiFi.begin("WOFO1", "1234567890"); while (WiFi.status() != WL_CONNECTED) { delay(500); }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/8 ใบงานที่ 4 mqtt.set_callback(callback); mqtt.connect(MQTT::Connect("CLIENT-KR24XE5C").set_auth("test", "")); mqtt.subscribe("KBIDE/"); } void loop() { mqtt.loop(); } 4.9 การสร้าง Function ด้วย Block ต่างๆ ตัวอย่างการทำ function ไฟกระพริบ ไม่คืนค่าออก คืนค่าออก ออกจาก function โดยเช็คเงื่อนไข
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/9 ใบงานที่ 4 #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> void LED_Working(); void LED_Working() { digitalWrite(23, 1); delayMicroseconds(1000); digitalWrite(23, 1); delayMicroseconds(1000); return; } void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); pinMode(23, OUTPUT); } void loop() { /** * Describe this function... */ LED_Working(); } การทำ Function แบบคืนค่าออกไปใช้งาน การบวกเลข
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/10 ใบงานที่ 4 การเพิ่มตัวแปล input เข้ามาใช้ใน Function #include <Arduino.h> #include <WiFi.h> #include <WiFiClient.h> #include <WiFiAP.h> #include <WebServer.h> number do_something(undefined A1, int A2); int A1; int A2; int sumdata; Number sum; number do_something(undefined A1, int A2) { sum = A1 + A2; return sum; } void setup() { Serial.begin(115200); Serial.println(String("Hello World!")); pinMode(23, OUTPUT); } void loop() { /** * Describe this function... */ sumdata = do_something(5, 5); }
การใช้งานอินพุตเอาต์พุต ของ ESP32 หน้า 4/11 ใบงานที่ 4 4.10 การสร้างโปรแกรมพื้นฐานโดยใช้หัวข้อการเรียนที่ 1.1-1.10
แนะนำการใช้งาน Module SPI I2C ESP32 หน้า 5/1 ใบงานที่ 5 4.1 โมดูลจอ LCD 1602 (I2C) รหัสอุปกรณ์ F11105 การต่อใช้งานจอ LCD ที่ใช้การสื่อสารอนุกรมแบบ I2C (Inter-Integrated Circuit) อ่านว่า "ไอสแควร์ซี" ที่เป็น Slave สามารถติดต่อกลับมาที่ Master ได้เพื่อส่งข้อมูลกลับ (สื่อสารแบบ Half Duplex) Master เรียก Slave โดยส่งข้อมูล Address ไปที่บัส SDA (สายสัญญาณข้อมูล) ซึ่งจะเข้า จังหวะกับ SCL (สาย Clock) Slave ที่ถูกเรียกจะส่งสัญญาณ Acknoledge กลับไปที่ SDA โดยการ Pull Down ให้แรงดันเป็น 0 V เมื่อมีการตอบกลับจาก Slave แล้ว Master ก็จะสามารถส่งคำสั่งอื่นๆ เพื่อกำหนดการทำงานของ Slave เช่น สั่งให้เก็บข้อมูล หรือ แสดงค่าต่างๆ ตามที่โมดูล Slave ที่ได้ ออกแบบไว้ รูปการต่อวงจรทดลองที่ 1.1 ด้านหน้า ด้านหลัง
แนะนำการใช้งาน Module SPI I2C ESP32 หน้า 5/2 ใบงานที่ 5 ทีนี้ตัว PCF8574 สามารถใช้ได้เพียง 8 Pin เท่านั้น เนื่องจากมีขนาดเท่ากับ 1 byte ตามที่ I2C ส่งไปใน แต่ละ Package แต่ LCD มีอยู่ทั้งหมดมากกว่า 16 ขา แต่ LCD ยังมีโหมด 4 Bit ให้สามารถเลือกใช้ ดังนั้น หาก เลือกใช้งานในโหมดนี้ เราก็ยังเหลือข้อมูลไว้ใช้กับ RW และ ENA รวมถึง การควบคุม Back Light ได้อีก ตัวอย่าง Block โปรแกรม Block โปรแกรม FT-IDE
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/1 ใบงานที่ 6 การทำให้อุปกรณ์เชื่อมต่อกับอินเทอร์เน็ตหรือที่เรียกกันว่า Internet of Thing นั้น หลายคนอาจมองว่าเป็นเรื่อง ยาก แต่ ณ ปัจจุบันนี้ เราสามารถทำอุปกรณ์ IoT ง่าย ๆ เพียงลากบล็อกไม่กี่นาที ก็สามารถทำได้แล้ว Blynk รองรับการเชื่อมต่อกับบอร์ดไมโครคอนโทรลเลอร์ และรองรับการทำงานบน Android โดยการ รับส่งข้อมูลแอพพลิเคชั่น Blynk จะเชื่อมต่ออยู่กับ Blynk server ซึ่งจะใช้ Token ในการแยกแยะอุปกรณ์ที่ทำ การเชื่อมต่อ ซึ่งการขอ Token จะได้เมื่อตอนที่ Register เข้าแอพพลิเคชั่นนั่นเอง โดย Blynk Server ที่ใช้จะเป็น version เก่า จะsupport การทำงานกับ app version เก่าเท่านั้น ซึ่ง จะลงได้ใน Androir เท่านั้น โดยหากตั้งการใช้เป็น version ใหม่ ที่รองรับทั้ง Android และ IOS จะต้องไปใช้ version ใหม่ซึ่งจะมีค่าใช้จ่ายในการใช้งาน Blynk คือ Application สำเร็จรูปสำหรับงาน IOT มีความน่าสนใจคือการเขียนโปรแกรมที่ง่าย ไม่ต้อง เขียน App เองสามารถใช้งานได้อย่าง Real time สามารถเชื่อมต่อ Device ต่างๆเข้ากับ Internet ได้อย่าง ง่ายดาย ไม่ว่าจะเป็น Arduino, Esp8266, Esp32, Nodemcu, Rasberry pi นำมาแสดงบน Application ได้ อย่างง่ายดาย แล้วที่สำคัญ Application Blynk ยังฟรี และ รองรับในระบบ IOS และ Android ในยุคสมัยก่อน การเขียนโปรแกรมเชื่อมต่อกันระหว่าง อุปกรณ์ 2 ชิ้นเข้าด้วยกันมักจะใช้งานใน ลักษณะของ Server >>> Client ทำให้เกิดข้อจำกัดต่างๆมากมาย ยกตัวอย่าง เราต้องการเปิดปิดไฟ ผ่านหน้า เว็บ เราก็จะให้ Arduino เป็น Server และ เครื่องคอมพิวเตอร์ (Client) เป็นเครื่องลูก ข้อจำกัดที่เกิดขึ้นคือ ทรัพยากร เช่น CPU RAM ROM ของเราอาจจะไม่พอ มักจะเจอปัญหาเอ๋อบ่อย ค้างไปดื้อๆ ก็มี ทำให้การ เขียนโปรแกรม
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/2 ใบงานที่ 6 เป็นไปได้ยากต้องประหยัดทรัพยากรให้ได้มากที่สุดเพื่อจะให้สามารถทำงานได้ และการเซ็ต Netword เป็นไปได้ยาก ส่วนใหญ่มักจะใช้ในวง Lan หรือถ้าต้องการ ควบคุบผ่าน Wan จะต้อง Forword Set ระบบ Network ต่อมาเป็นยุคของ Cloud เกิดขึ้น บวกกับมี Chip Wifi ราคาถูก Esp32 ถูกผลิตขึ้นมา แต่ด้วยข้อจำกัด ทางด้านทรัพยากร จึงมือวิธีการคิดว่า ถ้านำข้อมูลไปใส่ลงใน Server เลยละแล้วให้ Device ของเราเรียกเข้าไป แก้ไข หรืออ่านข้อมูลโดยตรง ทำให้ความฉลาดของตัวอุปกรณ์ของเราไม่มีวันสิ่นสุดหมดข้อจำกัดหลายอย่าง Device กลายเป็นแค่ตัวรับ Data และส่ง Data มาแสดงเท่านั้น ทำให้ Chip Esp32 จึงได้รับความนิยมใน ปัจจุบัน วิธีการทำงานของ Blynk เริ่มจาก อุปกรณ์ เช่น Arduino esp8266 Esp32 Rasberry Pi เชื่อมต่อไป ยัง Server ของ Blynk โดยตรง สามารถรับส่งข้อมูลหากันได้ คอมพิวเตอร์ Smartphone ก็จะเชื่อมต่อกับ Server ของ Blynk โดยตรง กลายเป็นว่า มี Server เป็น สะพานให้เชื่อต่อหากันจึงหมดปัญหาและข้อจำกัดทุกอย่างทำให้อุปกรณ์ของเรามีความฉลาดมากขึ้น การออกแบบในลักษณะ ภาพที่ 3 เป็นที่นิยมมากในปัจจุบัน เพราะไม่จำเป็นต้อง Set อุปกรณ์ Network ต่างๆ ให้ปวดหัว พูดถึงระบบไปแล้วคราวนี้เราจะมาดูความสามารถของ Application Blynk ดูบ้างว่าสามารถทำอะไรได้บ้าง
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6 / 3 ใบงานที่6
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/4 ใบงานที่ 6 ตัวอย่างบล็อกในโปรแกรม ใช้สำหรับกำหนด Token ที่ได้มาจาก serer ใช้สำหรับกำหนด Token ที่ได้มาจาก serer และกำหนดว่าจะเชื่อมต่อ กับ wifi ในระบบตัวไหน ใช้สำหรับกำหนด Token ที่ได้มาจาก serer และกำหนดว่าจะเชื่อมต่อ กับ wifi ในระบบตัวไหนและ PORT ที่ เท่าไรของ serer ฟังก์ชั้นนี้จะต้องอยู่ใน Loop ทำงานรอรับค่าจาก Blink ตลอดเวลา
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/5 ใบงานที่ 6 Call back รอรับค่าจาก Blink ผ่าน virtual PIN อ่านค่า data ต่าง 3แบบ เขียน data ไปที่ Virtual Pin ที่กำหนด จะต้องมีการ delay 100ms ทุกครั้งหากเขียน data ติดต่อกัน ร้องขอ data จาก blynk
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/6 ใบงานที่ 6 โปรแกรม เริ่มการเชื่อมต่อกับ server Blynk #define BLYNK_PRINT Serial #include <WiFi.h> #include <WiFiClient.h> #include <BlynkSimpleEsp32.h> void setup() { Serial.begin(115200); Blynk.begin("-your auth key-", "wifi ssid", "wifi password"); } void loop() { Blynk.run(); }
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/7 ใบงานที่ 6 โปรแกรมรอรับ data จาก Blynk ผ่าน Bloak call back int pinValue; BLYNK_WRITE(V1) { pinValue = param.asInt(); Serial.println(((String("V1 Slider value is: ") + String(pinValue)))); } void setup() { Serial.begin(115200); Blynk.begin("-auth token-", "your wifi ssid", "your wifi password"); } void loop() { Blynk.run(); }
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/8 ใบงานที่ 6 โปแกรมส่งค่าข้อมูลไปยัง Blynk KBEvent kbevt; void setup() { kbevt.attach("SendDataJob", KBEventType::EVERY, []() { Blynk.virtualWrite(V5, (millis() / 1000)); }, 1000); Serial.begin(115200); Blynk.begin("-auth token-", "your wifi ssid", "your wifi password"); } void loop() { Blynk.run(); }
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/9 ใบงานที่ 6 โปรแกรมเมื่อมีการร้องขอ data มาจาก blynk จะมีการส่ง data กลับ โดยผ่าน call back ของ blynk BLYNK_READ(V5) { Blynk.virtualWrite(V5, (millis() / 1000)); } void setup() { Serial.begin(115200); Blynk.begin("-auth token-", "your wifi ssid", "your wifi password"); } void loop() { Blynk.run(); } การใช้ Blynk ติดต่อ Local server
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6 /10 ใบงานที่6 ตั้งค่า Widget ใน แอพพลิเคชั่น Blynk
การใช้งานระบบ Blynk IOT Platfrom (Android) หน้า 6/11 ใบงานที่ 6 ตั้งค่า Widget ใน แอพพลิเคชั่น Blynk
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/1 ใบงานที่ 7 7. การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch 1. โมดูล Relay รหัสอุปกรณ์ F12107 โมดูลรีเลย์ 4 ช่อง แบบแยกสัญญาณ Isolation ใช้ไฟ 3.3 - 5VDC ขนาด 120V 0.5A ทำงานแบบ ActiveLow หรือเอาสัญญาณกราวน์เข้าไปที่ขั้ว In1 ของบอร์ดรีเลย์ รีเลย์ก็จะทำงาน รูปอุปกรณ์รีเลย์ การทดลองที่ 1 ทดลองโดยใช้อุปกรณ์ประกอบการทดลอง ESP32 กับบอร์ดรีเลย์ อุปกรณ์ประกอบการทดลองมีดังนี้ ลำดับ รายการอุปกรณ์ทดลอง รหัสอุปกรณ์ จำนวน 1.1 บอร์ด ESP32S F12105 1 แผง 1.2 บอร์ด Breadboard + Adapter F13104 1 แผง 1.3 บอร์ด Relay F12107 1 แผง 1.4 สายไฟต่อวงจรการทดลอง 3 เส้น 1.5 สายไฟเชื่อมต่อ IDE 2 เส้น 1.6 ชุดจ่ายไฟเข้า Adapter 9V 1 ชุด
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/2 ใบงานที่ 7 รูปภาพการต่อวงจรการทดลองที่ 1 ESP32 กับบอร์ดรีเลย์ รูปวงจรการทดลองที่ 1
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/3 ใบงานที่ 7 2. โมดูล LED แสดงไฟสถานะ 8 ดวง รหัสอุปกรณ์ F12106 ถ้าต้องการสร้างสัญญาณไฟเตือนแบบง่าย ๆ LED เป็นตัวสร้างสัญญาณไฟที่ง่ายที่สุด เพียงแค่ ใช้งานร่วมกับตัวตานทาน จ่ายไฟ 3.3 - 5VDC ไปที่บอร์ดทดลอง LED ก็สร้างสัญญาณไฟเตือนได้แล้ว รูปอุปกรณ์ LED การทดลองที่ 2 ทดลองโดยใช้อุปกรณ์ประกอบการทดลอง ESP32 กับบอร์ด LED อุปกรณ์ประกอบการทดลองมีดังนี้ ลำดับ รายการอุปกรณ์ทดลอง รหัสอุปกรณ์ จำนวน 2.1 บอร์ด ESP32S F12105 1 แผง 2.2 บอร์ด Breadboard + Adapter F13104 1 แผง 2.3 บอร์ด LED F12106 1 แผง 2.4 บอร์ด Resistor F12104 1 แผง 2.5 สายไฟต่อวงจรการทดลอง 3 เส้น 2.6 สายไฟเชื่อมต่อ IDE 2 เส้น 2.7 ชุดจ่ายไฟเข้า Adapter 9V 1 ชุด
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/4 ใบงานที่ 7 รูปภาพการต่อวงจรการทดลองที่ 2 ESP32 กับบอร์ด LED รูปวงจรการทดลองที่ 2
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/5 ใบงานที่ 7 3. โมดูล Passive Buzzer รหัสอุปกรณ์ F11107 ถ้าต้องการสร้างเสียงเตือนแบบง่าย ๆ Active Buzzer เป็นตัวสร้างเสียงที่ง่ายที่สุด เพียงแค่ จ่ายไฟ 3.3 - 5VDC ไปที่ Active Buzzer ก็สร้างเสียงร้องได้แล้ว ข้อมูลเพิ่มเติม Active Buzzer ▪ Voltage: 3.5-5.5 V ▪ Current: < 25 ma ▪ Frequency: 2300 + 500 รูปโมดูลสัญญาณเสียง Buzzer ตัวอย่าง Block โปรแกรม ด้านหน้า ด้านหลัง
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/6 ใบงานที่ 7 การทดลองที่ 3 ทดลองโดยใช้อุปกรณ์ประกอบการทดลอง ESP32 กับบอร์ด Buzzer อุปกรณ์ประกอบการทดลองมีดังนี้ ลำดับ รายการอุปกรณ์ทดลอง รหัสอุปกรณ์ จำนวน 3.1 บอร์ด ESP32S F12105 1 แผง 3.2 บอร์ด Breadboard + Adapter F13104 1 แผง 3.3 บอร์ด Passive Buzzer F11107 1 แผง 3.4 สายไฟเชื่อมต่อวงจร 3 เส้น 3.5 สายไฟเชื่อมต่อ IDE 2 เส้น 3.6 ชุดจ่ายไฟเข้า Adapter 9V 1 ชุด รูปภาพการต่อวงจรการทดลองที่ 2 ESP32 กับบอร์ด LED รูปวงจรการทดลองที่ 3
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/7 ใบงานที่ 7 2. โมดูล Switch รหัสอุปกรณ์ F12103 โมดูล Switchg เป็นสวทช์ 2 แบบคือ สวิทช์โยก toggle switch และสวิทช์ปุ่มกด SMD Push Button Switch ใช้ไฟ 5VDC เมื่อยังไม่กดให้สัญญาณ 1 เมื่อกดสวิตช์ให้สัญญาณ 0 รูปอุปกรณ์สวิทช์ การทดลองที่ 1 ทดลองโดยใช้อุปกรณ์ประกอบการทดลอง ESP32 กับบอร์ดรีเลย์ อุปกรณ์ประกอบการทดลองมีดังนี้ ลำดับ รายการอุปกรณ์ทดลอง รหัสอุปกรณ์ จำนวน 3.7 บอร์ด ESP32S F12105 1 แผง 3.8 บอร์ด Breadboard + Adapter F13104 1 แผง 3.9 บอร์ด Switch F12103 1 แผง 3.10 สายไฟต่อวงจรการทดลอง 3 เส้น 3.11 สายไฟเชื่อมต่อ IDE 2 เส้น 3.12 ชุดจ่ายไฟเข้า Adapter 9V 1 ชุด
การใช้งาน ESP32 กับบอร์ดรีเลย์, LED, Buzzer, Switch หน้า 7/8 ใบงานที่ 7 รูปภาพการต่อวงจรการทดลองที่ 4 ESP32 กับบอร์ด Switch รูปวงจรการทดลองที่ 4
การใช้งาน ESP32 กับ จอ LCD และ LED หน้า 8/1 ใบงานที่ 8 8. การใช้งาน ESP32 กับ จอ LCD และ LED 1. โมดูล OLED Display รหัสอุปกรณ์ F11103 OLED (Organic Light-Emitting Diode) จอแสดงผลกราฟิกที่สร้างจาก “สารกึ่งตัวนำอินทรีย์” (Organic Semiconductor) เป็นชั้นบาง ๆ จะเปล่งแสงเมื่อมีกระแสไฟฟ้าไหลผ่าน การแสดงผลข้อมูลด้วยจอ LCD จะมีข้อด้อยกว่า OLED เนื่องจาก จอ OLED ไม่มี Backlight จึงทำให้ขนาดของ OLED เล็กกว่า เบากว่า และใช้พลังงานต่ำกว่า รูปโมดูล OLED Display ตัวอย่าง Block โปรแกรม ด้านหลัง ด้านหน้า
การใช้งาน ESP32 กับ จอ LCD และ LED หน้า 8/2 ใบงานที่ 8 ในฟังก์ชัน Loop จะเป็นการแสดงภาพออกจอแสดงผล ให้คลิกที่จอสีขาว ข้อความ choose your image จะปรากฏหน้าต่างใหม่ ให้เลือกรูปใส่เข้าไปในโปรแกรม 1) ตัวแปร img สำหรับเก็บรูปภาพ 2) ตำแหน่งแสดงภาพ X 3) ตำแหน่งแสดงภาพ Y 4) ขนาดความกว้างของรูป 5) ขนาดความสูงของรูป 6) อัพโหลดรูป