![Arduino IDE z dwurdzeniowym procesorem: zdalne sterowanie: 8 kroków Arduino IDE z dwurdzeniowym procesorem: zdalne sterowanie: 8 kroków](https://i.howwhatproduce.com/images/006/image-17056-26-j.webp)
Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
![Image Image](https://i.howwhatproduce.com/images/006/image-17056-28-j.webp)
![](https://i.ytimg.com/vi/hkkktLZJR4E/hqdefault.jpg)
![Demonstracja Demonstracja](https://i.howwhatproduce.com/images/006/image-17056-29-j.webp)
Ten film dotyczy „multi”. Mamy do czynienia z wielozadaniowością, wielordzeniami i multiklientami. Jakiś czas temu zrobiłem pilota z dwoma ESP: klientem i punktem dostępowym. Na tej podstawie dzisiaj skonfigurujemy serwer multiclient. Oznacza to, że będziemy mieć wielu klientów połączonych w jednym ESP.
Tak więc dzisiejsza lekcja dotyczy tworzenia serwera w ESP32, dodawania nowych klientów w pętli i obsługi żądań w innym rdzeniu. Klienci będą wysyłać informacje o zmianie stanu swoich pinów, a serwer odtworzy te zmiany stanu.
Krok 1: Demonstracja
Krok 2: Montaż serwera
![Montowanie serwera Montowanie serwera](https://i.howwhatproduce.com/images/006/image-17056-30-j.webp)
Krok 3: Montaż klienta
![Montaż klienta Montaż klienta](https://i.howwhatproduce.com/images/006/image-17056-31-j.webp)
Krok 4: Przepływ - serwer
![Przepływ - serwer Przepływ - serwer](https://i.howwhatproduce.com/images/006/image-17056-32-j.webp)
Krok 5: Przepływ - Klient
![Przepływ - Klient Przepływ - Klient](https://i.howwhatproduce.com/images/006/image-17056-33-j.webp)
Krok 6: Client.ino
Deklaracje i zmienne
#include //Dados da rede //Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 //Objekt que vai fazer a conexão com o server klient WiFiClient; //Struct que zdefiniuj os dados que vamos enviar (utwórz ser igual bez serwera) typedef struct{ int number; stan int; }Szpilka; //Ilość pinów que iremos ler e enviar o status #define PIN_COUNT 2 //Tablica z zdefiniowanymi pinami //Nie ma żadnych ograniczeń co do liczby 21 i 19 masowych zmian przy pinach pinów que desejar Piny [PIN_COUNT] = { {.liczba = 21}, {.liczba = 19} };
Ustawiać
void setup(){ Serial.begin(115200); //Tempo rozważenia połączenia z klientem.setTimeout(5000); //Połącz z rede Wi-Fi i połącz z konfiguracją serweraWiFi(); connectClient(); for(int i=0; i
Skonfiguruj Wi-Fi
void setupWiFi(){ Serial.print("Łączenie z " + String(SSID)); //Połącz się z przebudową Wi-Fi, łącząc się z ESP WiFi.begin (SSID, HASŁO); //Esperamos conectar while (WiFi.status() != WL_CONNECTED) { Serial.print("."); opóźnienie (500); } //Połącz się z siecią WiFi Serial.println(); Serial.println("Połączony!"); }
ConnectClient
void connectClient(){ Serial.println("Łączenie klienta"); //Esperamos conectar com o server while (!client.connect(WiFi.gatewayIP(), SERVER_PORT)) { Serial.print("."); opóźnienie (500); } //Połącz się z serwerem Serial.println(); Serial.println("Klient podłączony!"); }
Pętla
void loop(){ //S não estiver conectado à rede WiFi, mandamos conectar if(WiFi.status() != WL_CONNECTED) { setupWiFi(); } }
Uchwyt Połączenie
void handleConnection(void* pvParameters){ //WAŻNE: Tarefa não pode terminar, ve ficar presa em um loop infinito while(true) { //Se não estiver conectado com o server, mandamos conectar if(!client.connected()) { connectClient(); } //Para cada pino, verificamos se mudou o estado. Se mudou enviamos para o server o novo estado for(int i=0; i
hasPinStatusChanged
//Sprawdź, czy ustaw kod w pozycji 'i' do tablicy mudou//Retorna 'true' se mudou lub 'false' caso contrário boolean hasPinStatusChanged(int i) { //Faz a leitura do pino int pinStatus = digitalRead(pins .liczba); //Siedź o stanie zrobić pino dla różnych if(pins.status != pinStatus) { //Guardamos o nowym stanie i retornamos true pins.status = pinStatus; zwróć prawdę; } //Só chegará aqui se o estado não foi alterado //Então retornamos falso return false; }
sendPinStatus
//Envia dla serwera os dados do pino na posição 'i' wykonaj arrayvoid sendPinStatus(int i) { client.write((uint8_t*)&pins, sizeof(Pin)); klient.flush(); }
Krok 7: Server.ino
Deklaracje i zmienne
#include #include //Dados da rede //Utwórz ser igual bez klienta #define SSID "ESP32Server" #define HASŁO "87654321" #define SERVER_PORT 5000 //Criamos um server na określonym porcie przez 'SERVER_PORT'WiFiServer server (SERVER_PORT); //Vector onde vamos adicionar os client conforme eles forem conectando std::vector customers; //Struct que zdefiniuj os dados que vamos enviar (nie twórz ser igual bez klienta) typedef struct{ int number; stan int; }Szpilka;
Ustawiać
void setup(){ Serial.begin(115200); //Criamos a rede WiFi e iniciamos o server setupWiFi(); serwer.początek(); xTaskCreatePinnedToCore(handleClients, //Função que será executada "handleClients", //Nome da tarefa 10000, //Tamanho da pilha NULL, //Parametro da tarefa (bez caso não usamos) 2, //Prioridade da tarefa Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); //Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1) }
KonfiguracjaWiFi
void setupWiFi(){ //Koloka est ESP como Access Point WiFi.mode(WIFI_AP); //SSID i Senha, aby połączyć się z ESP WiFi.softAP(SSID, PASSWORD); }
Pętla
void loop(){ //Zweryfikuj nowy klient jest połączony z klientem WiFiClient = server.available(); //Se sim colocamos ele bez wektora if(client) { customers.push_back(client); } }
Obsługa klientów
void handleClients(void* pvParameters){ //WAŻNE: Tarefa não pode terminar, twórz ficar presa em um loop infinito while(true) { //Para cada client que temos no vector for(int i=0; i
Krok 8: Pliki
Pobierz pliki
JA NIE
Zalecana:
Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)
![Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami) Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)](https://i.howwhatproduce.com/images/002/image-4365-j.webp)
Zdalne sterowanie oparte na przeglądarce Arduino (linux): Mamy dzieci. Kocham je do kawałków, ale gdy włączają kanały dla dzieci, ukrywają pilota do satelity i telewizora. Po tym wydarzeniu codziennie przez kilka lat i po tym, jak moja kochana żona pozwoliła mi mieć
Arduino: Programy czasowe i zdalne sterowanie z aplikacji na Androida: 7 kroków (ze zdjęciami)
![Arduino: Programy czasowe i zdalne sterowanie z aplikacji na Androida: 7 kroków (ze zdjęciami) Arduino: Programy czasowe i zdalne sterowanie z aplikacji na Androida: 7 kroków (ze zdjęciami)](https://i.howwhatproduce.com/images/005/image-14702-j.webp)
Arduino: Programy czasowe i zdalne sterowanie z aplikacji na Androida: Zawsze zastanawiałem się, co dzieje się z tymi wszystkimi płytkami Arduino, których ludzie nie potrzebują po zakończeniu swoich fajnych projektów. Prawda jest nieco denerwująca: nic. Zaobserwowałem to w domu mojej rodziny, gdzie mój ojciec próbował zbudować własny dom
Zdalne sterowanie i nadzór zdjęć przez MQTT: 8 kroków
![Zdalne sterowanie i nadzór zdjęć przez MQTT: 8 kroków Zdalne sterowanie i nadzór zdjęć przez MQTT: 8 kroków](https://i.howwhatproduce.com/images/004/image-9676-6-j.webp)
Zdalne sterowanie i nadzór nad MQTT: Witam.Dzisiaj chciałbym opowiedzieć o tym, jak zrobić system zdalnego sterowania i monitoringu, który może służyć np. do sterowania bramami garażowymi, oświetleniem, ogrzewaniem, regulacją ciśnienia, temperaturą i wieloma innymi parametry. Ale główną cechą tego
Zdalne sterowanie robotem Arduino: 7 kroków
![Zdalne sterowanie robotem Arduino: 7 kroków Zdalne sterowanie robotem Arduino: 7 kroków](https://i.howwhatproduce.com/images/001/image-1064-100-j.webp)
Zdalne sterowanie robotem Arduino: W tej instrukcji zamierzam użyć osłony silnika Adafruit dla Arduino V2 wraz z anteną nRF24L01, aby stworzyć zdalnie sterowanego robota dalekiego zasięgu. Używam starego Adafruit Arduino 101 CurrieBot z Arduino Uno zamiast
Zdalne sterowanie cokolwiek za tanio!: 8 kroków
![Zdalne sterowanie cokolwiek za tanio!: 8 kroków Zdalne sterowanie cokolwiek za tanio!: 8 kroków](https://i.howwhatproduce.com/images/002/image-5054-69-j.webp)
Zdalne sterowanie cokolwiek… za tanio!: Używane samochody zdalnie sterowane (RC) (łodzie, poduszkowce, samoloty i quadkoptery też!) są często łatwe do zdobycia. Jeśli nie jest całkowicie darmowy, możesz przynajmniej dostać jeden tani. Znajdź sobie samochód RC i jego kontroler. Wiele dzieci ma przynajmniej jedną zbierającą kurz