INHOUDSOPGAWE:
- Stap 1: Demonstrasie
- Stap 2: Monteer bediener
- Stap 3: Kliëntevergadering
- Stap 4: Flow - bediener
- Stap 5: Flow - kliënt
- Stap 6: Client.ino
- Stap 7: Server.ino
- Stap 8: lêers
Video: Arduino IDE met dubbele kern: afstandbeheer: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Hierdie video handel oor 'multi'. Ons het te doen met multitasking, multicores en multiclients. Ek het 'n rukkie gelede 'n afstandbeheer gemaak met twee ESP's: 'n kliënt en 'n toegangspunt. Op grond hiervan sal ons vandag 'n multiclient -bediener opstel. Dit beteken dat ons meer as een kliënt in een ESP verbind.
Die les behels dus vandag die skepping van 'n bediener in ESP32, die toevoeging van nuwe kliënte in die lus en die hantering van die versoeke in 'n ander kern. Kliënte sal inligting stuur oor die toestandverandering van hul penne, en die bediener sal hierdie staatsveranderinge weergee.
Stap 1: Demonstrasie
Stap 2: Monteer bediener
Stap 3: Kliëntevergadering
Stap 4: Flow - bediener
Stap 5: Flow - kliënt
Stap 6: Client.ino
Verklarings en veranderlikes
#include // Dados da rede // Skep geen bediener nie #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objecto que vai fazer a conexão com o server WiFiClient client; // Struktuur wat ons kan definieer as ons 'n enviar (deve ser igual no server) typedef struct {int number; int status; }Speld; // 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] = { {.getal = 21}, {.getal = 19}};
Stel op
ongeldige opstelling () {Serial.begin (115200); // Tempo para considera a conexão como perdida client.setTimeout (5000); // Verbind WiFi en verbind bedieners met die opstel van WiFi (); connectClient (); vir (int i = 0; i
Stel WiFi op
void setupWiFi () {Serial.print ("Koppel aan" + string (SSID)); // Maak toegang tot WiFi deur middel van ESP WiFi.begin (SSID, WAGWOORD); // Esperamos conectar terwyl (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); vertraging (500); } // Ons kan ook 'n WiFi -reeks Serial.println () gebruik; Serial.println ("verbind!"); }
ConnectClient
void connectClient () {Serial.println ("Kliënte verbind"); // Esperamos konektoreer bediener terwyl (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); vertraging (500); } // Sien ook die bediener Serial.println (); Serial.println ("Kliënt gekoppel!"); }
Lus
leegte -lus () {// Ons kan ook 'n WiFi -verbinding aanskakel, of as 'n (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Hanteerverbinding
void handleConnection (void* pvParameters) {// BELANGRIK: 'n Terminale term wat u kan gebruik om 'n infinito -lus te skep, terwyl (waar) {// Ons kan 'n verbinding met 'n bediener, 'n mandamos conectar kry as (! client.connected ()) {connectClient (); } // Para cada pino, verificamos se mudou o estado. Kyk na die bediener wat ons benodig (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 .getal); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; terugkeer waar; } // 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 (); }
Stap 7: Server.ino
Verklarings en veranderlikes
#include #include // Dados da rede // Ontwikkel byna geen kliënt #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Servers to porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vektore en klante kan ook ooreenstem met die volgende vorme: vector -kliënte; // Struktuur wat ons kan definieer as ons 'n enviar (deve ser igual no client) typedef struct {int number; int status; }Speld;
Stel op
ongeldige opstelling () {Serial.begin (115200); // Ons bied toegang tot WiFi en bediener -opstelWiFi (); bediener.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); // Nommer die kern van die funksie (as 'n kern van 0 vir 'n lus om die kern van die reeks 1)}
SetupWiFi
void setupWiFi () {// Coloca este ESP with Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem a este ESP WiFi.softAP (SSID, PASSWORD); }
Lus
void loop () {// Verifiëring van 'n nuwe kliënt kan 'n WiFiClient -kliënt = server.available (); // Sien geen colocamos ele vector as (kliënt) {clients.push_back (kliënt); }}
Handvatselklante
void handleClients (void* pvParameters) {// BELANGRIK: 'n Terminale term wat 'n onbepaalde lus kan skep, terwyl (waar) {// Para cada client que temos no vector for (int i = 0; i
Stap 8: lêers
Laai die lêers af
EK NEE
Aanbeveel:
Motor met afstandbeheer: 3 stappe
Afstandsbedieningsmotor: Vandag (of vanaand, al werk u die beste), maak ons 'n motor met 'n afstandbeheer. Ons gaan oor die proses om die motor te bou, van die gebruik van 'n voorafgemaakte stel om die motor self te maak, tot 'n prototipe van 'n afstandsbediening op die broodbord en dan soldeer
ESP8266 - Tuinbesproeiing met timer en afstandbeheer via internet / ESP8266: 7 stappe (met foto's)
ESP8266 - Tuinbesproeiing met timer en afstandsbediening via internet / ESP8266: ESP8266 - Besproeiing met afstandbeheer en met tydsberekening vir groentetuine, blomtuine en grasperke. Dit maak gebruik van die ESP-8266-kring en 'n hidrouliese / elektriese klep vir besproeiingstoevoer.Voordele: Lae koste (~ US $ 30,00) vinnige toegangsopdragte
Hoe kan u 'n 4dof groot krag robotarm met Arduino en Ps2 afstandbeheer beheer ?: 4 stappe
Hoe kan ek 'n 4dof groot krag robotarm met Arduino en Ps2 afstandbeheer beheer? arduino bord werk ook op 6dof robotarm. end: skryf koop SINONING 'n winkel vir DIY speelgoed
Arduino: Tydsprogramme en afstandbeheer vanaf Android -app: 7 stappe (met foto's)
Arduino: Tydsprogramme en afstandbeheer vanaf Android -app: ek het altyd gewonder wat gebeur met al die Arduino -borde wat mense nie nodig het nadat hulle hul oulike projekte voltooi het nie. Die waarheid is 'n bietjie ontstellend: niks. Ek het dit by my gesin se huis waargeneem, waar my pa probeer het om sy eie huis te bou
Koppel u RevPi -kern aan Ubidots: 5 stappe
Koppel u RevPi-kern aan Ubidots: Revolution Pi is 'n oop, modulêre en duursame industriële rekenaar wat gebaseer is op die gevestigde Raspberry Pi, terwyl dit aan die EN61131-2-standaard voldoen. Toegerus met die Raspberry Pi Compute Module, kan die RevPi Core -basis naatloos uitgebrei word met behulp van