Innholdsfortegnelse:
- Trinn 1: Demonstrasjon
- Trinn 2: Monteringsserver
- Trinn 3: Klientmontering
- Trinn 4: Flow - Server
- Trinn 5: Flyt - Klient
- Trinn 6: Client.ino
- Trinn 7: Server.ino
- Trinn 8: Filer
Video: Arduino IDE Med Dual Core: Fjernkontroll: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Denne videoen handler om "multi". Vi har å gjøre med multitasking, multicores og multiclients. For en stund siden laget jeg en fjernkontroll med to ESP -er: en klient og et tilgangspunkt. Basert på dette vil vi i dag sette opp en multiklientserver. Dette betyr at vi vil ha flere klienter koblet til i én ESP.
Dermed innebærer leksjonen i dag opprettelse av en server i ESP32, tillegg av nye klienter i løkken og håndtering av forespørslene i en annen kjerne. Klienter vil sende informasjon om tilstandsendringen av pinnene sine, og serveren vil reprodusere disse tilstandsendringene.
Trinn 1: Demonstrasjon
Trinn 2: Monteringsserver
Trinn 3: Klientmontering
Trinn 4: Flow - Server
Trinn 5: Flyt - Klient
Trinn 6: Client.ino
Erklæringer og variabler
#include // Dados da rede // Deve ser giual no Server #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objecto que vai fazer a conexão com o server WiFiClient client; // Strukturen kan definere oss som vi vil vise enviar (deve ser igual no server) typedef struct {int number; int status; } Fest; // 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] = { {.nummer = 21}, {.nummer = 19}};
Oppsett
ugyldig oppsett () {Serial.begin (115200); // Tempo for considerar a conexão como perdida client.setTimeout (5000); // Tilkobling til WiFi og tilkobling til serveroppsettWiFi (); connectClient (); for (int i = 0; i
Sett opp WiFi
void setupWiFi () {Serial.print ("Koble til" + streng (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); forsinkelse (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Tilkoblet!"); }
ConnectClient
void connectClient () {Serial.println ("Koble til klient"); // Esperamos kobler til server mens (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); forsinkelse (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Klienten er tilkoblet!"); }
Løkke
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Håndtak Tilkobling
void handleConnection (void* pvParameters) {// IMPORTANTE: A 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 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 (pins .nummer); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; returner sant; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server us dados do pino na posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Trinn 7: Server.ino
Erklæringer og variabler
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos for server na porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os clients conforme eles forem conectando std:: vector clients; // Struct que definere os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int status; } Fest;
Oppsett
ugyldig oppsett () {Serial.begin (115200); // Criamos and rede WiFi and iniciamos or 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 (no caso não precisamos) 0); // Nummer for kjerne som ser utførelse og tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
SetupWiFi
void setupWiFi () {// Coloca este ESP som Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Løkke
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
HåndtakKlienter
void handleClients (void* pvParameters) {// IMPORTANTE: 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
Trinn 8: Filer
Last ned filene
INO
Anbefalt:
IRduino: Arduino fjernkontroll - etterlign en tapt fjernkontroll: 6 trinn
IRduino: Arduino fjernkontroll - Imitate a Lost Remote: Hvis du noen gang har mistet fjernkontrollen for TV -en eller DVD -spilleren, vet du hvor frustrerende det er å måtte gå til, finne og bruke knappene på selve enheten. Noen ganger tilbyr disse knappene ikke engang den samme funksjonaliteten som fjernkontrollen. Motta
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter - Rc Helikopter - RC -fly som bruker Arduino: 5 trinn (med bilder)
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter | Rc Helikopter | Rc -fly ved bruk av Arduino: For å betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båt, vi trenger alltid en mottaker og sender, anta at for RC QUADCOPTER trenger vi en 6 -kanals sender og mottaker, og den typen TX og RX er for kostbar, så vi lager en på vår
Hvordan kontrollere husholdningsapparater med TV -fjernkontroll med timerfunksjon: 7 trinn (med bilder)
Slik kontrollerer du husholdningsapparater med TV -fjernkontroll med timerfunksjon: Selv etter 25 år med introduksjon til forbrukermarkedet, er infrarød kommunikasjon fortsatt veldig relevant de siste dagene. Enten det er din 55 tommers 4K -TV eller billydsystemet ditt, trenger alt en IR -fjernkontroll for å svare på vår
I2C infrarød fjernkontroll med Arduino: 8 trinn (med bilder)
I2C infrarød fjernkontroll med Arduino: Preamble Denne instruksjonsinformasjonen beskriver hvordan du lager en universell fjernkontroll ved hjelp av I2C for grensesnittet. Hvor rart du sier, ved hjelp av en I2C -slaveenhet? Ja, en I2C -slaveenhet. Dette er fordi den nøyaktige timingen for IR -pakker er ganske krevende og
Slik emulerer du en TV -fjernkontroll eller annet med Arduino Irlib: 3 trinn (med bilder)
Hvordan emulere en TV -fjernkontroll eller annet med Arduino Irlib: Introduksjon Hei og velkommen til min første Instructable.I dag lærer vi, som tittelen sier, å etterligne e TV -fjernkontroll eller noe lignende som fungerer med infrarøde signaler ved hjelp av Arduino (hvilken som helst modell) .Problemet var: Hvordan kan jeg sende koder til en