ทำเครื่องจ่ายน้ำอัตโนมัติด้วย KidBright32

เคยสงสัยหรือไม่ว่า ตู้น้ำหยอดเหรียญที่ตั้งอยู่ในสถานที่ต่าง ๆ เช่น หอพัก ร้านค้า และสถานที่อื่น ๆ มีหลักการทำงานอย่างไร ตู้วัดประมาณน้ำอย่างไร ในบทความนี้เราจะมาเรียนรู้หลักการวัดและควบคุมปริมาณการจ่ายน้ำ และทดลองทำเครื่องจ่ายน้ำด้วยบอร์ด KidBright กัน

หลักการวัดและควบคุมปริมาณการจ่ายน้ำ

แบ่งออกได้ 2 วิธี

1.การวัดโดยตรง

คือ การวัดปริมาณน้ำที่ไหลผ่านท่อ หรือวัดน้ำหนักของน้ำในภาชนะโดยตรง โดยใช้เซ็นเซอร์ต่าง ๆ เข้าไปวัดโดยตรง

  • ข้อดี คือ ปริมาณน้ำที่จ่ายมีความเที่ยงตรงสูง และเชื่อถือได้
  • ข้อเสีย คือ ค่าใช้จ่ายในการจัดทำและบำรุงรักษาสูงกว่าวิธีจับเวลา

2.การจับเวลา

คือ การวัดว่าใน 1 วินาทีจ่ายน้ำได้กี่ลิตร จากนั้นจึงเทียบบัญญัติไตรยางค์เพื่อควบคุมปริมาณน้ำที่จ่าย เช่น วัดแล้วว่าใน 1 วินาทีจ่ายน้ำได้ 5 ลิตร หากต้องการให้จ่ายน้ำ 15 ลิตร ให้จ่ายน้ำเป็นเวลา 3 วินาที เป็นต้น

  • ข้อดี คือ บำรุงรักษาง่าย ใช้อุปกรณ์น้อย
  • ข้อเสีย คือ มีความน่าเชื่อถือต่ำ ไม่สามารถจ่ายน้ำได้ละเอียดมากนัก ปริมาณน้ำที่จ่ายได้ขึ้นอยู่กับหลายปัจจัย เช่น ปริมาณน้ำในถังเก็บ แรงดันน้ำ เป็นต้น

การใช้บอร์ด KidBright ร่วมกับปั้มน้ำ

การเชื่อมต่อปั้มน้ำเข้ากับบอร์ด KidBright แนะนำให้ใช้งานปั้มน้ำ USB ซึ่งมีลักษณะดังรูปด้านล่างนี้

รูปที่ 1 ปั้มน้ำ USB ที่ใช้ในโครงงานนี้

ปั้มน้ำแบบ USB สามารถเชื่อมต่อกับบอร์ด KidBright ได้โดยตรงผ่านช่อง USB โดยปั้มน้ำที่นำมาต่อจะต้องใช้กระแสไฟฟ้าไม่เกิน 300mA สำหรับปั้มน้ำ USB ในรูปที่ 1 ใช้กระแสไฟฟ้าประมาณ 200mA ดังนั้นจึงต่อเข้ากับบอร์ด KidBright ได้โดยตรง ดังรูปที่ 2

รูปที่ 2 การเชื่อมต่อปั้มน้ำ USB เข้ากับบอร์ด KidBright ผ่านช่อง USB

ทดสอบเขียนโปรแกรมสั่งงานปั้มน้ำ

ในการเขียนโปรแกรมสั่งงานปั้มน้ำ บทความนี้ใช้ microBlock IDE ในการเขียนโปรแกรม โดยเลือกใช้การเขียนโปแกรมแบบภาษา Python ในการสั่งงาน

1) เปิดโปรแกรม microBlock IDE ขึ้นมา กดปุ่มสร้างโปรเจคใหม่

2) ตั้งชื่อโปรเจค (1) เลือกบอร์ดที่ใช้งาน ตัวอย่างใช้บอร์ด KidBright32 V1.3 (2) กดปุ่ม Create

3) กดปุ่มเปลี่ยนเป็นโหมด Code จะเห็นว่าสามารถพิมพ์โค้ดโปรแกรม Python ได้แล้ว

4) กดปุ่มใด ๆ บนคีย์บอร์ด โปรแกรมจะแจ้งเตือนเปลี่ยนเป็นโหมดเขียนโค้ด ให้กด Yes เพื่อยืนยันการเปลี่ยนโหมดการเขียนโปรแกรม

5) เขียนโปรแกรมทดสอบสั่งงานปั้มน้ำดังนี้

import usb # นำเข้าโมดูล usb เพื่อให้เขียนคำสั่งสั่งงาน USB ได้
from time import sleep # นำเข้าคำสั่ง sleep จากโมดูล time

usb.on() # สั่งให้อุปกรณ์ที่ต่อช่อง USB ทำงาน
sleep(1) # หน่วงเวลาเป็นเวลา 1 วินาที
usb.off() # สั่งให้อุปกรณ์ที่ต่อช่อง USB หยุดทำงาน

6) กดปุ่มอัพโหลดโปรแกรมลงบอร์ด KidBright

ผลการทำงาน คือ ปั้มน้ำทำงาน 1 วินาที แล้วหยุดทำงาน สามารถกดปุ่ม Reset เพื่อดูผลการทำงานซ้ำได้

**ปั้มน้ำต้องทำงานได้ในขั้นตอนนี้ จึงจะไปในขั้นตอนถัดไปได้**

การควบคุมการจ่ายน้ำด้วยวิธีจับเวลา

ข้อมูลจากผู้ขายปั้มน้ำได้ระบุไว้ว่า ปั้มน้ำ USB ตามรูปที่ 1 สามารถปั้มน้ำได้ปริมาณ 1.2 – 1.6 ลิตร/นาที ค่ากลางคือ 1.4 ลิตร/นาที สร้างเป็นสูตรหาค่าเวลาที่ปั้มน้ำต้องทำงานเมื่อกำหนดปริมาณน้ำที่กำหนด ได้ดังนี้

1.4 ลิตร / 60 วินาที = 23.33 มิลลิลิตร/วินาที

1 มิลลิลิตร = 1 / 23.33 มิลลิลิตร/วินาที = 0.042 วินาที

ดังนั้น

ปริมาณน้ำที่ต้องการในหน่วยมิลลิลิตร * 0.042 = ระยะเวลาที่ปั้มน้ำต้องทำงานในหน่วยวินาที

จากสูตรด้านบน ทดสอบหาค่ากลับ หากต้องการปริมาณน้ำ 1.4 ลิตร หรือ 1400 มิลลิลิตร ระยะเวลาที่ปั้มน้ำทำงานควรจะประมาณ 60 วินาที

1400 มิลลิลิตร * 0.042 = 58.8 วินาที

ค่าที่ได้ใกล้เคียง 60 วินาที แสดงว่าสูตรคำนวณถูกต้องแล้ว

ทดสอบเขียนโปรแกรมให้ปั้มน้ำจ่ายน้ำออกมา 100 มิลลิลิตร ดังนี้

import usb # นำเข้าโมดูล usb เพื่อให้เขียนคำสั่งสั่งงาน USB ได้ 
from time import sleep # นำเข้าคำสั่ง sleep จากโมดูล time

waterWant = 100 # สร้างตัวแปร กำหนดปริมาณน้ำที่ต้องการ 100 มิลลิลิตร
timeOn = waterWant * 0.042 # คำนวณหาค่าเวลาที่ปั้มน้ำต้องทำงานในหน่วยวินาที เก็บผลการคำนวณลงตัวแปร timeOn

usb.on() # สั่งให้ปั้มน้ำทำงาน 
sleep(timeOn) # หน่วงเวลาตามค่าที่อยู่ในตัวแปร timeOn
usb.off() # สั่งให้ปั้มน้ำหยุดทำงาน

อัพโหลดโปรแกรมเพื่อทดสอบการทำงาน ผลที่ได้ ปั้มน้ำควรจ่ายน้ำออกมา 100 มิลลิลิตร

จากการทดสอบด้วยเครื่องมือที่มีจำนวน 10 ครั้ง พบว่าใส่น้ำลงภาชนะปริมาณ 600 มิลลิลิตร หลังปั้มน้ำออก พบว่าน้ำเหลือประมาณ 360 มิลลิลิตร แสดงว่าปั้มน้ำจ่ายน้ำออกไป 600 – 360 = 240 มิลลิลิตร ซึ่งผิดจากที่คำนวณไว้ถึง 140 มิลลิลิตร แสดงว่าสูตรคำนวณด้านบนนั้น ไม่สามารถนำมาใช้จริงได้

รูปที่ 3 ปริมาณน้ำก่อนปั้มน้ำทำงาน
รูปที่ 4 ปริมาณน้ำที่เหลือในภาชนะหลังปั้มน้ำทำงาน

แก้ไขสูตรคำนวณใหม่ โดยเทียบบัญญัติไตรยางค์เช่นเดิม จากโค้ดโปรแกรม 100 * 0.042 = 4.2 แสดงว่า ปั้มน้ำทำงาน 4.2 วินาที ได้ 240 มิลลิลิตร เทียบบัญญัติไตรยางค์ใหม่ได้ 4.2 / 240 = 0.0175 วินาที/มิลลิลิตร

จากโค้ดโปรแกรมด้านบน แก้ไขโค้ดโปรแกรมบรรทัดที่ 5 เป็น * 0.0175 แทน แล้วอัพโหลดโปรแกรมทดสอบการทำงานอีกครั้ง

ทดสอบการทำงาน 10 ครั้ง พบว่า * 0.0175 ปริมาณน้ำที่ปั้มออกยังขาดอีกเล็กน้อย

รูปที่ 5 ปริมาณน้ำที่เหลือในภาชนะ (จาก 600 mL) หลังแก้ไขโค้ดโปรแกรมบรรทัดที่ 5 เป็น * 0.0175

จึงปรับค่า 0.0175 แบบสุ่ม โดยปริมาณน้ำที่ต้องการ 100 มิลลิลิตร แต่จ่ายน้ำได้ไม่ถึง 100 มิลลิลิตร แสดงว่าต้องเพิ่มค่า 0.0175 ขึ้น เพื่อให้ปั้มทำงานนานขึ้น

จากการทดสอบสุ่มค่าไปเรื่อย ๆ พบว่าค่า 0.02 ทำให้จ่ายน้ำได้ใกล้เคียง 100 มิลลิลิตรมากที่สุด

รูปที่ 6 ปริมาณน้ำที่เหลือในภาชนะ (จาก 600 mL) หลังแก้ไขโค้ดโปรแกรมบรรทัดที่ 5 เป็น * 0.02

ทำเครื่องจ่ายน้ำ

รูปแบบของเครื่องจ่ายน้ำที่ทำในบทความนี้ แสดงดังรูปที่ 7

รูปที่ 7 ภาพสามมิติของเครื่องจ่ายน้ำอัตโนมัติ

โครงสร้างของเครื่องทำจากกระดาษลังตัดแบ่งเป็น 5 ส่วน แต่ละส่วนมีขนาดดังรูปที่ 8

รูปที่ 8 ขนาดของชิ้นส่วนต่าง ๆ ที่ใช้ประกอบเป็นเครื่องจ่ายน้ำ

ประกอบแต่ละส่วนตามแบบรูปที่ 1 ได้ผลดังรูปที่ 9

รูปที่ 9 เครื่องจ่ายน้ำที่ประกอบเสร็จแล้ว

เขียนโปรแกรมใหม่ให้จ่ายน้ำ 300 มิลลิลิตรต่อเมื่อปล่อยปุ่ม S1 ได้โค้ดโปรแกรมดังนี้

import usb # นำเข้าโมดูล usb เพื่อให้เขียนคำสั่งสั่งงาน USB ได้ 
from time import sleep # นำเข้าคำสั่ง sleep จากโมดูล time 
import switch # นำเข้าโมดูล switch เพื่อให้เขียนโปรแกรมรับคำสั่งจากสวิตช์ S1 & S2 ได้
import display # นำเข้าโมดูล display เพื่อให้เขียนโปรแกรมควบคุมแอลอีดี 16x8 ได้

waterWant = 200 # สร้างตัวแปร กำหนดปริมาณน้ำที่ต้องการ 200 มิลลิลิตร 
timeOn = waterWant * 0.02 # คำนวณหาค่าเวลาที่ปั้มน้ำต้องทำงานในหน่วยวินาที เก็บผลการคำนวณลงตัวแปร timeOn 

while True: # วนรอบทำคำสั่งต่อไปนี้
    display.raw(b"\x00\x00\x00\x00\x38\x44\x42\x21\x42\x44\x38\x00\x00\x00\x00\x00") # แสดงรูปหัวใจ
    if switch.value(switch.S1) == 1: # ถ้ากดปุ่ม S1
        display.raw(b"\x00\x00\x00\x00\x08\x04\x02\xff\x02\x04\x08\x00\x00\x00\x00\x00") # แสดงรูปลูกศร
        usb.on() # สั่งให้ปั้มน้ำทำงาน 
        sleep(timeOn) # หน่วงเวลาตามค่าที่อยู่ในตัวแปร timeOn 
        usb.off() # สั่งให้ปั้มน้ำหยุดทำงาน
    sleep(0.05) # หน่วงเวลาทำงาน 0.05 วินาที

ผลที่ได้ เป็นดังวีดีโอด้านล่าง


บทความนี้จัดทำโดย สนธยา นงนุช ผู้เขียนบทความด้านสมองกลฝังตัวกว่า 100 บทความบนเว็บไซต์ ร้านไอโอเอ็กซ์ฮ๊อบ อนุญาตให้คัดลอก ทำซ้ำ ดัดแปลง เผยแพร่ ส่วนหนึ่งส่วนใดหรือทั้งหมดของบทความนี้ได้ โดยต้องระบุแหล่งที่มา (สัญญาอนุญาต CC-BY-4.0)

ทำเครื่องวัดคุณภาพอากาศ IoT ส่งค่าขึ้นเว็บ คนดูได้ทั่วโลกผ่านระบบ แอร์ริ (Airri)

แอร์ริ (Airri) เป็นระบบกลางจัดเก็บข้อมูลคุณภาพอากาศและสภาพอากาศที่คนทั่วไปสร้างอุปกรณ์ IoT ขึ้นมา แล้วส่งค่าจากเซ็นเซอร์ขึ้นมาบนระบบ แล้วระบบนำข้อมูลไปแสดงผลแผนที่ให้คนทั่วไปได้เห็นคุณภาพอากาศ/สภาพอากาศในแต่ละจุดในประเทศไทย

เข้าดูแผนที่คุณภาพอากาศได้ที่ ข้อมูลคุณภาพอากาศและสภาพอากาศประเทศไทย

ข้อมูลที่ถูกเก็บในแต่ละวัน จะถูกอัพโหลดขึ้น GitHub : Airri-daily-data เพื่อให้นักวิจัย และผู้สนใจข้อมูล นำข้อมูลไปใช้ต่อได้โดยไม่เสียค่าใช้จ่าย

โครงการ microBlock ใช้เงินสนับสนุนจาก ผู้บริจาค เป็นค่าใช้จ่ายในการจัดทำระบบและดูแลระบบจัดเก็บข้อมูล ผู้พัฒนาต้องขอขอบคุณทุกท่านมา ณ ที่นี้

เตรียมอุปกรณ์ทำเครื่องวัดคุณภาพอากาศ

อุปกรณ์ที่ใช้มีดังนี้

1.บอร์ด KidBright32, OpenKB, IPST-WiFi, ESP32 บอร์ดใดบอร์ดหนึ่ง หรือบอร์ดอื่น ๆ ที่ microBlock รองรับ โดยตัวบอร์ดต้องสามารถเชื่อมต่อ WiFi ได้ บทความนี้เลือกใช้บอร์ด KidBright32 V1.4 (บอร์ดฟ้า)

รูปที่ 1 บอร์ด KidBright32

2. เซ็นเซอร์ฝุ่น โดยฝุ่น PM2.5 และ PM10 เป็นค่าสำคัญที่นำไปคำนวณเป็น ดัชนีคุณภาพอากาศ (AQI) ได้ บทความนี้เลือกใช้เซ็นเซอร์ฝุ่นรุ่น PMS7003

รูปที่ 2 เซ็นเซอร์ฝุ่น PMS7003

3. เซ็นเซอร์อุณหภูมิและความชื้น บทความนี้เลือกใช้เซ็นเซอร์รุ่น AHT20

4. เซ็นเซอร์ความกดอากาศ บทความนี้เลือกใช้เซ็นเซอร์รุ่น BMP280

รูปที่ 3 เซ็นเซอร์วัดอุณหภูมิและความชื้น AHT20 + เซ็นเซอร์วัดความดันอากาศ BMP280

5. เซ็นเซอร์วัดแสง บทความนี้เลือกใช้เซ็นเซอร์รุ่น BH1750

รูปที่ 4 เซ็นเซอร์แสง BH1750

ต่อวงจร

ให้ต่อ AHT20, BMP280 และ BH1750 เข้ากับบอร์ด KidBright32 ผ่านช่อง KB Chain จากนั้นต่อเซ็นเซอร์ฝุ่น PMS7003 เข้ากับบอร์ด KidBright ช่อง 18 / 19 หรือ 23 ได้ภาพรวมการต่อวงจรดังนี้

รูปที่ 5 การต่อเซ็นเซอร์วัดอุณหภูมิ ความชื้น เซ็นเซอร์ความกดอากาศ เซ็นเซอร์ฝุ่น เซ็นเซอร์แสง เข้ากับบอร์ด KidBright

การเขียนโปรแกรมส่งค่าเซ็นเซอร์ขึ้นระบบ Airri

บอร์ด KidBright32 มี WiFi มาในตัว ช่วยให้สามารถเชื่อมต่ออินเตอร์เน็ตได้ ซึ่งระบบ Airri มีเซิร์ฟเวอร์เก็บข้อมูลอยู่บนอินเตอร์เน็ต ทำให้บอร์ด KidBright สามารถส่งค่าที่อ่านได้จากเซ็นเซอร์ขึ้นไปบน Airri ได้

การเขียนโปรแกรมส่งค่า ควรเริ่มจากการทดสอบอ่านค่าจากเซ็นเซอร์ต่าง ๆ ก่อน เพื่อให้มั่นใจได้ว่า เซ็นเซอร์ที่นำมาใช้ในโปรเจคนี้ สามารถใช้งานได้จริง ๆ

การทดสอบเซ็นเซอร์วัดฝุ่น PMS7003

หลังจาก ติดตั้งโปรแกรม microBlock IDE และเข้าใจวิธีการใช้งานโปรแกรมเบื้องต้น แล้ว ให้ติดตั้งส่วนเสริม PMS7003 แล้วอัพโหลดโปรแกรมทดสอบ ตามขั้นตอนดังนี้

1) ที่โปรแกรม microBlock IDE กดเมนู Extension

2) พิมพ์ PMS7003 ลงในช่องค้นหา จากนั้นกดปุ่ม Install

3) รอจนกว่าจะติดตั้งเสร็จ เมื่อติดตั้งเสร็จ จะแสดงเครื่องหมายถูก (ดังรูป) แล้วกดปิดหน้าต่างได้เลย

เขียนโปรแกรมทดสอบอ่านค่า PM2.5 แสดงผลใน Terminal ดังนี้

1) กดที่เมนู PMS7003 แล้วลากบล็อก PMS7003 ออกมาวางในพื้นที่ทำงาน

2) เปลี่ยนขาที่ต่อกับ PMS7003 เป็นขา 18 (ตามวงจรในหัวข้อ ต่อวงจร)

3) กดเมนู Advanced แล้วลากบล็อก print มาวางในพื้นที่ทำงาน จากนั้นลากบล็อก PMS7003 ไปใส่บล็อก print

4) กดเมนู Control แล้วลากบล็อก wait … seconde มาต่อท้ายบล็อกปริ้น แล้วลากบล็อก forever มาครอบบล็อกทั้งหมด

ได้โค้ดโปรแกรมสุดท้ายดังนี้

กดปุ่มอัพโหลดโปรแกรม แล้วรอจนกว่าจะอัพโหลดโปรแกรมเสร็จ

เปิด Terminal ขึ้นมา จากนั้นสังเกตใน Terminal จะมีค่าฝุ่น PM2.5 ที่วัดได้แสดงขึ้นมา

หากค่าฝุ่นที่วัดได้ เป็น 0 เกือบตลอดเวลา ให้ทดลองจุดธูป หรือสร้างควันขึ้นมาจ่อที่หน้าเซ็นเซอร์ ค่าที่ได้วัดได้จะต้องขึ้นสูงมาก แสดงว่าเซ็นเซอร์สามารถทำงานได้

การทดสอบเซ็นเซอร์วัดอุณหภูมิและความชื้น AHT20

ติดตั้งส่วนเสริม AHT20 ตามขั้นตอนเดียวกันกับ การทดสอบเซ็นเซอร์วัดฝุ่น PMS7003 เขียนโปรแกรมอ่านค่าอุณหภูมิและความชื้นแสดงผลใน Terminal ดังนี้

อัพโหลดโปรแกรม จากนั้นดูค่าใน Terminal หากเซ็นเซอร์ทำงานได้ปกติ จะแสดงค่าอุณหภูมิและความชื้นขึ้นมา

การทดสอบเซ็นเซอร์วัดความกดอากาศ BMP280

ติดตั้งส่วนเสริม BMP280 จากนั้นเขียนโปรแกรมดังนี้

เซ็นเซอร์ BMP280 มี 2 ID คือ 0x76 และ 0x77 แนะนำให้ทดสอบเลือกเป็น 0x76 ก่อน หากใน Terminal ไม่แสดงค่าความกดอากาศที่ถูกต้อง จึงค่อยทดลองเปลี่ยนเป็น 0x77

อัพโหลดโปรแกรมลงบอร์ด หาก ID ที่เลือกถูกต้อง ใน Terminal จะแสดงค่าความกดอากาศขึ้นมา

การทดสอบเซ็นเซอร์วัดแสง BH1750

เซ็นเซอร์วัดแสง BH1750 มี 2 ID คือ 0x23 และ 0x5C แนะนำให้ทดสอบเหมือนกับ BMP280 คือลองเลือกเป็น 0x23 ก่อน หากใช้งานไม่ได้ จึงค่อยเลือกเป็น 0x5C

ติดตั้งส่วนเสริม BH1750 จากนั้นใช้โค้ดโปรแกรมต่อไปนี้ในการทดสอบ

หากเลือก ID ถูกต้อง ค่าแสงที่อ่านได้จะแสดงบน Terminal

เขียนโปรแกรมส่งค่าขึ้นระบบแอร์ริ (Airri)

ติดตั้งไลบารี่ Airri จากนั้นเขียนโค้ดตามรูปด้านล่างนี้

ในบล็อก Airri begin with: ให้แก้ไขดังนี้

  • WiFi Name – ใส่ชื่อ WiFi ที่ใช้คลื่น 2.4 GHz และออกอินเตอร์เน็ตได้
  • WiFi Password – ใส่รหัสผ่านของ WiFi หาก WiFi ไม่มีรหัส ให้เว้นว่างไว้
  • Email – ให้ใส่อีเมล์เจ้าของอุปกรณ์ (อีเมล์นี้จะใช้ล็อกอินเข้าระบบจัดการอุปกรณ์แอร์ริภายหลัง ดังนั้นต้องกรอกให้ถูกต้อง)

ในบล็อกเซ็นเซอร์ BMP280 และ BH1750 กำหนด ID ให้ถูกต้อง

อัพโหลดโปรแกรม แล้วสังเกตใน Terminal หากมีข้อความ OK แสดงว่าสามารถส่งข้อมูลขึ้นระบบแอร์ริได้แล้ว

การจัดการอุปกรณ์แอร์ริ

หลังจากส่งข้อมูลขึ้นบนระบบแอร์ริแล้ว อุปกรณ์จะถูกเพิ่มเข้าระบบแอร์ริอัตโนมัติ แต่อุปกรณ์ยังไม่มีชื่อ และไม่มีตำแหน่งบนแผนที่ หากเข้าไปดูในแผนที่ใหญ่ ข้อมูลคุณภาพอากาศและสภาพอากาศประเทศไทย จะยังไม่มีอุปกรณ์แสดงบนแผนที่ จำเป็นต้องไปใส่ชื่อ และปักหมุดอุปกรณ์ในระบบจัดการก่อน

เข้า ระบบจัดการอุปกรณ์ตรวจวัดคุณภาพอากาศในระบบแอร์ริ ในช่องอีเมล์ ใส่อีเมล์ให้ตรงกับอีเมล์ที่ใส่ในโค้ด ช่องรหัสผ่าน หากยังไม่เคยเข้าสู่ระบบมาก่อน ให้กรอกรหัสผ่านที่จะใช้เข้าสู่ระบบในครั้งถัดไป จากนั้นกดปุ่ม เข้าสู่ระบบ

จากนั้นกดเมนู อุปกรณ์ เลือกอุปกรณ์ที่ต้องการจัดการ

เปลี่ยนชื่ออุปกรณ์ โดยกดปุ่มรูปดินสอ หลังชื่ออุปกรณ์

ใส่ชื่ออุปกรณ์ใหม่ แล้วกดปุ่ม ตกลง

ระบบจะเปลี่ยนชื่ออุปกรณ์และบันทึกชื่อใหม่ให้อัตโนมัติ

ที่กล่อง ตำแหน่งบนแผนที่ ให้เลื่อนหาตำแหน่งจริงของอุปกรณ์ แล้วคลิกเพื่อปักหมุด ระบบจะบันทึกหมุดที่ปัดอัตโนมัติ

เมื่อเข้า ระบบจัดการอุปกรณ์ตรวจวัดคุณภาพอากาศในระบบแอร์ริ จะมีหมุดอุปกรณ์แสดงขึ้นมาแล้ว คลิกที่หมุดเพื่อดูค่าล่าสุดที่อุปกรณ์ส่งค่าขึ้นมา

เป็นอันจบการทำเครื่องวัดคุณภาพอากาศระบบ IoT ส่งค่าขึ้นระบบแอร์ริ

สำหรับครู / อาจารย์ / บุคลากรทางการศึกษา

microBlock กำลังจะเปิดอบรมแนวทางการจัดการเรียนการสอนแบบสะเต็มศึกษา (STEM) และแบบ Project Based Learning (PBL) ในรายวิชาวิทยาการคำนวณ (ระดับมัธยมต้น-มัธยมปลาย) โดยใช้ microBlock IDE สอนเขียนโค้ดด้วยบล็อกเบื้องต้น ใช้โครงงานเครื่องวัดคุณภาพอากาศเป็นตัวอย่าง ผู้เขียนขอท่านพิจารณา โดยผู้เขียนจะประกาศรายละเอียดเร็ว ๆ นี้


บทความนี้จัดทำโดย สนธยา นงนุช ผู้เขียนบทความด้านสมองกลฝังตัวกว่า 100 บทความบนเว็บไซต์ ArtronShop อนุญาตให้คัดลอก ทำซ้ำ ดัดแปลง เผยแพร่ ส่วนหนึ่งส่วนใดหรือทั้งหมดของบทความนี้ได้ โดยต้องระบุแหล่งที่มา (สัญญาอนุญาต CC-BY-4.0)

microBlock IDE V2.0.0 เปิดให้ดาวน์โหลดแล้ว

microBlock IDE offline เป็นโปรแกรมบนเครื่องคอมพิวเตอร์ใช้พัฒนาโปรแกรมบนบอร์ด KidBright32 ด้วยภาษาบล็อกและภาษาไพทอน (MicroPython)

ความสามารถ

  • เขียนโปรแกรมลงบอร์ด KidBright ด้วยภาษาบล็อกและภาษาไพทอน (MicroPython)
  • มีระบบให้คำแนะนำการเขียนโค้ด (Auto Completion)
  • ใช้งานบล็อกแอลอีดีและบล็อกสร้างเสียงเพลงได้ง่านกว่าโปรแกรมใด ๆ
  • มีระบบตรวจสอบและให้คำแนะนำในการติดตั้ง MicroPython
  • อัพโหลดโปรแกรมรวดเร็วเพียง 2 วินาที
  • มีระบบค้นหาและเชื่อมต่อกับบอร์ด KidBright อัตโนมัติ
  • ดีบัคและดูผลการทำงานของโปรแกรมได้ด้วย Terminal
  • รองรับการเพิ่มบล็อกในโปรแกรมด้วย Extension
  • มีระบบบันทึกไฟล์อัตโนมัติ หมดปัญหาไฟดับแล้วงานหาย
  • รองรับการแปลงโค้ดแบบบล็อกเป็นโค้ดภาษาไพทอนเพื่อเรียนรู้หลักการเขียนโค้ดโปรแกรมไพทอน

อุปกรณ์ที่รองรับ

  • บอร์ด KidBright32 V1.3 และ V1.4
  • บอร์ด KidBright32 V1.5
  • บอร์ด KidBright32i (V1.5i by INEX)
  • บอร์ด KidBright32 V1.6 by Gravitech

ระบบปฏิบัติการที่รองรับ

  • Windows 64 บิต (ไฟล์ติดตั้ง และใช้งานแบบไม่ติดตั้ง)
  • Windows 32 บิต (ไฟล์ติดตั้ง และใช้งานแบบไม่ติดตั้ง)
  • macOS (ไฟล์ติดตั้ง และใช้งานแบบไม่ติดตั้ง)
  • Ubuntu (ใช้งานแบบไม่ติดตั้ง)

ดาวน์โหลดได้แล้วที่ ดาวน์โหลด microBlock IDE

การใช้งาน Dashboard ใน microBlock IDE

โปรแกรม microBlock IDE เวอร์ชั่น 2.1.0 ออกอัพเดทใหม่ เพิ่มหน้า Dashboard ทำให้แสดงผลข้อมูลแบบข้อความ หลอดไฟ เกจ กราฟ และ Log ได้ ในบทความนี้จะมาแนะนำการใช้ Dashboard แสดงผลค่าต่าง ๆ จากบอร์ด KidBright / OpenKB / IPST-WiFi

การส่งข้อมูลขึ้นหน้า Dashboard

ข้อมูลจากบอร์ด KidBright32 / OpenKB / IPST-WiFi จะส่งผ่านสาย USB เข้ามาที่เครื่องคอมพิวเตอร์และเข้าไปที่หน้า Dashboard จากนั้นหน้า Dashboard จึงแสดงผลข้อมูลที่ได้รับ ดังนั้น ณ ปัจจุบัน microBlock IDE จะส่งข้อมูลมาแสดงผลบนหน้า Dashboard ได้ต่อเมื่อเชื่อมต่อบอร์ดเข้ากับเครื่องคอมพิวเตอร์ผ่านสาย USB เท่านั้น

การส่งข้อมูลขึ้นไปยัง Dashboard ทำได้โดยใช้บล็อก send … to dashboard ซึ่งอยู่ในหมวดหมู่ Advanced ของทุกบอร์ด

บล็อก send … to dashboard มีพารามิเตอร์ 2 ตัว คือ

  1. ข้อมูลที่ต้องการส่ง (Data) เป็นตัวเลข หรือตัวอักษร ที่ต้องการส่งขึ้นไปแสดงผลบนหน้า Dashboard
  2. ชื่อข้อมูล (Source) เป็นชื่อของข้อมูลนั้น ๆ ควรตั้งให้สื่อความหมาย เช่น ข้อมูลความเข้มของแสง ควรตั้ง light หรือ light_level ชื่อข้อมูลที่ตั้งไม่ควรมีเว้นวรรค ไม่ควรใช้ข้อความภาษาไทย

บทความนี้ใช้บอร์ด KidBright32 V1.3 ส่งค่าจากเซ็นเซอร์วัดความเข้มของแสงบนบอร์ดไปแสดงบน Dashboard ด้วยชื่อข้อมูล (Source) light อัพเดทค่าทุก ๆ 0.1 วินาที เขียนโปรแกรมได้ดังนี้

อัพโหลดโปรแกรมลงบอร์ด จากนั้นเปิด Terminal ขึ้นมา ค่าความเข้มแสงที่วัดได้จะแสดงผลในรูปแบบ <Source>=<Data> ดังรูป

การจัดการ Dashboard

การใช้งาน Dashboard เบื้องต้น

เปิด Dashboard ขึ้นมา โดยกดปุ่ม Dashboard

หน้า Dashboard จะแสดงขึ้นมา (ดังรูป)

เมื่อเปิด Dashboard ครั้งแรก จะไม่มี Widget ใด ๆ แสดงเลย ให้กดตรง Toolbox เพื่อเปิดส่วนเลือก Widget ที่ต้องการสร้าง จากนั้นคลิกเลือก Widget ที่ต้องการสร้างได้เลย

การใช้ Widget ข้อความ

กดเปิด Toolbox ขึ้นมา (1) จากนั้นกดเลือก Widget Text (2) Widget ข้อความจะถูกเพิ่มขึ้นมา (3) ดังรูป

Widget ที่สร้างขึ้นมา สามารถย้ายตำแหน่งได้โดยคลิกเมาส์ค้างที่บริเวณส่วนหัวของ Widget แล้วลากเพื่อย้ายตำแหน่ง

สามารถปรับขนาดของ Widget ได้โดยคลิกเมาส์บริเวณมุมขวาล่างของ Widget แล้วลากเพื่อปรับขนาด

(1) กดปุ่มรูปเฟืองบริเวณมุมขวาบนของ Widget

(2) จากนั้นกล่องตั้งค่า Widget จะแสดงขึ้นมา สำหรับ Widget ข้อความ มีให้ตั้งค่าดังรูป โดย Name คือชื่อของ Widget นั้น ๆ สามารถตั้งเป็นอะไรก็ได้ ตัวอย่างตั้งเป็น Light level ส่วน Source คือชื่อข้อมูลที่ต้องการให้แสดงผล จากโค้ดโปรแกรมที่เขียนไว้ด้านบน เขียนโปรแกรมตั้งชื่อข้อมูลความเข้มของแสงไว้ที่ light จึงเลือก light สุดท้าย Unit คือข้อความที่ต้องการให้ต่อท้าย เนื่องจากค่าของแสงวัดได้เป็น % ในช่อง Unit จึงใส่ % ลงไป

(3) กดที่พื้นที่ว่างเพื่อปิดกล่องตั้งค่า Widget

ค่าแสงที่วัดได้ก็จะแสดงใน Widget ข้อความแล้ว

การใช้ Widget หลอดไฟ

Widget หลอดไฟมีให้ตั้งค่าดังนี้

  1. Name – ชื่อของ Widget สามารถเปลี่ยนได้ตามต้องการ
  2. Source – ชื่อข้อมูล

โดย Widget หลอดไฟ หากข้อมูลที่เข้ามาผ่าน Source มีค่าเป็น 0 หลอดไฟจะดับ หากเป็นค่าที่ไม่ใช่ 0 หลอดไฟจะติด

ตัวอย่างการใช้งาน Widget หลอดไฟ แสดงดังรูป

การใช้ Widget เกจ

Widget เกจมีให้ตั้งค่าดังนี้

  1. Name – ชื่อของ Widget สามารถเปลี่ยนได้ตามต้องการ
  2. Source – ชื่อข้อมูล
  3. Min – ค่าต่ำสุดที่เกจแสดงผลได้
  4. Max – ค่าสูงสุดที่เกจแสดงผลได้

โดย Widget เกจจะรับข้อมูลเป็นตัวเลขเท่านั้น หากส่งข้อมูลที่เป็นข้อความเข้ามา เกจจะแสดงผลเป็น 0 เสมอ ตัวอย่างเกจแสดงผลค่า 60 แสดงดังรูป

ตัวอย่างการใช้งาน Widget เกจ แสดงดังรูป

การใช้งาน Widget กราฟ

Widget กราฟมีให้ตั้งค่าดังนี้

  1. Name – ชื่อของ Widget สามารถเปลี่ยนได้ตามต้องการ
  2. Source – ชื่อข้อมูล
  3. Min – ค่าต่ำสุดที่กราฟแสดงผลได้
  4. Max – ค่าสูงสุดที่กราฟแสดงผลได้
  5. Limit – จำนวนข้อมูลสูงสุดที่ให้นำมาแสดงเป็นกราฟ

โดย Widget กราฟจะรับข้อมูลเป็นตัวเลขเท่านั้น หากส่งข้อมูลที่เป็นข้อความเข้ามา กราฟจะแสดงผลเป็น 0 เสมอ ตัวอย่างกราฟแสดงผลค่าแสงที่เปลี่ยนแปลงตลอดเวลา แสดงดังรูป

ตัวอย่างการใช้งาน Widget กราฟ แสดงดังรูป

การใช้งาน Widget Log

Widget Log มีให้ตั้งค่าดังนี้

  1. Name – ชื่อของ Widget สามารถเปลี่ยนได้ตามต้องการ
  2. Source – ชื่อข้อมูล
  3. Limit – จำนวนข้อมูลสูงสุดที่ให้นำมาแสดง

ตัวอย่าง Log ค่าแสง แสดงดังรูป

ตัวอย่างการใช้งาน Widget Log แสดงดังรูป


บทความนี้จัดทำโดย สนธยา นงนุช ผู้เขียนบทความด้านสมองกลฝังตัวกว่า 100 บทความบนเว็บไซต์ ร้านไอโอเอ็กซ์ฮ๊อบ อนุญาตให้คัดลอก ทำซ้ำ ดัดแปลง เผยแพร่ ส่วนหนึ่งส่วนใดหรือทั้งหมดของบทความนี้ได้ โดยต้องระบุแหล่งที่มา (สัญญาอนุญาต CC-BY-4.0)

รู้จักกับแอร์ริ (Airri) ระบบรายงานข้อมูลคุณภาพอากาศ แนวทางจัดการเรียนการสอน หลักการทำงาน

แอร์ริ (Airri) ระบบรายงานข้อมูลคุณภาพอากาศและสภาพอากาศ เป็นโครงการภายใต้ microBlock โดยเพิ่มขีดความสามารถของ microBlock ให้รองรับการทำโครงงานด้านอินเตอร์เน็ตทุกสรรพสิ่ง หรือ IoT (Internet Of Things) โดยเป็นทักษะที่นักเรียน / นักศึกษาทุกคนควรจะมี เนื่องจากอุปกรณ์ IoT ในปัจจุบันมีเพิ่มมากขึ้นเรื่อย ๆ โดยอยู่ในรูปที่มองเห็นได้ง่าย อย่าง หม้อหุงข้าว IoT, เตาปิ้งขนมปัง IoT, ตู้เย็น IoT, หุ่นยนต์ดูดฝุ่น เป็นต้น และกำลังเริ่มเข้าไปสู่งานด้านอุตสาหกรรม หรือ Industrial 4.0, เริ่มเข้าสู่ชีวิตผู้คนผ่านระบบเมืองอัจฉริยะ หรือ Smart City, เข้าสู่งานด้านเกษตรกรรมผ่านระบบเกษตรอัจฉริยะ หรือ Smart Farm โดยระบบรายงานคุณภาพอากาศเป็นหนึ่งในโครงงานที่สร้างขึ้นได้ง่าย เข้าใจได้ง่าย แต่สามารถนำมาจัดการเรียนรู้ในรูปแบบ STEM และ Project Base ได้ เป็นแนวทางให้ผู้เรียนได้ทดสอบอาชีพนักพัฒนาอุปกรณ์ IoT ซึ่งเป็นอาชีพใหม่ และเป็นอาชีพทักษะสูงที่กำลังเป็นที่ต้องการของตลาดมากขึ้น

แนวคิดเริ่มแรกระบบแอร์ริ

โครงการ microBlock ไม่มีแพลตฟอร์มด้าน IoT ที่เป็นของตนเอง ผู้พัฒนาจึงเริ่มมองหาแพลตฟอร์ม IoT ที่เมื่อลงทุนทำขึ้นมาแล้ว จะต้องได้ประโยชน์ครบทั้ง 3 ฝ่าย คือ

  1. ฝ่ายผู้เรียน / นักเรียน / นักศึกษา ได้ทำโปรเจคหรือโครงงานที่ใช้งานได้จริง โดยได้ใช้ทักษะครบทั้งทางด้านฮาร์ดแวร์ และซอฟแวร์ คือได้ต่อวงจรจริง ได้จับอุปกรณ์ ได้เขียนโปรแกรม ได้ลองผิดลองถูก และได้โครงงานที่ใช้งานได้จริง สามารถนำไปประยุกต์ใช้ในชีวิตประจำวันได้จริง
  2. ฝ่ายครูผู้สอน / วิทยากร / เทรนนิ่ง ได้โครงงานที่สามารถจัดการเรียนการสอนแบบสเตมศึกษา (STEM) ได้ รวมทั้งเป็น Project Base ดึงความสนใจจากผู้เรียนได้มากที่สุด และได้โครงงานที่เชื่อมโยงกับชีวิตประจำวัน หรือปัญหาในชีวิตประจำวัน เพื่อให้ผู้เรียนสนใจในเนื้อหาในระดับสูงสุด
  3. ฝ่ายสังคม / บุคคลทั่วไป ได้ผลพลอยได้จากโครงงานที่ทำขึ้นจากฝ่ายผู้เรียน ในเมื่อฝ่ายผู้เรียนได้ลงทุนด้านการศึกษาเพื่อตนเองแล้ว ผลที่ได้ควรจะเป็นประโยชน์ต่อสังคมโดยรวมด้วย

ผู้พัฒนาโครงการ microBlock จึงได้คิดระบบแอร์ริ (Airri) หรือระบบรายงานสภาพอากาศและคุณภาพอากาศขึ้น โดยวางแนวคิดให้ทั้ง 3 ฝ่ายได้ประโยชน์ดังที่กล่าวมา

แนวทางการจัดการเรียนรู้ระบบแอร์ริ (นำเสนอโดย microBlock)

(สำหรับครูผู้สอน) ผู้พัฒนาโครงการ microBlock และระบบแอร์ริ (Airri) ขอนำเสนอรูปแบบการจัดการเรียนรู้ดังนี้

1) จัดการเรียนรู้แบบสเตมศึกษา (STEM)

โดยใช้โครงงานเครื่องวัดคุณภาพอากาศเป็นตัวอย่าง โดยแนวทางการจัดรูปแบบ STEM มีดังนี้

  1. S : Science (วิทยาศาสตร์) สอนเนื้อหาเชิงทฤษฎีก่อนลงมือทำจริง โดยสอนที่มาของค่าต่าง ๆ ในเครื่องวัดคุณภาพอากาศ เช่น อุณหภูมิคืออะไร, เซ็นเซอร์อิเล็กทรอนิกส์วัดอุณหภูมิได้อย่างไร (หลักการทำงานเบื้องต้นของเซ็นเซอร์), อุณหภูมิส่งผลต่อตัวเราอย่างไร, อุณหภูมิส่งผลกับสิ่งแวดล้อมอย่างไร, ปัญหาโลกร้อนคืออะไร, ความดันอากาศคืออะไร, ระดับน้ำทะเลในแต่ละวันส่งผลต่อความดันอากาศอย่างไร เป็นต้น
  2. T : Technology (เทคโนโลยี) สอนเนื้อหาเชิงทฤษฎีก่อนลงมือทำจริง โดยสอนว่ามีเทคโนโลยีอะไรเข้ามาเกี่ยวข้องบ้าง เช่น ระบบอินเตอร์เน็ตคืออะไร, WiFi คืออะไร, เทคโนโลยี IoT คืออะไร, Smart City คืออะไร, เทคโนโลยีการตรวจวัดอากาศ เป็นต้น
  3. E : Engineering (วิศวกรรมศาสตร์) สอนเนื้อหาเชิงวิศวะกรรม เช่น วิศวกรรมคืออะไร ขั้นตอนการพัฒนาอุปกรณ์ IoT / อุปกรณ์อิเล็กทรอนิกส์ เป็นต้น
  4. M : Mathematics (คณิตศาสตร์) สอนการนำค่าที่ได้จากการตรวจวัดมาแปลงหน่วย หรือหน่วยของค่าทางวิทยาศาสตร์ เช่น การแปลงค่าอุณหภูมิในรูปองศาเซลเซียสเป็นองศาฟาเรนไฮต์, การเปลี่ยนค่าความกดอากาศเป็นระดับความสูงเหนือระดับน้ำทะเลโดยเทียบบัญญัติไตรยางค์, การแปลผลค่าฝุ่น PM2.5 เป็นดัชนีคุณภาพอากาศ (Air Quality Index : AQI) เป็นต้น

โดยผู้สอนคัดเฉพาะหัวข้อที่น่าสนใจ และเหมาะสมกับระดับผู้เรียนมาใช้จัดการเรียนรู้ สิ่งสำคัญคือเชื่อมโยงเนื้อหาให้เข้ากับชีวิตประจำวันผู้เรียน ให้ผู้เรียนเข้าใจความสำคัญของเนื้อหานั้น ๆ โดยคาดหวังว่าผู้เรียนจะนำเนื้อหาที่ได้เรียนรู้ไปใช้งานในอนาคต

2) จัดการเรียนรู้แบบ Project Based Learning (PBL)

โดยจัดเตรียมอุปกรณ์จริง ประกอบด้วย

  1. บอร์ดสมองกล (บอร์ดไมโครคอนโทรลเลอร์) โดยอาจใช้บอร์ด KidBright ที่ สวทช. แจกให้กับโรงเรียนทั่วประเทศ หรือหากมีบอร์ด IPST-WiFi / OpenKB ก็สามารถใช้ได้
  2. เซ็นเซอร์ต่าง ๆ โดยแนะนำให้มีเซ็นเซอร์วัดฝุ่น PM2.5 / PM10 เป็นอย่างน้อย เนื่องจากนำไปคำนวณเป็นดัชนีคุณภาพอากาศ (Air Quality Index : AQI) ได้ หากไม่สามารถจัดหาได้ สามารถใช้เซ็นเซอร์วัดอุณหภูมิ และเซ็นเซอร์แสงที่มีอยู่แล้วบนบอร์ด KidBright ส่งค่าขึ้นบนระบบแอร์ริ เพื่อให้ได้แนวคิดเบื้องต้นได้
  3. สายเชื่อมต่อ ประกอบด้วยสาย USB สำหรับอัพโหลดโปรแกรม สายจั้มเซ็นเซอร์ต่าง ๆ

ผู้สอนยังต้องจัดเตรียมคอมพิวเตอร์ และติดตั้งโปรแกรม microBlock IDE รวมทั้งจัดเตรียม WiFi (หรือให้ผู้เรียนเปิด WiFi Hotspot ที่โทรศัพท์มือถือของตนเอง) โดยแนะนำให้จัดการเรียนเป็นกลุ่ม แบ่งหน้าที่เป็น ฝ่ายต่อวงจร และฝ่ายเขียนโปรแกรม เพื่อจำลองสภาพการทำงานจริง ที่โดยปกติการพัฒนาสินค้าอิเล็กทรอนิกส์จะแบ่งเป็นฝ่ายพัฒนาฮาร์ดแวร์ และฝ่ายพัฒนาซอฟแวร์

3) การต่อยอด

หลังจากเครื่องวัดคุณภาพอากาศใช้งานได้แล้ว ผู้สอนสามารถนำโครงงานไปต่อยอดโดยให้ผู้เรียนสร้างสรรค์เคส หรือกล่องใส่เครื่อง เพื่อให้เครื่อน่าใช้งาน และสามารถนำไปติดตั้งใช้งานจริงได้ สำหรับโรงเรียนที่มี FAB LAB ผู้สอนอาจให้ผู้เรียนออกแบบเคสโดยใช้ 3D Printer และเครื่องตัดเลเซอร์ได้ โดยสอนใช้โปรแกรม 3D เช่น TinkerCad ออกแบบเคส แล้วปริ้นออกมาได้ หรือสอนใช้ซอฟแวร์ออกแบบชิ้นงานเพื่อตัดเลเซอร์ ทำเคสอย่างง่ายได้

4) รายวิชา

รูปแบบการจัดการเรียนการสอนที่นำเสนอ ส่วนใหญ่ตรงกับวิชา วิทยาการคำนวณ โดยสามารถนำไปใช้สอนได้ทั้งมัธยมต้นและมัธยมปลาย

ข้อมูลคุณภาพอากาศในระบบแอร์ริ เปิดเป็นสาธาณะ

ข้อมูลที่ส่งขึ้นบนระบบแอร์ริจากฝ่ายผู้สอนและฝ่ายผู้เรียน จะถูกนำไปแจกจ่ายให้กับฝ่ายสังคม ดังนี้

1) เปิดให้สาธาณะดูข้อมูลที่ส่งขึ้นบนแผนที่โลก

ประชาชนทั่วไปสามารถเข้าดูค่าคุณภาพอากาศและสภาพอากาศที่ส่งขึ้นระบบแอร์ริบนแผนที่โลกได้ที่หน้า ข้อมูลคุณภาพอากาศและสภาพอากาศประเทศไทย

2) สรุปข้อมูลขึ้นบน GitHub

ข้อมูลที่ส่งขึ้นระบบแอร์ริในแต่ละวัน ถูกนำไปอัพโหลดขึ้นบน GitHub ในรูปแบบไฟล์ CSV เปิดโอกาศให้นักวิจัย ผู้สนใจข้อมูล นำข้อมูลไปวิเคราห์ต่อได้ โดยข้อมูลถูกอัพโหลดไว้ที่ Airri-daily-data

หลักการทำงานระบบแอร์ริ

ระบบแอร์ริ (Airri) ประกอบด้วย 3 ฝั่ง คือ 1) ฝั่งอุปกรณ์เซ็นเซอร์/สมองกล 2) ฝั่งเซิร์ฟเวอร์ และ 3) ฝั่งผู้ใช้ โดยข้อมูลจะเริ่มต้นจากฝั่งอุปกรณ์ วิ่งผ่านอินเตอร์เน็ตด้วยโปรโตคอลต่าง ๆ จนไปถึงผู้ใช้งานที่กดเข้ามาดูข้อมูลในเว็บ

รูปที่ 1 ภาพรวมโครงสร้างระบบแอร์ริ

1) ฝั่งอุปกรณ์เซ็นเซอร์/สมองกล

บอร์ด KidBright เชื่อมต่อกับเซ็นเซอร์ต่าง ๆ เพื่อวัดค่าสภาพแวดล้อมผ่าน I2C และ UART ตัวอย่างรูปไดอะแกรมด้านล่างใช้เซ็นเซอร์วัดฝุ่น PMS7003 เชื่อมต่อผ่าน UART, เซ็นเซอร์วัดอุณหภูมิและความชื้น ความดันอากาศ แสง เชื่อมต่อผ่าน I2C, ใช้แหล่งจ่ายไฟจาก USB, เชื่อมต่ออินเตอร์เน็ตผ่าน WiFi

รูปที่ 2 โครงสร้างระบบแอร์ริ (Airri) ส่วนฮาร์ดแวร์

2) ฝั่งเซิร์ฟเวอร์

ฝั่งเซิร์ฟเวอร์แบ่งเป็น 2 ส่วน คือ

  1. ฝั่ง Front-End หรือหน้าเว็บ microblock.app/airri เป็นหน้าแผนที่โลกที่ให้ผู้ใช้เข้ามาดูข้อมูลที่อุปกรณ์ส่งเข้าระบบ โดยดึงข้อมูลมาจากฝั่ง Back-end ผ่าน HTTP RESTful API ภายในใช้ next.js ในการพัฒนา เปิด Source code ไว้ที่ micro-web
  2. ฝั่ง Back-end หรือหน้าเว็บ airri.microblock.app ใช้จัดการอุปกรณ์ในระบบแอร์ริ และมี HTTP RESTful API ให้อุปกรณ์ยิงข้อมูลข้อมูลเข้ามา รวมทั้งให้ฝั่ง Front-End เข้ามาดึงข้อมูล ภายในใช้ next.js ในการพัฒนา ใช้ฐานข้อมูล PostgreSQL และ InfluxDB ในการเก็บข้อมูล
รูปที่ 3 โครงสร้างระบบแอร์ริ (Airri) ส่วนเซิร์ฟเวอร์

3) ฝั่งผู้ใช้

ผู้ใช้เข้าเว็บไซต์ https://microblock.app/airri เพื่อดูข้อมูล

รูปที่ 4 โครงสร้างระบบแอร์ริ (Airri) ส่วนผู้ใช้

บทความสอนใช้งาน

อ่านได้ที่ ทำเครื่องวัดคุณภาพอากาศ IoT ส่งค่าขึ้นเว็บ คนดูได้ทั่วโลกผ่านระบบ แอร์ริ (Airri)

สื่อสารระหว่างบอร์ด KidBright ด้วย ESP-NOW เขียนโปรแกรมด้วย microBlock IDE

microBlock IDE เวอร์ชั่น 2.1.0 ได้เพิ่มเฟิร์มแวร์ MicroPython for KidBright32 V1.4.0 เข้ามา ซึ่งเฟิร์มแวร์เวอร์ชั่นนี้รองรับการเขียนโปรแกรมสื่อสารผ่าน ESP-NOW แล้ว ช่วยให้บอร์ด KidBright32 สามารถสื่อสารกันโดยไม่ต้องเชื่อมต่อก่อน

ติดตั้งส่วนเสริม ESP-NOW

เปิดโปรแกรม microBlock IDE ขึ้นมา กดที่เมนู Extension

จากนั้นค้นหา ESP-NOW แล้วกดปุ่ม Install

รอจนกว่าติดตั้งเสร็จ เมื่อติดตั้งเสร็จจะแสดงเครื่องหมายถูกต่อท้ายชื่อส่วนเสริม (ดังรูป)

ปิดหน้าต่าง Extension ไป ที่เมนูเลือกบล็อก จะมี ESP-NOW เพิ่มขึ้นมาแล้ว

รูปแบบการรับ-ส่งข้อมูล

การรับ-ส่งข้อมูลมี 2 รูปแบบ

  1. แบบ 1 ต่อ 1 (Unicast) คือ การส่งข้อมูลไปที่ตัวรับแบบเจาะจงผู้รับ ผ่านการกำหนด MAC Address โดยบอร์ด KidBright32 บอร์ดอื่น ๆ ที่มีหมายเลข MAC Address ไม่ตรงกับที่กำหนด จะไม่ได้รับข้อมูล เหมาะสำหรับบอร์ด KidBright32 ที่ใช้เป็นตัวรับมีหน้าที่ต่างกัน
  2. แบบ 1 ต่อทั้งหมด (Broadcast) คือ การส่งข้อมูลไปให้ทุกผู้รับที่อยู่ในระยะสัญญาณ บอร์ด KidBright32 ที่คอยรับข้อมูลทุกบอร์ดจะได้รับข้อมูลแบบเดียวกัน

ทดลองเขียนโปรแกรมออดไร้สาย

ตัวอย่างนี้ใช้บอร์ด KidBright32 จำนวน 3 ตัว แต่ละตัวแบ่งหน้าที่กันดังนี้

  1. ตัวแม่ – เป็นตัวส่งข้อมูลและใช้กดส่งสัญญาณกริ่ง
  2. ตัวลูก 1 – เป็นตัวรับสัญญาณจากตัวแม่ และส่งสัญญาณเสียงผ่านบัสเซอร์
  3. ตัวลูก 2 – เป็นตัวรับสัญญาณจากตัวแม่ และส่งสัญญาณเสียงผ่านบัสเซอร์

ส่งข้อมูลแบบ Broadcast

สมมติติดตั้งอุปกรณ์ภายในบ้าน

  • ตัวแม่ ถูกติดตั้งอยู่หน้าประตูบ้าน
  • ตัวลูก 1 ติดตั้งอยู่ในห้องครัว
  • ตัวลูก 2 ติดตั้งในห้องนั่งเล่น

ลักษณะการใช้งานคือ เมื่อมีคนมาเรียกหน้าบ้าน ให้กดปุ่มบนตัวแม่ ที่ติดอยู่หน้าประตูบ้าน จากนั้น ตัวลูก 1 และ ตัวลูก 2 จะส่งเสียงออกมา ทำให้คนที่อยู่ในบ้านออกมาดูได้

ตัวแม่ เมื่อกดสวิตช์จะส่งเลข 1 แบบ Broadcast ผ่าน ESP-NOW ไปที่บอร์ด KidBright32 ตัวอื่น ๆ เมื่อฝั่งรับ (ตัวลูก 1 และตัวลูก 2) ได้รับข้อมูล ก็จะส่งเสียงออกมา

ที่ตัวแม่ เขียนโปรแกรมได้ดังนี้

ฝั่งตัวลูก 1 และลูก 2 เพียงตรวจสอบว่ามีข้อมูลเข้ามาหรือไม่ เมื่อมีข้อมูลเข้ามา ก็ให้ส่งเสียงออกมา เขียนโปรแกรมได้ดังนี้

ผลที่ได้ เมื่อกดปุ่ม S1 ที่ตัวแม่ ที่ตัวลูก 1 และตัวลูก 2 จะมีเสียงดังออกมา

ส่งข้อมูลแบบ Unicast

สมมติ ติดตั้งอุปกรณ์ภายในสนามบิน

  • ตัวแม่ ติดตั้งอยู่ในหอบังคับการบิน ซึ่งจะมองเห็นรันเวย์ เรียกหน่วยดับเพลิง และหน่วยฉุกเฉินอื่น ๆ ได้ กรณีเกิดอุบัติเหตุใด ๆ ก็ตามขึ้น
  • ตัวลูก 1 ติดตั้งอยู่ที่ทำการหน่วยดับเพลิง
  • ตัวลูก 2 ติดตั้งอยู่ที่ทำการหน่วยปฐมพยาบาลฉุกเฉิน

ลักษณะการใช้งานคือ เมื่อหอบังคับการบินมองเห็นอุบัติเหตุ หอจะเลือกกดปุ่มใดปุ่มหนึ่ง ดังนี้

  • ปุ่ม S1 เรียกหน่วยดับเพลิง
  • ปุ่ม S2 เรียกหน่วยปฐมพยาบาล

โดยหลังจากกดปุ่มแล้ว หน่วยนั้น ๆ จะได้ยินเสียงออด เพื่อเป็นสัญญาณว่ามีอุบัติเหตุเกิดขึ้นแล้ว

จากหลักการดังกล่าว ที่ฝั่งตัวลูก 1 และตัวลูก 2 สามารถเขียนโปรแกรมได้ดังนี้

จากโปรแกรมด้านบน หลักการทำงานคือ การทำงานครั้งแรก ให้แสดง MAC Address ของตัวเองบน Terminal จากนั้นวนรอบตรวจสอบว่าได้รับข้อมูลผ่าน ESP-NOW หรือไม่ ถ้าใช่ ให้ส่งเสียงออกมาผ่านบัสเซอร์

หลังจากอัพโหลดโปรแกรมแล้ว ให้เปิด Terminal ขึ้นมา แล้วสังเกตหมายเลข MAC Address ให้เก็บ MAC Address ของตัวลูก 1 และตัวลูก 2 ไว้ (จำเป็นต้องใช้ในการเขียนโปรแกรมฝั่งตัวแม่) ตัวอย่างได้หมายเลข B4:E6:2D:AA:70:89 และ 8C:AA:B5:96:66:D8 ตามลำดับ

ฝั่งตัวแม่ ซึ่งติดตั้งอยู่ในหอบังคับการบิน เขียนโปรแกรมแบบเดียวกับตัวแม่ที่ส่งแบบ Broadcast แต่เปลี่ยนบล็อกจาก ESP-NOW send … เป็น ESP-NOW send … to … ซึ่งบล็อกใหม่นี้จะกำหนดผู้รับได้โดยกำหนด MAC Address และเพิ่ม on press , on release มาเป็น 2 ชุด

จากโค้ดโปรแกรมด้านบน แก้ไขบล็อก ESP-NOW send … to … ให้เป็น MAC Address ของตัวลูก 1 และตัวลูก 2 แล้วอัพโหลดโปรแกรมลงบอร์ดได้เลย

ผลที่ได้ เป็นไปตามวีดีโอนี้


บทความนี้จัดทำโดย สนธยา นงนุช ผู้เขียนบทความด้านสมองกลฝังตัวกว่า 100 บทความบนเว็บไซต์ ร้านไอโอเอ็กซ์ฮ๊อบ อนุญาตให้คัดลอก ทำซ้ำ ดัดแปลง เผยแพร่ ส่วนหนึ่งส่วนใดหรือทั้งหมดของบทความนี้ได้ โดยต้องระบุแหล่งที่มา (สัญญาอนุญาต CC-BY-4.0)