📟
เรียนรู้และทำความเข้าใจกับบอร์ด Smart Building IoT บน Sensor Board
เรียนรู้และทำความเข้าใจกับบอร์ด Smart Building IoT (Sensor Board)

รูปที่ 3.1: บอร์ด Sensor พร้อม ESP32 และ LoRa
สำหรับเชื่อมต่อเซนเซอร์และส่งข้อมูลไร้สาย
📟3.1 บทนำ
บอร์ด Smart Building IoT (Sensor Board)
เป็นหัวใจสำคัญของระบบฝึกปฏิบัติด้านอาคารอัจฉริยะ
ที่ทำหน้าที่เชื่อมต่อและรับข้อมูลจากเซนเซอร์ประเภทต่าง ๆ เช่น อุณหภูมิ ความชื้น แสง เสียง
การสั่น และการเคลื่อนไหว จากนั้นจึงประมวลผลและส่งข้อมูลผ่านเครือข่าย LoRa ไปยัง
Gateway เพื่อจัดเก็บและแสดงผลบน Dashboard
Sensor Board ออกแบบมาให้เหมาะกับการเรียนรู้ในระดับมัธยมศึกษา อาชีวศึกษา
ไปจนถึงมหาวิทยาลัย โดยใช้ไมโครคอนโทรลเลอร์ ESP32 เป็นตัวประมวลผลหลัก
พร้อมวงจรเสริมที่ช่วยให้ผู้เรียนสามารถฝึกฝนการเขียนโค้ดเพื่อควบคุมอุปกรณ์ Input/Output
ได้อย่างครบถ้วนสามารถเขียนโปรแกรม, อัปโหลดโค้ด, และดีบักได้อย่างสะดวก PlatformIO
รองรับการทำงานกับบอร์ดและแพลตฟอร์มต่างๆ มากมาย เช่น Arduino, ESP32, Raspberry
Pi, และ STM32
📟3.2 โครงสร้างและส่วนประกอบของบอร์ด
Sensor Board ประกอบด้วยวงจรและคอนเน็กเตอร์หลายส่วน ซึ่งเชื่อมต่อกับ ESP32
โดยตรง โดยสามารถจำแนกเป็นหมวดหมู่หลัก ๆ ดังนี้:
ระบบจ่ายไฟและควบคุมพื้นฐาน:
-
DC Power Jack / DC-IN Terminal: จ่ายไฟเลี้ยง 12VDC ให้กับบอร์ด
-
Battery Connector / Charging Module: รองรับแบตเตอรี่ 3.7V
สำหรับระบบสำรองไฟ(Optional)
อุปกรณ์อินพุต:
-
Tactile Switch (SW1, SW2): ปุ่มกดต่อกับ GPIO 34 และ 35
-
DIP Switch (SW3): ใช้เลื่อนขึ้นลงเพื่อควบคุมสถานะ ต่อกับ GPIO 36
-
Motion Sensor / Water Leak / ADC IN: ขาอินพุตสำหรับเซนเซอร์ต่าง
ๆ -
Potentiometer: ปรับค่าแรงดันไฟฟ้าเพื่อจำลองเซนเซอร์แบบอนาล็อก
อุปกรณ์เอาต์พุต:
-
Relay (COM/NO): ควบคุมการเปิด–ปิดอุปกรณ์ไฟฟ้า GPIO 25
-
Buzzer: สร้างเสียงเตือนผ่าน GPIO 13
-
OLED Display: แสดงข้อความและค่าต่าง ๆ ผ่าน I²C
-
Blue/Red LED: สำหรับทดสอบสถานะ GPIO
การสื่อสาร:
-
I2C / UART Connectors: เชื่อมต่อโมดูลและเซนเซอร์เสริม
-
LoRa Module (SLX1280): ส่งข้อมูลแบบไร้สายไปยัง Gateway
-
RS485 Connector: สำหรับสื่อสารกับอุปกรณ์ภายนอกระยะไกล

รูปที่ 3.2: Block Diagram การเชื่อมต่ออุปกรณ์ต่าง ๆ เข้ากับบอร์ด Smart Building
IoT (Sensor Board).
รูปที่ 3.3: ตำแหน่งและองค์ประกอบต่าง ๆ บนบอร์ด Smart Building IoT (Sensor
Board)
| หมายเลข | รายละเอียด | เพิ่มเติม |
|---|---|---|
| 1 | DC Power Jack | แจ็คเสียบอะแดปเตอร์ 12VDC จ่ายไฟเลี้ยงให้กับบอร์ด (ต่อกับขั้วเทอร์มินอลหมายเลข 5 โดยตรง) |
| 2 | DC-IN Terminal | ขั้วเทอร์มินอล 12VDC จ่ายไฟเลี้ยงให้กับบอร์ด |
| 3 | Battery Terminal Connector | ขั้วเชื่อมต่อแบตเตอรี่ลิเธียม 3.7V (Optional) |
| 4, 6 | Tactile Switches | สวิตช์กดติด/ปล่อยดับ SW1 และ SW2 ต่อขา 34 และ 35 ของ ESP32 สำหรับเขียนโปรแกรมและทดสอบ |
| 5 | DIP Switches | สวิตช์เลื่อนขึ้น/ลง SW3 ต่อขา 36 ของ ESP32 สำหรับเขียนโปรแกรมและทดสอบ |
| 7-8 | I2C Connector | คอนเนคเตอร์ I2C ใช้สาย SDA และ SCL สองเส้น เชื่อมต่ออุปกรณ์ I2C ต่างๆ |
| 9 | UART Connector | คอนเนคเตอร์ UART ต่อขา 26 และ 27 ของ ESP32 (สามารถใช้เป็น Digital Input ได้) |
| 10 | ADC0 Connector | อนาล็อกอินพุต 0-5V เชื่อมต่อกับ ADS1115 พอร์ต AIN0 |
| 11 | ADC1 Connector | อนาล็อกอินพุต 0-5V เชื่อมต่อกับ ADS1115 พอร์ต AIN1 |
| 12 | Motion Connector | ดิจิทัลอินพุตสำหรับโมชันเซ็นเซอร์ ต่อขา 32 ของ ESP32 |
| 13 | Water Leak Connector | ดิจิทัลอินพุตสำหรับเซ็นเซอร์น้ำรั่ว ต่อขา 33 ของ ESP32 |
| 14 | Potentiometers | ตัวต้านทานปรับค่าได้ เชื่อมต่อกับ IC ADS1115 ที่พอร์ต AIN2 |
| หมายเลข | รายละเอียด | เพิ่มเติม |
| 15 | Buzzer | บัซเซอร์ชนิดความถี่ 2.048kHz ต่อกับขา 13 ของ ESP32 |
| 16 | RS485 Connector | โมดูล RS485 สำหรับการสื่อสารระยะไกล ทนต่อสัญญาณรบกวน เชื่อมต่อผ่าน UART ESP32 |
| 17 | Relay | สวิตช์ควบคุมวงจรไฟฟ้า ต่อขา 25 ของ ESP32 ผ่าน COM/NO Terminal Connect |
| 18 | OLED Display | จอ OLED 0.91″ 128×32 pixel I2C สำหรับแสดงสถานะและค่าจากเซนเซอร์ |
| 19 | LoRa Module SLX1280 | โมดูล LoRa SLX1280 433MHz SPI สำหรับรับส่งข้อมูลกับ Gateway |
| 20 | Red LED | LED สีน้ำแดง ต่อขา 4 ของ ESP32 |
| 21 | Blue LED | LED สีน้ำเงิน ต่อขา 12 ของ ESP32 |
| 22 | LoRa Antenna | ขั้วต่อสายอากาศสำหรับ LoRa Module เพื่อเพิ่มระยะส่งสัญญาณ |
| 23 | ESP32-DOIT-DEVKIT-V1 | ไมโครคอนโทรลเลอร์หลักของบอร์ด |
| 24 | 5VDC-Out Connector | ขั้วต่อสำหรับจ่ายไฟ 5 VDC ออกไปยังอุปกรณ์ภายนอก |
ตารางที่ 3.1 หมายเลขตำแหน่งใช้งานที่สำคัญบนบอร์ด Smart Building IoT (Sensor
Board)
เพิ่มเติม:
ADS1115 เป็นชิปแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC) แบบ 16 บิต ที่สื่อสารผ่าน I2C
รองรับอินพุตได้ 4 ช่อง (หรือ 2 ช่องแบบ differential) พร้อมตัวขยายสัญญาณในตัว
(Programmable Gain Amplifier – PGA) เหมาะสำหรับใช้งานกับเซนเซอร์แรงดัน แสง
หรืออุณหภูมิที่ต้องการความแม่นยำสูง
และช่วยลดภาระการประมวลผลของไมโครคอนโทรลเลอร์
📟3.3 การเขียนโปรแกรมเบื้องต้น
โปรแกรมบน ESP32 ใช้ภาษา C++ ผ่าน Arduino Framework บน PlatformIO
โดยมีโครงสร้างพื้นฐาน 3 ส่วนหลัก ได้แก่:
Header:
-
ใช้ #include สำหรับเรียกใช้งานไลบรารี
-
ประกาศค่าคงที่ ตัวแปรต่าง ๆ

รูปที่ 3.4: ตัวอย่างโค้ดส่วน Header
สำหรับเรียกไลบรารีและกำหนดค่าขาใช้งานเบื้องต้น.
setup():
-
ทำงานเพียงครั้งเดียวเมื่อตัวบอร์ดเริ่มทำงาน
-
ใช้ตั้งค่า Pin Mode, Serial.begin, การเชื่อมต่อหน้าจอ ฯลฯ

รูปที่ 3.5: ตัวอย่างโค้ดในฟังก์ชัน setup() สำหรับตั้งค่า Pin Mode และเริ่มต้น Serial
Monitor.
loop():
-
ทำงานซ้ำตลอดเวลา
-
ใช้ตรวจสอบสถานะเซนเซอร์ แสดงผล หรือควบคุมอุปกรณ์

รูปที่ 3.6: ตัวอย่างโค้ดในฟังก์ชัน loop() สำหรับสั่งให้ไฟกระพริบทุก 1 วินาที.
โครงสร้างนี้ช่วยให้การพัฒนาโปรแกรมบน Arduino PlatformIO
เป็นไปอย่างมีระบบและเข้าใจง่าย
📟3.4 ตัวอย่างกิจกรรมพื้นฐาน
1. Example Code: Hello World บน Serial Monitor
-
สร้างโปรเจกต์ใหม่ใน PlatformIO
-
เขียนโค้ดให้แสดง “Hello World” ทุก 1 วินาที
-
เปิด Serial Monitor เพื่อตรวจสอบ

รูปที่ 3.7: ตัวอย่างโค้ดแสดงข้อความ “Hello World” บน Serial Monitor ทุก 1
วินาที.

2. Example Code: อ่านค่าสวิตช์ (SW1, SW2, SW3)
วัตถุประสงค์: เรียนรู้การอ่านค่าสวิตช์กดและเลื่อน (SW1, SW2, SW3) บนบอร์ด Sensor
Board เพื่อใช้เป็นตัวควบคุมเงื่อนไขในโค้ด
-
ใช้ digitalRead() อ่านสถานะ GPIO 34, 35, 36
-
ใช้ INPUT_PULLUP เพื่อความเสถียรของสัญญาณ

รูปที่ 3.8: ตัวอย่างโค้ดประกาศขา GPIO สำหรับปุ่มกด SW1, SW2 และ SW3.

3. Example Code: ควบคุมรีเลย์ (Relay)
วัตถุประสงค์: ควบคุมการเปิด–ปิดรีเลย์บนบอร์ด (Relay COM/NO)
เพื่อสวิตช์วงจรภายนอก
-
ใช้ digitalWrite(GPIO25, HIGH) เพื่อเปิดรีเลย์
-
ใช้ LOW เพื่อปิด และ HIGH เพื่อเปิด

รูปที่ 3.9: ตัวอย่างโค้ดควบคุมรีเลย์โดยใช้คำสั่ง digitalWrite() บนขา GPIO25.

4. Example Code: แสดงข้อความบน OLED
วัตถุประสงค์: แสดงข้อความและตัวเลขบนจอ OLED I2C เพื่อใช้แสดงสถานะหรือค่าต่างๆ
แบบ Real Time
-
ติดตั้งไลบรารี Adafruit_SSD1306, Adafruit_GFX
-
เปิด PlatformIO Home (ไอคอน “หน้าบ้าน” บนแถบด้านซ้าย)
-
เลือกเมนู Libraries
-
พิมพ์ค้นหา Adafruit GFX → คลิกที่ผลลัพธ์ “Adafruit GFX Library” → ปุ่ม Add
to Project -
เลือกโฟลเดอร์โปรเจกต์ของคุณ แล้วกด Add
-
ทำซ้ำขั้นตอนเดียวกันกับ Adafruit SSD1306
-
รอจน UI แจ้ง “has been installed!”
-
ไลบรารีทั้งสองจะถูกเพิ่มลงในโฟลเดอร์ .pio/libdeps/<env>
พร้อมอัปเดตไฟล์ lib_deps ใน platformio.ini ให้อัตโนมัติ

รูปที่ 3.10 หน้าต่างการค้นหาไลบรารี Adafruit_SSD1306 บน PlatformIO
เพื่อใช้งานจอ OLED.

รูปที่ 3.11 ตัวอย่างไฟล์ platformio.ini ที่กำหนดค่าไลบรารีจอ OLED และ GFX
-
เขียนโค้ดแล้วดูการทำงานของบอร์ด

รูปที่ 3.12 ตัวอย่างโค้ดแสดงข้อความบนจอ OLED และแสดงสถานะของปุ่ม SW1.

5. Example Code: อ่านค่า Potentiometer ผ่าน ADS1115
วัตถุประสงค์: อ่านค่าแรงดันจาก Potentiometer ผ่าน ADC 16 bit ไอซี ADS1115
เพื่อความละเอียดสูง
-
ไลบรารีที่ต้องติดตั้ง: Adafruit_ADS1X15 ให้หาคำว่า “Adafruit
ADS1X15” -
อ่านค่าแรงดันไฟและแสดงผ่าน Serial
-
ทดลองปรับ Potentiometer แล้วดูค่าการเปลี่ยนแปลง

รูปที่ 3.13 ตัวอย่างโค้ดอ่านค่าแรงดันจาก Potentiometer ผ่านโมดูล ADC ADS1115

6. Example Code ควบคุม Buzzer
วัตถุประสงค์: เรียนรู้การควบคุมอุปกรณ์เอาต์พุตแบบเสียง (Buzzer) ด้วย Sensor
Board
-
ใช้ tone(GPIO13, 2000) เพื่อให้ส่งเสียง
-
ใช้ noTone() เพื่อหยุดเสียง

รูปที่ 3.14 ตัวอย่างโค้ดควบคุมเสียง Buzzer โดยใช้ tone() เพื่อส่งเสียง และ
noTone() เพื่อหยุดเสียง

📟3.5 การใช้ไลบรารี SmartBuilding360Hub
เพื่อให้การใช้งานบอร์ด Sensor Board เป็นไปอย่างมีประสิทธิภาพ
ทีมพัฒนาได้จัดทำไลบรารีพิเศษที่รวบรวมฟังก์ชันสำหรับควบคุมอุปกรณ์ทุกส่วนของบอร์ดไว้แล้ว
ช่วยลดความซับซ้อนและเพิ่มความสะดวก เช่น:
-
อ่านเซนเซอร์แบบง่าย
-
ควบคุมรีเลย์, LED, Buzzer
-
แสดงผลบน OLED
-
สื่อสารผ่าน LoRa / MQTT ได้ทันที
ขั้นตอนใช้งานไลบรารี:
-
ติดตั้ง Git และ VsCode
รูปที่ 3.15 หน้าเว็บไซต์สำหรับดาวน์โหลด Git เพื่อใช้งานร่วมกับ vSCode
รูปที่ 3.16 ตรวจสอบเวอร์ชัน Git ที่ติดตั้งแล้วผ่านคำสั่ง git –version บน Command
Prompt
-
Clone ไลบรารีจาก GitHub:
-
เปิด vSCode
-
ไปที่เมนู Source Control (ไอคอนรูปกิ่งไม้) หรือกด Ctrl+Shift+P พิมพ์ “Git:
Clone” -
คลิกไปที่ clone Repository
-
กรอก URL ของไลบรารี่หรือโปรเจ็ค คือ
https://github.com/tenergyinnovation/smartbuilding360hub.git -
เลือกโฟลเดอร์ปลายทางที่ต้องการให้ดาวน์โหลดไฟล์ลงเครื่อง
https://github.com/tenergyinnovation/smartbuilding360hub.git

รูปที่ 3.17 ขั้นตอนการ Clone ไลบรารีจาก GitHub ผ่าน VsCode โดยกรอก URL
โปรเจกต์
-
เปิดโปรเจกต์ใน VsCode
รูปที่ 3.18 เปิดโปรเจกต์ SmartBuilding360Hub บน VsCode หลังจาก Clone
เสร็จแล้ว
-
รันสคริปต์ auto-download ไลบรารี
-
ที่โฟลเดอร์โปรเจ็ค ให้เปิด Terminal (คลิกขวาที่โฟลเดอร์ → Open in
Integrated Terminal) -
รันสคริปต์ที่เตรียมไว้สำหรับดาวน์โหลดไลบรารี่อัตโนมัติ
-
Windows: clone_repo.bat
-
macOS/Linux: ./clone_repo.sh
-

รูปที่ 3.19 ตัวอย่างการรันสคริปต์ clone_repo.sh
เพื่อดาวน์โหลดไลบรารีที่จำเป็นโดยอัตโนมัติ
-
ตรวจสอบไลบรารีที่อยู่ใน lib/
-
Build และ Upload ทดสอบ

รูปที่ 3.20 แสดงไฟล์ไลบรารีที่ถูกดาวน์โหลด พร้อมสำหรับใช้งานบน VsCode
📟3.6 ทำการทดลองเขียนโค้ดรับค่าสวิตช์ โดยใช้ library smartbuilding360hub

รูปที่ 3.21 ตัวอย่างโค้ดทดสอบการทำงานของปุ่มและรีเลย์ โดยใช้ไลบรารี
smartbuilding360hub

📟สรุปผลการเรียนรู้
-
เข้าใจส่วนประกอบและการเชื่อมต่อของ Sensor Board
-
ฝึกเขียนโปรแกรมเบื้องต้นควบคุมอุปกรณ์ต่าง ๆ บนบอร์ด
-
ใช้งานไลบรารี SmartBuilding360Hub
เพื่อประหยัดเวลาและลดข้อผิดพลาด -
เตรียมความพร้อมสำหรับการทดลองร่วมกับเซนเซอร์อื่น ๆ ในบทถัดไป
✅ คำถามท้ายใบงาน 💡
1.บอร์ด Smart Building IoT (Sensor Board)
ใช้ไมโครคอนโทรลเลอร์รุ่นใดเป็นตัวประมวลผลหลัก?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
2.ขา GPIO ใดของ ESP32 ที่เชื่อมต่อกับปุ่มกด SW1, SW2 และ DIP Switch?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
3.ถ้าเราต้องการให้รีเลย์ทำงานเมื่อปุ่ม SW1 ถูกกด ควรเขียนคำสั่งอย่างไร?
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
📝 พื้นที่สรุปผลการเรียนรู้
🔹 หลังจากทำกิจกรรมและศึกษาข้อมูลจากชุดฝึกนี้ ฉันได้เรียนรู้ว่า
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
🔹 ความเข้าใจเพิ่มเติมที่ได้รับจากใบงานนี้คือ
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
🔹 ข้อเสนอแนะ/ข้อสงสัยเพิ่มเติม
…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………
“ทุกข้อมูลเริ่มต้นจากความรู้สึกของเซนเซอร์”
“Every insight begins with what the sensor
senses”







Leave a Reply