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

01204322 Embedded Systems

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

กลุ่มที่ 1 : TCMF
ภาณุพงศ์ เจริญพร
ปพนธ์ ชุณหคล้าย
สิทธิเจตน์ วงศ์ทิชาวัฒน์
จิณณเจตน์ อจลพงศ์
ชื่อโครงงาน: Double Lock Safe Box V.2
รายละเอียด:

รายละเอียด :
ตู้เซฟที่มีระบบการล็อค 2 ชั้น
โดยชั้นแรก จะต้องเข้าสู่ระบบด้วยบัญชีผู้ใช้ใน web application เพื่อให้ได้ one-time passcode (OTP)
เพื่อนำมาปลดล็อคในชั้นที่สองด้วยการกดรหัส OTP ลงบน keypad ที่หน้าตู้เซฟ
โดยการปลดล็อค,การพยายามใส่รหัสผ่านทุกๆครั้ง,หรือการกระทำที่จะทำลายตู้เซฟ จะเก็บ log file ไว้ใน backend server
และเมื่อมีการพยายามปลดล็อคตู้เซฟที่ไม่สำเร็จ หรือ การพยายามพังทำลายตู้เซฟ
จะมีการแจ้งเตือนไปที่ user ที่ใช้งานตู้อยู่ในขณะนั้น(สิ่งของในตู้เป็นของ user คนนั้นๆ)

ที่มาของโครงงาน :
โครงงานนี้เป็นการพัฒนาต่อจาก Double Lock Safe Box เดิมในรายวิชา 01204223 Practicum for CPE
(กลุ่มที่ 4 : TCMF - https://ecourse.cpe.ku.ac.th/tpm/project/practicum-63s)
ซึ่งจะมีกลไกการทำงานที่ซับซ้อนและต่างออกไปจากเดิม
โดยมีวัตถุประสงค์ เพื่อให้สามารถฝากของวางไว้ในที่สาธารณะโดยไม่จำเป็นต้องมีคนมาเฝ้าของ
และปลอดภัยจากการถูกขโมยได้ด้วยการที่มี log file ในการย้อนดูประวัติการใช้งานตู้เซฟและระบบแจ้งเตือนให้กับ user
เมื่อมีคนมาพยายามเปิดตู้ด้วยการใส่รหัสผ่านที่ผิด หรือการพยายามพังตู้เซฟ

อุปกรณ์ :
1. ESP32 (NodeMCU-32S) [4 เครื่อง]
2. Solenoid Door Lock 12V 1A [1 ชิ้น]
3. Relay 5V [1 ชิ้น]
4. Power Adapter 12V 1A [1 ชิ้น]
5. USB Adapter 5V 2A 4 ports [1 ชิ้น]
6. Matrix Keypad 3x4 [1 ชิ้น]
7. 16x2 LCD with backlight พร้อม I2C Interface 5V [1 ชิ้น]
8. Micro switch โดยใช้ขา (COM กับ NO) [1 ชิ้น]
9. Shock sensor (Tilt digital switch) [1 ชิ้น]
10. Light blocking sensor (Motor encoder light blocking sensor) [1 ชิ้น]
11. Passive buzzer [1 ชิ้น]
12. ชุดสายไฟและ jumper wire [1 ชุด]
13. Breadboard [4 ชิ้น]
14. USB Cable (Male Type-A to Male Micro B) [4 ชิ้น]
14. โมเดลสำหรับใช้ทำเป็นตู้เซฟที่ติดตั้งกลอนประตูสำหรับ Solenoid Door Lock [1 ชิ้น]

เครื่องมือที่ใช้ในการพัฒนา :
Hardware - ArduinoIDE
Board Manager : https://dl.espressif.com/dl/package_esp32_index.json เลือก Board : Node32s
ใช้ Library : WiFi.h, HTTPClient.h, ArduinoJson.h, HardwareSerial.h,
Keypad.h by Mark Stanley, Alexander Brevig (GNU Lesser General Public License) [https://www.arduino.cc/reference/en/libraries/keypad/]
LiquidCrystal_I2C.h by Marco Schwartz [https://randomnerdtutorials.com/esp32-esp8266-i2c-lcd-arduino-ide/]
Backend
server : heroku
database : MongoDB Atlas
library: flask, flask_cors, pymongo, json, urllib.parse, hashlib, math, random, smtplib, email.message, time
Frontend
server : heroku
framework : ReactJS
library : Material-UI, formik, yup, react-router-dom, axios

ลักษณะการทำงาน :
- เมื่อเปิดเครื่อง ตู้เซฟจะทำการสื่อสารกับ Backend server เพื่อรอให้พบว่ามี user ขอเข้าสู่ระบบใน web application แล้วทำการขอรหัส OTP มาแล้ว
- หลังจากนั้นตู้เซฟจะเข้าสู่สถานะที่รอการใส่รหัส OTP ด้วย Keypad ที่หน้าตู้เซฟ
- เมื่อใส่รหัส OTP แล้ว จะนำรหัสที่ใส่มาส่งไปตรวจสอบกับ Backend Server แล้วรับผลตรวจกับมาตัดสินใจทำงานต่อไป
- หากรหัสผ่านถูกต้อง Solenoid lock จะปลดล็อค แต่ถ้ารหัสผ่านผิด จะต้องใส่รหัสผ่านใหม่อีกครั้งจนกว่าจะถูกต้อง ทุกครั้งที่ใส่รหัสผ่านผิดจะมีเมลส่งไปแจ้ง user
- เมื่อตู้เซฟถูกปลดล็อคแล้ว ผู้ใช้จะต้องดึงประตูออก เพื่อให้ตู้เซฟ เข้าสู่สถานะรอการปิดประตู
- หลังจากนั้น ผู้ใช้งานจะปิดประตู ซึ่งจะทำให้ Light Blocking Sensor ทำงาน แล้ว Solenoid Lock จะล็อคกลอนประตูตู้เซฟ
- ในขณะที่ตู้เซฟอยู่ในสถานะล็อคแล้วกำลังรอการเปิดในครั้งถัดไป หากมีของวางอยู่ในตู้แล้วมีการพยายามเขย่าหรือทุบตู้อย่างรุนแรงจะมีการส่งเสียงร้องจาก passive buzzer และ ทุกครั้งที่มีเหตุการณ์เกิดจะมีเมลส่งไปแจ้ง user

การใช้งาน :
- บริเวณหน้าตู้เซฟจะมี QR code ที่มี url ไปยังหน้า web application เพื่อทำการเข้าสู่ระบบ
- ในการใช้งานครั้งแรกจะต้องทำการลงทะเบียน สร้างบัญชีโดยใช้ email address ที่หน้า web application
- หลังจากลงทะเบียนแล้ว สามารถเข้าสู่ระบบและขอรหัส OTP ได้ทันที
- นำรหัส OTP ที่ได้มาใส่ด้วยการกด Keypad ที่หน้าตู้เซฟให้ถูกต้อง
- เมื่อจอ LCD แจ้งว่าประตูปลดล็อคแล้วและได้ยินเสียงการทำงานของ Solenoid Lock จะสามารถเปิดประตูออกได้
- ทำการนำของเข้าตู้เซฟ หรือ นำของออกให้เรียบร้อย แล้วทำการปิดประตูตู้เซฟ
- เมื่อเลิกใช้งานแล้วจะต้องทำการกด deactivate ตู้เซฟที่หน้า web application เพื่อให้ผู้อื่นเข้าใช้งานตู้ได้ โดยจะต้องนำของออกจากตู้แล้ว

การทำงานของแต่ละ NodeMCU-32S :
Board 1 : ควบคุมการทำงาน Keypad, ติดต่อกับ Backend Server และ ติดต่อกับ Board 3 ด้วยคู่สาย Serial (Tx,Rx)
(Board 1 ใช้ Libraries : WiFi.h, HTTPClient.h, ArduinoJson.h, HardwareSerial.h และ Keypad.h)
Board 2 : ควบคุมการทำงาน Solenoid Door Lock ด้วย Relay, ควบคุมการทำงาน Light blocking sensor, ติดต่อกับ Backend Server และ ติดต่อกับ Board 4 ด้วยคู่สาย Serial (Tx,Rx)
(Board 2 ใช้ Libraries : WiFi.h, HTTPClient.h, ArduinoJson.h และ HardwareSerial.h)
Board 3 : ควบคุมการทำงาน LCD ด้วย I2C Interface และ ติดต่อกับ Board 1 ด้วยคู่สาย Serial (Tx,Rx)
(Board 3 ใช้ Libraries : HardwareSerial.h และ LiquidCrystal_I2C.h)
Board 4 : ควบคุมการทำงาน Micro switch, Shock sensor, Passive buzzer และ ติดต่อกับ Board 2 ด้วยคู่สาย Serial (Tx,Rx)
(Board 4 ใช้ Libraries : HardwareSerial.h)

เทคนิคที่ใช้ :
- ใช้แนวคิดเลียนแบบ state machine ในการควบคุมสถานะของตู้เซฟให้แบ่งการทำงานเป็นช่วงตามลำดับเหตุการณ์
- การแบ่งหน้าที่ให้มีส่วนติดต่อกับ Backend Server ให้น้อย แล้วใช้การติดต่อด้วยสาย Serial ในการส่งต่อข้อมูลที่ได้จาก Server แทน เพื่อลดภาระของ Server
- มีการใช้ Relay เพื่อควบคุมอุปกรณ์ที่มีย่านแรงดันไฟฟ้าการทำงานที่สูงกว่าที่ NodeMCU-32S จะกำเนิดแรงดันได้ (Solenoid Lock ทำงานที่ 12V แต่ NodeMCU-32S จ่ายแรงดันสูงสุดที่ 5V)
- ใช้ multitasking ของ NodeMCU-32S ใน Board 2 เพื่อทำ HTTP request POST method ระหว่าง API ในการแจ้งสถานะการวางวัตถุ และ API ในการแจ้งเตือนการถูกทุบตู้เซฟ
- ใช้ multitasking ของ NodeMCU-32S ใน Board 4 เพื่อการตรวจสอบสถานะการวางของวัตถุบน micro switch และ ตรวจสอบการทำงานของ shock sensor
- ใช้ timer ของ NodeMCU-32S ในการ debounce micro switch ของ Board 4
backend
- มีการใช้ urllib.parse เพื่อให้เป็นไปตามมาตรฐาน RFC 1808 ( https://datatracker.ietf.org/doc/html/rfc1808.html )
- มีการแยกส่วนที่เป็นความลับ เช่น username, password, salt ออกจาก source code หลัก
- มีการใช้ Simple Mail Transfer Protocol ( SMTP ) ในการส่ง email ให้ user
- มีการเข้า encrypt password ด้วยวิธีพิเศษ แม้ password input จะเหมือนกัน แต่จะได้ output ออกมาต่างกัน นอกจากนี้ยังมีการเต็ม salt ก่อนทำการ encrypt เพื่อให้มีความปลอดภัยมากยิ่งขึ้น
Frontend
- ใช้ formik เพื่อรับ input จาก user ได้แก่ email, username, password, OTP และใช้ yup ในการ validation
- ใช้ axios เพื่อทำ HTTP Request รับ/ส่งข้อมูลกับ Backend
- ใช้ React State Hook ในการเปลี่ยน State ของตัวแปรต่างๆที่จะนำมาแสดงบน UI
- ใช้ react-router-dom ในการกำหนด path ของหน้าเว็บเพจต่างๆ และทำ navigation
- ใช้ Material UI ในการตกแต่งหน้าเว็บไซต์

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 11:44:51 โดย b6210503691
กลุ่มที่ 2 : คณะฉุนเฉียว
ปัณฑ์ชนิต เจริญสุทธิกุล
พชรพล มั่งคั่ง
พุฐวันต์ ฮกชุน
ธนิก จงตระกูล
ชื่อโครงงาน: เฮือนกระจกอัตโนมัติของฉุนเฉียว
รายละเอียด:

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

อุปกรณ์ที่ใช้:
- พัดลมระบายอากาศ 12v ไม่เกิน 5 นิ้ว 2 ชิ้น
- รีเลย์ 12v 6 ชิ้น
- ปั้มน้ำ 12v 2 ชิ้น
- วัดอุณหภุมิความชื้นในอากาศ DHT11 2 ชิ้น
- วัดอุณหภุมิความชื้นในดิน 2 ชุด
- ไฟ Led แบบเส้น 12v 1เมตร สีส้ม 2 ชุด
- เซ็นเซอร์วัดระดับน้ำ pnp 2 ชิ้น
- แบต 12v 10amp 2 ชิ้น

ซอฟท์แวรที่ใช้:
- Arduino
- Python (Flask, Pymongo, Discord.py, LINEBOT.py)

เทคนิค:

ระบบหลังบ้านที่เราเลือกใช้จะพัฒนาด้วย Python โดยเสริมการใช้ Library ของ Flask ในการทำเซิร์ฟเวอร์ Backend และ LINE bot รวมถึงการใช้ Discord.py ในการพัฒนา Discord bot ซึ่งมีการจัดเก็บข้อมูลของระบบด้วย pymongo และรันเซิร์ฟเวอร์ HTTP ด้วย ngrok เพื่อให้อุปกรณ์สามารถเชื่อมต่อข้อมูลถึงกันได้

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

ในส่วนของฮาร์ดแวร์ในโประเจคนี้จะมีทั้งส่วนเซนเซอร์ที่ทำงานบนระบบไฟ 5v ที่สามารถต่อตรงกับบอร์ดได้โดยตรง และระบบไฟ 12V ที่ต้องแยกวงจรและควบคุมด้วย relay อีกที โดยบอร์ดที่ใช้สำหรับโประเจคนี้จะประกอบไปด้วย ESP32 3 ชิ้น และ ESP8266 1 ชิ้น

ประกอบด้วยเซนเซอร์และอุปกรณ์ 3 กลุ่ม ประกอบด้วย

1. กลุ่มที่เกี่ยวกับการควบคุมการรดน้ำจะเชื่อมต่อกับบอร์ด ESP32 2 บอร์ด จะมีเซ็นเซอร์วัดการมีอยูของน้ำแบบ PNP ต่อกับบอร์ด ESP32 และเซนเซอร์วัดความชื้นภายในดินซึ่งจะต่อกับบอร์ด ESP32 อีกบอร์ดหนึ่ง เพื่อลดปัญหาเรื่องความยาวสายและความกังวลเรื่องการกันน้ำของสายไฟ โดยมี Backend เป็นสื่อกลางระหว่างกัน โดยเมื่อมีความชื้นในดินที่ต่ำกว่าค่าที่กำหนด หรือมีการสั่งให้รดน้ำต้นไม้ ระบบจะจะรออัพเดทการมีน้ำล่าสุดให้อพเดทที่ Backend เสียก่อน เมื่อพบว่ามีจึงจะทำการสั่ง relay ของปั๊ม 12 v เพื่อรดน้ำ

2. กลุ่มที่เกี่ยวกับการควบคุมอากาศและอุณหภูมิจะต่อกับบอร์ด ESP32 จะมีเซนเซอร์วัดความชื้นในดิน และ Relay ที่ต่อควบคุมการเปิดปิดพัดลม 12 v โดยเมื่อมีคำสั่งให้เปิดหรือปิดพัดลมตัวพัดลมจะเปิดหรือปิดค้างไว้ตามคำสั่งจนกว่าจะเปลี่ยนการทำงานเป็นแบบออโต้ จึงจะเปิดพัดลมเมื่ออุณหภูมิสูงกว่าที่ตั้งไว้

3. กลุ่มที่เกี่ยวข้องกับการให้แสงสว่างกับต้นไม้ต่อกับบอร์ด ESP8266 จะมีส่วนประกอบเป็น Relay ที่ต่อกับไฟ LED แบบเส้น 12 v ซึ่งจะเปิดปิดตามเวลาที่ตั้งไว้โดยจะรับค่าเวลาปัจจุบันจาก Backend server

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 20:09:28 โดย b6210505198
กลุ่มที่ 3 : กวิ้นบิน
ชัญญานุช โอฬารถาวรกุล
มัทวัน จิระเจริญวงศ์ษา
อภิวรรธน์ สุขถาวรประดิษฐ์
สิรภัทร อินทร์จันทร์
ชื่อโครงงาน: กวิ้นบิน ตู้กดไอติมเม็ดอัตโนมัติ
รายละเอียด:

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

อุปกรณ์ :
- Servo 2 ตัว → ใช้ในการเปิดปิดให้ไอติมไหลลงมา
- LDR 1 ตัว → ตรวจจับแก้ว
- Ultrasonic 2 ตัว → ตรวจปริมาณไอติม
- OLED 1 ตัว → แสดงปริมาณไอติมแต่ละรสที่เหลือ
- Button 3 ตัว → ใช้ในการกดให้ไอติมไหลลงมา
- Jumper wire
- ESP32 4 ตัว
- ตัวต้านทาน

Software :

- Arduino IDE
- PlatformIO

Library list in ESP32 :

- Adafruit_GFX.h [URL : https://github.com/adafruit/Adafruit-GFX-Library]
- Adafruit_SSD1306.h [URL : https://github.com/adafruit/Adafruit_SSD1306]
- WiFi.h
- Arduino.h
- Arduino_JSON.h
- ESPAsyncWebServer.h [URL : https://github.com/me-no-dev/ESPAsyncWebServer]
- AsyncTCP [URL : https://github.com/me-no-dev/AsyncTCP]
- esp_now.h
- ESP32Servo.h
- Debounce.h

เทคนิค :
บอร์ด A ใช้ LDR วัดแสงว่ามีแก้วมาวางหรือยัง ถ้าค่าที่วัดมีค่าเป็น 0 (ศูนย์) หมายความว่ามีแก้วมาวางเรียบร้อยแล้ว จากนั้นจึงจะส่งข้อมูลไปให้บอร์ด B โดย Protocol ที่ใช้ติดต่อสื่อสารระหว่างบอร์ดคือ ESP-NOW โดยใช้ Mac address ของ ESP32-WROOM-32 มี Struct เพื่อเก็บค่าที่ได้รับจากอุปกรณ์ และมี Error checking ว่าปลายทางได้รับข้อมูลหรือไม่ โดยแสดงผลลัพธ์การส่งใน Serial Monitor ว่า Delivery Failed หรือ Delivery Success
บอร์ด B จะใช้ ultrasonic ในการวัดปริมาตรของไอติมในตู้กดไอติม และทำการคำนวณออกมาเป็นเปอร์เซ็น แล้วแสดงบนจอ OLED ว่ามีไอติมในตู้อีกกี่เปอร์เซ็น โดยถ้าปริมาตรไอติมต่ำกว่าเปอร์เซ็นที่กำหนด ก็จะแสดงคำว่า Sold out ในจอ OLED ต่อมาบอร์ด B จะส่งข้อมูลปริมาตรไอติมและสถานะในการกดไอติมว่าสามารถกดได้แล้วหรือยัง ไปหาบอร์ด C
บอร์ด C จะมีปุ่มให้กดเลือกรสไอติม(ใช้เทคนิค debouncing) โดยมี 3 ปุ่มคือ รสชาติที่ 1 รสชาติที่ 2 และรสชาติที่ผสมกัน ซึ่งเมื่อกดปุ่มระบบจะทำการเช็คค่าที่ได้รับมาจากบอร์ด B ว่าตรงตามเงื่อนไขหรือยัง โดยเช็คค่าปริมาตร และสถานะในการกดไอติม ถ้าตรงตามเงื่อนไข มอเตอร์ของไอติมรสนั้นก็จะทำงาน แล้วไอติมก็จะไหลลงมาจากตู้ แล้วบอร์ด C ก็จะส่งข้อมูลปริมาตรไอติมให้กับบอร์ด D เพื่อไปแสดงผลบนหน้าเว็บ ซึ่งหน้าเว็บจะอัปเดตอัตโนมัติทุกครั้งที่บอร์ด C ส่งข้อมูลใหม่มา
NodeMCU-32s ใช้ C++ และ Arduino IDE

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-07 16:17:57 โดย b6210500153
กลุ่มที่ 4 : ปลากระพงทอดน้ำปลา
กัณตพงศ์ ปรีดิพันธุ์
ศุภวิชญ์ พัฒนสิน
จักรพัตฒ์ พิกุลแย้ม
ภวัต ถิรศักดิ์ธนา
นพรุจ ศิริรจนากร
บุญศักดิ์ สุริสาร
ชื่อโครงงาน: Premium car parking
รายละเอียด:

งานนี้จะเป็นแบบจำลองสำหรับลานจอดรถที่เราสามารถจองได้และระบุวันเวลาสำหรับการใช้งานลานจอดเป็น option สำหรับ คนที่เป็นสมาชิค VIP ของทางลาดจอด และ มีระบบลาดจอดแบบปกติที่มีจอแสดงผลที่จอดที่ว่างคงเหลือ และมีระบบไม้กั้นที่แบ่งสำหรับโซน VIP MEMBER และโซนปกติ

Front-end ของเว็บไซต์ใช้ react ในการเขียนและประกอบ 2 pages คือหน้า Home และ Login โดยจะเป็นระบบการจองคิวโดยให้สมาชิกจองคิว
และเวลาผ่านทางเว็บไซต์ และ RIFD Tag ของลูกค้าก็จะเข้าไปในระบบและลูกค้าจะสามารถแสกนผ่าน Sensor ได้ในเวลาที่ลูกค้าจองไว้
website: https://premiumparking-snapper.netlify.app/

Back-end ทางเราใช้ python ในการเขียนโดยผ่าน flask และใช้ firebas_admin เพื่อใช้ในการติดต่อกับ Database
ซึ่ง Back-end เข้าไปมีส่วนร่วมกับการติดต่อระหว่าง Hardware กับ Front-end โดย backend ใช้ในการส่งระหว่าง Hardware และ Database
กับ Database และ Frontend โดยซึ่งประกอบไปด้วย library
- flask
- firebase_admin
- json
- datetime

Database and Storage: Firebase

ในส่วนของ Hardware เราใช้ Arduino ในการเขียนโดยอุปกรณ์ที่ใช้จะประกอบไปด้วย
- Esp32 wroom 32 *6
- Ir sensor *14
- RFID *2
- Servo motor *2
- Flame Sensor *2
- Buzzer *2

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 17:05:12 โดย b6210500099
กลุ่มที่ 5 : ไม่ใช้ไฟฟ้า
ปาริชาติ จันทะไทย
นัฐวุฒิ นาพรหม
สมฤทัย อ่อนอำไพ
สิรภพ ชยเจตน์
ณัฐญาภรณ์ คูณวัฒนาพงษ์
ชื่อโครงงาน: Home Center
รายละเอียด:

เมื่อ Covid ทำให้การสังสรรค์นอกบ้านเป็นเรื่องยาก ‘Home Center’ จะช่วยสร้างคาราโอเกะและเกมเต้นสำหรับนักเต้นเท้าไฟ เพื่อให้คุณสนุกได้แม้อยู่แต่ที่บ้าน จะร้องเล่นคนเดียวหรือร้องเต้นกับเพื่อนก็เวิร์ค! เพราะเรามีการแยกโหมดให้เลือกได้ทั้งร้องทั้งเต้น ไม่ว่าจะสายร้องจ๋าหรือสายเต้นก็สนุกได้หลากหลายรูปแบบ และยังมีฟังก์ชันไฟวิบวับหลากสีเพิ่มความสนุกให้คุณรู้สึกเหมือนอยู่ในปาร์ตี้ของจริงโดยไม่ต้องไป Game Center …ด้วย Home Center

ภาพรวม :
เราจะมีโหมดให้คุณเลือกว่าอยากจะร้อง เต้น หรือทั้งร้องและเต้น จากนั้นเลือกเพลงที่ต้องการผ่านหน้า web application โดยหน้าจอจะแสดงผลเนื้อเพลงและสัญลักษณ์กำหนดทิศทางการเต้น มาสคอส ‘น้องจราจร’ ของเราจะมีจอ OLED บอกข้อความสถานะการเต้นว่าคุณโยกเท้าถูกทิศทางหรือไม่ ไฟวิบวับสร้างบรรยากาศคาราโอเกะสำหรับนักเต้นเท้าไฟ ปุ่มกดควบคุมการเล่นเพลงระหว่างเกม และยังมี ultrasonic sensor ซ้ายและขวา เพื่อตรวจจับเท้าของผู้เล่นว่าขยับทิศทางถูกต้องตามที่หน้าจอกำหนดหรือไม่ โดยมี LED คอยบอกสถานะถูก/ผิด สีเขียวถูกต้อง สีแดงผิด

Feature :
- เลือก mode การเล่นได้ 3 รูปแบบ คือ 1) โหมดร้องเพลง 2) โหมดเต้น 3) โหมดร้องและเต้น
- เลือกเพลงได้ตามหมวดหมู่ ประกอบด้วยเพลงไทยและเพลงสากล
- รองรับการใช้งาน application ทั้งแบบนั่งเล่นโดยใช้ keyboard และยืนเต้นโดยใช้ ultrasonic sensors
- เชื่อมต่อ application กับ hardware โดยตรงผ่าน serial port ด้วยปุ่ม connect บนเว็บไซต์
- สามารถปรับระดับความยากง่ายได้ 3 ระดับ
- ตัวเกมมี timer นับถอยหลังบอกความยาวเพลง มีฟังก์ชันคำนวณคอมโบและคะแนนจาก accuracy ของ input
- ไฟวิบวับสร้างบรรยากาศปาร์ตี้ เปลี่ยนแปลง state ของไฟตามสถานะเกม
- สามารถเล่น/หยุด/ยกเลิกเกมระหว่างเล่นได้จาก hardware

การใช้งาน :
1.เข้าหน้าเว็บไซต์ home center แล้วกดปุ่ม start
2.เลือก mode ที่ต้องการเล่น
3.เลือกเพลงที่ต้องการเล่น แล้วกดปุ่ม start
4.เชื่อมต่อกับ sensor ฝั่งซ้ายและฝั่งขวาโดยกดที่ปุ่ม connect แล้วเลือก com port ที่ต้องการ
5.เลือกระดับความยาก-ง่าย แล้วเริ่มเล่นเกมโดยกดปุ่ม start
6.ระหว่างเล่นสามารถหยุด/เริ่ม/ยกเลิกเกมได้โดยใช้ switch ต่าง ๆ บน hardware
7.เมื่อเล่นเสร็จแล้วสามารถเลือกเล่นใหม่ กลับไปหน้าเลือก mode หรือกลับไปหน้าเลือกเพลงได้ตามต้องการ

เทคนิคที่ใช้ :
- ใช้ Web Serial API ในการรับ input และส่งสถานะการกดถูก-ผิด แบบ real time ระหว่าง web application กับ hardware
- รับและส่งข้อมูลกับ server ผ่าน HTTP Request
- ใช้ react-router-dom ในการทำ navigation ไปยัง path ต่าง ๆ ของเว็บไซต์
- กำหนด timing ของจังหวะ notes และเนื้อร้องของแต่ละเพลง รวมถึงธีมสีในรูปแบบ json

เครื่องมือที่ใช้ในการพัฒนา :
Hardware
- IDE - ThonnyIDE (สำหรับ ESP32), Mbed Studio (สำหรับ stm32)
- Library : ssd1306, hcsr04, NeoPixel, Serial
Backend
- server : heroku
- database : MongoDB
- framework: NestJS
- library: MongooseModule
Frontend
- framework: ReactJS
- library: Web Serial API, react-router-dom

อุปกรณ์ :
1. ESP32 (NodeMCU-32S) [5 เครื่อง ]
2. STM32 [2 เครื่อง ]
3. Red LED [2 ตัว ]
4. Green LED [2 ตัว ]
5. 10k Ohm Resistor [4 ตัว]
6. USB Adapter 5V 2A 5 ports [1 ชิ้น]
7. USB Cable (Male Type-A to Male Micro B) [7 ชิ้น]
8. OLED Display Module 128X64 I2C SSD1306 [3 ชิ้น]
9. button switch 4 ขา [ 3 ชิ้น ]
10. NeoPixel Ring 16 WS2812 RGB LED [ 1 ชิ้น ]
11. Ultrasonic Sensor HCSR04 [2 ตัว]
12. Breadboard [7 ชิ้น]
13. ชุดอุปกรณ์บัดกรี [1 ชุด]
14. โมเดลสำหรับเครื่อง Home Center [1 ชิ้น]

คลิปสาธิตการเล่นแบบ Full Gameplay : https://youtu.be/ifgi9XOr9tk

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 23:39:12 โดย b6210503837
กลุ่มที่ 6 : Reject Embedded return to Practicum
ชยานันท์ วิรัชนานันทกิจ
ไตรแมน เพิ่มหรรษา
ศรัณย์ภัทร จันทร์วัฒน์ศิริ
ศุภณัฐ จันทร์ดี
ชัยโย ชื่องาม
ฐิติศักดิ์ ศรีรัชตเมธาวิน
ชื่อโครงงาน: Alarm To Heaven
รายละเอียด:

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

รายละเอียด อุปกรณ์:
- Board 1 ESP + OLED + BUZZER -> จอแสดงเวลา / ตั้งปลุก
- Board 2 ESP + BOTTON*9 -> ปุ่มกดสำหรับตั้งปลุก / input game
- Board 3 ESP + OLED -> เพื่อป้อนข้อมูลเกม
- Board 4 , 5 , 6 STM*3 + OLED -> สำหรับแสดงตัวเลขสำหรับโจทย์บอร์ด 3

clock pad:
[HH] [MM] [Confirm] [Cancel]

game pad:
[number_X] [number_Y] [number_Z] [finish] [reset]

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 17:12:34 โดย b6210500501
กลุ่มที่ 7 : Yellow
พันธุ์พุฒิ แสงกิจอมร
วรเมศ ผดุงเจริญ
สรวิศ ศักดิ์ศรีเลิศคำ
พชร ภูวประภาชาติ
อธิภัทร ปานคง
อิทธิวัฒน์ แม่นปืน
ชื่อโครงงาน: เสาไฟ หล่อ เท่
รายละเอียด:

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

อุปกรณ์:
1. NodeMCU-32S (7 บอร์ด)
2. Breadboard (4 ชิ้น)
3. PMS3003 PM2.5 Sensor (2 ชิ้น)
4. SSD1306 OLED (2 ชิ้น)
5. Yellow LED 5mm (2 ชิ้น)
6. LDR Photoresistor Sensor Module (2 ชิ้น)
6. Red LED 3mm (1 ชิ้น)
7. Micro Switch (1 ชิ้น)
8. ตัวต้านทาน (4 ชิ้น)
9. สายไฟ

Software:
1. Arduino IDE

Include Library List:
1. Adafruit_BusIO
2. Adafruit_GFX_Library
3. Adafruit_SSD1306
4. ArduinoJson
5. Esp32-SoftwareSerial-master

การใช้อุปกรณ์ในแต่ละเสาไฟ:
1. เสาไฟปกติ (เสา B)
- Breadboard (1 ชิ้น)
- NodeMCU-32S (2 บอร์ด)
- PMS3003 PM 2.5 Sensor (1 ชิ้น)
- SSD1306 OLED (1 ชิ้น)
- Yellow LED 5mm (1 ชิ้น)
- ตัวต้านทาน (1 ชิ้น)
- LDR Photoresistor Sensor Module (1 ชิ้น)
2. เสาไฟสำหรับทางข้ามถนน (เสา A)
- Breadboard (2 ชิ้น)
- NodeMCU-32S (3 บอร์ด)
- PMS3003 PM 2.5 Sensor (1 ชิ้น)
- SSD1306 OLED (1 ชิ้น)
- Yellow LED 5mm (1 ชิ้น)
- LDR Photoresistor Sensor Module (1 ชิ้น)
- Red LED 3mm (1 ชิ้น)
- Micro Switch (1 ชิ้น)
- ตัวต้านทาน (3 ชิ้น)
3. ตัวศูนย์กลางแลกเปลี่ยนข้อมูลระหว่างเสาไฟกับเว็บไซต์
- Breadboard (1 ชิ้น)
- NodeMCU-32S (2 บอร์ด)

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 00:40:18 โดย b6210506950
กลุ่มที่ 8 : ตั๋วติ๋ม
ณัชนนท์ ดอกไม้กุล
ธนินทร์ อุดมธนกิจ
ธีรธัช พิศาลสินธุ์
นทวัจน์ เมี้ยนละม้าย
แผ่นดิน ไล้เลิศ
ศิรพัฒน์ ไตรเสนีย์
ชื่อโครงงาน: Smart home
รายละเอียด:

โมเดลบ้านจำลองซึ่งใช้อุปกรณ์ต่างๆสร้างระบบอัตโนมัติมาช่วยอำนวยความสะดวกต่างๆของคนในบ้าน

1.password lock
รับอินพุท 0-9 เชื่อม backend แล้วเช็ค แล้วส่งค่ากลับมา
2.open the door
ถ้าถูก มอเตอร์หมุนเปิดประตู
3.temperature meter
temperature ส่งข้อมูลเข้า back ตรวจทุก10วิ
4.buzzer
buzzer เมื่ออุณหภูมิเกิน
5.light sensor, on/off
sensor แสง ส่งข้อมูลลง back เปิดปิด LED ถ้ามืด
6.screen lcd
แสดงผลเมื่อpassword ถูก/ผิด และแสดงอุณหภูมิปัจจุบัน

อุปกรณ์ที่ใช้
1.4*4 matrix module
2.9g servo
3.future board
4.temp sensor
5.buzzer
6.light sensor
7.LED
8.screen lcd
9.NUCLEO L432KC

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-09 21:13:36 โดย b6210503616
กลุ่มที่ 9 : BikeBineBoftBelle
กฤษณพงศ์ กิตติธรรมโม
ชัญญา แตงเงิน
ภคินี ศิริสุขโภคา
อภิชญา จารุทิกร
ชื่อโครงงาน: Smart Bike Park
รายละเอียด:

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

ที่มาของโครงงาน:
การที่นิสิตม.เกษตรใช้จักรยานกันเป็นจำนวนมาก แต่ในขณะที่ที่จอดมีจำนวนจำกัด ทำให้ต้องเสียเวลาในการหาที่จอด แล้วจักรยานที่จอดไว้ก็ได้มีการสูญหายเป็นจำนวนมาก พวกเราจึงได้คิดโปรเจ็คนี้ขึ้นมา

อุปกรณ์:
- ESP32 (NodeMCU-32S) x4
- LED x2
- Switch x9
- OLED x1
- LDR x2
- Survo x2
- Buzzer x1

Software:
- Arduino IDE

Library ที่ใช้:
- Arduino.h
- ESP32Servo.h
- esp_now.h
- WiFi.h
- Debounce.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h

การทำงานของแต่ละ Board:
- Board 1: ควบคุมการแสดงผลบนหน้าเว็บ, ติดต่อกับ Board 3 โดยการรับค่าสถานะของ LDR
- Board 2: ควบคุมการทำงาน Survo และ Buzzer, มี Switch สำหรับการดีบัก , ติดต่อกับ Board 3 โดยการรับค่าสถานะของ LDR และติดต่อกับ Board 4 โดยการรับค่าสถานะการใส่รหัสผ่าน
- Board 3: ควบคุมการทำงาน LED และ LDR, ติดต่อกับ Board 1 และ Board 2 โดยการส่งค่าสถานะของ LDR
- Board 4: ควบคุมการทำงาน Switch และ OLED, ติดต่อกับ Board 2 โดยการส่งค่าสถานะการใส่รหัสผ่าน

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 23:54:41 โดย b6210503896
กลุ่มที่ 10 : BongBong
สรวิชญ์ ทรัพย์มี
ชลันธร เอ็งอุทัยวัฒน์
ณัฐชนน จันทรศัพท์
ธนพล โอวาทวรวรัญญู
นิค กัลระโห ซเทริฟ
ชื่อโครงงาน: KeyBong
รายละเอียด:

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

รายละเอียดของผลงาน
ถุงมือคีย์บอร์ดแบบwireless โดย ถุงมือข้างแรกใช้ Flex Sensor และ pattern ในการระบุตัวอักษรที่จะพิมพ์ ถุงมืออีกข้างใช้ปุ่มในการกดเพื่อสั่งการทำงานฟังชั่นพิเศษ

อุปกรณ์ที่ใช้
- STM32 Nucleo 3 ตัว
- ESP32 4 ตัว
- ปุ่ม Switch 5 ตัว
- OLED 3 ตัว
- Flex sensor 5 ตัว
- ตัวต้านทานขนาด 330 โอมห์ 5 ตัว
- ถุงมือผ้า 1 คู่

การทำงาน
- ผู้ใช้มือข้างเเรกทำการงอนิ้วลงเป็น pattern เพื่อให้ Flex Sensor อ่านค่าตัวอักษรที่ต้องการพิมพ์ เเล้วใช้มืออีกข้างกดปุ่มบนถุงมือข้างนั้นเพื่อสั่งการทำงานฟังชั่นพิเศษ เช่น ยืนยันการพิมพ์ backspace Enter หรือ Capslock เป็นต้น หลังกดยืนยันการพิมพ์จากนั้นบอร์ด esp32 จะส่งสัญญาณไปให้ esp32 ที่อยู่กับถุงมือที่งอนิ้วให้ส่งตัวอักษรไปให้บอร์ดที่สื่อสารกับคอมพิวเตอร์ด้วยSocket เพื่อดำเนินการพิมพ์
- หากต้องการสั่งการทำงานฟังชั่นพิเศษ เช่น backspace enter หรือ Capslock เมื่อกดปุ่มที่ระบุถึงฟังชั่นนั้น ๆ ข้อมูลจะถูกส่งไปให้บอร์ดที่สื่อสารกับคอมพิวเตอร์ด้วยSocket เพื่อดำเนินการ

Tools ที่ใช้
Software ที่ใช้จะพัฒนาผ่าน Mbed studio ด้วยภาษา C++ , Thonny ด้วยภาษา Python และ มีการใช้ Socket(Python) เเละ Server(Python)เพื่อสื่อสารกับคอมพิวเตอร์

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 14:45:08 โดย b6210503594
กลุ่มที่ 11 : ขยะ
ชนม์ชนัส ทับเที่ยง
นภสินธ์ แสงทอง
ภาสวิชญ์ สังข์ธูป
จิรัฏฐ์ หวังมั่น
ปกป้อง นพคุณ
ชื่อโครงงาน: ถังขยะอัจฉริยะ
รายละเอียด:

Feature
1. วัดระดับของขยะที่ทิ้งไปและแสดงผลให้เข้าใจอย่างชัดเจน
2. สามารถเปิดฝาถังขยะโดยไม่ต้องสัมผัสโดยตรง
3. ควบคุมการเคลื่อนที่ของถังชยะผ่าน LINE
4. ควบคุมการเคลื่อนที่ของถังขยะผ่านปุ่มควบคุม

Hardware
1. Micro Servo 2 ชิ้น
2. ชุดล้อและมอเตอร์ 2 ชุด
3. Motor driver L298N 1 ชิ้น
4. รางถ่านพร้อมถ่าน 2 ก้อน
5. ตัวต้านทานขนาด 10 k โอห์ม 10 ชิ้น
6. Ultrasonic sensor 2 ชิ้น
7. 10 Segment LED 1 ชิ้น
8. OLED display 1 ชิ้น
9. Tracking module 2 ชิ้น
10. NodeMCU ESP32 4 ชิ้น
11. NUCLEO-L432KC 1 ชิ้น

การทำงาน
ส่วนที่ 1
- ใช้ Tracking module ตรวจจับเส้นบนพื้นเพื่อส่งสัญญาณไปให้ motor และชุดล้อทำงานผ่านบอร์ด NodeMCU ESP32 โดยสามารถควบคุมการเคลื่อนที่ของถังขยะผ่าน LINEbot
ส่วนที่ 2
- ใช้ Ultrasonic sensor รับระยะทางระหว่างมือกับถังขยะ เมื่อถึงค่าที่กำหนดไว้ NodeMCU ESP32 จะสั่งให้ Micro Servo ทำการเปิดฝาถังขยะขึ้นเป็นเวลา 5 วินาที จากนั้นจะปิดฝาลง
ส่วนที่ 3
- ใช้ Ultrasonic sensor รับข้อมูลปริมาณขยะในถัง โดยแสดงผลผ่านจอ OLED display โดย แสดง เปอร์เซนต์ของขยะในถัง ปริมาณขยะต่อความสูงของถัง และชื่อโปรเจกต์โดยอยู่บนบอร์ด NodeMCU ESP32
- จากนั้นส่งข้อมูลผ่าน I2C ไปยัง NUCLEO-L432KC เพื่อนำค่าไปแสดงผลใน 10 Segment LED โดยไฟแต่ละดวงจะเป็นช่วง10% ตัวอย่างเช่น ถ้าติด 1 ดวงจะอยู่ในช่วง 0-10% ถ้าติด10ดวงก็จะอยู่ในช่วง 90-100%
ส่วนที่ 4
- ใช้ Switch Module เพื่อส่งสัญญาณผ่านบอร์ด NodeMCU ESP32 บังคับให้รถวิ่งหรือหยุด เพิ่มความเร็ว ลดความเร็ว

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-09 23:36:32 โดย b6210505171
กลุ่มที่ 12 : ผมเองก็บำลาก
ชนกันต์ โผนผึ้ง
ณัฐกิตต์ เนตรศิวะวิเชียร
มติมนต์ นาคดุค
วีราการ สารสุวรรณ
ชื่อโครงงาน: boom bits
รายละเอียด:

Game กู้ระเบิดภายในเวลาที่กำหนด
(ได้รับแรงบันดาลใจจาก เกม keep talking an nobody explode
ตัวอย่าง : https://www.youtube.com/watch?v=HXeotQ5nf08)
โดยผู้เล่นมี 2 คนคือ ผู้ที่กู้ระเบิด บนระเบิดมี module ต่างๆ (ไม่รู้วิธีแก้)กับผู้อ่านเอกสารวิธีการกู้ระเบิดบน website (ไม่รู้รูปแบบของระเบิด)
ระเบิดจะมี module ย่อยๆ ผู้ที่กู้ระเบิดต้องบอกข้อมูลของว่า module นี้มีอุปกรณ์อะไรบ้าง มีสัญลักษณ์ที่แสดงบนไฟ LED หรือจอ LCD อย่างไร
เพื่อให้คนที่อ่านเอกสารทราบว่า module นั้นเป็นอย่างไร เพื่อหาวิธีการแก้ของ module จากเอกสารที่อยู่บน website เเละบอกวิธีแก้ module นั้นๆ
มี 4 - 5 module(เกม) ขึ้นอยู่กับลำดับความยากที่เลือก
มีเกมดังนี้
1 เกมตัดสายไฟ มีสายไฟ5เส้น มีสีต่างกัน ต้องสังเกตการกระพริบของไฟ LED เพื่อตัดสายไฟให้ถูก
2.เกมกดปุ่มตามลำดับ มีปุ่ม 4 ปุ่ม LED 4 ดวง ไฟจะกระพริบเป็นลำดับ ตั้งแต่ 1 ถึง 4 ต้องกดปุ่มตามลำดับไฟ (ลำดับการกดจะเพิ่มขึ้นเรื่อยๆ)
3.เกมตัวอักษร จะมีข้อมูลตัวอักษรขึ้นบนจอ OLED ต้องกดสวิตท์เป็นลำดับให้ถูกต้องตามที่คู่มือได้บอกไว้ (วิธีการกดที่ต่างกัน ตามข้อมูลที่แสดง)
4.เกม block tower มี LED matrix 8x8 แสดงฐานของตึก กดปุ่มเพื่อให้ชั้นบนสุดตกลงมาในตำแหน่งของฐานกดจนกว่าจะถึงชั้นบนสุด
5.เกม rotary จะมีรูปแบบข้อมูลแสดงบนจอ LCD ต้องหมุนปุ่มให้ถูกตามทิศที่ได้จากเอกสาร

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 23:29:42 โดย b6210506348
กลุ่มที่ 13 : Teletubby V.DLC
จิณณพัต พิสิฐชัยกุล
นราวิชญ์ ไมตรีจิตร
มลรัฐ ลิขิตวิเศษพงษ์
ศิลา เลิศบรรจงงาม
ชื่อโครงงาน: Battle Of Wit
รายละเอียด:

โครงงานของเราจะทำเป็นเกมส์ ที่จะมีผู้เล่นสองคนโดยทั้งสองคนนี้จะมีเลขของตนเองตั้งแต่ 1-9 จากนั้นแต่ละคนจะทำการเลือกเลขมา 1 เลข นำทั้งสองเลขมาเทียบกัน ผู้เล่นที่เลือกเลขมากกว่าจะชนะและได้รับแต้ม 1 แต้มโดยใครได้ครบ 5 แต้มก่อนจะเป็นผู้ชนะ (เลขที่เลือกมาจะถูกตัดออกจาก list ของผู้เล่นด้วย) ฉะนั้นผู้เล่นจะต้องเก็บเลขของตนเองไว้ให้เหมาะสมกับสถานการณ์

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

อุปกรณ์ :
1. ESP32 x4
2. Matrix KeyPad 4x4 x2
3. LED x4
4. Buzzer x1
5. Button x1
6. Resistor 330 ohm x5
7. Breadboard x4
8. SSD 1306 OLED x3
9. Jumper wire

Software:
1. Arduino IDE

Include Library List:
1. ESP-NOW
2. WIFI
3. Adafruit GFX
4. Adafruit ssd1306
5. Keypad
6. Wire

เทคนิค :
boardA/boardB เป็นบอร์ดที่มี keypad ที่ใช้ในการรับ input เพื่อส่งเลขที่ผู้เล่นเลือกไปยังบอร์ดส่วนกลาง (ใช้ library ESP-NOW และ WIFI ในการส่งข้อมูลแบบ wireless) และมีการใช้ oled ในการแสดงจำนวนเลขที่เหลือของผู้เล่นทั้งสองฝ่าย จากนั้นเมื่อจบในแต่ละ round ก็จะแสดงผลลัพธ์ในแต่ละบอร์ดของผู้เล่น (ใช้ library Adafruit GFX , Adafruit ssd1306) จากนั้นส่วนกลางก็ใช้ library ตัวเดียวกันในการรับข้อมูลจากทั้ง 2 บอร์ด โดยส่วนกลางก็จะนำข้อมูลที่ได้รับมาคำนวณว่าเลขของใครมากกว่ากัน และส่งผลลัพธ์ในแต่ละ round ให้กับบอร์ดทุกตัวรวมถึงบอร์ด display ด้วย จากนั้นเมื่อบอร์ดต่างๆได้รับผลลัพธ์แล้ว แต่ละบอร์ดจะต้องทำการคำนวณว่าผลลัพธ์ที่จะถูกนำไปแสดงบนจอ oled ของตนเองจะต้องเป็นอะไร ในขณะเดียวกันแต่ละบอร์ดจะต้องทำการเพิ่มค่าของตัวแปรที่เก็บไว้เช่น a_score=5(ขณะนี้บอร์ด A มีคะแนนเท่าไร) โดยในระหว่างการเล่นสามารถทำการกดปุ่ม reset เกมได้ตลอดเวลา(ใช้ timer ในการ interrupt code ที่รันอยู่) จากนั้นเมื่อเกมได้มาถึง round สุดท้ายเกม หลังจากที่ผู้เล่นทั้งสองฝ่ายส่งเลขที่ตนเองเลือกไปแล้ว บอร์ดกลางจะทำการส่ง state end มาซึ่งก็เป็น state ที่บอกกับทุกบอร์ดว่าขณะนี้เกมนั้นได้จบลงแล้ว ทุกบอร์ดก็จะทำการเปรียบเทียบ a_score และ b_score เพื่อตรวจสอบดุว่าใครเป็นผู้ชนะจากนั้นก็จะทำการแสดงผลผู้ชนะบนจอ oled ของตนเอง ขณะที่กำลังแสดงผล buzzer ก็จะมีเสียงเพลงดังขึ้นโดย(ใช้คำสั่งในการ oledcWrite ในการทำให้ buzzer มีเสียง) หากต้องการเล่นใหม่จะต้องทำการกดปุม reset

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 22:28:34 โดย b6210503781
กลุ่มที่ 14 : tatakae!!!
บุญรักษา บัวรักษา
สินธนา วงษ์สุภักดี
มกร อธิปฏิพัทธ์
วิภู ศรีทองกิติกูล
ชื่อโครงงาน: Stupid box
รายละเอียด:

เป็นกล่องที่มีความสามารถในการวัดอุณหภูมิ,ตรวจจับ PM 2.5,แก๊สชนิดต่างๆ โดยมีการแจ้งเตือนความปลอดภัยผ่านทางหน้าจอ Dot matrix และแสดงรายละเอียดต่างๆบนเว็บไซต์
อุปกรณ์ที่ใช้
- ESP32S node MCU 3 board
- ESP8266 1 board
- DHT (ใช้ ESP32S node MCU ในการเชื่อมต่อ)
- Mq2 (ใช้ ESP32S node MCU ในการเชื่อมต่อ)
- PMS3003 (ใช้ ESP8266 ในการเชื่อมต่อ)
- Dot Matrix (ใช้ ESP32S node MCU ในการเชื่อมต่อ)
โปรแกรมที่ใช้
- Visual Studio Code
- Thonny
- Arduino
หลักการทำงาน
โดยรวมแล้วหลักการทำงานจะเริ่มจากการทำงานของเซนเซอร์แต่ละตัว ซึ่งหลังจากที่มีการวัดค่าต่างๆแล้วจะส่งค่าไปยังเซิร์ฟเวอร์ด้วยวิธีการสร้าง socket จากนั้นจะมีการอัพเดทข้อมูลต่างๆขึ้นบนเว็ปไซต์และแสดงสถานะความปลอดภัยบนหน้าจอ Dot Matrix

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-08 01:09:21 โดย b6210503675
กลุ่มที่ 15 : ทีมงาน คุ ณ ภ า พ
ภัทรพล บุญกูล
ภีมวรัชญ์ อินทมูล
วสวัตติ์ เกิดมงคล
ชื่อโครงงาน: SmartRestaurant
รายละเอียด:

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

อุปกรณ์
1.ESP32 x3
2.RFID RC522 x1
3.OLED x2
4.LDR x4
5.SHTC3 x1
6.Resistor 10k Ohm x4
7.Wire set x1
8.Breadboard x4

การทำงาน
-------------------------
การทำงานของฝั่งฮาร์ดแวร์จะแยกเป็นสองส่วน

1.Restaurant Environment
ส่วนแรกเป็นส่วนของ sensor ในส่วนนี้จะใช้ ESP32 2 ตัวสื่อสารกัน โดยบอร์ดตัวแรกเชื่อมอยู่กับ SHTC3 ซึ่งเป็น sensor วัดอุณหภูมิและความชื้น กับ OLED แสดงผลของ SHTC3 และทำหน้าที่เป็น Master ในการสื่อสารผ่าน I2C Bus ส่วนอีกบอร์ดหนึ่งจะเชื่อมอยู่กับ LDR 4 ตัว แทนจำนวนโต๊ะในร้านและอ่านค่าจากสัญญาณ analog โดยตรง รวมถึงทำหน้าที่เป็น Slave

หลักการทำงาน
1. ESP32 บอร์ดแรกรับค่าจาก STHC3 จากนั้น request ไปยังบอร์ดที่สองซึ่งเป็น Slave ให้เขียนค่าโต๊ะลงไปใน address ที่กำหนดไว้ ซึ่งจะ request ทุกๆ 1 วินาทีและเก็บค่าจาก STHC ทุกๆ 2 วินาที
2.จอ OLED จะแสดงค่าอุณหภูมิและความชื้นเป็นองศาเซลเซียสและเปอร์เซ็นต์ตามลำดับทุกๆ 2 วินาที
3. บอร์ด Slave เขียนค่าโต๊ะเป็น integer 0 กับ 1 จำนวน 4 Bytes ซึ่งจะมีค่าเป็น 1 หากค่าที่อ่านได้จาก LDR ต่ำกว่า 500 (มีคนนั่งอยู่) และเป็น 0 หากมากกว่า (โต๊ะว่าง) จากนั้นเขียนไปยัง address ที่กำหนด จากนั้นบอร์ด Master ก็จะอ่านค่า
4.หลังจากที่บอร์ดแรกได้รับข้อมูลแล้วจะทำการส่งข้อมูลขึ้นไปยัง Firebase โดยบอร์ดจะทำการเชื่อมเข้ากับ Wi-Fi ก่อน

2. Payment System
ส่วนที่สองจะใช้ ESP32 ตัวที่สามเพียงตัวเดียว ต่อเข้ากับ OLED และ RFID RC522 ซึ่งเป็นจอภาพและตัวสแกนบัตรตามลำดับ ซึ่งหลักการทำงานจะมีดังนี้
1.ตัวบอร์ด ESP32 จะทำการเชื่อมเข้ากับ Wi-Fi และอ่านข้อมูลราคาอาหารที่ต้องจ่ายจาก Firebase ทุกๆ 0.5 วินาที หากพบการเปลี่ยนแปลงของราคาก็จะแสดงราคาให้เห็นที่จอ OLED จากนั้นให้ฟังก์ชันสแกนบัตรทำงานต่อไป
2.เมื่อเข้าสู่การสแกนบัตรจะมีเวลาให้แตะบัตร 10 วินาทีก่อนที่จะ Timeout หากมีการแตะบัตรในส่วนนี้ตัว RFID จะรับข้อมูลจากบัตรมาเป็นรหัสประจำตัวในรูปแบบ Hexadecimal 8 หลัก
3.หลังจากนั้นหากทำการเช็คแล้วว่ามีบัตรนี้ในระบบและมียอดเงินเพียงพอก็จะทำการแสดงสถานะการจ่ายเงินบน OLED และส่ง Status ไปยัง Firebase พร้อมกับตัดยอดเงินจากบัตรนั้น และ reset ค่าราคาให้เป็น 0
4.ในกรณี Timeout, ไม่พบบัตร หรือยอดเงินไม่พอก็จะแสดง Status ที่ OLED และส่ง status ไปยัง Firebase พร้อมกับ reset ราคา ทุก Status จะมีการแสดงสถานะที่ OLED 4 วินาทีก่อนที่จะดับไป

-------------------------
การทำงานจากฝั่งเว็บ

ฝั่งเว็บจะแบ่งออกเป็น 2 หน้า คือ หน้าแสดงสถานะต่างๆ ภายในร้านอาหาร และหน้าจ่ายเงิน

ข้อมูลจะถูกส่งมาจากบอร์ดที่ใช้sensorวัดค่าต่างๆ แล้วส่งข้อมูลไปที่ Realtime Database โดยตัวเว็บจะอ่านข้อมูลจาก Firebase ทุกๆ 1 วินาที และนำมาแสดงผลในหน้านี้

เมื่อกดเข้าไปที่หน้า Payment จะเจอหน้าสำหรับกรอกค่าอาหาร และกด Submit เพื่อส่งข้อมูลค่าอาหารของแต่ละโต๊ะไปเก็บไว้ใน FireStore Database โดยแยกเก็บ Collection ของแต่ละโต๊ะ และส่งไปที่ Realtime Database เพื่อให้ ESP32 อ่านค่าและส่งให้ RFID RC522 และ Update สถานะการจ่ายเงิน หากการชำระเงินไม่สำเร็จ ระบจะทำการลบข้อมูลบันทึกค่าอาหารดังกล่าวออกจาก Firebase โดยอัตโนมัติ

Github: https://github.com/filmZ37/Smart-Restaurant/tree/master

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-06 13:53:01 โดย b6210503772
กลุ่มที่ 16 : ABCS
ทริณทร์รัฐ จตุภัทรพิบูรณ์
ธนกฤต เมฆอ่อน
บูรพา ผาติชล
เชาว์วัชร์ เจริญวิริยะภาพ
ชื่อโครงงาน: A Car
รายละเอียด:

เป็นรูปแบบเกมรถ 4 คนที่แยกส่วนควบคุมกัน แต่ละคนจะได้ควบคุมล้อรถแต่ละล้อ โดยมีจุดหมายคือต้องช่วยกันควบคุมประคองรถให้ไปถึงจุดหมายให้ได้ โปรเจคนี้จะสามารถแยกเป็นส่วนหลักๆได้สองส่วนคือ ตัวรถ 1 คันและตัวควบคุม 4 ตัว

ตัวรถ:
มีหน้าที่รับคำสั่งจากตัวควบคุม(ผู้เล่นทั้ง4คน) และ จะมีเซนเซอร์ตรวจสอบว่าออกนอกขอบสนามไหม เข้าเส้นชัยหรือยัง มีล้อที่ขับเคลื่อนได้ 4 ล้อ

ตัวควบคุม:
มีปุ่มเดินหน้าเดินหลัง และLEDบ่งบอกสถานะว่าเดินหน้าหรือถอยหลัง

อุปกรณ์ที่ใช้
a) Remote Controller (x4)
- 4 x ESP32 (ใช้รับข้อมูลจากปุ่มแล้วส่งข้อมูลผ่าน WiFi ไปยัง รถ)
- 8 x Button ( 2 items / controller) (รับ Input จาก User)
- 4 x RGB LED
- 4 x Breadboard400
- 4 x AA Battery socket
b) Car
- 1 x ESP32Cam (รับข้อมูลจาก Controller ส่งให้ Nucleo, ใช้เป็น WebServer)
- 1 x Nucleo l432kc (ควบคุมMotor, Tracking sensor)
- 4 x Motor
- 4 x Wheel
- 2 x l298n motor driver
- 4 x IR sensor (ใช้ตรวจว่ารถยังอยู่ในเส้นทางหรือไม่)
- 1 x Breadboard830
- 1 x LDR (ตรวจสอบว่าเข้าเส้นชัยหรือยัง)
- 4 x 18650 battery

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2022-04-10 17:31:58 โดย b6210500137