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

01204322 Embedded Systems

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

กลุ่มที่ 1 : Spinning_Animal.mp4
นายปัญญวัฒน์ ครองกิติชู
นายภาคภูมิ อจละนันท์
นายสิรภัทร สิริภัทรวณิช
นายภาสวิชญ์ ลอยมา
ศุภกฤต สงสุวงค์
ชื่อโครงงาน: Spinning Panel
รายละเอียด:

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

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

  1. เพื่อทำให้สามารถรับแสงได้ดีที่สุดในทุกเวลา
  2. สามารถให้ผู้ใช้ตรวจสอบผ่านทั้งเว็บไซต์และจอแสดงผลได้

ฟีเจอร์

  1. หมุนแผ่นรับแสงโดยอัติโนมัติตามทิศทางของแสง
  2. แสดงผลผ่านจอ OLED
    1. จำนวนไฟที่ผลิตได้
    2. ผลิตไฟไปเท่าไรแล้ว
    3. ค่าไฟที่ลดไปได้
  3. แสดงผลผ่าน node-red
    1. มุมของแสงในแนวตั้ง
    2. มุมของแสงในแนวฐาน
    3. กราฟแสดงความเข้มแสง

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

แผนภาพแสดงการทำงานของระบบ

การทำงานของบอร์ดต่างๆ

บอร์ดที่ 1 สำหรับอ่านค่าแสง

ทำการรับค่าแสง แล้วส่งไปให้บอร์ดประมวลผล

Screenshot-2024-03-06-153305.png

มีการประมวลผลค่าเเสงที่ได้รับให้ออกมาเป็นค่ามุมองศาที่ตัวเเผ่นรับเเสงต้องหันไป โดยจะเเบ่งเป็นมุมราบ 360 องศา เเละมุมดิ่ง 90 องศา เพื่อให้ทิศทางที่เเผ่นรับเเสงหันไปได้เป็นครึ่งทรงกลม

Screenshot-2024-03-06-153647.png

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

บอร์ดที่ 2 สำหรับประมวลผล

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

บอร์ดที่ 3 สำหรับแสดงผลใน Node-Red

รับข้อมูลค่าความเข้มแสงเฉลี่ยและมุมแกน x และ y ของมอเตอร์มาแสดงใน node red dashboard โดยข้อมูลจะส่งจากบอร์ด esp32 ไปยังคอมพิวเตอร์ที่รัน node red server ด้วยโปรโตคอล UDP

Screenshot-2567-03-06-at-18.58.23.png

รับข้อมูลเป็นทิศทางของ servo แกน x และ y กับค่าเฉลี่ยของ LDR ทั้ง 4 ตัวจากบอร์ด backbone จากนั้นส่งข้อมูลให้ node red server ไปนำเสนอในรูปแบบ dashboard บนหน้าเว็บ

ใน dashboard แสดง sun height (ค่า servo แกน y), sun rotation (ค่า servo แกน x) และกราฟค่าความสว่างเทียบกับเวลา (ค่าเฉลี่ยของ LDR ทั้ง 4 ตัว)

บอร์ดที่ 4 สำหรับควบคุมทิศทางการหมุนแผ่นรับแสง

มีการรับค่าองศาที่บอกทิศทางแสงมาจากบอร์ดประมวลผล ผ่าน esp_now เพื่อมาใช้ควบคุมการหมุนของ servo

ใช้ servo 2 ตัวในการควบคุม

บอร์ดที่ 5 สำหรับแสดงผลในรูปแบบจอ OLED

มี 3 โหมดในการแสดงผลคือ

  1. จำนวนไฟที่ผลิตได้
  2. ผลิตไฟไปเท่าไรแล้ว
  3. ค่าไฟที่ลดไปได้

อุปกรณ์

  • NodeMCU ESP-WROOM-32S จำนวน 5 ตัว
  • LDR 5mm Photocell Photoresistor จำนวน 4 ตัว
  • MG90S Servo Motor จำนวน 2 ตัว
  • 0.96" I2C 128x64 OLED Display จำนวน 1 ตัว
  • resistor 10k ohm จำนวน 4 ตัว
  • breadboard จำนวน 5 ตัว

เครื่องมือพัฒนา

  1. Arduino IDE
  2. Node Red
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-14 12:50:33 โดย b6410504373
กลุ่มที่ 2 : Sixth Sense
นายญาโณทัย ไชยธวัช
นายพีรณัฐ ตรีวิภานนท์
นายกรพล กุลกรินีธรรม
นายชวัลวิทย์ จอมวรวงศ์
นายวรกร คุณวุฒิฤทธิรณ
นายญาณกร บรรจงวัฒน์ธนา
ชื่อโครงงาน: I KNOW WHERE U ARE | CSI Object Localization using MLP Calculation
รายละเอียด:

"I KNOW WHERE U ARE"

ผู้จัดทำ

  1. นาย ญาโณทัย ไชยธวัช 6410500211
  2. นาย พีรณัฐ ตรีวิภานนท์ 6410500289
  3. นาย วรกร คุณวุฒิฤทธิรณ 6410501102
  4. นาย กรพล กุลกรินีธรรม 6410501072
  5. นาย ชวัลวิทย์ จอมวรวงศ์ 6410501081
  6. นาย ญาณกร บรรจงวัฒน์ธนา 6410504071

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

I KNOW WHERE YOU ARE เป็นการทำ Object Localization ผ่านการใช้ข้อมูล Channel State Information (CSI) ที่เก็บจากบอร์ด ESP32 แล้ววิเคราะห์ทำ Classification โดยใช้เทคนิค Multilayer Perceptron (MLP) เอาผลลัพธ์ไปแสดงว่าตำแหน่งของคนที่ยืนอยู่ในพื้นที่อยู่ตรงไหนผ่าน Realtime Website, LINE Notify และแสดงผลบนจอ OLED

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

การนำข้อมูลของ Channel State Information (CSI) มาใช้วิเคราะห์ทำ Object Localization มีเพิ่มขึ้นเรื่อยๆ โดยวิธีการที่นักวิจัยส่วนใหญ่ใช้วิเคราะห์จะเป็น Convolutional Neural Network (CNN) เนื่องจากเป็นงานที่ใช้วิเคราะห์รูปภาพกราฟ แต่กลุ่มของเราต้องการทดสอบว่าหากเราใช้ Multilayer Perceptron (MLP) เพื่อดูว่าหากใช้วิธีดังกล่าวจะได้ผลลัพธ์คล้ายกับการทำ CNN หรือไม่

งานที่ทำ Object Localization ด้วย CSI จะเหมาะที่จะนำไปใช้ในพื้นที่ที่เราต้องการความเป็นส่วนตัวเช่นในห้องนอน โรงพยาบาล หรือหากใช้ในสายงานเกษตร สามารถใช้แสดงผลตำแหน่งที่สัตว์ชอบอยู่ในเวลาต่างๆของวันได้ โดยประหยัดพลังงานมากกว่าใช้กล้องจับภาพ

คุณสมบัติ

  • แสดงตำแหน่งของ Object ได้แบบ Realtime
  • จอ OLED แสดงภาพคนเดินในตำแหน่งที่ตรวจพบ Object
  • ส่งข้อความแจ้งเตือนผ่าน LINE Notify ทุกครั้งที่เกิดการเปลี่ยนแปลงตำแหน่งของ Object
  • แสดงแผนภาพตำแหน่งของ Object บน Website

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

I KNOW WHERE YOU ARE ประกอบด้วย ESP32 ทั้งหมด 6 ตัวโดยแบ่งหน้าที่เป็น Transmitter 2 ตัว, Receiver 2 ตัว, อุปกรณ์แจ้งเตือน Line Notify 1 ตัว, และอุปกรณ์ควบคุมจอ OLED 1 ตัว

Overview of "I KNOW WHERE YOU ARE" system

1.Transmitters and Receivers

Setup: Transmitter and Receiver

based on Steven M. Hernandez's Github repo.

ใช้ ESP32 4 ตัว, Config คู่รับ-ส่ง 2 คู่

2.Data Preprocessing and Machine Learning

Overview of Machine Learning

แผนการผังวงจรหน้าจอ

Data Collection

ตัวอย่างการ setup พื้นที่

การจัดเรียงช่อง 16 ช่อง

ภาพที่แสดงบนหน้าจอ

การส่งข้อความให้ line

หน้าตา Frontend

หน้าตา Backend

อุปกรณ์

• NodeMCU ESP32 จำนวน 4 ตัว

• powerbank จำนวน 3 ตัว

• คอมพิวเตอร์ จำนวน 1 เครื่อง

• สายชาร์จ usb micro จำนวน 4 ตัว

• OLED จำนวน 1 ตัว

Design

• Figma

Frontend

• React

Backend

• Fastapi

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-09 20:18:14 โดย b6410501081
กลุ่มที่ 3 : ตื่นๆ สายแล้ว
นายศิลา สนปี
นายศุภวิชญ์ เสรีพาณิชย์การ
นางสาวแพรเพชร ต่อไพบูลย์
นายสิทธิพล เหล่าวิวัฒน์เกษม
ชื่อโครงงาน: Smart Heart Box
รายละเอียด:

Smart Heart Box

boxes

ผู้จัดทำ

  1. ศิลา สนปี (Sila Sonpee)
  2. ศุภวิชญ์ เสรีพาณิชย์การ (Supawit Seripanitkarn)
  3. แพรเพชร ต่อไพบูลย์ (Praepech Tophaiboon)
  4. สิทธิพล เหล่าวิวัฒน์เกษม (Sittipol Laowiwatkasem)

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

Smart Heart Box ประกอบไปด้วยกล่องอัจฉริยะจำนวน 1 คู่ (2 กล่อง) เป็นอุปกรณ์ที่มีความสามารถในการเชื่อมต่อกันเองและเชื่อมต่อกับเว็บแอปพลิเคชั่น ซึ่งมุ่งเน้นให้ผู้ใช้สามารถสื่อสารความรักและความห่วงใยไปยังคนที่พวกเขารักผ่านทางข้อความได้อย่างไร้ขีดจำกัด

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

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

คุณสมบัติ

  • ส่งข้อความหาคนที่คุณรักผ่านข้อความพื้นฐานภายในกล่อง ไปแสดงผลบนหน้าจอของอีกฝ่าย
  • เมื่อมีข้อความเข้ามาหัวใจที่อยู่หน้ากล่องจะสั่น และจะหยุดสั่นเมื่อเจ้าของเปิดฝากล่องเพื่ออ่านข้อความ
  • ส่งข้อความหาคนที่คุณรักผ่านเว็บแอปพลิเคชันไปแสดงผลบนหน้าจอของ Smart Heart Box
  • สามารถปรับแก้และตั้งชุดข้อความพื้นฐานผ่านเว็บแอปพลิเคชันได้ เพื่อให้สามารถเลือกส่งข้อความจาก Smart Heart Box ของตนไปหาคนที่รักได้อย่างง่ายดาย

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

SmartHeart_Diagram drawio-4

แผนผังวงจร (Smart Heart Box 2 กล่อง)

Screenshot 2567-03-02 at 22 53 55

Screenshot 2567-03-02 at 22 53 55

เว็บแอปพลิเคชั่น

1 2

Smart Heart Box No.1

box1

บอร์ดที่ 1 สำหรับรับข้อความจาก MQTT และส่งข้อความไปบอร์ดที่ 2

Box1

ประกอบด้วยอุปกรณ์ดังนี้
  • ESP32
  • LDR
  • SG90 Micro Servo
  • Resistor 10k
  • Breadboard
  • Power Bank
การทำงานของบอร์ดที่ 1 มีดังนี้ - รับข้อมูลจากการ subcribe จาก MQTT Broker - แสดงผลเมื่อ MQTT มีข้อมูลเข้ามา จะมีการเปลี่ยนแปลง ดังนี้ - SG90 Micro Servo ทำการสั่นหัวใจ เพื่อแสดงให้เห็นว่ามีข้อความเข้ามา - LDR ทำการวัดความเข้มแสง เพื่อเช็คว่ามีการเปิดฝากล่องหรือไม่ หากมีการเปิดกล่อง จะทำการหยุดการสั่นของหัวใจ - ส่ง message ไปยัง ESP32 อีกตัวภายในกล่องเดียวกัน ด้วย ESP-NOW

บอร์ดที่ 2 สำหรับแสดงผลและส่ง default message ไป Smart Heart Box อีกกล่องหนึ่ง

Box1 (2)

ประกอบด้วยอุปกรณ์ดังนี้ - NodeMCU ESP32 - Push Button - LCD 16x2 - Breadboard - Power Bank การทำงานของบอร์ดที่ 2 มีดังนี้ - รับข้อมูลจากบอร์ดที่ 1 ด้วย ESP-NOW จะแสดงผลบนหน้าจอ LCD 16x2 และเมื่อกดปุ่มด้านขวา (ปุ่ม OK) จะทำการ dequeue ข้อความที่อยู่ใน queue - รับ message จาก API เพื่อเปลี่ยนแปลง default message ที่จะส่งไปยังอีกกล่องหนึ่ง - หากไม่มีข้อความที่อยู่ใน queue จะสามารถส่ง Default message ที่ถูกตั้งไว้ได้ - ปุ่มด้านซ้าย (ปุ่ม Next) เลือก default message ข้อความอื่น (มีทั้งหมด 3 ข้อความ) - ปุ่มด้านขวา (ปุ่ม OK) ยืนยันการเลือกข้อความ และทำการส่งข้อความไปยังอีกกล่องหนึ่ง ### Smart Heart Box No.2

box2

บอร์ดที่ 3 สำหรับรับข้อความจาก MQTT และส่งข้อความไปบอร์ดที่ 4

Box2

ประกอบด้วยอุปกรณ์ดังนี้

  • NodeMCU ESP32
  • LDR
  • SG90 Micro Servo
  • Resistor 10k
  • Breadboard
  • Power Bank

การทำงานของบอร์ดที่ 1 มีดังนี้

  • รับข้อมูลจากการ subcribe จาก MQTT Broker
  • แสดงผลเมื่อ MQTT มีข้อมูลเข้ามา จะมีการเปลี่ยนแปลง ดังนี้
    • SG90 Micro Servo ทำการสั่นหัวใจ เพื่อแสดงให้เห็นว่ามีข้อความเข้ามา
    • LDR ทำการวัดความเข้มแสง เพื่อเช็คว่ามีการเปิดฝากล่องหรือไม่ หากมีการเปิดกล่อง จะทำการหยุดการสั่นของหัวใจ
  • ส่ง message ไปยัง ESP32 อีกตัวภายในกล่องเดียวกัน ด้วย ESP-NOW

บอร์ดที่ 4 สำหรับแสดงผลและส่ง default message ไป Smart Heart Box อีกกล่องหนึ่ง

Box2 (2)

ประกอบด้วยอุปกรณ์ดังนี้

  • NodeMCU ESP32
  • Push Button
  • LCD 16x2
  • Breadboard
  • Power Bank

การทำงานของบอร์ดที่ 2 มีดังนี้

  • รับข้อมูลจากบอร์ดที่ 1 ด้วย ESP-NOW จะแสดงผลบนหน้าจอ LCD 16x2 และเมื่อกดปุ่มด้านขวา (ปุ่ม OK) จะทำการ dequeue ข้อความที่อยู่ใน queue
  • รับ message จาก API เพื่อเปลี่ยนแปลง default message ที่จะส่งไปยังอีกกล่องหนึ่ง
  • หากไม่มีข้อความที่อยู่ใน queue จะสามารถส่ง Default message ที่ถูกตั้งไว้ได้
    • ปุ่มด้านซ้าย (ปุ่ม Next) เลือก default message ข้อความอื่น (มีทั้งหมด 3 ข้อความ)
    • ปุ่มด้านขวา (ปุ่ม OK) ยืนยันการเลือกข้อความ และทำการส่งข้อความไปยังอีกกล่องหนึ่ง

อุปกรณ์

  • NodeMCU ESP32 [จำนวน 4 ตัว]
  • Push Button [จำนวน 4 ตัว]
  • LCD 16x2 [จำนวน 2 ตัว]
  • LDR [จำนวน 2 ตัว]
  • SG90 Micro Servo [จำนวน 2 ตัว]
  • Breadboard 8.5x5.5cm [จำนวน 6 ตัว]
  • Resistor 10k [จำนวน 2 ตัว]
  • Power Bank [จำนวน 3 ตัว]

Stack

Hardware

Library

  • บอร์ดสำหรับรับข้อความจาก MQTT และส่งข้อความไปอีกบอร์ดภายในกล่อง
    • Arduino.h
    • WiFi.h
    • esp_now.h
    • ESP32PWM.h
    • ESP32Servo.h
    • PubSubClient.h
  • บอร์ดสำหรับแสดงผลและส่ง default message ไป Smart Heart Box อีกกล่องหนึ่ง
    • Arduino.h
    • Wire.h
    • LiquidCrystal_I2C.h
    • esp_now.h
    • WiFi.h
    • HTTPClient.h
    • ArduinoJson.h
    • PubSubClient.h

Design

  • Figma
  • Wokwi

Frontend

  • React
  • Tailwind

Backend

  • Golang
  • Fiber
  • MongoDB

Message Broker

  • Mosquitto MQTT Broker
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-10 00:07:56 โดย b6410500335
กลุ่มที่ 4 : All for one
นางสาวจิณณพิชญ์ ธีรชัยไพศาล
นายนภนต์ ตันศิริ
นายพีรพัฒน์ จตุภัทรเสนี
นางสาวแพรวา ฮอนด้า
นายศศิศ กิตติธนะพันธ์
นายรุษฐนพล อูปทอง
ชื่อโครงงาน: Sir Locker
รายละเอียด:

Sir-Locker

main


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

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


รายละเอียด

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

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

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

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

ทุกบอร์ดที่ใช้จะมี ESP32 (NodeMCU) สำหรับการสื่อสารระหว่างบอร์ดแบบไร้สาย (Wireless) โดยใช้ ESP-NOW โดยบอร์ดจะมี 6 ประเภท คือ บอร์ดสแกนบัตร, บอร์ดปุ่มกด, บอร์ด LCD, บอร์ด Grove - Ultrasonic Ranger, บอร์ด LED และ Buzzer, บอร์ด Servo โดยใช้ ArduinoIDE ในการพัฒนา

  1. บอร์ด RFID/NFC (ตัวอ่านค่าบัตร์)
    • Source Code: Card.ino
    • Libraryesp_now.h, WiFi.h, MFRC522.h, SPI.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1] ,RFID RC522 [1]
    • การทำงาน
      • โหมดเปิด/ปิด รับค่าจากบัตร เพื่อเปิดปิดประตูโดยจะเช็คกับข้อมูลบัตรที่ลงทะเบียนไว้ถ้าตรงจะเปิดประดู และคณะที่ประตูเปิดอยู่จะไม่สามารถแต่บัตรได้
      • โหมด register จะเช็คก่อนว่ามีบัตรลงทะเบียนไว้หรือไม่ถ้าไม่มีจะต้องให้ register ก่อน โดยการ register จะให้แต่บัตรและระบบจะไป active บัตรนั้นละให้คุณใส่ pin
      • โหมด reset จะต้องแต่บัตร ที่ลงทะเบียนไว้หลังจากนั้นจะให้ใส่ pin ที่ลงทะเบียน ถ้าแตะบัตรทีไม่ลงทะเบียนจะแจ้งเตืองว่า คุณไม่ใช่เจ้าของ
  2. บอร์ด Keypad ปุ่มกด
    • Sorce code: keypad.ino
    • Library: esp_now.h, WiFi.h, Keypad.h, Wire.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1], Numpad 4x4 [1]
    • การทำงาน:
      • ปุ่ม A คือ ปุ่ม Register ไว้สำหรับลงทะเบียนการใช้ล็อกเกอร์เพื่อเป็นเจ้าของโดยที่เมื่อกดปุ่ม A จะส่งข้อมูลไปยังบอร์ดสแกนบัตรเพื่อทำการสแกนบัตร และ บอร์ด LCD เพื่อแสดงข้อความ Register หลังจากนั้นรับข้อมูลจากบอร์ดสแกนบัตรเมื่อสแกนบัตรแล้วโดยให้ใส่รหัสผ่านผ่านปุ่มตัวเลขและกดยืนยันที่ปุ่ม # ปุ่ม * เพื่อเคลียร์รหัสผ่านที่พิมเพื่อพิมรหัสอีกครั้ง
      • ปุ่ม B คือ ปุ่ม Reset ไว้สำหรับการยกเลิกการเป็นเจ้าของโดยเมื่อกดปุ่มจะส่งข้อมูลไปบอร์ดสแกนบัตรเพื่อสแกนบัตรและใส่รหัสผ่านที่ปุ่มกดเมื่อสแกนบัตรแล้ว ส่งข้อมูลไปบอร์ด LCD แสดงข้อความ Reset Complete
      • ปุ่ม C คือ ปุ่ม Forget card ไว้สำหรับกรณีลืมบัตรแล้วต้องการใส่รหัสผ่านแทน เมื่อกดปุ่มจะทำการใส่รหัสผ่าน ถ้าใส่รหัสผ่านผิด จะทำการส่งข้อมูลให้บอร์ด LED และ Buzzer เมื่อรหัสผ่านถูก ส่งข้อความให้บอร์ด LCD แสดงข้อความ และ บอร์ดServo , บอร์ด LED และ Buzzer , บอร์ดสแกนบัตร ว่าให้เป็นสถานะประตูเปิด
      • ขณะสถานะประตูเปิดจะไม่สามารถกดปุ่มได้ รอรับข้อมูลจากบอร์ด servo เพื่อรับสถานะประตูปิด ปุ่มกดก็จะสามารถใช้งานได้อีกครั้ง
    บอร์ด Keypad
  3. บอร์ด LCD แสดงข้อความ
    • Sorce code: LCD.ino
    • Library: esp_now.h, WiFi.h, LiquidCrystal_I2C.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1], LCD I2C [1]
    • การทำงาน: เมื่อได้รับค่าตัวเลขที่ส่งมาจากบอร์ดสแกนบัตร, บอร์ดปุ่มกด, หรือบอร์ด Servo จะนำเอาค่าที่ได้ไปแปลงเป็นข้อความ และนำมาแสดงบนหน้าจอ LCD
    บอร์ด LCD
  4. บอร์ด Grove - Ultrasonic Ranger วัดระยะทางประตู
    • Sorce code: Ultrasonic_sen.ino
    • Library: esp_now.h, WiFi.h, Ultrasonic.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1], Grove - Ultrasonic Ranger [1]
    • การทำงาน: Grove - Ultrasonic Ranger จะวัดระยะห่างระหว่างตัวอุปกรณ์กับประตูล็อกเกอร์ ตัวบอร์ดมีการส่งค่าสถานะประตูไปให้บอร์ด Servo ทุก 1 วินาที โดยหากประตูเปิด(ระยะห่างระหว่างตัวอุปกรณ์กับประตู >= 3 cm)จะส่งค่า 0 ไปให้บอร์ด Servo หากประตูปิด(ระยะห่างระหว่างตัวอุปกรณ์กับประตู < 3 cm)ค้างนานเกิน 3 วินาที จะส่งค่า 1 ไปให้บอร์ด Servo
    บอร์ด Grove - Ultrasonic Ranger
  5. บอร์ด Servo ล็อคประตู
    • Sorce code: servo.ino
    • Library: esp_now.h, WiFi.h, ESP32Servo.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1], SG90 servo motor [1]
    • การทำงาน: เมื่อได้รับสัญญาณสั่งให้เปิดมาจาก ตัวแสกนบัตร หรือ ปุ่มกดรหัส และ ultrasonic sensor จะทำการหมุน servo 90 องศาเพื่อปลดล็อคหลังจากนั้นจะส่งสัญญาณว่าเปิดไปให้ ไฟสถานะ, เสียง, ตัวแสกนบัตร และ ปุ่มกดรหัส
    บอร์ด Servo
  6. บอร์ด LED กับ Buzzer
    • Source Code: led.ino
    • Libraryesp_now.h, WiFi.h
    • อุปกรณ์ที่ใช้ในส่วนของ Hardware: NodeMCU ESP32 [1] ,Led RGB 3 ขา [1] ,Active Buzzer [1]
    • การทำงาน
      • รับค่าจากตัวเเตะบัตร ถ้าบัตรตรงกับที่ลงทะเบียนไว้ จะเเสดงไฟสีเขียวเเละมีเสียง เเละถ้าบัตรไม่ตรงกับที่ลงทะเบียนไว้จะเเสดงไฟสีเเดงเเละมีเสียง
      • รับค่าจาก keypad เมื่อมีการลงทะเบียนสำเร็จจะเเสดงไฟสีม่วงเเละมีเสียง
      • กรณีลืมบัตร จะรับค่าการกดรหัสมาจาd keypad ถ้ารหัสตรงกับที่ลงทะเบียนไว้ จะเเสดงไฟสีเขียวเเละมีเสียง เเละถ้ารหัสไม่ตรงกับที่ลงทะเบียนไว้จะเเสดงไฟสีเเดงเเละมีเสียง **เสียงจากไฟ led สีเเดง เขียว ม่วง เเต่ละเสียงเป็นเสียงที่เเตกต่างกัน**

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

  • NodeMCU 6 บอร์ด
  • Keypad 4x4 1 ชิ้น
  • ตัวอ่านการ์ด RFID 1 ชิ้น
  • การ์ด 2 ใบ
  • Grove-Ultrasonic Ranger 1 ตัว
  • Servo motor 1 ตัว
  • Breadboard 4 ชิ้น
  • จอ LCD 1 จอ
  • LED 1 หลอด
  • Buzzer 1 ตัว
  • กระดาษลัง
  • สายไฟ
  • Powerbank 3 เครื่อง

Github : Sir-Locker

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-05 23:40:45 โดย b6410504004
กลุ่มที่ 5 : บิดแล้วรวย ซวยแล้วคุณ
นางสาวภัทรวรรณ ศิริประเสริฐสุข
นายกิตติชัย ตั้งปรัชญาวุธ
นายรัชชานนท์ ทวีพงศธร
นายวัลลภ วิวิธวรรัตน์
นายอธิชา แพรไพจิตรกุล
ชื่อโครงงาน: Blackjack Machine
รายละเอียด:

Blackjack Machine


Blackjack Machine

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

การเล่นเกม Blackjack นั้นจำเป็นที่จะต้องมีดีลเลอร์(Dealer) ที่เป็นมนุษย์คอยทำการแจกไพ่และทำการคืนเงินที่ผู้เล่นได้ทำการลงพนันไป ทางกลุ่มผู้จัดจึงมีความสนใจในการทำขั้นตอนการเล่นเกม Blackjack โดยที่ไม่จำเป็นต้องมีดีลเลอร์ที่เป็นมนุษย์คอยดำเนินเกมและทำการคืนเงิน โดยให้เกม Blackjack นั้นสามารถเล่นได้โดยมีแค่ผู้เล่นฺ

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

Blackjack Machine เป็นเครื่องเล่นเกม Blackjack ประกอบไปด้วย ดีลเลอร์(Dealer) ที่ทำหน้าที่ดำเนินเกม แจกไพ่ และประกาศผลผู้ชนะไปยังผู้เล่น(Player) ทั้งสองคน โดยผู้เล่นแต่ละคนสามารถหยอดเหรียญเพื่อทำการพนันเงิน หากผู้เล่นชนะดีลเลอร์จะได้รับรางวัลเป็น 2 เท่าจากเงินที่ลงไป เมื่อผู้เล่นต้องการจะเลิกเล่น สามารถกดปุ่มเพื่อถอนเงินที่เหลือออกจากเครื่องได้

คุณสมบัติ

  • หยอดเหรียญเพื่อแลกเป็นเครดิต(Credit) ในการลงพนัน
  • จอ OLED แสดงสถานะเกมจากฝั่งดีลเลอร์
  • จอ OLED แสดงสถานะและการควบคุมจากฝั่งผู้เล่น
  • ผู้เล่นสามารถเลือกจำนวนเครดิตที่จะใช้พนันในแต่ละรอบ
  • ผู้เล่นสามารถเลือกฮิต(Hit, ขอจั่วไพ่เพิ่ม) หรือ แสตนด์(Stand, ไม่จั่วไพ่เพิ่มแล้ว)
  • การประกาศผลแพ้ชนะ และคำนวณเครดิตรางวัลของผู้เล่น
  • แลกเครดิตที่ผู้เล่นมีคืนออกมาเป็นเหรียญ
  • จอ OLED แสดงสถานะของเครื่องรับและจ่ายเหรียญ
  • ปุ่มฉุกเฉินสำหรับบังคับจ่ายเหรียญคืน

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

Blackjack Machine ประกอบไปด้วยเครื่องที่เป็นดีลเลอร์ 1 เครื่อง ผู้เล่น 2 เครื่อง และเครื่องรับคืนเหรียญสำหรับแต่ละผู้เล่นอีก 2 เครื่อง โดยแต่ละเครื่องจะใช้ NodeMCU ESP32 เป็นหน่วยประมวลผล และใช้โปรโตคอล ESP-NOW ในการติดต่อสื่อการกันระหว่างเครื่องแบบไร้สาย(Wireless)

ดีลเลอร์จะเป็นผู้ที่ดำเนินเกม ติดตามสถานะเกม และคอยจัดการให้ผู้เล่นทั้งสองอยู่ใน State ที่ถูกต้องและพร้อมเพรียงกันทั้งสองเครื่อง โดยดีลเลอร์จะมี State ของเกมอยู่ 4 แบบ คือ
1. Waiting State ช่วงก่อนเริ่มเกม
2. Betting State ช่วงตัดสินใจลงเครดิตพนันสำหรับผู้เล่น
3. Playing State ช่วงตัดสินใจเลือกตัวเลือกการเล่นสำหรับผู้เล่น
4. Result State ช่วงการตัดสินผลแพ้ชนะของผู้เล่น

และในการติดต่อสื่อสารกันระหว่างเครื่อง จะใช้สัญญาณทั้งหมด 9 แบบ คือ
1. Reset Signal สัญญาณที่ดีลเลอร์บอกให้ผู้เล่นเริ่มต้นใหม่
2. State Change Signal สัญญาณที่ดีลเลอร์บอกให้ผู้เล่นเปลี่ยนสถานะ
3. Start Signal สันญาณที่ผู้เล่นบอกดีลเลอร์ว่าพร้อมแล้ว
4. Betting Signal สัญญาณที่ผู้เล่นบอกดีลเลอร์ว่าตัดสินใจลงเครดิตพนันแล้ว
5. Hit Signal สัญญาณที่ผู้เล่นบอกดีลเลอร์ว่าขอจั่วไพ่เพิ่ม
6. Stand Signal สัญญาณที่ผู้เล่นบอกดีลเลอร์ว่าไม่ขอจั่วไพ่เพิ่มแล้ว
7. Result Signal สัญญาณที่ดีลเลอร์ประกาศผลตัดสินแพ้ชนะ
8. Insert Signal สัญญาณที่เครื่องรับเหรียญบอกผู้เล่นว่ามีการหยอดเหรียญ
9. Withdraw Signal สัญญาณที่ผู้เล่นบอกเครื่องรับเหรียญให้คืนเหรียญคืนตามจำนวนเครดิตที่มี

ดีลเลอร์มีขั้นตอนการตัดสินใจตาม Flow Diaagram ด้านล่าง

1. บอร์ดดีลเลอร์

Source code: Dealer

Library

  • esp_now.h
  • WiFi.h
  • SPI.h
  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • card_icon.h
  • card_printer.h

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

  • NodeMCU ESP32 [จำนวน 1 ตัว]
  • OLED Screen SSD1306 128x32 [จำนวน 1 ตัว]
  • Breadboard [จำนวน 1 ตัว]

แผนผังวงจรบอร์ดดีลเลอร์



การทำงานของบอร์ดดีลเลอร์

  1. เมื่อเริ่มระบบ จะทำการลงทะเบียนบอร์ดผู้เล่นผ่านโปรโตคอล ESP-NOW เพื่อเริ่มการส่งข้อมูลระหว่างดีลเลอร์และผู้เล่น
  2. เริ่มต้นโดยทำการส่ง Reset Signal ไปยังบอร์ดผู้เล่นทั้งสอง เพื่อให้ทั้งดีลเลอร์และผู้เล่นอยู่ใน Waiting State และรอ Start Signal จากผู้เล่นทั้งสอง


  3. เมื่อผู้เล่นทั้งสองส่ง Start Signal มาแล้ว ดีลเลอร์จะขยับเข้าสู่ Betting State แล้วทำการส่งสัญญาณไปยังผู้เล่นให้เปลี่ยนเป็น Betting State แล้วดีลเลอร์จะรอ Betting Signal จากผู้เล่นทั้งสอง


  4. เมื่อผู้เล่นทั้งสองส่ง Betting Signal มาแล้ว ดีลเลอร์จะขยับเข้าสู่ Playing State โดยใน state นี้จะเริ่มโดยการที่ดีลเลอรสุ่มไพ่ของตัวเอง 1 ใบแล้วแสดงบนจอ OLED และทำการสุ่มไพ่ 2 ใบให้ผู้เล่นแต่ละคน และทำการรอ Hit/Stand Signal จากผู้เล่นทั้งสองคน


  5. ใน Playing State นี้ ดีลเลอร์จะได้รับ Signal 2 ประเภทจากผู้เล่น คือ
    1.Hit Signal เป็นสัญญาณว่าผู้เล่นต้องการจั่วไพ่เพิ่ม ดีลเลอร์จะทำการสุ่มไพ่เพื่อส่งให้กับผู้เล่น
    2.Stand Signal เป็นสัญญาณว่าผู้เล่นไม่ต้องการจั่วไพ่เพิ่มแล้ว เมื่อดีลเลอร์ได้รับ Stand Signal ครบจากผู้เล่นทั้งสอง ก็จะขยับเข้าสู่ Result State

  6. ใน Result State ดีลเลอร์จะจั่วไพ่จนกว่าจะมีค่ารวมอย่างน้อย 17 จากนั้นจะทำการคำนวณคะแนนของผู้เล่นทั้งสอง แล้วส่ง Result Signal ไปยังผู้เล่นเพื่อประกาศผลแพ้ชนะ หลังจากนั้น 5 วินาที ดีลเลอร์จะขยับไปยัง Waiting State ทำการส่ง Reset Signal เพื่อให้ผู้เล่นทั้งสองเปลี่ยนเป็น Waiting State เพื่อรอเริ่มเกมรอบถัดไป



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

Source code: Player

Library

  • esp_now.h
  • WiFi.h
  • SPI.h
  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • ezButton.h
  • ESP32RotaryEncoder.h
  • card_icon.h
  • card_printer.h

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

  • NodeMCU ESP32 [จำนวน 1 ตัว]
  • OLED Screen SSD1306 128x32 [จำนวน 1 ตัว]
  • Rotary Encoder [จำนวน 1ตัว]
  • Push Button [จำนวน 2 ตัว]
  • Breadboard [จำนวน 1 ตัว]

แผนผังวงจรบอร์ดผู้เล่น



การทำงานของบอร์ดผู้เล่น

  1. เมื่อเริ่มระบบจะทำการลงทะเบียนบอร์ดดีลเลอร์และบอร์ดรับคืนเหรียญ ผ่านโปรโตคอล ESP-NOW เพื่อเริ่มการส่งข้อมูลระหว่างดีลเลอร์ บอร์ดรับคืนเหรียญ และผู้เล่น
  2. บอร์ดผู้เล่นจะคอยรับสัญญาณจากบอร์ดดีลเลอร์ และทำการเปลี่ยน State ให้ถูกต้องตามสัญญาณที่ได้มา
  3. ใน Waiting State ผู้เล่นจะสามารถกดได้ 2 ปุ่ม คือ
    1. ปุ่มบน เป็นปุ่มที่จะส่ง Withdraw Signal ไปยังบอร์ดรับคืนเหรียญ เพื่อทำการแลกเครดิตทั้งหมดที่ผู้เล่นมีออกมาเป็นเหรียญ
    2. ปุ่มล่าง เป็นปุ่มที่จะส่ง Start Signal ไปยังบอร์ดดีลเลอร์


  4. ใน Betting State ผู้เล่นจะสามารถกดได้ 1 ปุ่ม และใช้ตัวหมุนได้ โดย
    1. ตัวหมุน ผู้เล่นจะใช้ตัวหมุนในการปรับจำนวนเครดิตที่ต้องการใช้ลงพนัน โดยจะแสดงผลบนหน้าจอ OLED
    2. ปุ่มล่าง เมื่อผู้เล่นเลือกจำนวนเครดิตที่จะใช้ลงพนันแล้ว ให้กดปุ่มนี้เพื่อส่ง Betting Signal ไปยังบอร์ดดีลเลอร์


  5. ใน Playing State จะแสดงไพ่ที่ตัวเองมีบนจอ OLED เพื่อให้ผู้เล่นตัดสินใจระหว่าง
    1.ปุ่มบน หากผู้เล่นพอใจกับไพ่ที่มีแล้ว ให้กดปุ่มนี้เพื่อทำการส่ง Stand Signal ไปยังบอร์ดดีลเลอร์
    2.ปุ่มล่าง หากผู้เล่นยังไม่พอใจในไพ่ที่มี ให้กดปุ่มนี้เพื่อทำการส่ง Hit Signal ไปยังบอร์ดดีลเลอร์เพื่อขอจั่วไพ่


  6. เมื่อบอร์ดผู้เล่นได้รับ Result Signal จากบอร์ดดีลเลอร์ จะทำการประกาศผล โดยเป็นไปได้ 3 รูปแบบคือ
    1.ชนะ หากผู้เล่นชนะดีลเลอร์ ผู้เล่นจะได้รับเครดิตคืนเป็นจำนวนสองเท่าของที่ลงพนันไว้
    2.เสมอ หากผู้เล่นเสมอกับดีลเลอร์ ผู้เล่นจะได้รับเครดิตคืนเป็นจำนวนเท่ากับเครดิตที่ลงพนันไว้
    3.แพ้ หากผู้เล่นแพ้ดีลเลอร์ ผู้เล่นจะไม่ได้รับเครดิตที่ลงพนันไว้คืนเลย


3. บอร์ดรับและคืนเหรียญ

Source code: Creditor

Library

  • esp_now.h
  • WiFi.h
  • SPI.h
  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • ezButton.h
  • ESP32Servo.h

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

  • NodeMCU ESP32 [จำนวน 1 ตัว]
  • OLED Screen SSD1306 128x32 [จำนวน 1 ตัว]
  • SG90 Micro Servo [จำนวน 1ตัว]
  • Push Button [จำนวน 1 ตัว]
  • Coin Acceptor [จำนวน 1 ตัว]
  • 12V AC to DC Adaptor [จำนวน 1 ตัว]
  • Resistor 10k [จำนวน 1 ตัว]
  • Breadboard [จำนวน 1 ตัว]

แผนผังวงจรบอร์ดรับและคืนเหรียญ



การทำงานของบอร์ดรับและคืนเหรียญ

  1. เมื่อเริ่มระบบจะทำการลงทะเบียนบอร์ดผู้เล่นผ่านโปรโตคอล ESP-NOW เพื่อเริ่มการส่งข้อมูลระหว่างบอร์ดรับและคืนเหรียญกับบอร์ดผู้เล่น
  2. บอร์ดรับคืนเหรียญจะคอยรับสัญญาณจากเครื่องรับเหรียญ(Coin Acceptor) เมื่อผู้เล่นหยอดเหรียญเข้ามา เครื่องรับเหรียญจะส่งสัญญาณไปให้บอร์ดรับคืนเหรียญ และบอร์ดจะทำการเพิ่มจำนวนเหรียญที่มีในเครื่องและเพิ่มเครดิต ให้กับผู้เล่นคนนั้นให้ถูกต้องตามสัญญาณที่ได้มาและแสดงผลบนจอ OLED โดยผู้เล่นสามารถหยอดเหรียญเพื่อเพิ่มเครดิตได้ทั้งในระหว่าง Waiting State และ Betting State


  3. การถอนเหรียญออกจากเครื่องนั้นมี 2 กรณี คือ
    1. กรณีที่ผู้เล่นอยากจะแลกเครดิตออกมาเป็นเหรียญ เราจะรับ Withdraw Signal จากบอร์ดของผู้เล่น บอร์ดรับคืนเหรียญก็จะทำการสั่งให้เซอร์โว(Servo) ดันเหรียญตามจำนวน เครดิตหารด้วย 100 (เครดิต / 100) ครั้ง เหรียญที่ถูกดันออกมาจะตกที่บริเวณช่องใต้เครื่องหยอดเหรียญ
    2. กรณีที่อยากจะนำเหรียญออกจากเครื่อง จะมีปุ่มที่เมื่อกดแล้วจะทำการดันเหรียญออกไปเรื่อยๆจนกว่าจะปล่อยการกดออกจากปุ่ม โดยเป็นปุ่ม Emergency ที่ไม่ได้มีไว้ให้ผู้เล่นกดได้ตามใจชอบ แต่เป็นกรณีที่จะต้องเอาเหรียญออกจากเครื่อง


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


  5. ขณะคืนเหรียญ จอ OLED ก็จะแสดงจำนวนเหรียญที่จะต้องคืน ว่าเหลืออีกกี่เหรียญถึงจะคืนเสร็จสิ้น



4. โมดูลแสดงกราฟฟิกไพ่บนจอ OLED

เป็น Library ที่เขียนขึ้นเองเพื่อใช้สำหรับแสดงผลกราฟฟิกบนจอ OLED โดยจะนำไปใช้กับบอร์ดผู้เล่นและบอร์ดดีลเลอร์ ประกอบไปด้วย 2 โมดูล
- card_icon.h ไฟล์บิทแมพ(Bitmap) ของหน้าไพ่ทั้ง 4 แบบ ประกอบด้วย โพดำ โพแดง ข้าวหลามตัด และดอกจิก แบ่งเป็นขนาดเล็ก 16x16 pixel และขนาดใหญ่ 23x24 pixel
- card_printer.h ฟังก์ชั่นสำหรับวาดภาพไพ่ ตามเลขไพ่และหน้าไพ่ที่กำหนด และสามารถกำหนดหมายเลขตำแหน่งของไพ่ที่จะแสดงบนหน้าจอ OLED ได้ตั้งแต่หมายเลขตำแหน่ง 1 ถึง 5


อุปกรณ์ (รวม)

  • NodeMCU ESP32 [จำนวน 5 ตัว]
  • OLED Screen SSD1306 128x32 [จำนวน 5 ตัว]
  • Breadboard [จำนวน 5 ตัว]
  • Rotary Encoder [จำนวน 2 ตัว]
  • Push Button [จำนวน 6 ตัว]
  • SG90 Micro Servo [จำนวน 2 ตัว]
  • Coin Acceptor [จำนวน 2 ตัว]
  • 12V AC to DC Adaptor [จำนวน 1 ตัว]
  • Resistor 10k [จำนวน 2 ตัว]
  • Power Bank [จำนวน 3 ตัว]

Github : bid-laew–ruay-suay-laew-kunn

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-06 02:16:17 โดย b6410504390
กลุ่มที่ 6 : team7
นายณัฐฐากร สินอำนวยผล
นายชัยธวัช สีน้ำเงิน
นายวิชานนท์ วิชชุกรศักดิ์
นายวิทวัส พงศ์พฤติ
นายศุภนัฏ วิสิฏกตัญญูชัย
นายสรัลรักษ์ ดำกุล
ชื่อโครงงาน: Mole Destroyer - เกมทำลายตุ่น
รายละเอียด:

คำอธิบายโครงงาน

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

enter image description here

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

  • NodeMCU ESP-32S [6 ตัว]
  • Push Button ขนาด 6 mm [5 ตัว]
  • 0.96" I2C 128x64 OLED Display [6 ตัว]
  • SG90 Servo Motor [4 ตัว]
  • LDR Photoresistor Sensor Module [4 ตัว]

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

โปรแกรม Arduino นี้เป็นส่วนหนึ่งของระบบ Whack-a-Mole ซึ่งใช้ ESP32 เป็นตัวควบคุม ซึ่งมีฟังก์ชันต่าง ๆ ดังนี้:

  1. กำหนดพินและสร้างอ็อบเจกต์ของ OLED display (SSD1306) และ Servo motor
  2. สร้างโครงสร้างข้อมูล MoleMessage เพื่อรับข้อมูลเกี่ยวกับตัวกับดักที่ปรากฏขึ้นบนจอ OLED
  3. กำหนดฟังก์ชัน displayNoMole(), displayMode0(), displayMode1(), displayMode2(), displayMode3() เพื่อแสดงข้อความหรือโหมดของตัวกับดักบนจอ OLED
  4. ฟังก์ชัน UpMole() และ DownMole() สำหรับเลื่อนตัวกับดักขึ้นหรือลง
  5. ฟังก์ชัน Debounce() เพื่อตรวจสอบการกดปุ่มและลดปัญหาการสั่นสะเทือนของสัญญาณ
  6. Callback functions OnDataSent() และ OnDataRecv() เพื่อรับข้อมูลและส่งข้อมูลผ่าน ESP-NOW protocol
  7. การตั้งค่าต่าง ๆ ในฟังก์ชัน setup() เช่น WiFi, OLED display, Servo motor, และ ESP-NOW

โดยโปรแกรมจะทำการแสดงตัวกับดักที่ปรากฏบนจอ OLED และให้ผู้เล่นใช้ปุ่มกดเพื่อชนะตัวกับดักที่ปรากฏ และส่งข้อมูลไปยังตัวควบคุมผ่าน ESP-NOW เมื่อผู้เล่นชนะตัวกับดักหรือหมดเวลาที่กำหนดในการชนะตัวกับดักนั้นๆ ตัวกับดักจะถูกลดลง และจะปรากฏตัวกับดักใหม่ขึ้นแทนทันที

Github: MoleDestroyer

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-07 23:00:04 โดย b6410500246
กลุ่มที่ 7 : San&Friends
นายชัยพจน์ ก้องจันทร์สว่าง
นางสาวพรนภัส เกตุปลั่ง
นายอภิมุข ตราตรี
นายฤธา สุดสัตย์
ชื่อโครงงาน: หุ่นยนต์ทำความสะอาดอัจฉริยะ
รายละเอียด:

CleanBot

ด้านซ้ายรถ


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

  • ขับเคลื่อนอัตโนมัติ และหลบหลีกสิ่งกีดขวาง
  • ควบคุมไร้สาย ผ่าน Blynk เช่น เปิด/ปิดโหมดขับเคลื่อนอัตโนมัติ, เปิด/ปิดปั้มน้ำ
  • แสดงค่าต่างๆ ผ่าน Blynk เช่น แสดงระยะห่างข้างหน้าตัวรถ, แสดงสถานะไฟ IR ซ้ายและขวา
  • ตั้งเวลาการทำงานของปั้มน้ำ ผ่าน Blynk (กรณีเปิดโหมดขับเคลื่อนอัตโนมัติ)

Blynk

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

   Blynk ช่วยให้การพัฒนางาน IoT ง่าย โดยผู้พัฒนาไม่จำเป็นที่ต้องมีความรู้ด้านระบบฮาร์ดแวร์และซอฟต์แวร์ทางคอมพิวเตอร์มากมาย ตัวแอปพลิเคชั่นใช้งานกับฮาร์ดแวร์ที่เป็นที่นิยม ทั้งบอร์ด Arduino, ESP8266, Raspberry PI, Particle Core เป็นต้น

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

โครงสร้าง Blynk

โครงสร้าง Blynk

Blynk

หน้าจอ Project บน Blynk

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

  • บอร์ดที่ 1 ควบคุมการเคลื่อนที่ของรถและควบคุม Servo
    • Source Code : Movement
    • Library : ESP32Servo.h, WiFi.h, WiFiClient.h, BlynkSimpleEsp32.h
    • หลักการทำงาน : เมื่ออยู่ในโหมดควบคุมผ่าน Blynk สามารถควบคุมตัวรถผ่านจอยคอนโทรลเลอร์ และเมื่ออยู่ในโหมดขับเคลื่อนอัตโนมัติจะดึงค่าระยะข้างหน้ารถจาก Blynk Server หากระยะน้อยกว่าที่กำหนด แสดงว่าข้างหน้ามีสิ่งกีดขวาง จากนั้นหัน Servo ซ้ายและขวาเพื่อวัดระยะว่าควรเลี้ยวซ้ายหรือขวา

  • บอร์ด Movement

    บอร์ด Movement

    ปุ่มเปิด-ปิดโหมด

    ปุ่มเปิด-ปิดโหมด

    จอยคอนโทรลเลอร์

    จอยคอนโทรลเลอร์

  • บอร์ดที่ 2 ควบคุมการทำงานของ Ultrasonic Sensor และ IR Sensor
    • Source Code : Ultrasonic-IR
    • Library : Ultrasonic.h, WiFi.h, WiFiClient.h, BlynkSimpleEsp32.h
    • หลักการทำงาน : วัดระยะข้างหน้ารถ และสถานะของ IR Sensor ซ้าย/ขวา แล้วส่งขึ้น Blynk Server

  • บอร์ด Ultrasonic-IR

    บอร์ด Ultrasonic-IR

    แสดงระยะของ Ultrasonic

    แสดงระยะของ Ultrasonic

    แสดงไฟและค่าของ IR

    แสดงไฟและค่าของ IR

  • บอร์ดที่ 3 ควบคุมการแสดงผลของ OLED
    • Source Code : OLED
    • Library : Wire.h, Adafruit_GFX.h, Adafruit_SSD1306.h, WiFi.h, WiFiClient.h, BlynkSimpleEsp32.h
    • หลักการทำงาน : ดึงค่าโหมดจาก Blynk Server เพื่อแสดงภาพสถานะ แสดงภาพหุ่นยนต์เมื่ออยู่โหมดขับเคลื่อนอัตโนมัติ และแสดงภาพจอยคอนโทรลเลอร์เมื่ออยู่ในโหมดควบคุมผ่าน Blynk

  • บอร์ด OLED

    บอร์ด OLED

    เก็บค่าโหมดของบอร์ด OLED

    เก็บค่าโหมดของบอร์ด OLED

  • บอร์ดที่ 4 ควบคุมการทำงานของปั้มน้ำ
    • Source Code : WaterControl
    • Library : WiFi.h, WiFiClient.h, BlynkSimpleEsp32.h
    • หลักการทำงาน : เมื่ออยู่ในโหมดควบคุมผ่าน Blynk สามารถเปิด/ปิดปั้มน้ำได้ และเมื่ออยู่ในโหมดขับเคลื่อนอัตโนมัติ สามารถเลือกเวลาการทำงานของปั้มน้ำได้ว่าจะให้ทำงานทุกๆ 5-30 นาที

  • บอร์ด WaterControl

    บอร์ด WaterControl

    เก็บค่าโหมดของบอร์ด WaterControl

    เก็บค่าโหมดของบอร์ด WaterControl

    ปุ่มเปิด-ปิดปั้มน้ำ

    ปุ่มเปิด-ปิดปั้มน้ำ

    ตั้งเวลารอบปั้มน้ำ

    ตั้งเวลารอบปั้มน้ำ

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

  1. ESP32-S x4
  2. Breadboard 8.5x5.5cm x4
  3. Powerbank 600 mAh x4
  4. Battery 12V และรางถ่าน x1
  5. สาย USB-A to Micro USB x4
  6. Ultrasonic Sensor x1
  7. ฉากยึด Ultrasonic Sensor x1
  8. Infrared Sensor x2
  9. Servo Motor x1
  10. Relay Module 220VAC x1
  11. ปั๊มน้ำขนาดเล็ก 3v-5v DC x1
  12. OLED แบบ I2C ไดรเวอร์ SSD1306 x1
  13. L298N Motor Driver x1
  14. กล่องนมขนาด 500 ml x1
  15. โครงรถ 3 ล้อพร้อมอุปกรณ์ ขับเคลื่อน 2 ล้อ แบบ 2 ชั้น
  16. สาย Jumper
  17. ผ้าฟองน้ำอเนกประสงค์

Github : San&Friends

Youtube : San&Friends

ด้านหน้ารถ

ด้านหน้ารถ

ด้านซ้ายรถ

ด้านซ้ายรถ

ด้านหลังรถ

ด้านหลังรถ

ด้านขวารถ

ด้านขวารถ

ด้านบนรถ

ด้านบนรถ

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-06 10:35:39 โดย b6410500203
กลุ่มที่ 8 : เจ๋งแจ๋ว
นางสาวชนากานต์ ศรีอุดม
นางสาวปริยากร กัมมารังกูร
นางสาวชาลิสา สกุลวิจิตร์สินธุ
นางสาวรัสรินทร์ นิธิเจริญอริยะ
ชื่อโครงงาน: ตู้ยาเจ๋งแจ๋วสุดจ๊าบ
รายละเอียด:

ตู้ยาเจ๋งแจ๋วสุดจ๊าบ



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

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

FEATURES

  • จ่ายยาตามช่วงเวลาที่กำหนด โดยมีแบ่งประเภทการจ่ายยาออกเป็นยาก่อนอาหารและยาหลังอาหาร โดยมีรอบการจ่ายยา ดังนี้ เช้า กลางวัน เย็น และก่อนนอน
  • มีการแจ้งเตือนในทุกรอบของการรับประทานยา โดยจะมีเสียงแจ้งเตือนเมื่อถึงเวลาที่กำหนด หากผู้ใช้งานรับประทานยา/หยิบยาออกแล้ว สามารถกดปุ่มเพื่อปิดเสียงการแจ้งเตือนได้
  • วัดความชื้นและอุณหภูมิ จะแสดงค่าความชื้นและอุณหภูมิของพื้นที่ที่ทำการเก็บรักษายาเพื่อรักษาประสิทธิภาพของยาไว้
Hardware
  • 4 NodeMCU ESP32
  • 2 MG90S Servo motor
  • 1 Active Buzzer Module
  • 1 Button
  • 1 DHT11 Digital Temperature and Humidity Sensor
  • 1 OLED 128x64 I2C
  • Battery 12V
Software
  • Arduino IDE
  • Blynk
Library list in used
  • WiFi.h
  • WiFiClient.h
  • BlynkSimpleEsp32.h
  • ESP32Servo.h
แนวคิดและหลักการทำงาน
บอร์ด 1 และ 2
สำหรับระบบจ่ายยา ทำการติดตั้ง servo ยึดกับใบพัดที่หมุนเพื่อทำการจ่ายยาลงช่องตามเวลาที่กำหนดผ่านแอปพลิเคชัน Blynk โดยบอร์ด1 ใช้สำหรับการจ่ายยาก่อนอาหาร และบอร์ด 2 ใช้สำหรับการจ่ายยาหลังอาหาร servo แต่ละตัวจะทำการหมุน 4 ครั้ง ให้ตรงกับช่วงเช้า กลางวัน เย็น และก่อนนอน ซึ่งจะหมุนให้ทำมุม 45 90 135 และ 180 องศาตามลำดับ และเมื่อหมุนครบ 180 องศาจะหมุนกลับไปที่ 0 องศา สำหรับการใส่ยาในรอบถัดไป

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

บอร์ด 4
ระบบแสดงค่าความชื้นและอุณหภูมิ ทำการติดตั้ง DHT11 Digital Temperature and Humidity Sensor เพื่อวัดค่าความชื้นและอุณหภูมิของพื้นที่ที่ทำการเก็บรักษายา และแสดงค่าผ่านจอ OLED 128x64 I2C ตลอดเวลา

Github : jengjeaw
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-06 10:20:21 โดย b6410500190
กลุ่มที่ 9 : หมูกรอบทอดพริกเกลือ
นายจิรัฏฐ์ มีวาสนา
นายณัฏฐ์ ปรัชญกุล
นายจตุพร บัดแก้ว
นายณพวิทย์ ศุกลปักษ์
ชื่อโครงงาน: Smashtrat
รายละเอียด:

Smashtrash

Feature

1. Trash Opener (ระบบเปิดถังขยะ)

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

  1. NodeMCU ESP32 1 Unit.
  2. Servo Motor 2 Units.
  3. Ultrasonic Sensor 1 Unit.

ไลบราลี่

  1. ESP32-Servo
  2. ESP-NOW

ระบบการทำงาน

  1. Ultrasonic Sensor ตรวจระยะทางของวัตถุที่ผ่าน หากน้อยกว่า 20 cm ให้เปิดถังขยะ.
  2. ถังขยะจะเปิดเป็นระยะเวลา 5 วินาทีนับจากเมื่อวัตถถุไม่ผ่านหน้า Ultrasonic Sensor แล้ว.
  3. ถ้าวัตถุผ่านหน้า Ultrasonic Sensor อีกครั้ง ระบบจะจับเวลาในการเปิดใหม่.
  4. มีการคุยกับ ESP32 ตัวอื่นผ่าน ESP-NOW สำหรับรับค่าเปอร์เซ็นต์ของถังขยะ.
  5. ถ้าปริมาณขยะมากกว่า 70% ถังขยะจะไม่สามารถเปิดได้.

Schematic

Trash-Opener

2. TrashMeasure (ระบบวัดปริมาณขยะในถัง)

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

  1. NodeMCU ESP32 1 Unit.
  2. Ultrasonic Sensor 1 Unit.

ไลบรารี่

  1. ESP-NOW

ระบบการทำงาน

  1. ตัว Ultrasonic จะติดอยู่ใต้ฝาถังขยะ โดยจะวัดระยะทางจากฝาถังไปยังตัวขยะ (distance)
  2. จากนั้นนำค่า distance และจะมีค่าที่เป็นความสูงของถังขยะ (max_distance) มา map เป็น % ของปริมาณขยะในถัง
  3. ส่งค่า % ปริมาณขยะในถัง ไปยังฟีเจอร์อื่นๆ เพื่อนำไปแสดงผลและการเปิดฝาถังขยะ โดยใช้ ESP-NOW ในการส่งข้อมูล

Schematic

Trash-Measure

3. Trash Output (ระบบแสดงผลของถังขยะ)

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

  1. NodeMCU ESP32 1 Unit.
  2. LED:Four Pin 1 Units.
  3. OLED 128x64 I2C Monochrome Display VDD-GND 1 Unit.

ไลบราลี่

  1. Adafruit_GFX
  2. Adafruit_SSD1306
  3. ESP-NOW

ระบบการทำงาน

  1. ใช้ ESP-NOW สำหรับรับค่าเปอร์เซ็นต์ของขยะในถังขยะ.
  2. รับค่ามาแล้วคำนวณเป็นสีของ LED (<50% -> Green, <75% -> Blue, else -> Red)
  3. คำนวณข้อมูลที่ต้องใช่ในการแสดงผลบนจอ OLED.
  4. แสดง Output สีของ LED และข้อความบนจอ OLED.

Schematic

Trash-Output

4. Trash Bin Lock (ระบบล็อคถังขยะ)

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

  1. NodeMCU ESP32 1 Unit.
  2. 180 degree servo 4 Units.
  3. OLED 128x64 I2C Monochrome Display VDD-GND 1 Unit.
  4. 4x4 Numpad 1 Units.

ไลบราลี่

  1. Adafruit_GFX
  2. Adafruit_SSD1306
  3. Keypad
  4. ESP32-Servo

ระบบการทำงาน

  1. ในขณะที่ถังขยะทำงานปกติ ถังขยะจะล็อกฝาไม่ให้ยกออกได้ ป้องกันการที่ขยะเต็มแล้วมีคนใส่เพิ่ม
  2. กรณีต้องการยกขยะด้านในออก สามารถใส่รหัสที่หลังฝาได้
  3. servo จะทำการยกเอ็นที่เกี่ยวกับตัวเกี่ยวด้านในขึ้น ทำให้ฝายกได้
  4. หลังจากยกขยะออกแล้ว ทำการล็อกด้วยการกด ####
  5. โดยรหัสที่กดและสถานะล็อค/ปลดล็อคจะมีแสดงที่จอด้านหลัง

Schematic

Trash-Bin-Lock

Members

  1. นายจิรัฏฐ์ มีวาสนา 6410500181
  2. นายณัฏฐ์ ปรัชญกุล 6410500238
  3. นายจตุพร บัดแก้ว 6410503997
  4. นายณพวิทย์ ศุกลปักษ์ 6410504098
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-05 20:26:04 โดย b6410500238
กลุ่มที่ 10 : PowerBoom
นายบารมี ปัญญาเฟือน
นายจิตตบุญ บรรเริงศรี
นายมติ วรสิงห์
นายมหัศจรรย์ สถาพรวานิชย์
นายอนวัช มูลมณี
ชื่อโครงงาน: เรือเล็กควรมีกล่องติด
รายละเอียด:

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

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

วัตถุประสงค์

  • พัฒนาอุปกรณ์ติดตั้งบนเรือ เพื่อแจ้งสถานะเรือแบบเรียลไทม์
  • ส่งสัญญาณ SOS เมื่อเกิดเหตุฉุกเฉิน
  • เพิ่มประสิทธิภาพ ความปลอดภัย และความสะดวกในการติดตามสถานะเรือ
  • อำนวยความสะดวกของผู้เฝ้าระวัง

คุณสมบัติ

  • ส่งสัญญาณ SOS: กดปุ่ม SOS ส่งสัญญาณขอความช่วยเหลือ แสดงตำแหน่งเรือ
  • ติดตามตำแหน่งเรือแบบเรียลไทม์: แสดงตำแหน่งเรือบนแผนที่ ลองจิจูด ละติจูด
  • แสดงสถานะของเรือแบบเรียลไทม์: แสดงสถานนะได้ 3 สถานะ SOS, normal, crash
  • มีเว็ปไซต์สำหรับติดตามตำแหน่งเรือได้ โดยแบ่งระดับผู้ใช้ออกเป็น 2 ระดับ

    • ผู้ใช้งานทั่วไป (สามารถดูได้แค่ตำแหน่งเรือ)
    • แอดมินระบบ (สามารถกดปุ่ม resolve เพื่อหยุดสัญญาณช่วยเหลือของเรือที่อยู่ในระบบได้)

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

ฮาร์ดแวร์ที่ใช้

  • Neo6M GPS ( x2 )
  • OLED LED LCD I2C (IIC) 128x64 SSD 1306 Arduino 0.96Inch Display Module ( x2 )
  • NodeMCU ESP-WROOM-32 ( x3 )
  • STM32 L432KC ( x2 )
  • MPU-6050 ( x2 )
  • Active buzzer module ( x1 )
  • Button switch module ( x1 )

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



  • NodeMCU ESP-WROOM-32

    • ควบคุมการแสดงผลของ OLED LED LCD I2C (IIC) 128x64 SSD 1306
    • ควบคุมสถานะเปิดปิดของ LED เพื่อแสดงสถานะปัจจุบันของเรือ
    • รอรับสัญญาณ interrupt เพื่อส่งแจ้งเตือนไปยังระบบ
    • ควมคุมการทำงานของ Neo6M GPS

  • STM32 L432KC

    • ประมวลผลข้อมูลจาก MPU-6050 เป็นโมดูลที่ใช้สำหรับตรวจสอบว่าเรือล่มหรือไม่
    • ส่งสัญญาณ ไปยังขา interrupt ของ ESP-WROOM-32

ไลบรารี่ที่ใช้

  • SPI
  • Wire
  • adafruit/Adafruit GFX Library@^1.11.9
  • adafruit/Adafruit BusIO @ 1.9.6
  • adafruit/Adafruit SSD1306@^2.5.9
  • ricmoo/QRCode@^0.0.1
  • bblanchon/ArduinoJson@^7.0.3

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

  • Visual Studio Code

รูปผลงานทั้งหมด

คลิปวีดีโอ:
ไม่มีไฟล์โครงงาน
ปรับปรุงล่าสุด 2024-03-06 06:58:45 โดย b6410504241
กลุ่มที่ 11 : Taro
นางสาวกวินธิดา ปิ่นทอง
นายณฐพล พลนาการ
นายภูบดี สุตันรักษ์
นายวรกร โฆษิตโภคิน
นายพชรพล ราชสภา
นางสาวณัฐธยาน์ เสียงเสนาะ
ชื่อโครงงาน: Barbie's Dream House
รายละเอียด:

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

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

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

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

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

  1. การควบคุมเปิดและปิดไฟ
  2. การควบคุมการเปิดและปิดประตู
  3. การวัดอุณหภูมิเพื่อควบคุมการทำงานของระบบปรับอากาศ
  4. การวัดแก๊สภายในห้องสำหรับการรักษาความปลอดภัยเมื่อเกิดเหตุเพลิงไหม้
  5. การเปิดและปิดโทรทัศน์
  6. การตรวจสอบระยะห่างสำหรับจอดรถ

ฮาร์ดแวร์ที่ใช้

  1. NodeMCU ESP32
  2. Servo motor
  3. Motor
  4. Gas sensor
  5. Ultrasonic sensor
  6. Thermistor
  7. OLED 128x64 I2C
  8. LED
  9. Breadboard
  10. Resistor 200-300 ohm
  11. Resistor 10k ohm

แผนภาพบอร์ดโดยรวม


บอร์ดที่ 1 ควบคุมการทำงานในห้องนอน

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

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. Servo motor จำนวน 1 อัน
  3. Thermistor จำนวน 1 อัน
  4. LED จำนวน 2 หลอด
  5. Breadboard จำนวน 1 อัน
  6. Resistor 200-300 ohm จำนวน 2 อัน
  7. Resistor 10k ohm จำนวน 1 อัน

แผนภาพบอร์ดที่ 1


บอร์ดที่ 2 ควบคุมการทำงานในห้องนั่งเล่น

    สำหรับในบอร์ดนี้จะมีหน้าที่หลักคือการเปิด-ปิดไฟ การเปิด-ปิดโทรทัศน์ และการเปิด-ปิดประตู โดยมีอุปกรณ์ดังนี้

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. Servo motor จำนวน 1 อัน
  3. OLED 128x64 I2C จำนวน 1 อัน
  4. LED จำนวน 2 หลอด
  5. Breadboard จำนวน 1 อัน
  6. Resistor 200-300 ohm จำนวน 2 อัน

แผนภาพบอร์ดที่ 2


บอร์ดที่ 3 ควบคุมการทำงานในห้องน้ำ

    สำหรับในบอร์ดนี้จะมีหน้าที่หลักคือการเปิด-ปิดไฟและการเปิด-ปิดประตู โดยมีอุปกรณ์ดังนี้

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. Servo motor จำนวน 1 อัน
  3. OLED 128x64 I2C จำนวน 1 อัน
  4. LED จำนวน 2 หลอด
  5. Breadboard จำนวน 1 อัน
  6. Resistor 200-300 ohm จำนวน 2 อัน

แผนภาพบอร์ดที่ 3


บอร์ดที่ 4 ควบคุมการทำงานในสวน

    สำหรับในบอร์ดนี้จะมีหน้าที่หลักคือการเปิด-ปิดไฟและการเปิด-ปิดประตู โดยมีอุปกรณ์ดังนี้

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. Servo motor จำนวน 1 อัน
  3. OLED 128x64 I2C จำนวน 1 อัน
  4. LED จำนวน 2 หลอด
  5. Breadboard จำนวน 1 อัน
  6. Resistor 200-300 ohm จำนวน 2 อัน

แผนภาพบอร์ดที่ 4


บอร์ดที่ 5 ควบคุมการทำงานในห้องครัว

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

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. Servo motor จำนวน 1 อัน
  3. Gas sensor จำนวน 1 อัน
  4. OLED 128x64 I2C จำนวน 1 อัน
  5. LED จำนวน 2 หลอด
  6. Breadboard จำนวน 1 อัน
  7. Resistor 200-300 ohm จำนวน 2 อัน

แผนภาพบอร์ดที่ 5


บอร์ดที่ 6 ควบคุมการทำงานในโรงจอดรถ

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

  1. NodeMCU ESP32 จำนวน 1 อัน
  2. OLED 128x64 I2C จำนวน 1 อัน
  3. Ultrasonic sensor จำนวน 1 อัน
  4. LED จำนวน 2 หลอด
  5. Breadboard จำนวน 1 อัน
  6. Resistor 200-300 ohm จำนวน 2 อัน

แผนภาพบอร์ดที่ 6


คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-06 10:30:23 โดย b6410504101
กลุ่มที่ 12 : ภูกอล์ฟติ๊ดเดือน
นายภูศิษฐ์ สมบูรณ์ยิ่งสุข
นายสุรพัศ มูลจรัส
นางสาวสุปวีณ์ บวรศักดิ์ถาวร
นางสาวอรนลิน สุวรรณาสน์
ชื่อโครงงาน: โช้งเช้ง! ✨
รายละเอียด:

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

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

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

  • มีระบบเกมฟันดาบที่มีผู้เล่น 2 คน
  • สามารถเริ่มเกมได้
  • สามารถตัดสินผลแพ้ชนะเมื่อผู้เล่นคนใดคนหนึ่งเหลือ Health เป็น 0
  • ตัวดาบ 2 ชิ้น
  • สามารถฟันดาบได้ในทิศทางตั้งฉากกับพื้นและ ขนานกับพื้น
  • สามารถตั้งท่าป้องกันในทิศทางตั้งฉากกับพื้นและ ขนานกับพื้น
  • มีไฟ LED บอกสถานะของ Health ของตนเอง
  • มีเสียงบอกหากฟันเข้าฝ่ายตรงข้ามหรือสามารถกันการโจมตีจากฝ่ายตรงข้ามได้
  • หน้าจอแสดงผล
  • สามารถแสดงสถานะ Health ของผู้เล่นทั้งสองฝ่ายได้
  • สามารถแสดง Action ของผู้เล่นได้ เช่น Hit(ถูกโจมตี) Block(สามารถป้องกันการโจมตีได้)

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

โมเดลข้อมูลสถานะเกม

ส่วนดาบ (Sword Player 1 and Player 2)

อุปกรณ์ (ดาบ)

หลักการ (ดาบ)

ในส่วนของดาบทำหน้าที่ในการส่ง Action ของผู้เล่นแต่ละคนไปยัง Server กลางโดยใช้ gyroscope sensor ในการรับข้อมูลทิศทางในการหันของดาบ หากต้องการฟันดาบ sensor รอรับค่าความเร่งของดาบโดยใช้ acceleration sensor เพื่อรับรู้การฟันดาบจากทิศทางของดาบที่มีความคม และหากต้องการป้องกัน ทำได้โดยการกดปุ่มที่ดาบเพื่อป้องกัน ดาบจะส่งข่อมูลทิศทางการป้องกันไปยัง server กลาง โดยทั้งการโจมตีและการป้องกัน มีการส่งข้อมูลที่มีโครงสร้างดังนี้

ดาบยังรับข้อมูลลจาก Server กลาง เกี่ยวกับสถานะของเกม และ Action ของผู้เล่น โดยจะมีการตอบสนองกับ action ต่างๆดังนี้ เมื่อโจมตีคู่ต่อสู้หรือป้องกันได้สำเร็จ ดาบจะส่งสัญญาณเสียง และแสดงสี LED ตามสถานะของเลือดของผู้เล่น และเมื่อเลือดของผู้เล่นหนึ่งหมดจะส่งสัญญาณเสียงแสดงความยินดีกับผู้ชนะ

ส่วนจอแสดงสถานะเกม (Monitors)

อุปกรณ์ (จอสถานะเกม)

หลักการ (จอสถานะเกม)

ในเกมนี้จะใช้งานจอแสดงผล OLED จำนวน 2 ชิ้น โดยที่จะเชื่อมต่ออยู่กับ Microcontroller เครื่องเดียว

จอแสดงผล OLED ทั้น 2 ชิ้นนั้นจะใช้สำหรับแสดงข้อมูลของผู้เล่นแต่ละคนแยกกัน

ข้อมูลที่แสดงบนจอหลักๆจะขึ้นอยู่กับสถานะของเกม โดยที่ข้อมูลของสถานะเกมจะได้รับมาจากตัวควบคุมเกม (Server)

  • หากเกมอยู่ในสถานะรอเล่น (gameStage = 0)
  • ทั้ง 2 จอจะแสดงว่า Waiting...
  • หากเกมอยู่ในสถานะกำลังเล่น
  • หากไม่ได้มีการโจมตีอยู่
    • แสดงเลือดของทั้ง 2 ผู้เล่น
  • หากฝั่งใดฝั่งหนึ่งโดนโจมตี
    • แสดง Got Hit! ในฝั่งที่โดนโจมตี
    • หลังจากนั้นแสดงเลือดของทั้ง 2 ผู้เล่น
  • หากฝั้งใดฝั่งหนึ่งป้องกันการโจมตีได้
    • แสดง Block! ในฝั่งที่ป้องกันการโจมตี
    • หลังจากนั้นแสดงเลือดของทั้ง 2 ผู้เล่น

ส่วนควบคุมเกม (Server)

อุปกรณ์ (ตัวควบคุมเกม)

หลักการ (ตัวควบคุมเกม)

Server (ตัวควบคุมเกม) ทำหน้าที่ในการเป็นตัวกลางประมวลผลข้อมูลระบบเกม โดยเก็บข้อมูลเกี่ยวกับ Player แต่ละคน (Player1/ Player2) โดยมีรูปแบบดังนี้

เมื่อ Server ได้รับข้อมูลจะมีการ Update ข้อมูลที่เก็บบไว้ภายใน server เช่น หากผู้เล่น 1 ฟันดาบในทาง vertical และผู้เล่น 2 ไม่ได้ป้องกันในทาง horizontal ผู้เล่น 2 จะถูกโจมตีทำให้เลือดผู้เล่น 2 ลดลง เมื่อมีการเปลี่ยนแปลงสถานะของเกมหรือข้อมูล Server จะส่งข้อมูลไปทที่ส่วนแสดงผล และดาบของผู้เล่น โดยมีรูปแบบตามข้อมูลเกม

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

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

  • Code Editor: Visual Studio Code
  • Embedded System IDE: PlatformIO IDE extension ใน Visual Studio Code
  • Communication: ESPNow สำหรับการสื่อสารระหว่าง board
  • Source Control: Github สำหรับการควบคุมเวอร์ชันและซอร์สโค้ด
คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-05 23:10:34 โดย b6410504381
กลุ่มที่ 13 : หยุดก่อน รถไฟมาแล้ว
นายชาญฤทธิ์ พิศิษฐ์จริง
นายธิติ วิรัตกพันธ์
นายนราวิชญ์ สฤษฎีชัยกุล
นายพีรศุ พุทธกูล
นายรชต พีระนันท์รังษี
ชื่อโครงงาน: Railroad Crossing
รายละเอียด:

งาน Project กลุ่ม หยุดก่อน รถไฟมาแล้ว

รายชื่อสมาชิกกลุ่ม

  • 6410504047 ชาญฤทธิ์ พิศิษฐ์จริง
  • 6410504110 ธิติ วิรัตกพันธ์
  • 6410504136 นราวิชญ์ สฤษฎีชัยกุล
  • 6410504195 พีรศุ พุทธกูล
  • 6410504250 รชต พีระนันท์รังษี

คำอธิบาย Project

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

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

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

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


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

  • มีเซนเซอร์ Ultrasonic ที่สามารถตรวจสอบได้ว่า รถไฟมาจากทางไหน และ ยาวกี่ขบวน
  • ไม้กั้นที่สามารถเปิดปิดได้อัตโนมัติ หรือ ควบคุมเอง พร้อมกับเสียงเตือนจากลำโพง Buzzer
  • สามารถควบคุมไม้กั้นได้ผ่านหน้าเว็บไซต์ http://mqtt.embedded-train-stop.dynv6.net/ หรือ บน Control Board พร้อมหน้าจอ OLED เพื่อแสดงผลสถานะของไม้กั้นและ Mode ที่ใช้
  • มีโหมด Auto และ Manual สำหรับการควบคุมไม้กั้น

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

บอร์ดที่ 1 Control Board

  • หน้าจอ OLED ที่แสดงผลสถานะของไม้กั้นและ Mode ที่ใช้
  • ควบคุมสถานะเริ่มต้นที่ใช้สำหรับการสื่อการกับบอร์ดที่เหลือ (Ultrasonic, Gate Servo) ผ่านปุ่ม 3 ปุ่ม

บอร์ดที่ 2,3 Ultrasonic Board

  • มี Sensor Ultrasonic ที่ใช้วัดระยะโดยนำมาประยุกต์เมื่อมีรถไฟเข้ามาจะทำให้ระยะลดลง เมื่อต่ำกว่าระยะที่ได้กำหนด (น้อยกว่า 10 cm) จะทำการส่ง message ไปยัง topic crossing1/lookouts
  • โดย message ที่กำหนดมีดังนี้
  • 1 เมื่อระยะต่ำกว่าที่กำหนด (มีรถไฟผ่าน) , 0 เมื่อไม่มีรถไฟผ่าน

บอร์ดที่ 4,5 Gate Servo Ultrasonic

  • มี Sensor Ultrasonic ที่ใช้วัดระยะโดยนำมาประยุกต์เมื่อมีรถไฟเข้ามาจะทำให้ระยะลดลง เมื่อต่ำกว่าระยะที่ได้กำหนด (น้อยกว่า 10 cm) จะทำการส่ง message ไปยัง topic crossing1/lookouts
  • โดย message ที่กำหนดมีดังนี้
  • 1 เมื่อระยะต่ำกว่าที่กำหนด (มีรถไฟผ่าน) , 0 เมื่อไม่มีรถไฟผ่าน
  • มี Servo ที่ใช้แทนไม้กั้นโดยจะรอรับข้อความจาก topic crossing1/gates โดยให้ 0 แทนไม้กั้นปิด 1 แทนไม้กั้นเปิด
  • มีลำโพง Buzzer ที่จะทำงานเมื่อไม้กั้นปิด crossing1/gates = 0

Protocol ที่ใช้ในการสื่อสารระหว่าง Board

  • MQTT โดยผ่านการเปิด Broker เองโดยสามารถใช้งานได้ผ่าน mqtt://mqtt.embedded-train-stop.dynv6.net พร้อมกับ username + password เพื่อจำกัดการเข้าถึง และ ความปลอดภัย และ มี topic ที่ใช้ดังนี้

State Tracking

MQTT Topics

ENABLE RETAIN MESSAGE FOR ALL TOPICS!!

Lookouts สำหรับบอร์ด Ultrasonic และ Gate Servo Ultrasonic

spontaneous report

  • publishers
  • sensor boards (process value from sensor and publish on change)
  • subscribers
  • control board (subscribe and save locally for control logic)
  • web ui (subscribe and save locally for display)

Topics

  • crossing1/lookouts/west/far
  • crossing1/lookouts/west/near
  • crossing1/lookouts/east/near
  • crossing1/lookouts/east/far

Values

  • "0" => not detected
  • "1" => detected

State สำหรับ Control Board

spontaneous report

  • publishers
  • control board (save locally for control logic, display, and publish on change)
  • subscribers
  • web ui (subscribe and save locally for display)

Topics

  • crossing1/state

Values

  • "0", => no train
  • "eb0", "eb1", "eb2", "eb3", "eb4", "eb5", => train going east
  • "wb0", "wb1", "wb2", "wb3", "wb4", "wb5" => train going west

Gates สำหรับบอร์ด Gate Servo Ultrasonic

spontaneous command

  • publishers
  • control board (save locally for display and publish on auto/manual gate control command)
  • web ui (save locally for display and publish on manual gate control command)
  • subscribers
  • gate boards (subscribe and save locally for servo, buzzer, and LED control)
  • control board (subscribe and save locally for display)
  • web ui (subscribe and save locally for display)

Topics

  • crossing1/gates/north
  • crossing1/gates/south

Values

  • "0" => close
  • "1" => open

Mode สำหรับ Control Board

spontaneous command

  • publishers
  • control board (save locally for control logic, display, and publish on manual mode change command)
  • web ui (save locally for manual gate control, display, and publish on manual mode change command)
  • subscribers
  • control board (subscribe and save locally for control logic and display)
  • web ui (subscribe and save locally for manual gate control and display)

Topics

  • crossing1/mode

Values

  • "A" => Auto
  • "M" => Manual

  • *เพิ่มเติม การ publish ข้อความจะมีการทำ retain เพื่อให้บอร์ดหรือเว็บไซต์ที่พึ่งทำการ subscribe topic ใหม่ได้เห็นข้อความล่าสุดเสมอ
  • Websocket ใช้สำหรับการแสดงผลแบบ realtime ผ่านหน้าเว็บไซต์สามารถเชื่อมต่อได้ผ่าน wss://mqtt.embedded-train-stop.dynv6.net พร้อมกับ username + password

Development Tools

  • ESP32 microcontroller สำหรับการทำ project
  • Thonny (ใช้สำหรับพัฒนา program สำหรับ board ESP32)
  • Visual Studio Code + Vite (สำหรับพัฒนาหน้าเว็บไซต์)
  • wokwi (สำหรับการวาดรูปแผนผังวงจรที่ใช้งานสำหรับการพัฒนา Project)

รูปผลงานทั้งหมด

คลิปวีดีโอ:
ปรับปรุงล่าสุด 2024-03-06 02:01:29 โดย b6410504195