Hình 3.15 Sơ đồ đèn tín hiệu giao thông
- Nguyên lý hoạt động của hệ thống như sau
• Chế độ ban ngày
Khi đèn xanh của tuyến A được bật thì cùng lúc đó đèn đỏ ở tuyến B bật, đồng thời đèn đỏ cho người đi bộ của tuyến A bật, đèn xanh cho người đi bộ ở tuyến B được bật. Sau một khoảng thời gian nhất định đèn xanh tuyến A tắt, đèn vàng tuyến A được bật lên. Khi đèn vàng tuyến A tắt thì đèn đỏ tuyến A bật, đèn xanh tuyến B bật, đèn xanh
A
đèn đỏ tuyến B bật, đèn xanh tuyến A bật, đèn đỏ đi bộ tuyến A bật, đèn xanh đi bộ tuyến B bật. Quá trình lặp đi lặp lại. “hình 3.15”
• Chế độ ban đêm:
Tất cả đèn tắt chỉ có đèn vàng bật 0.5s tắt 0.5s liên tục. Bật đèn đường vào lúc 18h và tắt lúc 4h59’ sáng hôm sau.
Camera thu thập hình ảnh ở hiện trường và đưa lên web server, cảm biến âm thanh thu thập dữ liệu và gửi cảnh báo lên web server khi phát hiện tiếng ồn vượt ngưỡng cho phép
3.4. Bảng phân ngõ vào, ra của Arduino mega
Danh sách địa chỉ ngõ vào, ra được sử dụng trong Arduino mege được thể hiện ở “bảng 3.4”
Bảng 3.4 bảng phân công ngõ vào, ra
STT Đia chỉ (chân) Thiết bị
1 A0 Cảm biến âm thanh
2 7
Led 7 đoạn (hiển thị thời gian)
3 8 4 9 5 10 6 11 7 2 Led 7 đoạn (hiển thị thời gian)
8 3 9 4 10 5 11 6 12 14 Camera 13 15 14 23 Đèn tín hiệu 15 25
16 27 17 29 Đèn tín hiệu 18 31 19 33 20 35 Đèn tín hiệu (người đi bộ) 21 37 22 39 Đèn tín hiệu (người đi bộ) 23 41 24 43 Đèn đường 25 SCL
Molude thời gian thực
26 SDA
3.5. Sơ đồ đấu nối dây của hệ thống
Sơ đố đấu dây của hệ thống “hình 3.16” bao gồm đèn tín hiệu giao thông, led hiển thị thời gian, đèn đương, cảm biến âm thanh, module thời gian thực, camera giám sát được thể hiện ở hình
Hình 3.16 Sơ đồ đấu nối dây của hệ thống
3.6. Giản đồ thời gian và đồ thị mức độ tiếng ồn
- Giản đồ thời gian
Đối với chế độ ban ngày thì thời gian hiển thị với led đỏ là 28s, thời gian hiển thị với led xanh là 25s, thời gian hiển thị với led vàng là 3s “hình 3.17”
Đối với chế độ ban đêm thì thời gian hiển thị led vàng là 0.5s bật và 0.5s tắt “hinh 3.18”
- Biểu đồ mức độ tiếng ồn
Biểu đồ mức độ tiếng ồn đo được, thể hiện ở (hình 3.219) như sau: Tiếng ồn trong mức độ cho phép đo được là từ 130 – 450
- Đèn đỏ hiển thị 28s
- Đèn xanh hiển thị 25s
- Đèn vàng hiển thị 3s
Hình 3.18 Giản đồ thời gian chế độ ban đêm
Hình 3.19 Biều đồ đo mức độ tiếng ồn
3.7. Thiết kế mạch
Để thiết kế được mạch điều khiển thì cần sử dụng phần mềm Altium. Phần mền cho phép thiết kế mạch ở dạng 2D thể hiện ở “hình 3.20” và 3D thể hiện ở “hình 3.21”
Hình 3.20 Mạch thiết kế ở dạng 2D
Hình 3.21 Mạch thiết kế ở dạng 3D
3.8. Lưu đồ thuật toán
Lưu đồ thuật toán bao gồm: •
• Lưu đồ thuật toán ESP32-CAM trên web server, cảm biến âm thanh trên web server
❖ Giải thích lưu đồ thuật toán
Giải thích lưu đồ thuật toán đèn giao thông thể hiện ở “hình 3.22”
Bắt đầu. Thực hiện khai báo thời gian hiển thị đèn tín hiệu, thời gian bật tắt chế độ, thời gian bật tắt đền đường. Sau khi khai báo xong ta thực hiện tạo ngắt timer 10ms.Tiếp tục thực hiện việc kiểm tra thời gian trên module thời gian thực để chuyển chế độ của đèn tín hiệu. Nếu đúng thì sẽ thực hiện chế độ ban ngày từ 5h sáng đến 23h đêm, nếu sai sẽ thực hiện chế độ ban đêm từ 23h đêm đến 4h59’ sáng hôm sau. Sau khi kiểm tra thời gian xong Arduino mega sẽ thực hiện gửi các bít đến IC 74HC595 để chạy thời gian hiển thị trên led 7 đoạn (đèn đỏ 28s, đèn xanh 25s, đèn vàng 3s). Tiếp tục thực hiện kiểm tra thời gian để bật đèn đường, nếu đúng thì bật đèn đường, nếu sai thì sẽ tắt đèn đường thời gian hoạt động của đèn đường là từ 18h đến 4h59’ sáng hôm sau. Chương trình lặp đi lặp lại
Chương trình con ngắt timer thể hiện ở “hình 3.23”
- Thời gian 1 giây tăng lên 1 đơn vị => Đang bật chế độ ban đêm + Nếu sai => 1
+ Nếu đúng => kiểm tra thời gian 1 giây bằng 100 lần 10ms
• Nếu sai => 2
• Nếu đúng => Thời gian 1s bằng 0, thời gian tuyến 1 giảm 1s, thời gian
tuyến 2 giảm 1s
- Thời gian bằng – 1
+ Nếu sai => 3
+ Nếu đúng => Chế độ 1 tăng lên 1 đơn vị
- Chế độ 1 bằng 1
+ Nếu đúng => Thời gian tuyến 1 bằng thời gian đèn xanh 1. Bật đèn xanh 1, bật đèn đỏ bộ 1, tắt đèn đỏ 1, tắt đèn vàng 1, tắt đèn xanh 1 => 3.
+ Nếu sai => kiểm tra kế tiếp.
- Chế độ 1 bằng 2
+ Nếu đúng => thời gian tuyến 1 bằng thời gian vàng 1, nhấp nháy bộ 1 bằng 0 => Tắt đèn đỏ 1, tắt đèn xanh 1, bật đèn vàng 1, bật đèn đỏ bộ 1 tắt đèn xanh bộ 1 => 3
+ Nếu sai => kiểm tra kế tiếp.
- Chế độ 1 bằng 3
+ Nếu đúng => chế độ 1 bằng 0, thời gian tuyến 1 bằng thời gian đỏ 1 => Bật đèn đỏ 1, bật đèn xanh bộ 1, tắt đèn xanh 1, tắt đèn vàng 1 tắt đèn đỏ bộ 1 => 3
+ Nếu sai => 3
- 3 => Thời gian 2 bằng -1
+ Nếu sai => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5. + Nếu đúng => chế độ 2 tăng 1 đơn vị. Kiểm tra điều kiện tiếp theo.
- Chế độ 2 bằng 1
+ Nếu đúng => Thời gian tuyến 2 bằng thời gian vàng 2, nhấp nháy bộ 2 bằng 0 => Đỏ 2 tắt, xanh 2 tắt, vàng 2 bật, đỏ bộ 2 bật, xanh bộ 2 tắt => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5.
+ Nếu sai => kiểm tra kế tiếp.
- Chế độ 2 bằng 2
+ Nếu đúng =>Thời gian tuyến 2 bằng thời gian đỏ 2 => Đỏ 2 bật, xanh 2 tắt vàng 2 tắt, đỏ bộ 2 tắt, xanh bộ 2 bật => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5.
+ Nếu sai => Kiểm tra chế độ kế tiếp.
- Chế độ 2 bằng 3
+ Nếu đúng => thời gian tuyến 2 bằng thời gian vàng 2, nhấp nháy bộ 2 bằng 0 => Đỏ 2 tắt, xanh 2 bật vàng 2 tắt, đỏ bộ 2 bật xanh bộ 2 tắt => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5.
+ Nếu sai => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5.
- 2 => Kiểm tra chế độ 1 bằng 0 và thời gian 1 nhỏ hơn 5
+ Nếu đúng => Nhấp nháy bộ 1 tăng 1 đơn vị => Kiểm tra nhấp nháy bộ 1 lớn hơn hoặc bằng 30 lần 10ms
• Nếu đúng => Nhấp nháy bộ 1 bằng 0, đảo trạng thái led xanh bộ 1 =>
Chế độ 2 bằng 2 và thời gian tuyến 2 nhỏ hơn 5
• Nếu sai => quay lại kiểm tra nhấp nháy bộ 1 lớn hơn hoặc bằng 30 lần
10ms
+ Nếu sai => Kiểm tra chế độ 2 bằng 2 và thời gian tuyến 2 nhỏ hơn 5
- Chế độ 2 bằng 2 và thời gian tuyến 2 nhỏ hơn 5
+ Nếu đúng => nhấp nháy bộ 2 tăng 1 đơn vị => kiểm tra nhấp nháy bộ 2 lớn hơn hoặc bằng 30 lần 10 ms
• Nếu đúng => Nhấp nháy bộ 2 bằng 0, đảo trạng thái led xanh bộ 2 =>
Chương tình chính. •
- 1 => Kiểm tra thời gian sáng lớn hơn hoặc bằng 50
+ Nếu đúng => thời gian 1 bằng 0, đảo trạng thái led vàng 1, đảo trạng thái led vàng 2 => chương trình chính.
+ Nếu sai => chương trình chính.
Giải thích lưu đồ thuật toán cảm biến âm thanh và tiếng ồn thể hiện ở “hình 3.24” Bắt đầu. thực hiện khai báo thư viên cho chương trình bao gồm khai báo wifi, arduino, esp-camare, esp-timer, esp-htttp-sever.h, …Sau khi thực hiện xong việc khai báo thư viện ta tiếp tục thực hiện thiết lập dao diện web server như bố cục, màu sắc, …Trong giao diện web server gồm có hình ảnh camera giám sát được chiếu trực tiếp thông qua internet, cảm biến âm thanh sẽ thu thập dữ liệu và gửi về arduino sau đó arduino thực hiện việc gửi cảnh báo lên web server. Đối với cảm biến âm thanh, nếu cảm biến ở mức cao (=1) thì sẽ hiển thị cảnh báo lên web server với dòng chữ “tiếng ồn vượt ngưỡng cho phép, nếu cảm biến ở mức thấp (=0) thì sẽ hiển thị cảnh báo lên web server với dòng chữ tiếng ồn trong ngưỡng cho phép. Chương trình sẽ lặp đi lặp lại
3.9. Thiết kế giao diện web server
Giao diện web server “hình 3.25” được thiết kế bao gồm tên đề tài được thể hiện với chữ màu xanh phía trên hình ảnh của camera, tên giáo viên hướng dẫn và tên sinh viên thực hiện được để ở góc dưới bên trái màng hình, hình ảnh camera được thể hiện ở giữa màng hình, cảnh báo tiếng ồn thể hiện ở bên dưới hình ảnh camera
Hình 3.25 Giao diện web server
- Cảnh báo tiếng ồn trên web server
Khi cảm biến âm thanh có tín hiệu tiếng ồn trong mức độ cho phép sẽ truyền dữ liệu về cho Arduino sau đó gửi cảnh báo lên web server thông qua ESP-CAM. Lúc này màng hình web server sẽ hiển thị cảnh báo với dòng chữ “tiếng ồn trong mức độ cho phép” “hình 3.26”
Hình 3.26 Cảnh báo tiếng ồn trong mức độ cho phép trên web server
Khi cảm biến âm thanh có tín hiệu tiếng ồn vượt ngưỡng cho phép sẽ truyền dữ liệu về cho Arduino sau đó gửi cảnh báo lên web server thông qua ESP-CAM. Lúc này màng hình web server sẽ hiển thị cảnh báo với dòng chữ “tiếng ồn vượt ngưỡng cho phép” “hình 3.27”
3.10. Thiết kế mô hình
- Bộ phận trụ đèn tín hiệu giao thông “hình 3.28” sẽ bao gồm led 7 đoạn hiển thị thời gian, đèn tín hiệu dành cho các phương tiện, đèn tín hiệu dành cho người đi bộ.
Hinh 3.28 trụ đèn tín hiệu giao thông
Hình 3.29 Trụ đèn chiếu sáng
- Bộ phận trụ camera giám sát “hình 3.30” được điều chỉnh góc quan sát phù hợp
3.11. Cách nạp chương trình cho Arduino bằng phầm mền Arduino IDE
❖ Nạp chương trình đèn tín hiệu giao thông
- Sau khi viết xong chương trình điều khiển ta chọn Tool sau đó chọn Board chọn
Arduino mega hoặc Mega 2560 như “hình 3.32”
Hình 3.32 Chọn Arduino để nạp chương trình
- Sau khi chọn Arduino xong ta tiến hành chọn cổng com trên máy tính như “hình
- Sau khi chọn cổng nạp xong ta thực hiện tiến hành nạp chương trình bằng cách chọn vào mũi tên hướng ra như “hình 3.34”
Hình 3.34 Mũi tên để nạp chương trình
❖ Nạp chương trình cho ESP32- CAM
- Tương tự như nạp chương trình đèn tín hiệu giao thông. Sau khi viết chương trình
xong ta chọn Tool sau đó chọn Board => ESP32 arduino => ESP Dev Module như “hình 3.35”
Hình 3.35 Chọn ESP32 để nạp chương trình
- Sau khi chọn xong ESP 32 để nap, ta tiếp tục vào tool chọn Partition Scheme rồi
Hình 3.36 Chọn Partition Scheme để nạp chương trình
- Sau khi chọn xong Partition Scheme tiếp tục chọn cổng nạp như “hình 3.33” và chọn
KẾT LUẬN
- Kết quả đạt được
Sau quá trình nghiên cứu và thực hiện hệ thống điều khiển đèn tín hiệu giao thông sử dụng camera giám sát thông qua web server đã được hoàn thành. Nhìn chung hệ thống đáp ứng được các yêu cầu đề tài đặt ra, tuy nhiên vẫn còn một số nhược điểm cần được khắc phục.
Nắm được cách lập trình cho Arduino Nắm được cách đấu nối các linh kiện Sử dụng được các phần mềm hỗ trợ
- Ưu – nhược điểm
Ưu điểm
• Hệ thống hoạt động tương đối ổn định
• Sử dụng các thiết bị nhỏ gọn, thích hợp cho các ứng dụng đòi hỏi cao về yêu
cầu nhỏ gọn và tiết kiệm không gian lắp đặt
• Được lập trình dễ dàng, dễ chỉnh sữa
Nhược điểm
• Hệ thống còn khá đơn giản, chưa tích hợp được nhiều chức năng vào hệ thống
Ví dụ như có thể nhận diện được xe vi phạm
• Không chống được nước, dễ bị chạm trên mạch điều khiển
• Chất lượng hình ảnh của camera được hiển thị trên web server còn kém
- Hướng phát triển
• Ứng dụng xử lý ảnh vào hệ thống để nhận diện được biển số xe vi phạm giao
thông
• Sử dụng thêm nhiều cảm biến hơn
TÀI LIỆU THAM KHẢO
[1] UNICA.VN (2020). IoT là gì? Tổng quan về IoT trong cuộc sống,
https://unica.vn/blog/iot-la-gi-2020
[2] ĐIỆN TỬ VIETNIC (2018). GIỚI THIỆU VỀ ARDUINO VÀ ỨNG DỤNG
ARDUINO,https://www.vietnic.vn/gioi-thieu-ve-arduino-va-ung-dung-arduino
[3] CÔNG TY TNHH TM VÀ DV ĐIỆN TỬ TƯƠNG LAI VIỆT NAM (2018).TÌM
HIỂU VỀ LED 7 ĐOẠN, https://dientutuonglai.com/tim-hieu-led-7-doan.html
[4] Trương Công Lý (2021). Giới thiệu ESP32-CAM Bluetooth Camera OV2640-B1,
https://www.tcl47.com/2021/03/lap-trinh-esp32-cam-voi-arduino-ide.html
[5] CÔNG TY TNHH TM VÀ DV ĐIỆN TỬ TƯƠNG LAI VIỆT NAM,(2018). TÌM
HIỂU IC 74HC595, https://dientutuonglai.com/tim-hieu-74hc595.html
[6] TKTech trust in every measurre. Transistor C1815, https://tktech.vn/transistor-
c1815/
[7] NSHOP linh kiện điện tử. Cảm biến âm thanh MAX9814 tích hợp AGC,
https://nshopvn.com/product/cam-bien-am-thanh-max9814-tich-hop-agc/
[8] CẢM BIẾN.WIKI (2020). Cảm biến âm thanh là gì? Nguyên lý làm việc và ứng
dụng https://www.cambien.wiki/2020/05/cam-bien-am-thanh-la-gi-nguyen-ly- lam.html
[9] Điện tử 360. Module đèn led giao thông 5V, https://dientu360.com/module-den-led-
giao-thong-5v
[10] NSHOP linh kiện điện tử. Module DS3231, https://nshopvn.com/product/module-
thoi-gian-thuc-rtc-ds3231/
[11] Ohtech Công nghệ cho mọi người. Cài đặt Arduino IDE và upload code cho
ESP32,https://ohtech.vn/all-courses/lap-trinh-esp32-voi-arduino-ide/lessons/cai-dat-
arduino-ide-va-upload-code-cho-esp32/
[12] Ohtech Công nghê cho mọi người. ESP32 HTTP Server sử dụng chế độ Điểm truy
cập WiFI (Access-Point), https://deviot.vn/tutorials/esp32.66047996/esp32-web-server-
[13] Tuan Đoan. Môi trường lập trình ESP32 và nền tảng Arduino IDE,
https://deviot.vn/tutorials/esp32.66047996/moi-truong-lap-trinh-esp32-va-nen-tang-
arduino-ide.54524112
[14] Tuan Đoan. Lỗi trong khi nạp chương trình,
https://deviot.vn/tutorials/esp32.66047996/loi-trong-khi-nap-chuong-trinh.65815490
PHỤ LỤC
1. Chương trình đèn tín hiệu giao thông
#include <Wire.h> void read1307();
int bcd2dec(byte num); int dec2bcd(byte num); void setgiay( byte s);
void settime(byte s, byte p, byte h, byte wd, byte d, byte t, byte n);
int latchPin1 = 5; // Latch pin of 74HC595 is connected to Digital pin 5 int clockPin1 = 4; // Clock pin of 74HC595 is connected to Digital pin 6 int dataPin1 = 6; // Data pin of 74HC595 is connected to Digital pin 4 int hangchuc1 = 2; int hangdonvi1 = 3; int den_do1 = 23; int den_xanh1 = 25; int den_vang1 = 27; int den_do_bo1 = 35; int den_xanh_bo1 = 37;
int latchPin2 = 10; // Latch pin of 74HC595 is connected to Digital pin 5 int clockPin2 = 9; // Clock pin of 74HC595 is connected to Digital pin 6 int dataPin2 = 11; // Data pin of 74HC595 is connected to Digital pin 4