ที่มา:
อยากเล่นเกมยิงปืนที่คล้ายกับตัวตุ่น โดยมีเป้าหมายทั้งหมดสามที่ให้โชว์ตัวและซ่อนตัว ให้ผู้เล่นยิงเลเซอร์ให้โดนเป้าหมายในเวลาที่กำหนดไว้ให้ได้มากที่สุด
อุปกรณ์:
- NUCLEO L432KC 2 ตัว
- NodeMCU-32S 2 ตัว
- LDR 3 ตัว
- Servo 90องศา 3 ตัว
- 10-segment LED bar graph 1 ตัว
- OLED 1 ตัว
- R 330Ω 10 ตัว
- laser 1 ตัว
ฟีเจอร์:
- LINE bot พิมพ์คำสั่ง start เพื่อเริ่มการทำงานของอุปกรณ์ และ แสดงผลคะแนนสุดท้ายที่ผู้เล่นทำได้
- OLED แสดงข้อความเริ่มต้นและนับเวลา 60 วินาที และส่งต่อผลคะแนนในตอนจบเกมที่ทำได้ให้ LINE แสดงผล
- 10-segment LED bar graph แสดงการนับเวลา 60 วินาทีในรูปของไฟ LED
- Servo 90องศา เมื่อเริ่มเกมจะขึ้นลงโดยสุ่มรูปแบบ
- LDR รับค่าจำนวนครั้งเมื่อเลเซอร์ยิงโดน และส่งค่าสุดท้ายไปยัง LINE
ขั้นตอนการทำงาน:
1.แชร์ wifi hotspot ให้ NodeMCU-32S ทั้งสองบอร์ด
2. LINE bot พิมพ์คำสั่ง calibrate เพื่อตั้งค่าเริ่มต้นของอุปกรณ์(เฉพาะเริ่มต้นใช้ครั้งแรก)
3. LINE bot พิมพ์คำสั่ง start เพื่อเริ่มการทำงานของอุปกรณ์
4. NodeMCU-32S ตัวแรกเริ่มจอ LCD และ 10-segment LED bar graph นับเวลา 60 วินาที และส่ง state เริ่มต้นให้บอร์ด NUCLEO-L432KC ตัวแรกสั่งให้ servo เริ่มทำงาน
5. NodeMCU-32S ตัวแรกจะสั่งให้ NodeMCU-32S ตัวที่สองเริ่มพร้อมกันตามเวลาของ web server เพื่อให้ NodeMCU-32S สั่งให้ LDR เริ่มรับค่า(จำนวนครั้ง)ในช่วงเวลาที่เกมกำลังดำเนินอยู่
6. เมื่อหมดเวลา LDR จะหยุดรับค่า และ NUCLEO-L432KC บน LDR ส่งค่า score ไปให้ NodeMCU-32S ตัวที่สองเพื่อให้แสดงผลคะแนนใน LINE เป็นอันจบกระบวนการ
github:
https://github.com/ChirapatB-KU/xensur
รายละเอียด:
เป็นการสร้างตัว Walkie-talkie( เครื่องรับส่งวิทยุ ) โดยจะใช้บอร์ด Arduino UNO R3 เป็นตัวรับ-ส่งสัญญาณเสียงระหว่างWalkie-talkieตัวหนึ่งกับอีกตัวหนึ่ง
และจะมีการรายงานสถานะของตัวWalkie-talkieตลอดเวลา โดยจะให้แสดงผลผ่านจอ OLED โดยตัวOLEDนั้นจะถูกควบคุมโดยบอร์ด NUCLEO-L432KC
อุปกรณ์ที่ใช้
Arduino UNO R3 : 2 ตัว
NUCLEO-L432KC : 2 ตัว
I2C IIC Serial 128*64 OLED : 2 ตัว
Electret Microphone Sound sencor Amplifier MAX4466 : 2 ตัว
NRF24L01 Module Wireless 2.4GHz : 2 ตัว
6x6x8mm micro switch button : 2 ตัว
TRRS 3.5mm stereo headphone MP3 audio video jack Breakout : 1 ตัว
3W+3W PAM8403 Stereo Audio Amplifier : 1 ตัว
ตัวต้านทาน 330 Ohm : 1 ตัว
ตัวต้านทาน 10k Ohm : 2 ตัว
ตัวเก็บประจุ แบบเซรามิก 100nF 50V : 3 ตัว
ลำโพง 0.5W 8 โอห์ม : 2 ตัว
สายไฟ ผู้-ผู้ : 60 สาย
สายไฟ ผู้-เมีย : 20 สาย
เครื่องมือที่ใช้ในการพัฒนา:
-ใช้โปรแกรมArduino IDE สำหรับพัฒนาซอร์สโค้ดที่ใช้กับArduino UNO R3
-ใช้โปรแกรมSTM32CubeIDE สำหรับพัฒนาซอร์สโค้ดที่ใช้กับNUCLEO-L432KC
การทำงาน:
-หากต้องการส่งข้อความ สามารถทำได้โดยกดปุ่มบนบอร์ดค้างเอาไว้ แล้วทำการพูดผ่านไมโครโฟนที่อยู่บนบอร์ด โดยในระหว่างที่เรากำลังพูดส่งข้อความนี้ ตัวจอOLEDจะมีการรายงานสถานะของPidgey-Talkieเป็นข้อความว่า " PIDGEY IS TALKING "
-เมื่อตัวWalkie-talkieไม่ได้อยู่ในสถานะทำการส่งข้อความ ตัวจอOLEDจะมีการรายงานสถานะของPidgey-Talkieเป็นข้อความว่า " PIDGEY IS LISTENING " และหากWalkie-talkieอีกตัวทำการส่งข้อความมาให้ ตัวข้อความเสียงจะถูกส่งออกผ่านทางลำโพง
-สามารถมีบอร์ดส่งสัญญาณเสียงได้ทีละ1บอร์ด และบอร์ดที่เหลือจะเป็นตัวรับสัญญาณเสียง
ระบบล็อกไฟฟ้าที่ถูกออกแบบ และพัฒนาขึ้นมาเพื่อติดตั้งที่ห้องชุมนุมนิสิตวิศวกรรมคอมพิวเตอร์ มหาวิทยาลัยเกษตรศาสตร์ บางเขน
Specification
1. มีระบบ Sign Up ผ่านไลน์บอท เพื่อลงทะเบียนสู่ระบบ และเป็นการเพิ่มบัตร RFID (ถ้ามี) เพื่อให้ยืนยันตัวตนได้ทุกครั้งในเวลาที่ต้องการเปิดประตู
2. สามารถเปิดประตูผ่านไลน์บอทหรือเปิดด้วยการแตะบัตร RFID
3. เมื่อเวลาไฟดับระบบยังสามารถจัดการ และยังสามารถใช้งานได้
4. เมื่อมีการเปิดประตูจะมีการแจ้งให้ทุกคนที่เป็นสมาชิกได้ทราบว่าใครเปิด ผ่านทางไลน์บอท
5. สามารถเปิดประตูจากในห้องได้เพียงแค่กดปุ่ม
6. เพิ่มหรือลบบัตร RFID ได้ทุกเมื่อ
อุปกรณ์
1. ตัวล็อกประตูโซลินอยด์ 1 ชิ้น
2. เครื่องอ่านเขียน RFID 1 ชิ้น
3. บอร์ด ESP32 4 บอร์ด
4. โมดูลปุ่มกด 4 สี 1 ชิ้น
5. ปุ่ม 1 2 ปุ่ม
6. จอ OLED 1 จอ
7. ลำโพงส่งเสียงBUZZER 1 ตัว
8. รีเลย์สำหรับเลือกแหล่งพลังงาน 4 ตัว
9. ชุดสายไฟให้พลังงาน 1 ชุด
10. สวิตช์ 1 ตัว
11. ชุดถ่านให้พลังงานสำรอง 3 ชุด
12. สวิตช์ตัดไฟ(สำรอง) 1 ตัว
13. รีเลย์สลับไฟฉุกเฉิน 1 ตัว
การทำงานของระบบ
ระบบนี้ประกอบด้วยบอร์ดจำนวน 4 บอร์ด แบ่งเป็น 2 กลุ่มคือ
1. กลุ่มที่อยู่ที่หลังประตู กลุ่มนี้จะดูแลเรื่องปุ่มกด และล็อก โดยมีบอร์ดนึงเป็น Master ดูแลทั้งระบบ
2. กลุ่มที่อยู่บริเวณหน้าต่างคอยดูแลจอ OLED เสียง และเครื่องอ่านบัตร RFID โดยบอร์ดทั้งหมดสื่อสารกัน และมีบอร์ด Master ที่จะติดต่อกับ Raspberry Pi ซึ่งรัน Backend ไว้ ผ่านทาง I2C
การใช้งานครั้งแรก
1. ทำการเพิ่มเพื่อน SoupDoor ในไลน์ (ขอจากประธานชุมนุม)
2. กด Register ในแชตของไลน์บอท
3. ทำการส่งชื่อให้ไลน์บอทจากนั้นระบบจะทำการส่ง OTP ไปแสดงที่จอ OLED
4. กดปุ่มสีให้ตรงกับ OTP* โดยมีเวลา 1 นาที ในการกดรหัสหากกดผิดหรือหมดเวลาระบบจะ RESET
5. หาก OTP ถูกต้องจะมีข้อความแจ้งเตือนกลับไปที่ไลน์ว่าลงทะเบียนเสร็จสิ้น และหากต้องการลงทะเบียนบัตร RFID ให้ทำตามขั้นตอนการลงทะเบียนที่แสดงบนไลน์ต่อไป
* จอ OLED จะแสดง 8 ตัวอักษรตามลำดับโดย R G B Y แทนการบอกปุ่มสี แดง เขียว น้ำเงิน เหลือง ตามลำดับ และกดค้างไว้อย่างน้อยปุ่มละ 0.5 วินาที
การใช้งานครั้งถัดไป
กดเปิดประตูในไลน์บอท หรือ แตะ RFID
การเปิดประตูจากในห้อง
กดปุ่มเปิดจากในห้องระบบจะเปิดประตูทันที
DOCUMENT : https://docs.google.com/document/d/1m7Co31eBxPfTf1kkZ65ozW7nJEDyzLJ_TLQgXgb0yN0/edit?usp=sharing
รายละเอียดโดยคร่าวๆ:
จอ LED และ Web Application จะบอกสถานะกลอนของห้องน้ำแต่ละห้องได้ว่าตอนนี้ถูกล็อคอยู่หรือไม่ และสามารถ Alert ได้ด้วยเมื่อมีห้องที่ถูกล็อคนานเกินไป
อุปกรณ์:
-บอร์ด ESP32 3 บอร์ด
-Dot Matrix LED Display 1 บอร์ด
-Buzzer 2 ตัว
-Infrared Sensor Module 2 ตัว
-รางแบตเตอร์รี่ 2 x 2A 2 ราง (7.4 โวลต์)
-สายไฟ 24 สาย
การทำงาน:
1.ตรวจจับการล็อคของห้องน้ำห้องนั้นๆ ด้วย Infrared Sensor Module
2.ส่งสถานะการล็อคของห้องน้ำขึ้นไปที่ฐานข้อมูล
3.แสดงจำนวนห้องน้ำที่ล็อคอยู่ผ่านหน้าจอ Dot Matrix LED Display โดยดึงข้อมูลมาจากฐานข้อมูล
4.แสดงจำนวนห้องน้ำที่ล็อคอยู่ผ่าน Web Application ที่ดึงข้อมูลมาจากฐานข้อมูล
อุปกรณ์ที่ใช้ในการพัฒนาชิ้นงาน:
-Adruino IDE สำหรับการพัฒนา Hardware
-Node.JS สำหรับการพัฒนา Frontend ของ Web Application
-Express สำหรับการพัฒนา Backend ของ Web Application
-MongoDB สำหรับการพัฒนาฐานข้อมูลของชิ้นงาน
ที่มาและความสำคัญ
เราต้องการทำตู้สำหรับใส่ของที่สามารถเข้ารหัสเพื่อรักษาความปลอดภัย และสามารถสั่งเปิดผ่าน Bluetooth ได้ ทำให้สามารถสั่งเปิดตู้ได้โดยปลอดภัยจากการสัมผัสเชื้อ COVID
รายละเอียดของผลงาน
เป็นตู้เก็บของที่สามารถสั่งเปิด-ปิดล็อคผ่านการกดรหัสตัวเลข Keypad หรือการเชื่อมต่อ Bluetooth ซึ่งจะมีการใช้บอร์ด esp32 จำนวน 4 บอร์ด ในการควบคุมการทำงานในการเชื่อมต่อ WIFI และส่งข้อมูลไปยัง Web Application
อุปกรณ์ที่ใช้
-ESP32 4 ตัว
- LCD 40 x 4 1 ตัว
- LCD Driver I2C module 1 ตัว
- Reed Switch 1 ตัว
- LED สีแดง&สีเขียว 2 ตัว
- Keypad 3 x 4
- Relay Module 12 V
-12V DC Adapter
-ตู้ไม้อัดขนาด 40*40*30 ลบ.ซม.
การทำงาน
บอร์ดแรกจะใช้ควบคุม Solenoid lock เชื่อมต่อกับrelay module เเละควบคุม LED โดยสถานะของทั้ง 2 อย่างจะเปลี่ยนตามไปกับข้อมูลที่ได้รับกับ Server และบอร์ด esp32 บอร์ดที่สองจะเป็นการควบคุม key pad และจอ LCD สำหรับใช้ในการปลดล็อคปกติและแสดงผลหน้ากล่อง รวมถึงส่งผลลัพธ์จากการกดรหัสจะถูกส่งรหัสไปยัง Server สำหรับบอร์ดที่สามจะเป็นตัวควบคุม reed switch สำหรับการตรวจจับการปิดเมื่อมีการปิดนานถึงช่วงเวลาหนึ่งจะมีการส่งไปยัง Server และบอร์ดที่สี่เป็นบอร์ดสุดท้าย ที่จะใช้สำหรับการควบคุมการเปิดปิดล็อคผ่าน Bluetooth เเล้วจะมีการนำ MAC address ที่ได้ส่งไปที่ Server เพื่อทำการปลด Lock
Tools ที่ใช้
Software ที่ใช้จะพัฒนาผ่าน Arduino IDE ด้วยภาษา C++ และมีการใช้ React(Frontend) , Express(Backend) และ Mongo(Database) สำหรับตัว Web application เเละใช้ Flutter ในการเขียน Mobile Application ใช้สำหรับการปลดLock ด้วย Bluetooth
การใช้งานบอร์ด ESP32
1 : Solenoid Lock , LED green/red light
2 : Key pad , LCD display
3 : Reed switch
4 : Bluetooth
รถตัดหญ้าที่ควบคุมทิศทางด้วยมือผ่าน Flex Sensor โดยใช้การกำนิ้วมือเป็นสัญลักษณ์ท่าทางต่างๆเพื่อควบคุมการทำงานของล้อรถ
ที่มา: เนื่องด้วยเวลาตัดหญ้าเป็นงานที่ทำในที่กลางแจ้ง แต่เนื่องด้วยสภาพอากาศของประเทศไทยนั้นค่อนข้างร้อน ทำให้การออกไปทำกิจกรรมเหล่านั้นเป็นงานที่ไม่น่าสนใจ ซึ่งกลุ่มเราต้องการแก้ปัญหานั้นโดยนำความรู้มาใช้ในการสร้างรถที่ควบคุมโดย microcontroller รวมไปถึงนำ flex sensor แบบทำมือมาใช้ในการต่อยอด จึงได้เกิดเป็นรถตัดหญ้าที่ควบคุมด้วยถุงมือจาก flex sensor ตัวนี้ขึ้นมา ทำให้เราสามารถควบคุมอุปกรณ์รถตัดหญ้าได้จากทางไกล ไม่จำเป็นต้องออกไปยืนกลางที่แจ้ง
อุปกรณ์:
1.NUCLEO L432KC 2 ตัว
2.NodeMCU-32S 2 ตัว
3.Motorใบพัด 1 ตัว
4.OLED 2 ตัว
5.Flex Sensor รูปแบบถุงมือ 1 ข้าง
6.Survo 360 องศา 2 ตัว
7.Solar cell 1 ตัว
การทำงาน:
1.ใส่ถุงมือ Flex Sensor จากนั้นกำมือเป็นรูปแบบต่างๆ
2.NUCLEO L432KC จะรับค่าจากถุงมือ แปรเป็นคำสั่งว่าจะให้รถเคลื่อนที่แบบใด (ซ้าย,ขวา,ขับตรงไปข้างหน้า)
3.NodeMCU-32S จะรับค่าคำสั่งจากNUCLEO L432KC เพื่อส่งต่อไปให้ NodeMCU-32S อีกตัวผ่านWiFi
4.NodeMCU-32S ที่รับสัญญาณWiFi มาจะส่งข้อมูลไปให้ NUCLEO L432KC อีก1ตัว ที่เป็นตัวควบคุม Survo ล้อรถและ motor ใบพัด
อธิบายการทำงานแบบละเอียด
- ส่วนที่ 1 Flex Sensor
การทำงานของ Flex Sensor นั้นจะเป็นการเซนเซอร์ที่ปรับความต้านทานตามความบิดงอของตัวเซนเซอร์ เราเลยนำความสามารถนั้นมาใช้เพื่อควบคุมตัวรถตัดหญ้า โดยนำ Flex Sensor ไปติดตามนิ้วของถุงมือ เมื่อเราสวมถุงมือแล้วขยับงอนิ้วหรือยีดค่าความต้านทานของแต่ละนิ้วก็จะเปลี่ยนไปทำให้เราเอามาวิเคราะห์แล้วเขียนคำสั่งควบคุมรถได้
- ส่วนที่ 2 ส่งค่าจากถุงมือไปยังบอร์ด Nucleo L432KC
เราจะใช้บอร์ด Nucleo L432KC ในการรับค่าจาก Flex Sensor แล้วส่งไปให้ตัวบอร์ด Node MCU ESP-32 Wroom ผ่านการคุยแบบ Slave - Master โดยให้ตัว Nucleo เป็น Slave โดยจะทำการส่งไปให้ Node MCU เมื่อ Node เรียกด้วยคำสั่ง ReadFrom
- ส่วนที่ 3 การคุยระหว่างตัวรถกับถุงมือผ่าน Wifi
การคุยระหว่างรถตัดหญ้าที่จริงๆควรอยู่กลางสนามกับถุงมือ เราจะใช้การคุยผ่าน Wifi โดยให้ผู้ส่งเป็นคนปล่อยสัญญาณไปแบบ Broadcast คือส่งไปที่ FF:FF:FF:FF:FF:FF ส่วนตัวผู้รับจะตั้ง peer ไปที่ Mac Address ของตัวผู้ส่ง
- ส่วนที่ 4 การนำค่าที่ได้รับจาก Node MCU อีกตัวส่งไปควบคุมรตัดหญ้ามอเตอร์
พอ Node MCU ได้รับค่าจาก Node MCU อีกตัวแล้วก็ทำการส่งกลับไปที่ Nucleo เพื่อส่งต่อไปคุมให้ตัวรถตัดหญ้า ผ่านการคุยเช่นเดียวกับส่วนที่ 2
- ส่วน Solar Cell
จะเป็นพลังงานกักเก็บไว้ใช้ซึ่งเราจะชาร์ทลงแบตเตอรี่เก็บเอาไว้แล้วจ่ายไฟให้กับบอร์ด Node MCU
Self driving car สำหรับตรวจสถานการณ์ในพื้นที่ปิด
ปัจจุบันการตรวจตราอาคารภายในเวลากลางคืนยังทำได้ไม่ดีนัก เนื่องจากหลาย ๆ แห่งมักมีเพียง รปภ. นั่งเฝ้าทางเข้าอาคาร แต่ไม่มีการเดินตรวจสถานการณ์ภายในอาคาร ประกอบกับการนำระบบรักษาความปลอดภัยไปติดตั้งกับอาคารเพิ่มเติมมีค่าใช้จ่ายและต้องจ้างผู้รับเหมาเข้ามาติดตั้ง การเดินสายไฟ สายสัญญาณ เราเลยคิดที่จะทำหุ่นยนต์ตัวนี้ขึ้นมาเพื่อเดินตรวจสอบความเคลื่อนไหวภายในอาคาร โดยไม่ต้องมีการติดตั้งอุปกรณ์ใด ๆ เพิ่มเติมกับตัวอาคาร
รถจะเลียบผนังและเดินตรงไปเรื่อย ๆ โดยใช้ Ultrasonic 3 ตัวในการระวังการชนและเลี้ยวไปยังทิศทางอื่นเมื่อพบสิ่งกีดขวาง ระหว่างการตรวจการณ์ รถจะหยุดขณะหนึ่งเพื่อใช้ PIR จำนวน 3 ตัวตรวจสอบความเคลื่อนไหวรอบ ๆ หากพบความเคลื่อนไหว จะมีข้อความแจ้งเตือนผ่าน Line
ระบบแบ่งเป็น 6 โมดูลย่อย
1. Command Center - ESP32 (microPython) โดยเป็นศูนย์กลางในการประมวล โดยเป็นตัวที่เริ่มต้นการทำงานของรถ สั่งการโมดูลอื่นๆ และนำค่าจากโมดูลอื่นๆมาประมวลผลเพื่อสั่งการรถที่โมดูล Direction Controller และรับค่าที่ได้จาก PIR มาแสดงผลผ่าน Line notify
2. Direction Controller - STM32 (mbedOS) เป็นโมดูลที่ติดต่อกับ Motor Driver และการควบคุมทิศทางของรถให้คงเดิมเสมอและตรวจสอบการชนของหุ่นยนต์ผ่านการใช้งาน Compass ที่เชื่อมต่อผ่าน i2c และจะใช้ค่า Analog ที่ส่งมาจาก Command Center ในการควบคุมความเร็วของหุ่นยนต์ และรับคำสั่งเลี้ยวตามมุมจาก Collision Detection ที่ส่งมาผ่าน UART
3. Localiser - ESP32 (Arduino C++) ใช้สำหรับการตรวจจับสัญญาณ BLE จาก Beacon ที่จะถูกติดตั้งภายในพื้นที่ เพื่อระบุตำแหน่งโดยประมาณของรถ
4. Collision Detection - ESP32 (microPython) ใช้ Ultrasonic 3 ตัวในการ detect การชน สามารถเลือก mode ในการหลีกเลียงสิ่งกีดขวางโดย 1. normal mode จะเป็นโหมดที่โมดูลจะพยายามส่งค่ามุมที่ต้องหมุนเพื่อให้หุ่นเดินขนาดไปกับผนัง และ 2. random mode เมื่อหุ่นจะกำลังจะชนสิ่งกีดขวางหุ่นจะส่งค่ามุมที่ต้องเลี้ยวแบบสุ่มโดยส่วนมากจะชิ่งออกจากกำเเพง เหมาะกับอาคารที่มีทางเดินหลายเส้นทาง ในการเลือกโหมดทำได้โดยการกดปุ่มเเล้วดู mode ปัจุบันได้จากจอ OLED
5. PIR Monitorer - ESP32 (Arduino C++) โมดูลสำหรับตรวจจับความเคลื่อนไหวโดยใช้ PIR
6. Battery Voltage Sensor - STM32 (Arduino C++) โมดูลสำหรับตรวจสอบปริมาณของแบตเตอรี่ที่เหลืออยู่ของรถ
ทั้ง 6 โมดูล โดยส่วนใหญ่จะสื่อสารกันผ่าน I2C Bus โดยมี Command Center เป็น Master
Project File: https://cloudbox.ku.ac.th/index.php/s/XrqxrGG4SxSyLm3
ที่มาเเละรายละเอียดโครงงาน:
-ปัญหาที่พบก็คือในชีวิตประจำวันเราอาจจะลืมรดน้ำต้นไม้หรืออาจจะไม่ได้อยู่บ้านเป็นเวลานาน รวมทั้งการรดน้ำที่ไม่ถูกวิธี อาจจะรดน้ำมากไปหรือน้อยไป ทำให้ต้นไม้เหี่ยวเฉาและอาจตายได้ ทางคณะผู้จัดทำได้เล็งเห็นปัญหาตรงจุดนี้ จึงจัดทำอุปกรณ์รดน้ำอเนกประสงค์ที่ผู้ใช้สามารถเลือกได้ว่าจะให้รดน้ำตามเวลาที่ตั้งไว้ หรือรดน้ำเมื่อความชื้นมีค่าน้อย ทั้งยังมีการเเจ้งเตือน และส่งค่าสถานะต่างๆ ของต้นไม้ ผ่าน Line notify เมื่อถึงเวลารดน้ำ
อุปกรณ์ที่ใช้:
1.Soil Moisture Sensor x1
2.Button x6
3.Rocker Switch x1
4.LDR x1
5.OLED x3
6.Water Pumper x1
7.Thermistor x1
8.Buzzer x1
9.Battery 1.5 V x4
10.Relay x1
11.NodeMCU-32S x5
Feature:
1.สามารถเลือกโหมด(มีสองโหมด คือ โหมดรดน้ำตามเวลาที่ตั้ง และรดน้ำถ้ามีความชื้นต่ำ)
2.โหมดรดน้ำตามเวลาที่ตั้ง:สามารถกดปุ่มเพื่อตั้งเวลา(ชั่วโมง:นาที) เมื่อเวลาถึงที่ตั้งก็จะทำการรดน้ำ,สามารถกำหนดเวลาที่ปั๊มจะทำงานได้ (1-10 วินาที) โดย OLED จะแสดงสถานะ Local time และ เวลาที่ตั้ง
3.โหมดรดน้ำตามความชื้น:เมื่อความชื้นน้อยกว่ากำหนดจะทำงานทันทีจนกระทั่งความชื้นจะถึงค่าที่ตั้งไว้
4.สามารถกดปุ่มเพื่อรดน้ำแบบเเมนนวล
เทคนิค:
1.ใช้ Library AsyncWebServer โดยจะทำการเลือก ESP32 มาสองบอร์ดที่จะทำหน้าที่เป็น Access point และอ่านค่า input จากอุปกรณ์ต่าง ๆ(ปุ่ม, ตัวอ่านค่าความชื้น , etc.) เพื่อส่งค่าไปยัง URL ที่กำหนดเมื่อฝั่ง Client Request เข้ามา
2.ใช้ Library HTTPClient เพื่อ getRequest ไปที่ตัว Server โดยฝั่ง Client จำเป็นจะต้องเชื่อมต่อ WiFi ของฝั่ง Server ก่อน โดยจะทำการ Request รัวๆ(ไม่มี Delay) เพื่อรับค่าเเบบต่อเนื่อง
3.ใช้ Library HTTPClient เพื่อ post message ไปที่ตัว Server Line notify โดยกำหนด Bearer เป็นตัว token ไลน์ที่เราสร้างมา
4.ใช้ Library time.h ในการดึงค่าเวลา Realtime เพื่อเเสดงผล และตรวจสอบกับเวลาที่กำหนดไว้เพื่อให้ตัวปั๊มทำงาน
*มีการแสดงค่าสถานะต่างๆ(อุณหภูมิ,ค่าความชื้น,ความเข้มเเสง) บน OLED
**ทุกครั้งที่ปั๊มทำงานจะส่งค่าสถานะต่างๆบน Line Notify (อุณหภูมิ,ค่าความชื้น,ความเข้มเเสง) และจะมีการเเจ้งเตือนเสียงผ่าน Buzzer รวมทั้งแสดงสถานะของปั๊มบน OLED(active or off รวมทั้ง Duration time)
เครื่องติดตามเเละตรวจวัดสถานะปัจจุบันของน้องแมว ที่ถูกออกแบบขึ้นโดยอ้างอิงจากประสบการณ์ของการเลี้ยงแมวของคนในทีม ที่เคยมีน้องแมวที่เลี้ยงหนีไปออกจากบ้านไปหลบอยู่ในห้องเครื่อง แล้วถูกย่างเหลือแต่กระดูก
ฟีเจอร์:
- ติดตามตำเเหน่งน้องเเมวด้วย gps โดยเรียกดูได้ผ่านไลน์บอท
- ตรวจจับความร้อน/วัดอุณหภูมิ เเละความชื้นรอบๆตัวน้องเเมว โดยเรียกดูได้ผ่านไลน์บอท
- เเจ้งเตือนเมื่ออุณหภูมิสูงกว่าค่าที่กำหนดไว้ผ่านไลน์บอทเเละ buzzer เเละจะหยุดเเจ้งเตือนเมื่ออุณหภูมิกลับเป็นปกติ
- จอ OLED เเสดงชื่อน้องเเมว ชื่อเจ้าของ เเละเบอร์โทรของเจ้าของ
อุปกรณ์ที่ใช้งาน:
- Board esp32-wroom-32 1 ตัว
- Buzzer 1 ตัว
- GPS neo-6m 1 ตัว
- DHT type-11 1 ตัว
- OLED 1 ตัว
การใช้งานไลน์บอท:
- การใช้งานครั้งเเรกต้องลงทะเบียนก่อน โดยพิมพ์คำสั่ง ลงทะเบียน จากนั้นให้เข้าไปกรอกข้อมูลในลิงก์ที่บอทตอบมา
- หลังจาการลงทะเบียนเรียบร้อยก็จะสามารถพิมพ์ ชื่อของน้องเเมวที่เราได้ลงทะเบียนไว้ จากนั้นบอทจะตอบกลับมาเป็นสถานะของน้องเเมวในตอนนี้ ได้เเก่ location อุณหภูมิ ความชื้น
Tools ที่ใช้:
- Arduino IDE (Hardware)
- HTML + Javascript (Frontend)
- Flask (Backend)
- MongoDb (Database)
ไอเทมตามหาของหายในปาร์ตี้,ในที่สาธารณะ โดยตรวจสอบจากความเข้มของสัญญาณ wifi ภายในบอร์ด esp32 เพื่อ maps มาคำนวนเป็นระยะทาง และเสียงแจ้งเตือนฉุกเฉินเมื่ออยู่ห่างจากเรามากเกินไป ซึ่งจะปลดล็อกปิดเสียงแจ้งเตือนด้วยรหัสผ่านเพื่อความปลอดภัย
อุปกรณ์
ESP32 4 ตัว
RGBLED 1 ตัว
Keypad 4x4 1 ตัว
Buzzer 1 ตัว
OLED 2 ตัว
Capacitor 10 microF 4 ตัว
เครื่องมือ : ใช้โปรแกรมArduino IDE สำหรับพัฒนาซอร์สโค้ดที่ใช้กับ ESP32
การทำงานจะแบ่งเป็นสองฝั่งคือ อุปกรณ์ตามหาของ และส่วนที่ติดกับของหาย
- อุปกรณ์ค้นหาของจะแสดงผลค่าระยะทางกับส่วนที่ติดกับของหายผ่านจอ oled พร้อมทั้งมี led แจ้งเตือนสถานะหากของอยู่ห่างเกินไป
- ส่วนที่ติดกับของหายจะแสดงผลค่าระยะทางกับอุปกรณ์ค้นหาของผ่านจอ oled พร้อมทั้งมี buzzer แจ้งเตือนสถานะหากของอยู่ห่างเกินไป ซึ่งจะปลดล็อกปิดเสียงแจ้งเตือนด้วยรหัสผ่านด้วยอุปกรณ์ keypad4x4 ให้ถูกต้องเสียงจาก buzzer จึงดับลง
การทำงานโดยละเอียด
- ติดต่อรับค่าระยะทางโดยคำนวนจากความเข้มสัญญาณ(rssi)ของ wifi ภายบอร์ดทั้งสองฝั่งซึ่งอยู่ในโหมด access point โดยรับค่า rssi ด้วยการสแกนหาบอร์ดตรงข้าม
- ส่งผ่านข้อมูลข้ามบอร์ดแบบ two way ด้วย espnow
ชั้นวางหนังสือที่เช็คว่ามีหนังสืออยู่ครบหรือไม่ มีหนังสือวางอยู่ช่องใดบ้าง โดยมีระบบจัดการชั้นหนังสืออย่างง่ายที่พัฒนาด้วย Django และหน้าเว็บแสดงสถานะของชั้นหนังสือที่พัฒนาด้วย React
อุปกรณ์:
- Nucleo STM32 3 บอร์ด
- NodeMCU ESP32 3 บอร์ด
- LDR 9 ตัว
- Laser LED 9 ตัว
- LED 9 ตัว
- ชั้นหนังสือ
- โฟมสำหรับทำที่กั้น
- ตัวต้านทาน 3.7 k สำหรับ Pull Up ของ I2C
- OLED 128 x 60 3 ตัว
- สายไฟ
คุณสมบัติ:
- ระบบจัดการหนังสือส่วนตัวที่พัฒนาด้วย Django
- หน้าเว็บแสดงสถานะชั้นหนังสือ
- OLED, LED แสดงสถานะและชื่อหนังสือของแต่ละช่อง
- ชั้นหนังสือจะรายงานสถานะของหนังสือในแต่ละช่องไปยังระบบจัดการหนังสือ
ขั้นตอนการทำงาน:
- STM32 จะทำหน้าที่ควบคุมเซนเซอร์ LDR และการแสดงผลออกไปยัง OLED และ LED โดยแสดงชื่อหนังสือที่ได้รับมาจาก ESP32 ผ่านช่องทาง I2C
- ESP32 จะทำหน้าที่รับส่งข้อมูลจากระบบจัดการชั้นหนังสือด้วย HTTP GET และส่งต่อไปยัง STM32 แต่ละบอร์ดผ่านช่องทาง I2C และอ่านค่าสถานะของชั้นหนังสือโดยใช้เส้นสัญญาณเดียวกันกับที่ STM32 ใช้ควบคุม LED และส่งสถานะของหนังสือไปยังระบบจัดการชั้นหนังสือ ทุก ๆ 15-30 วินาที
- ระบบจัดการชั้นหนังสือจะทำหน้าที่ให้บริการการจัดการชั้นหนังสือ และตรวจสอบรายการสถานะหนังสือได้ผ่าน API ของระบบ
รถบังคับควบคุมโดยใช้แอพพลิเคชั่นจากมือถือ
อุปกรณ์
สำหรับตัวรถ:
- Arduino UNO x1
- L293D motor driver Adafruit x1
- Micro-motors & Grippy Wheels x4
- HC-05 Bluetooth Module x1
- 10 mm LED: Red x2
- 10 mm LED: White x2
- Jumper wires
- Battery Holder: 18650 x2
- 18650 battery x2
สำหรับถนนไฟ:
- Arduino UNO x1
- IR sensor x5
- 10 mm LED: White x7
- Jumper wires
สำหรับที่จอดรถ:
- Arduino UNO x1
- Ultrasonic sensor x1
- Battery Holder: 9v x1
- 9v battery x1
- Buzzer x2
- Jumper wires
ขั้นตอนในการทำงาน
1.ตัวรถสามารถควบคุมได้โดยเปิดแอพพลิเคชั่นมือถือแล้วต่อบลูทูธใช้ได้
2.บังคับรถผ่านแอพพลิเคชั่นมือถือกดลูกศรควบคุมตามต้องการ หน้า, หลัง, ซ้ายและขวา(กรณีรถเลี้ยว)
3.สามารถเปิดและปิดไฟรถตามต้องการได้เมื่อกดปุ่มเปิดปิดไฟรถในแอพพลิเคชั่นมือถือ
4. เมื่อตัวรถผ่าน ir sensor ที่ติดถนนไฟ ไฟ LED จะสว่างตามทางที่รถวิ่งผ่านและดับเมื่อรถผ่านไป
5. เมื่อตัวรถถอยหลังเมื่อถึงระยะที่ ultrasonic จับระยะที่กำหนดได้ ตัว buzzer จะดังเป็นจังหวะที่ต่างกันตามระยะที่ ultrasonic จับได้ ซึ่งจะมีเสียงที่ถี่ขึ้นเมื่อเข้าใกล้ ultrasonic
ที่มา: เนื่องจากทุกวันนี้ คนส่วนใหญ่มีปัญหาในการตื่นนอน กลุ่มของเราจึงอยากทำเทคโนโลยีเพื่อช่วยให้เราสามารถตื่นได้ง่ายขึ้น ด้วยการปรับสภาพแวดล้อมให้ร่างกายรับรู้ โดยมีฟังก์ชั่นคือเปิดแสงไฟในห้องให้สว่างขึ้น ปิดแอร์ ปิดพัดลม และเปิดเพลง เมื่อร่างกายรับรู้แล้ว เราก็จะตื่นขึ้น โดยอุปกรณ์ต่าง ๆ จะมีการสั่งงานและตั้งค่าผ่านหน้าเว็บไซต์
ฟีเจอร์:
- ตัวระบบจะเริ่มทำงานเมื่อถึงเวลาก่อนปลุก 30 นาทีโดยในช่วงก่อนปลุกระบบจะทำการปิดเครื่องปรับอากาศ,พัดลม และ ทำการปรับให้หลอดไฟ LED ค่อย ๆ สว่างขึ้น
- เมื่อถึงเวลาปลุกเสียง Buzzer จะดังขึ้นและหลอด LED จะสว่างเต็มที่
- ตัวระบบจะสามารถสั่งให้หยุดการทำงานได้จากการกด Button Switch บนบอร์ดที่มี OLED แสดงสถานะระบบ เมื่อระบบหยุดทำงาน พัดลมจะกลับมาทำงานอีกครั้ง เสียง Buzzer และ หลอด LED จะดับ
- การตั้งเวลาปลุก และการสั่งใช้หรือเลิกใช้งานระบบจะสามารถทำได้ผ่านทางหน้าเว็บ
- ผู้ใช้สามารถสั่งเปิดปิดเครื่องปรับอากาศ, พัดลม และปรับความสว่างหลอด LED ได้ สองช่วงเวลาคือก่อนปลุก 30 นาที และหลังปลุก 15 นาทีผ่านทางหน้าเว็บ
อุปกรณ์:
- NodeMCU esp32s 5 ชิ้น
- Button Switch 3 ชิ้น
- OLED screen 1 ชิ้น
- PWM controller (irf520 mosfet) 1 ชิ้น
- 12V LED 1 ชิ้น
- Relay 5V 1 ชิ้น (สามารถใช้กับ 220 VAC ได้)
- Passive Buzzer 2 ชิ้น
- IR Transmitter 1 ชิ้น
- IR Receiver 1 ชิ้น
เทคนิค
- ใช้ flask ในการเขียน Web Server แล้ว ทำการ Deploy บน Google Cloud และมี public IP address ซึ่งสามารถเข้าได้จากทุกที่
- Web Handler Board จะส่ง http request เพื่อทำการตรวจสอบว่าอยู่ในช่วงเวลาปลุกหรือไม่
ถ้าหากอยู่ในช่วงเวลาปลุก ค่าสถานะบน Server จะถูกอัพเดท
- Board ทุกตัวจะรับข้อมูลสถานะการปลุกปัจจุบันจาก Web Server ผ่าน http request ถ้าหากอยู่ในช่วงเวลา pre-alarm พัดลมและแอร์จะถูกปิด ไฟ LED จะค่อย ๆ สว่างขึ้น ในช่วงเวลานี้จะไม่สามารถเปิดแอร์ หรือเปิดพัดลมแบบ manual ได้เลย
- แต่ละอุปกรณ์จะถูกเขียนการทำงานด้วย ภาษา C และมีการรองรับในกรณีที่ติดต่อ Wifi หรือ Server ไม่ได้
- ถ้าหากพัดลมปิดอยู่ แต่ Board ที่ควบคุมไม่สามารถเชื่อมต่อ Wifi หรือ Server ได้ พัดลมจะกลับมาทำงานตามปกติ
- ถ้าหาก Board ควบคุม LED ไม่สามารถติดต่อ Server ได้ในขณะที่กำลังสว่างอยู่ LED จะค่อย ๆ ดับลงทีละนิด และจะกลับไปอยู่ในสถานะที่ควรจะเป็นเมื่อเชื่อมต่อกับ Server ได้อีกครั้ง
- ใช้เวลาจาก NTP server
- มี OLED แสดงสถานะปัจจุบันใน Web Handler Board
- Buzzer จะดังขึ้นทุกครั้งที่มีการเปลี่ยนแปลงเวลาปลุก
- ใช้ IR Receiver เพื่อรับข้อมูล Protocol จาก Remote จากนั้นจึงนำไปตั้งค่าที่ IR Transmitter
เป็นการจำลองปืนเลเซอร์ที่ใช้ในการเล่น laser tag อย่างง่าย โดยมีเป้าติดไว้ที่ตำแหน่งต่าง ๆ ตามตัวคนแล้วก็ทำการเล็งเลเซอร์ให้โดนเพื่อลดค่า hp เมื่อค่า hp หมดก็ถือว่าแพ้ โดยจะมีเสียงและหน้าจอแสดงผลบนเว็บไซต์แสดงผลอยู่ นอกจากนี้ยังมีคะแนนเวลายิงโดนส่วนต่าง ๆ ด้วย โดยที่แต่ละอวัยวะในร่างกายจะมีคะแนนที่ต่างกัน และยังมีการจับเวลายิงและคะแนนการยิงต่อเนื่องด้วย โดยแต่ละผู้เล่นจะมีจำนวนกระสุนที่จำกัด
ที่มา :
เนื่องจากว่าในปัจจุบันเนื่องจากสถานการณ์โควิด 19 ทำให้การที่จะออกไปเล่น laser tag จริง ๆ นั้นค่อนข้างที่จะความเสี่ยงอยู่ทำให้เราคิดอยากที่จะลองทำ laser tag อย่างง่ายเพื่อเอาไว้ใช้เล่นกับคนในครอบครัวหรือเพื่อนเพียงแค่ 2 คนหรือมากกว่าเล็กน้อย ได้เพื่อความสนุกอย่างปลอดภัย
ฟีเจอร์ :
1.สามารถกดยิงปืนเลเซอร์ได้ โดยจะมีเสียงเวลายิง
2.ตัวเป้า LDR สามารถรับค่าของเลเซอร์ และมีเสียงเวลาโดนยิง
3.มีการแสดงผลของ HP, score, ammo ได้และมีเสียงเวลามีผู้เล่นแพ้หรือชนะ
4.มีเว็บไซต์ในการแสดงผลตัวละครผู้เล่นทั้ง 2 ฝ่ายโดยแสดงได้ว่าส่วนไหนในร่างกายถูกยิงแล้วบ้าง
5.สามารถทำการเชื่อม wifi แล้วเริ่มเกมได้พร้อมกันทั้ง 2 ฝ่าย
6.แสดงผลไฟ LED ของ HP ทั้ง 2 ฝ่ายได้ถูกต้อง
7.สามารถคำนวนคะแนนในแต่ละการยิงโดนและคะแนน 2 เท่าเมื่อยิงโดนต่อเนื่องในเวลา 4 วินาที
8.สามารถชนะแบบพิเศษด้วยการยิงให้ทั้ง 5 ส่วนในร่างกายครบทั้งหมด
อุปกรณ์ :
1.NodeMCU ESP32 จำนวน 3
2.ไฟ LED สีแดง จำนวน 5
3.ไฟ LED สีเขียว จำนวน 5
4.LDR sensor จำนวน 10
5.Laser module จำนวน 2
6.สวิตช์สีเขียว จำนวน 1
7.สวิตช์สีแดง จำนวน 1
8.Buzzer module จำนวน 4
9.ตัวต้านทาน 220 โอห์ม จำนวน 20
เทคนิคที่ใช้ :
1.ทำการเชื่อมต่อสื่อสารกันระหว่าง ESP32 กับ database โดยการเชื่อมต่อ wifi แล้วทำการ GET ข้อมูลผ่าน libary urequests เพื่อทำการเรียกดูและอัพเดทข้อมูลใน database
2.ทำการสร้าง backend โดยการใช้ NestJS เพื่อเชื่อมต่อกับ MongoDB แล้วทำการเรียกดูและอัพเดทข้อมูลใน database ผ่าน ESP32 ทั้ง 3 บอร์ด
3.สร้าง socket server บน Node MCU ESP32 สำหรับสร้าง web server เพื่อแสดงผลของเกม โดยจะตอบสนอง client ที่ request เข้ามาด้วย html และ CSS
4.โปรแกรมใน ESP32 ทั้ง 3 บอร์ดใช้ python ในการเขียนทั้งหมดผ่านทาง Thonny โดยทำการใช้ประโยชน์ของ _thread module ในการสร้างการทำงานแบบ thread เพื่อที่จะสามารถทำงานของ function ที่ต้องมีการ delay ให้มีการทำงานพร้อม ๆ กันได้อย่างถูกต้อง
ปัญหา คือ กระบอกน้ำของ Nespresso จะติดตั้งอยู่ด้านหลังเครื่องชงกาแฟ Nespresso จึงทำให้ตรวจสอบระดับน้ำสำหรับชงกาแฟได้ยาก ทางนิสิตจึงคิดค้นระบบตรวงจับระดับของน้ำของเครื่องชงกาแฟ Nespresso โดยเซนเซอร์จะติดกับฟาครอบถัง และจะตรวจวัดระดับน้ำตลอดเวลา ทุกครั้งที่ระดับน้ำลดไปต่ำกว่า 15 cm หรือต่ำกว่าระดับที่สามารถกดชงกาแฟแบบ Long shot หรือ lungo ได้ จะมีสัญญาณเตือน พร้อมไฟ และเสียง อีกทั้งยังสามารถตรวจวัดระดับน้ำได้ตลอดเวลา ผ่านทางสัญญาณ บลูทูธ BLE ตลอดเวลา
อุปกรณ์
1. Nucleo STM32 1 บอร์ด
2. NodeMCU ESP32 1 บอร์ด
3. Ultrasonic sensor (HC-SR04)
4. Buzzer 1 ตัว
5. OLED 1 ตัว
6. LED 1 ตัว
7. Switch 1 ตัว
8. Jumper Wire 30 เส้น
9. Resistor 1k ohm 1ตัว
10. Resistor 220 ohm 1 ตัว
การทำงาน
1. กดปุ่ม เปิด/ปิด เพื่อควยคุมการทำงานของ Ultrasonic sensor
2. Ultrasonic sensor จะถูกติดตั้งไว้ที่ปากของกระบอกน้ำหลังเครื่อง Nespresso เพื่อวัดระดับน้ำสำหรับใช้ชงกาแฟ
3. ถ้าระดับน้ำลดต่ำกว่า 15 cm LED จะติด และตัว Buzzer จะส่งเสียงร้องเพื่อให้เติมน้ำ
4. เมื่อเติมน้ำลงไปแล้วระดับน้ำในกระบอกจะสูงขึ้นเรื่อยๆ เมื่อสูงกว่า 15 cm ตัว LED ก็จะดับและ Buzzer ก็จะเงียบลง
5. สามารถตรวจสอบระกับน้ำในกระบอกได้ จากแอพพลิเคชั่นตรวจสอบ BLE ในโทรศัพท์มือถือ
ระบบที่จะตรวจจับในห้องครัวหากครัวมีความร้อนโดยไม่มีคนเฝ้าเป็นเวลานาน ซึ่งเสี่ยงที่จะเกิดอันตรายหรือไฟไหม้ได้ ระบบจะทำการแจ้งเตือนไปยังห้องที่มีคนอยู่ โดยมีการทำงานดังนี้
ห้องครัว : มีบอร์ด Nucleo ต่อกับ ESP32 โดยใช้ Nucleo รับ input แล้วส่งค่าสถานะการแจ้งเตือนให้ ESP32 ผ่าน I2C โดยในห้องครัวมีการทำงานดังนี้
1. ตรวจจับอุณหภูมิในครัวโดยใช้ Thermistor
2. ตรวจจับการเคลื่อนไหวโดยใช้ PIR Sensor
3. หากอุณหภูมิเกินกำหนดและตรวจจับไม่เจอการเคลื่อนไหวในห้อง จะให้สถานะการแจ้งเตือนเป็น 1
4. ESP32 จะรับค่าสถานะการแจ้งเตือนจาก Nucleo ทุกๆ 0.5 วินาที ผ่าน I2C
5. หากรับค่าสถานะการแจ้งเตือนเป็น 1 ครบ 5 รอบ ค่าสถานะที่ถูกส่งไปยังบอร์ดในห้องอื่นๆจะเป็น 1 เป็นการส่งสัญญาณแจ้งเตือนไปยังห้องอื่นๆ
ห้องอื่นๆ : มีเฉพาะบอร์ด ESP32 ใช้ในการรับค่าจากบอร์ดในห้องครัว มีการตรวจจับการเคลื่อนไหวและแจ้งเตือน
1. ตรวจจับการเคลื่อนไหวโดยใช้ PIR Sensor
2. รับค่าจากบอร์ด ESP32 ในห้องครัวโดยใช้ Socket ส่งข้อมูลผ่าน WiFi
3. หากตรวจจับเจอการเคลื่อนไหวในห้อง และได้รับสถานะการแจ้งเตือนจากห้องครัวเป็น 1 จะมีการแจ้งเตือนโดยใช้ Buzzer
อุปกรณ์
- NUCLEO-L432KC 1 บอร์ด
- ESP32 4 บอร์ด
- Thermistor 1 ตัว
- Resistor 10k ohm 1 ตัว
- PIR Sensor 4 ตัว
- Buzzer 3 ตัว
- สายไฟ