1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Báo cáo Đồ Án 1 Đề tài Điều khiển led bằng esp32

14 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Điều Khiển Led Bằng Esp32
Tác giả Cao Việt Bình, 20213818, 20203330
Người hướng dẫn Th.S Tạ Thị Kim Huệ
Trường học Đại Học Bách Khoa Hà Nội
Chuyên ngành Điện – Điện Tử
Thể loại báo cáo đồ án
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 379,38 KB

Nội dung

Bằng cách lập trình và thiết kế hệ thống điều khiển LED mô phỏng đèn giao thông, dự án này không chỉ giúp hiểu rõ nguyên lý hoạt động của hệ thống đèn giao thông mà còn mở ra cơ hội ứng

Trang 1

TRƯỜNG ĐIỆN – ĐIỆN TỬ

*****  *****

BÁO CÁO ĐỒ ÁN 1 :

ĐỀ TÀI: ĐIỀU KHIỂN LED BẰNG ESP32

Giảng viên hướng dẫn: Th.S Tạ Thị Kim Huệ

Mã lớp: 748536 Nhóm: 1 Sinh viên: Cao Việt Bình 20213818

20203330

Hà Nội, T1/2024

MỤC LỤC

LỜI MỞ ĐẦU 4

Trang 2

CHƯƠNG 1: TỔNG QUAN 5

1.1 Yêu cầu đề tài 5

1.2 Yêu cầu chức năng 5

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 6

2.1 VISUAL STUDIO CODE 6

2.1.1 Tổng quan 6

2.1.2 Các Thành Phần 6

2.2 ESP32 7

2.2.1 Tổng quan 7

2.3 WEB WOKWI 8

2.3.1 Tổng quan 8

CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG 9

3.1 Chạy thử code 9

3.2 Mô phỏng trên WOKWI 12

KẾT LUẬN 13

TÀI LIỆU THAM KHẢO 14

Trang 3

LỜI MỞ ĐẦU

Trong bối cảnh phát triển công nghệ hiện nay, Internet of Things (IoT) đang ngày càng được ứng dụng rộng rãi trong nhiều lĩnh vực, từ tự động hóa, nông nghiệp, cho đến giao thông vận tải Một trong những ứng dụng phổ biến của IoT là sử dụng các vi điều khiển để điều khiển các thiết bị thông minh, góp phần nâng cao hiệu quả và giảm thiểu chi phí vận hành

Dự án điều khiển đèn giao thông bằng ESP32 là một minh chứng tiêu biểu cho việc ứng dụng IoT trong đời sống thực tiễn ESP32, với khả năng xử lý mạnh mẽ, tích hợp Wi-Fi và Bluetooth, là một lựa chọn lý tưởng để thực hiện các dự án liên quan đến tự động hóa Bằng cách lập trình và thiết kế hệ thống điều khiển LED mô phỏng đèn giao thông, dự án này không chỉ giúp hiểu rõ nguyên lý hoạt động của hệ thống đèn giao thông mà còn mở ra cơ hội ứng dụng vào các hệ thống thực tế nhằm cải thiện tình hình giao thông tại các đô thị

Mục tiêu của đề tài không chỉ dừng lại ở việc xây dựng một hệ thống mô phỏng hoạt động ổn định, mà còn hướng đến khả năng mở rộng, tích hợp các tính năng thông minh như điều khiển từ xa qua mạng không dây, cảm biến lưu lượng giao thông, hoặc điều chỉnh theo thời gian thực Đề tài này là bước đầu giúp sinh viên làm quen với IoT, lập trình vi điều khiển và thiết kế hệ thống thông minh, đóng góp vào sự phát triển của công nghệ trong lĩnh vực giao thông

Trang 4

CHƯƠNG 1: TỔNG QUAN

1.1 Yêu cầu đề tài

Mục tiêu của đề tài là thiết kế và triển khai hệ thống điều khiển đèn giao thông tự động thông minh sử dụng vi điều khiển ESP32 Hệ thống sẽ tự động điều khiển các tín hiệu đèn giao thông (đỏ, vàng, xanh) cho ít nhất hai làn đường, với khả năng thay đổi thời gian sáng của từng đèn theo yêu cầu Các chức năng của hệ thống bao gồm: chuyển đổi chu kỳ đèn giao thông tự động, giám sát và điều khiển từ xa qua mạng WiFi, và khả năng điều chỉnh thời gian sáng của từng đèn từ ứng dụng di động hoặc web Hệ thống cũng sẽ có khả năng giám sát trạng thái hoạt động của các đèn giao thông và thông báo lỗi khi có sự cố Đây là một giải pháp tiết kiệm năng lượng, hiệu quả và dễ dàng mở rộng, có thể áp dụng cho các tuyến đường giao thông trong các thành phố thông minh

1.2 Yêu cầu chức năng

Mục tiêu của đề tài là nghiên cứu và thiết kế hệ thống điều khiển đèn giao thông sử dụng vi điều khiển ESP32 Hệ thống này sẽ điều khiển đèn giao thông một cách tự động và linh hoạt, có thể thay đổi tín hiệu đèn theo chu kỳ và kết hợp các tính năng giám sát từ xa

Hệ thống điều khiển đèn giao thông sử dụng ESP32 cần có các chức năng chính sau:

tự động điều khiển các tín hiệu đèn giao thông (đỏ, vàng, xanh) cho ít nhất hai làn đường, với khả năng chuyển đổi giữa các trạng thái đèn theo chu kỳ đã được lập trình sẵn Người dùng có thể điều chỉnh thời gian sáng của mỗi đèn qua ứng dụng di động hoặc web kết nối WiFi Giói thiệu công cụ, phần mềm sử dụng

Trang 5

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 VISUAL STUDIO CODE

2.1.1 Tổng quan

Visual Studio Code (VS Code) là một trình soạn thảo mã nguồn mạnh mẽ, được phát triển bởi Microsoft Nó hỗ trợ nhiều ngôn ngữ lập trình, bao gồm JavaScript, Python, C++, Java, và nhiều ngôn ngữ khác VS Code là một phần mềm mã nguồn mở, miễn phí và chạy trên các hệ điều hành Windows, macOS, và Linux

Các tính năng chính của Visual Studio Code bao gồm:

 Tự động hoàn thành mã (IntelliSense): Cung cấp gợi ý về mã nguồn, giúp tăng năng suất lập trình

 Debugging: Hỗ trợ gỡ lỗi trực tiếp từ giao diện, giúp phát hiện và sửa lỗi nhanh chóng

 Tích hợp Git: VS Code tích hợp sẵn Git, giúp quản lý mã nguồn dễ dàng ngay trong giao diện

 Extension Marketplace: Cung cấp hàng ngàn tiện ích mở rộng (extension) cho các ngôn ngữ lập trình, công cụ phát triển và các tính năng bổ sung khác

 Hỗ trợ đa nền tảng: Có thể chạy trên nhiều hệ điều hành khác nhau và có thể được tùy chỉnh để phù hợp với nhu cầu cá nhân của lập trình viên

 Tối ưu hóa cho Web và Cloud Development: Với các tiện ích như Live Server

và Docker integration, VS Code rất phù hợp cho các dự án phát triển web hoặc ứng dụng đám mây

2.1.2 Các Thành Phần

PlatformIO và Arduino Library là hai công cụ quan trọng trong việc phát triển phần mềm cho vi điều khiển, đặc biệt khi sử dụng Visual Studio Code (VS Code) làm môi trường phát triển

 PlatformIO là một hệ sinh thái phát triển mã nguồn mở hỗ trợ nhiều loại vi điều khiển khác nhau như Arduino, ESP32, STM32, v.v Nó cung cấp một IDE mạnh

mẽ với tính năng như quản lý dự án, gỡ lỗi, và biên dịch mã PlatformIO không chỉ hỗ trợ nhiều nền tảng mà còn tích hợp với VS Code để mang lại một trải

Trang 6

nghiệm phát triển liền mạch, tự động quản lý thư viện và các công cụ cần thiết cho mỗi dự án

 Arduino Library là bộ thư viện phần mềm hỗ trợ phát triển ứng dụng cho các bo mạch Arduino Trong VS Code, bạn có thể sử dụng các thư viện Arduino thông qua Arduino Extension, giúp dễ dàng viết mã, biên dịch và tải lên vi điều khiển Extension này cũng cung cấp khả năng truy cập và quản lý thư viện, giúp người dùng dễ dàng thêm các thư viện cần thiết vào dự án của mình

2.2 ESP32

2.2.1 Tổng quan

ESP32 là một vi điều khiển mạnh mẽ và tiết kiệm chi phí được phát triển bởi Espressif Systems, nổi bật với khả năng kết nối Wi-Fi và Bluetooth tích hợp ESP32 được sử dụng rộng rãi trong các ứng dụng Internet of Things (IoT) nhờ vào hiệu năng cao, khả năng kết nối linh hoạt và chi phí thấp

Đặc điểm nổi bật của ESP32:

 Kết nối Wi-Fi và Bluetooth:

ESP32 hỗ trợ Wi-Fi 802.11 b/g/n và Bluetooth 4.2 (Classic và BLE), giúp dễ dàng kết nối với các mạng không dây và các thiết bị Bluetooth

 Hiệu năng mạnh mẽ:

ESP32 được trang bị CPU dual-core với tốc độ lên đến 240 MHz, giúp xử lý nhanh và hiệu quả các tác vụ phức tạp

RAM lên đến 520 KB và Flash memory có thể mở rộng đến 16 MB, hỗ trợ lưu trữ và

xử lý dữ liệu lớn

 Tính linh hoạt:

ESP32 có nhiều GPIO (General Purpose Input/Output) và hỗ trợ các giao tiếp như SPI, I2C, UART, giúp giao tiếp với các cảm biến và thiết bị ngoại vi khác

 Tiết kiệm năng lượng:

ESP32 được thiết kế với khả năng tiết kiệm năng lượng, có chế độ deep sleep giúp giảm điện năng tiêu thụ, rất phù hợp cho các ứng dụng di động hoặc các thiết bị IoT cần hoạt động lâu dài

 Dễ dàng lập trình:

Trang 7

ESP32 hỗ trợ các nền tảng lập trình phổ biến như Arduino IDE, PlatformIO, và

Espressif's ESP-IDF, giúp người dùng dễ dàng lập trình và phát triển ứng dụng

 Ứng dụng phổ biến:

ESP32 được sử dụng rộng rãi trong các ứng dụng IoT như hệ thống nhà thông minh, giám sát môi trường, thiết bị đeo thông minh, hệ thống điều khiển từ xa, và nhiều dự

án sáng tạo khác

2.3 WEB WOKWI

2.3.1 Tổng quan

Wokwi là một nền tảng mô phỏng trực tuyến dành cho các dự án điện tử, đặc biệt là các dự án sử dụng Arduino, ESP32, và các vi điều khiển khác Wokwi cung cấp một

Trang 8

công cụ mô phỏng mạnh mẽ, giúp người dùng có thể thiết kế, lập trình và kiểm tra các mạch điện tử mà không cần phần cứng thực tế

 Môi trường mô phỏng mạch điện tử:

Wokwi cho phép người dùng mô phỏng các mạch điện tử và vi điều khiển như Arduino và ESP32 trực tuyến Bạn có thể tạo mạch, thêm các cảm biến, động cơ, LED,

và các linh kiện khác, sau đó lập trình và chạy thử mạch ngay trên nền tảng mà không cần có phần cứng thực tế

 Lập trình và phát triển dự án IoT:

Wokwi hỗ trợ lập trình trực tiếp qua các IDE phổ biến như Arduino IDE và PlatformIO, giúp bạn dễ dàng viết mã và kiểm tra các dự án IoT (Internet of Things)

 Giao diện dễ sử dụng:

Giao diện của Wokwi rất trực quan và dễ sử dụng, cho phép người dùng kéo và thả các linh kiện vào mạch, kết nối chúng một cách dễ dàng Sau đó, người dùng có thể viết

mã để lập trình và điều khiển các linh kiện trong mạch

 Mô phỏng mạch chính xác:

Wokwi hỗ trợ mô phỏng chính xác các vi điều khiển và mạch điện tử, cho phép bạn kiểm tra các dự án mà không cần phần cứng thực tế Điều này đặc biệt hữu ích khi bạn muốn thử nghiệm và phát triển các dự án trước khi thực hiện với phần cứng thực tế

CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG

3.1 Chạy thử code

Bảng 3.1 Code khai báo chân GPIO

Khai báo các chân GPIO:

Định nghĩa các chân GPIO cho LED :

Const int red_LED1=14;

Const int yellow_LED1=12;

Const int green_LED1=13;

Const int red_LED2=25;

Const int yellow_LED2=26;

Const int green_LED2=27;

Biến thời gian sáng cho từng đèn :

int time_red_1=500000;//ms

int time_yellow_1=100000;//ms

Trang 9

int time_green_1=400000;//ms

int time_red_2=500000;//ms

int time_yellow_2=100000;//ms

int time_green_2=400000;//ms

Bảng 3.2 Code cấu hình các chân GPIO

Cấu hình các chân GPIO:

Void setup(){

pinMode(red_LED1, OUTPUT);

pinMode(yellow_LED1, OUTPUT);

pinMode(green_LED1, OUTPUT);

pinMode(red_LED1, OUTPUT);

pinMode(yellow_LED1, OUTPUT);

pinMode(green_LED1, OUTPUT);

}

Bảng 3.3 Code lưu trữ thời gian sáng của đèn

Lưu trữ thời gian các đèn :

void controlTrafficLights() {

static unsigned long stepStartTime = 0;

unsigned long currentMillis = millis();

unsigned long stepTime = 0;

void loop() {

  controlTrafficLights();

}

Bảng 3.4 Code điều khiển sáng tắt các đèn

Điều khiển sáng tắt các đèn :

Trang 10

switch (step) {

    case 0: // Đèn đo' 1 sáng, đèn xanh 2 sáng

      digitalWrite(red_LED1, HIGH);

      digitalWrite(yellow_LED1, LOW);

      digitalWrite(green_LED1, LOW);

      digitalWrite(red_LED2, LOW);

      digitalWrite(yellow_LED2, LOW);

      digitalWrite(green_LED2, HIGH);

      stepTime = time_red_1;

      break;

    case 1: // Đèn đo' 1 sáng, đèn vàng 2 sáng

      digitalWrite(red_LED1, HIGH);

      digitalWrite(yellow_LED1, LOW);

      digitalWrite(green_LED1, LOW);

      digitalWrite(red_LED2, LOW);

      digitalWrite(yellow_LED2, HIGH);

      digitalWrite(green_LED2, LOW);

      stepTime = time_yellow_2;

      break;

    case 2: // Đèn xanh 1 sáng, đèn đo' 2 sáng

      digitalWrite(red_LED1, LOW);

      digitalWrite(yellow_LED1, LOW);

      digitalWrite(green_LED1, HIGH);

      digitalWrite(red_LED2, HIGH);

      digitalWrite(yellow_LED2, LOW);

      digitalWrite(green_LED2, LOW);

      stepTime = time_green_1;

      break;

    case 3: // Đèn vàng 1 sáng, đèn đo' 2 sáng

      digitalWrite(red_LED1, LOW);

      digitalWrite(yellow_LED1, HIGH);

      digitalWrite(green_LED1, LOW);

      digitalWrite(red_LED2, HIGH);

      digitalWrite(yellow_LED2, LOW);

      digitalWrite(green_LED2, LOW);

      stepTime = time_yellow_1;

      break;

  }

  if (currentMillis - stepStartTime >= stepTime) {

    stepStartTime = currentMillis;

    step = (step + 1) % 4; // Chuyể'n bước

  }

Trang 11

void setup() {

  // Khở'i tạo các chân GPIO làm OUTPUT

  pinMode(red_LED1, OUTPUT);

  pinMode(yellow_LED1, OUTPUT);

  pinMode(green_LED1, OUTPUT);

  pinMode(red_LED2, OUTPUT);

  pinMode(yellow_LED2, OUTPUT);

  pinMode(green_LED2, OUTPUT);

}

Hình 3.1 Chạy thử trên Visualcode

Trang 12

3.2 Mô phỏng trên WOKWI

Hình 3.2 Mô phỏng trên WOKWI

KẾT LUẬN

Đề tài "Điều khiển đèn giao thông qua ESP32" cho thấy hệ thống đã thực hiện thành công việc điều khiển tự động các đèn giao thông theo chu trình thời gian đã được định sẵn Việc sử dụng ESP32, một vi điều khiển mạnh mẽ với khả năng lập trình dễ dàng, giúp tối ưu hóa việc phát triển và vận hành hệ thống Hệ thống hiện tại điều khiển đèn giao thông dựa trên các bước thời gian cố định, giúp đảm bảo sự lưu thông và an toàn giao thông giữa các làn đường Mặc dù chưa tích hợp cảm biến để tự động điều chỉnh thời gian sáng đèn theo tình hình giao thông thực tế, nhưng hệ thống đã tạo nền tảng vững chắc cho các ứng dụng mở rộng như điều khiển qua internet hoặc giám sát từ xa Với khả năng mở rộng và cải tiến, hệ thống có thể được phát triển thêm để xây dựng một hệ thống giao thông thông minh hơn, giúp tối ưu hóa việc điều phối giao thông và nâng cao an toàn cho các phương tiện tham gia giao thông trong tương lai

Tuy kiến thức, năng lực còn hạn chế nhưng sau một thời gian học tập và nghiên cứu,

đề tài đã được em hoàn thành đúng thời hạn Em đã rút ra được nhiều kinh nghiệm và

Trang 13

nâng cao được khả năng thiết kế , lập trình liên kết với vi điều khiển ESP32 cũng như

kĩ năng làm báo cáo

Một lần nữa em xin cảm ơn cô Nguyễn Thị Kim Huệ đã tận tình hướng dẫn, giúp đỡ

em trong suốt thời gian thực hiện đề tài này

Trang 14

TÀI LIỆU THAM KHẢO

[1] Visual Studio là gì? Những tính năng cần thiết của Visual Studio, năm 2021, https://bizflycloud.vn/tin-tuc/visual-studio-la-gi-nhung-tinh-nang-can-thiet-cua-visual-studio-20210324175835691.htm

[2]https://www.coursera.org/learn/packt-embedded-systems-object-oriented-programming-in-c-and-c-gjdxd#modules

[3] https://vi.wikipedia.org/wiki/ESP32

[4] https://docs.wokwi.com/

Ngày đăng: 24/12/2024, 22:29

w