ระบบเปิดปิดไฟจราจรผ่านแอป Blynk (Traffic light turning on and off system)

ผู้เขียนบทความ : 050 นายอาซีซัน อาตมาตร COE#15

คณะวิศวกรรมศาสตร์ : สาขาวิศวกรรมคอมพิวเตอร์

วิชา : 40-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566

1.ความเป็นมา

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

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

2.1เพื่อที่จะใช้ตัวไมโครคอนโทรลเลอร์ กับตัว ESP32 ได้

2.2เพื่อสามารถควบคุมการทำงานของแบบจำลองสัญญาณไฟจราจรตามสถานการณ์ได้

2.3ได้เรียนรู้เกี่ยวกับ Blynk Mobile App สำหรับสร้างและควบคุมแบบจำลองไฟจราจรผ่านแอป

3.ขอบเขต

3.1แบบจำลองไฟจราจรสามารถเปิด-ปิดไฟจราจรผ่านสวิตซ์ได้

3.2แบบจำลองไฟจราจรสามารถกดเปิด-ปิดไฟจราจรได้ผ่าน แอป Blynk เพื่อควบคุมระยะไกลได้

3.3แบบจำลองไฟจราจรสามารถเปลี่ยนโหมดการควบคุมได้โดยจะมี 2 โหมด คือ Auto,MANUAL

3.4แบบจำลองไฟจราจรสามารถช่วยในการจำลองสถานการณ์จราจรและทดสอบการควบคุมไฟจราจรในสภาพการจราจรต่าง ๆ โดยไม่จำเป็นต้องมีอุปกรณ์จราจรจริง ๆ

4.ประโยชน์ที่คาดว่าจะได้รับ

4.1ระบบนี้เหมาะสำหรับการศึกษาและการสอนเกี่ยวกับการควบคุมการจราจรและการจำลองสถานการณ์จราจรในสภาพที่ปลอดภัยและสะดวกสบาย

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

4.3ใช้งบประมาณไม่มาก

5.ความรู้ที่เกี่ยวข้อง

5.1โปรเจคนี้จะเป็นการนำ ESP32 ควบคุมการแสดงผล ปิดเปิด ไฟจราจร LED ผ่านระบบเครือข่ายอินเทอร์เน็ต ได้ทั่วโลก ด้วยแอพ Blynk ที่สามารถเชื่อมต่ออุปกรณ์ Device ของเราเข้ากับ internet ได้อย่างง่ายดาย
Blynk Application เป็นโปรแกรมบนมือถือที่ทำให้เราสร้างหน้าต่างควบคุมหรือแสดงผลเชื่อมต่อกับพวกไมโครคอนโทรเลอร์ ESP32 ได้ง่ายๆ และยังสามารถควบคุมผ่าน ทุกที่ ที่สามารถเชื่อมต่ออินเตอร์เน็ต  ได้อีกด้วย

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

5.3อุปกรณ์ที่จะนำมาใช้งาน

ESP32 devkit v1

5.3.1ESP32เป็นเครื่องมือที่มีประสิทธิภาพสำหรับนักพัฒนาซอฟต์แวร์และนักสร้างโปรเจ็กต์ที่ต้องการใช้ ESP32 เพื่อพัฒนาแอปพลิเคชันและโปรแกรมเชื่อมต่อไร้สาย หรือโปรเจ็กต์เกี่ยวกับอินเทอร์เน็ตของสรรพสิ่งที่สื่อสารกับ ESP32 ผ่าน Wi-Fi หรือ Bluetooth

Button switch module

5.3.2Botton switch module เป็นโมดูลที่ใช้สำหรับการตรวจจับการกดปุ่มหรือสวิตช์ในโครงการหรือโปรเจคต์อิเล็กทรอนิกส์ โมดูลนี้มักถูกนำมาใช้ในการเพิ่มการควบคุมหรือปฏิบัติการที่ต้องการการป้อนข้อมูลจากผู้ใช้หรือการเปิด/ปิดอุปกรณ์หรือระบบในโปรเจคต์ต่าง ๆ

สาย Jumper

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

Traffic light led module

5.3.4Traffic light led module เป็นโมดูลไฟจราจร 3 สี แดง เหลือง เขียว ใช้ไฟเลี้ยง 5V สามารถใช้สัญญาณ Digital จาก Arduino ควบคุมได้โดยตรง

Arduino

5.3.5Arduino เป็นโปรแกรมที่ใช้สำหรับการเขียนโปรแกรมควบคุมและสามารถทำการแปลงไฟล์ดังกล่าวเพื่อนำไปอัพโหลดลงยังบอร์ด Arduino โดยเราสามารถที่จะเลือกใช้โปรแกรมแบบ online IDE หรือ desktop IDE ก็ได้ (สำหรับในบทความนี้ จะอธิบายเฉพาะแบบ Desktop IDE ที่ใช้กับ Windows OS เท่านั้น)

Blynk

5.3.6Blynk แอปพลิเคชันสำเร็จรูปที่ใช้สำหรับงานที่เกี่ยวกับอินเทอร์เน็ตของสรรพสิ่ง (Internet of Things, IoT) ที่ทำให้เราสามารถเชื่อมต่ออุปกรณ์ต่าง ๆ เข้ากับอินเทอร์เน็ตในลักษณะการเชื่อมต่อเครื่องแม่ข่าย (Server) ไปยังอุปกรณ์ลูกข่าย (Client) เช่น Arduino, ESP-8266, ESP-32, NodeMCU

การใช้งานแอปพลิเคชั่น BLYNK ในเว็บ

1.พอเรามาในหน้าแอปพลิเคขั่น BLYNK จะต้องทำการล็อคอินหรือต้องสมัครสมาชิกเพื่อใช้งานก่อน

2.พอทำการล็อคอินเสร็จเรียบร้อยก็ทำการกดไปที่ NewTemplate

3.กดเสร็จจะได้หน้าต่างแบบนี้ในส่วน Name สามารตั้งชื่อได้เลยส่วน Hard เลือกเป็น ESP32 เชื่อมกับ WIFI แล้วกด DONE ได้เลย

4.จากนั้นจะเห็นหน้าต่างดังภาพให้กดไปที่ไฟล์ที่เราทำการสร้างไว้

5.จะเป็นการเอาตัว ID,Token,pass ไปใส่ในโค้ด arduio

6.จะเป็นในส่วนของการสร้างปุ่มในแอป Blynk ก็ขั้นตอนแรกก็จะต้องกดไปที่ Datastreams แล้วไปกดที่ Edit

7.จากนั้นก็ทำการกด NEW Datastream แล้วเลือกขาเป็น Digital pin จากนั้นเลือกขาที่ pin ได้เลยว่าตัวสวิตซ์ของเรานั้นเราได้ทำการกำหนดไว้ให้อยู่ที่ขาไหนก็กับหนดไว้ในตัวอย่างจะเลือกเป็นขาที่ 2 แล้ว pin mode จะเลือกเป็น output แล้วกด Createหรือsave ได้เลย

8.จะเป็นการใช้งานในแอปพลิเคชั่น Blynk ในมือถือ ส่วนแรกก็ต้องทำการไปติดตั้ง Blynk ในมือถือก็สามารถติดตั้งได้ทั้งapp store และ play store ได้ทั้งสองแพลตฟอร์ม จากนั้นก็กดไปในแอป Blynk แล้วใส่รหัสให้เรียบร้อยก็จะได้หน้าตาที่สามารถเชื่อมกับในเว็บได้

9.กดเข้าไปที่ไฟล์ที่เราได้สร้างไว้ได้เลยจากนั้นก็กดไปเครื่องหมายประแจ

10.จากนั้นก็กดรูป + แล้วกดต่อไปที่ปุ่ม Botton จากนั้นก็กดไปที่ปุ่ม off แล้วกดไปที่รูป + เพื่อทำการเลือกขา digital pin ที่ได้ตั้งค่าไว้ในแอปพลิเคชั่น Blynk ในเว็บ จากนั้นก็จะสามารถที่จะควบคุมผ่านปุ่มกดในแอปได้นั้นเอง

6.ผลการดำเนินงาน

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

หลักการทำงานก็คือเราจะต้องทำการปล่อยตัวสัญญาณwifiจากโทรศัพทร์มือถือของเราจากนั้นส่งค่าไปให้ตัวesp32ทำการประมวลผลแล้วส่งค่าไปให้ตัว LED ไฟจราจรจากนั้นก็ทำการเข้าไปในแอปพลิเคชั่น Blynk จากนั้นก็ทำการสร้างปุ่มจากแอป Blynk โดยรับค่าจากตัว Botton switch แล้วส่งค่าไปยัง ESP32 ประมวลผลแล้วส่งค่าไปที่LED ไฟจราจรให้ทำงาน

ภาพรวมหลักการทำงาน

6.2ภาพรวมในการต่อวงจร

6.3ในส่วนของ code

ส่วนที่ 1-3 การ กำหนดค่าคงที่สำหรับ Template ID, Template Name และ Auth Token ของแอป Blynk. Template ID คือรหัสของแม่แบบที่ใช้ในแอป Blynk สำหรับโปรเจกต์นี้ และ Auth Token เป็นคีย์ที่ใช้เชื่อมต่อระหว่าง ESP32 และแอป Blynk และรวมไลบรารีที่จำเป็นสำหรับการใช้งาน WiFi, WiFiClient, และ Blynk บน ESP32และจะเป็นการกำหนดขาของ ไฟจราจร LED ทั้ง 3 สี กับขาของตัวสวิตซ์ทั้ง 4 ตัว

ภายในฟังค์ชั่น setup โปรแกรมเริ่มการเชื่อมต่อกับบริการ Blynk โดยใช้คีย์การเชื่อมต่อและข้อมูลเครือข่าย Wi-Fi (SSID และรหัสผ่าน) ที่กำหนดไว้ในตัวแปร BLYNK_AUTH_TOKEN, ssid, และ pass จากนั้นจะเป็นกำหนดการทำงานของพินไฟจราจรทั้งสามสีให้เป็น OUTPUT และกำหนดการทำงานของพินสวิตช์ทั้ง 4 ตัวให้เป็น INTPUT จากนั้นตั้งค่าสถานะเริ่มต้นของ LED ในขั้นตอนนี้ไฟสีแดง (R), ไฟสีเหลือง (Y), และ ไฟสีเขียว (G) ถูกตั้งค่าให้เป็นสถานะสูง (HIGH) ซึ่งหมายความว่า LED ทั้งสามจะติดเมื่อโปรแกรมถูกเริ่มขึ้นใช้งาน

ในส่วนนี้มีหน้าที่ในการทำงานตลอดเวลาในการตรวจสอบสถานะของสวิตช์และระบบโหมดการทำงาน, ทำงานในโหมด Manual หรือ Auto, และให้ Blynk ทำงาน จะเป็นการเรียกใช้ฟังค์ชั่นย่อย ของโหมด auto และ manual

6.4โค้ด OOP

การสร้างคลาส TrafficLight สำหรับการจัดการไฟสีจราจร

run(): เป็นเมธอดที่ทำงานซ้ำทุกครั้งใน loop ของ Arduino. มันทำหน้าที่:

  • เรียก Blynk.run() เพื่อให้ไลบรารี Blynk ทำงาน.
  • เรียก timer.run() เพื่อให้ BlynkTimer ทำงาน.
  • อ่านสถานะของสวิตช์ (SWR, SWY, SWG) จากการอ่านค่า digital ของตัวแปร swr, swy, swg.
  • ตรวจสอบว่าสวิตช์โหมด (modeSwitch) อยู่ในสถานะ ON (isSwitchOn() == true) หรือไม่ ถ้าใช่ จะเรียกเมธอด autoMode() ถ้าไม่ใช่ จะเรียก manualMode(SWR, SWY, SWG)

การสร้างคลาส Switch สำหรับการจัดการสวิตช์

สร้างคลาส TrafficLightController ที่รวมทั้งสองคลาสเพื่อควบคุมการทำงานของไฟสีจรา

void setup() {...}: เป็นเมธอดที่ใช้ในการตั้งค่าเริ่มต้นของ TrafficLightController. มันเรียก Serial.begin(115200) เพื่อเปิด Serial communication สำหรับการดูข้อมูลผ่าน Serial Monitor. ต่อมา, มันเรียก trafficLight.setup() เพื่อทำการตั้งค่าเริ่มต้นของไฟสีจราจร โดยเรียกใช้เมธอด setup() ของ TrafficLight. สุดท้าย, มันใช้ pinMode(modeSwitch.pin, INPUT_PULLUP) เพื่อตั้งค่าโหมดของ modeSwitch (สวิตช์) เป็น INPUT_PULLUP เพื่อให้เป็นโหมด Pull-Up resistor.

autoMode(): เป็นเมธอดที่ใช้ในการควบคุมไฟสีแบบอัตโนมัติ โดยทำการเปิดและปิดไฟสีแต่ละสีตามระยะเวลาที่กำหนด.

manualMode(int SWR, int SWY, int SWG): เป็นเมธอดที่ใช้ในการควบคุมไฟสีแบบกำหนดเอง โดยให้ไฟสีแต่ละสีเปิดหรือปิดตามสถานะของสวิตช์ (SWR, SWY, SWG).

  • การสร้าง object trafficLightController จากคลาส TrafficLightController โดยให้กำหนดพารามิเตอร์ r, y, g, และ switchPin.
  • ใน setup(): เรียกเมธอด setup() ของ trafficLightController เพื่อทำการตั้งค่าเริ่มต้น.
  • ใน loop(): เรียกเมธอด run() ของ trafficLightController เพื่อทำการดำเนินการตรวจสอบสถานะและทำงานในแต่ละรอบของ loop.

6.5ในส่วนของหน้าตาแอป Blynk ที่ได้ทำการสร้างปุ่มไว้

Blynk ในมือถือ

6.5การทดลองใช้งานอุปกรณ์

ขั้นตอนแรกเลยก็คือเราจะทำการเสียบปลั๊กadapterเข้ากับไฟบ้าน220Vจากนั้นใช้สายUSBเสียบเข้าบอร์ดแต่ไฟจราจรจะยังไม่ติดจากนั้นเราก็ทำการปล่อยตัวสัญญาณwifiให้เชื่อมกับESP32พอเชื่อมแล้วไฟจราจรก็จะติดเป็นแบบ Auto

ในแบบ Auto

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

ในโหมด manual

7.สรุปผลการทดลองและข้อเสนอแนะ

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

ข้อเสนอแนะ

7.1เพิ่มฟีเจอร์การตั้งเวลาเปิด-ปิดไฟจราจรอัตโนมัติ, เช่น ให้ไฟจราจรติดต่อเวลาหรือตามตารางการใช้งาน.

7.2การเพิ่มระบบแจ้งเตือนทาง push notification เมื่อเกิดเหตุการณ์สำคัญ เช่น การเปิด/ปิดไฟ, การตรวจจับการจราจรที่ผิดปกติ, หรือการแจ้งเตือนสถานะ

8.ข้อมูลอ้างอิง

8.1การสอนสร้างไฟจราจรCardboardRobots SIMPLE Traffic Lights | Blynk App | IoT | NodeMCU (สืบค้นวันที่ 27 ตุลาคม 2566) https://www.youtube.com/watch?v=1jPg1Ft_8bU&t=10s

8.2Chanin Bunart การเปิด-ปิดไฟผ่านระบบไอโอทีผ่าน Blynk iot (สืบค้นวันที่ 29 ตุลาคม 2566)https://www.youtube.com/watch?v=q9C_p7miIi0

8.3สอนใช้งาน ESP32 เริ่มต้นใช้งาน ติดตั้งโปรแกรมเบื้องต้น ESP32

www.cybertice.com/article/226/สอนใช้งาน-esp32-เริ่มต้นใช้งาน-ติดตั้งโปรแกรมเบื้องต้น-esp32

คลิปใน YouTube

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *