Mục lục:
- Bước 1: Mẹo cần nhớ
- Bước 2: MCP23016
- Bước 3: Địa chỉ
- Bước 4: Lệnh
- Bước 5: Danh mục
- Bước 6: Cấu trúc giao tiếp
- Bước 7: Chương trình
- Bước 8: MCP23016
- Bước 9: ESP-01
- Bước 10: Gắn ESP01
- Bước 11: Thư viện và biến
- Bước 12: Thiết lập
- Bước 13: Vòng lặp
- Bước 14: ParserData
- Bước 15: Định cấu hình
- Bước 16: WritePinData
- Bước 17: WriteBlockData & SetupWiFi
- Bước 18: Ứng dụng
- Bước 19: Tải xuống
Video: Tự động hóa chi phí thấp với ESP01: 19 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Hôm nay, chúng ta sẽ thảo luận về tự động hóa bằng cách sử dụng ESP01 với 16 rơ le. Đây là một mô hình thiết kế siêu rẻ, nơi bạn có thể nhân các mô-đun và nhận được tối đa 128 rơ le, vì có thể đặt tối đa tám bộ mở rộng cổng trong bộ vi điều khiển này.
Trong mạch của chúng tôi, bạn sẽ có một ứng dụng trên điện thoại thông minh giao tiếp với ESP01. Nó sẽ có một bộ mở rộng với 16 cổng, mỗi cổng được kết nối với một rơ le. Chúng tôi cũng có một nguồn điều chỉnh 3v3. Do đó, chúng tôi sẽ điều khiển mô-đun chuyển tiếp 16 kênh bằng ESP01 thông qua ứng dụng Android mà tôi cung cấp cho bạn.
Bước 1: Mẹo cần nhớ
Điều quan trọng cần lưu ý, các bạn của tôi, rằng tôi đã sử dụng chip này trong một mạch có tên MCP23016. Bạn cũng nên xem video MỞ RỘNG CỦA IOS CHO ESP32, ESP8266 VÀ ARDUINO, trong đó tôi kiểm tra thiết bị và cho thấy rằng nó hoạt động với ba loại bảng này.
Bước 2: MCP23016
Ở đây chúng ta có hình ảnh của MCP23016, là một con chip có 28 chân. Điều quan trọng cần đề cập là còn có kiểu MCP23017, phổ biến hơn và không cần điện trở và tụ điện vì nó có đồng hồ bên trong. Điều này làm cho nó dễ dàng hơn, nhưng cách ghim của nó khác với những gì chúng tôi hiển thị trong video này.
Bước 3: Địa chỉ
Để xác định địa chỉ của MCP23016, chúng tôi sử dụng các chân A0, A1 và A2. Bạn chỉ có thể để chúng ở mức CAO hoặc THẤP để thay đổi địa chỉ.
Địa chỉ sẽ được hình thành như sau:
MCP_Address = 20 + (A2 A1 A0)
Trong đó A2 A1 A0 có thể nhận các giá trị CAO / THẤP, một số nhị phân từ 0 đến 7 có dạng.
Ví dụ:
A2> GND, A1> GND, A0> GND (nghĩa là 000, sau đó 20 + 0 = 20)
Hay nói cách khác, A2> CAO, A1> GND, A0> CAO (nghĩa là 101, sau đó 20 + 5 = 25)
Bước 4: Lệnh
Đây là một bảng với các lệnh để giao tiếp:
Bước 5: Danh mục
GP0 / GP1 - Thanh ghi cổng dữ liệu
Có hai thanh ghi cung cấp quyền truy cập vào hai cổng GPIO.
Việc đọc thanh ghi cung cấp trạng thái của các chân trên cổng đó.
Bit = 1> Bit CAO = 0> THẤP
IODIR0 / IODIR1
Có hai thanh ghi điều khiển chế độ pin. (Đầu vào hoặc Đầu ra)
Bit = 1> INPUT Bit = 0> OUTPUT
Bước 6: Cấu trúc giao tiếp
Ở đây chúng ta nói về địa chỉ của chip và truy cập lệnh và dữ liệu, đây là một loại giao thức cần được thực hiện để gửi thông tin.
Bước 7: Chương trình
Chúng tôi sẽ thực hiện một chương trình bao gồm giao tiếp ESP01 với MCP23016 để có nhiều GPIO hơn để sử dụng. 16 GPIO mới này mà chúng tôi sẽ có sẽ điều khiển mô-đun chuyển tiếp 16 kênh.
Các lệnh sẽ được gửi đến ESP01 thông qua một ứng dụng Android.
Bước 8: MCP23016
Bước 9: ESP-01
Đây là một bảng 16 rơ le.
Bước 10: Gắn ESP01
Bước 11: Thư viện và biến
Chúng tôi sẽ bao gồm các thư viện chịu trách nhiệm về giao tiếp i2c và tạo Access Point và máy chủ web. Chúng tôi xác định địa chỉ của chip và các cổng. Cuối cùng, chúng tôi xác định các biến để lưu trữ giá trị của các chân MCP.
#include // responseável pela comunicação i2c. # include // responseável por criar o accesspoint eo webserver WiFiServer server (80); // webserver para acessarmos através do aplicativo // endereço I2C do MCP23016 #define MCPAddress 0x20 // ENDEREÇORES # ĐĂNG KÝ định nghĩa GP0 0x00 // ĐĂNG KÝ CỔNG DỮ LIỆU 0 #define GP1 0x01 // ĐĂNG KÝ CỔNG DỮ LIỆU 1 #define IODIR0 0x06 // ĐĂNG KÝ HƯỚNG I / O 0 #define IODIR1 0x07 // ĐĂNG KÝ HƯỚNG I / O 1 // Guarda os valores dos pinos làm MCP uint8_t currentValueGP0 = 0; uint8_t currentValueGP1 = 0;
Bước 12: Thiết lập
Chúng tôi khởi tạo ESP01 và cấu hình các cổng. Chúng tôi cũng định cấu hình Điểm truy cập và khởi tạo máy chủ.
void setup () {Serial.begin (9600); chậm trễ (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); configPort (IODIR0, OUTPUT); configPort (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configuração do Access Point server.begin (); // inicializa o server}
Bước 13: Vòng lặp
Ở đây tôi kiểm tra xem có bất kỳ máy khách nào đã được kết nối với máy chủ hay không. Chúng tôi cũng đọc dòng yêu cầu đầu tiên. Chúng tôi trích xuất dữ liệu để thao tác, xác định tiêu đề phản hồi mặc định và gửi phản hồi này đến máy khách.
void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {return; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da recisição / * / MR é o header prefixo para saber se a suggestição é a esperada para os relés * / if (req.indexOf ("/ MR")! = -1) {parserData (req); // a partr da muoição extrai os dados para dictulação} else {Serial.println ("yêu cầu không hợp lệ"); trở lại; } client.flush (); Chuỗi s = "HTTP / 1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente delay (1); } // kết thúc vòng lặp
Bước 14: ParserData
Từ yêu cầu, chúng tôi tìm kiếm dữ liệu liên quan đến các rơ le. Sau đó, chúng tôi gửi dữ liệu đến MCP23016.
// a Partr da muoição busca os dados referencente aos relésvoid parserData (Dữ liệu chuỗi) {uint8_t relay = -1; uint8_t gp = -1; giá trị uint8_t = -1; int index = data.indexOf ("/ MR"); // busca o index do prefixo MR if (data [index + 5] == '/') // / MR01 / 1, onde 0 = GP; 1 = RELE; 1 = ESTADO (bật / tắt) {gp = data [index + 3] - '0'; relay = data [index + 4] - '0'; value = data [index + 6] - '0'; // envia os dados para o MCP23016 // [relay-1] porque o MCP vai de 0-7 os pinos writePinData (relay-1, value, gp); }}
Bước 15: Định cấu hình
Chúng tôi đặt chế độ chân GPIO (GP0 hoặc GP1).
// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // tùy chỉnh um valor de 0-255 indicando o modo das portas (1 = INPUT, 0 = OUTPUT) // ví dụ: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada, o restante como saida void configPort (uint8_t port, uint8_t custom) {if (custom == INPUT) {writeBlockData (port, 0xFF); } else if (custom == OUTPUT) {writeBlockData (port, 0x00); } else {writeBlockData (port, custom); }}
Bước 16: WritePinData
Trong phần này của mã, chúng tôi thay đổi trạng thái của một chân mong muốn và gửi dữ liệu đến MCP.
// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; giá trị = 0/1 (bật / tắt); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; if (gp == GP0) statusGP = currentValueGP0; else statusGP = currentValueGP1; if (value == 0) {statusGP & = ~ (B00000001 << (pin)); // muda o pino para LOW} else if (value == 1) {statusGP | = (B00000001 << (pin)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = statusGP; // envia os dados para o MCP writeBlockData (gp, statusGP); chậm trễ (10); }
Bước 17: WriteBlockData & SetupWiFi
Ở đây, chúng tôi gửi dữ liệu đến MCP23016 thông qua bus i2c. Tiếp theo, chúng tôi định cấu hình các thuộc tính để kích hoạt Điểm truy cập. Cuối cùng, chúng tôi đã định cấu hình WiFi cho chế độ Điểm truy cập và tạo một AP với SSID và MẬT KHẨU.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (cổng); Wire.write (dữ liệu); Wire.endTransmission (); chậm trễ (10); }
// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }
Bước 18: Ứng dụng
Để tạo ứng dụng, chúng tôi sử dụng MIT App Inventor 2, có thể được truy cập thông qua liên kết:
ai2.appinventor.mit.edu/
Ứng dụng này bao gồm hai màn hình chứa tám cặp nút trong mỗi nút, cho biết trạng thái của mỗi rơ le.
Sau đây là một số khối lập trình được sử dụng:
QUAN TRỌNG: Địa chỉ IP mặc định của ESP, như Điểm truy cập là 192.168.4.1
1. Khi màn hình khởi tạo, chúng ta lưu IP vào bộ nhớ và gọi thủ tục khôi phục trạng thái của các nút (ON / OFF).
2. Gọi màn hình khác
1. Khi nhấp vào nút BẬT của một trong các rơ le, chúng ta sẽ thực hiện các thay đổi trực quan trong nút (các khối màu xanh lá cây). WebViewer1. GoToUrl thực hiện yêu cầu cho ESP01 của chúng tôi bằng cách liên kết dữ liệu MR01 / 1 trong URL.
2. Khi nhấp vào nút TẮT của một trong các rơ le, chúng tôi sẽ thực hiện các thay đổi trực quan trong nút (các khối màu xanh lá cây). WebViewer1. GoToUrl thực hiện yêu cầu tới ESP01 của chúng tôi bằng cách liên kết dữ liệu MR01 / 0 trong URL.
Thủ tục này được sử dụng để khôi phục trạng thái của các nút (rơ le), vì khi thay đổi màn hình, nó sẽ quay trở lại mẫu tạo.
Khối màu vàng lặp lại cho mỗi cặp nút.
Bước 19: Tải xuống
Dưới đây là các tệp dự án để tải xuống:
Tệp dự án MIT App Inventor 2 - tải xuống
APK ứng dụng để cài đặt trên Android - Tải xuống
Tải xuống các tệp khác:
NS
Đề xuất:
Tự làm tự động hóa tại nhà chi phí thấp bằng Esp8266: 6 bước
Tự làm tự động hóa nhà chi phí thấp bằng Esp8266: Xin chào tất cả mọi người, Hôm nay trong phần hướng dẫn này, tôi sẽ chỉ cho các bạn cách tôi chuẩn bị tự động hóa ngôi nhà của riêng mình như một bước hướng tới một ngôi nhà thông minh bằng cách sử dụng mô-đun ESP 8266 thường được gọi là gật đầu để không lãng phí thời gian Bắt đầu nào:)
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
'Sup - Chuột dành cho người bị liệt tứ chi - Chi phí thấp và Nguồn mở: 12 bước (có hình ảnh)
'Sup - Chuột dành cho người bị liệt tứ chi - Chi phí thấp và Nguồn mở: Vào mùa xuân năm 2017, gia đình người bạn thân nhất của tôi hỏi tôi có muốn bay đến Denver và giúp họ thực hiện một dự án hay không. Họ có một người bạn, Allen, người bị liệt tứ chi do tai nạn xe đạp leo núi. Felix (bạn của tôi) và tôi đã nhanh chóng gửi lại
ARUPI - Đơn vị ghi âm tự động chi phí thấp / Đơn vị ghi âm tự động (ARU) dành cho các nhà sinh thái học Soundscape: 8 bước (có hình ảnh)
ARUPI - Đơn vị ghi âm tự động chi phí thấp / Đơn vị ghi âm tự động (ARU) dành cho các nhà sinh thái học Soundscape: Tài liệu hướng dẫn này được viết bởi Anthony Turner. Dự án được phát triển với rất nhiều sự trợ giúp từ Shed in School of Computing, University of Kent (Mr Daniel Knox đã giúp đỡ rất nhiều!). Nó sẽ chỉ cho bạn cách tạo một Bản ghi âm thanh tự động U
Dupin - Nguồn ánh sáng đa bước sóng di động với chi phí cực thấp: 11 bước
Dupin - Nguồn sáng đa bước sóng di động với chi phí cực thấp: Được đặt theo tên của Auguste Dupin, được coi là thám tử hư cấu đầu tiên, nguồn sáng di động này chạy bằng bất kỳ bộ sạc điện thoại hoặc bộ nguồn 5V USB nào. Mỗi đầu đèn LED được bật từ tính. Sử dụng đèn led ngôi sao 3W giá rẻ, làm mát chủ động bằng quạt nhỏ,