Cov txheej txheem:
- Kauj Ruam 1: Qhia tawm
- Kauj ruam 2: Mounting Server
- Kauj Ruam 3: Cov Neeg Sib Ntsib
- Kauj ruam 4: Flow - Server
- Kauj Ruam 5: Flow - Client
- Kauj Ruam 6: Client.ino
- Kauj ruam 7: Server.ino
- Kauj ruam 8: Cov ntaub ntawv
Video: Arduino IDE Nrog Dual Core: Kev Tswj Chaw Taws Teeb: 8 Cov Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:27
Daim vis dis aus no yog txhua yam hais txog "ntau yam." Peb tab tom cuam tshuam nrog kev ua haujlwm ntau, ntau lub ntsiab lus, thiab multiclient. Ib pliag dhau los, Kuv tau ua lub chaw taws teeb tswj nrog ob ESPs: tus neeg siv khoom thiab nkag mus siv tau. Raws li qhov no, hnub no peb yuav teeb tsa server ntau yam. Qhov no txhais tau tias peb yuav muaj ntau tus neeg siv khoom sib txuas hauv ib qho ESP.
Yog li, zaj lus qhia niaj hnub no cuam tshuam nrog kev tsim cov server hauv ESP32, ntxiv rau cov neeg siv khoom tshiab hauv lub voj, thiab tuav cov kev thov hauv lwm qhov tseem ceeb. Cov neeg siv khoom yuav xa cov ntaub ntawv hais txog lub xeev hloov pauv ntawm lawv cov pins, thiab cov neeg rau zaub mov yuav rov tsim dua cov kev hloov pauv hauv lub xeev no.
Kauj Ruam 1: Qhia tawm
Kauj ruam 2: Mounting Server
Kauj Ruam 3: Cov Neeg Sib Ntsib
Kauj ruam 4: Flow - Server
Kauj Ruam 5: Flow - Client
Kauj Ruam 6: Client.ino
Kev tshaj tawm thiab kev hloov pauv
#include // Dados da rede // 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 tus thov kev pab; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef struct {int tus xov tooj; int xwm txheej; } Pin; // 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] = { {.number = 21}, {.number = 19}};
Teeb
teeb tsa tsis muaj dab tsi () {Serial.begin (115200); // Tempo para considerar a conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi thiab conectamos ao server setupWiFi (); txuas Client (); rau (int i = 0; i
Teeb WiFi
void setupWiFi () {Serial.print ("Txuas rau" + Txoj hlua (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar thaum (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); ncua (500); } // Se chegou aqui está conectado à rede WiFi Serial.println (); Serial.println ("Txuas nrog!"); }
ConnectClient
void connectClient () {Serial.println ("Txuas cov neeg siv khoom"); // Esperamos conectar com o server thaum (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); ncua (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println ("Client txuas nrog!"); }
Loop
void loop () {// Se não estiver conectado à rede WiFi, mandamos conectar if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Kov Txuas
void handleConnection (void* pvParameters) {// TSEEM CEEB: Tarefa não pode terminar, deve ficar presa em um loop infinito thaum (tseeb) {// Se não estiver conectado com o server, mandamos conectar yog (! client.connected ()) {connectClient (); } // Para cada pino, verificamos se mudou o estado. Se mudou enviamos para o server o novo estado rau (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 [kuv].number); // Se o estado do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos pins tseeb .status = pinStatus; rov muaj tseeb; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso rov dag; }
xaPinStatus
// 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 (); cov. }
Kauj ruam 7: Server.ino
Kev tshaj tawm thiab kev hloov pauv
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server na porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vector onde vamos adicionar os cov neeg siv khoom ua raws eles forem conectando std:: vector cov neeg siv khoom; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int tus xov tooj; int xwm txheej; } Pin;
Teeb
teeb tsa tsis muaj dab tsi () {Serial.begin (115200); // Criamos rede WiFi thiab 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 (tsis muaj 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)}
SetupWiFi
void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se conectarem este ESP WiFi.softAP (SSID, PASSWORD); }
Loop
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient tus thov = server.available (); // Se sim colocamos ele tsis muaj vector yog (tus neeg siv khoom) {cov neeg siv khoom.push_back (tus neeg siv khoom); }}
HandleClients
void handleClients (void* pvParameters) {// TSEEM CEEB: 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
Kauj ruam 8: Cov ntaub ntawv
Rub tawm cov ntawv
INO
Pom zoo:
ESP8266 - Kev Kho Vaj Tsev Nrog Timer thiab Kev Tswj Chaw Taws Teeb Ntawm Is Taws Nem / ESP8266: 7 Cov Kauj Ruam (nrog Duab)
ESP8266 - Dej Irrigation Nrog Timer thiab Kev Tswj Chaw Taws Teeb Ntawm Is Taws Nem / ESP8266: ESP8266 - Kev ywg dej nyob deb tswj thiab nrog sijhawm rau zaub zaub, paj vaj thiab nyom. Nws siv ESP-8266 Circuit Court thiab hydraulic / hluav taws xob valve rau cov chaw tso dej rau dej kom zoo.Qhov Zoo: Tus nqi qis (~ US $ 30,00) nkag tau sai Commands ov
Chaw Ua Si Chaw Taws Teeb Chaw Tswj Hluav Taws Xob Wireless 3D Luam Tsheb: 7 Cov Kauj Ruam (nrog Duab)
Chaw Ua Si Chaw Taws Teeb Chaw Tswj Hluav Taws Xob Wireless 3D Luam Tsheb: Leej twg tsis nyiam twv txiaj? Sib tw thiab Sib ntaus hauv Ntiaj Teb Virtual ntawm Chaw Ua Si thiab Xbox !! Yog li, coj qhov kev lom zem rau lub neej tiag tiag Kuv tau ua Cov Lus Qhia no uas kuv yuav qhia koj li cas koj tuaj yeem siv ib qho Chaw Ua Si Chaw Taws Teeb Chaw Taws Teeb (Wired
Bluetooth Chaw Taws Teeb Tswj Chaw Teeb - Retrofit. Lub Teeb Hloov Tseem Ua Haujlwm, Tsis Muaj Kev Sau Ntawv Ntxiv: 9 Kauj Ruam (nrog Duab)
Bluetooth Chaw Taws Teeb Tswj Kev Teeb - Retrofit. Lub Teeb Hloov Tseem Ua Haujlwm, Tsis Muaj Kev Sau Ntxiv: Hloov Kho Lub Kaum Ib Hlis 25, 2017 - Rau Lub Hwj Chim Siab ntawm qhov haujlwm no uas tuaj yeem tswj tau kilowatts ntawm kev thauj mus los saib Retrofit BLE Kev Tswj rau Kev Siv Lub Hwj Chim Siab - Tsis Xav Tau Ntxiv Ntxiv Qee cov BLE cov laug cam / software sib sau ua ke
Ordinary Cov Khoom Siv Hluav Taws Xob Hloov pauv mus rau Plaub-channel RC Qho Chaw Taws Teeb Chaw Taws Teeb: 4 Cov Kauj Ruam
Ordinary Cov Khoom Siv Hluav Taws Xob hloov pauv mus rau plaub-channel RC Toy Remote Control: 将 将 通用 遥控 器 转换 转换 玩具 玩具 模型 使用 的 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62方法 方法 非常。 只需 准备 一些 瓦楞纸 瓦楞纸 板 板 , , , 然后 然后
Cov Neeg Hlau Tswj Chaw Taws Teeb Siv Arduino thiab TV Chaw Taws Teeb: 11 Kauj Ruam
Kev Tswj Tus Neeg Siv Hluav Taws Xob Siv Arduino thiab TV Chaw Taws Teeb: Lub tsheb tswj chaw taws teeb no tuaj yeem txav mus los siv ib qho kev siv tej thaj chaw deb xws li TV, AC thiab lwm yam. los ntawm kev siv IR tus txais, uas yog lub ntsuas phoo pheej yig heev nyob rau hauv