GIỚI THIỆU
Tổng quan
Trong cuộc sống ngày càng bận rộn và hiện đại, sau những khoảng thời gian làm việc căng thẳng ai cũng muốn có một nơi để về, một căn nhà tốt hơn, tiện lợi hơn, một ngôi nhà hiểu thói quen của bạn và được hoạt động theo cuộc sống của bạn Người ta gọi một ngôi nhà làm được như vậy là một “Smart Home” Vậy Smart Home cụ thể là gì ?
Smart Home hiểu đơn giản là một ngôi nhà thông minh Việc thông minh này đến từ việc bạn có thể điều khiển các thiết bị trong nhà bạn như là đèn, quạt, máy lạnh, tivi, tủ lạnh, rèm cửa, ổ khóa cửa,… thông qua điện thoại, máy tính, … hay thậm chí ngôi nhà sẽ “lắng nghe” bạn từ đó hướng dẫn những thiết bị này hoạt động theo ước muốn của bạn Do đó bạn có thể đưa ra những chỉ thị mà không cần phải di chuyển trực tiếp đến từng cái ổ điện để bật công tắc điện, ngồi dậy đóng mở rèm, … ngoài ra bạn còn có thể kiểm tra tình trạng các thiết bị trong nhà đang hoạt động như thế nào dù bạn đang không có trong nhà Hơn thế nữa bạn có thể lưu lại những việc mà ngôi nhà cần thực hiện cho một tình huống nào đó và nó sẽ hoạt động y như vậy khi tình huống đó xảy ra Smart Home có thể nói là xu thế của tương lai Để giúp cuộc sống con người trở nên dễ dàng hơn, các thiết bị luôn được nghiên cứu cải tiến
“thông minh” hơn, giá thành dễ dàng tiếp cận người dùng hơn.
Hiểu được điều đó, luận văn hướng đến nghiên cứu một thiết bị điện cơ bản mà bất cứ một ngôi nhà nào cũng sẽ có, đó là một bộ công tắc điện gắn tường thông minh.
Ngoài ra luận văn còn thiết kế thêm một bộ đo công suất cho ổ cắm giúp người dùng có cái nhìn trực quan hơn , dễ theo dõi hơn việc sử dụng điện của thiết bị điện cắm trên ổ điện
Tình hình nghiên cứu trong và ngoài nước
Theo tài liệu mà luận văn đã tìm được, có khá nhiều tài liệu đã thực hiện thiết kế bộ công tắc điện thông minh nhưng đa số đều có những bất cập dẫn đến không sử dụng được trong thực tế
+ Một số tài liệu thực hiện điều khiển thông qua webserver do chính bộ điều khiển phát ra, điều này là không thực tế do không thể điều khiển tất cả thiết bị điện trong nhà bằng webserver được.
+ Một số tài liệu khác sử dụng các token để liên kết với các ứng dụng điều khiển và các token này thường rất dài và phức tạp, các tài liệu này cũng yêu cầu vi điều khiển được nhập sẵn ssid và passwords cũng như token trong đó, dẫn đến không thực tế.
+ Tất cả các tài liệu mà luận văn tìm được đều không có một mạch PCB hoàn thiện mà thường sử dụng các module, do đó kích thước của bộ công tắc điện trở nên rất to và không phù hợp để gắn trên tường.
Tuy nhiên mỗi cách làm lại có một cách hay của nó, từ đó luận văn tìm được hướng cần thiết để hoàn thành đề tài.
Nhiệm vụ luận văn
Thiết kế được một bộ công tắc điện thông minh đáp ứng:
+ Điều khiển đóng ngắt được thiết bị điện điển hình là bóng đèn, ngoài ra cần có thêm một ổ cắm điện nhằm giúp người dùng tiện hơn trong việc kết nối các thiết bị điện khác. + Do có thêm một ổ cắm điện rời nên cần phải đảm bảo an toàn về điện nếu người dùng gắn thêm thiết bị có công suất vượt mức ổ điện gắn tường chịu được.
+ Hoạt động độc lập một cách bình thường mà không cần kết nối với mạng điều khiển + Có khả năng điều khiển thông qua điện thoại cũng như hoạt động song song với các thiết bị điện thông minh khác mà không cần phải cài đặt thêm các phần mềm hỗ trợ riêng cho nó.
+ Thiết kế thêm bộ đo công suất riêng lẻ cho ổ cắm trên bộ ổ điện gắn tường giúp người dùng có thể chọn gắn thêm nếu muốn quản lí điện năng của ổ cắm
Về yêu cầu của bộ đo công suất:
+ Bộ đo công suất yêu cầu không quá chính xác tuy nhiên tính an toàn điện phải cao. + Phù hợp không chỉ với ổ cắm trên bộ công tắc điện thông minh của luận văn mà còn phù hợp với các ổ cắm khác. Để có thể giải quyết các vấn đề trên luận văn đưa ra các bước, nhiệm vụ cần thiết để hoàn thành luận văn.
Nội dung 1: Tìm hiểu thực tế, mua sản phẩm để trải nghiệm từ đó có cái nhìn tổng quan về cách hoạt động, các thành phần cơ bản cần có.
Nội dung 2: Tìm kiếm các tài liệu đã được công khai và các đề tài tương tự.
Nội dung 3: Đưa ra sơ đồ khối cơ bản từ đó tìm kiếm các module cần thiết để tiến hành làm thử.
Nội dung 4: Đưa ra lưu đồ giải thuật, tiến hành viết và nạp chương trình cho thiết bị và kiểm tra thông qua các module có sẵn.
Nội dung 5: Tiến hành thiết kế, hiệu chỉnh, kiểm tra phần cứng.
Nội dung 6: Suy nghĩ vấn đề còn tồn đọng và tìm cách giải quyết, cải tiến
LÝ THUYẾT
Home Assistant
Home Assistant là một phần mềm nguồn mở và miễn phí được thiết kế chuyên dụng để điều khiển và quản lí các thiết bị liên quan đến Smart Home như cảm biến, công tắc điện, rèm cửa, ổ khóa, …
Phần mềm Home Assistant thường được cài đặt trên một thiết bị như máy tính (thường sẽ là Raspberry Pi) khi đó nó sẽ hoạt động như một hệ thống điều khiển trung tâm cho ngôi nhà từ việc hẹn giờ bật tắt, thu thập dữ liệu, điều khiển, … Số lượng thiết bị của các hãng được Home Assistant hỗ trợ vô cùng rộng rãi với đủ loại kết nối như Bluetooth, Zigbee và Z-Wave Ngoài ra còn có thể điều khiển thiết bị bằng giao thức MQTT nếu thiết bị sử dụng kết nối WiFi để truyền dữ liệu.
Hình 2-1 Giới thiệu giao diện Home Assistant Đặc biệt là các thiết bị có thể điều khiển thông qua các ứng dụng được liên kết với Home Assistant như Google Assistant hoặc Amazon Alexa thay vì phải tải ứng dụng Home Assistant về máy, từ đó tiết kiệm đi số phần mềm cần cài đặt để điều khiển thiết bị trong hệ thống nhà thông minh.
Từ đó luận văn quyết định cài đặt Home Assistant lên Raspberry Pi [2] làm bộ điều khiển các thiết bị và dùng giao thức MQTT để gởi và nhận dữ liệu từ bộ điều khiển đến bộ công tắc điện thông minh.
HTML
HTML (viết tắt của HyperText Markup Language) là một ngôn ngữ dùng để tạo bố cục và cấu trúc các thành phần của một trang web như tiêu đề, nội dung, kết thúc, liên kết,….còn các thành phần đó được cấu hình như thế nào thì dùng các bộ công cụ hỗ trợ như CSS vàJavaScript để thực hiện Một file HTML không thể tạo nên một trang web với đầy đủ các tính năng, giao diện phức tạp mà cần thêm có các bộ công cụ như CSS, và JavaScript để tạo nên một trang web thực sự File HTML thường được kết thúc bằng đuôi “.html” Cấu trúc một fileHTML cơ bản được thể hiện như hình bên dưới
Hình 2-2 Cấu trúc một file HTML cơ bản
Luận văn sử dụng HTML để thiết kế giao diện cho người dùng nhập các thông tin cài đặt như thông tin đăng nhập wifi, thông tin MQTT, đặt tên thiết bị, … giúp người dùng có thể thao tác đơn giản mà không cần phải thay đổi thông qua code của chương trình nạp vào vi điều khiển Việc tạo giao diện này được kết hợp thêm phần bổ trợ của CSS và Javascript tuy nhiên không chuyên sâu.
MQTT
MQTT (Message Queuing Telemetry Transport) là giao thức truyền thông điệp theo mô hình publish/subscribe được sử dụng cho các thiết bị IoT với băng thông thấp, mạng lưới không ổn định tuy nhiên có tốc độ truyền tải khá thấp.
Mô hình này truyền thông tin này được thực hiện thông qua việc thiết bị sẽ đóng vai trò là một broker và một thiết bị khác sẽ đóng vai trò là một client (client có thể là Subcriber hoặc Publisher) Mỗi một hệ thống MQTT sẽ chỉ có một Broker tuy nhiên có thể có nhiều Client Nhiệm vụ chính của Broker là nhận thông điệp từ các Client (client là Publisher) sau đó chuyển cho Client khác (client là Subcriber) Mỗi client chỉ thực hiện một nhiệm vụ là publisher hoặc subcriber chứ không thể thực hiện hai nhiệm vụ này cùng lúc.
Hình 2-3 Sơ đồ giao tiếp giao thức MQTT Mỗi client được đặc trưng bởi một topic (giống như địa chỉ nhà ví dụ đường A/hẻm B), khi client gởi dữ liệu đi (client Publisher) thì dữ liệu sẽ bao gồm hai thành phần chính, một là topic của nơi đến (địa chỉ nhà nhận thư) và hai là dữ liệu cần truyền đi (lá thư) Khi đó borker (đóng vai người đưa thư) sẽ nhận gói tin từ nơi gởi (client Publisher) và gởi tới đúng địa chỉ topic (địa chỉ nhận thư) của client còn lại (Client Subcriber) Do đó mỗi client cần đăng kí với broker (giống như đăng kí dịch vụ gởi truyền thư) để có thể thực hiện thao tác gởi/nhận. Đề tài cấu hình Raspberry Pi được cài sẵn Home Assistant là MQTT Broker (pluginMQTT Mosquitto cho Home Assistant hỗ trợ biến Raspberry Pi thành Broker) và cài đặt vi điều khiển của mình là một client, từ đó máy tính nhúng Raspberry Pi và vi điều khiển có thể gởi nhận dữ liệu cho nhau và Raspberry Pi cũng có thể nhận từ các thiết bị điện thông minh khác trong nhà nữa Đối với luận văn thì dữ liệu là yêu cầu bật tắt thiết bị điện và thông số công suất của ổ cắm.
FreeRTOS
FreeRTOS [] là một hệ điều hành nhúng thời gian thực (Real Time Operating System) mã nguồn mở, được thiết kế phù hợp cho hệ thống nhúng giúp điều phối thực thi các task (các tác vụ) giúp cho các task có thể hoạt động gần như đồng thời hoặc điều khiển quá trình thực thi thông qua các cơ chế queques, mutex và semaphore.
Một chương trình nhúng cơ bản sẽ có một siêu vòng lặp thực hiện đi thực hiện lại các các tác vụ (task) theo thứ tự task 1 xong đến task 2,… rồi quay lại về task 1 Tuy nhiên thực tế có các tác vụ có thể chạy song song, riêng lẻ với nhau mà không cần chờ đợi tác vụ kia thực hiện xong mới tới mình.
Hình 2-4 Giản đồ hoạt động siêu vòng lặp
Giả sử task 2 (đọc nút nhấn) không hề phụ thuộc vào task 1 (đọc và xử lí giá trị cảm biến), khi đó nếu ta bấm nút nhấn trong lúc task 1 vẫn đang thực hiện thì việc bấm nút nhấn này coi như không ghi nhận Ở một trường hợp khác, nếu task 1 đang thực hiện câu lệnh delay thì vi xử lí lúc đó phải đợi và không thể thực hiện các task khác, khoảng thời gian này bị bỏ trống một cách vô ích Để giải quyết việc này thì hệ thống nhúng cần một hệ điều hành điều phối vấn đề thực hiện task thông minh hơn và freeRTOS là một hệ điều hành có khả năng thực hiện điều này.
Khi sử dụng hệ điều hành freeRTOS thì các tác vụ sẽ được coi như chạy riêng lẻ và song song nhau, đối với các tác vụ cần có thứ tự thực hiện thì hệ điều hành freeRTOS có cung cấp các cơ chế như: ưu tiên (prioritize), queque, mutex và semaphore, ngắt (interrupt) để điều phối thứ tự thực hiện cho task Đối với việc delay thì khi delay vi điều khiển vẫn sẽ thực hiện các task khác Do đó các task có thể xem như chạy đồng thời với nhau.
Hình 2-5 Giản đồ hoạt động FreeRTOS cơ bản
Đo công suất và tính hệ số công suất
Công suất biểu kiến (công suất tổng) S cấp cho tải sẽ bao gồm hai thành phần là công suất phản kháng Q và công suất thực P Công suất P là công suất có ích đặc trưng cho khả năng sinh công của tải được đo theo đơn vị là W, công suất phản kháng Q là công suất vô ích không sinh ra công nhưng nó giúp cho quá trình biến đổi điện năng được diễn ra, được đo theo đơn vị là VAR Mối quan hệ giữa S, Q, và P có thể được biểu thị bằng công thức sau:
Dựa vào công thức trên khi biểu thị các giá trị của S, P, Q dưới dạng một vector ta sẽ thu được một tam giác vuông có cạnh huyền là vector S và hai cạnh bên là vector P và vector
Q Giá trị hàm cos của góc hợp bởi hai vector P và Q được gọi là hệ số công suất PF (Power Factor), đây là đại lượng đặc trưng cho tỉ lệ giữa công suất thực và công suất phản kháng Q trên tải Ta đã biết công suất toàn phần S cấp cho tải là tích số giữa điện áp hiệu dụng và dòng điện hiệu dụng, nghĩa là:
Hình 2-6 Giản đồ vector mối quan hệ giữa các thành phần công suất
Người ta đặc trưng mối quan hệ giữ công suất biểu kiến S và công suất thực P theo một đại lượng gọi là hệ số công suất Hệ số công suất (PF) là tỉ lệ giữa công suất hiệu dụng (công suất thực gây ra trên tải, đơn vị W) và công suất biểu kiến (công suất dự kiến gây ra trên tải, đơn vị VA).
Giá trị công suất mà luận văn cần tính là công suất thực P, do đó cần phải xác định được giá trị điện áp và dòng điện hiệu dụng và hệ số công suất Luận văn xác định các thông số trên thông qua thông qua tín hiệu điện áp và dòng điện.
Tín hiệu điện áp và dòng điện được biểu diễn như sau:
+ Giá trị điện áp và dòng điện hiệu dụng sẽ là/√2, /√2
+ Góc công suất khi đó sẽ là =− ,
Nếu > 0, điện áp sớm pha hơn dòng điện
Nếu < 0, điện áp trễ pha hơn dòng điện
Nếu = 0, điện áp trùng pha dòng điện. Để tính được giá trị = − luận văn dựa vào thời điểm xuất hiện đỉnh sóng theo trục thời gian t của tín hiệu điện áp (kí hiệu tmaxU) và tín hiệu dòng điện (kí hiệu tmaxI) Khi đó hệ số công suất φ được tính theo công thức sau:
Giả sử đường màu đỏ là tín hiệu điện áp và đường màu xanh là tín hiệu dòng điện.
• Đối với trường hợp điện áp sớm pha hơn dòng điện
Hình 2-7 Kiểm tra cách tính góc lệch pha u và i (hình a)
Khi tiến hành đo giá trị điện áp và dòng điện theo thời gian (bắt đầu từ đường màu xanh) đỉnh sóng đầu tiên của dòng điện mà ta bắt sẽ là điểm t = 0.5, đối với điện áp thì đó là thời điểm t = 2 Khi đó giá trị độ lệch pha sẽ là
• Đối với trường hợp điện áp trễ pha hơn dòng điện
Hình 2-8 Kiểm tra cách tính góc lệch pha u và i (hình b)
Khi tiến hành đo giá trị điện áp và dòng điện theo thời gian (bắt đầu từ đường màu xanh) đỉnh sóng đầu tiên của dòng điện mà ta bắt sẽ là điểm t = 3.5, đối với điện áp thì đó là thời điểm t = 2 Khi đó giá trị độ lệch pha sẽ là
Qua các hai ví dụ trên và một số trường hợp khác đã kiểm tra thì cách làm của luận văn là đúng.
THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG
Tổng quan hoạt động hệ thống
Hệ thống tổng quát sẽ bao gồm một bộ công tắc điện thông minh điều khiển 3 thiết bị điện và một ổ cắm (thông qua relay), nếu có nhu cầu người dùng có thể gắn thêm một bộ mở rộng với chức năng là đo công suất cho bộ công tắc điện thông minh.
3.1.1 Sơ đồ khối bộ công tắc điện thông minh
Hình 3-1 Sơ đồ khối bộ công tắc điện thông minh
Sơ đồ khối trên miêu tả cách hoạt động, đấu nối cũng như sử dụng bộ công tắc điện thông minh Điện áp AC cấp vào có đường dây N được nối chung với đường dây nguồn của tải (tải bao gồm ba thiết bị điện và một ổ cắm), đường dây L được đóng ngắt thông qua Relay, một phần đường dây AC được sử dụng để cấp nguồn cho bộ nguồn chuyển đổi AC sang DC (cấp cho khối Relay và khối vi điều khiển).
Việc đóng ngắt các thiết bị điện thông qua relay (ba thiết bị điện) có thể được thực hiện thông qua Home Assistan hoặc ba nút nhấn tuy nhiên việc đóng ngắt ổ cắm chỉ có thể thực hiện thông qua Home Assistant Giao tiếp giữa vi điều khiển và Home Assistant được thực hiện thông qua giao thức MQTT (thông tin là yêu cầu đóng ngắt relay). Để có được thông tin của broker (Raspberry cài Home Assistant) và thông tin của mạng wifi (SSID, passwords) thì vi điều khiển sẽ tạo ra một websever để người dùng nhập dữ liệu, việc kích hoạt websever được thực hiện khi người dùng nhấn giữ một nút nhấn lâu hơn 5 giây, khi đó một mạng wifi đặc trưng cho bộ công tắc thông minh sẽ được tạo, người dùng truy cập webserver thông qua IP “192.168.4.1”
3.1.2 Sơ đồ khối bộ đo công suất
Khối tạo Khối Opamp điện áp âm đo điện áp
Hình 3-2 Sơ đồ khối bộ đo công suất
Sơ đồ khối trên miêu tả cách hoạt động, đấu nối bộ đo công suất Tương tự như bộ công tắc điện thông minh, bộ đo công suất cũng bao gồm khối nguồn chuyển điện áp AC thành DC cấp cho vi xử lí và khối tạo điện áp âm (do op-amp cần sử dụng điện áp đôi, tham khảo mục 3.2.2).
Thông tin điện áp, dòng điện, hệ số công suất mà vi điều khiển tính/đo được sẽ được truyển tải lên Home Assistant thông qua giao thức MQTT, do chỉ có thể hiện trên Home Assistant nên khi mất kết nối thì webserver sẽ được tự động bật, tên của wifi khi vi điều khiển bật webserver có thể do người dùng tự chọn.
Khối Op-amp đo điện áp có nhiệm vụ chuyển điện áp đầu vào AC sang điện áp đầu ra dạng AC nhưng nằm trong vùng mà vi điều khiển có thể đọc được.
IC đọc dòng điện có tác dụng chuyển đổi giá trị dòng điện dạng AC có dòng điện hiệu dụng bé hơn 20A (tuy nhiên giá trị tối đa mà IC đọc sẽ nhỏ hơn 20A do relay đề tài chọn chỉ có dòng hiệu dụng tối đa là 10A) Giá trị điện áp đọc được sẽ vượt ngưỡng ADC của vi điều khiển có thể đọc, do đó luận văn sẽ hiệu chỉnh lại thông qua một cầu phân áp. Điều cần lưu ý ở sơ đồ khối này là cách đấu dây, do bộ đo công suất này sẽ được gắn liền với một ổ cắm nên cách đấu dây sẽ có chút đặc biệt Dây L4 và N4 (hai dây cấp điện AC cho ổ cắm trên mạch công tắc điện) bây giờ sẽ không được nối vào hai chốt cắm dây của ổ cắm nữa mà sẽ được nối sang bộ đo công suất từ đó nó sẽ được đấu nối tiếp với IC đo dòng và song song với bộ đo điện áp op-amp, đầu ra của bộ đo công suất khi đó mới là nguồn cấp cho ổ cắm (Hình 3-2).
Thiết kế mạch PCB cho bộ công tắc điện thông minh
Mục tiêu thiết kế này là tạo ra một bộ công tắc điện thông minh gắn tường có thể bật/tắt các thiết bị điện hoạt động động ở điện áp 220VAC - 10A (gồm ba thiết bị và một ổ cắm) thông qua nút nhấn cảm ứng và Wifi, do đó cần có một vi xử lí đảm nhiệm nhiệm vụ kết nối với WiFi để nhận/gởi dữ liệu điều khiển các thiết bị điện này Vì vậy mạch sẽ phải hoạt động ở hai dạng điện áp là DC và AC Để đảm bảo an toàn điện, phần điện áp điều khiển AC được cách li với phần điều khiển DC.
Do đây là bộ công tắc điện gắn tường nên mạch phải đảm bảo tính nhỏ gọn quá to thì sẽ mất mĩ quan và khó lắp đặt.
Từ những điều trên luận văn quyết định sẽ chia bộ điều khiển công tắc điện thông minh thành hai bảng mạch PCB, một bảng mạch nằm phía dưới (Bottom PCB) đảm nhiệm việc cấp nguồn DC và điều khiển đóng/ngắt các thiết bị điện AC, một bản mạch (chứa vi điều khiển) nằm phía trên (Upper PCB) chịu trách nhiệm xử lí và truyền tín hiệu điều khiển đóng ngắt các thiết bị AC cho bảng mạch phía dưới Do relay có thể hoạt động đóng ngắt điện áp
AC chỉ bằng điện áp DC nên luận văn quyết định sử dụng relay để thực hiện đóng ngắt cho mạch Bottom PCB Chi tiết tham khảo sơ đồ kết nối bên dưới:
Hình 3-3 Sơ đồ kết nối giữa hai mạch PCB của bộ công tắc điện thông minh
3.2.1 Thiết kế mạch PCB phía trên
3.2.1.1 Thiết kế mạch nguồn và cổng kết nối
Bước đầu là cần phải chọn vi điều khiển cho bộ công tắc điện thông minh gắn tường.
+ Để điều khiển các đóng ngắt bốn relay tương ứng với ba thiết bị điện và một ổ cắm thì cần bốn chân điều khiển.
+ Để có thể điều khiển thông qua wifi thì vi điều khiển phải có thể kế nối với wifi.
+ Luận văn muốn việc nhập thông tin cấu hình WiFi và MQTT được thực hiện thông qua webserver nên vi điều khiển cũng phải cần hỗ trợ tạo webserver và có hỗ trợ thư viện để sử dụng MQTT.
+ Để điều khiển đóng ngắt ba thiết bị thì cần ba nút cảm ứng điện dung nghĩa là vi điều khiển phải có thể hỗ trợ thêm ba input.
+ Để hiển thị trạng thái đóng ngắt của thiết bị điện thì luận văn sử dụng thêm bốn led đỏ (ba led cho ba thiết bị điều khiển bằng nút nhấn và một led cho ổ cắm) thêm một led xanh để hiện tình trạng kết nối wifi.
→ Dựa vào các yêu cầu trên, luận văn quyết định sử dụng ESP32 làm vi điều khiển cho bộ công tắc điện của mình.
Sơ đồ mạch thiết kế được thể hiện như hình bên dưới:
Hình 3-4 Sơ đồ kết nối mạch PCB phía trên của bộ công tắc điện thông minh (hình a)
Nguồn cấp cho vi điều khiển được cho qua IC ổn áp AMS1117-3.3V có dòng điện tối đa đầu ra là 1A phù hợp cho việc chỉ cấp nguồn cho vi điều khiển.
Việc nạp chương trình cho vi điều khiển được luận văn thực hiện thông qua header J1, một điều lưu ý khi nạp chương trình là phải nối jumper giữa chân GPIO0 và chân GND trên header J1
Tụ C1 được dùng để ổn áp nguồn cấp từ UART Tụ C2, C3 được dùng để ổn định điện áp đầu vào cho vi điều khiển Tụ C5 dùng để chống rung nút nhấn BT2 cho chân EN
Do luận văn quyết định tiến hành nạp chương trình cho vi điều khiển bằng UART nên khi sử dụng UART nguồn cấp cần được nối đất chung với tín hiệu GND của hệ thống Để có thể nạp chương trình khi không có nguồn từ mạch PCB phía dưới (bottom PCB) thì luận văn có dùng thêm Diode D1 Khi có nguồn 5V UART cấp vào nhưng không có nguồn 5V từ mạch PCB phía dưới cấp lên thì diode D1 sẽ dẫn IC ổn áp AMS 1117 -3.3V sẽ cho ra điện áp 3.3V, khi mạch PCB phía dưới cấp nguồn lên cho vi điều khiển, diode D1 ngắt, tuy nhiên lúc này IC ổn áp AMS 1117 -3.3V vẫn sẽ hoạt động và cho ra điện áp 3.3V. Điện trở R1 và LED1 được dùng để báo hiệu có nguồn cấp vào vi điều khiển.
Chân EN được nối với bộ nút nhấn nhằm tạo tín hiệu reset cho vi điều khiển nếu được nhấn, điện trở R2 và C4 nhằm tạo độ trễ đảm bảo nguồn cấp cho vi điều khiển được ổn định (theo khuyến nghị của datasheet [1]).
Khi nạp chương trình thông qua UART cần lưu ý dùng jumper nối chân GPIO 0 trên header J1 với đất để gán GPIO 0 giá trị LOW (dựa trên hướng dẫn nạp chương trình cho ESP32) Sau khi nạp xong thì rút jumper đó ra để mạch có thể hoạt động.
Các điện trở R4, R5, R6, R7 được thêm vào nhằm giảm giá trị dòng điện và điện áp cấp cho các LED biểu thị trạng thái hoạt động.
Header J2 được dùng để kết nối với mạch PCB phía dưới để truyền tín hiệu điều khiển relay và nhận nguồn 5V từ mạch PCB phía dưới cấp lên.
3.2.1.2 Thiết kế nút cảm ứng Đối với nút nhấn điện dung thì không cần chống rung như nút nhấn cơ học, việc nút nhấn có được nhấn hay không phụ thuộc vào đọc giá trị điện dung thay đổi.
Hình 3-5 Đồ thị minh họa tín hiệu nút cảm ứng điện dung khi được nhấn
Bản chất của cảm ứng điện dung là tụ điện, khi chạm vào cảm ứng điện dung thì sẽ xuất hiện sự thay đổi giá trị tụ điện tại vị trí chạm, việc nhận biết nút cảm ứng có được chạm hay không phụ thuộc vào điều này.
Hình 3-6 Cách hoạt động của nút cảm biến điện dung
Do đó IC đọc cảm ứng chạm của nút cảm ứng điện dung bản chất là IC đo tụ điện. Luận văn cần thiết kế ba nút cảm ứng cho ba thiết bị điện nên luận văn quyết định lựa chọn
IC TTP224 có thể đọc được 4 cảm biến điện dung làm IC đọc cảm ứng chạm của mình Đầu vào của IC là 4 nút cảm ứng điện dung và đầu ra là 4 chân CMOS thể hiện nút nhấn có được chạm hay không (được chạm thì đầu ra sẽ lên mức cao) Do điện áp mà luận văn cấp cho IC là 3.3V nên đầu ra sẽ có giá trị từ 2.4V đến 3.3V cho mức cao và 0V đến 0.4V cho mức thấp và các mức này vẫn nằm trong khoảng mà vi điều khiển chịu được.
Hình 3-7 Sơ đồ chân IC TTP224
Thiết kế mạch PCB cho bộ đo công suất
Để đo được công suất ta cần đọc điện áp đầu vào hiệu dụng (AC: 220 V – 50 Hz) và dòng điện hiệu dụng (tối đa là AC: 10A – 50Hz) và hệ số công suất PF (power factor), đối với hệ số công suất thì phương pháp xác định đã được đề cập ở mục 2.6.
Việc đọc tín hiệu điện áp thì cần dùng đến ADC tuy nhiên với tín hiệu nguyên bản AC: 220 V – 50 Hz thì việc đọc là không thể đối với các vi điều khiển, do đó luận văn sẽ chuyển giá trị này sang vùng mà vi điều khiển có thể đọc được qua chức năng ADC. Đối với dòng điện luận văn sẽ xử dụng IC chuyên đọc tín hiệu dòng điện có đầu ra là điện áp để dùng ADC của vi điều khiển đọc Do IC mà luận văn sử dụng có đầu ra nằm ngoài vùng đọc được của ADC vi điều khiển nên sẽ cần một bước chuyển đổi mức điện áp trước khi đọc.
3.3.1 Thiết kế mạch PCB phía trên
Bước đầu là cần phải chọn vi điều khiển cho bộ đo công suất ổ cắm Vi điều khiển phải có các chức năng như sau:
+ Có ít nhất 2 kênh đọc ADC
+ Để có thể truyền dữ liệu đọc được qua wifi bằng giao thức MQTT thì vi điều khiển trước hết cần phải kết nối được wifi sau đó để nhập thông tin cấu hình WiFi và MQTT được thông qua webserver thì vi điều khiển cũng phải hỗ trợ tạo webserver và có hỗ trợ thư viện để sử dụng MQTT.
→ Dựa vào các yêu cầu trên, luận văn quyết định sử dụng ESP32 làm vi điều khiển cho bộ đo công suất của mình.
Sơ đồ mạch của mạch PCB đo công suất phía trên được thể hiện như hình bên dưới
Hình 3-19 Schematic mạch PCB phía trên bộ đo công suất
So với mạch PCB phía trên của bộ công tắc điện thông minh gắn tường được trình bày ở mục 3.1.1 thì mạch PCB phía trên cho bộ đo công suất không có mạch IC ổn áp 3.3V do nó sẽ được đặt ở mạch PCB phía dưới của bộ đo công suất Tín hiệu giao tiếp giữa hai mạch sẽ là hai giá trị V và I đã được chuyển đổi sang giá trị ADC vi điều khiển có thể đọc được, nguồn cấp cho vi điều khiển 3.3V và tín hiệu nguồn 5V Uart được chuyển xuống IC ổn áp ở mạch PCB phía dưới để chuyển thành điện áp 3.3V cấp cho vi điều khiển nếu không muốn dùng nguồn của hệ thống.
Giá trị ADC để vi điều khiển có thể đọc được chính xác được khuyến nghị từ 500mV đến 2450 mV do đó luận văn chọn mức điện áp cho giá trị sau chuyển đổi của điện áp và dòng điện AC là từ 500mV đến 2500 mV.
Chân ADC1_CHANNEL_4 (GPIO32) và chân ADC1_CHANNEL_5 (GPIO 33) sẽ được luận văn lựa chọn để làm chân đọc giá trị điện áp và dòng điện AC sau chuyển đổi Đối với ESP32, do luận văn phải sử dụng wifi để kết nối nên không thể sử dụng ADC2 cho chuyển đổi được.
3.3.2 Thiết kế mạch PCB phía dưới
3.3.2.1 Thiết kế mạch đo điện áp AC Để đọc điện áp đầu vào có thể dùng một biến áp để hạ áp điện áp cần đo, tuy nhiên biến áp này lại khá to nên không phù hợp với đề tài do đó đề tài quyết định sử dụng op-amp để điều chỉnh điện áp đầu vào.
Luận văn thiết kế bộ điều chỉnh bao gồm 2 mạch op-amp: ạ ℎ ℎ ế ℎ ạ đó
Các yêu cầu về op-amp:
+ Điện áp cấp Op-amp: Điện áp cấp cho Op Amp có thể là điện áp đôi hoặc điện áp đơn,tuy nhiên do điện áp đầu ra vout1 có phần âm và luận văn cần phần âm của tín hiệu này nên điện áp cấp cho op-amp phải là điện áp đôi (mạch tạo điện áp âm được luận văn trình bày ở phần 3.2.2 c).
+ Điện áp offset Op-amp: Do ADC ESP32 đọc giá trị khá nhỏ tới hàng milli Volt (chế độ
12 bit một step là 3.3/4025 = 0.0008 mV) nên để giảm sai số thì giá trị offset phải nhỏ.
→ Dựa vào các tiêu chí trên đề tài chọn Op-amp OP07C có điện áp cấp từ ± 3V đến ± 18 V và có điện áp offset là 60μF giúp ổn định điện áp đầu ra.V. Điện áp đầu ra có ngưỡng là 2.5V nên điện áp cấp cho op-amp phải có ngưỡng lớn hơn 2.5V, luận văn sử dụng nguồn +9V đến cấp cho chân cấp nguồn dương op-amp, luận văn không chọn điện áp +5V vì sau khi qua mạch tạo điện áp âm (trình bày ở phần 3.2.2 c) sẽ giảm xuống khá gần mức -2.5V. Để dễ dàng trình bày thiết kế, luận văn xin được trình bày theo kiểu thiết kế ngược.
Tức là thiết kế mạch cộng không đảo rồi thiết kế mạch khuếch đại vi sai.
• Mạch cộng không đảo có cấu trúc như sau:
Hình 3-20 Cấu trúc mạch khuếch đại không đảo
Với 1 là 1 ( ó ệ á ỉ ℎ đó đó 1 ≤ 2.5 ), là điện áp ngõ ra của mạch khuếch đại vi sai, 2 là điện áp cố định cần cộng thêm để chuyển phần điện áp âm của 1 sang điện áp dương và là điện áp analog mà ESP32 sẽ đọc. Đề tài chọn nguồn cấp cho op-amp là 9V nên điện áp phải nhỏ hơn 9V, thêm vào đó điện áp offset cũng nên bé để giảm tính ảnh hướng đến giá trị điện áp Vì vậy luận văn chọn điện áp = 3.3 được tạo ra từ IC AMS1117 cấp cho vi điều khiển để đảm bảo tính ổn định.
Theo mong muốn thiết kế điện áp đầu ra ta có:
1 + 2 Để dễ thiết kế, chọn + = 1 + 2 → = 1 + 2 − > 0 Khi đó:
Dấu bằng ở vế trái xảy ra khi 1 = − 1
Dấu bằng ở vế phải xảy ra khi 1 = 1
Suy ra điều kiện để tồn tại 1 , 2 , ,là:
Mạch cộng không đảo sau khi thiết kế được thể hiện qua hình bên dưới
Hình 3-21 Schematic bộ chuyển đổi đo điện điện áp AC (hình a)
• Mạch khuếch đại vi sai có cấu trúc như sau: Đề tài quyết định lựa chọn mạch khuếch đại này do nó có thể khuếch đại độ chênh lệch điện áp đầu vào với hệ số Gain quy định được mà không làm thay đổi dạng tín hiệu điện áp đầu vào sang ngược phá từ đó điện áp đầu ra sẽ có dạng tín hiệu phù hợp với nhu cầu thiết kế.
Hình 3-22 Cấu trúc mạch khuếch đại vi sai ó ạ = −
1 1 2 4 Đề tài chọn R1 = R2, R3 = R4, khi đó dạng điện áp đầu ra là:
Ta có điện áp vào là hình sin với biên độ là 311V, điện áp đầu ra sau khi ra khỏi op- amp là hình sin 1.65V, từ đó tính được:
Hình 3-23 Schematic bộ chuyển đổi đo điện điện áp AC (hình b)Mối quan hệ giữa điện áp đầu vào và điện áp đầu ra là:
3.3.2.2 Thiết kế mạch đo dòng điện AC Đề tài sử dụng IC ACS712ELCTR-20A-T, đây là IC đo cường độ dòng điện tối đa 20A bằng hiệu ứng Hall theo cả hai chiều với độ nhạy là 100mV/A, đầu ra là điện áp Sơ đồ và chức năng chân đầu ra được thể hiện như hình bên dưới
+ Ngõ vào chân nguồn 5V và GND
+ IP+, IP- được mắc nối tiếp với dòng điện cần đo độ nhạy 20mV/A
+ Chân Filter được nối với tụ bên ngoài để thiết đặt bandwidth + VIOUT là điện áp ngõ ra.
Hình 3-24 Pin Out IC ACS712 - 20 A-T
Luận văn thiết kế chân Filter kết nối với một tụ 47nF theo datasheet [6] để chọn bandwidth là 2kHz. Đề tài có cường độ dòng điện hiệu dụng tối đa là 10A, với độ nhạy của IC ACS712- 20A là 100mV, offset là Vcc/2 = 5/2 = 2.5V Từ đó điện áp đầu ra có dạng:
Do đó ta sẽ sử dụng một mạch chia điện áp bằng điện trở để điện áp ngõ ra phù hợp với vùng đo của ADC của ESP32 là 0.5 đến 2.5 V với hai điện trở có giá trị là 25k và 15k. Khi đó điện áp ngõ ra sẽ là:
Mạch đo dòng điện được thể hiện qua hình bên dưới:
Hình 3-25 Schematic mạch đo dòng điện AC dùng IC ACS712-20A-T 3.3.2.3 Thiết kế mạch lọc thông thấp
Sau khi tiến hành thực hiện và kiểm tra hai mạch trên thì tín hiệu đầu ra bị nhiễu, để giảm nhiễu luận văn sử dụng thêm một bộ lọc thông thấp bị động RC với tần số cắt là 100 Hz
Hình 3-26 Cấu trúc bộ lọc thông thấp dùng RC
Dựa vào công thức trên ta thấy với các tần số càng cao thì giá trị dung kháng tụ điện
THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM
Lưu đồ giải thuật cho bộ công tắc điện thông minh
Bộ công tắc điện thông minh gắn tường sử dụng ba nút nhấn cảm ứng để điều khiển ba thiết bị và một socket chỉ có thể được điều khiển thông qua Home Assistant Để giảm thiểu những delay không cần thiết luận văn sử dụng hệ điều hành freeRTOS cho hệ thống. Dưới đây luận văn xin được trình bày lưu đồ giải thuật điều khiển cho bộ công tắc điện thông minh, lưu đồ sẽ gồm 5 task chạy song song với nhau, quản lí việc chạy thông qua queue. Luận văn cài đặt số lượng tối đa thành phần trong queue có thể lưu tại một thời điểm là 4.
Khởi động Load lại data lưu trong bộ nhớ
Hình 4-1 Lưu đồ giải thuật cho bộ công tắc điện thông minh (khi khởi động)
Sau khi cấp nguồn bộ công tắc điện, việc đầu tiên cần làm là lấy lại các thông số đã lưu trong bộ nhớ Flash (mặc dù nằm trong bộ nhớ Flash nhưng vùng nhớ này sẽ không mất đi dù cho mất điện) Tại đây sẽ lưu các dữ liệu kết nối WiFi, MQTT, các trạng thái nút nhấn và các topic cho bị Sau đó sẽ tiến hành cấu hình cho GPIO input, output và cấu hình thông tin cho MQTT.
Sau đó luận văn sẽ chia các công việc thành 4 task với các chức năng cụ thể
• Task 1: Dùng để điều khiển giao tiếp với nút nhấn cảm ứng
Loop n times: Task 1 (Giao tiếp với nút nhấn cảm ứng)
Thay đổi trạng thái thiết bị tương ứng
Truyền vị trí Relay thay đổi vào Queue
Buộc ngừng toàn bộ Task
Cho phép chạy toàn bộ Task
Hình 4-2 Lưu đồ giải thuật cho bộ công tắc điện thông minh (Task 1)
Việc bật webserver sẽ chỉ diễn ra khi người dùng bấm một nút cảm ứng bất kì trong vòng hơn 5 giây, điều này giúp người dùng dễ sử dụng cũng như hiệu chỉnh từng bộ công tắc điện riêng biệt.
Khi bước vào chế độ webserver, tất cả các task khác sẽ được ngừng lại và nhường quyền ưu tiên cho task 1 để đảm bảo hoạt động của webserver (do vi điều khiển cần chạy ở chế độ AP mode), sau khi người dùng nhấn nút EXIT trên giao diện thì webserver sẽ tắt và bộ công tắc điện sẽ trở lại hoạt động như bình thường
Nếu người dùng chỉ đơn giản là ấn nút cảm ứng để đóng ngắt thiết bị thì khi đó thiết bị sẽ được đóng ngắt, vị trí relay được đóng ngắt sẽ được chuyển vào queue để có thể chuyển vào task publish trạng thái relay lên webserver.
• Task 2: Dùng để duy trì kết nối
Loop n times: Task 2 (Duy trì kết nối)
Relay Socket trở về trạng thái thường đóng
Hình 4-3 Lưu đồ giải thuật cho bộ công tắc điện thông minh (Task 2)
Do hoạt động ở chế độ freeRTOS nên task 2 sẽ luôn kiểm tra kết nối, nếu mất kết nối thì task 2 sẽ cố gắng kết nối lại, nếu kết nối thành công thì sẽ đăng kí các topic lại với broker, nếu không kết nối được (đề phòng tình trạng hỏng wifi) thì relay socket sẽ luôn trả về trạng thái thường đóng, sau đó sẽ tiến hành delay 30 giây trước lần cố gắng thử kết nối tiếp theo, do luận văn dùng freeRTOS nên trong thời gian delay này các task khác vẫn hoạt động bình thường.
• Task 3: Dùng để Publish Message
Loop n times: Task 3 (Để Publish Message)
Publish FIFO (First in First Out)
Publish trạng thái cả 4 relay
Hình 4-4 Lưu đồ giải thuật cho bộ công tắc điện thông minh (Task 3)
Sau khi kiểm tra kết nối với WiFi và MQTT (nên thay việc này bằng binarySemaphore nhưng luận văn chưa làm được) thì nếu trong hàng đợi có queue thì sẽ tiến hành publish nó lên broker giúp đồng bộ trạng thái relay, tuy nhiên luận văn quyết định sử dụng việc kiểm tra số trạng thái Queue sẵn có (tối đa là 4) để khi mất kết nối wifi hoặc MQTT, nếu xuất hiện việc thay đổi trạng thái thiết bị quá bốn lần thì sẽ rất khó để kiểm soát rằng thiết bị nào được thay đổi, có thể mở rộng cỡ queue lên hơn 4 tuy nhiên điều đó luận văn thấy không cần thiết, gây tốn bộ nhớ, chỉ cần pulish một lúc cả bốn relay là được (thực tế chỉ cần ba do ổ cắm không thể thay đổi trạng thái lúc mất kết nối như đã đề cập ở task 2)
• Task 4: Dùng để kiểm tra Topic
Loop n times: Task 4 (kiểm tra topic)
So sánh với Topic thiết bị
Thay đổi trạng thái thiết bị tương ứng
Truyền vị trí thiết bị thay đổi vào Queue
Hình 4-5 Lưu đồ giải thuật cho bộ công tắc điện thông minh (Task 4)
Task này khi khởi tạo MQTT thì đã mặc định là sẽ có (task callback), task này sẽ được gọi mỗi khi vi điều khiển nhận được một thông điệp MQTT, việc đầu tiên cần làm là so sánh địa chỉ nhận xem có phải là của bộ công tắc điện đó không, nếu có thì thay đổi trạng thái thiết bị, giống như task 1, trạng thái sẽ được đưa vào queue.
• Task 5: Dùng để thể hiện tình trạng kết nối
Loop n times: Task 5 (LED tình trạng kết nối) Đang trong Webserver
Mất kết nối MQTT hoặc WIFI Kết nối bình thường
Hình 4-6 Lưu đồ giải thuật cho bộ công tắc điện thông minh (Task 5)
Task 5 dùng để thể hiện tình trạng kết nối WiFi và MQTT cho người dùng biết thông qua Led màu xanh lá cây, nếu như không có kết nối thì LED sẽ chớp tắt với chu kì 1s, còn nếu kết nối bình thường thì LED sẽ tắt, nếu thiết bị đang trong chế độ WebServer thì Led sẽ sáng.
Lưu đồ giải thuật cho bộ đo công suất
Tương tụ như bộ công tắc điện thông minh, bộ đo công suất cũng sẽ thiết lập thông số thông qua webserver, chỉ khác ở chỗ mục MQTT của giao diện webserver sẽ không phải là tên của bốn thiết bị nữa mà sẽ chỉ còn một thiết bị, đoạn tạo code thì sẽ thay đổi cấu trúc do lần này luận văn chỉ gởi dữ liệu (theo kiểu sensor).
Khác với bộ công tắc điện thông minh, bộ đo công suất thì cần phải có mạng mới hoạt động được (do chỉ giao tiếp duy nhất với Home Assistant) Bộ đo công suất cũng được lập trình trên hệ điều hành freeRTOS, sử dụng queue và chia làm 4 task.
Khởi động Load lại data lưu trong bộ nhớ
Hình 4-7 Lưu đồ giải thuật cho bộ đo công suất (khi khởi động) Ở bước này dữ liệu được lưu trữ từ trước bao gồm thông tin đăng nhập wifi và thông tin MQTT sẽ được tải lại, thông tin của MQTT sẽ bao gồm địa chỉ broker, passwords, tên đăng nhập, mật khẩu của máy tính cài Home Assistant, tên thiết bị và vị trí đặt thiết bị
Hình 4-8 Lưu đồ giải thuật cho bộ đo công suất (task 1)
Task 1 sẽ nhận vai trò đảm bảo kết nối wifi và MQTT, nếu không kết nối được thì sẽ tự động bật webserver Như đã giải thích phía trên, việc thể hiện công suất chỉ có thể hiển thị trên giao diện Home Assistant nên không kết nối được thì thiết bị hoạt động cũng vô tác
• Task 2: Đọc giá trị ADC điện áp và dòng điện lưu vào queue
Buộc ngừng toàn bộ Task Đọc ADC dòng điện và điện áp
Cho phép chạy toàn bộ Task
Kiểm tra giá trị ADC đọc được
Kiểm tra giá trị ADC của điện áp và dòng điện có phải giá trị max không
Cấu trúc Queue bao gồm giá trị ADC đọc được, thời điểm đọc được (tính theo ms)
Hình 4-9 Lưu đồ giải thuật cho bộ đo công suất (task 2)
Task 2 được mở đầu bằng việc buộc ngừng các task khác do đây là task có sử dụng việc đo theo thời gian, nếu để các task khác chạy trong trường hợp này sẽ có thể có một tỉ lệ sai sót Sau khi đọc xong thì task 2 cấp lại quyền chạy cho các task còn lại, bước cuối cùng là kiểm tra giá trị đọc được của task 2 có phải là giá trị max của dòng điện và điện áp hay không Luận văn sử dụng thuật toán so sánh giá trị đọc trước đó và giá trị sau này để xem hướng đi của tín hiệu hình sin là cạnh lên hay cạnh xuống, khi tín hiệu đi từ cạnh lên chuyển qua cạnh xuống thì đó là nơi tín hiệu đạt max Nếu đúng là giá trị max của dòng điện và điện áp thì giá trị này kèm thời gian đọc được sẽ được lưu vào 2 queue tương ứng với dòng điện và điện áp.
• Task 3: Tính toán công suất
Queue dòng điện, điện áp đầy
Buộc ngừng task 1 Đọc giá trị 2 queue đã lưu
Kiểm tra giá trị ADC đọc được
Chuyển đổi giá trị đọc được về mức điện áp cần đo
Tính toán công suất và đẩy vào queue công suất
Kiểm tra xem hai giá trị có gần xấp xỉ nhau không, thời gian đọc giữa hai giá trị cùng thuộc một loại (điện áp hoặc dòng điện) có cách nhau một chu kì xấp xỉ 20ms không?
Cấu trúc Queue công suất bao gồm điện áp(V), dòng điện (A), độ lệch pha (rad), và công suất
Hình 4-10 Lưu đồ giải thuật cho bộ đo công suất (task 3)
Do cài độ dài queue là 2 giá trị nên sau 2 lần đọc dòng điện và điện áp ta sẽ có được 2 giá trị max cùng thời điểm đạt được giá trị đó Task 3 sẽ tiến hành kiểm tra xem cả 2 queque của điện áp và dòng điện đã đầy chưa, nêu đầy rồi thì sẽ sử dụng giá trị 2 lần đạt max này xem khoảng cách chúng có phải xấp xỉ 20ms hay không và chúng có xấp xỉ nhau không, nếu có thì tiến hành lấy trung bình rồi tính ra giá trị điện áp đầu vào và tiến hành tính hệ số công suất rồi tính công suất Các giá trị trung bình tính được bao gồm điện áp, dòng điện, hệ số công suất sẽ được đẩy vào queque công suất để tiến hành publish lên Home Assistant.
• Task 4: Publish điện áp, dòng điện, hệ số công suất và công suất:
Chuyển sang định dạng file JSON
Hình 4-11 Lưu đồ giải thuật cho bộ đo công suất (task 4)
Sau khi queue công suất xuất hiện, task 5 có nhiệm vụ chuyển nó sang định dạng fileJSON để gởi một lượt lên lên Home Assistant Trong file JSON sẽ chứa giá trị điện áp hiệu dụng trung bình, dòng điện hiệu dụng trung bình, hệ số công suất và công suất.
Cấu hình cho phần mềm Home Assistant
Để vi điều khiển có thể liên kết thiết bị điện và biết được công suất của
Assistant. với Home Assistant từ đó điều khiển đóng ngắt các ổ cắm thì cần cấu hình kết nối qua web cho Home
Trong thư mục CONFIG tìm và mở file đến file “configuration.yaml” Đây là file dùng để định nghĩa các đối tượng để điều khiển trong Home Assistant của luận văn.
Hình 4-12 File cấu hình configuration.yaml của Home Assistant
Luận văn điều khiển bao gồm bốn thiết bị trong đó có ba thiết bị điện, một ổ cắm và một bộ đo công suất, tương ứng với hai loại thiết bị trong Home Assistant là switch và sensor Để người dùng tiện sử dụng thì phần code này sẽ có nút tạo trong giao diện webserver, người dùng chỉ cần sao chép và dán vào là được.
Hình 4-13 Nội dung cấu hình cho switch và bộ đo công suất cho Home Assistant
Thiết kế giao diện HTML cho Webserver ESP32
Mục tiêu của nhiệm vụ này là dùng để người dùng có thể nhập các thông tin cần thiết cho thiết bị giúp thiết bị như thông tin kết nối wifi, thông tin kết nối MQTT.
Giao diện cần được đơn giản hóa để người dùng có thể hiểu và thực hiện dễ dàng Đối với thông tin liên quan đến MQTT, luận văn sử dụng các ô nhập dữ liệu topic được cấu trúc theo kiểu: tên phòng/thiết bị điều khiển Lưu đồ giải thuật về cách hoạt động của webserver được trình bày bên dưới Địa chỉ IP mặc định để truy cập vào webserver sẽ là 192.168.4.1
Dưới đây là cách thao tác nhập liệu của Webserver.
Nhập SSID Địa chỉ Broker,
Nhập thông tên đăng nhập và Passwords WiFi tin Broker và passwords broker
Tên bộ thiết bị Save
Nhập thông tin Vị trí đặt thiết bị thiết bị điện Tên thiết bị điện cần tương tác
YES Save NO Tạo Code NO Home
Data đã lưu Xuất code cấu hình cho Home Asisstant
Hình 4-14 Lưu đồ giải thuật cho Webserver
Theo sơ đồ giải thuật trên, giao diện có 3 mục lớn khi bắt đầu truy cập webserver, đó là WIFI, MQTT và EXIT. Đối với mục WIFI, đây là mục để người dùng nhập SSID và passwords của wifi, trong giao diện có hiển thị sẵn các kết nối wifi xung quanh mà vi điều khiển tìm được và hiển thị cả tình trạng sóng của wifi đó (RSSI) Người dùng có thể nhấp vào tên wifi tìm được để chọn wifi cần nhập passwords mà không cần thiết phải gõ lại SSID của wifi đó.
Luận văn không thiết kế thêm chức năng Scan wifi trong quá trình vi điều khiển ở chế độ AP Mode do trong quá trình test thì việc scan khi đang ở chế độ AP (Access Point) mode thì dễ bị timeout và làm reset vi điều khiển. Đối với mục MQTT, mục này được chia làm hai phần Một phần để người dùng nhập
IP, Port, user name và passwords để kết nối với broker cài Home Assistant, một phần để người dùng đặt tên cho thiết bị, vị trí đặt thiết bị và các thiết bị điện sẽ được điều khiển đóng ngắt Tên thiết bị sau khi nhập cũng sẽ được gán là tên của SSID khi vi điều khiển hoạt động webserver sau này.
Do cần phải có đoạn code để kết nối với Home Asisstant nên luận văn có thể thiết kế thêm nút tạo code trong phần MQTT giúp người dùng dễ dàng copy và sử dụng.
Khi vào trong mỗi mục WIFI hay MQTT đều sẽ có nút HOME và SAVE giúp người dùng lưu dữ liệu hoặc đơn giản là thoát ra vào lại để xem dữ liệu được lưu chưa.
Mục EXIT dùng để thoát webserver, sau khi ấn thì vi điều khiển sẽ trở lại trạng thái hoạt động ở chế độ station mode.
KẾT QUẢ THỰC HIỆN
Kết quả thiết kế mạch trên phần mềm Altium
5.1.1 Mạch PCB phía trên của bộ công tắc điện thông minh
Hình 5-1 Kết quả thiết kế mạch PCB phía trên của bộ công tắc điện thông minh
5.1.2 Mạch PCB phía dưới của bộ công tắc điện thông minh
Hình 5-2 Kết quả thiết kế mạch PCB phía dưới của bộ công tắc điện thông minh
5.1.3 Mạch PCB phía trên của bộ đo công suất
Hình 5-3 Kết quả thiết kế mạch PCB phía trên của bộ đo công suất
5.1.4 Mạch PCB phía dưới của bộ đo công suất
Hình 5-4 Kết quả thiết kế mạch PCB phía dưới của bộ đo công suất
Kết quả thiết kế giao diện MQTT cho webserver
Webserver có chức năng chính là dùng để nhập liệu, như đã giải thích ở mục 4.4, giao diện gồm ba mục chính Wifi, MQTT, Exit Nút Home được dùng để quay về giao diện chính
+ Mục Wifi dùng để nhập và lưu các thông số về WiFi (SSID, Passwords) cho thiết bị Khi bước vào giao diện người dùng sẽ nhìn thấy thông số của các kết nối Wifi gần đó (SSID, RSSI), nếu người dùng click vào tên SSID mình muốn cài đặt cho thiết bị thì tên SSID của WiFi đó sẽ được ghi lại ở mục SSID giúp người dùng không cần nhập liệu Tất cả thông tin sẽ không được lưu nếu người dùng nhấn vào nút lưu, sau khi nhấn màn hình sẽ thông báo thông tin đã được lưu
+ Mục MQTT dùng để nhập và lưu các thông số liên quan đến broker (IP, Port, user, passwords) và các thông số liên quan đến đặt tên thiết bị, các tên này sẽ được cấu hình làm topic cho từng thành phần trong thiết bị (theo cú pháp “TOPIC”/”SWITCH”) Người dùng cần nhấn nút
“SAVE” để lưu thông tin sau đó màn hình sẽ chuyển đến trang thông báo thông tin đã được lưu, người dùng cần lưu thông tin trước khi nhấn nút “Creat Code” Nút creat code có tác dụng tạo một đoạn mã code để cấu hình cho Home Assistant, nếu người dùng có bất kì thay đổi nào về tên thì cũng cần phải cập nhật lại file cấu hình cho Home Assistant.
+ Mục EXIT dùng để tắt Webserver và đưa thiết bị trở về trạng thái hoạt động với sự thay đổi của các thông tin đã lưu.
Kết quả mô phỏng mạch đo công suất
5.3.1 Kết quả đo điện áp
Hình 5-6 Kết quả mô phỏng trên proteus cho mạch đo điện áp với đầu vào điện áp 223V Điện áp trải qua ba giai đoạn lớn để nằm trong vùng mà vi điều khiển đọc được
Giai đoạn 1: Bộ khuếch đại vi sai
Giai đoạn 2: Mạch cộng không đảo
Giai đoạn 3: Bộ lọc thông thấp
Giá trị đầu ra tương ứng đầu vào được tính theo công thức
Vậy kết quả mô phỏng là chính xác
Kết quả đo bằng oscilloscope:
Hình 5-7 Kết quả thực tế đo được trên Oscilloscopre cho mạch đo điện áp với đầu vào điện áp 223V
Ta có thể thấy sai số là khá lớn (2.5V với 2.44V), sai số này xảy ra do luận văn sử dụng điện trở tinh chỉnh nên sau một thời gian hoặc do vận chuyển con số chỉnh được bị chạy, ngoài ra giá trị điện áp tham gia vào việc hiệu chỉnh 3.3V có được từ IC ổn áp nhưng theo luận văn đo thì giá trị này khá to (cụ thể 3.3V thì đo được 3.36V) dẫn đến sai số.
5.3.2 Kết quả đo dòng điện
Hình 5-8 Kết quả mô phỏng trên proteus cho mạch đo dòng điện với dòng điện hiệu dụng 10A
Giá trị điện áp đầu ra với đầu dòng điện i được tính theo công thức:
Vậy giá trị mô phỏng được là chính xác Luận văn không trình bày giá trị thực đo được tại thời điểm đang viết báo cáo này do IC đo dòng điện của luận văn vừa bị hỏng Đến khi phản biện và bảo vệ luận văn sẽ trình bày sau.
Kết quả điều khiển bộ công tắc điện trên Home Asisstant
Các thiết bị điện đều được kết nối và có thể điều khiển, độ trễ khá thấp Tuy nhiên vẫn có một vài trường hợp không được cập nhật do chương trình luận văn viết chưa tốt.