31
2.16 Arduino ESP32
รปู ที่ 2.21 หนา้ ตาของชปิ ไอซี ESP32 ในรูปตวั ถัง QFN-42
ทีม่ า: https://www.artronshop.co.th/article/51/esp32
ESP32 เป็นชื่อของไอซีไมโครคอนโทรลเลอรท์ รี่ องรับการเช่ือมต่อ WiFi และ Bluetooth 4.2 BLE ในตัว
ผลติ โดยบริษัท Espressif จากประเทศจีน โดยราคา ณ ที่เขยี นบทความอยนู่ ้ี
มรี าคาไม่เกนิ 500 บาท (บอร์ดพฒั นาสำเรจ็ รูป) โดยตัวไอซี ESP32 มสี เปคโดยละเอยี ด ดังน้ี
− ซีพียใู ชส้ ถาปตั ยกรรม Tensilica LX6 แบบ 2 แกนสมอง สญั ญาณนาฬิกา 240MHz
− มีแรมในตัว 512KB
− รองรับการเชื่อมต่อรอมภายนอกสงู สุด 16MB
− มาพร้อมกับ WiFi มาตรฐาน 802.11 b/g/n รองรบั การใช้งานทงั้ ในโหมด Station
softAP และ Wi-Fi direct
− มีบลูทูธในตวั รองรบั การใช้งานในโหมด 2.0 และโหมด 4.0 BLE
− ใชแ้ รงดนั ไฟฟา้ ในการทำงาน 2.6V ถึง 3V
− ทำงานได้ทีอ่ ุณหภมู ิ -40◦C ถงึ 125◦C
นอกจากน้ี ESP32 ยังมเี ซน็ เซอรต์ ่าง ๆ มาในตวั ด้วย ดังนี้
− วงจรกรองสญั ญาณรบกวนในวงจรขยายสญั ญาณ
− เซน็ เซอร์แม่เหลก็
− เซ็นเซอร์สัมผัส (Capacitive touch) รองรบั 10 ชอ่ ง
32
− รองรบั การเช่อื มต่อคลิสตอล 32.768kHz สำหรบั ใชก้ ับสว่ นวงจรนับเวลาโดยเฉพาะ
ขาใชง้ านต่าง ๆ ของ ESP32 รองรบั การเชอื่ มต่อบัสตา่ ง ๆ ดังนี้
− มี GPIO จำนวน 32 ช่อง
− รองรับ UART จำนวน 3 ชอ่ ง
− รองรบั SPI จำนวน 3 ช่อง
− รองรบั I2C จำนวน 2 ชอ่ ง
− รองรับ ADC จำนวน 12 ช่อง
− รองรบั DAC จำนวน 2 ช่อง
− รองรบั I2S จำนวน 2 ชอ่ ง
− รองรับ PWM / Timer ทุกช่อง
− รองรบั การเชอ่ื มตอ่ กบั SD-Card
นอกจากน้ี ESP32 ยังรองรบั ฟงั ก์ชัน่ เกี่ยวกับความปลอดภยั ต่าง ๆ ดงั น้ี
− รองรับการเขา้ รหสั WiFi แบบ WEP และ WPA/WPA2 PSK/Enterprise
− มวี งจรเข้ารหัส AES / SHA2 / Elliptical Curve Cryptography / RSA-4096 ในตัว
ในดา้ นประสทิ ธภิ์ าพการใช้งาน ตัว ESP32 สามารถทำงานไดด้ ี โดย
− รับ – ส่ง ข้อมูลได้ความเร็วสูงสุดที่ 150Mbps เมื่อเชื่อมต่อแบบ 11n HT40 ได้ความเร็ว
สูงสุด 72Mbps เมื่อเชื่อมต่อแบบ 11n HT20 ได้ความเร็วสูงสุดที่ 54Mbps เมื่อเชื่อมต่อ
แบบ 11g และได้ความเร็วสูงสดุ ท่ี 11Mbps เม่อื เชอ่ื มตอ่ แบบ 11b
− เมอื่ ใชก้ ารเชือ่ มตอ่ ผ่านโปรโตคอล UDP จะสามารถรับ – สง่ ข้อมลู ได้ทค่ี วามเรว็ 135Mbps
− ในโหมด Sleep ใชก้ ระแสไฟฟ้าเพยี ง 2.5uA
จะเห็นได้ว่า ในราคาไม่ถึง 500 บาท (บอร์ดพัฒนาสำเร็จรูป) และโมดูลเปล่าราคาไม่ถึง 400
บาท สามารถให้ประสิทธิ์ภาพได้เกินราคา ด้วยเหตุน้ี ESP32 จึงเหมาะสำหรับนำมาใช้งานมาก ด้วย
เหตุผลทางดา้ นราคา และประสิทธภิ์ าพท่ไี ด้
2.16.1 ประวัตคิ วามเป็นมาของ ESP32
ก่อนท่ี ESP32 จะได้ถือกำเนิดขึ้น ได้มีไอซีไมโครคอนโทรลเลอร์ที่มี WiFi ในตัว และ
ทำราคาไดถ้ กู มาก ๆ ในขณะนัน้ (เพยี ง $5 หรือประมาณ 200 บาท) ออกมาปฏิวัตโิ ลกของระบบสมองกล
ฝังตัว นั่นก็คือไอซีเบอร์ ESP8266 ที่ผลิตโดยบริษัท Espressif จากประเทศจีน ในช่วงเริ่มแรก
33
ไอซี ESP8266 สามารถทำงานได้โดยใช้การสื่อสารผ่าน UART เท่านั้น และพูดคุยสั่งงานผ่าน AT
command ไม่สามารถอัพเดท หรือแก้ไขเฟิร์มแวร์ด้านในได้ แต่ต่อมาไม่นานบริษัท Espressifก็ได้ออก
ไอซีเวอร์ชั่นใหม่มา ในครั้งนี้สามารถที่จะอัพเดทเฟิร์มแวร์ได้ และเราสามารถลงไปเขียนเฟิร์มแวร์เองได้
โดยในขณะนน้ั การเขียนเฟิร์มแวรจ์ ะใช้ภาษา C เพียงอย่างเดยี ว และใช้ ESP8266 SDK เปน็ ชุดซอฟแวร์
พัฒนา ด้วยความยากของการใช้งานภาษา C เพียงอย่างเดียว ทำให้ไม่ได้รับความนิยมเรื่องการพัฒนา
เฟริ ์มแวร์เองมากนกั
รูปที่ 2.22 โมดูล ESP8266 01 ผลติ โดยบริษทั Ai-Thinker หวั ใจหลกั คอื ไอซี ESP8266
ท่ีมา: https://www.artronshop.co.th/article/51/esp32
หลังจากนัน้ มาประมาณ 1 ปี ผู้ผลติ บอรด์ Node MCU ได้พอรต์ ตวั Runtime ภาษา Lua มา
ลงใน ESP8266 ทำให้ตัว ESP8266 สามารถเขียนโปรแกรมสั่งงานตรง ๆ ได้ง่ายขึ้นมาก รวมทั้งมี
เสถียรภาพเพิ่มขึ้น และในขณะนี้เอง บอร์ด Node MCU เป็นบอร์ดพัฒนา ESP8266 สำเร็จรูปเพียง
บอร์ดเดียวในตลาด ที่มาพร้อมกับ USB to UART ทำให้ให้สามารถอัพโหลดเฟิร์มแวร์เข้า ESP8266 ได้
ผ่าน USB โดยตรง นอกจากน้ีผู้พัฒนาบอร์ด Node MCU ได้คิดค้นวงจรการเข้าโหมดอัพโหลดโปรแกรม
อัตโนมัติ และตั้งชื่อว่า node MCU ซึ่งภายหลังบอร์ดพัฒนาทุกรุ่น จะใช้วงจรแบบ node MCU ในการ
เข้าโหมดอัพโหลดโปรแกรมอัตโนมัติ และด้วยเหตุผลที่บอร์ด Node MCU เป็นบอร์ด
พัฒนา ESP8266 บอร์ดแรกในท้องตลาด ทำให้ได้รับความนิยมมาก และหลังจากบริษัทในจีนต่าง ๆ ได้
ลอกวงจร และลายปริน้ ของ Node MCU มาทำขายเองในราคาทถ่ี ูก แล้วใชช้ ่อื เดิมคือ Node MCU จึงทำ
ใหบ้ อรด์ Node MCU ไดร้ ับความนิยมมากจนถงึ ปัจจบุ นั
34
รปู ที่ 2.23 ดา้ นซ้าย บอร์ด NodeMCU 0.9 และด้านขวา บอร์ด NodeMCU 1.0
ทม่ี า: https://www.artronshop.co.th/article/51/esp32
หลังจากตัว Runtime ภาษา Lua ได้ถกู พอรต์ มาลง ESP8266 ได้ประมาณ 2 – 4 เดอื น ทาง
ชมุ ชนพัฒนา ESP8266 ทีช่ อื่ ESP8266 Community Forum (www.esp8266.com) ได้ออกชุด ไลบารี่
และคอมไพล์เลอร์สำหรับใช้กับโปรแกรม Arduino IDE มาในชื่อ Arduino core for ESP8266 WiFi
chip ทำให้การพัฒนาเฟิร์มแวร์ของ ESP8266 นั้นง่ายขึ้นมาก ๆ โดยใช้การเขียนโปรแกรม
แบบ Arduino ดังนั้นคนที่มีพื้นฐานการเขียนโปรแกรมลงบอร์ด Arduino เป็นอยู่แล้ว จึงมาเขียนเฟิร์ม
แวร์ลง ESP8266 โดยใช้โปรแกรม Arduino ได้ไม่ยาก และนอกจากนี้ ไลบารี่ต่าง ๆ ที่ใช้งานได้กับ
บอร์ด Arduino ยังสามารถนำมาใช้งานกับ ESP8266 ได้เลย ทำให้ ESP8266 ได้รับความนิยมสูงมากมา
จนถงึ ขณะน้ี
35
รปู ที่ 2.24 หน้าเวบ็ หลกั ของชุดซอฟแวร์ Arduino core for ESP8266 WiFi chip อยู่บน GitHub
ท่ีมา: https://www.artronshop.co.th/article/51/esp32
ด้วยความสำเร็จอยา่ งถึงทีส่ ดุ ของไอซี ESP8266 ทำให้บริษัท Espressif ออกไอซีรุ่นถัดไปมา
ในช่วงแรกใช้ชื่อว่า ESP31B เปิดให้ร้านค้าใหญ่ ๆ อย่าง Adafruit SparkFun และผู้สนใจบางส่วนได้
ทดสอบ โดยในขณะนั้นได้มีการพัฒนาชุดซอฟแวร์ ESP32_RTOS_SDK ไปพร้อม ๆ กับการพัฒนา
ไอซี ESP31B ทำให้มีคนนำชุด ESP32_RTOS_SDK ไปพัฒนาลงโปรแกรม Arduino รอก่อนไอซีตัวจริง
จะออก ในชื่อ Arduino core for ESP31B WiFi chip แต่หลังจากนั้นไมน่ าน บริษทั Espressif ได้ยกเลิก
การใช้ชุดซอฟแวร์พัฒนา ESP32_RTOS_SDK แล้วไปสร้างชุดพัฒนาใหม่ที่ชื่อ ESP-IDF แทน (แต่เมื่อไป
เจาะลกึ จะพบว่าภายในแทบจะลอก ESP32_RTOS_SDK มาทัง้ หมด) จากนนั้ จึงออกไอซี ESP32 ออกมา
เปน็ ครั้งแรก
36
ของโมดูล ESP31B-WROOM-03 ใชช้ ิปไอซี ESP31B
ทมี่ า: https://www.artronshop.co.th/article/51/esp32
ด้วยในอดตี ท่ไี อซี ESP8266 ไดท้ ำไว้ดีมาก จงึ สง่ ผลให้ ESP32 ได้รับความสนใจอยา่ งมาก จน
ผลิตไม่ทันต่อความต้องการ โดยในช่วงแรก บริษัท Espressif ได้ให้ข่าวว่า จะผลิต ESP32 แบบโมดูล
ออกมาเพียงอย่างเดียว ในชื่อ ESP-WROOM-32 หลังจากนั้นไม่นาน บริษัท Ai-Thinker ได้ร่วมมือ
กับ Seeedstudio ผลิตโมดูล ESP3212 ขึ้นมา โดยมีสถานะเป็นพรีออเดอร์ แต่เมื่อถึงกำหนดส่งมอบ
บริษัท Seeedstudio ได้เลื่อนการส่งมอบออกไป ด้วยปัญหาด้านการออกแบบลายวงจรของตัวโมดูลเอง
ทาง Ai-Thinker จึงได้ยกเลิกการผลิต ESP3212 แล้วหันไปผลิต ESP32S แทน โดยลายวงจร
เหมอื นกับ ESP-WROOM-32 ทุกประการ แล้วจงึ เรม่ิ สง่ มอบสนิ คา้ ได้
รปู ที่ 2.26 หน้าตาของโมดลู ESP3212 ที่ Ai-Thinker ร่วมกับ Seeedstudio ผลิตขน้ึ
ทมี่ า: https://www.artronshop.co.th/article/51/esp32
37
รปู ท่ี 2.27 หน้าตาของโมดูล ESP32S ที่ Seeedstudio ส่งมอบ
ท่ีมา: https://www.artronshop.co.th/article/51/esp32
หลังจากสินค้า ESP32S ได้เริ่มสง่ มอบ ทางทีมผู้พัฒนา Arduino core for ESP8266 Wi-Fi
chip ได้ถูกบริษัท Espresif ซื้อตัวมาทั้งหมด แล้วจ้างให้พัฒนาชุดไลบารี่และคอมไพล์เลอร์
สำหรบั Arduino ในช่อื Arduino core for ESP32 Wi-Fi chip ทำให้การพฒั นาเป็นไปด้วยความรวดเร็ว
มากขึ้น ภายหลัง ผู้พัฒนา Arduino core for ESP31B Wi-Fi chip ก็ถูกดึงตัวให้มาร่วมทีม
พฒั นา Arduino core for ESP32 Wi-Fi chip ด้วยเช่นเดียวกนั
การพัฒนา Arduino core for ESP32 Wi-Fi chip จะทำไปควบคู่กับการพัฒนา ESP-DF โดยท่ี ESP-
IDF จะเปน็ แกนหลัก เมอื่ มีการเพม่ิ ฟเิ จอร์ใหม่ ๆ ให้ ESP-IDF แล้ว จงึ จะมกี ารเพ่มิ ใน Arduino core for
ESP32 Wi-Fi chip โดยท่ี ESP-IDF รองรับการเขียนโปรแกรมแบบ Arduino เช่นเดยี วกัน และรองรับทุก
ไลบารี่ทใ่ี ช้ไดส้ ำหรับ Arduino เพยี งแต่ ESP-IDF ไมม่ ีโปรแกรม Editor โดยเฉพาะเท่านั้นเอง
2.16.2 รายช่ือผู้พัฒนาชดุ ESP_IDF
ในฐานะของผู้ใชง้ านเต็มรูปแบบ เราควรทจี่ ะทำความรู้จกั กบั ทีมผู้พฒั นากันบา้ ง โดย
ชอื่ ที่ยกมาน้ี เปน็ ชื่อท่ีใชใ้ นเวบ็ GitHub
− Igrr (ผู้พฒั นาหลกั และเรามกั ได้ขา่ วฟิเจอร์ใหม่ ๆ ของ ESP_IDF จากบญั ชที วิตเตอร์
ของเขา)
− Projectgus
38
− Spritetm
− Liuzfesp
− TianHao-Espressif
− wmy-espressif
− heyinling
− wujiangang
− TimXia
− Costaud
− Krzychb
− me-no-dev
2.16.3 รายชอื่ ผูพ้ ฒั นาชดุ Arduino core for ESP32 WiFi chip
เมื่อเข้าไปดูรายชื่อผู้พัฒนา Arduino core for ESP32 WiFi chip จะพบว่า มี
ผู้พัฒนาหลักอยู่เพียงรายเดียว อาจจะเพราะ ESP_IDF สามารถเขียนโค้ดแบบ Arduino ได้อยู่แล้ว การ
นำ ESP_IDF มาลง Arduino อาจไม่ใช่เรื่องยาก จึงไม่ต้องใช้นักพัฒนาที่มากมายนักme-no-dev
(ผพู้ ัฒนาหลัก คนเดยี วกับท่พี ฒั นาชุด Arduino core for ESP31B WiFi chip)
2.16.4 ชุดซอฟแวร์พัฒนา ESP32 อนื่ ๆ
ตั้งแต่ยุคของ ESP8266 ที่ได้รับความนิยมสูงสุด ได้มีการพยายามนำ
ตัว Runtime ของภาษาระดับสูงหลาย ๆ ตัวมาใช้ เพื่อให้คนที่คุ้นชินกับภาษาระดับสูงเหล่านั้น ได้มา
ใช้ ESP8266 ได้ง่ายมากยิ่งขึ้น เมื่อมาถึงยุค ESP32 ก็ได้มีการนำซอสโค้ดเดิมที่ทำไว้ มาดัดแปลงและใช้
งานกับ ESP32 ด้วย LuaNode เป็นชื่อของชุดพัฒนา ESP32 ที่นำ Rumtime ของ
ภาษา Lua มาลงใน ESP32 ทำให้ ESP32 ใช้ภาษา Lua ได้ พัฒนาโดยบริษัท DOIT ที่ทำ
บอร์ดพัฒนา ESP32 ในชื่อ DOIT ESP32 Development Board โดยความสามารถ
ของ LuaNode คือรองรับคำสั่งที่ใช้บน Lua จริง ๆ แทบทุกคำสั่ง และรองรับการ
ควบคมุ WiFi เตม็ รปู แบบ ดังนน้ั หากผูอ้ ่านท่ใี ช้ภาษา Lua เป็นอย่แู ลว้ ก็แนะนำให้ลองไปเล่น
กันไดค้ รบั โดยรายละเอยี ดจะอยูท่ ี่ https://github.com/Nicholas3388/LuaNode
39
2.16.5 การเลอื กใชช้ ดุ ซอฟแวรพ์ ัฒนา
การเลือกใช้ แนะนำให้เลือก ESP-IDF เป็นตัวเลือกอันดับต้น ๆ เนื่องจากมีการ
พัฒนาอย่างต่อเน่ือง และไปในทิศทางเดียวกับการพัฒนาชปิ แตห่ ากมีพนื้ ฐานภาษา C ไมม่ ากนัก ผู้เขียน
แนะนำใหเ้ ลอื กใชช้ ุดพัฒนา Arduino core for ESP32 WiFi chip จะดีกว่า เน่อื งจากการเขียนโปรแกรม
แบบ Arduino มฟี ังก์ชน่ั การใชง้ านต่าง ๆ ท่ีคอ่ นขา้ งงา่ ย และมเี วบ็ arduino.cc เปน็ เว็บรวมตัวอย่างโค้ด
ต่าง ๆ และเอกสารการใช้งานแต่ละฟังก์ชั่นอยู่มาก รวมทั้งเว็บไซต์ส่วนใหญ่ที่รวมวิธีการ
ประยุกต์ใช้ ESP32 ยังนิยมใช้โค้ดโปรแกรมสำหรับชุดพัฒนา Arduino core for ESP32 WiFi chip อีก
ด้วย
2.16.6 สรปุ ท้ายบท
ESP32 เป็นชปิ ไอซไี มโครคอนโทรลเลอร์ 32 บิต ทีม่ ี WiFi และบลูทธู เวอร์ชนั่ 4.2 ใน
ตัว ซึ่งเป็นรุ่นต่อของชิปไอซี ESP8266 รุ่นยอดนิยม ผลิตโดยบริษัท Espressif จากประเทศจีน รองรับ
การเขียนโปรแกรมโดยใช้โปรแกรม Arduino IDE และรองรับไลบาร่ีส่วนใหญ่ของ Arduino ทำให้
สามารถใชง้ านไดง้ า่ ย นอกจากน้ีราคายังถกู ลงเร่อื ย ๆ ทำใหไ้ ดร้ บั ความนยิ มมากข้ึนเรอ่ื ย ๆ เชน่ เดียว
2.16 DC-to-DC Step Down LM2596
อุปกรณ์ตัวนี้ทำหน้าที่แปลงระดับแรงดันไฟฟ้าตรงลง โดยสามารถปรับค่าแรงดัน output ได้
โดย Potentiometer ท่มี อี ย่บู นบอรด์ สามารถจา่ ยกระแสได้ถงึ 3 A และใช้หลักการแปลงโดยวงจร Buck
Converter ความถี่ Swith Ching 150 kHz ทำใหท้ ำงานเงยี บและแรงดนั เรียบ
รปู ที่ 2.28 DC-to-DC Step Down LM2596
ทม่ี า : https://www.lazada.co.th/products/switching-power-supply-12v-10a-120w-
i246807727.html
40
วงจรลดแรงดันแบบ Step-Down หรือเรียกอีกแบบว่า Buck Converter (บัคคอนเวอร์
เตอร์) ใช้ลดแรงดันจากแรงดันสูงให้ต่ำลง ใช้หลักการสวิตชิ่ง-ตัวเหนี่ยวนำ(L) จึงทำให้มีความร้อนและ
ความสูญเสียกำลังไฟน้อย ไม่เหมือนกับการลดแรงดันโดยใช้ IC ตระกูล 78xx / 317 ทั่วไปที่ใช้หลักการ
ลดทอนทำให้เกดิ ความรอ้ นสูง วงจรบัคคอนเวอรเ์ ตอร์เมอื่ ลดแรงดันลงแล้วจะไดก้ ระแส Output เพ่มิ ขึน้
2.17 switching power supply
Switching Power Supply คือ อุปกรณ์แปลงแรงดันไฟฟ้ากระแสสลับที่มีแรงดันสูง เช่น
220VAC ไปเป็นแรงดันไฟฟ้าท่มี ีแรงดนั ต่ำ โดย Switching Power Supply จะทำงานในลกั ษณะเดียวกัน
กับหม้อแปลงแรงดันทั่วไป แต่มีประสิทธิภาพที่ดีกว่าและมีขนาดเล็กกว่า โดยหลักการทั่วไป
ของ Switching Power Supply จะประกอบดว้ ย เรคติไฟเออร์ (Rectifier) ทำหน้าที่ แปลงแรงดันไฟฟ้า
กระแสสลับให้เป็นแรงดันไฟฟ้ากระแสตรง, คอนเวอร์เตอร์ (Converter) ทำหน้าที่ แปลงความถ่ี
แรงดันไฟฟ้ากระแสตรงให้เปน็ แรงดันไฟฟ้ากระแสสลับท่ีความถี่สูง และแปลงแรงดันไฟฟ้ากระแสสลับให้
เป็นแรงดันไฟฟ้ากระแสตรง โดยมีความต้านทานทางด้านเอาต์พุตของแรงดันไฟฟ้ากระแสตรงให้ได้ตาม
ความตอ้ งการอีกคร้ัง
รปู ที่ 2.29 วงจรเบอ้ื งตน้ ของ
ทม่ี า : https://mall.factomart.com/what-is-a-switching-power-supply/
Switching Power Supply (สวิตชิ่งเพาเวอร์ซัพพลาย) ในปัจจุบันมีหลากหลายรุ่นที่ใช้กัน
แพร่หลายในงานอุตสาหกรรม เช่น Switching Power Supply แปลงแรงดันไฟฟ้ากระแสสลับจาก
220VAC เป็นแรงดันไฟฟ้ากระแสตรง 24VDC (1.2A, 2.5A, 5A, 10A) หรอื 12VDC (2A, 5A, 10A, 20A)
เปน็ ต้น โดย Switching Power Supply ทีท่ างบรษิ ัท ไพรมสั จำกดั
41
2.17 Solar cell Solar panels
แผงโซลาร์เซลล์ 6v 1w หรือ 167mA เครื่องชาร์จสำหรับระบบจ่ายไฟแบตเตอรี่ ใช้งานง่าย
มาก แผงโซลาร์เซลลน์ ้จี ะพอดกี บั โปรเจ็กต์แบบคงทหี่ รอื แบบเคลอื่ นที่ขนาดเลก็ ของคุณ นจี้ ะชว่ ยใหค้ ุณใช้
ประโยชน์จากพลังงานแสงอาทิตย์ เซลล์สร้างแรงดันไฟฟ้าตรง 6V ในการเปิดรับโดยตรงสำหรับกำลัง
สูงสุด 1W (เช่นกระแส 167mA) สามารถจัดเรียงแผงหลายแผ่นเป็นอนกุ รมและ / หรือขนานกันเพื่อเพมิ่
แรงดันไฟและกระแสไฟจุดเด่นของแผงโซล่าเซลล์ Parallax 6V 1W แรงดันไฟ DC 6V กำลัง 1W
(เช่น 167mA) ข้อมูลจำเพาะสำหรับ Parallax 6V 1W Solar Panel แรงดันขาออก: 6Vกำลังขับ: 1W
กระแสไฟขาออก: ประมาณ. 167mAขนาด: 110x60x2.5mmน้ำหนกั : 0.05kg
2.18 Solenoid valve AC24v
อัตราการไหลของน้ำที่เเรงดัน 2.6 บาร์ อยู่ที่ 3,300 ลิตร ต่อชั่วโมง (55 ลิตร ต่อนาที)
อัตราการกินไฟ 0.1a รองรับเเรงดันน้ำ 0.2 - 10bar (เเรงดันที่เเนะนำ มากกว่า 1bar )
ปริมาณการไหลของน้ำ ขึ้นอยู่กับเเรงดันน้ำที่มี เวลามีการจ่ายไฟที่ท่ีคอย จะมีความร้อนเป็นปกติไม่ต้อง
ตกใจโครงสร้างทำจากพลาสติกเเขง็ อยา่ งดี วาลว์ มีขนาดใหญ่ ใหป้ รมิ าณน้ำไหลผ่านได้เยอะทนเเรงดันน้ำ
ได้สูงถึง 10 bar (ปั๊มอัตโนมัติติดบ้านทั่วไปตัดเเรงดันที่ 3bar) สามารถปรับปริมาณน้ำมาก-น้อยได้
สามารถเปิดปิดวาล์วเเบบเเมนนวลได้ (ไม่ตอ้ งใช้ไฟฟา้ ) ใช้เวลาจำเปน็
รูปท่ี 2.30 Solenoid valve AC24v
ทม่ี า: https://www.watertimerreview.com/product/96/solenoid-valve-ac24v
42
บทท่ี 3
วิธีการดำเนินงานโครงงานสหกจิ ศึกษา
ในการสร้างและพัฒนาระบบอัจฉริยะเพื่อควบคุมอุณหภูมิเป็นการศึกษาเพื่อหา
ประสิทธิภาพของระบบบริหารจัดการควบคุมอุณหภูมิในโรงเรือนกัญชา เพื่อให้สามารถทำงานได้อย่างมี
ประสิทธภิ าพจึงไดด้ ำเนนิ การตามขนั้ ตอน
3.1 บทนำ
3.2 ศกึ ษาและรวบรวมข้อมูลท่ีเก่ียวข้องกบั โครงงาน
3.3 แนวความคดิ และแผนผงั ของโครงงาน
3.4 สร้างและพฒั นาระบบจัดการโรงเรือน
3.5 การเขียนโปรแกรมควบคุมให้ระบบสามารถสอื่ สารกันด้วย โปรโตคอล MODBUS
3.6 การประเมนิ ราคาในการจัดซอ้ื อปุ กรณ์
3.7 วิธกี ารทดลอง
3.1 บทนำ
การดำเนินของโครงงานโดยนำความรูท้ ่ไี ดจ้ ากทฤษฎีต่างๆ ดงั ที่ได้กล่าวไว้ในบทที่ 2 เพ่ือ
สร้างระบบสมองกลควบคุมอุณหภูมแิ ละความช้ืนในโรงเรอื น แบ่งลำดบั ขัน้ ตอนการดำเนินงานไดด้ งั น้ี
3.1.1 ศกึ ษาและรวบรวมข้อมูลท่ีเกี่ยวข้องกับโครงงาน
3.1.2 ออกแบบแนวความคิดและแผนผังของโครงงาน
3.1.3 ค้นหาแหล่งซ้อื วัสดุอุปกรณ์
3.1.4 ศกึ ษาคมู่ ืออปุ กรณ์
3.1.5 จดั ซอ้ื วัสดอุ ปุ กรณ์
43
3.1.6 การเขยี นโปรแกรมควบคุมใหร้ ะบบสามารถสื่อสารกันด้วย โปรโตคอล MODBUS
3.1.7 การเขียนโปรแกรมอา่ นค่าโมดูล SHT20 DHT11
3.1.8 การเขียนโปรแกรมส่งค่าไปยัง Cloud Server
3.1.9 ทำการเช่ือมตอ่ ระบบท้ังหมด และทดสอบ
3.1.10 บันทกึ ผลการทดลอง
3.1.11 เสนอต่ออาจารย์ทปี่ รึกษา
3.1.12 สรุปผลการดำเนินของโครงงาน
3.1.13 จบการทำงาน
สามารถแสดงรายละเอียดในการทำงานในรปู ท่ี 3.1
เร่มิ ต้น
ศกึ ษาขอ้ มูลทเ่ี ก่ยี วข้องกบั โรงเรือน
สร้างและพัฒนาระบบจดั การโรงเรือน ไมผ่ า่ น
ผา่ น แก้ไขปรับปรงุ
เสนออาจารย์ทป่ี รกึ ษา
เก็บรวบรวมขอ้ มูล/วิเคราะห์ขอ้ มลู
สรปุ รายงาน
สิ้นสดุ
44
3.2ศกึ ษาและรวบรวมข้อมูลท่เี กย่ี วขอ้ งกบั โครงงาน
ในการศกึ ษาและรวบรวมขอ้ มูลเพื่อนำขอ้ มลู ท่ีได้มาประยุกตใ์ ชใ้ นการสร้างชดุ ยกระดับห้อง
ทำงานสู่สมารท์ ดว้ ยนวัตกรรมไอโอที ได้ขอ้ มลู จากแหลง่ ข้อมูลดังน้ี
3.2.1 อินเตอรเ์ นต็
3.2.2 อาจารย์ท่ปี รึกษา
3.2.3 หนงั สอื และนิตยสารตา่ งๆ
3.2.4 ผเู้ ชย่ี วชาญ
3.2.5 งานวิจยั ต่างๆ ทเี่ ก่ียวข้อง
ในการศึกษาและรวบรวมข้อมูลจากแหล่งตา่ งๆน้นั สามารถเขยี นเปน็ แผนผงั ได้ดงั นี้
แสดงในรูปที่ 3.2
การศกึ ษาและรวบรวมขอ้ มูล
อินเตอรเ์ นต็
อาจารยท์ ี่ปรึกษา
หนังสือและนติ ยสารต่างๆ
ผ้เู ชีย่ วชาญ
งานวจิ ัยตา่ งๆ ทเี่ กี่ยวขอ้ ง
รปู ท่ี 3.2 แสดงแผนผงั การศกึ ษาและรวบรวมข้อมลู
45
3.3 แนวความคิดและแผนผงั ของโครงงาน
รปู ที่ 3.3 แผนผังของโครงงาน
จากรูปที่ 3.1 จะเหน็ ไดว้ ่าเราจะมี Master Board 1 ชุด จะมี Slaver Board จำนวน 3 ชุด
Slave Board ทั้ง 3 ชุด นำไว้ไปอ่านคา่ sensor sht20 dht22 solar cell solar panels โดย Slave
Board จำนวน 3 ชุด จะสง่ ข้อมลู ไป Master Board เมื่อมีการร้องขอข้อมลู มาจาก Master Board โดยมี
การต้งั Address ID ท่ีกล่อง Master Board และ Slave Board เช่น Master Board ส่งขอ *B01SR#
ถ้าตรงกับ Address ID ของ Slave Board1 กจ็ ะทำการสง่ ไปยงั ตัว Master Board และทำการแปลงค่า
กลับอกี ที
3.4 สรา้ งและพัฒนาระบบจัดการโรงเรือน
ในการสร้างอุปกรณ์รับส่งสัญญาณ ของระบบโรงเรือนกัญชา ในการพัฒนาโปรแกรมจัดการ
โรงเรือนกัญชา เพื่อให้สามารถบริหารจัดการได้อย่างมีประสิทธิภาพสูงสุด เราจึงต้องใช้ทั้งฮาร์ดแวร์และ
ซอฟตแ์ วร์ในการสรา้ งและพฒั นาโดยมขี ้นั ตอนในการสร้างระบบจัดการโรงเรือนกญั ชา ดงั ตอ่ ไปน้ี
46
3.4.1 การต่อวงจรบอรด์ Arduino nano + SHT20 เพอ่ื วัดอณุ หภมู ิ ความชืน้ ในอากาศ
รปู ที่ 3.4 Arduino nano + SHT20
3.4.2 การตอ่ วงจรบอร์ด Arduino nano + DHT22 เพ่อื วัดอณุ หภูมิ ความชืน้ ในอากาศ
รปู ที่ 3.5 Arduino nano + DHT22
47
3.4.3 การตอ่ วงจรบอรด์ Arduino nano + LDR Photoresistor Sensor Module เพื่อวดั
ความเขม้ แสง
รูปท่ี 3.6 Arduino nano + solar cell solar panels
3.4.4 การต่อวงจรบอรด์ Arduino nano + MG-811 Carbon Dioxide Co2 Sensor
Module
รูปที่ 3.7 Arduino nano + MG-811 Carbon Dioxide Co2 Sensor Module
48
3.4.5 การตอ่ วงจรบอรด์ Arduino nano + Ds18b20
รูปที่ 3.8 Arduino nano + Ds18b20
3.4.6 การตอ่ วงจรบอรด์ Arduino nano + relay เพ่ือเปิด-ปดิ ปม๊ั น้ำและพัดลม
รปู ที่ 3.9 Arduino nano + relay เพือ่ เปิด-ปดิ ปั๊มนำ้ และพดั ลม
49
3.4.7 การตอ่ วงจรรวม
รูปท่ี 3.10 การต่อวงจรรวม
3.4.8 นำอุปกรณ์ลงในกล่อง
รูปท่ี 3.11 Slave Board 1
50
รูปที่ 3.12 Slave Board 2
รูปท่ี 3.13 Slave Board 3
51
รูปท่ี 3.14 Master Board
3.5 การเขยี นโปรแกรมควบคุมให้ระบบสามารถสื่อสารกันด้วย โปรโตคอล MODBUS
ในการเขียนโปรแกรมควบคุมให้ระบบส่อื สารกนั ดว้ ยโปรโตคอล MODBUS นน้ั จะมกี าร
เช่อื มต่อโดยสามารถอธบิ ายเปน็ แผนผงั การทำงาน 3 ส่วนคอื
3.5.1 แผนผงั โปรแกรมการทำงานของ Master Board
3.5.2 แผนผงั โปรแกรมการทำงานของ Slave Board 1-3
3.5.3 แผนผงั โปรแกรมการทำงานของ Master Board Control
52
3.5.1 แผนผงั โปรแกรมการทำงานของ Master Board1
โปรแกรมการทำงานของ Master Board มขี ัน้ ตอนตามรปู ที่3.15 ดงั น้ี
53
3.5.2 แผนผงั โปรแกรมการทำงานของ Slave Board 1-3
โปรแกรมการทำงานของ Slave Board1-3 มีขั้นตอนตามรปู ที่3.16 ดังน้ี
54
3.5.3 แผนผงั โปรแกรมการทำงานของ Master Board Control
รปู ที่ 3.17 แผนผงั โปรแกรมการทำงานของ Master Board Control
55
3.6 การประเมนิ ราคาในการจดั ซ้อื อุปรกณ์ ราคา/บาท จำนวน รวมเป็นเงิน
ตารางที่ 3.1 การประเมินราคาในการจดั ซือ้ อุปรกณ์ (บาท)
ลำดบั รายการ 200 3 600
1 Arduino nano 80 3 240
2 Arduino Nano V1.0 Screw Shield
3 Arduino ESP32 200 1 200
4 ESP32 Node MCU Screw Shield
5 RS485 100 1 100
6 Relay
7 DC-to-DC Step Down LM2596 50 4 200
8 สายไฟ
9 สายสญั ญาณ 100 3 300
10 จอ LCD
11 Sensor SHT20 40 4 140
12 Sensor DHT22
13 LDR Photoresistor Sensor Module 100 1 100
14 USB
15 Dove will 780 1 780
16 กลอ่ งกันนำ้ พลาสติก (nano)
17 กล่องกันน้ำพลาสติก (ESP32) 180 1 180
18 switching power supply
19 Sensor MG-811 Carbon Dioxide Co2 360 3 1,080
รวม 160 3 480
50 3 150
30 3 90
30 4 120
85 3 255
195 1 195
180 1 180
180 1 1,300
6,690
56
3.7 วธิ กี ารทดลอง
3.7.1 ติดตัง้ กล่อง Master Board ยึดใส่ station
3.7.2 ตดิ ต้ังวาลว์ 3 ตัวและวาลว์ อสิ ระ
3.7.3 ตดิ ต้งั ตัว Slave Board ท้งั 3 ชุด ใส่ในโรงเรอื น
3.7.4 ทำการเจาะรูท่อ PE ใส่หัวพน่ ฝอย
3.7.5 เดินระบบน้ำหลงั คาโรงเรือน
3.7.6 เดินระบบนำ้ ชดุ พ่นหมอกภายในโรงเรือน
3.7.7 เดนิ ระบบรดน้ำภายในโรงเรือน
3.7.8 ตอ่ ป๊มั น้ำกับถงั พักนำ้ ต่อ Solenoid valve และเดินท่อนำ้
3.7.9 ติดตง้ั พดั ลมภายในโรงเรอื ง
3.7.10 การทำงานของหนา้ Application Blynk
3.7.11 การทำงานของ Google sheets
3.7.12 การทำงานของ Line Notify
3.7.13 การทำงานของ Firebase
3.7.1 ตดิ ต้ังกลอ่ ง Master Board ยึดใส่ station
รปู ที่ 3.18 ตดิ ต้ังกล่อง Master Board ยึดใส่ statio
57
3.7.2 ติดต้ังวาล์ว 3 ตัวและวาลว์ อสิ ระ
รูปที่ 3.19 ติดตั้งวาลว์ 3 ตวั และวาล์วอิสระ
3.7.3 ติดตั้งตัว Slave Board ท้ัง 3 ชุด
รูปท่ี 3.20 ติดตัง้ Slave Board ภายในโรงเรอื น
58
3.7.4 ทำการเจาะรูท่อ PE ใสห่ ัวพ่นฝอย
รูปท่ี 3.21 เจาะรทู ่อ PE ใสพ่ ่นฝอย
3.7.5 เดนิ ระบบน้ำหลังคาโรงเรือน
รปู ที่ 3.22 เดินระบบนำ้ บนหลงั คาโรงเรือน
59
3.7.6 เดนิ ระบบนำ้ ชุดพน่ หมอกภายในโรงเรอื น
รปู ท่ี 3.23 เดินระบบน้ำชดุ พ่นหมอกภายในโรงเรือน
3.7.7 เดนิ ระบบรดน้ำภายในโรงเรอื น
รปู ที่ 3.24 รดน้ำภายในโรงเรือง
60
3.7.8 ตอ่ ปั๊มนำ้ กับถังพกั นำ้ ต่อ Solenoid valve และเดินทอ่ น้ำ
รูปที่ 3.25 ต่อปม๊ั น้ำกบั ถังพักนำ้ ตอ่ Solenoid valve และเดนิ ท่อน้ำ
3.7.9 ติดตง้ั พัดลมภายในโรงเรือง
รปู ท่ี 3.26 ติดตั้งพดั ลมภายในโรงเรอื ง
61
3.7.10 การทำงานของหนา้ Application Blynk
รปู ที่ 3.27 หนา้ แรก บน Application Blynk
รูปที่ 3.28 หนา้ Gauge บน Application Blynk
62
3.7.11 การทำงานของ Google sheets
รปู ที่ 3.29 เกบ็ ข้อมลู เขา้ Google sheets
3.7.12 การทำงานของ Line Notify
รูปที่ 3.30 แจง้ เตือน Line Notify
63
3.7.13 การทำงานของ Firebase
รปู ท่ี 3.31 ส่งขอ้ มลู ขนึ้ Firebase
64
บทท่ี 4
ผลการดำเนินโครงงาน
บทนำ
หลังจากที่ไดอ้ อกแบบระบบสมองกลสมาร์ทควบคมุ อุณหภูมแิ ละความชื้นเสร็จเรียบรอ้ ยแล้ว
ขั้นต่อไปคือการทำทดสอบเพื่อให้การทำงานของระบบต่างๆ ในการควบคุมการอุปกรณ์ไฟฟ้า ปั๊มน้ำพัด
ลมและโซลินอยด์วาล์ว การสื่อสาร รับ-ส่ง ข้อมูลผ่าน UART โดยใช้ RS485 ในการสื่อสารไปยัง esp32
และทำการส่งข้อมูลไปยัง Cloud IoT Server เพอ่ื ใหเ้ ปน็ ไปได้อยา่ งมีประสิทธิภาพตามท่ีกำหนดไว้ จึงได้
มีการทดสอบการทำงานตามขอบเขตด้านต่างๆ โดยการทดสอบการทำงานจะเป็นไปตามวัตถุประสงค์ท่ี
กำหนดไว้หรอื ไม่ โดยได้ทำการแบง่ การทดสอบออกเป็นส่วนต่างๆ ดังนี้
4.1 การทดสอบอา่ นค่า sensor ชุดลกู ข่ายจำนวน 3 ชดุ และชดุ สำหรับแม่ขา่ ยจำนวน 1 ชดุ
4.1.1 ทดสอบอ่านค่า sensor กล่อง Slave 1
4.1.1.1 อุปกรณ์ทใี่ ชท้ ดสอบในการอา่ นคา่ sensor มีดังตอ่ ไปนี
ตารางที่ 4.1 อปุ กรณท์ ี่ใช้ทดสอบอ่านคา่ sensor กลอ่ ง Slave 1
รายการ จำนวน
Arduino nano 1
Sensor Sht20 1
Sensor Dht22 1
Solar Cell Panel 1
Co2 1
65
4.1.1.2 ลำดบั ข้ันตอนการทดสอบ
ทำการต่อ sensor sht20 ที่ขา i2c หรือ Inter-Integrated Circuit ที่ Arduino nano
ต่อ sensor dht22 ท่ขี า D2 ต่อ Solar Cell Panel ท่ีขา analog A0 และตอ่ sensor Co2 ท่ขี า analog
A1 ของ Arduino nano ทำการต่อไฟ 3.3 vdc ให้ sensor sht20, dht22, co2 เขียนโปรแกรมอ่านค่า
sensor dht22, sht20, co2, Solar Cell Panel โดยใช้โปรแกรม Arduino ในการเขียนโปรแกรมจะใช้
สัญลักษณ์ ✓ เพื่อแสดงว่า sensor อ่านค่าได้ปกติ และใช้สัญลักษณ์ เพื่อแสดงว่า sensor อ่านค่า
ผิดปกติ
รูปท่ี 4.1 แสดงการทดสอบอ่านคา่ เซ็นเซอรก์ ล่อง Slave 1
66
ตารางท่ี 4.2 ผลการทดลองอ่านค่า sensor กลอ่ ง Slave 1 10 ครัง้
ครงั้ ท่ี Sensor สำเร็จ
1 SHT20, Dht22, Solar Cell Panel, Co2 ✓
2 Sht20, Dht22, Solar Cell Panel, Co2 ✓
3 Sht20, Dht22, Solar Cell Panel, Co2 ✓
4 Sht20, Dht22, Solar Cell Panel, Co2 ✓
5 Sht20, Dht22, Solar Cell Panel, Co2 ✓
6 Sht20, Dht22, Solar Cell Panel, Co2 ✓
7 Sht20, Dht22, Solar Cell Panel, Co2 ✓
8 Sht20, Dht22, Solar Cell Panel, Co2 ✓
9 Sht20, Dht22, Solar Cell Panel, Co2 ✓
10 Sht20, Dht22, Solar Cell Panel, Co2 ✓
4.1.2 ทดสอบอ่านคา่ sensor กล่อง Slave 2
4.1.2.1อปุ กรณท์ ี่ใช้ทดสอบในการอ่านคา่ sensor มดี งั ตอ่ ไปน้ี
ตารางท่ี 4.3 อปุ กรณท์ ใี่ ช้ทดสอบอา่ นคา่ sensor กลอ่ ง Slave 2
รายการ จำนวน
Arduino nano 1
Sensor Sht20 1
Sensor Dht22 1
Solar Cell Panel 1
4.1.2.2 ลำดบั ขัน้ ตอนการทดสอบ
ทำการตอ่ sensor sht20 ท่ีขา i2c หรือ Inter-Integrated Circuit ท่ี Arduino
nano ต่อ sensor dht22 ทข่ี า D2 และต่อ Solar Cell Panel ท่ีขา analog A0 ของ Arduino nano
ทำการต่อไฟ 3.3 vdc ให้ sensor sht20, dht22 เขยี นโปรแกรมอา่ นค่า sensor dht22, sht20, Solar
67
Cell Panel โดยใช้โปรแกรมArduino ในการเขยี นโปรแกรมจะใชส้ ญั ลกั ษณ์ ✓ เพื่อแสดงว่า sensor
อา่ นคา่ ไดป้ กติ และใช้สญั ลกั ษณ์ เพ่ือแสดงว่า sensor อา่ นค่าผิดปกติ
รูปที่ 4.2 แสดงการทดสอบอ่านค่าเซน็ เซอร์กล่อง Slave 2
ตารางท4่ี .4 ผลการทดลองอ่านค่า sensor กลอ่ ง Slave 2 10 ครงั้ สำเร็จ
ครง้ั ที่ Sensor ✓
1 SHT20, DHT22, Solar Cell Panel ✓
2 Sht20, Dht22, Solar Cell Panel ✓
3 Sht20, Dht22, Solar Cell Panel ✓
4 Sht20, Dht22, Solar Cell Panel ✓
5 Sht20, Dht22, Solar Cell Panel ✓
6 Sht20, Dht22, Solar Cell Panel ✓
7 Sht20, Dht22, Solar Cell Panel ✓
8 Sht20, Dht22, Solar Cell Panel ✓
9 Sht20, Dht22, Solar Cell Panel ✓
10 Sht20, Dht22, Solar Cell Panel
68
4.1.3 ทดสอบอา่ นค่า sensor กลอ่ ง Slave 3
4.1.3.1อปุ กรณท์ ใ่ี ช้ทดสอบในการอ่านค่า sensor มดี งั ต่อไปนี้
ตารางท่ี 4.5 อปุ กรณท์ ่ีใช้ทดสอบอ่านคา่ sensor กลอ่ ง Slave 3
รายการ จำนวน
Arduino nano 1
Sensor Sht20 1
Sensor Dht22 1
Solar Cell Panel 1
4.1.3.2 ลำดบั ขั้นตอนการทดสอบ
ทำการต่อ sensor sht20 ที่ขา i2c หรือ Inter-Integrated Circuit ที่ Arduino nano
ต่อ sensor dht22 ที่ขา D2 และต่อ Solar Cell Panel ที่ขา analog A0 ของ Arduino nano ทำการ
ต่อไฟ 3.3 vdc ให้ sensor sht20, dht22 เขียนโปรแกรมอ่านค่า sensor dht22, sht20, Solar Cell
Panel โดยใช้โปรแกรม Arduino ในการเขยี นโปรแกรมจะใช้สญั ลักษณ์ ✓ เพือ่ แสดงว่า sensor อ่านค่า
ได้ปกติ และใชส้ ญั ลักษณ์ เพ่ือแสดงว่า sensor อา่ นค่าผิดปกติ
รูปท่ี 4.3 แสดงการทดสอบอ่านค่าเซ็นเซอรก์ ล่อง Slave 3
69
ตารางท4่ี .6 ผลการทดลองอา่ นคา่ sensor กล่อง Slave 3 10 ครงั้
ครง้ั ที่ Sensor สำเร็จ
1 SHT20, Dht22, Solar Cell Panel ✓
2 SHT20, Dht22, Solar Cell Panel ✓
3 SHT20, Dht22, Solar Cell Panel ✓
4 SHT20, Dht22, Solar Cell Panel ✓
5 SHT20, Dht22, Solar Cell Panel ✓
6 SHT20, Dht22, Solar Cell Panel ✓
7 SHT20, Dht22, Solar Cell Panel ✓
8 SHT20, Dht22, Solar Cell Panel ✓
9 SHT20, Dht22, Solar Cell Panel ✓
10 SHT20, Dht22, Solar Cell Panel ✓
4.2 การทดสอบการเช่ืองโยงเป็นโครงข่ายบนบัส RS-485
4.2.1 ทดสอบการเปล่ยี น ID Address ของอุปกรณ์ MODBUS
4.2.1.1 อุปกรณ์ที่ใช้สำหรบั การทดสอบการเปลย่ี น ID Address ของอุปกรณ์
MODBUS
รายการ จำนวน
Modbus Master 1 กลอ่ ง
Modbus Slave 3 กลอ่ ง
คอมพิวเตอรท์ มี่ โี ปรแกรม Arduino 1 เครื่อง
ตารางท่ี 4.7 อปุ กรณท์ ่ีใช้สำหรับการทดสอบการเปลีย่ น ID Address
4.2.1.2 ลำดบั ขนั้ ตอนการทดสอบ
เน่อื งดว้ ยโปรโตคอล MODBUS เป็นรูปแบบการส่งข้อมูลระหวา่ งอุปกรณ์
อเิ ล็กทรอนิกส์ อุปกรณ์ท่ตี อ้ งการข้อมูลเรยี กวา่ Modbus Master (Client) สว่ นอปุ กรณ์ทใี่ หข้ ้อมูลท่ี
ตอ้ งการเรียกวา่ Modbus Slave (Server) ใน Modbus Network ทเ่ี ปน็ มาตรฐานนนั้ จะมี Master ตวั
เดียวแต่ Slave มไี ด้ถึง 247 ตวั โดยแตล่ ะตวั จะมี ID ระบเุ หมือนเลขที่บา้ น
70
ตัง้ แต่ 1 ถึง 247 และ Master สามารถ Write ข้อมลู ไปยัง Slave ได้ การทดสอบการเปลี่ยน ID
Address จะต่อ Modbus Master และ Modbus Slave บน RS-485 เป็นโครงขา่ ยเข้าไว้ด้วยกัน
หลงั จากนน้ั จะใช้ USB ต่อกับคอมพิวเตอร์ ท่ีมโี ปรแกรม Arduino ตอ่ กับบอร์ด esp32 ท่กี ล่อง Master
และทำการเปลี่ยน ID Address ทีก่ ลอ่ ง Slave ท้งั 3 กลอ่ ง และใหก้ ล่อง Master ตดิ ตอ่ กบั Slave ใน
ลักษณะของการ Broadcast และให้ Slave ทมี่ ี ID Address ตรงกลบั ID Address ท่ีกลอ่ ง Master
ส่งออกไป โดยจะทดสอบกับ Modbus Master และ Modbus Slave จำนวนกลอ่ งละ 10 ครง้ั และดู
ขอ้ มูล ID ที่ถกู เปล่ียนบนโปรแกรม Arduino จะใช้สญั ลักษณ์ ✓ เพอื่ แสดงว่าการทำงานถกู ต้อง และใช้
สัญลักษณ์ เพื่อแสดงวา่ การทำงานไมถ่ ูกตอ้ ง โดยมี ตารางการทดสอบดงั น้ี
คร้ังท่ี ID Address เดิม ID Address ใหม่ ผลการเปล่ียน ID Address
ได้ ไม่ได้
1 *B01SR# *A02SR# ✓
2 *A02SR# *B04SR# ✓
3 *B04SR# *C07SR# ✓
4 *C07SR# *F12SR# ✓
5 *F12SR# *Z01SR# ✓
6 *Z01SR# *X04SR# ✓
7 *X04SR# *N09SR# ✓
8 *N09SR# *V34SR# ✓
9 *V34SR# *R07SR# ✓
10 *R07SR# *G06SR# ✓
ตารางที่ 4.8 ผลการทดสอบการเปลยี่ น ID Address Slave 1
จากตารางที่ 4.8 คือผลการทดสอบการเปลย่ี น ID Address ของ Modbus Slave 1 ซ่ึงทำ
การทดสอบดว้ ยโปรแกรม Arduino จากผลการทดสอบพบว่า การเปลย่ี น ID Address ของ Modbus
Slave 1 ด้วยโปรแกรม Arduino มีผลการคำนวณเปอรเ์ ซ็นตค์ วามผดิ พลาดเทา่ กบั
71
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบการเปลี่ยน ID Address ของ
Modbus Slave 1 สามารถทำงานไดต้ ามฟงั กช์ นั ที่ออกแบบไดเ้ ต็มประสิทธิภาพ
ครงั้ ท่ี ID Address เดิม ID Address ใหม่ ผลการเปลย่ี น ID Address
ได้ ไม่ได้
1 *B02SR# *Z04R# ✓
2 *Z04R# *X08SR# ✓
3 *X08SR# *M78SR# ✓
4 *M78SR# *Q01SR# ✓
5 *Q01SR# *K19SR# ✓
6 *K19SR# *P03SR# ✓
7 *P03SR# *J89SR# ✓
8 *J89SR# *H67SR# ✓
9 *H67SR# *F76SR# ✓
10 *F76SR# *U10SR# ✓
ตารางท่ี 4.9 ผลการทดสอบการเปลี่ยน ID Address Slave 2
จากตารางที่ 4.9 คือผลการทดสอบการเปลี่ยน ID Address ของ Modbus Slave 2 ซึ่งทำ
การทดสอบด้วยโปรแกรม Arduino จากผลการทดสอบพบว่า การเปลี่ยน ID Address ของ Modbus
Slave 2 ดว้ ยโปรแกรม Arduino มผี ลการคำนวณเปอรเ์ ซน็ ตค์ วามผิดพลาดเท่ากับ
72
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบการเปลี่ยน ID Address ของ
Modbus Slave 2 สามารถทำงานไดต้ ามฟังกช์ ันทอ่ี อกแบบไดเ้ ต็มประสทิ ธิภาพ
ครั้งท่ี ID Address เดิม ID Address ใหม่ ผลการเปลย่ี น ID Address
ได้ ไม่ได้
1 *B03SR# *K90SR# ✓
2 *K90SR# *W01SR# ✓
3 *W01SR# *I90SR# ✓
4 *I90SR# *O45SR# ✓
5 *O45SR# *T95SR# ✓
6 *T95SR# *G08SR# ✓
7 *G08SR# *L09SR# ✓
8 *L09SR# *M23SR# ✓
9 *M23SR# *P34SR# ✓
10 *P34SR# *W34SR# ✓
ตารางที่ 4.10 ผลการทดสอบการเปลยี่ น ID Address Slave 3
จากตารางท่ี 4.10 คอื ผลการทดสอบการเปล่ยี น ID Address ของ Modbus Slave 3 ซ่งึ ทำ
การทดสอบด้วยโปรแกรม Arduino จากผลการทดสอบพบว่า การเปลี่ยน ID Address ของ Modbus
Slave 3 ดว้ ยโปรแกรม Arduino มผี ลการคำนวณเปอร์เซ็นต์ความผิดพลาดเทา่ กับ
73
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบการเปลี่ยน ID Address ของ
Modbus Slave 3 สามารถทำงานได้ตามฟังกช์ ันทอี่ อกแบบได้เต็มประสิทธภิ าพ
4.2.2 ทดสอบส่ือสารขอ้ มลู ของอุปกรณ์ MODBUS
4.2.2.1 อปุ กรณท์ ใี่ ชท้ ดสอบ Software สำหรบั ทดสอบสอื่ สารข้อมูลของอุปกรณ์
MODBUS
รายการ จำนวน
Modbus Master 1 กล่อง
Modbus Slave 3 กล่อง
คอมพิวเตอรท์ ่มี ีโปรแกรม Arduino 1 เครื่อง
ตารางที่ 4.11 อุปกรณ์ทีใ่ ช้สำหรับทดสอบสอ่ื สารข้อมลู ของอปุ กรณ์ MODBUS
4.2.2.2 ขน้ั ตอนการทดสอบส่งคำรอ้ งขออ่านข้อมลู จากลูกข่าย ในการทดสอบส่งคำร้อง
ขออ่านข้อมูลจากลูกข่ายสำหรับทดสอบสื่อสารระหว่างกล่อง Master กับลูกข่าย นั้น จะโปรแกรม
Arduino ซ่ึงในโปรแกรมน้ันจะสามารถส่งคำร้องขออ่านขอ้ มลู จากลูกข่ายได้และดูข้อมูลที่ลูกข่ายส่งกลับ
มา ในการทดสอบนี้เราจะให้กล่อง Master ส่ง ID Address คำสั่งอ่านค่าเซน็ เซอร์ ไปที่กล่องลูกข่ายและ
ใหก้ ลอ่ งลกู ข่ายสง่ คา่ เซน็ เซอร์กลบั มาท่กี ล่อง Master เปน็ จำนวน 10 ครัง้ จะใช้สัญลกั ษณ์ ✓ เพ่ือแสดง
วา่ การทำงานถูกต้อง และใชส้ ัญลักษณ์ เพอ่ื แสดงว่าการทำงานไมถ่ กู ตอ้ ง โดยมี
74
โดยมีตารางการทดสอบดังน้ี
ครั้งท่ี ID Address คำส่งั อ่านค่าเซน็ เซอร์ ได้ ไม่ได้
1 *B01 SR# ✓
2 *B01 SR# ✓
3 *B01 SR# ✓
4 *B01 SR# ✓
5 *B01 SR# ✓
6 *B01 SR# ✓
7 *B01 SR# ✓
8 *B01 SR# ✓
9 *B01 SR# ✓
10 *B01 SR# ✓
ตารางที่ 4.12 ผลการทดสอบส่งคำส่งั อ่านคา่ เซ็นเซอร์ ไปท่ีกลอ่ ง Slave 1 และใหก้ ลอ่ ง Slave 1 สง่ คา่
เซ็นเซอร์กลับมาที่กลอ่ ง Master
จากตารางที่ 4.12 คือผลการส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่กล่อง Slave 1 และให้กล่อง
Slave 1 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master ซึ่งทำการทดสอบด้วยโปรแกรม Arduino จากผลการ
ทดสอบพบว่า การส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่กล่อง Slave 1 และให้กล่อง Slave 1 ส่งค่าเซ็นเซอร์
กลับมาท่กี ลอ่ ง Master ด้วยโปรแกรม Arduino มีผลการคำนวณเปอร์เซ็นตค์ วามผดิ พลาดเทา่ กับ
75
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่
กล่อง Slave 1 และให้กล่อง Slave 1 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master สามารถทำงานได้ตาม
ฟังกช์ นั ที่ออกแบบไดเ้ ตม็ ประสทิ ธภิ าพ
คร้งั ที่ ID Address คำสัง่ อ่านคา่ เซน็ เซอร์ ได้ ไมไ่ ด้
1 *B02 SR# ✓
2 *B02 SR# ✓
3 *B02 SR# ✓
4 *B02 SR# ✓
5 *B02 SR# ✓
6 *B02 SR# ✓
7 *B02 SR# ✓
8 *B02 SR# ✓
9 *B02 SR# ✓
10 *B02 SR# ✓
ตารางที่ 4.13 ผลการทดสอบสง่ คำสง่ั อ่านคา่ เซน็ เซอร์ ไปที่กลอ่ ง Slave 2 และให้กลอ่ ง Slave 2 สง่ คา่
เซ็นเซอร์กลับมาท่ีกลอ่ ง Master
จากตารางที่ 4.12 คือผลการส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่กล่อง Slave 2 และให้กล่อง
Slave 2 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master ซึ่งทำการทดสอบด้วยโปรแกรม Arduino จากผลการ
ทดสอบพบว่า การส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่กล่อง Slave 2 และให้กล่อง Slave 2 ส่งค่าเซ็นเซอร์
กลบั มาทก่ี ลอ่ ง Master ดว้ ยโปรแกรม Arduino มผี ลการคำนวณเปอรเ์ ซน็ ตค์ วามผิดพลาดเทา่ กับ
76
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่
กล่อง Slave 2 และให้กล่อง Slave 2 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master สามารถทำงานได้ตาม
ฟงั กช์ นั ท่อี อกแบบได้เตม็ ประสิทธภิ าพ
ครั้งท่ี ID Address คำสัง่ อ่านคา่ เซน็ เซอร์ ได้ ไมไ่ ด้
1 *B03 SR# ✓
2 *B03 SR# ✓
3 *B03 SR# ✓
4 *B03 SR# ✓
5 *B03 SR# ✓
6 *B03 SR# ✓
7 *B03 SR# ✓
8 *B03 SR# ✓
9 *B03 SR# ✓
10 *B03 SR# ✓
ตารางท่ี 4.14 ผลการทดสอบส่งคำสั่งอ่านคา่ เซน็ เซอร์ ไปที่กล่อง Slave 3 และให้กล่อง Slave 3 ส่งค่า
เซ็นเซอร์กลบั มาท่ีกล่อง Master
จากตารางท่ี 4.12 คอื ผลการส่งคำสงั่ อา่ นคา่ เซ็นเซอร์ ไปท่กี ล่อง Slave 3 และใหก้ ลอ่ ง Slave
3 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master ซึ่งทำการทดสอบด้วยโปรแกรม Arduino จากผลการทดสอบ
พบว่า การส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่กล่อง Slave 3 และให้กล่อง Slave 3 ส่งค่าเซ็นเซอร์กลับมาที่
กลอ่ ง Master ดว้ ยโปรแกรม Arduino มผี ลการคำนวณเปอรเ์ ซน็ ตค์ วามผิดพลาดเทา่ กับ
77
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% ดังนั้นการทดสอบส่งคำสั่งอ่านค่าเซ็นเซอร์ ไปที่
กล่อง Slave 3 และให้กล่อง Slave 3 ส่งค่าเซ็นเซอร์กลับมาที่กล่อง Master สามารถทำงานได้ตาม
ฟงั ก์ชนั ท่ีออกแบบไดเ้ ตม็ ประสทิ ธิภาพ
4.2.3 ทดสอบเปิดปิด relay กล่อง Master และกลอ่ งลกู ขา่ ยทง้ั 3 กลอ่ ง
4.2.3.1 อุปกรณ์ที่ใช้ทดสอบ Software สำหรับทดสอบเปิดปิด relay กล่อง Master
และกล่องลกู ขา่ ยทงั้ 3 กล่อง
ตารางท่ี 4.15 อุปกรณ์ทใี่ ช้สำหรบั ทดสอบเปิดปิด relay กล่อง Master และกล่องลูกขา่ ยทงั้ 3 กล่อง
รายการ จำนวน
Modbus Master 1 กล่อง
Modbus Slave 3 กลอ่ ง
โทรศพั ท์ทม่ี แี อพพลิเคชน่ั Blynk 1 เครื่อง
4.2.3.2 ขั้นตอนการทดสอบเปิดปิด relay กล่อง Master และกล่องลูกข่าย ในการ
ทดสอบเปิดปิด relay กล่อง Master และกล่องลูกข่ายสำหรับทดสอบเปิดปิด relay กล่อง Master และ
กลอ่ งลกู ข่ายนั้น จะใช้แอพพลิเคช่ัน Blynk ในส่ังเปิดปิด relay ทก่ี ลอ่ ง Master และ
ให้กล่อง Master สั่งคำสั่งไปทีก่ ลอ่ งลกู ข่าย เปิดปิด relay ในการทดสอบ Software ในส่วน
ฟังก์ชันสำหรับทดสอบกล่อง Master นั้น จะมีปุ่ม 4 ปุ่ม ได้แก่ปุ่มที่ 1 เป็นปุ่มสำหรับเปิด-ปิด รีเลย์ช่อง
ควบคุมที่ 1 ปุ่มที่ 2 เป็นปุ่มสำหรับเปิด-ปิด รีเลย์ช่องควบคุมที่ 2 ปุ่มที่ 3 เป็นปุ่มสำหรับเปิด-ปิด รีเลย์
ช่องควบคมุ ท่ี 3 ปุ่มที่ 4 เปน็ ป่มุ สำหรบั เปดิ -ปิด รีเลย์ชอ่ งควบคุมที่ โดยจะมชี อ่ งใหใ้ ส่หมายเลข Slave_ID
ของกลอ่ ง Master โดยมผี ลการทดสอบเปดิ -ปิด ปุม่ ละ 10 คร้ัง โดยเปน็ การกดตดิ กดดับ จะใช้สัญลักษณ์
✓เพอื่ แสดงว่าการทำงานถูกต้อง และใชส้ ญั ลกั ษณ์ เพื่อแสดงวา่ การทำงานไม่ถูกต้อง โดยมีตารางการ
ทดสอบดงั นี้
78
คร้งั ท่ี สถานะการ Slave ID ช่องรีเลย์ควบคุม ช่องรีเลย์ควบคุม
กดปุ่ม ตัวที่ 1 ตวั ท่ี 2
ใช้ได้ ใช้ไม่ได้ ใช้ได้ ใช้ไมไ่ ด้
1 กดเปิด *B01RY01N#, *B01RY02N# ✓ ✓
2 กดปดิ *B01RY01F#, *B01RY02F# ✓ ✓
3 กดเปิด *B01RY01N#, *B01RY02N# ✓ ✓
4 กดปิด *B01RY01F#, *B01RY02F# ✓ ✓
5 กดเปิด *B01RY01N#, *B01RY02N# ✓ ✓
6 กดปดิ *B01RY01F#, *B01RY02F# ✓ ✓
7 กดเปิด *B01RY01N#, *B01RY02N# ✓ ✓
8 กดปดิ *B01RY01F#, *B01RY02F# ✓ ✓
9 กดเปดิ *B01RY01N#, *B01RY02N# ✓ ✓
10 กดปิด *B01RY01F#, *B01RY02F# ✓ ✓
ตารางที่ 4.16 ผลการทดสอบเปิดปิด relay กลอ่ ง Slave 1 ผา่ น Blynk
จากตารางที่ 4.16 เป็นการทดสอบฟังก์ชัน ที่เราได้สร้างขั้นมาโดยทำการสั่ง On-Off Relay
ผ่านแอพพลิเคชั่น Blynk จากการทดสอบพบว่า โปรแกรมที่สร้างขึ้นมา สามารถ On-Off Relay ได้ครบ
ตามฟังกช์ ันทีอ่ อกแบบไว้ โดยมีผลการคำนวณเปอร์เซ็นตค์ วามผดิ พลาดเทา่ กับ
79
จากการทดสอบมีเปอร์เซ็นต์ความผดิ พลาดเทา่ กับ 0% จงึ สรปุ ไดว้ ่าการทดสอบกดปุ่มในแอพพลเิ คชน่ั
Blynk สำหรบั ทดสอบกล่อง กลอ่ ง Slave 1 สามารถทำงานได้ตามฟังก์ชันทีอ่ อกแบบโดยไม่มีความ
ผดิ พลาด
ตารางท่ี 4.17 ผลการทดสอบเปิดปดิ relay กล่อง Slave 2 ผา่ น Blynk
ครง้ั ที่ สถานะการ Slave ID ชอ่ งรีเลย์ควบคมุ ชอ่ งรีเลยค์ วบคมุ
กดปุ่ม ตวั ที่ 1 ตวั ที่ 2
*B02RY01N#, *B02RY02N#
1 กดเปิด *B02RY01F#, *B02RY02F# ใชไ้ ด้ ใชไ้ มไ่ ด้ ใช้ได้ ใช้ไมไ่ ด้
2 กดปิด *B02RY01N#, *B02RY02N# ✓ ✓
3 กดเปิด *B02RY01F#, *B02RY02F# ✓ ✓
4 กดปิด *B02RY01N#, *B02RY02N# ✓ ✓
5 กดเปดิ *B02RY01F#, *B02RY02F# ✓ ✓
6 กดปดิ *B02RY01N#, *B02RY02N# ✓ ✓
7 กดเปิด *B02RY01F#, *B02RY02F# ✓ ✓
8 กดปดิ *B02RY01N#, *B02RY02N# ✓ ✓
9 กดเปดิ *B02RY01F#, *B02RY02F# ✓ ✓
10 กดปิด ✓ ✓
✓ ✓
จากตารางที่ 4.17 เป็นการทดสอบฟงั กช์ นั ทเี่ ราได้สร้างข้ันมาโดยทำการสัง่ On-Off Relay
ผ่านแอพพลเิ คชน่ั Blynk จากการทดสอบพบวา่ โปรแกรมท่ีสร้างข้นึ มา สามารถ On-Off Relay ไดค้ รบ
ตามฟังกช์ นั ที่ออกแบบไว้ โดยมผี ลการคำนวณเปอร์เซ็นต์ความผิดพลาดเท่ากบั
80
จากการทดสอบมีเปอร์เซ็นต์ความผิดพลาดเท่ากับ 0% จึงสรุปได้ว่าการทดสอบกดปุ่มในแอพพลิเคช่ัน
Blynk สำหรับทดสอบกล่อง กล่อง Slave 2 สามารถทำงานได้ตามฟังก์ชันที่ออกแบบโดยไม่มีความ
ผดิ พลาด
ตารางท่ี 4.18 ผลการทดสอบเปิดปิด relay กลอ่ ง Slave 3 ผา่ น Blynk
ครั้งท่ี สถานะการ Slave ID ชอ่ งรีเลย์ควบคุม ชอ่ งรีเลยค์ วบคุม
กดปมุ่ ตัวที่ 1 ตวั ท่ี 2
*B03RY01N#, *B03RY02N#
1 กดเปิด *B03RY01F#, *B03RY02F# ใช้ได้ ใชไ้ ม่ได้ ใชไ้ ด้ ใช้ไมไ่ ด้
2 กดปดิ *B03RY01N#, *B03RY02N# ✓ ✓
3 กดเปิด *B03RY01F#, *B03RY02F# ✓ ✓
4 กดปดิ *B03RY01N#, *B03RY02N# ✓ ✓
5 กดเปดิ *B03RY01F#, *B03RY02F# ✓ ✓
6 กดปิด *B03RY01N#, *B03RY02N# ✓ ✓
7 กดเปดิ *B03RY01F#, *B03RY02F# ✓ ✓
8 กดปิด *B03RY01N#, *B03RY02N# ✓ ✓
9 กดเปิด *B03RY01F#, *B03RY02F# ✓ ✓
10 กดปดิ ✓ ✓
✓ ✓
จากตารางที่ 4.18 เป็นการทดสอบฟังก์ชัน ที่เราได้สร้างขั้นมาโดยทำการสั่ง On-Off Relay
ผ่านแอพพลิเคชั่น Blynk จากการทดสอบพบว่า โปรแกรมที่สร้างขึ้นมา สามารถ On-Off Relay ได้ครบ
ตามฟงั ก์ชนั ท่อี อกแบบไว้ โดยมผี ลการคำนวณเปอรเ์ ซน็ ตค์ วามผดิ พลาดเท่ากับ