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.2 การทดสอบการเชื่องโยงเปน็ โครงข่ายบนบัส RS-485
4.3 การทดสอบการส่งข้อมูลไปสู่ IoT CLOUD SERVER
4.4 การทดสอบระบบควบคุมภายในโรงเรอื น
4.1 การทดสอบอ่านคา่ sensor ชุดลกู ข่ายจำนวน 3 ชุด และชุดสำหรับแม่ข่ายจำนวน 1 ชดุ
4.1.1 ทดสอบอา่ นคา่ sensor กล่อง Slave 1
4.1.1.1 อปุ กรณ์ที่ใชท้ ดสอบในการอา่ นคา่ sensor มีดังต่อไปนี
ตารางที่ 4.1 อุปกรณ์ทใ่ี ช้ทดสอบอา่ นค่า sensor กล่อง Slave 1
รายการ จำนวน
1
Arduino nano 1
Sensor Sht20
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 มดี ังตอ่ ไปน้ี 1
ตารางท่ี 4.3 อุปกรณ์ที่ใช้ทดสอบอา่ นค่า sensor กลอ่ ง Slave 2 1
รายการ 1
Arduino nano 1
Sensor Sht20
Sensor Dht22
Solar Cell Panel
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 มดี งั ตอ่ ไปนี้ 1
ตารางที่ 4.5 อุปกรณ์ทีใ่ ช้ทดสอบอา่ นค่า sensor กล่อง Slave 3 1
รายการ 1
Arduino nano 1
Sensor Sht20
Sensor Dht22
Solar Cell Panel
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 ได้ครบ
ตามฟงั ก์ชนั ท่อี อกแบบไว้ โดยมผี ลการคำนวณเปอรเ์ ซน็ ตค์ วามผดิ พลาดเท่ากับ