รายการโครงงาน

01204322 Embedded Systems

ภาคปลาย ปีการศึกษา 2565 หมู่ 1

กลุ่มที่ 1 : Barin
ชยพล สาสนรักกิจ
ตะวันฉาย ฉัตรกุล ณ อยุธยา
พฤกษ์ อ่วมเทศ
ภราดร วัชรเสมากุล
รัฐธรรม เอิบอิ่มฤทธิ
ชื่อโครงงาน: เครื่องให้อาหารสัตว์เลี้ยงแบบจำเพาะ
รายละเอียด:

ที่มาและความสำคัญ


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

ฟีเจอร์ที่สำคัญ


  • แผงควบคุมประกอบด้วยจอ OLED และปุ่มควบคุมเพื่อตั้งค่า
    • สีของเครื่องแต่งกายของสัตว์เลี้ยงของเรา
    • ปริมาณอาหารที่ปล่อยให้ในแต่ละครั้ง
    • ระยะเวลาการให้อาหารในรอบถัดไป จะต้องห่างจากรอบก่อนหน้าเท่าไร
  • การจดจำการตั้งค่า โดยเมื่อเปิดเครื่องขึ้นมาใหม่ค่าที่เคยตั้งไว้จะยังคงอยู่
  • Node-Red Dashboard แสดงค่า parameter ต่างของเครื่องให้อาหาร และแสดงระดับอาหารภายในถังเก็บอาหารแบบ Realtime โดยสามารถเข้าได้ ที่นี่
  • การป้องกันการให้อาหารที่มากเกินไป โดยเครื่องให้อาหารจะไม่ให้อาหารจนกว่าจะเลยเวลาที่กำหนดไว้

แนวคิดและหลักการ


Diagram
แผนภาพแสดงการทำงานของทั้งระบบ
Diagram
ภาพแสดงองค์ประกอบของ Node-Red Dashboard

         เครื่องให้อาหารสัตว์เลี้ยง ประกอบด้วย Microcontroller NodeMCU ESP-WROOM-32S ทั้งหมด 5 ตัว โดยแต่ละตัวทำหน้าที่ที่แตกต่างกัน ดังนี้


บอร์ดที่ 1 สำหรับการ configuration ค่า parameter ต่างๆ

Diagram
ภาพองค์ประกอบของบอร์ดที่ 1
  • ประกอบด้วย OLED 1 ตัวสำหรับแสดงผล และ ปุ่มกดทั้งหมด 3 ปุ่ม แทนการเลื่อนขึ้น เลื่อนลง และปุ่ม OK สำหรับเลือกเมนู
  • เริ่มด้วยเมื่อเปิดเครื่อง microcontroller จะทำการดึง parameter ที่ถูกเก็บไว้ในฐานข้อมูลและนำมาแสดงหากหากสามารถดึงข้อมูลจากฐานได้สำเร็จ
  • โดย parameter ที่สามารถแก้ไขได้มีดังนี้
    • Color คือสีของเสื้อที่เครื่องให้อาหารอนุญาติให้สามารถรับประทานได้
    • Feed time คือระยะเวลาที่บานควบคุมอาหารเปิด โดยยิ่งระยะเวลามาก ก็จะทำให้ได้ปริมาณอาหารที่มากตาม
    • Time interval คือระยะเวลาการให้อาหารในรอบถัดไป จะต้องห่างจากรอบก่อนหน้าเท่าไร เพื่อไม่ให้ระบบมให้อาหารมากเกินไป
  • โดยเราสามารถเปลี่ยนค่า parameter ได้โดยการกดเลือกเมนูที่แสดงผ่านจอ OLED โดยหากทำการแก้ไขแล้ว ตัว microcontroller จะทำการ publish ค่าผ่าน topic ของ MQTT เพื่อบันทึกค่าลงฐานข้อมูล เพื่อที่หากเปิดเครื่องรอบใหม่ระบบก็จะสามารถดึงค่าที่เคยตั้งค่าไว้แล้วได้ และ publish ค่าไปยังบอร์ดที่จำเป็นที่ใช้ parameter ในการควบคุม ได้แก่ บอร์ดที่ 3,4 และ 5
  • และทุกๆครั้งที่มีการเปลี่ยนค่า parameter หน้า node-red ก็จะแสดงผลการเปลี่ยนแปลงของข้อมูลอยู่ตลอดเวลา


บอร์ดที่ 2 สำหรับวัดระดับ ปริมาณอาหารภายในถังเก็บอาหาร

Diagram
ภาพองค์ประกอบของบอร์ดที่ 2
  • ประกอบด้วย Ultrasonic Module จำนวน 1 ตัว โดยทำหน้าที่ในการวัดระดับอาหารที่อยู่ภายในถังอาหาร
  • หาก Ultrasonic ตรวจจับระยะได้ใกล้ แสดงว่าระดับอาหารมีอยู่มาก
  • โดย microcontroller จะทำการ publish ระดับอาหารผ่าน topic ของ MQTT ทุกๆ ครั้งที่ระดับอาหารมีการเปลี่ยนแปลง โดยจะไปแสดงผลที่หน้า node-red


บอร์ดที่ 3 สำหรับตรวจจับสัตว์เลี้ยง และสีเครื่องแต่งกายของสัตว์เลี้ยง

Diagram
ภาพองค์ประกอบของบอร์ดที่ 3
  • ประกอบด้วย RGB Color Sensor Module 1 ตัว และ Ultrasonic Module 1 ตัว
  • บอร์ดนี้จะทำการตรวจจับสัตว์เลี้ยงที่จะเข้ามากินอาหาร เพื่อส่ง publish message ด้วย topic ของ MQTT เพื่อให้บอร์ดที่ 4 ทำงานต่อ
  • โดยบอร์ดนี้จะ publish message ไปยังบอร์ดที่ 4 ก็ต่อเมื่อ
    • Ultrasonic สามารถตรวจจับวัตถุได้
    • หาก Ultrasonic สามารถตรวจจับวัตถุได้นั้น บอร์ดจะทำการตรวจสอบสีของวัตถุ หากวัตถุมีสีที่ตรงกับสีที่ได้ตั้งค่าไว้จากบอร์ดที่ 1 หมายความว่า อนุญาติให้ระบบ publish ไปที่บอร์ดที่ 4 เพื่อเปิดที่ให้อาหารได้


บอร์ดที่ 4 สำหรับควบคุมบานเปิดปิดจานอาหารเพื่อป้องกันการกินอาหารที่มากเกินไป

Diagram
ภาพองค์ประกอบของบอร์ดที่ 4
  • ประกอบด้วย Servo 1 ตัว, Laser 1 ตัว และ LDR 1 ตัว
  • โดยบอร์ดนี้จะมีหน้าที่ดังนี้
    • subscribe mqtt คอยรับสัญญาณจากบอร์ด 3 ที่ทำการตรวจสอบสัตว์เลี้ยงเพื่อเปิดและปิดฝาให้อาหารสัตว์เลี้ยงโดยใช้ Servo
    • ตรวจสอบระดับอาหารในถาดด้วย LDR และ Laser ซึ่งถ้าตรวจสอบพบว่าอาหารในถาดหมดจะทำการ publish คำสั่งไปให้บอร์ด 5 เพื่อทำการปล่อยอาหารจาก tank ให้ไหลลงมาในถาด


บอร์ดที่ 5 สำหรับควบคุมบานเปิดปิดอาหารที่ออกมาจากถังเก็บอาหาร

Diagram
ภาพองค์ประกอบของบอร์ดที่ 5
  • ประกอบด้วย Servo 1 ตัว
  • คอยรับคำสั่งจากบอร์ดที่ 4 โดยการ subscriber topic MQTT ที่สามารถรอข้อความที่บอร์ดที่ 4 publish มาได้ โดย Servo จะเปิดตามจำนวนเวลาที่ได้ตั้งค่าไว้จากบอร์ดที่ 1

อุปกรณ์ที่ใช้


  • NodeMCU ESP-WROOM-32S [5 ตัว]
  • Push Button ขนาด 6 mm [3 ตัว]
  • 0.96" I2C 128x64 OLED Display [1 ตัว]
  • Ultrasonic Module HC-SR04 [2 ตัว]
  • RGB Color Sensor Module GY-31 (TCS230/TCS3200) [1 ตัว]
  • Servo MG90S [2 ตัว]
  • Laser Head Transmitter Sensor Module KY-008 [1 ตัว]

Development Tools


  • Hardware
    • พัฒนาโดยใช้ PlatformIO โดยใช้ในรูปแบบของ VSCode Extension
  • Backend
    • Mosquitto สำหรับเปิด MQTT broker เข้าถึงได้ที่ mqtt://mqtt.tawanchai.com
    • ExpressJS สำหรับ Backend HTTP Server เข้าถึงได้ที่ foodfeeder.tawanchai.com
    • Redis เป็นฐานข้อมูลไว้เก็บข้อมูล parameter ได้แก่ color,time_interval,feed_time
  • Frontend
    • พัฒนาบน Node-Red เข้าถึงได้ที่ red.tawanchai.com

Source Code : github.com/tawanchaiii/Embedded_Foodfeeder

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-05-22 10:00:55 โดย b6310500287
กลุ่มที่ 2 : ฟาร์มอันแสนสะดวกสบายของน้องเวฟ
ณัฐ วีรกุล
ผู้นำ แซ่เล้า
พงศธร อินตะนัย
พีรณัฐ ศรีสุทธางกูร
ชื่อโครงงาน: Smart Farm by Wave
รายละเอียด:

ความเป็นมาของโครงงาน

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


Features

สรุป Feature ทั้งหมด

1. Farm Management System เป็นระบบที่สามารถให้เจ้าของไร่สามารถจะจัดการได้ว่าให้แปลงไหนปลูกพืชชนิดอะไรและสามารถใส่ได้ว่าใครเป็นคนรับผิดชอบแปลงนั้นๆ โดยสามารถที่จะควบคุมได้ผ่าน Front-end โดยมี feature ย่อยๆดังนี้

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

2. Automatic Watering System เป็นระบบที่จะคอยรดน้ำให้กับพืชในแต่ละแปลงแบบอัตโนมัติ โดยค่าความชื้นที่เหมาะสมจะขึ้นอยู่กับว่าในแปลงนั้นปลูกอะไร โดยในฐานข้อมูลจะเก็บข้อมูลว่า พืชชนิดไหนจะเหมาะกับความชื้นในระดับใด

3. Weather Report เป็นระบบจะแสดงผลบนหน้าเว็บว่าสภาพอากาศในบริเวณแปลงนามีสภาพอากาศเป็นอย่างไร เช่น อุณหภูมิ (celsius), ความชี้นในอากาศ และ ปริมาณนำ้ฝน (เนื่องจากว่าการทดสอบจริงจะต้องไปทดสอบในสถานการณ์จริงซึ่งอาจจะทำให้ Hardware พังได้จึงไม่สามารถ Demo ให้ดูได้)

4. Plant Status Per Field Report เป็นระบบที่จะอ่านค่าความชื้นในดินในแต่ละแปลงและนำมาแสดงผลในหน้าเว็บ

5. Farm Status Report เป็นระบบที่จะคอยตรวจจับสถานะฟาร์มต่างๆเช่น ตรวจสอบควัน, ตรวจสอบเปลวไฟ โดยถ้าเกิดสามารถตรวจจับอย่างใดอย่างนึง และระบบก็จะตรวจสอบด้วยว่าปริมาณน้ำในถังที่จะใช้ในการรดนำ้ต้นไม้เหลือเท่าไหร่

6. LCD Weather Report จะเป็นการแสดงผลสภาพอากาศบริเวณรอบๆฟาร์ม โดยจะแสดงผลบนจะ LCD

7. Automatic Gate เป็นระบบเปิดปิดเข้าประตูฟาร์มอัตโนมัติ โดยจะใช้ระบบเปิดประตูแบบไร้สัมผัสและมีระบบคอยควบคุมการปิดไม้กั้นเพื่อความปลอดภัยของคนใช้งาน


Details

1. Automatic Watering System
โดยระบบรดน้ำต้นไม้จะใช้อุปกรณ์ Hardware

  • Micro Submersible Water Pump DC 3V-5V
  • Relay Module 5V 1 Channel HIGH Trigger 250V/10A
  • 2xAAA Battery Holder
  • NODEMCU ESP32

    โดย esp32 จะได้ไป subscribe topic ที่ back-end จะ publish สถานะในการรดน้ำต้นไม้ โดยแต่ละแปลงจะ subscribe ไปยัง topic ของตนเองตามหมายเลขของแปลง โดยเราจะนำเอา Relay มาคอยควบคุมการจ่ายไฟจากรางถ่านไปยังตัว Pump น้ำ

Automatic Watering System

2. Plant Status Per Field Report
โดยระบบแสดงสถานะในแต่ละแปลงจะใช้อุปกรณ์ Hardware

  • Moisture Sensor Module
  • NODEMCU ESP32
    โดย esp32 จะทำการ publish ค่าความชื้นในดินในแต่ละแปลงให้กับ backend และ frontend ค่อยดึงข้อมูลจากฐานข้อมูลและนำไปแสดงผลหน้าเว็บของแต่ละแปลง

Moisture Per Field Report

3. Weather Report and Farm Status Report
โดยเป็นระบบที่จะรายงานสภาพอากาศและสถานะบริเวณรอบๆฟาร์ม โดยจะใช้อุปกรณ์ Hardware

  • MQ2 Smoke LPG CO Sensor Module
  • 5VDC HC-SR04 Ultrasonic Sensor x2
  • DHT11 Sensor Module Breakout
  • Infrared IR Flame Detector Sensor Module
  • NODEMCU ESP32

    โดย esp32 จะอ่านค่าจาก sensor ทั้ง 5 ตัว โดยการ publish ข้อมูลจากแยกเป็น 2 topic เพราะเนื่องจากแต่ละ sensor จะมีการส่งข้อมูลไป update มี interval ที่ไม่เท่ากัน.
    • MQ5 (ตรวจจับควัน), Flame (ตรวจจับเปลวไฟ), Ultrasonic (ตรวจสอบระดับในถังน้ำสำหรับรดน้ำต้นไม้) จะถูก publish ไป ทุก 1 วินาที
    • DHT11 (อุณหภูมิและความชื้นในอากาศ), Ultrasonic (ตรวจสอบระดับน้ำ ฝน) จะถูก publish ไปทุกๆ 5 วินาที

Weather Report

Farm Status Report

4. LCD Weather Report
จะเป็นการรายงานสภาพอากาศบนจอ LCD โดยจะใช้อุปกรณ์ Hardware

  • 1602 LCD (Blue Screen) 16x2 with I2C Interface
  • NODEMCU ESP32

    โดยเราได้ใช้ library esp_now.h ในการส่งข้อมูลข้ามระหว่าง board แบบ wireless โดยจะใช้เพียง data link layer ซึ่ง บอร์ดที่อ่านสภาพอากาศและสถานะจะส่งข้อมูลไปหาบอร์ด LCD ทุกๆ 5 วินาทีและบอร์ด LCD ก็จะนำค่าล่าสุดมาแสดงผลบนจอ

5.Automatic Gate เป็นบอร์ดที่จะควบคุมการเปิดปิดประตูโดยมี Hardware

       โดยเราจะใช้ระบบไร้สัมผัสในการเปิดประตูโดยจะใช้ servo มาเป็นที่เปิดไม้กั้น ซึ่งสามารถเอามือมา hover รอบ sensor ได้โดยจะใช้ Ultrasonic ในการตรวจสอบว่ามีมือมาบังอยู่หรือไม่ และจะใช้ Mini PIR Motion sensor เพื่อตรวจสอบว่าเป็นมือคนจริงๆหรือไม่เพื่อป้องกันการมีวัตถุมาวางขวาง Ultrasonic โดยประตูจะถูกเปิดค้างอย่างน้อย 5 วินาที และการปิดประตูจะมีการตรวจสอบว่ามีวัตถุหรือคนขวางประตูอยู่หรือไม่ โดยจะใช้ Laser Emitter และ LDR ในการข่วยตรวจสอบโดยจะตั้งให้ Laser Emitter ส่องตรงไปหา LDR ถ้ามีวัตถุหรือคนขวางอยู่ LDR จะอ่านค่าได้น้อยจะทำให้ประตูยังเปิดค้างไว้อยู่ แต่ถ้าไม่มีวัตถุมาขวาง LDR จะอ่านค่าจาก Laser ได้ตรงและประตูจะปิดทันที


Other Hardware Details

  • โดยในการพัฒนาในส่วนของ Hardware จะใช้ Arduino IDE ในการพัฒนา
  • ในการเขียนโค้ดจะใช้ Multitasking มาช่วยในการเพิ่มความเร็วและความง่ายในการพัฒนา
  • มีการใช้ library เพิ่มเติมสำหรับ sensor แต่ละตัว

Other Hardware Library

  1. DHT11.h
  2. MQ2.h
  3. HCSR04.h for Ultrasonic
  4. WiFi.h (built-in)
  5. ArduinoJson.h
  6. esp_now.h
  7. PubSubClient.h
  8. LiquidCrystal_I2C.h
  9. ESP32Servo.h

อุปกรณ์ที่ใช้

  1. ESP-WROOM-32 x4
  2. NodeMCU ESP32 x3
  3. Breadboard 8.5x5.5cm (400 Holes) เยอะมาก
  4. Moisture Sensor Module x4
  5. Relay Module 5V 1 Channel HIGH Trigger 250V/10A x4
  6. 2xAAA Battery Holder x4
  7. MQ2 Smoke LPG CO Sensor Module x1
  8. Micro Submersible Water Pump DC 3V-5V x4
  9. 5VDC HC-SR04 Ultrasonic Sensor x3
  10. DHT11 Sensor Module Breakout x1
  11. Infrared IR Flame Detector Sensor Module x1
  12. 1602 LCD (Blue Screen) 16x2 with I2C Interface x1
  13. Laser Head Transmitter Sensor Module x1
  14. MG90S Metal Gear Micro Servo x1
  15. LDR x1
  16. HC-SR505 Mini PIR Motion Sensor Module x1
  17. [Resistor 10k]

เครื่องมือที่ใช้ในการพัฒนา

Frontend

  • UX/UI Design: Figma
  • Frontend Library: ReactJS, Axios, Bootstrap, SweetAlert2

Backend

  • database: MongoDB Atlas
  • Framework: NodeJS
  • Library: express, mqtt , cors, dotenv, express-mongo-sanitize, hpp, morgan, xss-clean

MQTT Broker

กลุ่มพวกเราได้เลือกที่จะใช้ MQTT ของ Eclipse Mosquitto เพื่อลด latency โดยจะทำการ host ไว้บน computer เลย

รายละเอียด Frontend

  • ใช้ Figma ในการออกแบบ User Interface ทั้งหมด
  • ใช้ ReactJS ในการพัฒนาเว็บไซต์
  • ใช้ Axios ในการทำ HTTP request กับ backend
  • ใช้ Bootstrap Modal ในการทำ Popup แสดงกราฟ และ Popup เพิ่มแปลง
  • ใช้ SweetAlert2 ในการแสดงแจ้งเตือนและแก้ไขข้อมูลเล็กน้อย

รายละเอียด Backend

  • Setup configuration ของ Collection และ Data Model ของ MongoDB
  • ติดต่อกับ Hardware ด้วย MQTT server เพื่อรับข้อมูลลงไปเก็บใน MongoDB Database ด้วย Library Mongoose และสั่งการรดน้ำ
  • ติดต่อกับ Frontend ด้วย HTTP Server เพื่อส่งข้อมูลในการแสดงผล และรับการตั้งค่าการเปิดปิดการใช้งานแต่ละแปลงจาก Frontend

รายละเอียด Hardware

Link ไป GitHub

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-30 14:55:14 โดย b6310503448
กลุ่มที่ 3 : Strom
สุคชาธัม เซียวศิริถาวร
ทิวัตถ์ ทรัพย์รัตนกุล
ปองภพ ไกรรวีโรจ
วิชญ์นพัฒน์ จำปาเรือง
ชื่อโครงงาน: Roller Coaster อร่อยเข้มเต็ม ๆ วง
รายละเอียด:

รายละเอียด


  โครงงานนี้เป็นระบบจัดคิวคนเข้ารถไฟเหาะ อ้างอิงจากสวนสนุกที่มีแถวปกติและแถว Fast Pass โดยจะทำการนับคนเข้าออกแต่ละแถวผ่านการจำลองการแตะบัตรด้วย LDR, ตรวจจับอาวุธด้วยเครื่องตรวจโลหะ, บอกจำนวนคนในแถวนั้น ๆ ที่สามารถขึ้นรถไฟเหาะได้ด้วยจอ OLED, ไม้กั้นเพื่อปิด/เปิดให้คนขึ้นรถไฟเหาะได้ และมีเว็บแสดงผลจำนวนคนที่อยู่ในแถวพร้อมเวลาโดยประมาณหากคุณจะเข้าไปต่อแถว

ที่มาและความสำคัญ


  Roller Coaster หรือรถไฟเหาะเป็นเครื่องเล่นยอดนิยมในสวนสนุกหลาย ๆ ที่ ส่งผลให้จำนวนคนที่รอต่อคิวมีปริมาณมาก ตัวอย่างเช่น Tokyo Disneyland บางครั้งจะต้องรอถึงเกือบ 3 ชั่วโมงในการเล่นเครื่องเล่น 1 เครื่อง จึงมีสิ่งที่ช่วยบรรเทาปัญหานี้ คือ Fast Pass ซึ่งเป็นบัตรที่จะช่วยให้เราสามารถจองตั๋วเข้าเครื่องเล่นต่าง ๆ ล่วงหน้าได้ เพียงแค่มีสิ่งนี้ ก็จะสามารถนั่งเครื่องเล่นได้ด้วยการรอต่อคิวเพียงเล็กน้อย แต่อย่างไรก็ตามการรอคิวแบบธรรมดาก็ยังมีอยู่และแม้จะเป็น Fast Pass ก็ต้องมีการต่อคิว โดยปัญหาที่มักจะพบคือไม่รู้ว่าคิวปัจจุบันมีคนเยอะแค่ไหนหรือต้องรอนานเท่าใดถึงจะได้เล่น กลุ่มของเราจึงจัดทำระบบจัดคิวคนเข้ารถไฟเหาะและแสดงเวลาประมาณที่ต้องรอคิว

แนวคิดและหลักการ

แผนภาพการทำงานของระบบ
รูปภาพโดยรวมของระบบ

วิเคราะห์ระบบ hardware

ระบบจัดคิวเครื่องเล่นรถไฟเหาะของเราแบ่งการทำงานหลัก ๆ เป็น 4 อย่างดังนี้

  1. ระบบที่คอยจัดการกับคนทางเข้าฝั่ง FastPass และ NormalPass
  2. ระบบในการตรวจจับการเข้า/ออกของรถไฟเหาะ
  3. ระบบที่คอยจัดการกับคนทางออกฝั่ง FastPass
  4. ระบบที่คอยจัดการกับคนทางออกฝั่ง NormalPass

ระบบ 1 : ระบบที่คอยจัดการกับคนทางเข้าฝั่ง FastPass และ NormalPass

   เนื่องจากบอร์ดนี้ต้องจัดกับคนทั้งทางเข้าทางฝั่ง normal pass และ ฝั่ง fast pass เพื่อความราบรื่นของระบบจึงเลือกใช้รูปแบบของ code เป็น non-blocking parallel โดยเมื่อมีคนเดินเข้ามาก็จะทำการตรวจอาวุธ ว่าคุณได้พกอาวุธอันตรายอะไรเข้าเครื่องเล่นรถไฟเหาะเรารึเปล่า ถ้าพกอาวุธอันตรายเข้าสวนสนุกก็จะมี buzzer ร้องและจะล็อคประตูฝั่งนั้นทำให้เปิดไม่ได้ ถ้าไม่มีอาวุธก็จะมี LDR sensor ที่เมื่อมีคนเดินผ่าน ประตูก็จะเปิดเป็นระยะเวลาทั้งหมด 3 วินาที และได้ส่ง MQTT ไปบอก broker ว่าตอนนี้คิว fast หรือ normal ได้มีคนเข้าคิวเพิ่มขึ้นมา 1 คน

ระบบส่วนนี้จะมีอุปกรณ์ดังนี้

  • Metal Touch Sensor เอาไว้ตรวจจับโลหะ
  • Active Buzzer สำหรับส่งเสียงเตือนเมื่อ Metal Touch Sensor ตรวจเจอโลหะ
  • LDR เอาไว้ตรวจจับว่ามีคนเข้ามาหรือไม่ ถ้ามีคนเข้ามาประตูก็จะเปิดเป็นระยะเวลา 3 วินาที
  • Servo เป็นตัวควบคุมในการเปิดปิดประตู
ระบบจัดการคนขาเข้า

ระบบ 2 : ระบบในการตรวจจับรถไฟเหาะ

   บอร์ดนี้จะมี avoidance สองตัวเอาไว้ตรวจจับรถไฟเหาะขาเข้ากับขาออก ถ้ามีรถไฟขาเข้ามาสัญญาณไฟก็จะติดและมีการส่ง mqtt ไปหาบอร์ดทางฝั่ง fastpass ว่ารถไฟมาแล้ว ส่วนอีกฝั่งนึงมี avoidance ฝั่งขาออกเอาไว้ track ว่ารถไฟได้ออกไปแล้วหรือยัง

ระบบส่วนนี้จะมีอุปกรณ์ดังนี้

  • IR sensor ตัวแรกเอาไว้เช็ครถไฟฝั่งขาเข้า
  • IR sensor ตัวสองเอาไว้เช็ครถไฟฝั่งขาออก
  • Led เอาไว้แสดงสถานะว่ารถไฟเข้า
ระบบตรวจจับรถไฟเหาะ

ระบบ 3 : ระบบที่คอยจัดการกับคนทางออกฝั่ง fastpass

   บอร์ดนี้มีหน้าที่ควบประตูฝั่งทางออกของ fastpass มีหน้าจอ oled ไว้แสดงว่าปัจจุบันคิวฝั่ง fastpass สามารถขึ้นรถไฟเหาะได้อีกกี่คน และ priority ของทาง fastpass สูงกว่า normalpass บอร์ดนี้เลยมีหน้าที่อีกอย่างคือส่ง mqtt ไปยังบอร์ดฝั่ง normal เพื่อให้พร้อมรับคนได้แล้ว เมื่อคิวฝั่ง fastpass ขึ้นรถไฟเหาะครบตามเงื่อนไขแล้ว

ระบบส่วนนี้จะมีอุปกรณ์ดังนี้

  • Servo ใช้สำหรับการควบคุมประตูเปิดปิด
  • LDR sensor เอาไว้ตรวจว่าคนเดินผ่านรึเปล่า ถ้ามีคนเดินผ่านก็จะส่งไปหา mqtt broker ว่าตอนนี้คนในคิว fast pass ลดลง 1
  • OLED เอาไว้แสดงจำนวนคนที่สามารถเข้าเครื่องเล่นรถไฟเหาะได้
ระบบควบคุม fastpass ขาออก

ระบบ 4 : ระบบที่คอยจัดการกับคนทางออกฝั่ง normalpass

   บอร์ดนี้มีหน้าที่ควบประตูฝั่งทางออกของ normalpass มีหน้าจอ oled ไว้แสดงว่าปัจจุบันคิวฝั่ง normalpass สามารถขึ้นรถไฟเหาะได้อีกกี่คน และเมื่อเวลารับคนครบหมดแล้วก็จะปิดประตู เป็นสัญญาณว่ารถไฟพร้อมออกแล้ว

ระบบส่วนนี้จะมีอุปกรณ์ดังนี้

  • Servo ใช้สำหรับการควบคุมประตูเปิดปิด
  • LDR sensor เอาไว้ตรวจว่าคนเดินผ่านรึเปล่า ถ้ามีคนเดินผ่านก็จะส่งไปหา mqtt broker ว่าตอนนี้คนในคิว normal pass ลดลง 1
  • OLED เอาไว้แสดงจำนวนคนที่สามารถเข้าเครื่องเล่นรถไฟเหาะได้
ระบบควบคุม normal ขาออก

หลักการทำงานของ Node-RED

data-flow การทำงานของ Node-RED dashboard จะแยกการทำงานเป็น 2 ส่วน

ส่วนที่ 1 จะเป็นส่วนของการเขียนหัวข้อที่ใช้แสดงผลทั้งในส่วนของ normal และ fast พร้อมกับการตกแต่งโดยการเขียน cascading style sheets

ส่วนที่ 2 จะเป็นการแสดงข้อมูลจำนวนคนที่อยู่ในคิวและเวลาโดยประมาณในการที่จะเล่นเครื่องเล่น

มีหลักในการคำนวณดังนี้

  • จำนวนคนที่เข้าลบด้วยจำนวนคนที่ออก จะเหลือจำนวนคนที่อยู่ในคิวทั้งในส่วนของ normal และ fast
  • เวลาโดยประมาณในส่วนของ normal จะนำจำนวนคนที่เหลือในคิวหารเอาจำนวนเต็มด้วย 2 และคูณด้วย 2
  • เวลาโดยประมาณในส่วนของ fast จะนำจำนวนคนที่เหลือในคิวหารเอาจำนวนเต็มด้วย 3 และคูณด้วย 2
ตัวอย่างการแสดงผลของ dashboard

อุปกรณ์ที่ใช้


  1. NodeMCU ESP-WROOM-32S [4 ตัว]
  2. 0.96" I2C 128x64 OLED Display [2 ตัว]
  3. IR Infrared photoelectric Sensor Module [2 ตัว]
  4. Active Buzzer [1 ตัว]
  5. LDR 5mm Photocell Photoresistor [4 ตัว]
  6. MG90S Servo Motor [4 ตัว]
  7. Metal Touch Sensor Module ky-036 [2 ตัว]
  8. LED 5mm [1 ตัว]

โดยในแต่ละบอร์ดจะมีอุปกรณ์ดังนี้

บอร์ดที่ 1 การตรวจจับการเข้า/ออกของรถไฟเหาะ
  • NodeMCU ESP-WROOM-32S [1 ตัว]
  • IR Infrared photoelectric Sensor Module [2 ตัว]
  • LED 5mm [1 ตัว]
บอร์ดที่ 2 จัดการกับคนทางออกฝั่ง FastPass
  • NodeMCU ESP-WROOM-32S [1 ตัว]
  • 0.96" I2C 128x64 OLED Display [1 ตัว]
  • LDR 5mm Photocell Photoresistor [1 ตัว]
  • MG90S Servo Motor [1 ตัว]
บอร์ดที่ 3 จัดการกับคนทางออกฝั่ง NormalPass
  • NodeMCU ESP-WROOM-32S [1 ตัว]
  • 0.96" I2C 128x64 OLED Display [1 ตัว]
  • LDR 5mm Photocell Photoresistor [1 ตัว]
  • MG90S Servo Motor [1 ตัว]
บอร์ดที่ 4 จัดการกับคนทางเข้าฝั่ง FastPass และ NormalPass
  • NodeMCU ESP-WROOM-32S [1 ตัว]
  • Active Buzzer [1 ตัว]
  • LDR 5mm Photocell Photoresistor [2 ตัว]
  • MG90S Servo Motor [2 ตัว]
  • Metal Touch Sensor Module ky-036 [2 ตัว]

เครื่องมือที่ใช้ในการพัฒนา

  • mqtt broker และ mqtt protocol สำหรับการสื่อสารระหว่าง board
  • PlatformIO extension ใน vscode สำหรับการพัฒนาฮาร์ดแวร์
  • node-red ใช้ในการพัฒนาเพื่อแสดงส่วนหน้าของเว็บไซต์
    • node-red dashboard สามารถเข้าถึงได้ที่นี่ (ไม่ได้ออกแบบให้รองรับ responsive ปัจจุบันไม่ได้มีข้อมูลใดๆอยู่บนระบบ และจะปิดใช้งานภายในเดือนมีนาคม 66)
  • MQTTBox ใช้ในการตรวจสอบข้อมูลที่ส่งกันระหว่างบอร์ด
  • Github สำหรับบรรจุ source code สามารถเข้าถึงได้ที่นี่
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-28 10:46:48 โดย b6310500350
กลุ่มที่ 4 : Itaewon Krub
กัณธิฎา ภารัตนวงศ์
นำภูมิ เลิศพิทักษ์ธรรม
ปิยกร ทัตตินาพานิช
ศิวกร กมลดิลก
ชุติพันธุ์ บาลมงคล
ชื่อโครงงาน: Numerito
รายละเอียด:

ที่มาและความสำคัญ


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

รายละเอียด


 โครงงานนี้เป็นผลงานที่ได้แรงบันดาลใจมาจากบอร์ดเกมหนึ่ง ซึ่งทางกลุ่มของเราได้นำมาประยุกต์เข้ากับความรู้ที่ได้เรียนไป โดยจะมีการเพิ่มอุปกรณ์ที่เป็นฮาร์ดแวร์เป็นอุปกรณ์ที่จับต้องได้สำหรับการทำกิจกรรมภายในเกม อุปกรณ์และกติกาของเกมจะเป็นดังนี้ เกมเรียงลำดับเลข แจกการ์ดหมายเลข 1 ถึง 6 และ 9 (7 ใบ) ให้ผู้เล่นแต่ละคน โดยจะเริ่มจากการโชว์หมายเลขจำนวน 4 หลัก [7 segment] ที่จอหลักตรงกลาง พร้อมกับจอ OLED แสดงสี โดยจะมี 2 สี คือ น้ำเงิน และแดง ผู้เล่นต้องนำการ์ดไปแตะที่เครื่องอ่าน RFID ที่อยู่บนบอร์ดของตนเอง โดยเรียงตามหมายเลขที่ปรากฎบนจอ ถ้าไฟเป็นสีน้ำเงินให้เรียงการ์ดหมายเลขจากหน้าไปหลัง แต่ถ้าไฟเป็นสีแดงให้เรียงการ์ดหมายเลขจากหลังไปหน้า เมื่อเรียงเสร็จให้กดปุ่มบนบอร์ด และผู้เล่นคนอื่นสามารถกดปุ่มเพื่อขอตรวจสอบลำดับการ์ดที่ลงไปได้ และจะแสดงผลลัพธ์ว่าถูกต้องหรือไม่ที่จอ OLED ตรงกลาง และมีไฟ LED บนบอร์ดผู้เล่นเพื่อนับคะแนน ผู้เล่นจะได้รับคะแนนจากกรณีต่อไปนี้ 1. เรียงการ์ดและกดปุ่มเป็นคนแรก โดยไม่มีคนขอตรวจสอบ 2. เรียงการ์ดและกดปุ่มเป็นคนแรก มีคนขอตรวจสอบ แต่ลำดับการ์ดถูก ส่วนกรณีที่ลำดับการ์ดผิดจะโดนหักคะแนน และผู้ที่ขอตรวจสอบจะเป็นฝ่ายได้คะแนนไป โดยผู้เล่นที่มีคะแนนถึง 3 แต้มเป็นคนแรกจะเป็นผู้ชนะ

ฟีเจอร์ที่สำคัญ

  • มีบอร์ดกลางสำหรับการสุ่มเลขและไฟ LED เพื่อเป็นฟังก์ชันสำหรับการเรียงเลข
  • จอ LCD บอกสถานะระหว่างดำเนินเกม
  • ESP-NOW สำหรับการเชื่อมต่อไร้สาย
  • กล่องควบคุมผู้เล่นทั้งหมด 3กล่อง มีRFIDสำหรับการอ่านการ์ดในแต่ละกล่อง

แนวคิดและหลักการ

 ทุกบอร์ดที่ใช้จะมี ESP32 (NodeMCU) สำหรับการสื่อสารระหว่างบอร์ดแบบไร้สาย (Wireless) โดยใช้ ESP-NOW โดยบอร์ดจะมี 3 ประเภท คือ บอร์ดกลางสำหรับการสุ่มเลข , บอร์ดกลางสำหรับแสดงสถานะผู้เล่น , บอร์ดผู้เล่น 3 บอร์ด โดยใช้ ArduinoIDE ในการพัฒนา

  1. บอร์ดกลางสำหรับการสุ่มเลข

    • Source Code : 7segmentCode.ino
    • Library
      • esp_now.h
      • WiFi.h
      • SevSeg.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware

      • NodeMCU ESP32 [1]
      • 7-Segment 4 Digit [1]
      • KY-016 RGB LED [1] : แสดง mode เกม โดยจะประกอบไปด้วย 2 สี ดังนี้
        • สีน้ำเงิน เรียงเลขจากหน้าไปหลัง
        • สีแดง เรียงเลขจากหลังไปหน้า
      • Resistor 330 Ω [7]

      7-Segment Board Schematic

  2. บอร์ดกลางสำหรับแสดงสถานะผู้เล่น

    • Source Code : MainBoardCode.ino
    • Library
      • MFRC522.h
      • Adafruit_GFX.h
      • Adafruit_SSD1306.h
      • SPI.h
      • esp_now.h
      • WiFi.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware

      • NodeMCU ESP32 [1]
      • จอ LCD 16x2 with I2C [1] : แสดงสถานะโดยรวมของเกม
      • KY-016 RGB LED [3] : แสดงสถานะของแต่ละผู้เล่น โดยมีทั้งหมด 3 สถานะดังนี้
        • สีเขียว บอกถึงสถานะว่าผู้เล่นพร้อมแล้ว
        • สีแดง บอกถึงสถานะผู้เล่นว่ากดส่งเลขเร็วที่สุด
        • สีน้ำเงิน บอกถึงสถานะผู้เล่น 2 คนที่แข่งกันในช่วง Challenge
      • Push button [1] : สำหรับ Reset

      Status Board Schematic

  3. บอร์ดผู้เล่น 3 บอร์ด (3 ผู้เล่น)

    • Source Code : Player Code.ino
    • Library
      • MFRC522.h
      • Adafruit_GFX.h
      • Adafruit_SSD1306.h
      • SPI.h
      • esp_now.h
      • WiFi.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware
      • NodeMCU ESP32 [3]
      • RC522 RFID Card Read/Write [3] : สำหรับการอ่านการ์ด
      • Button [3] : สำหรับกดยืนยัน
      • OLED I2C 128x64 [3] : สำหรับแสดงคะแนนผู้เล่น
      • RFID Card [21] : สำหรับการเล่นเกม

        Player Schematic

Source Code

github

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 23:06:00 โดย b6310506790
กลุ่มที่ 5 : ตัวมัมเอ็มเบ็ดเด็ด
พลอยพัชรินทร์ พูลสวัสดิ์กิติกูล
อติกานต์ อนุสุทธิ์
อภิญญา สุทธิโสภาอาภรณ์
กันตธร วุฒิวิริยะ
จีรพัฒน์ ฉิมมา
สุนิษา อรรควงษ์
ชื่อโครงงาน: Home Care For Bedridden Patients
รายละเอียด:

BACKGROUND

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


FEATURES

ส่วนของผู้ป่วย (2 คน)
  • ผู้ป่วยแต่ละคน จะมีถุงมือซึ่งติดเซ็นเซอร์ตรวจจับการโค้งงอของนิ้วมือ (Flex Sensor) ให้ผู้ป่วยใช้สำหรับเรียกผู้ดูแล โดยแบ่งเป็น 3 กรณี คือ หิว, ต้องการเข้าห้องน้ำ และต้องการความช่วยเหลือเร่งด่วน
  • บริเวณรอบเตียงของผู้ป่วยแต่ละคน จะมีการติดเซ็นเซอร์วัดระยะทาง (Ultrasonic Sensor) ใช้สำหรับตรวจจับการตกเตียงของผู้ป่วยแต่ละคน
  • มี Micropiano ให้สำหรับผู้ป่วยเล่น เพื่อคลายเครียด
ส่วนของผู้ดูแล (1 คน)
  • มีไฟ LED แสดงผลการเรียกจากผู้ป่วยทั้ง 2 คน
  • มี Buzzer สำหรับเตือนในกรณีเกิดเหตุการณ์ผู้ป่วยตกเตียง
  • มีไฟ LED แสดงสถานะการเล่น Micropiano ของผู้ป่วยทั้ง 2 คน
  • มี Web Page สำหรับแสดงผลลัพธ์ทุกอย่าง เช่น สถานะการเรียก สถานะการเล่น Micropiano เป็นต้น


TECHNIQUES

ส่วนของผู้ป่วย (2 บอร์ด)
  • ใช้ Flex sensor 2 ชิ้นต่อ 1 บอร์ด โดย Flex sensor 1 ชิ้นต่อ 1 นิ้วมือ ใช้ติดกับถุงมือนิ้วกลางและนิ้วนาง Flex sensor จะให้ค่า Analog เมื่อเกิดการงอนิ้ว ค่าที่ได้จะเปลี่ยนแปลง จากนั้นนำค่าของ Flex sensor ที่ได้ ไปใช้ในการตั้งเงื่อนไขการติดดับของไฟ LED โดยแบ่งเป็น 3 กรณี
    • กรณีที่ 1 หิว > ให้งอนิ้วนางลง แล้วไฟ LED สีเขียวจะติด
    • กรณีที่ 2 ต้องการเข้าห้องน้ำ > ให้งอนิ้วกลางลง แล้วไฟ LED สีเหลืองจะติด
    • กรณีที่ 3 ต้องการความช่วยเหลือเร่งด่วน > ให้งอนิ้วกลางและนิ้วนางลงพร้อมกัน แล้วไฟ LED สีม่วงจะติด
  • ใช้ Ultrasonic Sensor 2 ชิ้นต่อ 1 บอร์ด โดย Ultrasonic Sensor จะให้ค่าระยะทางจากวัตถุถึง Sensor จากนั้นนำค่าที่ได้ไปใช้ในการตั้งเงื่อนไขการติดดับของไฟ LED และ Buzzer โดยเมื่อระยะทางที่วัดได้มีค่าอยู่ในช่วงที่กำหนดจะทำให้ไฟ LED สีแดงติดและ Buzzer ส่งเสียงเตือน
  • ส่งข้อมูลสถานะของไฟ LED ทั้งหมดและสถานะของ Buzzer ไปยังบอร์ดของผู้ดูแล โดยใช้ Library esp_now.h
Micropiano (2 บอร์ด)
  • Micropiano 1 บอร์ด จะมีไฟ LED สีม่วงและปุ่มกดอย่างละ 8 อันสำหรับเล่นโน้ตดนตรี โดยเรียงโน้ตจาก C3 ไปจนถึง C4 เรียงจากซ้ายไปขวา ตามลำดับ และมีปุ่มกด 3 อันสำหรับเลือกเพลง 3 เพลง โดยมีวิธีการเล่น 2 วิธี คือ

    • วิธีที่ 1 กดที่ปุ่มกดสำหรับเล่นโน้ตดนตรีได้เลย แล้วจะเกิดเสียงโน้ตนั้นๆ ขึ้น ลักษณะเหมือนเปียโนทั่วไป
    • วิธีที่ 2 กดที่ปุ่มกดสำหรับเลือกเพลง หลังจากกดเลือกเพลงแล้ว จะมีไฟ LED ติดตามโน้ตของเพลงนั้นๆ ผู้เล่นสามารถกดที่ปุ่มกดสำหรับเล่นโน้ตดนตรีตามแสงไฟ LED ที่ขึ้น และเมื่อกดแล้วจะเกิดเสียงโน้ตนั้นๆ ขึ้น (ประยุกต์ใช้หลักการ Multitasking)
  • ส่งข้อมูลสถานะการเล่นไปยังบอร์ดของผู้ดูแล โดยใช้ Library esp_now.h

ส่วนของผู้ดูแล (1 บอร์ด)
  • รับข้อมูลจากส่วนของผู้ป่วย (2 บอร์ด) และ Micropiano (2 บอร์ด) โดยใช้ Library esp_now.h จากนั้นนำค่าสถานะที่ได้ มาแสดงผลที่บอร์ดส่วนของผู้ดูแลด้วย โดยผลลัพธ์ที่แสดง มีดังนี้
    • ผู้ป่วยกำลังเล่น Micropiano > ไฟ LED สีน้ำเงินติด
    • ผู้ป่วยหิว > ไฟ LED สีเขียวติด
    • ผู้ป่วยต้องการเข้าห้องน้ำ > ไฟ LED สีเหลืองติด
    • ผู้ป่วยต้องการความช่วยเหลือเร่งด่วน > ไฟ LED สีม่วงติด
    • ผู้ป่วยตกเตียง > ไฟ LED สีแดงติดและ Buzzer ส่งเสียงเตือน
การเชื่อมข้อมูลกับ Backend และ Frontend (1 บอร์ด)
  • รับข้อมูลสถานะทั้งหมดจากบอร์ดของผู้ดูแลโดยใช้ Library esp_now.h จากนั้นใช้ Library HTTPClient.h และ ArduinoJson.h ในการส่งข้อมูลสถานะทั้งหมดไปยัง Server
  • หน้า Web Page แสดงวันที่, ชื่อผู้ป่วย และสถานะตามไฟ LED ข้างต้น


HARDWARE

  • NodeMCU ESP-WROOM-32S [6 ชิ้น]
  • เซ็นเซอร์ตรวจจับการโค้งงอ Flex Sensor RFP 2.2 inch [4 ชิ้น]
  • เซ็นเซอร์วัดระยะทาง Ultrasonic Module HC-SR04P [4 ชิ้น]
  • Active Buzzer Module [4 ชิ้น]
  • Active Buzzer 12V [2 ชิ้น]
  • Micro Switch Button + Tact Cap 12x12x7.3 mm [22 ชิ้น]
  • LED สีม่วง 5mm [20 ชิ้น]
  • LED สีน้ำเงิน 5mm [2 ชิ้น]
  • LED สีเขียว 5mm [4 ชิ้น]
  • LED สีแดง 5mm [4 ชิ้น]
  • LED สีเหลือง 5mm [4 ชิ้น]
  • ตัวต้านทาน 220 Ohm [34 ชิ้น]
  • ตัวต้านทาน 10k Ohm [8 ชิ้น]
  • Breadboard [8 ชิ้น]


DEVELOPMENT TOOLS

  • Hardware 🔨
    • Language : C, C++
    • Software : Arduino IDE
    • Library : Wire.h, WiFi.h, esp_now.h, DebouncedSwitch.h, HTTPClient.h, ArduinoJson.h
  • Backend 📂
    • Language : Go
    • Framework : Gin
    • Server : Heroku
  • Frontend 💻
    • Language : JavaScript, HTML, CSS
    • Framework : React, Bootstrap
    • Design tool : Figma (สามารถดูได้ที่ UX/UI Design)

✨ Source Code ทั้งหมด สามารถดูได้ที่ → github.com/TuaMumEmbeded

🎬 Video Presentation สามารถดูได้ที่ → youtu.be/Lt0JppcsTvc

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-28 14:52:03 โดย b6310506471
กลุ่มที่ 6 : จาพนมดงรัก
ณัฐดนัย เติมบุญผาติ
พุฒิสรรค์ ทองประเสริฐ
ยศวริส เนาวบุตร
วีรนนท์ ธุวสิน
ภูมิภัทร เปี่ยมลือ
สมัชญ์ ห้าวหาญ
ชื่อโครงงาน: smachmole
รายละเอียด:

Introduction

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

โดยพวกเราได้นำอุปกรณ์ที่มีในชั้นเรียนมาประยุกต์และปรับใช้เพื่อสร้างเป็นเกมส์ตีตัวตุ่นในฉบับของพวกเรา!!!

Features

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

How to play

เริ่มเล่นโดยกดปุ่ม start แล้วให้ผู้เล่น 1 คน จากแต่ละฝั่งเริ่มกดปุ่มตามที่ไฟขึ้น โดยจะมีผู้เล่นอีก 1 คนจากแต่ละฝั่งเล่นเกมเป่ายิ้งฉุบ โดยเลือกกดปุ่ม1ใน3ปุ่มเพื่อเลือกว่าจะออกอะไรแล้วผู้ชนะจะไปลดแต้มของอีกฝั่ง เกมจะจบภายใน30วิหลังกด start

Designs and Technical

โดยเราได้ดีไซน์ให้มี main board (ESP32) ในการรันโปรแกรมหลักๆโดยที่จะมี start board และ mole board เป็นบอร์ดเสริมในการส่งข้อมูลเพื่อให้ main board สามารถรันโปรแกรมได้

Main Board (ESP32)

  • เป็นบอร์ดหลักที่รันเกมส์ตีตัวตุ่นและเกมส์เป่ายิ้งฉุบ
  • เป็นบอร์ดที่รับการสื่อสารจาก start board และ mole board
  • แสดงผลคะแนนบนจอ OLED
  • มีเกมส์เป่ายิ้งฉุบรันควบคู่กับเกมส์ตีตัวตุ่น (แยก thraed)

Start Board (NUCLEO-L432KC)

  • มีการสื่อสารกับ main board
  • เมื่อมีการกดสวิตซ์ (start game!) จะส่งสัญญาณให้กับ main board ว่าให้เริ่มเกมส์ได้

Mole Board (NUCLEO-L432KC)

  • มีการสื่อสารกับ main board
  • เมื่อมีการกดปุ่มตามที่ไฟขึ้น จะส่งสัญญาณให้กับ main board เพื่อให้ main board เพิ่มคะแนนให้กับผู้เล่น

Communications

  • main board, start board และ mole board สื่อสารกันด้วย i2c protocol โดยใช้ขาพิน SCL และ SDA

Components

  1. ESP32 board 2 เครื่อง
  2. NUCLEO-L432KC 4 เครื่อง
  3. micro switch 15 ชิ้น
  4. led 8 ชิ้น
  5. OLED 2 ชิ้น
  6. resistor 330+-5% ohm 4 ชิ้น
  7. resistor 10k+-1% ohm 4 ชิ้น
  8. USB cable (Type-A to micro) 6 เส้น
  9. wires

Tools

  • Thonny (micropython)
  • Embedded Studio Cloud
  • Librarys in Micropython
    • time
    • ssd1306
    • threading
    • utime
    • machine(I2C, Pin)
  • Librarys in Mbed
    • mbed.h
    • DebounceIn.h
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 23:47:38 โดย b6310505751
กลุ่มที่ 7 : อุอุกะกะอุกะอุกะ(กลุ่มลิงเเละลิงฟังเเค่ Caesar)
ณฐโชค เอกธีรธรรม
พิริยะ โอภาสยานนท์
ณกรณ์ ศรีพันธุ์
ธีร์วรา เศรษฐเอกพันธ์
นนน บัวเพชร
นวพล บุญเสริม
ชื่อโครงงาน: King of Diamonds
รายละเอียด:

ที่มาเเละความสำคัญ:

มีต้นเเบบมาจาก 1 ในเกมส์ของ มังงะญี่ปุ่นเรื่อง Alice in Borderland โดยเป็นเกมที่ผู้เล่นจะส่งเลข 0-100 เเละนำเลขมาหาค่าเฉลี่ยเเละคูณด้วย 0.8 ผู้ชนะจะเู้ป็นผู้ที่เลือกเลขใกล้เคียงที่สุด โดยผู้เล่นคนอื่นจะ -1 คะเเนน เมื่อคะเเนนลบถึง 10 ผู้เล่นก็จะเเพ้เกม เเละจะมีกฎพิเศษเพิ่มทุกครั้งเมื่อผู้เล่นถึงจำนวน 4 ,3 เเละ 2

การทำงาน:

  • ใช้ NODEMCU ESP32 5 ตัว เป็น เพลเยอร์บอร์ด ตามผู้เล่น 5 คน มีหน้าที่ส่ง request ไปยังเซิฟเวอร์บอร์ด โดยแบ่งออกเป็น 1.Connect request กดปุ่ม 'C' บน keypad เพื่อขอสถานะเซิฟเวอร์บอร์ดและข้อมูลที่ใช้ในการแสดงผลโดยเพลเยอร์บอร์ดจะแสดงผลผ่าน OLED ตามสถานะของเซิฟเวอร์บอร์ดที่ได้ 2.Submit request กดปุ่ม 'A' บน keypad ส่งตัวเลขไปยังเซิฟเวอร์บอร์ดในระหว่างการเล่นเกม ซึ่งตัวเลข 0-100 สามารถกดตัวเลขบน keypad และ กดปุ่ม 'B' เพื่อลบตัวเลขทั้งหมด 3.Ready request กดปุ่ม 'D' บน keypad ก่อนกดเริ่มเกมบนเซิฟเวอร์บอร์ด
  • ใช้ NODEMCU ESP32 1 ตัว เป็น เซิฟเวอร์บอร์ด มีหน้าทีรับ request จากเพลเยอร์บอร์ดและตอบกลับตาม request ที่ได้โดยใช้รูปแบบ state machine เป็นสถานะของเซิฟเวอร์ และนอกจากตอบกลับ Connect request เซิฟเวอร์บอร์ดจะทำหน้าที่กระจายสถานะเซิฟเวอร์ทุกครั้งที่มีการเปลี่ยนสถานะเซิฟเวอร์
  • ใช้ React พัฒนาหน้าเว็บ และ ใช้ Node ทำหน้าที่เป็น subscriber รับข้อมูลจาก Mosquitto MQTT ซึ่งเป็น MQTT broker ที่รันอยู่บนเครื่องโน๊ตบุ๊ค เมื่อได้รับข้อมูล Node จะนำข้อมูลที่ได้ไปเขียนเป็นไฟล์ JSON บน directory ที่ React ทำงาน โดย React จะทำการดึงข้อมูลจากไฟล์ JSON ไปแสดงผลบนเว็บ
  • ESP-NOW ใช้เป็นโปรโตคอลสื่อสารกันระหว่าง เพลเยอร์บอร์ด และ เซิฟเวอร์บอร์ด
  • MQTT ใช้เป็นโปรโตคอลสื่อสารกันระหว่าง เซิฟเวอร์บอร์ด และ เว็บไซต์

Techniques:

  • แบ่งภาพ GIF เป็นหลาย frame จากนั้นเเปลงภาพเป็น Bitmap code เพื่อนำไปเเสดงผลผ่าน OLED ในรูปเเบบ animation
  • ออกแบบโดยใช้หลักการ state machine ทำให้ง่ายต่อการ Debug เขียนลำดับการทำงานและส่งข้อมูล
  • ใช้ Mosquitto MQTT ซึ่งเป็น MQTT server ที่สามารถเปิดบนเครื่องโน๊ตบุ๊คได้ทำให้ช่วยลด latency ในการส่งข้อมูล
  • การรับส่งระหว่างระหว่างเว็บใช้ไฟล์ JSON แทนการเก็บลง database และ http request ทำให้ช่วยลด latency ในการส่งข้อมูล
  • ใช้ Mobile hotspot บนโน๊ตบุ๊คที่เปิด MQTT server เพื่อสร้าง LAN ทำให้ตัวเซิฟเวอร์บอร์ดกำหนด ip MQTT server เป็นแบบ static ip ได้บน private network คือ 192.168.137.1
  • สร้างฟังก์ชั่น getWiFiChannel() แสกนหา channel บน network เพื่อเพิ่มประสิทธิภาพในการส่งข้อมูล
  • ตัวแปรที่ใช้เก็บเวลาเป็น long long int เป็นหน่วยมิลลิวินาทีเพื่อเพิ่มความแม่นยำ
  • เพลเยอร์บอร์ดบันทึกเวลาตอนที่ได้รับสถานะเซิฟเวอร์ทำให้สามารถสร้างฟังก์ชั่นเพื่อเช็คเวลาในการแสดงผลตามสถานะเซิฟเวอร์ที่ได้ หากเกินกว่าที่ตั้งจะขึ้นข้อความแจ้งบนOLED
  • การส่ง Connect request จะมีตัวแปร ID ของเพลเยอร์ที่ส่งไปด้วย เพื่อให้เซิฟเวอร์บอร์ดสามารถตอบกลับได้แบบ Unicast โดยไม่จำเป็นต้อง Broadcast ไปทุกเครื่อง
  • โมเดลใช้แผ่นไม้แข็งเป็นวัสดุรองกด Keypad ทำให้ง่ายต่อการกด

Hardware:

  • NODEMCU ESP32 x6
  • 4x4 Matrix Membrane Keypad x5
  • OLED x5
  • Switch x1
  • USB cable x6

Software:

  • Arduino IDE
  • Visual Studio Code
  • Mosquitto MQTT
  • Windows 11 mobile hostpot

Library list in used:

  • ESP-NOW
  • WIFI
  • Adafruit GFX
  • Adafruit ssd1306
  • Keypad
  • Wire
  • SPI
  • PubSubClient
  • math

reference:

King of Diamond

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-04-01 23:39:03 โดย b6310503405
กลุ่มที่ 8 : สาวสวย 5 หน่อ
วิมลมณี วิศิษฎ์สกุลเจริญ
สุพิชชา วสุประสาท
จิดาภา ณัฐภานนท์
ชนนันท์ วัฒนชานนท์
ณัฐรดา วัชราสินธร
ชื่อโครงงาน: ตู้รับซื้อขยะอัจฉริยะกว่าคนทำ
รายละเอียด:

trash logo

รายละเอียด

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

ที่มาและความสำคัญ

 ได้รับแรงบันดาลใจมาจากเครื่อง Vending machine ในห้างสรรพสินค้า ผนวกกับได้อ่านเกี่ยวกับโครงงานถังขยะอัจฉริยะ จึงได้ไอเดียว่าถ้ามีถังขยะที่นอกจากแยกขยะได้แล้ว ยังสามารถให้เงินแก่ผู้แยก เสมือนร้านขายของเก่าขนาดย่อมสาขาใกล้บ้าน นอกจากจะอำนวยความสะดวกแก่คนแยกขยะแล้ว ยังส่งเสริมการแยกขยะและการออมด้วย

Features

  • Show Trash Stauts - ระบบแสดงปริมาณขยะภายในถัง ผ่านหน้าจอ OLED
  • Detecting Metal & Non-Metal - ระบบตรวจสอบและแยกประเภทขยะโลหะและพลาสติก
  • Coin Reward - ระบบคำนวณและจ่ายเหรียญตามปริมาณขยะที่ได้รับ
  • Collecting Credit - ระบบสะสมยอดเงินของผู้ใช้ผ่านเบอร์โทรศัพท์ ในกรณีที่เหรียญในตู้ไม่เพียงพอจ่าย
  • Admin Line Notification - ระบบแจ้งเตือนสถานะที่ต้องการการดูแล ผ่าน Line Notify

หลักการทำงาน


รูปแสดง flow การทำงานของบอร์ดทั้งหมด

โดยบอร์ดทั้งหมดนั้นจะส่งข้อมูลกันผ่าน ESP-Now ยกเว้นบอร์ด LineNotify ที่ต้องมีการเชื่อม Wifi จึงจะรับข้อมูลทั้งหมดผ่าน UART ที่เชื่อมต่อกับบอร์ด TrashStatus

Board 1: DetectMatal

DetectMatal
ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32
  • 1 LJ12A3-4-Z/BX (NPN NO) [proximity sensor]
  • 1 HC-SR04 [ultrasonic sensor]
  • 1 MG90S [servo motor]
  • 1 Battery 12V

ทำหน้าที่ในการคัดกรองขยะว่าเป็นโลหะหรือไม่ด้วย inductive proximity sensor แล้วทำการแยกโดยใช้ servo ในการหมุนให้ขยะลงไปในถังที่ถูกต้อง

  • รับข้อมูลจากบอร์ด Display เมื่อผู้ใช้กดปุ่มเริ่มทำการแยกขยะ
  • ส่งข้อมูลจำนวนชิ้นที่แยกได้ไปแสดงผลที่ OLED
  • รับข้อมูลจากบอร์ด Display กดปุ่มจบการแยกขยะ
  • คำนวนยอดเงินที่ต้องจ่ายและส่งข้อมูลให้บอร์ด ChangeCoin
  • ส่ง State เมื่อมีการกดปุ่มว่าได้เติมเหรียญเรียบร้อยแล้ว

Board 2: Display

Display
Board 2 Display
ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32
  • 1 OLED 128x64 I2C
  • 2 Button

เป็นส่วนที่มีการติดต่อกับผู้ใช้ โดยแบ่งเป็นส่วนการแสดงผลด้วย OLED และการใช้ปุ่มควบคุมตัวเลือกและการทำงานของตู้ โดยจะเริ่มการทำงานจากการเลือก 2 ฟังก์ชันหลัก คือการทำการใส่ขยะใหม่ หรือการรับยอดเงินที่ตู้ติดค้างไว้

Board 3: ChangeCoin

Changcoin
Board 3 Changcoin

ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32
  • 2 MG90S [servo motor]

ทำหน้าที่ในการจ่ายเหรียญ โดยคำนวณจากยอดเงินที่ต้องจ่ายและจำนวนของเหรียญแต่ละประเภทที่เหลืออยู่

  • รับราคาที่ต้องจ่ายจากบอร์ด DetectMetal (ในกรณีที่ผู้ใช้เลือกฟังก์ชันการใส่ขยะ) จากนั้นนำมาคำนวณร่วมกับจำนวนเหรียญ 5 บาทและจำนวนเหรียญ 1 บาทที่เหลืออยู่ ว่าสามารถจ่ายได้กี่บาท ต้องใช้เหรียญประเภทใด จำนวนเท่าไหร่ และจากนั้นจะสั่งงาน servo motor เพื่อจ่ายเหรียญ
  • กรณีจ่ายได้ไม่ครบจำนวน จะส่งยอดหนี้ไปที่บอร์ด DebtDB
  • รับข้อมูลยอดหนี้ของผู้ใช้จากบอร์ด DebtDB (ในกรณีที่ผู้ใช้เลือกฟังก์ชันการ claim debt)

Board 4: DebtDB

Changcoin

Board 4 DeptDB

ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32
  • 1 Keypad 3x4
  • 1 OLED 128x64 I2C

ทำหน้าที่เก็บยอดหนี้ที่ตู้ค้างชำระผู้ใช้ โดยใช้เบอร์โทรศัพท์ในการระบุตัวตน เก็บร่วมกับข้อมูลยอดหนี้ นอกจากนี้ยังทำหน้าที่ในการควบคุม keypad และแสดงผลหมายเลขที่ผู้ใช้กรอกผ่านทางจอ OLED

  • รับข้อมูลยอดหนี้จากบอร์ด ChangeCoin จากนั้นจะทำการอัพเดทยอดหนี้ (ในกรณีที่ผู้ใช้เลือกฟังก์ชันการใส่ขยะ) และส่งข้อมูลยอดหนี้ไปให้บอร์ด Display เพื่อแสดงผล
  • ส่งยอดหนี้ไปที่บอร์ดที่ Display และ ChangeCoin เพื่อนำไปแสดงผลและจ่ายเงิน (ในกรณีที่ผู้ใช้เลือกฟังก์ชันการ claim debt)

Board 5: TrashStatus


B5 B6
Board 5 TrashStatus (left) and Board 6 LineNotify (right)

ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32
  • 2 Grove - Ultrasonic Ranger

ทำหน้าที่ตรวจสอบปริมาณขยะ และส่งต่อข้อมูลอื่น ๆ ให้บอร์ด LineNotify

  • ตรวจสอบปริมาณขยะโดยใช้ ultrasonic sensor เปรียบเทียบระยะทางของวัตถุที่อยู่ใกล้สุดและคำนวณออกมาเป็นเปอร์เซ็นต์ของพื้นที่ถังขยะที่ใช้ไป
  • ส่งเปอร์เซ็นต์ของพื้นที่ถังขยะที่ใช้ไปให้บอร์ด Display ทุกครั้งที่มีการจบการทำงานจากฟังก์ชันที่ผู้ใช้ใส่ขยะ เพื่อนำไปแสดงผลบนจอ OLED
  • เมื่อพบว่าขยะเต็ม
  • หากอยู่ในขณะที่ผู้ใช้ใช้งานอยู่ จะส่งข้อมูลไปให้บอร์ด Display เพื่อหยุดการรับขยะและคำนวณยอดเงินทันที จากนั้นผู้ใช้จะไม่สามารถใช้งานตู้รับซื้อขยะได้อีก จนกว่าจะมีการเคลียร์ขยะ
  • หากอยู่ในช่วงที่ไม่มีการใช้งาน จะส่งข้อมูลไปบอกบอร์ด Display เพื่อปรับการใช้งานให้เลือกได้เฉพาะฟังก์ชัน claim debt
  • ส่งข้อมูลไปยังบอร์ด LineNotify เพื่อแจ้งเตือนทางไลน์ให้ผู้ดูแลมาเคลียร์ถังขยะ
  • เมื่อตรวจสอบพบว่าถังขยะมีเปอร์เซ็นต์พื้นที่การใช้งานที่ 0% จะส่งข้อมูลไปบอกบอร์ด Display และ LineNotify เพื่อเปลี่ยนการแสดงผลและแจ้งเตือน

บอร์ด 6 : LineNotify

ประกอบด้วยอุปกรณ์

  • 1 NodeMCU ESP32

ทำหน้าที่ส่งข้อมูลไปแจ้งเตือนในกลุ่มของผู้ดูแล ผ่าน LineNotify * รอรับข้อมูลจากบอร์ด TrashStatus ที่เชื่อมต่อข้อมูลกับบอร์ดอื่น ๆ ผ่าน UART * เชื่อมต่อ WiFi และแจ้งเตือนผ่าน Line Notify ในกรณีที่ถังขยะไหนเต็ม ถังขยะไหนมีการเคลียร์ขยะแล้ว กรณีเหรียญหมดและกรณีมีการเติมเหรียญแล้ว

อุปกรณ์ทั้งหมด

  • 6 NodeMCU ESP32
  • 1 LJ12A3-4-Z/BX (NPN NO) [proximity sensor]
  • 1 HC-SR04 [ultrasonic sensor]
  • 3 MG90S [servo motor]
  • 2 OLED 128x64 I2C
  • 3 Button
  • 2 Grove - Ultrasonic Ranger
  • Battery 12V

เครื่องมือที่ใช้ในการพัฒนา

ในส่วนของบอร์ด DetectMetal และ บอร์ด Display นั้นจะใช้ Arduino IDE ในการพัฒนา ส่วนบอร์ดที่เหลือนั้น ใช้การพัฒนาโดย PlatformIO ในรูปแบบของ VSCode Extension (ปัจจัยจากความถนัดของผู้พัฒนาแต่ละบอร์ด)

ศึกษาข้อมูลเพิ่มเติมได้ที่ --> https://github.com/Smarter-Trash

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 23:33:12 โดย b6310505700
กลุ่มที่ 9 : ทีมนี้ตองแบก
สรวิชญ์ มานะธุระ
ธนกฤต สวนใต้
กันต์กฤช พรหมมาโนช
กานน ชีวทรรศน์
จรูญพงษ์ สุขเลิศ
บุณยธร จี้กังวาฬ
ชื่อโครงงาน: (ตอง vs MKสุกี้) ในเขาวงกตสุดมหัศจรรย์
รายละเอียด:

รายละเอียดโครงงาน

     เป็นเกมกระดานเขาวงกต 2 ผู้เล่น โดยที่ในเขาวงกตจะมีไอเทมให้เก็บเพื่อเพิ่มค่า status ผู้เล่นควบคุมโดยการทอดลูกเต๋า สุ่มก้าวเดินในบอร์ดไปเรื่อยโดยผลัด turn กัน เมื่อตัวละครของทั้งสองผู้เล่นมาเผชิญหน้ากัน ก็จะให้ต่อสู้กันโดยผลัดกันทอดเต๋าซึ่งจะมีผลต่อความเสียหายที่สร้างได้จนฝ่ายใดฝ่ายหนึ่งเลือดเหลือน้อยกว่าหรือเท่ากับ 0 ก็จะเป็นผู้แพ้ อีกฝ่ายก็จะเป็นผู้ชนะ

ที่มาของโครงงาน

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

อุปกรณ์

  • NODEMCU ESP32 x6 บอร์ด
  • Breadboard x7 บอร์ด
  • OLED x4 จอ
  • LED x5 ดวง
  • TWO COLOR LED MODULE KY-011 x8 ดวง
  • Servo MG90S x2 ตัว
  • Button x10 ตัว
  • Resistor
  • JumperWire
  • Future Board
  • กล่องกระดาษ

Technical

  • GameEngineBoard
    • เป็นตัวกลางในการสื่อสาร
    • สุ่ม turn ของผู้เล่นและชนิดของ Item ตอนเริ่มเกม แล้วส่งค่าไปให้ DisPlayBoard
    • รับ Action จาก PlayerControllerBoard เช่นตำแหน่ง, การชนกำแพง, จำนวนลูกเต๋า
    • ส่งค่าสถานะของผู้เล่น(HP,ATK), Turn, Mode(เดิน,ต่อสู้) ไปให้PlayerControllerBoard
    • ตรวจสอบคู่ต่อสู้ในแนวแกน x,y ที่ติดกัน
  • PlayerControllerBoard
    • ควบคุมตัวละครผู้เล่นผ่าน Button
    • หลังจากผู้เล่นเดิน จะส่งตำแหน่งของผู้เล่นไปให้ GameEngineBoard
    • ทอดลูกเต๋าผ่าน Button
    • เลือก option ทอดลูกเต๋าตอนต่อสู้
    • แสดงข้อมูลผู้เล่นผ่านจอ OLED
  • DisplayBoard
    • แสดงไฟตามชนิด Item โดยรับข้อมูลจาก GameEngineBoard
    • ปิดไฟ Item เมื่อมีผู้เล่นมาเก็บ
    • แสดงไฟบอก Turn ของผู้เล่น
    • แสดงไฟสีแดงบอกว่าเป็น Phase การต่อสู้หรือไม่
  • PlayerBoard
    • แสดง HP ของผู้เล่นผ่านจอ OLED
    • แสดง Action การตีขณะต่อสู้

Communication

    ใช้ WirelessProtocol ESP-NOW ในการสื่อสาร

  • GameEngineBoard 🡆 PlayerControllerBoard
    • เริ่มเกม
           ในตอนเริ่มเกมครั้งแรก GameEngine จะส่งค่าสถานะต่าง ๆ ให้ PlayerControllerBoard ทั้ง 2 อัน
    • เก็บไอเทม
           หลังจาก GameEngine เช็คตำแหน่งของผู้เล่นแล้วตรงกับตำแหน่งของ Item GameEngine จะส่งค่าสถานะที่ถูก Update ใหม่ไปให้
    • ถูกโจมตี
           เมื่อผู้เล่นถูกโจมตีหรือเดินชนกำแพง GameEngine จะส่งค่าสถานะที่ถูก Update ใหม่ไปให้ โดยค่าดาเมจสุดท้าย จะคำนวณจากค่าลูกเต๋าและพลังโจมตีของผู้เล่น สามารถดูได้จากตารางด้านล่าง

- เปลี่ยนเทิร์น
     เมื่อผู้เล่นทอดลูกเต๋าครบ GameEngine จะส่งค่าสถานะที่บอกให้เปลี่ยน Turn ไปให้ผู้เล่น - เข้าโหมดต่อสู้
     เมื่อเปลี่ยนจากโหมดปกติไปเป็นโหมดต่อสู้ GameEngine จะส่งค่าสถานะที่บอกว่าเป็นโหมดต่อสู้ไปให้ผู้เล่น - จบเกม
     เมื่อมีผู้เล่นคนใดคนหนึ่ง HP น้อยกว่าหรือเท่ากับ 0 GameEngine จะส่งค่าสถานะที่บอกว่าจบเกมไปให้ - PlayerControllerBoard 🡆 GameEngineBoard - ทุกครั้งที่เดิน 1 ก้าวเสร็จ
     เมื่อผู้เล่นเคลื่อนที่ PlayerController จะส่งตำแหน่ง ค่าสถานะการชนกำแพง(หากชน) และจำนวนคครั้งในการเดินที่เหลือไปให้ GameEngine - หลังทอดเต๋า
     หลังจากผู้เล่นทอดเต๋า PlayerController จะส่งค่าลูกเต๋าไปให้ GameEngine - GameEngineBoard 🡆 DisplayBoard - เริ่มเกม
     เมื่อเริ่มเกม GameEngine จะส่งชนิดItem ของแต่ละตำแหน่งกับ Turn ของผู้เล่นไปให้ - เก็บไอเทม
     เมื่อ GameEngine พบว่ามีผู้เล่นเก็บItem GameEngine จะทำการส่งตำแหน่ง Item ที่ถูกเก็บไปให้ - game over cause wallhit
     ส่งค่าสถานะการจบเกมไปให้ - เข้าโหมดต่อสู้
     เมื่อเข้าโหมดต่อสู้ GameEngine จะส่งค่าสถานะที่บอกว่าเป็นโหมดต่อสู้ไปให้ - เปลี่ยนเทิร์น
     เมื่อมีการเปลี่ยนTurn GameEngine จะส่งค่าTurn ของผู้เล่นไปให้ - PlayerControllerBoard 🡆 PlayerBoard - เกิดการเปลี่ยนแปลง HP
     PlayerController จะส่งค่า HP ปัจจุบันไปให้ - หลังจากทอดเต๋าต่อสู้
     PlayerController จะส่งค่าสถานะการโจมตีไปให้

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 13:58:11 โดย b6310503227
กลุ่มที่ 10 : 123
ชนาวิทย์ เตชมณีกร
โฆษิต วัฒนกุลวิวัฒน์
นพรุจ ศรีพงษ์พันธุ์กุล
ปริชญ์ สมานไพสิฐ
รวิชญ์ พยัคฆวรรณ
ชื่อโครงงาน: LazyWatchy
รายละเอียด:

รายละเอียดโครงงาน

นาฬิกาปลุกสำหรับคนไม่ยอมตื่น ให้ user เล่นเกมถึงจะแก้นาฬิกาปลุกได้ 3 เกม ได้เเก่

  • ยิงเลเซอร์
  • ทุบตุ่น
  • บวกเลข

สามารถตั้งเวลาปลุกผ่านเว็บได้ เมื่อเล่นเกมครบจะปิดนาฬิกาได้

ProjectPic1.png
ProjectPic2.png

ที่มาของโครงงาน

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

FEATURES

  1. แสดงเวลาปัจจุบัน (ไทม์โซนไทย) ผ่าน OLED
  2. ตั้งเวลาและลบเวลาผ่านหน้าเว็บไซต์
  3. แจ้งเตือนด้วยเสียงผ่าน Active Buzzer Module
  4. แสดงสถานะของแต่ละเกม
  5. เกมยิงเลเซอร์ ใช้เลเซอร์ยิงใส่ LDR เพื่อให้ตุ๊กตาล้ม
  6. เกมทุบตุ่น กดปุ่มตามไฟ LED ที่ติด
  7. เกมบวกเลข เป็นการสุ่มตัวเลข 2 จำนวน จาก 1 - 50 เพื่อนำมาตั้งโจทย์

อุปกรณ์ทั้งหมด

  • ESP32 (NodeMCU-32S) [5 เครื่อง]
  • LED Diode [8 ชิ้น]
  • Servo [3 ชิ้น]
  • Active Buzzer Module [1 ชิ้น]
  • OLED I2C [3 ชิ้น]
  • LDR [3 ชิ้น]
  • Matrix Keypad 3x4 [1 ชิ้น]
  • Button [4 ชิ้น]

Board 1: แสดงเวลาและทำการแจ้งเตือนเมื่อถึงเวลาที่ตั้งแจ้งเตือนไว้ (AlarmClock)

Board-1.png
ประกอบไปด้วย

  • ESP32 (NodeMCU-32S)
  • LED
  • OLED
  • Active Buzzer Module

ทำหน้าที่แสดงเวลาปัจจุบันและแจ้งเตือนเมื่อถึงเวลาที่ตั้งแจ้งเตือนผ่านเว็บไซต์เอาไว้

  • เชื่อม WiFi ด้วย library WiFi.h
  • ใช้ library NTPClient เพื่อดึงเวลาาปัจจุบันและเปลี่ยนไทม์โซนหลังจากนั้นแสดงเวลานั้นผ่านจอ OLED
  • มีการ GET HTTP request เพื่อดึงเวลาที่ตั้งแจ้งเตือนไว้และใกล้เวลาปัจจุบันมากที่สุดมาตรวจสอบว่าถึงเวลาที่ตั้งแจ้งเตือนไว้หรือยัง ถ้าถึงแล้วให้ไฟ LED ติดและ Active Buzzer Module ทำงาน
  • เมื่อแจ้งเตือนแล้วให้ PUT HTTP request ไปเปลี่ยนสถานะของแต่ละเกมเพื่อให้ทุกเกมเริ่งทำงานได้
  • ทำการ GET HTTP request เพื่อดึงสถานะทุกเกมมาตรวจสอบ เทื่อทุกเกมมีสถานะว่าเล่นเกมผ่านแล้วให้ปิด LED และปิด Active Buzzer Module

Board 2:เกมยิงตัวตุ่น(Laser_Gun)

ฺBoard-1.png

ประกอบไปด้วย

  • ESP32 (NodeMCU-32S)
  • Servo motor
  • LDR
  • Resistor 330 Ohm

ทำหน้าที่เป็นเกม โดยบังคับให้Userเล่นจนผ่าน เพื่อไปยังด่านถัดไปหรือปิดนาฬิกาปลุก

  • เชื่อม WiFi ด้วย library WiFi.h
  • มีการรับค่าจาก LDR เก็บไว้ในตัวเเปรเเละนำค่าที่ได้ไปสั่ง servo ให้หมุนตามที่ต้องการ
  • ใช้ library ESP32Servo.h เพื่อควบคุมการทำงานของ servo เพื่อให้ตัวตุ่นล้มหรือกลับมายืนอีกครั้ง
  • มีการ Get status มาจาก Backend เเละเช็คสถานะว่านาฬิกาปลุกดังหรือยัง หากดังเเล้วก็จะสั่งให้เริ่มเกมได้
  • มีการ Put status กลับไปที่ Backend เมื่อเกมเสร็จสิ้นเพื่อให้ Board1 ทราบว่าเกมยิงตัวตุ่นได้จบลงเเล้ว

Board 3:เกมทุบตัวตุ่น(Whack a mole)

ฺBoard-3.png

ประกอบไปด้วย

  • ESP32 (NodeMCU-32S)
  • LED
  • Button
  • OLED
  • Resistor 1k Ohm

ทำหน้าที่เป็นเกม โดยบังคับให้Userเล่นจนผ่าน เพื่อไปยังด่านถัดไปหรือปิดนาฬิกาปลุก

  • เชื่อม WiFi ด้วย library WiFi.h
  • กำหนดให้ LED 4 ดวงและปุ่ม 4 ปุ่มเป็น switch case จากนั้น random ค่าตั้งแต่ 1-4 นำค่าที่ random มาเก็บไว่้ในตัวแปรเพื่อสุ่มว่า LED ดวงใดจะติดในระยะเวลาหนึ่ง ถ้ากดปุ่มทันระยะเวลาที่กำหนดจะได้คะแนน เมื่อคะแนนถึงที่กำหนดจะถือว่าชนะ
  • แสดงคะแนนที่ได้จากการเล่นเกมและเมื่อได้คะแนนตามที่กำหนดจะแสดง You Win ผ่านจอ OLED
  • มีการ Get status มาจาก Backend เเละเช็คสถานะว่านาฬิกาปลุกดังหรือยัง หากดังเเล้วก็จะสั่งให้เริ่มเกมได้
  • มีการ Put status กลับไปที่ Backend เมื่อเกมเสร็จสิ้นเพื่อให้ Board1 ทราบว่าเกมทุบตัวตุ่นได้จบลงเเล้ว

Board 4:เกมบวกเลข(Plus_game)

UT9NZg.png

ประกอบไปด้วย

  • ESP32 (NodeMCU-32S)
  • Keypad
  • OLED

ทำหน้าที่เป็นเกม โดยบังคับให้Userเล่นจนผ่าน เพื่อไปยังด่านถัดไปหรือปิดนาฬิกาปลุก

  • เชื่อม WiFi ด้วย library WiFi.h
  • เมื่อเริ่มต้นจะทำการส่ง GET method ไปยัง Back-end เพื่อเช็คสถานะว่าถึงเวลาที่ตั้งนาฬิกาไว้แล้วหรือยังโดยจะ get ไปทุก 1 วินาที
  • เมื่อ GET สถานะมาได้แล้วจะทำการสั่งทำงานระบบโดยจะสุ่มค่า integer 2 ตัวระหว่าง 1-50 นำมาบวกกันแล้วให้ user ทำการป้อนคำตอบลงไป
  • หากป้อนผิดจะสั่งให้ User ป้อนใหม่จนกว่าจะถูก
  • หากป้อนถูก จะขึ้นแสดงผลว่า You Win! แล้วทำการ Put ค่าไปยัง Back-end เพื่อเป็นการบอกว่า User ได้เล่นเกมผ่านแล้วและให้บอร์ดอื่นนำไปใช้งานต่อไป

Board 5:ระบบแจ้งเตือนสถานะเกม(notice_status)

UTcGo3.png

ประกอบไปด้วย

  • ESP32 (NodeMCU-32S)
  • LED
  • Resistor 330 Ohm

ทำหน้าที่เป็นตัวแจ้งเตือนสถานะเกมส์ว่าเล่นจบหรือยังโดยเริ่มแรกเมือนาฬิกาปลุกดัง ไฟแจ้งเตือน 3 ดวง จะติดขึ้น แล้วหลังจากนั้นเมือเล่นแต่ละเกมส์จบไฟจะค่อยๆดับไปทีละดวง และเมือเล่นจนครบ 3 เกมส์ไฟจะดับหมดและ นาฬิกาปลุกจะปิดลง

  • เชื่อม WiFi ด้วย library WiFi.h
  • มีการ Get status มาจาก Backend เเละเช็คสถานะว่านาฬิกาปลุกดังหรือยัง หากดังเเล้วก็จะสั่งให้ไฟติด

Source code

Frontend Github
Backend Github

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 23:21:58 โดย b6310500121
กลุ่มที่ 11 : KKNZL and the Amazing White Powder
ชนินทร์ชัย ช่วยประสาทวัฒนา
ภัคพล นารถธนะรุ่ง
กิตติภัค วิบูลเสถียร
ทศพล อัศวเดชขจร
ปารณัท วงศ์สานุภา
ชื่อโครงงาน: ตู้ยามหัศจรรย์
รายละเอียด:

รายละเอียดโครงงาน 📜

Medicine Cabinet เป็นระบบจัดยาอัตโนมัติที่เช็คปริมาณยาและสั่งยาตามต้องการได้ โดยภายในตู้จะทำการเก็บยาเอาไว้ในรูปแบบแถวเรียงลงมา (stack) และแบ่งออกเป็น column ตามประเภทของยาแต่ละชนิด โดยจะมีระบบหน้าจอแสดงปริมาณยาที่คงเหลือในตู้ยา และมีการจัดทำระบบ web application สำหรับใช้ฟีเจอร์ต่าง ๆ เช่น ฟีเจอร์ในการเลือกชนิดยาที่ต้องการได้ เป็นต้น

ที่มาของโครงงาน 🩺

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

แนวคิดและหลักการ 💡

ระบบตู้ยามีระบบที่สำคัญ 5 ระบบดังนี้

  1. ระบบสั่งยาจากหน้าเว็บไซต์ 💻
  2. ระบบสั่งยาจาก Numpad 🔢
  3. ระบบแสดงผลผ่านจอ LCD 📟
  4. ระบบควบคุมการจ่ายยาภายในตู้ยา 🧰
  5. ระบบตรวจจับขวดยา 🔆

ระบบ 1: ระบบสั่งยาจากหน้าเว็บไซต์ 💻

เป็นระบบที่ทำการควบคุมการจ่ายยาจากผ่านทางหน้าเว็บไซต์โดยที่หน้าเว็บไซต์จะมีส่วนที่ชื่อ Order ซึ่งเป็น form ให้ผู้ใช้สามารถใส่ตัวเลขสำหรับจำนวนขวดยาที่ต้องการให้ถูกจ่ายออกไปได้ตามที่ต้องการ (และหากไม่ต้องการยาชนิดใด ๆ ก็ไม่จำเป็นต้องใส่ 0 เพราะระบบจะใส่ 0 ให้เองโดยอัตโนมัติในช่องนั้น ๆ) และเมื่อกด Add ก็จะทำให้คำสั่งจ่ายยาปรากฎด้านล่าง (ในส่วน Order List) พร้อมกับส่งคำสั่งไปที่ backend ให้ทำการควบคุมการเปิด-ปิดตู้ยาต่อไป สุดท้ายหากทำการจ่ายยาครบทั้งหมด คำสั่งจ่ายใน Order List จะหายไปทันที

นอกจากนี้แล้วบนหน้าเว็บไซต์ในส่วนบนสุดก็จะมีการแสดงสถานะของตู้ยา (slot) แต่ละตู้ว่าในตู้หรือ slot นั้นมีปริมาณขวดยาอยู่มากน้อยเพียงใด

Frontend1 Frontend2

ระบบ 2: ระบบสั่งยาจาก Numpad 🔢

บนบอร์ดจะมี Numpad เพื่อให้ผู้ใช้งานกดเลขตู้ยาที่ต้องการ เมื่อกดเลขตู้แล้วบอร์ดจะทำการส่ง mqtt ไปให้กับ backend เพื่อให้ backend จัดการสั่งยาจากตู้ที่ผู้ใช้งานกด โดยจะได้ยาจากตู้ยานั้น ๆ 1 ขวดต่อการกด numpad 1 ครั้ง เช่น กดปุ่มหมายเลข 2 จะได้ขวดยาจากตู้หมายเลข 2 จำนวน 1 ขวด

ระบบ 3: ระบบแสดงผลผ่านจอ LCD 📟

บอร์ดจะรับข้อมูลสถานะของตู้ยาจาก backend และมีจอ LCD แสดงสถานะของตู้ยาแต่ละตู้ โดยสถานะของตู้ยามีอยู่ 4 สถานะ

  • full คือ ปริมาณขวดยาในตู้ยามีอยู่ประมาณ 100%
  • half คือ ปริมาณขวดยาในตู้ยามีอยู่ประมาณ 50-99%
  • low คือ ปริมาณขวดยาในตู้ยามีอยู่ประมาณ 10-49%
  • empty คือ ปริมาณขวดยาในตู้ยามีประมาณ 0-9%❗

❗หมายเหตุ: ที่สถานะ empty บอกถึงปริมาณขวดยาในตู้ยามีประมาณ 0-9% เนื่องจากผู้จัดทำไม่ต้องการให้ตู้ยาไม่มีขวดยาเหลืออยู่ในตู้เลย

ระบบ 4: ระบบควบคุมการจ่ายยาภายในตู้ยา 🧰

บนบอร์ดจะมี LDR sensor, solenoid และ micro servo เพื่อใช้ควบคุมการจ่ายยา โดยที่

  • LDR sensor จะติดอยู่ที่ตู้ยา 3 ตำแหน่งเพื่อส่งสถานะปริมาณขวดยาให้กับ backend
  • solenoid ใช้ในการดันขวดยาออกมาจากตู้โดยมีแผ่นไม้ขนาดเล็กประกอบไว้ที่ปลายของ solenoid ใช้เป็นตัวคั่นระหว่างขวดยาขณะที่ solenoid ดันขวดยาเพื่อไม่ให้ขวดยาที่เหลือในตู้ตกลงมา
  • micro servo ใช้ในการกั้นขวดยาไม่ให้ขวดยาไหลออกจากตู้ยาก่อนที่จะมีการสั่งเปิดตู้

หลักการทำงาน คือ LDR sensor ส่งข้อมูลให้บอร์ดจากนั้นบอร์ดประมวลผลแล้วส่งให้ backend เมื่อได้รับคำสั่งจาก backend ให้ส่งยาบอร์ดจะสั่งให้ micro servo ทำงานก่อน (เปิดไม้กั้น) จากนั้นให้ solenoid ดันขวดยาออกมา ในระหว่างนี้ solenoid จะทำการกั้นขวดยาขวดถัดไปไม่ให้ตกลงมา หลังจากนั้นให้ micro servo ทำงาน (ปิดไม้กั้น) แล้วให้ solenoid กลับไปตำแหน่งเดิม

ระบบ 5: ระบบตรวจจับขวดยา 🔆

บนบอร์ดจะมี Infrared sensor (Avoidance) โดยตัว sensor จะอยู่ที่ปลายพื้นเอียงเพื่อใช้ตรวจจับขวดยาที่กลิ้งผ่านมาเพื่อเป็นการตรวจสอบว่าจำนวนขวดยาที่กลิ้งผ่านไปทั้งหมดตรงตามกับ order ที่สั่งไว้หรือไม่ โดยการกลิ้งผ่าน sensor 1 ครั้งจะลดจำนวนขวดยาใน order 1 ขวด

การออกแบบตัวโมเดล 🖊

โครงแบบพื้นเอียง (Sloping Channel)

Sloping channel

โครงแบบตู้ยา (Slot)

Slot

โครงสร้างแผนผังวงจร - Schematic

schematic schematic schematic schematic

การทำงานของแต่ละบอร์ด ESP32 🔌

จะมีการใช้บอร์ด ESP32 จำนวน 5 ตัวด้วยกันโดยแต่ละบอร์ดจะมีหน้าที่ต่างๆดังนี้:

  • board ESP ตัวที่ 1: คุม sensor LDR, servo motor, และ solenoid ของกล่องที่ 1
  • board ESP ตัวที่ 2: คุม sensor LDR, servo motor, และ solenoid ของกล่องที่ 2
  • board ESP ตัวที่ 3: คุมจอ LCD 1 จอ
  • board ESP ตัวที่ 4: คุม Avoidance sensor ที่อยู่ปลายทาง sloping channel เพื่อดูว่าขวดยามันกลิ้งออกไปแล้วจริงๆ
  • board ESP ตัวที่ 5: คุม Numpad ซึ่งใช้ในการสั่งการให้ slot แต่ละตู้ทำงาน เช่นกด 1 ก็ให้ตู้ 1 เริ่มกระบวนการผลักยาออกมาจากตู้

เครื่องมือที่ใช้ในการพัฒนา 🔧

Hardware:

  • Arduino IDE
  • Libraries
    • ArduinoJson.h
    • ESP32Servo.h
    • Keypad.h
    • LiquidCrystal_I2C.h
    • PubSubClient.h
    • string.h
    • WiFi.h
    • Wire.h
  • Language: C++

Frontend:

  • UI/UX: Figma
  • Website Development: HTML, CSS, Javascript

Backend:

  • Node.js

API:

MQTT API

  • /cabinet/1 Cabinet receives "release" command from backend
  • /cabinet/2 Cabinet receives "release" command from backend
  • /cabinet/1/sensor Cabinet publishes sensor status
  • /cabinet/2/sensor Cabinet publishes sensor status
  • /cabinet/detect Avoidance sensor publishes detection
  • /cabinet/keypad Numpad publishes key presses

Frontend API: HTTP

  • GET /cabinet Returns cabinet status
  • GET /order Returns order list
  • GET /order/submit Submits order

รวบรวมโค้ดทั้งหมดที่มีการใช้งานใน: Github

อุปกรณ์ (Hardware) 🔨

  1. NodeMCU ESP32 [5 บอร์ด]
  2. Infrared Track Sensor Module KY-032 [1 ตัว]
  3. Solenoid [2 ตัว]
  4. Numpad 4x4 [1 แผ่น]
  5. Micro Servo [2 ตัว]
  6. 1602 LCD (Blue Screen) 16x2 with I2C Interface [1 จอ]
  7. LDR sensor [6 ตัว]
  8. Resistor 10k Ohm
  9. Battery box 18650 2xAA [2 ตัว]
  10. Battery AA [4 ก้อน]
  11. 1 Channel Relay Module DC 5V 10A [1 ตัว]
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-30 21:57:48 โดย b6310505688
กลุ่มที่ 12 : รับเหมาก่อสร้างแบบ Y5k
วรัญญู เนรังษี
ศักดิ์ชัย วชิรเมธากร
ภรภัทร วงศ์สาวิตร
กิตติพงศ์ ตำแอ
ทัตเทพ รัตนจันทร์
ชื่อโครงงาน: mY hOmE
รายละเอียด:

รายละเอียด💨

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

ที่มาของโครงงาน💨

โครงงานนี้เกิดขึ้นมาจากสมาชิกที่มีความต้องการจะทำให้การใช้ชีวิตภายในบ้านสะดวกสบายมากยิ่งขึ้น และเนื่องจากเทคโนโลยีในปัจจุบันที่มีการก้าวกระโดดอย่างรวดเร็ว เราจึงคิดจะนำเทคโนโลยีสมัยใหม่เหล่านี้มาดัดแปลงเป็นบ้านอัจฉริยะ

อุปกรณ์ทั้งหมด💨

  • ESP32 (NodeMCU-32S) [4 เครื่อง]
  • DHT 22 [1 ชิ้น]
  • LED Diode [3 ชิ้น]
  • Fan Module DC Motor PWM Speed Control [1 ชิ้น]
  • Servo [1 ชิ้น]
  • Micro PIR [3 ชิ้น]
  • LIGHTSENSER [1 ชิ้น]
  • MQ-2 Smoke Gas Sensor [1 ชิ้น]
  • Active Buzzer Module [1 ชิ้น]
  • Passive buzzer [1 ชิ้น]
  • ชุดสายไฟและ jumper wire [1 ชุด]
  • Breadboard [4 ชิ้น]
  • USB Cable (Male Type-A to Male Micro B) [4 ชิ้น]
  • Fan Module DC Motor [1 ชิ้น]
  • OLED I2C [1 ชิ้น]

เครื่องมือที่ใช้ในการพัฒนา💨

  • Hardware - ArduinoIDE Board Manager https://dl.espressif.com/dl/package_esp32_index.json
  • Board: Node32s
  • Library: WiFi.h, WebSocketClient.h, ArduinoJson.h, HTTPClient.h, Servo.h
  • Backend - Visual studio code
    • Framework: Nest.js
    • Database: MongoDB Atlas
    • Library: websocket, http, mongoose
  • Frontend - Visual studio code
    • Framework: ReactJS และ unit tested ด้วย Jest และ Enzyme
    • Library: axios, Redux, SCSS modules, FontAwesome

ลักษณะการทำงาน💨

เป็นแบบจำจองบ้านผ่านการทำงานโดยอัตโนมัติผ่านโมดูลต่างๆ - Smart Curtain: จะใช้LDRในการวัดความสว่างของแสงไฟและใช้Servo ในการช่วยเปิดปิดผ้าม่าน - Auto Fan: จะใช้ DHT 22 ในการวัดอุณหภูมิภายในห้อง และใช้พัดลมที่ปรับความเร็วได้ตามอุณหภูมิโดยอุณหภูมิที่พัดลมจะปรับความเร็วในช่วงที่กำหนดไว้เท่านั้น - Smart Light: จะใช้ PIR ในการตรวจจับการเคลื่อนไหวของคนที่อยู่ภายในห้องแต่ละห้อง เมื่อเจอLEDก็จะทำงาน - Smoke Detector: MQ-2 Smoke Gas Sensor ในการตรวจจับควันโดยรอบหากพบควันจะมีเสียงแจ้งเตือนโดย Active Buzzer Module - Display: จะใช้จอ LEDในการแสดงข้อมูลในส่วนของ Room 1, Room 2, Room 3 คอยแสดงสถานะ LED แสดงค่าควันโดยรอบ แสดงสถานะผ้าม่านที่เปิดปิด และค่าอุณหภูมิห้อง อีกทั้งยังแสดงค่าทั้งหมดนี้ขึ้นไปทาง Front end

การทำงาน💨

  • Board1 Board1 แสดงค่าบนจอLED เกี่ยวกับสถานะของเครื่องใช้ไฟฟ้าอัจฉริยะ อุปกรณ์ภายในบอร์ด: ESP32 (NodeMCU-32S) 1 เครื่อง OLED I2C 1 ชิ้น

  • Board2 Board2 ใช้สัญญาณInfraredเพื่อตรวจสอบคนเข้าออกจากห้อง และทำการเปิดปิดไฟภายในห้องอัตโนมัติ อุปกรณ์ภายในบอร์ด: ESP32 (NodeMCU-32S) 1 เครื่อง MICRO PIR 3 ชิ้น LED DIODE 3 ชิ้น

  • Board3 Board3 ทำการตรวจวัดอุณหภูมิภายในห้อง เพื่อปรับความแรงของเครื่องปรับอากาศ และเปิดปิดโดยอัตโนมัติ อุปกรณ์ภายในบอร์ด: ESP32 (NodeMCU-32S) 1 เครื่อง DHT22 1 ชิ้น Fan Module DC Motor PWM Speed Control 1 ชิ้น

  • Board4 Board4 ระบบภายในห้องครัว โดยจะทำการตรวจวัดควันไฟภายในห้อง จากนั้นทำการระบายควันออกด้วยพัดลม พร้อมด้วยระบบแจ้งเตือนภัยเมื่อมีปริมาณควันมากเกินเกณฑ์ อุปกรณ์ภายในบอร์ด: ESP32 (NodeMCU-32S) 1 เครื่อง Passive buzzer 1 ชิ้น Fan Module DC Motor 1 ชิ้น MQ-2 Smoke Gas Sensor 1 ชิ้น

  • Board5 Board5 ระบบตรวจวัดปริมาณแสง(แดด)ที่ส่องเข้ามาในห้อง และทำการเปิดปิดม่านอัตโนมัติ อุปกรณ์ภายในบอร์ด: ESP32 (NodeMCU-32S) 1 เครื่อง LIGHTSENSER 1 ชิ้น Servo 1 ชิ้น

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-30 23:08:49 โดย b6310503235
กลุ่มที่ 13 : นนท์
ปรมี สกุลตั้งมณีรัตน์
ปรัญชัย สมเกษม
กัณฑ์เพชร เตชะวิจิตรา
เทพจุฑา วรรณนิยม
ภูริณัฐ วงศ์เกษตรชัย
ชื่อโครงงาน: Smart Library
รายละเอียด:

ที่มาของโครงงาน


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

FEATURES


  1. Alert ระบบของบรรณารักษ์ เป็นระบบที่จะคอยรับแจ้งเตือนจากส่วนอื่นๆ เพื่อมาแสดงผลบนหน้าจอที่โต๊ะของบรรณารักษ์ และมีปุ่มให้สำหรับบรรณารักษ์ใช้แจ้งเตือนไปที่ห้องต่างๆ

  2. Gas detection เป็นระบบที่สามรถตรวจจับแก๊สและควันได้และเมื่อแก๊สหรือควันเกินกว่าค่าที่กำหนดไว้จะทำให้ buzzer ส่งเสียง และ หลอดไฟที่อยู่ในห้องติด เพื่อแจ้งผู้ใช้งาน

  3. Sound detection เป็นระบบที่สามรถตรวจจับเสียงได้และเมื่อเสียงเกินกว่าค่าที่กำหนดไว้จะทำให้ buzzer ส่งเสียง และ หลอดไฟที่อยู่ในห้องติด เพื่อแจ้งผู้ใช้งาน

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

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

HARDWARE


  • NodeMCU ESP-WROOM-32S [5 ตัว]
  • Electret Microphone Sound sensor Amplifier MAX4466 [2 ตัว]
  • MQ2 Smoke LPG CO Sensor Module [2 ตัว]
  • IR Infrared sensor module [2 ตัว]
  • Motion Sensor Detector Module HC-SR501 [2 ตัว]
  • Matrix keypad 4*4 [2 ตัว]
  • OLED 128x64 I2C [3 ตัว]
  • Servo motor [2 ตัว]
  • Active buzzer [2 ตัว]
  • Led [6 ตัว]
  • Botton [6 ตัว]

โดยในแต่ละบอร์ดจะมี hardware และ features ดังนี้

บอร์ดที่ 1 และ 2 ณ ทางเข้าของห้องอ่านหนังสือ

  • Feature
    • Automatic door
    • Human detection
  • Hardware
    • NodeMCU ESP-WROOM-32S [1 ตัว/บอร์ด]
    • IR Infrared sensor module หรือ Motion Sensor Detector Module HC-SR501 [2 ตัว/บอร์ด]
    • Matrix keypad 4*4 [1 ตัว/บอร์ด]
    • Button [1 ตัว/บอร์ด]
    • Servo motor [1 ตัว/บอร์ด]
    • OLED 128x64 I2C [1 ตัว/บอร์ด]

บอร์ดที่ 3 และ 4 ภายในห้องอ่านหนังสือ

  • Feature
    • Gas detection
    • Sound detection
  • Hardware
    • NodeMCU ESP-WROOM-32S [1 ตัว/บอร์ด]
    • Electret Microphone Sound sensor Amplifier MAX4466 [1 ตัว/บอร์ด]
    • MQ2 Smoke LPG CO Sensor Module [1 ตัว/บอร์ด]
    • Active buzzer [1 ตัว/บอร์ด]
    • Led [3 ตัว/บอร์ด]
    • Button [1 ตัว/บอร์ด]

บอร์ดที่ 5 ณ โต๊ะบรรณารักษ์

  • Feature
    • Alert
  • Hardware
    • NodeMCU ESP-WROOM-32S [1 ตัว]
    • OLED 128x64 I2C [1 ตัว]
    • Button [2 ตัว]

SCHEMATIC


Schematic ของ บอร์ดที่ 1,2 ทางเข้าของห้องอ่านหนังสือ

Schematic ของ บอร์ดที่ 3,4 ภายในห้องอ่านหนังสือ

Schematic ของ บอร์ดที่ 5 ณ โต๊ะบรรณารักษ์

ภาพรวมระบบ


TOOLS


  • Arduino IDE
  • Source code : https://github.com/NON-embeded/Smart-Library
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-30 21:57:53 โดย b6310503332
กลุ่มที่ 14 : Hello World
ชายนิ มิตรสาธิต
ญาตาวี สมณวัฒนา
ธีวรา มัทราช
วงรี สมุทรพูนไพศาล
ชื่อโครงงาน: Automated Home Security System
รายละเอียด:

ที่มาของโครงงาน

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

รายละเอียดโครงงาน

 โครงงานชิ้นนี้เป็นระบบรักษาความปลอดภัยภายในบ้านพักอาศัย โดยมีระบบต่างๆ ได้แก่ ระบบ Laser Fence หรือรั้วกันขโมย เป็นการนำแสงเลเซอร์มายิงรอบบ้านเพื่อตรวจผู้บุกรุก ระบบ Temperature Checking คอยตรวจสอบและแสดงผลอุณหภูมิภายในบ้าน และส่งสัญญาณเตือนเมื่ออุณหภูมิสูงเกินกว่าปกติ ระบบ Motion Sensor ที่ใช้ PIR ในการตรวจจับขโมยที่เขามาในบ้าน และช่วยเปิดไฟเมื่อเจ้าของบ้านอยู่ในบ้าน และระบบ Automatic Light ที่ช่วยเปิดปิดไฟหน้าบ้านอัตโนมัติเมื่อมีแสงสว่างไม่เพียงพอ

FEATURES

  1. Laser Fence
  2. Motion Sensor System
  3. Temperature Checking
  4. Automatic Light

หลักการโดยรวม

ระบบจะมีการทำงานร่วมกับ Line API Message เพื่อทำสั่ง ESP32 ผ่านไลน์ได้ ซึ่งเราจะสามารถกำหนด state การทำงานของระบบได้ โดยจะมี server เป็นตัวกลางที่ิเป็น middleware ระหว่าง Line API Message และ ESP32

ข้อมูลเพิ่มเติม Line API Message Doc

m9DRr1.md.jpg

Server

อุปกรณ์ที่ใช้ในแต่ละระบบ

  1. Laser Fence

    • อุปกรณ์ที่ใช้
      • NodeMCU ESP32
      • Laser Head Sensor Module KY-008
      • LDR
      • Resister 120 Ω
      • Buzzer
    • Source Code: Laser
    • Library
      • WiFi.h
      • HTTPClient.h
      • Adafruit_GFX.h
      • Adafruit_SSD1306.h
      • Wire.h
      • WiFiServer.h
      • WiFiUdp.h
      • ESPAsyncWebServer.h
    • m9XoDq.md.jpg
  2. Motion Sensor System

    • อุปกรณ์ที่ใช้
      • NodeMCU ESP32
      • PIR Sensor
      • LED
      • Resister 330 Ω
      • Buzzer
    • Source Code: Motion Sensor
    • Library
      • WiFi.h
      • HTTPClient.h
      • Wire.h
      • WiFiServer.h
      • WiFiUdp.h
      • ESPAsyncWebServer.h
    • m9n3Ly.md.jpg
  3. Temperature Checking

    • อุปกรณ์ที่ใช้
      • NodeMCU ESP32
      • Thermistor
      • Resistor 120 Ω
      • OLED
    • Source Code: Temp
    • Library
      • WiFi.h
      • WiFiClient.h
      • WiFiServer.h
      • WiFiUdp.h
      • HTTPClient.h
      • Wire.h
      • Adafruit_GFX.h
      • Adafruit_SSD1306.h
      • NTPClient.h
    • m9nTkD.md.jpg
  4. Automatic Light

    • อุปกรณ์ที่ใช้
      • NodeMCU ESP32 x1
      • LED x2
      • LDR x1
      • RESISTOR 10k Ω
      • รูป
    • Source Code: LED-LDR
    • m9VoBE.md.jpg

Source Code ทั้งหมด -> Embedded

ภาพรวมอุปกรณ์ทั้งหมด

m9r8G0.md.jpg

m9rXqZ.md.jpg

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 23:59:45 โดย b6310506528
กลุ่มที่ 15 : Embedded หัวข้อยังคิดไม่ออก
สรวิศ แสนเสนาะ
จอมภพ ลิขิตรัตนพร
ณัฐภัทร ตัณฑ์สุรัตน์
ธนพลธรณ์ เด่นสิริเดชา
ชื่อโครงงาน: Boardgame Love Letter
รายละเอียด:

ที่มาและความสำคัญ

เกม Love Letter เป็นเกมที่สนุกและสามารถส่งเสริมความสัมพันธ์ในกลุ่มเพื่อนซี้ โดยผ่านการทำกิจกรรมร่วมกัน โครงงานนี้มีเป้าหมายในการสร้างเกม Love Letter แบบอิเล็กทรอนิกส์ โดยใช้ Embedded System เพื่อนำความรู้ที่เรียนในวิชา Embedded System ไปประยุกต์ใช้ในโลกความเป็นจริง

ฟีเจอร์ที่สำคัญ

  • การเล่นเกมได้ 3 คน
  • มีจอ OLED สำหรับแสดงผลการ์ด แสดงรอบผู้เล่น แสดงสถานะต่างๆ และแสดงภาพเคลื่อนไหวตอนแพ้หรือชนะ
  • ใช้ Matrix Keypad สำหรับการกระทำของผู้เล่น
  • ใช้ ESP-Now สำหรับการสื่อสารระหว่างบอร์ด

แนวคิดและหลักการ

โครงงานนี้ใช้บอร์ด ESP32 (NodeMCU) 4 บอร์ด, จอ OLED 4 อัน และ Matrix Keypad 4*4 3 อัน เพื่อสร้างเกม Love Letter สำหรับ 3คน เกมนี้มีบอร์ดกลางที่ควบคุมการกระทำของเกม และบอร์ดผู้เล่นที่ใช้ในการติดต่อกับผู้เล่น

บอร์ดกลาง

  • บอร์ดกลางควบคุมการแจกการ์ด

  • บันทึกผลของเกม

  • สื่อสารกับบอร์ดผู้เล่นผ่าน ESP-Now

  • มี Button Switch สำหรับกดเริ่มเกมใหม่

บอร์ดผู้เล่น

  • ผู้เล่นจะเล่นเกมโดยใช้ Matrix Keypad

  • มี จอ OLED เพื่อดูการ์ดและสถานะของเกม

การสื่อสารระหว่างบอร์ดกลางและบอร์ดผู้เล่นจะใช้ ESP-Now เพื่อทำให้การสื่อสารเร็วขึ้นและไม่ต้องใช้วงจรอื่นๆ

อุปกรณ์ที่ใช้

  • ESP32 (NodeMCU) 4 บอร์ด
  • OLED จอ 4 อัน
  • Matrix Keypad 4*4 3 อัน
  • Resistor 10K ohm 1 อัน
  • Button Switch 1 อัน
  • สายไฟ, บอร์ดโปรโตไทป์ และอุปกรณ์อื่นๆ ที่ต้องการในการต่อวงจร

กฎของเกมอ้างอิงจากใน https://en.wikipedia.org/wiki/Love_Letter_(card_game)

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 15:48:52 โดย b6310503260
กลุ่มที่ 16 : poker starter pack
เจตนิพัทธ์ การุญบุญญานันท์
ศุภกร บุญช่วย
ชื่อโครงงาน: เจ้ามือเที่ยงตรง
รายละเอียด:

ที่มาและความสำคัญ

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

แนวคิดและหลักการ

หลักการจะเหมือนกับเครื่องยิงไพ่แต่มีโครงสร้างที่เรียบง่ายมากกว่า โดยจะมีกล่องสำหรับใส่ไพ่ และ ล้อสำหรับหมุนไพ่ออกจากกล่อง โดยสามารถ input เลขเข้าไปได้ 1-8 คน

การทำงานของแต่ละบอร์ด

  • บอร์ดที่ 1 จะเป็น nucleo board ส่งข้อมูล ไปยังบอร์ดที่ 2 ซึ่งเป็น node mcu ให้ทำการเพิ่มค่าจำนวนคนบนหน้าจอ OLED
  • บอร์ดที่ 2 จะเป็น node mcu ซึ่งคอยควบคุม stepper motor ให้หมุนฐานของกล่องไพ่ , servo หมุนไพ่ออกจากกล่อง, OLED แสงจำนวนคนที่ต้องการแจก

ฮาร์ดแวร์

  • NodeMCU ESP-WROOM-32S 1 บอร์ด
  • Nucleoboard L432KC 1 บอร์ด
  • Stepper moter 1 ตัว
  • Servo 1 ตัว
  • OLED 1 จอ
  • สวิตช์ 2 ตัว
  • สายไฟ
  • กล่องไม่
  • ล้อของเล่น

ซอฟต์แวร์

  • Thonny
  • Keil Studio
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2023-03-31 22:54:06 โดย b6210506780