BENTO & TESAIoT · Advance Innovation Centre (AIC)

AIoT in Action

Principle to Application — เล่นแอปจริงบน BENTO PSoC Edge Eva Kit ก่อน แล้วแกะจนสร้างเองได้ครบวงจร ด้วย MicroPython: จอสัมผัส → ฮาร์ดแวร์ → เซนเซอร์ → MQTT → TESAIoT Platform ที่ติดตั้งเอง · คลิกการ์ดเพื่อเปิดสไลด์

12 คาบ4 ตอน + Capstone MicroPythonคาบละ 3 ชม. · กลุ่มละ 2–3 คน

ภาพบนการ์ดคือหน้าจอจริงที่โค้ดเฉลยของคาบนั้นวาดออกมา จับจาก BENTO Emulator ที่ความละเอียดเท่าจอ Eva Kit (800×480)
แถบใต้การ์ดคือไฟล์ตัวอย่างประจำคาบหนึ่งไฟล์ เปิดอ่านได้ตรง ๆ · ชุดเต็มของคาบนั้นอยู่ในโฟลเดอร์เดียวกัน

ตอนที่ 1 · Existing UI-based Application — เล่นของจริงก่อน

ตอนที่ 2 · UI-to-Hardware Interfacing — สั่งฮาร์ดแวร์เอง

หน้าจอผลงานของคาบ 3 บนจอ 4.3 นิ้ว
คาบ 3
MicroPython คุมฮาร์ดแวร์
gpio + lcd + ลูป: LED chaser + ปุ่มนับครั้ง
M3 chaser + ปุ่มนับบน LCDเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s03/06_button_picks_led.py — ปุ่มเดียวคุมไฟสามดวงด้วยการจำสถานะ
กดปุ่มเดิมซ้ำแล้วไฟย้ายดวงไปทีละดวง — ตัวแปรที่จำว่า "ตอนนี้อยู่ดวงไหน" คือสิ่งที่ทำให้ปุ่มเดียวพอ
หน้าจอผลงานของคาบ 4 บนจอ 4.3 นิ้ว
คาบ 4
Touch UI คุมฮาร์ดแวร์
ui.poll() event loop — แตะจอแล้วไฟจริงติด
M4 แผง 3 ปุ่ม + switch คุม LEDเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s04/03_switch_matches_led.py — จอกับไฟจริงต้องพูดตรงกันเสมอ
แตะสวิตช์บนจอแล้ว LED บนบอร์ดติดตาม และสถานะบนจออ่านค่าจากไฟจริง ไม่ใช่จากสิ่งที่โปรแกรมคิดว่าสั่งไป
หน้าจอผลงานของคาบ 5 บนจอ 4.3 นิ้ว
คาบ 5
อนาล็อกและสัมผัส
pot + CapSense + dsp.EMA: raw vs filtered คู่กัน
M5 pot→Arc + slider→Bar + filterเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s05/01_capsense_dimmer.py — สไลเดอร์สัมผัสเป็นสวิตช์หรี่ไฟ
ลากนิ้วแล้วความสว่างเปลี่ยนตาม ปล่อยนิ้วแล้วค่าค้าง — ต้องนับรอบที่ค่านิ่งถึงจะรู้ว่านิ้วออกไปแล้ว

ตอนที่ 3 · Sensor Visualization on HMI — วาดข้อมูลเป็นภาพ

หน้าจอผลงานของคาบ 6 บนจอ 4.3 นิ้ว
คาบ 6
เครื่องวัดระดับดิจิทัล
bmi270.motion → dsp.tilt → เกจสองแกน
M6 วางราบ 0° เอียงเข็มวิ่งเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s06/01_imu_step_counter.py — นับก้าวจากความเร่ง
เดินถือบอร์ดแล้วตัวเลขก้าวเดินขึ้น — เห็นว่ายอดคลื่นหนึ่งยอดกลายเป็นหนึ่งก้าวได้ด้วยเกณฑ์ที่เราตั้งเอง
หน้าจอผลงานของคาบ 7 บนจอ 4.3 นิ้ว
คาบ 7
กราฟ Real-time
ui.Chart 3 series + pause/resume + waveform gen
M7 กราฟ accel สด + pauseเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s07/02_fft64_two_tones.py — FFT radix-2 เขียนเองทั้งตัว 64 จุด
ป้อนสองความถี่เข้าไปแล้วเห็นแท่งสองแท่งขึ้นตรงช่องของมัน — สเปกตรัมไม่ใช่กล่องดำ เขียนเองได้ใน 64 จุด
หน้าจอผลงานของคาบ 8 บนจอ 4.3 นิ้ว
คาบ 8
Mini-HMI Dashboard
4 การ์ด: IMU · เข็มทิศ · สัมผัส · pot ใน 32 widgets
M8 รัน 10 นาทีไม่สะดุดเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s08/06_compass_readout.py — เข็มทิศที่คนหน้างานอ่านออก
หมุนบอร์ดแล้วเข็ม ตัวเลของศา และชื่อทิศขยับพร้อมกัน — การ์ดหนึ่งใบของ dashboard ต้องบอกทั้งภาพรวมและตัวเลขที่จดได้

ตอนที่ 4 · IoT Platform Connectivity — ขึ้นแพลตฟอร์มจริง

หน้าจอผลงานของคาบ 9 บนจอ 4.3 นิ้ว
คาบ 9
WiFi และเครือข่าย
scan/connect/ping + network status บน HMI
M9 หน้าจอ SSID/IP/ping สดเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s09/06_link_panel_hmi.py — เอาสถานะลิงก์ขึ้นจอให้คนหน้างานอ่าน
SSID, IP, RSSI และผล ping สองปลายทางอยู่บนหน้าเดียว — คนหน้างานตอบได้ว่าเน็ตหลุดตรงไหนโดยไม่ต้องต่อคอม
หน้าจอผลงานของคาบ 10 บนจอ 4.3 นิ้ว
คาบ 10
MQTT Telemetry
publish JSON ขึ้น TESAIoT CE + รับคำสั่ง toggle LED
M10 two-way ผ่าน brokerเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s10/03_connect_and_publish.py — ต่อ broker แล้วส่งค่าขึ้นไปหนึ่งชุด
ค่าจากเซนเซอร์ขึ้นไปถึง broker หนึ่งชุด และจอบอกทุกขั้นว่าไปถึงไหนแล้ว — ไม่ใช่รอเงียบ ๆ แล้วเดา

Capstone · Principle to Application

หน้าจอผลงานของคาบ 12 บนจอ 4.3 นิ้ว
คาบ 12
AIoT Mini-Product
เซนเซอร์ → HMI → MQTT → Platform + นำเสนอ 10 นาที
M12 demo end-to-endเปิดสไลด์ →
ตัวอย่างประจำคาบ examples/s12/02_confirm_n.py — ยืนพื้นครบ N รอบก่อน จึงจะเชื่อว่าเปลี่ยนจริง
ระดับใหม่ต้องซ้ำติดกันหลายรอบถึงจะปล่อยสัญญาณเตือน — วิธีกันเตือนหลอกที่ใช้ได้กับทุกแหล่งค่า และมีราคาเป็นวินาทีที่ต้องตอบให้ได้
© 2026 รองศาสตราจารย์ วิรุฬห์ ศรีบริรักษ์ · Advance Innovation Centre (AIC), มหาวิทยาลัยบูรพา · BENTO & TESAIoT เนื้อหาเผยแพร่ภายใต้ CC BY 4.0 · โค้ดตัวอย่างภายใต้ MIT License · นำไปใช้/ดัดแปลง/ต่อยอดได้ โดยอ้างอิงที่มา
อัปเดตล่าสุด 2026-09-25 09:18