Xiao-M1 is a thoughtfully designed Arduino project aimed at facilitating communication with deaf individuals. The working principle is converts voice to text or allows you to draw a picture to describe something, providing a helpful tool for more accessible and convenient communication with the deaf community.
Cryptocurrency Alert Project เป็นแนวทางใหม่ในการแก้ปัญหาการนั่งนาน กระตุ้นให้ผู้ใช้ Bitcoin ออกกำลังกาย ลุกขึ้นยืน มีการเดินเพื่อคลายก้ามเนื้อ มีการเปลี่ยนพฤติกรรมการใช้ชีวิต ผ่านระบบแจ้งเตือนด้วยราคาของเหรียญสกุลเงินดิจิทัล
สำหรับการทำงานหลักๆเราจะมีตัว ESP32-S3 ที่ใช้ในโปรเจ็คนี้ 2 บอร์ด โดยมีรายละเอียดดังนี้
สำหรับบอร์ดที่หนึ่ง (ESP32-S3 #1)
${prefix/price}
โดยมีเนื้อหาคือ ${coin},${value}
และจะส่งเข้าไปที่ MQTT Broker ${prefix}/ring
เพื่อให้ตัว ESP32-S3 #2 ทำการเล่นเสียงแจ้งเตือน จะเเบ่งเป็นสองเสียง เสียงที่หนึ่งเหมือนเหรียญขึ้น ${prefix}/ring
เพื่อให้ตัว ESP32-S3 #2 ทำการเล่นเสียงแจ้งเตือน ให้คนได้มีการลุกขึ้นมาจากที่นั่งเพื่อไปกดปุ่มเพื่อหยุดการแจ้งเตือนของบอร์ดที่สอง โดยจะมีการตรวจจับการเคลื่องไหวด้วย pir sensor เพื่อตรวจสอบว่าผู้ใช้นั้งอยู่หน้าคอมอยู่หรือไม่ถ้าไม่ระบบจะทำการรีเซตเวลาเเจ้งเตือนทำให้ไม่เเจ้งเตือนเวลาผู้ใช้ทำธุระอย่างอื่นอยู่
สำหรับบอร์ดที่สอง (ESP32-S3 #2)
Dashboard
กราฟแสดงเวลาที่ใช้ในการเดินมากดปุ่มจากการแจ้งเตือนของบอร์ดที่ 2
โดยการทำงานของ Dashboard (NextJS) จะรับค่าจาก API ที่มาจากทาง Node-RED โดย Node-RED จะรับค่าจาก MQTT ที่ topic ${prefix}/Time2press
โดยมีเนื้อหาคือ [time_n1, time_n2, ...]
./src/module
อัปโหลดเข้าไปในบอร์ด ESP32-S3 ทั้งสองบอร์ด./src/Node-RED.json
ไป Import ใน Node-RED./src/apps/dashboard
ไปใช้งานโดยการรันคำสั่ง cd ./src/apps/dashboard && npm install
จากนั้นก็อปปี้ .env.example
ไปเป็น .env
และตั้งค่า NEXT_PUBLIC_API_URL
ให้เป็น URL ของ Node-RED ที่ใช้งาน ยกตัวอย่างเช่น https://iot.cpe.ku.ac.th/red/b6610502129/test/hello.txt
เมื่อเสร็จสิ้นให้รันคำสั่ง npm run start
./src/module/config.py
ก่อนซึ่งก็จะมีค่าของ MQTT, TOPIC_PREFIX, COINMARKETCAP_API_KEY จากนั้นเราจะแบ่งเป็นรันคำสั่งของสองบอร์ดซึ่งก็คือ ./src/esp32-s3-01.py
และ ./src/esp32-s3-02.py
Youtube: Youtube Demo
Dashboard: Dashboard
MMLParser: MMLParser
Github: Source
โปรเจคนี้เริ่มต้นมาจากการมองเห็นถึงปัญหา Office Syndrome เราจึงมีแนวคิดว่าอยากสร้าง Product ที่ให้ User ได้ลุกออกจากเก้าอี้และนั่งอย่างถูกสุขลักษณะ และทำให้สนุกไปกับ Product ของเราโดยทีมของเราจึงได้เลือกที่จะทำเกม Blackjack ที่จะเก็บ Coin สำหรับการเล่นผ่านการนั่ง โดยCoin จะเพิ่มหรือลดจะขึ้นอยู่กับรูปเเบบการนั่ง เเละนำ Coin ที่ได้ลุกจากเก้าอี้ทำงานของตัวเองมาลงเล่น Blackjack กับเจ้ามือในโซนที่กำหนดไว้
เเนวคิดนี้เกิดจากการนำเอาปัญหาเรื่อง Office Syndrome กับเกม Blackjack มารวมกัน โดยโปรเจคนี้จะใช้ micro controller ESP32S3 ในบอกรูปแบบการนั่ง เเละ เวลาในการนั่งทำงาน เเละค่าอื่นๆ เเละยังใช้ในการเล่น Blackjack อีกด้วย โดยจะใช้บอร์ด 3 บอร์ดในการเล่น
บอก User ID, Posture, Countdown Time, Break Time, Coin โดย ค่า Time, Coin เเละ Posture จะบอกทุกๆ 1 นาที
Node red Countdown :
บอก Player card, User ID, Coin, Round(จำนวนตาที่เล่น) (Dealer Card สามารถดูได้ผ่าน Node red) (เครื่องเล่นจะตั้งอยู่ในโซนที่กำหนด)
Node red Blackjack :
ทำหน้าที่ในการวัด Posture การนั่งของ User เเละ คำนวณ Coin จาก Posture การนั่ง เเละเป็นตัวทำหน้าที่รับส่ง Coin ไปยังบอร์ดต่างๆอีกด้วย โดยการเพิ่มลดของ Coin เเบ่งออกเป็น 4 เเบบ
นั่งหลังตรง + 0.01 Coin/seconds
นั่งหลังงอ + 0.005 Coin/seconds
นั่งพิง หรือ เอนไปข้างหลัง +0.01 Coin/seconds
นั่งเกินเวลา - 0.5 Coin/minutes
ส่งข้อมูลระหว่างบอร์ดผ่าน Node red
System :
Node red Dash Board:
เนื่องจากการตากผ้าต้องมีคนคอยเก็บอยู่เสมอ หากตากทิ้งไว้แล้วไม่มีใครอยู่ดูแล หากฝนตกขึ้นมาก็ต้องนำไปซักใหม่ก็เสียทั้งค่าน้ำค่าไฟและเสียแรง แต่ถ้าหากคุณไม่สามารถคอยอยู่บ้านทั้งวัน แต่ก็อยากเอาผ้ามาตากให้แห้ง เราจึงคิดค้นราวตากผ้าที่ไม่จำเป็นต้องมีคนมาดูแล
- LDR
- PVC pipe
- Micro Switch
- 3V 2 Relay Module
- DC 6V 1:220 Gear Motor
- Raindrops Sensor Module
- DHT11 Digital Temperature and Humidity Sensor
-ESP32 ด้านนอกที่มี Raindrops sensor, LDR, DHT11 จะทำหน้าที่เพียงอ่านค่า analog read จากเซนเซอร์ และ Publish ไปยัง MQTT ให้ NODE-RED Subscribe อีกที
-ESP32 ที่ราวตาก เมื่อเริ่มต้นทำงานจะทำการเก็บผ้า เซต status เป็น 0 (ก็คือ collected) และ publish ค่า automation และ status ไปยัง MQTT ให้ NODE-RED ก่อน จากนั้นก็ให้ผู้ใช้ เลือกเปิดหรือปิดระบบอัติโนมัติ โดยเริ่มต้นจะเป็น off อยู่ ถ้าระบบอัติโนมัติเปิดอยู่ NODE-RED จะทำการ Publish คำสั่งที่คำนวณและเช็คเงื่อนไขเรียบร้อย เป็นระยะๆ แล้ว ESP32 ที่ราวจะรับคำสั่งมาเช็คเงื่อนไขอีกที ส่วนถ้าระบบอัตโนมัติปิดอยู่เราจะสามารถกดปุิมที่ NODE-RED Dashboard ได้เพื่อ Publish คำสั่ง แล้ว ESP32 ที่ราวก็จะรับคำสั่งมาเช็คเงื่อนไขอีกที โดยเงื่อนไขที่ว่าคือ status กับคำสั่งต้องไม่ซ้ำกัน เช่นหากคำสั่งเป็น Collect. Status ณ ขณะนั้นต้องเป็น Hanging เพื่อป้องกันไม่ให้มอเตอร์หมุนจนเส้นเอ็นขาด
-ในส่วนของ NODE-RED Flow จะทำการรับค่าต่างๆ ที่วัดจาก sensors ของ ESP32 ด้านนอก ผ่าน MQTT เพื่อนำมาปรับค่าให้เข้าใจง่ายและแสดงผลเป็น Guage และ Text ใน Dashboard จากนั้นนำไปเช็คเงื่อนไข โดยเมื่อ Raindrops Level >= 40 หรือ Light Level <= 40 NODE-RED จะทำการสร้างตัวแปร Flow.command ขึ้นมาและเก็บค่า 0 ซึ่งหมายถึงเก็บผ้า ส่วนถ้า Raindrops Level < 40 และ Light Level > 40 Flow.command จะเป็น 1 แทน โดยถ้าเปิดระบบอัตโนมัติไว้อยู่ NODE-RED จะ Publish ค่านี้ในหัวข้อ command เป็นระยะ แต่ถ้าระบบอัติโนมัติปิดอยู่ NOED-RED ยังคงเช็คเงื่อนไขและสร้าง Flow.command อยู่เรื่อยๆ เพียงแต่จะไม่ Publish ออกไป
-ในส่วนของ NODE-RED Dashboard จะมี 2 แท็บ แท็บแรก Status ทำหน้าที่แสดงผลค่าจาก Sensor ต่างๆ เช่น Raindrops Level จาก Raindrops sensor, Light Level จาก LDR, Temperature & Humidity จาก DHT11 และสถานะของราวตากว่ากำลังตากอยู่หรือเก็บแล้ว ส่วนแท็บ Control เราสามารถเปิดปิดระบบอัติโนมัติได้ โดยถ้าเปิดอยู่เราจะไม่สามารถควบคุมเองได้ ราวจะทำตามคำสั่งจาก Flow.command เท่านั้น แต่ถ้าระบบอัติโนมัติปิดอยู่เราจะสามารถควบคุมเองได้ แต่ราวก็จะเพิกเฉยต่อ Flow.command ทั้งนี้เพื่อป้องกันไม่ให้ Flow.command กับคำสั่งจากปุ่มตีกัน
Nowadays we are entering an aging society. Many elderly people who are having health issues stay at home independently, often without the supervision of their families or caregivers. They usually face some unwanted situations such as forgetting to take a medicine or neglecting to record their blood pressure result for the doctor visits. Thus, we, ไม่ได้เป็นหมอแต่เป็นห่วง (not a doctor by name, but a healer by heart), have integrated these problems into our hardware development project called miniNURSE.
miniNURSE is a multi-purpose scheduler device. Currently, there are 3 functions:
1) Medicine reminder: enables users to schedule a time for medicine intake via Node-RED dashboard from anywhere. When it's time, the buzzer will buzz the loop of frequencies as music. It will not stop unless the medicine is taken out (detected with LDR sensor inside the opaque medicine box) PS: We will assume that if the medicine is taken out, it will be later consumed.
2) Miscellaneous reminder: similar to medicine reminder, but the buzzer will not loop
3) Blood pressure monitor: when the user finishes checking their blood pressure, the equipped camera nearby will capture the screen's result and send it to Line via Line notify.
Although this project originated from the needs of older people, anyone can use miniNURSE. For example:
Schedule the time to take a break from work to prevent overloading or office syndrome
Schedule the time to go for a walk with your lovely pets
Schedule any random time to enjoy the music from the buzzer
etc.
Our goal is to universally enhance everyone's quality of life.
ESP32-S3-DEVKITC-1 (2x)
MH-FMD Passive Buzzer (1x)
OLED (1x)
LDR sensor (1x)
Arduino.h
Arduino's core header fileAdafruit_GFX.h
provides graphics functionsAdafruit_SSD1306.h
controls SSD1306 OLEDWire.h
allows ESP32S3 to communicate with other devices via I2CWiFi.h
connects the ESP32S3 with WiFiWiFiUdp.h
provides UDP Interface for WiFi.h
NTPClient.h
retrives the time from an NTP serverPubSubClient.h
establishes connection with mqttArduinoJson.h
parses and generates JSON dataTridentTD_LineNotify
sends picture via Line Notifyesp_camera
drives the esp32 cameraHCSR04
supports HC-SR04 Ultrasonic distance sensortime
includes time related fuctionsThe users themselves or their caregivers input their data and desired time (24-hour format) to the Node-RED form (one schedule at a time). The data is store on the server directory ./data/ in a text file and can be access by http request. Then it will be displayed on the UI table unless the clear table
button is clicked. Every time there is a new input, the file is overwritten.
We use timestamp to read the file and send JSON data to the ESP32 via MQTT. Currently, the timestamp is triggered every 1 minute to ensure that the program will be scheduled only one time in one minute. The JSON data is then parsed and displayed on OLED screen.
For the medicine scheduler, When it's time, the buzzer will continuously play the music while the LDR sensor detects the light level inside the medicine box. Unless the light level is more than 60%, the buzzer will not stop playing. Meanwhile, the misc scheduler does not require any action to stop the music.
The ultrasonic sensor is placed around 25cm away from the wall. If the user places the arm next to the blood pressure device, the sensor will detect changes in distance and start the 1 minute countdown (the average time of ) before the ESP32-camera captures the result. The MQTT is then sent from the ultrasonic board to the camera board. Finally, the picture will be notified on line.
Line Notify bot can be invited to any chat or group. Therefore, more than one Line account can view it.
OR - Misc scheduler (SecondBox): Activity, Hour and Minute
6610501963 KRITTIWIT KAMPRADAM
6610502153 PACHARAMON PUTRASRENI
6610505527 PENPITCHA JUMRUSPUN
6610505586 SUPATHICHARAT CHALERMKWANMONGKOL
This project is under the 01204114 Introduction to Hardware Development Course, 2/2023.
Department of Computer Engineering, Faculty of Engineering, Kasetsart University
โครงงานนี้เริ่มต้นมาจากปัญหาของเด็กหอที่อยู่หอกับเพื่อนๆแล้วต้องคอยลุกไปเปิดประตูให้เพื่อนเพราะล็อคห้องไว้(ไม่ล็อคก็กลัวอันตราย) ทางกลุ่มเราจึงคิดค้นระบบล็อคประตูที่มีความปลอดภัย ประกอบด้วย3ฟังก์ชัน คือ 1.ใส่รหัส 2.แตะคีย์การ์ด 3.กดปลดล็อคผ่านสมาร์ทโฟน หากเราจะปลดล็อคประตูผ่านสมาร์ทโฟน แล้วกลัวว่าคนที่เคาะประตูนั้นไม่ใช่เพื่อนของเรา เรามีระบบกล้องจับภาพคนเคาะประตูที่สามารถดูได้ผ่านสมาร์ทโฟนแบบRealtime
Python
- face_recognition
- requests
- time
- machine
- hashlib
- ssd1306
- network
- servo
- umqtt.simple
C
- esp_camera
- camera_pins
- WiFi
- PubSubClient
- Wire
- PN532_I2C
- PN532
- NfcAdapter
Flow
Dashboard
เนื่องจากในยุคสมัยปัจจุบันผู้คนหลายช่วงอายุพบเจอกับปัญหาทางสุขภาพมากมาย หนึ่งในอาการที่หลายคนพบเจอคืออาการออฟฟิศซินโดรม ซึ่งเกิดได้จากหลายปัจจัย เช่น การนั่งเรียนหรือทำงานเป็นเวลานาน การอยู่ในท่าทางการทำงานที่ไม่เหมาะสมต่อเนื่อง ซึ่งอาจทำให้เกิดปัญหาสุขภาพเรื้อรังได้ และอีกปัญหาสำคัญที่เกิดขึ้นได้กับทุกเพศทุกวัยคือความเครียด
ดังนั้นทุกคนต่างหาสิ่งที่สามารถคลายความเครียดจากการทำงาน, การเรียน, หรือสถานการณ์อื่นๆ เราจึงเห็นถึงความสำคัญในการสร้างอุปกรณ์ที่สามารถลดอาการปวดจากออฟฟิศซินโดรมและช่วยคลายความเครียดไปพร้อม ๆ กันได้
การสร้างเกมที่มีผู้เล่น 2 คน ผ่านอุปกรณ์ PCB_ESP32S3 โดยมีเป้าหมายในการป้องกันออฟฟิศซินโดรมและลดความเครียดของผู้ใช้งาน มีต้นแบบเกมจาก dino chrome ซึ่งเป็นเกมที่มีชื่อเสียง ทำให้ผู้เล่นสามารถเข้าใจกฎกติกาได้อย่างง่ายดาย
*
1, switch*
2*
1, ldr*
1, Buzzer*
1จากการสังเกตและได้ยินเสียงเพื่อน หรือแม้แต่ตัวเราเองที่บ่นว่าปวดหลัง ปวดคอ ปวดตา และด้วยสาขาวิชาที่เราไม่อาจหลีกเลี่ยงการทำงานหน้าจอคอมพิวเตอร์ได้ ทำให้คิดค้นโปรเจคนี้ขึ้นมา เพื่อหลีกเลี่ยงอาการ office syndrome ที่ทำให้เกิดความผิดปกติของระบบในร่างกาย ซึ่งพบเจอกันโดยทั่วไปในสังคม
ตัวส่งข้อมูลจากมือทั้งสองข้าง เป็นถุงมือที่ติดกับ Microcontroller และ Accelerometer มีหน้าที่วัดความเร่งในการต่อย แล้วแปลงจากความเร่งเป็น Damage ที่จะทำต่อ Monster จากนั้น Publish ข้อมูลให้ Broker
ตัวรับข้อมูลและแสดงคอมโบ เป็น Microcontroller ที่ทำหน้าดำเนินการเกม โดยการรับข้อมูล Damage และตั้งค่าต่าง ๆ ของเกมจาก Broker มาลดเลือดของ Monster จากนั้น Publish ต่อเพื่อไปแสดงผลบนหน้าจอ Dashboard และต่อกับจอ OLED 2 ตัวที่จะแสดงข้อมูลต่างกัน โดยจอ OLED ทางซ้ายจะแสดง Damage ที่ต้องใช้มือข้างซ้ายต่อย ส่วนจอ OLED ทางขวาจะแสดง Damage ที่ต้องใช้มือข้างขวาต่อย สุดท้ายแล้วจะทำการ Publish ข้อมูลเกม (เช่น เลือด Monster หลังโดนต่อย, Combo, ระดับของผู้เล่น)
Node-Red & Dashboard ทำหน้าที่แสดง Interface ของเกม โดย Subscribe Damage, เลือด, ระดับของผู้เล่น ฯลฯ) ของ Monster เพื่อนำไปแสดงผล และยังมีการ Publish การตั้งค่าของเกมต่าง ๆ ไปที่ Broker (เช่น เปลี่ยนด่านที่เล่น, ตัวคูณ Damage เพื่อปรับความยากง่าย)
ภาพของ Flow จาก Node Red
ภาพตัวอย่างจาก Dashboard
HP
, VIT
) รวมถึงหลอดแสดงสัดส่วนของเลือดเพื่อความสะดวกในการมองDEF
)%MISS
)%HEAL
)ESP32-S3-DevKitC-1
) 3 ea. (Acceleration (Publish only) 2 ea. + Game Processing (Publish + Subscribe) 1 ea.)GY-291 ADXL345
) 2 ea.SSD1306
) 2 ea.โครงงานของเราจะแบ่งออกเป็น 3 ส่วนใหญ่ คือ
ส่วนที่ 1 การสื่อสารผ่านรหัสมอส
ส่วนที่ 2 ระบบ Quick chat และการประกอบประโยคเอง
ส่วนที่ 3 ระบบเปลี่ยนอริยบทสำหรับผู้ที่มีภาวะ Office syndrome (OFSD)
Github : CVMC
การจ่ายเงินด้วย QR
การจ่ายด้วย Credit card
(เน้นเป็นบทลงโทษที่เน้นให้ผู้ใช้งานต้องกระทำบางอย่างเพื่อให้ระบบทำงานต่อไปได้)
B คือบอร์ดที่จะวางไกลผู้ใช้ “ตัวสร้าง puzzle”
Board A
จะ random เวลามา (45-60 นาที)
หากถึงเวลาที่กำหนดก็จะแจ้งเตือนเสียงผ่าน buzzer เพื่อให้ผู้ใช้รู้ว่าต้องลุกไปแก้ puzzles จากนั่นจะส่ง Payload MQTT สั่งให้ Board B
ทำการสุ่ม passcode และให้ส่งกลับมา จากนั้นสุ่มคะแนนขั้นต่ำที่ผู้เล่นต้องเล่นให้ถึงจะชนะหลังจากผ่านแล้วจะขึ้น passcode ที่จอ Board B OLED
แล้วมาใส่ที่ Board A
เพื่อจบการทำงานสำหรับครั้งนั้น ระบบก็จะจับเวลาใหม่ในรอบถัดไป
สามารถดูค่า Status ต่างๆและการกำหนดค่า การหยุดพัก หรือปิดเสียงได้ผ่านทาง DashBoard
รูปภาพ PCB
รูปภาพ MQTT
Github | WarnGuard
แบ่งเป็น 3 ส่วนคือ
ส่วนที่เป็นปืน โดยมี ESP3-S3 อยู่ในปืนและมี ir tansmitter อยู่ปลายปืนโดยมีหน้าที่ในการปล่อยสัญญาณ ir ออกไปเมื่อกดปุ่มโดยสัญญาณที่ปล่อยออกมานั้นจะเป็นสัญญาณที่ถูกตั้งไว้เพื่อให้ตอบสนองกับเป้าเราได้เท่านั้น มีปุ่มรีโหลดอยู่ด้านบนที่จะถูกกดเมื่อชัก ปุ่ม start อยู่ด้านล่างของปืนและมีจอ oled ที่จะบอกจำนวนกระสุน เวลาขณะที่เหลืออยู่ในขณะนั้น และเวลาที่ countdown อยู่ซึ่งเมื่อปืนได้รับข้อมูลว่าถูกยิงมาแล้วก็จะทำการ publish คะแนนไปที่ broker เพื่อขึ้นบน dashboard
ส่วนที่เป็นเป้ายิง จะมี ir receiver และไฟ LED ติดไว้ที่เป้าโดยเชื่อมกับบอร์ด ESP32-S3 ซึ่งเริ่มมาบอร์ดที่ถูกสุ่มจะเปิด led เขียวขึ้น และ ir receiver ก็จะเริมทำงาน เมื่อได้รับสัญญาณจากปืนก็จะทำให้ไฟ led ดับลง ซึ่งถึงแม้ว่าจะได้รับสัญญาณ ir จากแหล่งอื่นๆเช่น รีโมตคอนโทรลต่างๆ led ก็จะไม่ดับลงเนื่องจากเราได้ตั้งให้ led ตอบสนองต่อสัญญาณ ir ของปืนเท่านั้น จากนั้นก็จะสุ่มเป้าที่เหลือมาหนึ่งเป้าแล้ว publish ข้อมูลว่าถูกยิงและข้อมูลเป้าต่อไปที่ไฟจะติดไปที่ broker และถ้าเป้ายิงไม่ได้รับสัญญาณที่ถูกต้องภายใน 5 วินาที ก็จะสุ่มเป้าที่เหลือมาหนึ่งเป้าแล้ว publish ข้อมูลเป้าต่อไปที่ไฟจะติดไปที่ broker เช่นกัน
ส่วนที่เป็น Dashboard เป็นส่วนที่ทำหน้าที่ใน publish การตั้งค่าต่างๆภายในเกมไปที่ broker เช่น การเปิดเกม ปิดเกม ตั้งค่าเวลา Office syndrome เป็นต้น และยังเป็นส่วนที่แสดงข้อมูลคะแนนที่เล่นอยู่ในขณะนั้นและ high score อีกด้วย
ตัวอย่าง Dashboard
บอร์ดตัวที่ 1 – เครื่องวัดชีพจร : เมื่อนำนิ้วไปวางบน Max30102 ทุกครั้งที่จับการเต้นของหัวใจได้ Buzzer จะดังขึ้น และขึ้นอัตราการเต้นของหัวใจบน I2C_OLED_0.96”
บอร์ดตัวที่ 2 – เครื่องบอกท่าออกกำลังกาย : เมื่อเริ่มการทำงาน จะบอกชื่อท่าผ่านลำโพง และแสดงชื่อท่าบน I2C_OLED_0.96” เมื่อถึงเวลาที่ต้องทำท่าต่อไปจะมีเสียงออกมาบอกท่า เมื่อครบก็จะมีเสียงบอกให้หยุด และบอกท่าถัดไปวนไปเรื่อย ๆ โดย LED จะมีหน้าที่บอกประเภทของท่า โดย LED_RED เป็นท่าส่วนบน LED_YELLOW เป็นท่าส่วนกลาง LED_GREEN เป็นท่าส่วนล่าง
บอร์ดตัวที่ 1 – เครื่องวัดชีพจร :
บอร์ดตัวที่ 2 – เครื่องบอกท่าออกกำลังกาย :
จากปัญหา Office Syndrome ที่สามารถพบได้เป็นประจำจากการนั้งทำงานเป็นเวลานานทำให้ส่งผลกระทบต่อสุขภาพร่างกาย ถึงหลายๆคนจะทราบถึงปัญหาและวิธีแก้ไขถึงอย่างนั้นหลายๆคนยังคงให้ความสนใจกับงานที่ทำจนละเลยการดูแลสุขภาพให้ห่างจากการเกิดปัญหา Office Syndrome พวกเราจึงมีจุดประสงค์ในการออกแบบอุปกรณ์ที่เพิ่มแรงจูงใจให้กับผู้ใช้งานในการลุกมาออกกำลังกายเพื่อสุขภาพที่ดี
จากการที่เราต้องการเพิ่มแรงจูงใจให้กับผู้ใช้งานในการลุกมาออกกำลังกาย พวกเราจึงมุ่งพัฒนาอุปกรณ์ที่มีการแสดงผลการพัฒนาการของผู้ใช้งานและข้อมูลที่สามารถนำไปวิเคราะห์สุขภาพของผู้ใช้งานได้ พวกเราจึงได้ออกแบบอุปกรณ์สำหรับนับรอบการดันพื้นและวัดอัตราการเต้นของหัวใจก่อนและหลังการดันพื้น รวมถึงการแสดงประวัติและการพัฒนาการของผู้ใช้งานให้ได้เห็น
รอรับสถานะว่า บอร์ด2 ทำการวัดอัตราการเต้นของหัวใจหรือยัง
เมื่อตรงตามเงื่อนไขด้านบนทำการจับเวลาสำหรับท่าเตรียมวิดพื้นของผู้ใช้งาน
ทำการนับรอบวิดพื้นของผู้ใช้งาน
รูปแบบที่ 1 : แสดงจำนวนครั้งที่วิดพื้นสะสมทั้งหมดและระดับกล้ามของผู้ใช้งาน
รูปแบบที่ 2 : แสดงระดับของกล้ามทั้งหมดที่ผู้ใช้งานจะเป็นได้และต้องดันพื้นอีกกี่ครั้งเพื่อเพิ่มระดับ
รูปแบบที่ 3 : เตรียมสำหรับการวัดอัตราการเต้นของหัวใจสำหรับผู้ใช้งาน
Electronic Live Encouragement Via AI Text Enhancement
ในยุคปัจจุบันที่เทคโนโลยีและการทำงานออฟฟิศเป็นส่วนหนึ่งของชีวิตประจำวัน ปัญหาสุขภาพที่เรียกว่า Office Syndrome ก็ได้กลายเป็นประเด็นที่ได้รับความสนใจมากขึ้น การนั่งทำงานเป็นเวลานานในสถานที่ทำงานเป็นสาเหตุหนึ่งที่ทำให้ผู้คนมีความเสี่ยงต่อ Office Syndrome ซึ่งอาการเหล่านี้สามารถทำให้เกิดความไม่สบายและมีผลต่อสุขภาพได้ เช่น ปวดหลัง ปวดคอ เป็นต้น และยังส่งผลต่อประสิทธิภาพและความเหนื่อยล้าในการทำงานอีกด้วย
หนึ่งในวิธีป้องกันอาการของ Office Syndrome คือ การลุกจากโต๊ะทำงานเพื่อขยับร่างกายเป็นช่วง ๆ แต่การจับเวลาด้วยตัวเองนั้นเป็นเรื่องที่ไม่สะดวกและมักถูกละเลยในหลายๆ ครั้งเนื่องจากความสนใจที่อยู่กับงาน เราจึงได้คิดค้นโปรเจกต์นี้ขึ้นมาเพื่อเตือนให้ผู้คนลุกขึ้นและขยับร่างกายอย่างสม่ำเสมอ โดยใช้ ESP32-S3 ร่วมกับเซ็นเซอร์ Ultrasonic เพื่อทำการจับเวลาอัตโนมัติเมื่อผู้ใช้เริ่มนั่งที่โต๊ะทำงานโดยไม่ต้องมีการจับเวลาด้วยตัวเอง และแจ้งเตือนผ่านแอปพลิเคชัน Discord เมื่อครบเวลาที่กำหนด
นอกจากการแก้ไขปัญหาออฟฟิศซินโดรมด้วยการเตือนให้ลุกขึ้นเคลื่อนไหวแล้ว การจัดสภาพแวดล้อมในที่ทำงานให้เหมาะสมก็มีบทบาทสำคัญในการเพิ่มประสิทธิภาพและลดความเหนื่อยล้าในการทำงานเช่นกัน ปัจจัยเหล่านี้รวมถึงปริมาณแสงที่เหมาะสม, อุณหภูมิ ความชื้น และปริมาณ CO2 ในอากาศ ซึ่งล้วนมีผลต่อสุขภาพ สมาธิ และประสิทธิภาพในการทำงาน เราจึงต้องการที่จะวัดค่าต่าง ๆ เหล่านี้มาแสดงผลให้กับผู้ใช้ เพื่อให้สามารถปรับปรุงสภาพแวดล้อมได้ตามต้องการ นอกจากนี้ ผู้ใช้ยังสามารถให้ปัญญาประดิษฐ์ (AI) นำข้อมูลมาวิเคราะห์เพื่อประเมินและแนะนำการปรับปรุงสภาพแวดล้อมในที่ทำงานให้เหมาะสมยิ่งขึ้น
โปรเจ็คนี้มีเป้าหมายเพื่อช่วยเพิ่มคุณภาพชีวิตของผู้คนที่ทำงานนานๆ ในสถานที่ทำงาน โดยลดความเสี่ยงของ Office Syndrome อีกทั้งยังเพิ่มประสิทธิภาพและลดความเหนื่อยล้าในการทำงานของผู้ใช้อีกด้วย
ฟังก์ชันหลัก
Gemini API
จากนั้นนำผลการวิเคราห์และข้อแนะนำเกี่ยวกับสภาพแวดล้อมในการทำงานกลับมาแสดงผลให้กับผู้ใช้Gemini API
ฟังก์ชันเสริม
เชื่อมต่อ WiFi และ MQTT broker ใหม่โดยอัติโนมัติเมื่อการเชื่อมต่อขาดหาย
ไฟ LED แสดงสถานะการตรวจจับการนั่งของผู้ใช้
Standby Mode บน Sensors Board
Sensors Board
ต่อ Micro USB เข้ากับ ESP32-S3 เพื่อเริ่มการทำงานโดยอัติโนมัติ
สามารถกดสวิตช์เพื่อสลับระหว่าง Active Mode และ Standby Mode
ไฟ LED แสดงสถานะของบอร์ดดังนี้
LED Color | สถานะ |
---|---|
Green | Active Mode |
Yellow | Standby Mode |
Red | ไม่สามารถเชื่อมต่อ WiFi หรือ MQTT broker ได้ |
Screen Board
ต่อ Micro USB เข้ากับ ESP32-S3 เพื่อเริ่มการทำงาน
หน้าจอจะเข้าสู่หน้าตั้งค่า ให้ผู้ใช้วางบอร์ดไว้ในระยะที่เซนเซอร์สามารถตรวจจับการนั่งของผู้ใช้ได้ โดยหน้าจอจะขึ้นว่า Detected จากนั้นกดสวิตช์เพื่อยืนยัน
เมื่อตั้งค่าแล้วผู้ใช้สามารถกดสวิตช์เพื่อดูข้อมูลสภาพแวดล้อมการทำงานต่าง ๆ และผลวิเคราะห์สภาพแวดล้อมได้
เมื่อครบเวลาที่กำหนดบอร์ดจะแจ้งเตือนโดยการแสดงผลบนหน้าจอว่า "Stand up!" และกระพริบไฟ LED ทั้งสามดวงโดยผู้ใช้สามารถลุกขึ้นและกลับมานั่งได้เลย
ไฟ LED แสดงสถานะของบอร์ดดังนี้
LED Color | สถานะ |
---|---|
Green | ตรวจพบผู้ใช้ |
Yellow | ไม่พบผู้ใช้ |
Red | ไม่สามารถเชื่อมต่อ WiFi หรือ MQTT broker ได้ |
1.Sensors
2.OLED Display I2C IIC 0.96″ SSD1306 128x64px
3.บอร์ด ESP32-S3 2 ตัว
ESP32-S3
ทั้ง 2 ตัวจะรับและส่งข้อมูลกันผ่าน MQTT broker
โดย
DHT11
เซ็นเซอร์วัดอุณหภูมิและความชื้น LTR390
เซ็นเซอร์วัด UV และความสว่างMQ-135
และเซ็นเซอร์วัดปริมาณ CO2 ในอากาศHC-SR04
Ultrasonic sensor เพื่อตรวจจับว่านั่งอยู่ที่โต๊ะทำงานหรือไม่ และส่งข้อมูลที่ได้ในรูปแบบ JSON กลับเข้าไปที่ระบบ
Node-RED
จะทำหน้าที่ในการแสดงผลค่าต่างๆ เชื่อมต่อกับ API จัดการและประมวลผลข้อมูลทั้งหมดที่ได้รับเพื่อลดภาระการทำงานของ ESP32-S3
ซึ่งสามารถแบ่งหน้าที่ได้ดังนี้
รับข้อมูลในรูปแบบ JSON จาก ESP32-S3 ทั้งสองตัว ทำการแยกข้อมูลออกจากกันเพื่อให้ง่ายต่อการนำไปใช้งานใน ESP32-S3 และรวมข้อมูล JSON ให้เป็น Object เดียวเพื่อนำไปใช้ในวิเคราะห์ของ AI
ส่งผลลัพท์การวิเคราห์ที่ได้จาก AI กลับเข้าไปในระบบเพื่อให้แสดงบนจอ OLED ของ ESP32-S3 ตัวที่ 2
ส่งข้อมูลเวลาปัจจุบันให้กับ ESP32-S3
แสดงผลขอมูลจากค่าของเซ็นเซอร์ต่าง ๆ ที่ดึงลงมาจาก sever ลงบน Dashboard และส่งค่าเหล่านี้ไปให้ AI วิเคราะห์ผ่าน Gemini API
และนำกลับมาแสดงผล
เมื่อครบเวลาที่ตั้งไว้ AI จะส่งข้อความแจ้งเตือนผ่าน Discord ให้ผู้ใช้ลุกขึ้นเพื่อขยับร่างกาย ซึ่งผู้ใช้สามารถลุกได้เลยโดย Ultrasonic sensor จะตรวจจับการลุกโดยอัตโนมัติ และเมื่อกลับมานั่งก็จะเริ่มจับเวลาใหม่อีกครั้ง หากต้องการตั้งค่าระยะในการนั่งใหม่อีกครั้ง สามารถกดปุ่ม reset ที่บอร์ดได้
Github : RJTPP/ELEVATE-AI
In our daily lives, we're surrounded by various sounds—from conversations to car noises, and music is among them. For musicians, sound clarity is crucial; clear separation reduces distortion and enhances performance. Without it, music rehearsals lack effectiveness. Hence, this project aims to aid in sound separation, facilitating smoother, more efficient music practice. Additionally, it merges knowledge from two subjects: hardware and music.
For a simple explanation, we will divide this into 3 parts – hardware, software and firmware.
There are 2 breadboards which one is used as an input board and another, an output board.
ESP32-S3 (1)
– used for running the firmwares.INMP441
– used for sound-waves input for MODE 1.ESP32-S3 (2)
– used for running the firmwares.Buzzer
– used for any sound display to the user.LED
– used for checking whether the buzzer is working or not, however, it is not required.OLED
– used for various displays inside the modes to the screen.For the software, we use the IoT system to communicate and receive or publish data values which the protocol used is the Message Queuing Telemetry Transport or MQTT by connecting the MQTT broker to iot.cpe.ku.ac.th and adjust the data route in the Node-RED of the KU server.
Node-RED has a major duty to control values received and published from and to the MQTT broker. The user interface will be the Node-RED Dashboard which the user can input values and view the outputs there. Here is an example our flow and dashboard inside MODE 1:
For the firmware, we will describe the main functions of each files and libraries, including the Arduino in ESP32-S3 (1)
and Micropython in ESP32-S3 (2)
.
In this project, we have divided the system into 4 modes. Before utilising each mode, please ensure that you have selected the mode from the Node-RED Dashboard, otherwise, it will not work.
This mode helps you to detect the input sound to the specified notes. Each note will have their own standard frequency.
This mode simulates the specific sound of the note from user’s input.
This mode displays the BPM. The abbreviation “BPM” stands for “Beats per minute” which means the amount of sound or beats you will hear in 1 minute. For example, 80 BPM means in 1 minute, you will hear 80 beats or you will hear a beat in about 0.75 seconds.
In this mode, there will be built-in songs that you can play on the buzzer.
Department of Computer Engineering,
Faculty of Engineering,
Kasetsart University
This project is part of the course 01204114 Introduction to Computer Hardware Development for the second semester of the academic year 2023.