TỔNG QUAN
ĐẶT VẤN ĐỀ
Xã hội phát triển và đời sống nâng cao đồng nghĩa với sự bùng nổ của IoT (Internet of Things), làm cho việc áp dụng công nghệ khoa học kỹ thuật trong công việc trở nên cần thiết hơn bao giờ hết Đặc biệt, kỹ thuật điều khiển tự động đóng vai trò quan trọng trong nhiều lĩnh vực như khoa học kỹ thuật, quản lý, công nghiệp, nông nghiệp và quản lý thông tin.
Trong thời đại phát triển hiện nay, quản lý và sử dụng thiết bị thông minh là điều cần thiết Các thiết bị này không chỉ hoạt động mà còn giám sát và điều khiển từ xa với độ chính xác cao, giúp người dùng dễ dàng khởi động hoặc tắt thiết bị mà không cần di chuyển Thay vì phải đến gần công tắc, người dùng có thể điều khiển các thiết bị trong nhà thông qua internet (4G/5G/WiFi) Việc này không chỉ tiết kiệm thời gian và chi phí mà còn mang lại cuộc sống tiện nghi, thông minh hơn, đồng thời cho phép quản lý hoạt động của thiết bị theo thời gian thực.
Từ những lợi ích thấy được như đã kể trên thì nhóm quyết định chọn đề tài
"Thiết kế và thi công hệ thống báo chuông" nhằm mục đích giải thích cách thức hoạt động và nguyên lý của hệ thống, đồng thời giới thiệu sản phẩm của nhóm để ứng dụng trong môi trường giáo dục và cuộc sống hàng ngày, góp phần vào sự phát triển công nghệ đang ngày càng được ứng dụng rộng rãi.
MỤC TIÊU
Điều khiển thiết bị điện từ xa qua mạng không dây giúp thực hiện các cài đặt theo thời gian như giờ thi và ngày lễ Sử dụng điện thoại thông minh chạy hệ điều hành Android có kết nối Internet mang lại sự tiện lợi trong việc tiếp cận hệ thống Người dùng có thể tác động trực tiếp thông qua màn hình và nút nhấn, nâng cao trải nghiệm sử dụng.
NỘI DUNG NGHIÊN CỨU
- NỘI DUNG 1: Tìm hiểu điều khiển và giao tiếp module ESP8266, giao tiếp màn hình HMI
- NỘI DUNG 2: Tìm hiểu thiết kế giao diện Android
- NỘI DUNG 3: Tìm hiểu về Firebase để cập nhật dữ liệu điều khiển giữa
- NỘI DUNG 4: Thi công mô hình
- NỘI DUNG 5: Kiểm tra ổn định và hoàn thiện mô hình
- NỘI DUNG 6: Đánh giá kết quả thực hiện.
GIỚI HẠN
Đối tượng sử dụng: bất kì ai có điện thoại sử dụng có hệ điều hành Android
Sử dụng chuông điện 220VAC làm thiết bị cảnh báo
Lập trình ESP8266, cấu hình giao diện màn hình HMI.
BỐ CỤC
Giới thiệu chọn đề tài, nội dung nghiên cứu, mục đích, giới hạn mục tiêu đồ án
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU
Theo như đề tài ta cần tìm hiểu các kiến thức như sau:
-Tổng quan về hệ điều hành Android
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID
Android là hệ điều hành mã nguồn mở do Google phát triển, không chỉ dành cho điện thoại di động mà còn được sử dụng trên nhiều thiết bị như đầu phát HD, HD Player và TV.
Linux Trước đây, Android được phát triển bởi công ty liên hợp Android ( sau đó được Google mua lại vào năm 2005)
Các nhà phát triển ứng dụng Android sử dụng ngôn ngữ Java để xây dựng phần mềm Android được ra mắt vào ngày 5 tháng 11 năm 2007, cùng với việc thành lập liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty trong lĩnh vực phần cứng, phần mềm và viễn thông, với mục tiêu tạo ra một chuẩn mở cho điện thoại di động trong tương lai.
Android được phát triển chủ yếu bằng ngôn ngữ Java và Kotlin, với sự hỗ trợ từ bộ công cụ Android SDK, cung cấp các công cụ và thư viện API cần thiết cho việc phát triển ứng dụng trên nền tảng Android.
Hình 2 1 Các phiên bản của hệ điều hành Android
2.2.2 Ưu và nhược điểm của Android Ưu điểm
- Hệ điều hành có khả năng tùy biến cao
- Kho ứng dụng phong phú
- Vì mã nguồn mở nên khả năng tùy biến cao nhưng rất dễ bị nhiễm mã độc
- Khó kiểm soát chất lượng ứng dụng
- Các phiên bản không được hỗ trợ lâu dài
Wi-Fi là hệ thống mạng không dây sử dụng sóng vô tuyến, giống như điện thoại di động, truyền hình và radio
Hình 2 2 Các thiết bị kết nối WiFI
Các chuẩn kết nối WiFI:
- Wifi hay mạng 802.11 có 6 chuẩn thông dụng nhất đó là 802.11a, 802.11b,
Chuẩn 802.11b là phiên bản đầu tiên của công nghệ Wi-Fi, hoạt động ở tần số 2.4 GHz với tốc độ truyền dữ liệu tối đa 11 Mbit/s Mặc dù có tốc độ chậm và ít phổ biến hơn so với các chuẩn Wi-Fi hiện đại, 802.11b vẫn đóng vai trò quan trọng trong sự phát triển của mạng không dây.
Chuẩn 802.11g hoạt động trên tần số 2.4 GHz và cung cấp tốc độ xử lý lên đến 54 Mbit/s, nhanh hơn so với chuẩn 802.11b Sự gia tăng tốc độ này là nhờ vào việc sử dụng công nghệ mã hóa OFDM (orthogonal frequency-division multiplexing), mang lại hiệu quả cao hơn trong việc truyền tải dữ liệu.
- Chuẩn 802.11a: Phát ở tần số 5 GHz và có thể đạt đến 54 Mbit/s Nó cũng sử dụng mã OFDM
- Chuẩn 802.11n: Phát ở tần số 2.4 GHz, nhưng nhanh hơn so với chuẩn
802.11a, tốc độ xử lý đạt 300 Mbit/s
- Chuẩn 802.11ac: phát ở tần số 5 GHz
Chuẩn 802.11ad hoạt động ở tần số 60 GHz, cho phép WiFi truyền tải dữ liệu trên cả ba tần số và chuyển đổi linh hoạt giữa các tần số khác nhau một cách nhanh chóng.
Việc nhảy qua lại giữa các tần số giúp giảm thiểu sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc.
TỔNG QUAN VỀ FIREBASE
Firebase được thành lập vào tháng 4 năm 2012 bởi Tamplin và Lee, dựa trên dịch vụ API chat trực tuyến từ Envolve Hai nhà sáng lập đã tách riêng hệ thống chat và kiến trúc thời gian thực để tạo ra một cơ sở dữ liệu Firebase độc lập Vào ngày 21 tháng 10 năm 2014, Google đã chính thức mua lại Firebase.
Firebase là dịch vụ API do Google cung cấp, cho phép lưu trữ và đồng bộ dữ liệu giữa nhiều thiết bị Nền tảng đám mây của Firebase giúp lập trình viên phát triển ứng dụng nhanh chóng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Google FireBase là dịch vụ cơ sở dữ liệu thời gian thực trên nền tảng đám mây do Google cung cấp, giúp lập trình viên phát triển ứng dụng nhanh chóng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Hình 2 3 Các dịch vụ Firebase
2.3.2 Các chức năng chính của Firebase
Dữ liệu được đồng bộ hóa theo thời gian thực trên tất cả các ứng dụng khách và vẫn khả dụng ngay cả khi ngoại tuyến Firebase cung cấp cơ sở dữ liệu đám mây, nơi dữ liệu được lưu trữ dưới dạng JSON và đồng bộ hóa liên tục.
Firebase cung cấp cơ sở dữ liệu thời gian thực, cho phép đồng bộ hóa dữ liệu một cách nhanh chóng Khi có sự thay đổi trong dữ liệu, tất cả các thiết bị kết nối sẽ nhận được bản cập nhật trong vòng mili giây, thay vì phải gửi yêu cầu HTTP như thông thường.
Ứng dụng Firebase hỗ trợ hoạt động ngoại tuyến nhờ vào SDK cơ sở dữ liệu thời gian thực, cho phép lưu trữ dữ liệu vào đĩa Khi kết nối được khôi phục, thiết bị sẽ nhận được tất cả các thay đổi đã bị bỏ lỡ trong quá trình đồng bộ hóa.
Cơ sở dữ liệu thời gian thực Firebase cho phép truy cập trực tiếp từ thiết bị di động hoặc trình duyệt web mà không cần máy chủ ứng dụng Bảo mật và xác thực dữ liệu được đảm bảo thông qua Quy tắc bảo mật của Firebase.
Quy mô trên nhiều cơ sở dữ liệu: Với cơ sở dữ liệu thời gian thực
Trên kế hoạch định giá Blaze của Firebase, bạn có thể mở rộng khả năng lưu trữ dữ liệu cho ứng dụng bằng cách phân chia dữ liệu trên nhiều phiên bản cơ sở dữ liệu trong cùng một dự án Firebase.
Hợp lý hóa xác thực người dùng với Firebase trong dự án của bạn, đồng thời kiểm soát quyền truy cập vào dữ liệu qua các quy tắc cơ sở dữ liệu Firebase cung cấp cơ sở dữ liệu thời gian thực, cho phép xây dựng các ứng dụng phong phú và hợp tác với khả năng truy cập an toàn từ mã phía máy khách Dữ liệu được duy trì cục bộ, và ngay cả khi ngoại tuyến, các sự kiện thời gian thực vẫn tiếp tục hoạt động, mang lại trải nghiệm người dùng mượt mà Khi thiết bị kết nối trở lại, cơ sở dữ liệu tự động đồng bộ hóa các thay đổi cục bộ với các cập nhật từ xa.
Cơ sở dữ liệu thời gian thực cung cấp một ngôn ngữ quy tắc linh hoạt dựa trên biểu thức, được biết đến với tên gọi “Quy tắc bảo mật cơ sở dữ liệu thời gian thực”.
Firebase giúp bạn xác định cấu trúc dữ liệu và thời điểm dữ liệu có thể được đọc hoặc ghi Khi tích hợp với Xác thực, nó cung cấp một cách hiệu quả để quản lý quyền truy cập và bảo mật dữ liệu.
Cơ sở dữ liệu thời gian thực là loại cơ sở dữ liệu NoSQL, mang lại những tối ưu hóa và chức năng khác biệt so với cơ sở dữ liệu quan hệ.
API cơ sở dữ liệu thời gian thực được thiết kế để tối ưu hóa tốc độ thực hiện các hoạt động, giúp bạn tạo ra trải nghiệm thời gian thực xuất sắc Với khả năng phục vụ hàng triệu người dùng mà không làm giảm chất lượng phản hồi, API này là giải pháp lý tưởng cho các ứng dụng cần tính năng tương tác nhanh chóng và hiệu quả.
Tạo tài liệu tham khảo cơ sở dữ liệu thời gian thực: Tham khảo dữ liệu JSON của bạn, chẳng hạn như "người dùng / người dùng:
Để đặt dữ liệu hoặc đăng ký thay đổi, hãy sử dụng liên kết "1234/phone_number" Khi có sự thay đổi, hãy thiết lập các dữ liệu (Data) và sự kiện (Listen) để ghi nhận thông tin hoặc đăng ký thay đổi.
Bật chế độ ngoại tuyến: Cho phép dữ liệu được ghi vào đĩa cục bộ của thiết bị để có thể có sẵn khi ngoại tuyến
Bảo vệ dữ liệu của người dùng: Sử dụng quy tắc bảo mật cơ sở dữ liệu thời gian thực Firebase để bảo mật dữ liệu của bạn
Ta có thể sử dụng Google FireBase vào việc:
- Lưu trữ dữ liệu thời gian thực:
- Đăng ký 1 tài khoản trên firebase, tạo một ứng dụng và bạn đã có 1 cơ sở dữ liệu thời gian thực
Dữ liệu trong cơ sở dữ liệu Firebase được lưu trữ dưới dạng JSON và đồng bộ theo thời gian thực đến tất cả các kết nối client Khi phát triển ứng dụng đa nền tảng như Android, iOS và JavaScript SDKs, tất cả các client sẽ chia sẻ một cơ sở dữ liệu Firebase và tự động nhận cập nhật với dữ liệu mới nhất.
- Với các ứng dụng đa nền tảng tất cả các client sẽ đề sử dụng chung 1 DB và luôn được tự động cập nhật dữ liệu mới nhất
- Tất cả dữ liệu được truyền qua một kết nối an toàn SSL với một chứng nhận 2048-bit
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Hệ thống điều khiển bao gồm hai thiết bị ngõ ra: một thiết bị được điều khiển thông qua ứng dụng thiết kế bằng ngôn ngữ lập trình Android, trong khi thiết bị còn lại được điều khiển bằng màn hình và nút nhấn.
- Hiển thị rõ thời gian, ngày, tháng , năm
- Phục vụ trong hệ thống nhà trường, công ty,…
3.1.2 Sơ đồ khối tổng quát và sơ đồ khối của hệ thống chuông
Hình 3 1 Sơ đồ tổng quát của hệ thống
Điện thoại và các thiết bị kết nối với nhau để gửi thông tin điều khiển chuông qua mạng không dây lên cơ sở dữ liệu Firebase Ứng dụng gửi giá trị lên Firebase, sau đó Firebase truyền dữ liệu cho ESP8266 qua mạng Wi-Fi, từ đó điều khiển chuông thông qua module relay.
Thiết kế hai điều khiển, một là điều khiển trên ứng dụng chạy trên hệ điều hành
Android, 2 là điều khiển thông qua màn hình (cảm ứng), phần cứng (nút nhấn), …
Ứng dụng sẽ hiển thị ngày giờ báo chuông, thời gian ngày lễ và thời gian thi, với dữ liệu được cập nhật trực tiếp từ Firebase Người dùng có thể điều khiển thiết bị qua WiFi thông qua ứng dụng trên điện thoại và kết nối với cơ sở dữ liệu.
KHỐI XỬ LÝ KHỐI NGUỒN
KHỐI MẠCH NẠP KHỐI ĐIỀU KHIỂN
Hình 3 2 Sơ đồ khối của hệ thống chuông
- Khối nguồn: có chức năng cấp nguồn cho toàn bộ mạch để hoạt động(3.3v,
- Khối thiết bị: có nhiệm vụ đảm bảo hoạt động ổn định của relay cho việc điều khiển qua các chuông…
- Khối mạch nạp: giúp giao tiếp giữa máy tính và vi điều khiển
- Khối xử lý: có chứa năng so sánh và gởi đi, nhận về giá trị trạng thái của thiết bị cài đặt giao tiếp mạng
- Khối thời gian thực giúp lưu trữ thời gian, ngày, tháng , năm khi không có nguồn
- Khối hiển thị giúp quan sát theo dõi và điều khiển trực tiếp trên phần cứng
- Điện thoại: điều khiển thiết bị từ xa bằng wifi, hiển thị các chế độ từ khối xử lí
- Nút nhấn: điều khiển thiết bị ở cự ly gần
3.1.3 Thiết kế trên điện thoại
Thời gian báo tiếp theo
Hình 3 3 Giao diện màn hình chính trên điện thoại
Giao diện hiển thị thời gian: Hiển thị thứ, ngày, tháng, năm, giờ, phút, giây hiện tại
Thời gian báo tiếp theo: Hiển thị thời gian báo chuông tiếp theo theo lịch cài sẵn trên ứng dụng
Bật: Cho phép chuông bật trong ngày bình thường và ngày thi học kỳ
Tắt: Tắt chuông toàn hệ thống
1 hồi, 2 hồi: Nút nhấn 1 hồi chuông (reo 5s) và 2 hồi chuông (reo 10s) dùng trong chế độ bấm chuông bằng tay
Thi học kỳ Điều chỉnh
Ngày nghỉ lễ Thi học kỳ
Hình 3 4 Giao diện cài đặt chế độ thi và ngày lễ
Giao diện ngày nghỉ lễ: Khi thời gian rơi vào ngày nghỉ lễ thì tắt chuông
Giao diện thi học kỳ: Khi thời gian rơi vào ngày thi học kỳ thì chuông sẽ báo theo lịch cài sẵn trên ứng dụng
Lịch thi cố định được cài sẵn trong ứng dụng, nhưng người dùng có thể chuyển sang chế độ điều chỉnh để thay đổi thời gian thi cho phù hợp với nhu cầu của mình.
Thiết kế mạch điều khiển chuông
Khối xử lí: có chức năng nhận các tín hiệu từ các chân I/O và tiến hành tính toán và xử lí cho hệ thống
- Có nhiều cách để điều khiển các thiết bị như điều khiển thông qua Bluetooth,
SIM , RF,wifi … Mỗi cách đều có ưu nhược điểm khác nhau như:
- Bluetooth tiêu thụ năng lượng ít tuy nhiên khoảng cách kết nối ngắn và độ bảo mật không cao
- SIM có ưu điểm điều khiển được với khoảng cách xa nhưng khuyết điểm là nơi điều khiển phải có sóng và khá tốn kém
- RF khá nhỏ gọn và tiện lợi, tiêu thụ năng lượng ít, nhưng giá thành còn khá cao
Nhóm đã quyết định sử dụng phương pháp điều khiển qua wifi với chip ESP8266-12F, nhờ vào khả năng điều khiển nhiều thiết bị cùng lúc, tốc độ xử lý nhanh, kích thước nhỏ gọn và giá thành hợp lý.
- Flash : tối đa 16MB (thường là 512K)
- Vi xử lý : Tensilica L106 32bit
- Số kế nối TCP max :5
Chức năng từng chân của ESP8266EX:
Hình 3 5 Vi điều khiển ESP8266
Bảng 3 1 Chức năng của từng chân ESP8266
- Phương thức để nạp cho ESP-12F qua 2 phương thức UART
Bảng 3 2 Cách thức nạp code cho ESP8266
- Sử dụng USB PL2303 để giao tiếp giữa phần mềm và phần cứng.
- Mạch chuyển đổi USB thành TTL UART bằng IC PL2303HX
- Điện áp 5v DC cấp trực tiếp từ cổng USB
- Ngõ ra mức TTL với 2 chân TX, RX
- Với 3 LED hiển thị trạng thái: LED nguồn, LED TX, LED RX
- Kích thước 15x31mm, thạch anh 12M
Để nạp chương trình, cần kéo chân GPIO0 xuống mức 0 Khi nhấn nạp, IC sẽ phát tín hiệu kích hoạt cho hai transistor, dẫn đến việc tác động lên chân Reset của MCU và chân GPIO0.
GPIO0 đóng vài trò như Start Bit để báo hiệu quá trình nạp sắp diễn ra
Khối mạch nạp sử dụng giao thức UART bất đồng bộ để truyền dẫn dữ liệu nối tiếp giữa máy tính và mạch điều khiển, cho phép giao tiếp và truyền nhận dữ liệu hiệu quả, đồng thời hỗ trợ nạp chương trình cho vi điều khiển.
The UART (Universal Asynchronous Receiver Transmitter) standard is an asynchronous serial communication interface commonly used for data transmission This peripheral is essential for interfacing with various modules, including Bluetooth and Wi-Fi, enabling effective communication in numerous applications.
Hình 3 8 Cách thức truyền dữ liệu qua usb pl2303
- Các thông số cài đặt của UART để 2 thiết bị có thể giao tiếp và hiểu được với nhau
- Baudrate (khoảng thời gian dành cho 1 bit được truyền): Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở các bên truyền và nhận phải thống
Hình 3 7 Sơ đồ chân của chíp PL2303 nhất Baudrate Các thông số tốc độ Baudrate thường hay sử dụng dể giao tiếp với máy tính là 9600,115200,…
Khung truyền đóng vai trò quan trọng trong việc xác định số bit được truyền trong mỗi lần truyền dữ liệu giữa hai thiết bị Để đảm bảo tính tương thích, tốc độ baud của cả hai thiết bị phải giống nhau và khung truyền cũng cần được cấu hình tương đồng Khung truyền bao gồm các thành phần như bit bắt đầu (Start bit), bit kết thúc (Stop bit) và bit kiểm tra tính chẵn lẻ (Parity), giúp kiểm soát và xác thực thông tin truyền đi.
Bit đầu tiên trong một frame, được gọi là bit start, có nhiệm vụ thông báo cho bên nhận rằng sẽ có một gói dữ liệu được truyền đến Đường truyền UART duy trì trạng thái cao mức “1” cho đến khi chip quyết định gửi dữ liệu, lúc này nó sẽ gửi bit start bằng cách kéo xuống mức “0”.
Dữ liệu (data) là thông tin được truyền và nhận trong quá trình giao tiếp Trong STM32, dữ liệu được quy định với khung truyền 8bit hoặc 9bit Khi truyền qua UART, bit có trọng số thấp nhất (LSB - least significant bit) sẽ được truyền trước, tiếp theo là các bit khác, và cuối cùng là bit có trọng số cao nhất (MSB - most significant bit).
Bit Parity là một phương pháp kiểm tra tính chính xác của dữ liệu truyền Có hai loại Parity: chẵn (even parity) và lẽ (odd parity) Parity chẵn yêu cầu tổng số bit 1 trong dữ liệu cùng với bit Parity phải là số chẵn, trong khi Parity lẽ yêu cầu tổng này phải là số lẽ Bit Parity không bắt buộc, do đó có thể được loại bỏ khỏi khung truyền.
Stop bits là thành phần quan trọng trong giao tiếp dữ liệu, giúp bộ truyền/nhận nhận biết khi gói dữ liệu đã được gửi hoàn tất Chúng là bit bắt buộc trong khung truyền và có thể có độ dài 1 bit, 1.5 bit, 2 bit hoặc 0.5 bit, tùy thuộc vào ứng dụng UART mà người sử dụng áp dụng.
- CH-PD, IO02 lên mức cao sử dụng nguồn 3v3 và gắn điện trở R1 và R2 để hạn dòng Chọn điện trở R1 và R2 và R4,R3 K
- Tụ ổn định nguồn từ C1, C2, C3, C4 ta chọn giá trị 0.1uF
- Tụ lọc nguồn C12 có giá trị 10uF
Hình 3 9 Sơ đồ kết nối esp-12f
- Dựa vào bảng 2-1 và 2-2 setup các chân:
- Chân IO15 đưa xuống mức thấp
- Chân IO0 ta nối xuống mức 0 lúc nạp chương trình và chuyển về mức 1 khi chạy chương trình
- Các tụ C1, C2, C3, C4,C7,C8 là các tụ lọc nguồn tránh trường hợp sụp áp nguồn vào
Khối công suất bao gồm các điện trở hạn dòng và opto cách ly quang nhằm bảo vệ khối xử lý khỏi sự cố với khối công suất Transistor được sử dụng để điều khiển relay bằng cách đóng cắt dòng điện Để bảo vệ transistor, một diode được mắc song song với cuộn dây của relay Relay có chức năng đóng ngắt dòng điện, và một domino 2 pin được dùng để kết nối với thiết bị bên ngoài.
Khi điều khiển thiết bị sử dụng dòng lớn, chúng ta có hai lựa chọn là Triac và Relay Tuy nhiên, khi thiết kế với Triac, một vấn đề lớn phát sinh nếu tải có điện cảm cao, như biến áp, dẫn đến quá trình mở Triac không chính xác Do đó, giải pháp tối ưu là sử dụng relay 5VDC/10A để đảm bảo hiệu suất và độ tin cậy trong quá trình điều khiển.
- Nhiệt độ hoạt động: - 45 °C to 75 °C
- Dòng kích cuộn dây : 90 mA
- Công suất cuộn dây (coil) DC: 450 Mw
- Điện áp điều khiển cuộn dây (coil): 5 V
- Có nhiều loại opto như opto P521, HC11C2 là opto SCR… nhưng chọn opto
PC817 là loại thông dụng phổ biến nhất trên thị trường hiện nay
Các thông số cơ bản:
- Điện áp chuyển tiếp: khi IF mA thì VF=1.2V
- Dòng IRuA khi VR=4V (áp ngược)
- Công suất tiêu hao trên transistor 150mW
Bảng 3 3 Thông số cơ bản của PC817
-Transistor: có nhiều loại transistor và được phân loại là NPN và PNP ví dụ
Để điều khiển relay với dòng điều khiển 90mA, cần chọn transistor có dòng Ic lớn hơn 90mA Loại transistor NPN là sự lựa chọn phù hợp, và transistor C1815 với dòng Ic đáp ứng yêu cầu này là một lựa chọn lý tưởng để điều khiển mức ra của vi xử lý.
I cmax = 150mA dễ mua và giá thành vừa phải
-Các thông số cơ bản như: Điện áp VCEOminPV
Dòng qua cực B,C: IBmaxPmA, ICmax0mA
Hệ số khuếch đại : Hfe0 khi Vce=6V, Ic0mA
Công suất tiêu tán cực C: PC@0W…
Hình 3 13 Thông số cơ bản của C1815
-Diode: có rất nhiều loại diode như diode chỉnh lưu, diode schottky, diode ổn áp,
… nhưng ở đây nhóm sử dụng diode chỉnh lưu và cụ thể là loại 1N4007 thông dụng và phổ biến trên thị trường
Các thông số cơ bản:
- Điện áp ngược tối đa: Vrmsp0V
- Công suất trên cực C: 400mW
Hình 3 14 Thông số cơ bản của 1N4007
Ta hạn dòng qua led của opto bằng cách mắc thêm trở hạn dòng Với
V led =1.2V Với dòng qua led (I led ) từ 10mA-20mA
10𝑚𝑎 = 210 vì dòng qua led (10ma-20ma) ta có thể chọn R5"0Ω
Ta mắc transistor (C1815) để làm công tắc điều khiển relay: dẫn ở mức 1 và ngưng dẫn ở mức 0
Vì để kích dẫn cho relay thì phải có dòng I c ≥ 90mA
Ta chọn dòng I c = I cmax = 150mA ở chế độ ON:
5𝑚𝐴 =0.86K Ta chọn R=1K Điện trở R7 là điện trở kéo xuống để đảm bảo khi ở mức 0 thì không có dòng vào transistor nên ta chọn R7K
Hình 3 15 Sơ đồ khối công suất
- Gồm 2 ngõ ra để điều khiển 2 thiết bị
- Ngõ ra của relay nối với domino để đóng cắt thiết bị sử dụng nguồn
Khi kích hoạt mức 1 của ESP-12F, điện áp và dòng ngõ ra sẽ làm sáng đèn LED trong opto Opto dẫn sẽ kích hoạt transistor, cho phép dòng điện đi qua relay để hút cuộn dây Khi relay đóng, nguồn điện sẽ được cung cấp cho thiết bị ngoại vi, giúp thiết bị hoạt động.
- Khi ta kích mức 0 của ESP-12F không có dòng và áp vào led opto không dẫn
Thiết bị ngoại vi không có nguồn vào.
- Khối nút nhấn gồm 2 nút nhấn:
- Nút reset mạch điều khiển: có chức năng reset lại mạch khi mạch bị treo hay sự cố
- Nút chọn bật tắt chuông (5s hoặc 10s)
Trên thị trường hiện nay có nhiều loại nút nhấn, trong đó nút nhấn 4 pin loại dán được ưa chuộng nhờ độ bền cao, kích thước lớn và thiết kế đẹp mắt, dễ sử dụng.
- Ta mắc trở R15 K để hạn dòng cho nút nhấn
- 2 tụ C173p giúp chống dội tốt hơn
- Điện trở để hạn dòng vào ESP-12F
- Tụ chống nhiễu khi nhấn phím
Hình 3 17 Sơ đồ nút nhấn 4x4
Khối nguồn: cung cấp nguồn cho các khối để các khối hoạt động
- Từ những khối đã thiết kế và sử dụng nguồn để điều khiển khối xử lý và khối ngõ ra và khối tải, khối ngoại vi và nút nhấn
- Khối xử lý sử dụng nguồn 3.3 VDC
- Khối ngõ ra sử dụng nguồn 5VDC
- Khối tải sử dụng nguồn 220VAC
- Khối ngoại vi sử dụng nguồn 5VDC và 3.3VDC
- Khối nút nhấn sừ dụng nguồn 3.3VDC
Ta sử dụng nguồn có sẵn bán trên thị trường:
Hình 3 18 Nguồn xung hạ áp 220vAC-5vDC
- Dòng điện ngõ ra: 700mA
Mạch hạ áp từ 5VDC-3.3VDC:
IC AMS1117 là một lựa chọn lý tưởng để chuyển đổi điện áp từ 5VDC xuống 3.3VDC nhờ vào kích thước nhỏ gọn, dễ sử dụng và khả năng cung cấp dòng điện ổn định Mặc dù có nhiều loại IC chuyên dụng khác như LM 2596, AMS1117 vẫn nổi bật với khả năng chịu nhiệt tốt và giá thành hợp lý, phù hợp cho nhiều ứng dụng.
Thông số: Điện áp đầu vào: 4.75V < VIN < 12V Điện áp đầu ra: 3.235V to 3.365V
Khối hiển thị
- Có rất nhiều thiết bị phục vụ cho quá trình hiển thị, để theo dõi giờ giấc, điều khiển thiết bị
Hình 3 20 Sơ đồ cung cấp nguồn
Màn hình HMI Nextion là lựa chọn tối ưu cho việc tùy chỉnh hiển thị màu sắc phong phú và điều chỉnh thời gian bằng cảm ứng, vượt trội hơn so với các loại màn hình phổ biến như LCD và OLED.
Màn hình HMI UART cảm ứng điện trở Nextion 3.2 inch được thiết kế nhằm hỗ trợ người dùng trong việc tạo ra các giao diện điều khiển và hiển thị một cách dễ dàng và hiệu quả.
(GUI) trên màn cảm ứng 1 cách dễ dàng và trực quan nhất Các điểm mạnh về tính năng
- Giao tiếp UART, với chỉ 2 dây tín hiệu (TX, RX) rất dễ dàng giao tiếp và điều khiển
- Phần phểm thiết kế giao diện trên máy tính Nextion Editor trực quan và dễ sử dụng, giao tiếp với màn hình qua giao tiếp UART
Bộ nhớ lưu trữ và xử lý hình ảnh được tích hợp với khe thẻ nhớ giúp giảm tải các tác vụ xử lý hình cho mạch điều khiển trung tâm, chỉ truyền dữ liệu thao tác cảm ứng về trung tâm.
- Thiết kế cảm ứng điện trở giúp dễ dàng thao tác khi mang găng tay trong môi trường lao động
- Mạch có chất lượng gia công tốt, độ bền cao, Giao tiếp qua UART (USART) như TFT, có thêm cảm ứng điện trở
- Lưu ý: đây là phiên bản Trung Quốc tương đương màn hình HMI (Human
Machine Interface) UART Nextion Sử dụng phần mềm tiếng Trung nhưng phần cứng và cách sử dụng gần như tương đương bản tiếng Anh Có thể tải bản tiếng
Anh của Nextion để đối chiếu và sử dụng
Hình 3 24 Sơ đồ chân của ICDS3231
DS3231 là một IC thời gian thực giá rẻ và chính xác, được trang bị thạch anh tích hợp có khả năng điều chỉnh nhiệt độ IC này có đầu vào cho pin riêng, tách biệt với nguồn chính, giúp duy trì thời gian chính xác Việc tích hợp thạch anh không chỉ nâng cao độ chính xác trong thời gian dài mà còn giảm thiểu số lượng linh kiện cần thiết khi thiết kế mạch.
Thời gian trong IC được giữ ở dạng: giờ, phút, giây, ngày, thứ, tháng, năm
Các tháng có ít hơn 31 ngày và các năm nhuận sẽ được điều chỉnh tự động để đảm bảo chính xác số ngày Thiết bị hỗ trợ chế độ hoạt động 24h hoặc 12h AmPm Ngoài ra, IC còn có chức năng báo động với khả năng cài đặt 2 thời gian báo và lịch, đồng thời cung cấp tín hiệu ra dạng xung vuông Giao tiếp với IC được thực hiện qua I2C bus.
Hình 3 21 Giao diện thiết màn hình cảm ứng
Hình 3 22 Màn hình HMI-Nextion
Chip tích hợp mạch điện áp chuẩn để theo dõi trạng thái nguồn VCC, phát hiện lỗi và tự động chuyển nguồn khi cần thiết Khi nguồn điện phục hồi, chip cung cấp tín hiệu Reset cho mạch ngoài và MCU Ngoài ra, chip còn trang bị cảm biến nhiệt độ với độ chính xác ± 3°C.
Bảng 3 4 Chức năng của các chân IC DS3231
2 𝑉 𝐶𝐶 Chân cung cấp nguồn DC, điện áp cung cấp là 5V
3 INT ̅̅̅̅̅ /SQW Ngõ ra phụ tạo xung dao động (xung vuông)
4 𝑅𝑆𝑇 ̅̅̅̅̅ Hoạt động ở mức thấp, có chức năng reset lại dữ liệu
Nguồn 14V BAT chân cung cấp điện cho chip, với mức điện áp từ 2V đến 3.5V, chúng ta sử dụng pin 3V Nguồn này giúp chip hoạt động liên tục ngay cả khi không có nguồn Vcc, đảm bảo rằng DS3231 vẫn giữ được thời gian chính xác.
15 SDA Chân nhập xuất dữ liệu Giao tiếp theo chuẩn I2C
16 SCL Chân xung clock Giao tiếp theo chuẩn I2C
Hình 3 25 Sơ đồ khối DS3231
Các lệnh giao tiếp: Đây là các Timekeeper registers của DS3231, chúng ta sẽ dựa vào bảng này để read/write IC DS3231 qua I2C
Bảng 3 5 Chức năng các lệnh giao tiếp
To initialize the "Wire.h" library and join the I2C bus, use the command Wire.begin(address), where the address is the optional 7-bit address of the "Slave" device If no address is provided, the device will operate as the "Master."
Wire.beginTransmission(address); Bắt đầu truyền dữ liệu đến thiết bị “Slave” với address đã có
Wire.endTransmission(); Kết thúc truyền dữ liệu đến thiết bị “Slave” đã được bắt đầu bởi Wire.beginTransmission (address)
Wire.write(value); Ghi dữ liệu lên thiết bị "Slave", được gọi giữa beginTransmission() và endTransmission()
Wire.read(); Đọc dữ liệu được truyền từ thiết bị "Slave" đến mạch sử lý trung tâm, được gọi sau requestFrom()
The function Wire.requestFrom(address, quantity) is utilized by the "Master" device to request data from the "Slave" device The 'address' parameter specifies the address of the "Slave" device, while the 'quantity' parameter indicates the number of bytes being requested.
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Sau khi hoàn thiện thiết kế các linh kiện cần thiết, bước tiếp theo là tiến hành thiết kế phần mềm, phần cứng và giao diện người dùng một cách trực quan.
Khi khởi động ứng dụng trên điện thoại và cấp điện, tất cả trạng thái hiện tại sẽ được cập nhật lên cơ sở dữ liệu Firebase Thiết bị sẽ được điều chỉnh theo dữ liệu hiện tại trong cơ sở dữ liệu Vi điều khiển ESP8266-V12 được sử dụng để đọc dữ liệu từ Firebase và điều khiển các thiết bị thông qua mạch relay.
THIẾT KẾ ỨNG DỤNG
4.2.1 Giới thiệu phần mềm Andrdoi Studio
Android Studio là một môi trường lập trình lý tưởng cho các lập trình viên phát triển ứng dụng trên nền tảng Android Ứng dụng chủ yếu được viết bằng ngôn ngữ Java và Kotlin, giúp tối ưu hóa quy trình phát triển.
The Android SDK (Software Development Kit) and Gradle tooling are essential for converting files into Android applications They enable the compilation, packaging, deployment, and launching of the application once the build process is complete.
Hầu hết các file cấu hình trong Android đều dưới dạng XML Android
Studio cung cấp các trình sửa file cho từng file riêngbiệt Cấu hình lưu ý trước khi cài đặt:
-Microsoft®Windows®8/7/Vista/2003(32or64-bit)
-Tối thiểu 2GB RAM, đề nghị:4GB RAM.(Tốt nhất là 8GB)
-Ổ cứng trống ít nhất 400MB, nên trống từ 2GB trở lên
-Độ phân giải tối thiểu 1280x800
- Lựa chọn thêm cho accelerated emulator: Intel® processor with support for
Hình 4 1 Phần mềm Android Studio functionality
Cách cài đặt: Truy cập vào websites: https://developer.android.com/studio/ để download phần mềm
Hình 4 2 Tải phần mềm Android Studio
Sau khi tải tệp tin cài đặt về, mở file exe để tiến hành cài đặt Nhấn Next →
Next → Next → Install để tiến hành cài đặt, quá trình cài đặt diễn ra từ 25 đến
Tiếp theo nhấn Next và cuối cùng nhấn Finish Tới đây quá trình cài đặt phần mềm đã xong
Hình 4 3 Tiến hành quá trình cài đặt Android Studio
Hình 4 4 Kết thúc quá trình cài đặt phần mềm Android Studio
- Nhấp đúp chuột vào biểu tượng Android Studio để mở chươg trình
- Chọn Start a new Android Studio project để tạo một project mới.
Hình 4 5 Cửa sổ Welcome to Android Studio
-Màn hình Create Android Project xuất hiện gồm có:
-Application name: Phần đặt tên cho ứng dụng
-Company domain: Tên miền của người lập trình Hệ thống sẽ sử dụng
-Application name và Company domain để tạo một package đưa ứng dụng lên Google Play
-Project location: Địa chỉ lưu trữ project
Sau khi nhấn Finish, phần mềm sẽ tiến hành tạo project, tiến trình sẽ diễn ra từ 30 giây đến 1 phút
Khi project đã được tạo, cửa sổ lập trình sẽ xuất hiện, thẻ MainActivity.java sẽ hiện ra đầu tiên
Thẻ MainActivity.java là nơi để viết chương trình chính cho phần mềm
H ÌNH 4 7 Hình 4 8 Hình 4 6 Màn hình tạo project Android Studio
Hình 4 7Màn hình thẻ MainActivity.java
Thẻ AndroidManifest.xml nơi hiện các quyền và cấp quyền cho ứng dụng truy cập phần cứng trên điện thoại
Hình 4 8Màn hình thẻ AndroidManifest.xml
- Màn hình thẻ activity_main.xml:
- Thẻ con Design cho phép chỉnh sửa trực tiếp ứng dụng bằng cách kéo thả các biểu tượng, chỉnh sửa thông số của các biểu tượng:
Hình 4 9 Màn hình thẻ con thiết kế giao diện
-Thẻ con Text sẽ cho phép thiết kế giao diện bằng các tập lệnh
Hình 4 10 Màn hình thẻ con Text
Cơ sở dữ liệu firebase, các bước để thêm firebase vào ứng dụng
Firebase là nền tảng phát triển ứng dụng cho di động và web, được phát triển bởi Firebase, Inc Nền tảng này cung cấp cơ sở dữ liệu thời gian thực và chương trình phụ trợ, với dữ liệu được lưu trữ trên đám mây dưới dạng JSON Dữ liệu sẽ được đồng bộ hóa theo thời gian thực cho mọi thiết bị kết nối Để tạo một dự án trên Firebase, bạn cần thực hiện một số bước cụ thể.
Trước tiên truy cập vào địa chỉ https://firebase.google.com/ giao diện hiển thị như hình dưới:
To begin, click the LOG IN button on the right side of the screen and sign in using any Gmail account Next, select "GET STARTED," then click on "Add project" to name your project in Firebase, and finally, choose "CREATE PROJECT."
Hình 4 11 Giao diện hiển thị của Firebase
Hình 4 12 Cửa sổ tạo 1 project Firebase
Add Firebase to your Android application:
Android package name ta sẽ lấy tên package trong ứng dụng android qua, nhấn Save app
Hình 4 13 Các package giữa Firebase-App
Download file google-services.json và thêm vào chương trình android như hướng dẫn hình trên rồi bỏ vào thư mục tạo app
Hình 4 14 Tải tập tin google-services.json
Thêm các dòng lệnh như hình vào chương trình android của bạn Nhấn following tới đây việc add firebase coi như xong
Như vậy là database đã sẵn sàng ghi đọc dữ liệu từ ứng dụng android mà ta xây dựng
4.2.3 Xây dựng chương trình thực tế trên điện thoại thông minh
Trong bài viết này, chúng ta sẽ thực hiện lập trình để thiết kế một ứng dụng đơn giản và sau đó tiến hành cài đặt ứng dụng đó vào điện thoại Android đang kết nối với máy tính.
Khi tạo ra một “activity” sẽ bao gồm một tập tin thiết kế giao diện
“activity_main.xml” và tập tin để viết chương trình “MainActivity”.
Bước đầu tiên trong quá trình phát triển ứng dụng là thiết kế giao diện người dùng trong tệp "activity_main.xml" Sau đó, chúng ta sẽ lập trình trong "MainActivity" để ánh xạ các thành phần giao diện đã thiết kế, tạo ra sự liên kết chặt chẽ giữa chương trình và giao diện.
Hình 4 16 Cho phép can thiệp rules vào RealtimeDatabase
Hình 4 17 Thiết kế giao diện đơn giản Hình 4 18 Đặt id cho đối tượng
Sau đó sẽ tiến hành lập trình để ánh xạ liên kết với giao diện vừa thiết kế:
Để hiển thị chữ trên một “TextView” và thực hiện thao tác nhấn với một “Button”, cần tạo hai biến và ánh xạ cho chúng Cụ thể, bạn cần khai báo hai biến: “TextView display;” và một biến cho “Button”.
“Button buttton;”, sau đó sẽ tiến hành ánh xạ 2 đối tượng thông qua 2 hàm: display=(TextView)findViewById(R.id.textView); buttton = (Button)findViewById(R.id.button);
Để tạo sự kiện lắng nghe cho nút nhấn, bạn cần sử dụng hàm để thay đổi nội dung của "TextView" Cụ thể, bạn có thể sử dụng câu lệnh: display.setText("Hello world"); để hiển thị thông điệp "Hello world" khi nút được nhấn.
Hàm nhận biết sự kiện: buttton.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) { display.setText("Hello World");
Sau đó tiến hành nạp trên máy ảo hoặc thiết bị điện thoại chạy bằng
Hình 4 19 Cài đặt ứng dụng qua máy ảo
4.2.4 Thiết kế chương trình trên điện thoại thông minh Để thực hiện việc nạp chương trình cho điện thoại, ta cần kích hoạt điện thoại vào chế độ giành quyền admin theo bước sau:
- Thực hiện theo từng bước như sau: Mở màn hình android, vào cài đặt
tùy chọn nhà phát triển chạm tay nhanh hai lần là kích hoạt quyền admin cho máy
Giao diện hẹn giờ và điều khiển thiết bị cho phép người dùng tùy chỉnh theo nhiều chế độ và khung giờ khác nhau Người dùng có thể tác động trực tiếp vào thiết bị chỉ bằng cách chạm vào biểu tượng trên giao diện.
Để tạo một dự án Android cho điện thoại, bạn cần thực hiện các bước tương tự như khi tạo dự án trên máy tính Sau đó, hãy sử dụng FrameLayout, một loại layout đơn giản cho phép các view con xếp chồng lên nhau, với việc định dạng vị trí thông qua thuộc tính layout_gravity.
- Sau khi mở ứng dụng ta sẽ thấy giao diện như hình 4.20
Hình 4 20 Màn hình khi mở ứng dụng
Giao diện hiển thị thời gian ngày, tháng, năm, giờ, phút giây để người dùng có thể dễ dàng quan sát được thời gian hiện tại
Khi thời gian hiện tại trùng với ngày lễ, hệ thống sẽ thông báo "nghỉ lễ => tắt chuông" Trong thời gian thi học kỳ, thông báo tiếp theo sẽ hiển thị thời gian của ca thi Còn vào những ngày bình thường, hệ thống sẽ cung cấp thời gian cho tiết học tiếp theo.
Khi mở ứng dụng, Radiobutton mặc định sẽ được chọn, cho phép chuông hoạt động tự động vào các ngày học bình thường và ngày thi học kỳ Để tắt chuông toàn hệ thống, người dùng cần thực hiện lựa chọn phù hợp.
Checkbox ưu tiên bấm chuông bằng tay sẽ được chọn khi chế độ tự động gặp vấn đề hoặc có sự thay đổi đột xuất
Chế độ ưu tiên bấm chuông bằng tay
Khi chọn checkbox ưu tiên bấm chuông bằng tay thì sẽ hiện ra giao diện như hình 4.21 Gồm hai Button: Button 1 hồi (5s) và Button 2 hồi (10s)
Khi người dùng chọn Button 1, giá trị sẽ được gửi lên Firebase với biến "mothoi" được đặt thành 1 Sau 5 giây, chuông sẽ reo và sau đó "mothoi" sẽ trở về 0, khiến chuông tự động tắt.
Khi chọn Button 2, giá trị sẽ được gửi lên Firebase với haihoi = 1 Chuông sẽ reo và sau 10 giây, haihoi sẽ trở về 0, khiến chuông tự động tắt.
Hình 4 21 Màn hình điều khiển bằng chuông private val onRun5s = View.OnClickListener {
//xử lí run chuông 5s bằng tay chuong5s.setValue(0) chuong5s.setValue(1)
Toast.makeText(activity, "Đã reo 5s", Toast.LENGTH_LONG).show()
} private val onRun10s = View.OnClickListener {
//xử lí run chuông 10s bằng tay chuong10s.setValue(0) chuong10s.setValue(1)
Toast.makeText(activity, "Đã reo 10s", Toast.LENGTH_LONG).show()
Khi ta chọn biểu tượng thì giao diện màn hình Navigation gồm “Trang chủ”,
“Cài đặt”, “Giới thiệu” và “Ghi chú”
Khi ta chọn cài đặt thì màn hình sẽ chuyển qua giao diện cài đặt
Khi chưa chọn chế độ ngày lễ và ngày thi
Hình 4 23 Màn hình cài đặt
Khi chưa chọn chế độ ngày lễ và ngày thi thì giao diện sẽ như hình 4.23
Khi ở chế độ này thì chế độ tự động sẽ hiểu là đang ở ngày bình thường, chuông sẽ reo theo 12 tiết học hình 4.25 public static ArrayList getGioHocMacDinh() {
Phần mềm lập trình cho vi điều khiển ESP8266
Nhóm đã sử dụng phần mềm Arduino IDE để lập trình cho vi điều khiển wifi ESP8266-V12, đồng thời sử dụng USB TTL-PL203 để nạp chương trình cho vi điều khiển.
Phần mềm Arduino IDE được sử dụng phổ biến trên toàn thế giới để lập trình các mạch Arduino, với thiết kế thân thiện giúp người dùng, kể cả những người không chuyên về lập trình vi điều khiển, dễ dàng tiếp cận Nhờ vào thư viện nguồn mở, việc tìm kiếm tài liệu và chương trình liên quan trở nên đơn giản, cho phép người dùng tạo ra các dự án cá nhân mà không cần phải am hiểu sâu về phần cứng Ngôn ngữ lập trình chính được sử dụng là C và C++ Các bước sử dụng phần mềm Arduino IDE để lập trình rất dễ dàng và thuận tiện.
-Tải phần mềm và mở phần mềm
-Để sử dụng được chương trình lập trình chúng ta tiến hành tải phần mềm từ trang web:arduino.cc
Nhóm đã quyết định sử dụng phần mềm Arduino IDE phiên bản 1.8.9 hoặc cao hơn để lập trình cho mạch vi điều khiển ESP8266.
Sau khi tải và cài đặt thành công phần mềm, bạn hãy mở nó lên để thấy giao diện như hình 4.32, từ đó có thể bắt đầu lập trình.
Hình 4 32 Giao diện phần mềm Arduino IDE khi hoạt động
Hình 4 33 Lấy tên ngoại vi nạp vào máy tính
Sau đó sẽ hiện ra một cửa sổ khác và nhóm sẽ tiến hành chọn vào “Device
Để nạp chương trình cho Modul wifi ESP8266, bạn cần vào "Quản lý" và chọn "Ports (COM & LPT)" ở bên phải màn hình Khi đó, thiết bị "USB-SERIAL PL2303 (COM3)" sẽ xuất hiện, và bạn cần chọn COM này trong phần mềm Arduino.
COM3.Tiếp tục nhóm sẽ tiến hành cài đặt trong phần mềm COM tương ứng với thiết bị mạch nạp và lựa chọn là COM3
Hình 4 34 Lựa chọn cổng COM thích hợp với thiết bị nạp
Tạo project, viết chương trình và biên dịch chương trình cho Modul wifi
ESP8266 Để có thể lập trình cho mạch vi điều khiển ESP8266 trên phần mềm
To set up the Arduino IDE, it is essential to install the necessary support libraries Begin by opening the Arduino IDE, then navigate to "File" and select "Preferences." Here, you can add the path for installing the library package.
URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json”
Hình 4 35 Đường dẫn để cài gói thư viện lập trình cho Modul wifi ESP8266
Đầu tiên, nhóm cần truy cập vào mục "Tools", sau đó chọn "Board" và tiếp theo là "Boards Manager" để cài đặt thêm thư viện cho Modul wifi ESP8266.
NodeMCU Sau đó chọn phiên bản và chọn “Install”
Hình 4 36 Tiến hành cài gói thư viện cho mo dule ESP8266
Nhóm sẽ cài đặt các thông số cần thiết để lập trình, biên dịch và nạp chương trình cho ESP8266 bằng cách chọn vào mục "Tools".
“Board”và tiếp tục chọn NodeMCU 1.0 (ESP-12E Module)
Thiết lập các thông số quan trọng như tốc độ xử lý của CPU (CPU Frequency) phù hợp với mục đích sử dụng, bộ nhớ Flash và tốc độ nạp chương trình là bước cần thiết để tối ưu hóa hiệu suất.
115200 (Upload Speed) là tốc độ nạp chương trình cao nhất, tốc độ càng cao nạp càng nhanh
Hình 4 37 Thiết lập các thông số cho ESP8266 cho Arduino
Sau đó tiến hành kết nối mạch nạp cho Modul wifi ESP8266
Sau khi đã cài đặt xong nhóm sẽ tiến hành lập trình mẫu cho mạch vi điều khiển:
Hình 4 38 Lập chương trình mẫu cho ESP8266 cho Arduino
Sau khi chọn nạp chương trình, quá trình biên dịch và nạp sẽ diễn ra, hiển thị thông báo về tỷ lệ phần trăm chương trình được nạp Khi đạt 100%, chương trình sẽ hoàn tất và Module wifi ESP8266 sẽ hoạt động theo lập trình đã được thiết lập.
Lưu đồ giải thuật chính của mạch vi điền khiển ESP8266
Các bộ phận vi xử lý, hạ áp, relay sẽ được cấp nguồn
Vi xử lý ESP8266 sẽ phát Wifi có IP, để truy cập Wifi cho ESP
Tiến hành kết nối Wifi
Mạng Wifi được kết nối
Kết nối với cở sở dữ liệu FIREBASE,
Hình 4 39 Lưu đồ giải thuật chương trình chính ESP8266
Khi cung cấp nguồn cho vi điều khiển ESP8266, thiết bị sẽ tự động chuyển sang chế độ Station, cho phép kết nối với các thiết bị Wi-Fi như điện thoại hoặc laptop.
Để cấu hình ESP8266, bạn cần nhập địa chỉ IP mặc định 192.168.4.1 vào trình duyệt web Tại trang cấu hình, danh sách các điểm WiFi gần sẽ hiển thị, cho phép bạn chọn và nhập mật khẩu để kết nối Tên và mật khẩu WiFi sẽ được lưu trữ trong bộ nhớ cho các lần kết nối sau Hệ thống sẽ tự động reset và kết nối đến điểm WiFi đã lưu Bạn cũng có thể dễ dàng thay đổi các thông số mạng WiFi khi có sự thay đổi.
Hình 4 40 Danh sách các Wifi gần nhất Hình 4 41 Điềm Wifi cố định do ta cài đặt
Khi có nguồn cấp cho ESP, ESP sẽ kích hoạt chế độ Station, phát ra điểm
Wifi cố định được thiết lập trước mà không có dữ liệu, sau đó nhập IP của ESP lên Webserver (192.168.4.1-mặc định) Tiếp theo, danh sách Wifi gần nhất sẽ xuất hiện, cho phép vi điều khiển quét và kết nối Người dùng cần đăng nhập tài khoản và mật khẩu để ESP kết nối với Wifi, từ đó thực hiện truyền dữ liệu.
Giúp ta linh hoạt kết nối mọi Wifi ở mọi lúc mọi nơi, sẽ tiện hơn rất nhiều trong việc config cứng cố định một Wifi
#define QUOTE( ) # VA_ARGS // hỗ trợ write các đoạn mã http dễ dàng hơn
#include //tạo ra 1 sever wifi để save vào bộ nhớ
#include "FS.h" // quản lý bộ nhớ
#include // Comes with Arduino IDE
ESP8266WebServer server(80); // dùng sever cổng 80
#define.FIREBASE_AUTH"Pjo5ZTsJTnFSU63eUzyNGkrhKaX7xG8goTgTD hmQ"
#define FIREBASE_HOST "timerrtc-30fc8.firebaseio.com"
Các thư viện cần thiết để thực hiện các tính năng của vi điều khiển bao gồm việc đọc và ghi dữ liệu lên cơ sở dữ liệu thời gian thực FIREBASE thông qua các thư viện hỗ trợ.
#define.FIREBASE_AUTH"Pjo5ZTsJTnFSU63eUzyNGkrhKaX7xG8goTgTD hmQ"
#define FIREBASE_HOST "timerrtc-30fc8.firebaseio.com"
Ta sẽ lấy 2 thông tin này ở trên trang web Firebase nơi ta đã tạo project
Khởi tạo tên và mật khẩu chứa thông tin Wifi sẽ kết nối: server.begin();
WiFi.mode(WIFI_AP_STA); //SETUP TÊN WIFI
Để thiết lập tên WiFi cho vi điều khiển, sử dụng lệnh WiFi.softAP("DATN_THANG7", "12345678") Điểm WiFi này sẽ phát sóng khi được cấp nguồn, mặc dù không có dữ liệu Người dùng cần kết nối với mạng này để đăng nhập bằng địa chỉ IP đã được cấu hình trước đó Nếu id và pass không rỗng, quá trình đăng nhập sẽ được thực hiện.
Serial.println(String("Đang kết nối: ") + id + " | " + pass);
WiFi.begin(id, pass); while (WiFi.status() != WL_CONNECTED )
THIẾT KẾ PHẦN CỨNG
4.4.1 THIẾT KẾ GIAO DIỆN MÀN HÌNH
Nhóm dùng phần mềm Nextion và USAT HMI để lập trình cho màn hình HMI
Phần mềm Nextion và USART đang trở thành lựa chọn phổ biến cho lập trình màn hình Mặc dù Nextion dễ sử dụng, nhưng phiên bản xuất xứ từ Trung Quốc yêu cầu phần mềm lập trình riêng (USART) Hai phần mềm này có giao diện giống nhau, vì vậy người dùng có thể dựa vào bản Nextion chính hãng (tiếng Anh) để thực hiện lập trình hiệu quả.
Link tải phần mềm: https://drive.google.com/drive/folders/0B7orJIuNeEZGVjFXaU1FcFYtaVk
Giao diện thiết kế trên màn hình bao gồm hình ảnh, chữ và nút nhấn, trong đó có logo của trường Đại học Sư Phạm Kỹ Thuật và logo của khoa đào tạo Chất.
Lượng Cao là văn bản đồ án tốt nghiệp, hiện tại hiển thị thời gian bao gồm giờ, phút, giây, ngày, tháng, năm Người dùng có thể điều khiển chuông, chỉnh thời gian và chuyển đổi giữa các trang trên màn hình thông qua các nút nhấn.
Hình 4 47 Thiết kế giao diện trang 1 của màn hình
Thiết kế giao diện cho màn hình, nhóm sẽ tiếp tục lập trình cho màn hình tác động lên phần cứng
Ta quan sát thấy b00, b111, b2, t2, t9, t6 đó được gọi là các objectname
Hình 4 45 Giao diện phần mềm USART Hình 4 46 Giao diện phần mềm
Hình 4.48 hiển thị tên, ID và objectname của một layout, cho phép cấu hình thuộc tính của nút nhấn, bao gồm màu sắc mặc định và màu sắc khi chạm vào Để điều khiển tác động lên mạch, ta sử dụng lệnh sau:
(0,8,”b0”): lần lượt là số trang, id, tên layout
Hình 4 48 Các thuộc tính của 1 layout
Hình 4 49 Thiết kế giao diện trang 2 của màn hình
Tương tự để hiển thị thời gian lên màn hình ta sẽ dùng text để hiển thị cũng đặt objectname, id tương tự như nút nhấn:
Trên trang 1, chúng ta cũng có các văn bản tương tự như trên trang 0 Để kết nối hai màn hình với nhau, cần biến các thông tin này thành biến toàn cục, giúp chúng có thể được sử dụng chung một cách hiệu quả.
Hình 4 50 Layout chức biến cục bộ Hình 4 51 Layout chứ biến toàn cục Để chuyển tiếp giữa 2 màn hình ta cấu hình trực tiếp trên 2 nút nhấn”CAIDAT”-“TROVE”
Hình 4 52 Cấu hình chuyển qua trang 1 Hình 4 53 Cấu hình chuyển về trang 0
Sơ đồ mạch in 2 lớp cho mạch công suất:
Tổng kết lại sau đây là những linh kiện cần sử dụng để thiết kế phần cứng sẽ thiết kế sử dụng
Bảng 4 1 Các linh kiện thiết kế phần cứng
Thứ tự Tên linh kiện Thông số, giá trị Dạng vỏ
1 ESP8266 Bộ nhớ 4MB Flash Điên áp cấp: 3.3V Giao thức TCP/IP stack Giao tiếp SDIO 2.0, SPI, UART Chuẩn hỗ trợ 802.11b/g/n
2 LM1117 Điện áp đầu vào: 4.75V < VIN < 12V Điện áp đầu ra: 3.235V to 3.365V Dòng điện đầu ra: 1A
Dòng điện ngõ ra: 700mA
Dòng AC min: 6 A Nhiệt độ hoạt động: - 45 °C to 75 °C Dòng kích cuộn dây : 90 mA
Công suất cuộn dây (coil) DC: 450 mW Điện áp điều khiển cuộn dây (coil): 5 V
SRD- 5VDC -SL-C Điện áp VCEOminPV
Hình 4 54 Mạch in lớp dưới
Hình 4 55 Mạch in lớp trên
Hệ số khuếch đại : Hfe0 khi Vce=6V, Ic0mA
Công suất tiêu tán cực C: PC@0W…
6 Opto PC817 Điện áp chuyển tiếp: khi IF mA thì
Dòng IRuA khi VR=4V(áp ngược)
Công suất tiêu hao trên transistor 150mW
7 Nút nhấn Điện trở khi đóng =