Inhaltsverzeichnis:
- Schritt 1: Demonstration
- Schritt 2: Server montieren
- Schritt 3: Client-Montage
- Schritt 4: Flow - Server
- Schritt 5: Flow - Client
- Schritt 6: Client.ino
- Schritt 7: Server.ino
- Schritt 8: Dateien
Video: Arduino IDE mit Dual Core: Fernbedienung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:19
In diesem Video dreht sich alles um „Multi“. Wir haben es mit Multitasking, Multicores und Multiclients zu tun. Vor einiger Zeit habe ich eine Fernbedienung mit zwei ESPs gemacht: einem Client und einem Access Point. Darauf aufbauend richten wir heute einen Multiclient-Server ein. Das bedeutet, dass wir mehrere Clients mit einem einzigen ESP verbunden haben.
So umfasst die Lektion heute die Erstellung eines Servers in ESP32, das Hinzufügen neuer Clients in der Schleife und die Bearbeitung der Anfragen in einem anderen Kern. Clients senden Informationen über die Zustandsänderung ihrer Pins und der Server reproduziert diese Zustandsänderungen.
Schritt 1: Demonstration
Schritt 2: Server montieren
Schritt 3: Client-Montage
Schritt 4: Flow - Server
Schritt 5: Flow - Client
Schritt 6: Client.ino
Deklarationen und Variablen
#include //Dados da rede //Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 //Zur Verbindung mit einem Server WiFiClient-Client; //Struct que define os dados que vamos enviar (deve ser igual kein Server) typedef struct{ int number; int-Status; }Stift; //Quantidade de pinos que iremos ler e enviar o status #define PIN_COUNT 2 //Array com os pinos definidos //No caso vamos trabalhar com os 21 e 19 mas você pode alterar para os pinos que desejar Pin pins[PIN_COUNT] = { {. Zahl = 21}, {. Zahl = 19} };
Aufstellen
Void setup () {Serial.begin (115200); //Tempo für eine gleichzeitige Dauer client.setTimeout(5000); //Conectamos à rede WiFi und conectamos ao server setupWiFi(); connectClient(); for(int i=0; i
WLAN einrichten
Void setupWiFi () {Serial.print ("Verbindung mit" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar während (WiFi.status ()! = WL_CONNECTED) { Serial.print ("."); Verzögerung (500); } //Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Verbunden!"); }
ConnectClient
Void connectClient () {Serial.println ("Client wird verbunden"); // Esperamos conectar com o server while (!client.connect(WiFi.gatewayIP(), SERVER_PORT)) {Serial.print("."); Verzögerung (500); } //Se chegou aqui está conectado com oder server Serial.println (); Serial.println ("Client verbunden!"); }
Schleife
Void loop () {//Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status () != WL_CONNECTED) { setupWiFi (); } }
GriffVerbindung
void handleConnection(void* pvParameters){ //WICHTIG: Ein tarefa não pode terminar, deve 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 oder 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 (pins . Zahl); //Se o estado do pino for diferente if(pins.status != pinStatus) { //Guardamos o novo estado and retornamos true pins.status = pinStatus; true zurückgeben; } //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*)&pins, sizeof(Pin)); client.flush(); }
Schritt 7: Server.ino
Deklarationen und Variablen
#include #include //Dados da rede //Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 //Criamos um Server mit definiertem Port für 'SERVER_PORT' WiFiServer server(SERVER_PORT); //Vector onde vamos adicionar osclients konforme Elemente forem conectando std::vector client; //Struct que define os dados que vamos enviar (deve ser igual kein Client) typedef struct{ int number; int-Status; }Stift;
Aufstellen
Void setup () {Serial.begin (115200); //Criamos a rede WiFi e iniciamos o Server setupWiFi (); server.begin(); xTaskCreatePinnedToCore(handleClients, //Função que será executada "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 referência para a tarefa que vai ser criada (keine 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) }
WLAN einrichten
Void setupWiFi () {//Coloca este ESP Como Access Point WiFi.mode (WIFI_AP); //SSID und Senha für die Verbindung mit einem ESP WiFi.softAP (SSID, PASSWORD); }
Schleife
Void Schleife () {//Verifica se um einen neuen Client zu verwenden, der mit einem WiFiClient-Client verbunden ist = server.available (); //Se sim colocamos ele kein Vektor if(client) {clients.push_back(client); } }
HandleClients
void handleClients(void* pvParameters){ //WICHTIG: A tarefa não pode terminar, deve ficar presa em um loop infinito while(true) { //Para cada client que temos no vector for(int i=0; i
Schritt 8: Dateien
Laden Sie die Dateien herunter
INO
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
TV-Fernbedienung wird zur RF-Fernbedienung -- NRF24L01+ Tutorial: 5 Schritte (mit Bildern)
TV-Fernbedienung wird zur RF-Fernbedienung || NRF24L01+ Tutorial: In diesem Projekt zeige ich Ihnen, wie ich den beliebten nRF24L01+ RF IC verwendet habe, um die Helligkeit eines LED-Streifens drahtlos über drei nutzlose Tasten einer TV-Fernbedienung einzustellen. Lass uns anfangen
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: 7 Schritte (mit Bildern)
Schnittstellentastatur mit Arduino. [Einzigartige Methode]: Hallo, und willkommen zu meinem ersten instructable! :) In diesem instructables möchte ich eine fantastische Bibliothek für die Schnittstelle der Tastatur mit Arduino teilen - 'Password Library' einschließlich 'Keypad Library'. Diese Bibliothek enthält die besten Funktionen, die wir wi
So richten Sie die Arduino-IDE ein, um mit den Tinusaur-Boards zu arbeiten: 3 Schritte
So richten Sie die Arduino-IDE für die Arbeit mit den Tinusaur-Boards ein.: Dies ist eine kurze Anleitung, wie Sie die Arduino-IDE für die Arbeit mit den Tinusaur-Boards einrichten . Der einzige Unterschied ist, dass es auf der Liste der Boards als Tinusau erscheint
So halten Sie Ihren Hund davon ab, Ihre Fernbedienung zu kauen – wikiHow
Wie Sie Ihren Hund davon abhalten, Ihre Fernbedienung zu kauen: Haben Sie es satt, dass Ihr Haustier Ihre einzige R&R-Quelle stiehlt, um es in Ihrem Garten oder unter Ihren Decken in Ihrem Bett zerknittert zu finden? Haben Sie es satt, diese verdammte Fernbedienung auf dem Sofa zu verlieren? es leid, mit Ihrem Ehepartner darüber zu streiten, wer es verlassen hat