Mục lục:
- Bước 1: Trình diễn
- Bước 2: Gắn máy chủ
- Bước 3: Hội khách hàng
- Bước 4: Luồng - Máy chủ
- Bước 5: Luồng - Khách hàng
- Bước 6: Client.ino
- Bước 7: Server.ino
- Bước 8: Tập tin
Video: Arduino IDE với lõi kép: Điều khiển từ xa: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Video này là tất cả về "đa." Chúng tôi đang xử lý đa nhiệm, đa nhân và đa tâm. Một lúc trước, tôi đã tạo một điều khiển từ xa với hai ESP: một máy khách và một điểm truy cập. Dựa trên điều này, hôm nay chúng tôi sẽ thiết lập một máy chủ đa hướng. Điều này có nghĩa là chúng tôi sẽ có nhiều khách hàng được kết nối trong một ESP duy nhất.
Do đó, bài học ngày hôm nay liên quan đến việc tạo một máy chủ trong ESP32, thêm các máy khách mới trong vòng lặp và xử lý các yêu cầu trong một lõi khác. Khách hàng sẽ gửi thông tin về sự thay đổi trạng thái của các chân và máy chủ sẽ tạo lại những thay đổi trạng thái này.
Bước 1: Trình diễn
Bước 2: Gắn máy chủ
Bước 3: Hội khách hàng
Bước 4: Luồng - Máy chủ
Bước 5: Luồng - Khách hàng
Bước 6: Client.ino
Khai báo và biến
#include // Dados da red // Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objeto que vai fazer a conexão com o server WiFiClient client; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef struct {int number; trạng thái int; }Ghim; // Quantidade de pinos que iremos ler e enviar o status #define PIN_COUNT 2 // Array com os pinos Defdos // No caso vamos trabalhar com os 21 e 19 mas você pode alterar para os pinos que desejar Ghim chân [PIN_COUNT] = { {.number = 21}, {.number = 19}};
Cài đặt
void setup () {Serial.begin (115200); // Tempo para coirar a conexão como perdida client.setTimeout (5000); // Conectamos à red WiFi e conectamos ao server setupWiFi (); connectClient (); for (int i = 0; i
Thiết lập WiFi
void setupWiFi () {Serial.print ("Đang kết nối với" + Chuỗi (SSID)); // Conectamos à red WiFi criado pelo outro ESP WiFi.begin (SSID, MẬT KHẨU); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); chậm trễ (500); } // Se chegou aqui está conectado à red WiFi Serial.println (); Serial.println ("Đã kết nối!"); }
ConnectClient
void connectClient () {Serial.println ("Máy khách đang kết nối"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); chậm trễ (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Máy khách đã kết nối!"); }
Vòng
void loop () {// Se não estiver conectado à red WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
HandleConnection
void xử lýConnection (void * pvParameters) {// QUAN TRỌNG: Một kẻ hủy diệt mã não tarefa, deve ficar presa em um loop infinito while (true) {// Se não estiver conectado com o server, mandamos conectar if (! client.connected ()) {connectClient (); } // Đoạn cada pino, Verificamos se mudou o estado. Se mudou enviamos para o server o novo estado for (int i = 0; i
hasPinStatusChanged
// Verifica se o estado do pino na posição 'i' do array mudou // Retorna 'true' se mudou ou 'false' caso contrário boolean hasPinStatusChanged (int i) {// Faz a leitura do pino int pinStatus = digitalRead (ghim .number); // Se o estado do pino for diferente if (pin .status! = PinStatus) {// Guardamos o novo estado e retornamos truepin .status = pinStatus; trả về true; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server os dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t *) &pin , sizeof (Pin)); client.flush (); }
Bước 7: Server.ino
Khai báo và biến
#include #include // Dados da red // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Máy chủ Criamos um na porta Defda por 'SERVER_PORT' Máy chủ WiFiServer (SERVER_PORT); // Vector onde vamos adicionar os client conforme eles forem conectando std:: vector client; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int number; trạng thái int; }Ghim;
Cài đặt
void setup () {Serial.begin (115200); // Criamos a red WiFi e iniciamos o server setupWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será executive "handleClients", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referenceência para a tarefa que vai ser criada (no caso não Preisamos) 0); // Número do core que será executive a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
void setupWiFi () {// Coloca este ESP como Điểm truy cập WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Vòng
void loop () {// Verifica se um novo client está lềuando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {client.push_back (client); }}
HandleClients
void handleClients (void * pvParameters) {// QUAN TRỌNG: Một kẻ hủy diệt mã não tarefa, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
Bước 8: Tập tin
Tải xuống các tệp
NS
Đề xuất:
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: 5 bước
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: Đây là các hướng dẫn để tạo ô tô được điều khiển từ xa của riêng bạn, được điều khiển bằng bộ điều khiển Xbox 360 không dây
Điều khiển vị trí góc của động cơ bước 28BYJ-48 với cần điều khiển Arduino & tương tự: 3 bước
Điều khiển vị trí góc của Động cơ bước 28BYJ-48 Với Cần điều khiển Arduino & Tương tự: Đây là một sơ đồ điều khiển cho động cơ bước 28BYJ-48 mà tôi đã phát triển để sử dụng như một phần của dự án luận văn năm cuối của mình. Tôi chưa thấy điều này được thực hiện trước đây vì vậy tôi nghĩ rằng tôi sẽ tải lên những gì tôi phát hiện ra. Hy vọng rằng điều này sẽ giúp ích cho người khác o
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Tự làm bộ điều khiển bay điều khiển đa hệ điều khiển Arduino: 7 bước (có hình ảnh)
Tự làm bộ điều khiển máy bay đa năng điều khiển Arduino: Dự án này là tạo ra một bảng logic máy bay không người lái đa năng linh hoạt nhưng tùy chỉnh dựa trên Arduino và Multiwii
Điều khiển các thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) với Màn hình nhiệt độ và độ ẩm: 9 bước
Điều khiển thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) Có Hiển thị nhiệt độ và độ ẩm: xin chào, tôi là Abhay và đây là blog đầu tiên của tôi về Các thiết bị điện và hôm nay tôi sẽ hướng dẫn bạn cách điều khiển các thiết bị điện bằng điều khiển từ xa bằng cách xây dựng cái này dự án đơn giản. cảm ơn atl lab đã hỗ trợ và cung cấp tài liệu