Мазмұны:

Arduino IDE екі ядролы: қашықтан басқару: 8 қадам
Arduino IDE екі ядролы: қашықтан басқару: 8 қадам

Бейне: Arduino IDE екі ядролы: қашықтан басқару: 8 қадам

Бейне: Arduino IDE екі ядролы: қашықтан басқару: 8 қадам
Бейне: SKR 1.4 - Definitive User Guide 2024, Қараша
Anonim
Image
Image
Демонстрация
Демонстрация

Бұл бейне «мульти» туралы. Біз көп тапсырмалы, көпкортты және мультиклиентпен жұмыс жасаймыз. Біраз уақыт бұрын мен екі ESP көмегімен қашықтан басқару пультін жасадым: клиент пен кіру нүктесі. Осыған сүйене отырып, бүгін біз көп клиентті серверді орнатамыз. Бұл бізде бір ESP -те қосылған бірнеше клиенттер болатынын білдіреді.

Осылайша, бүгінгі сабақ ESP32 серверін құруды, циклге жаңа клиенттерді қосуды және сұраныстарды басқа ядрода өңдеуді қамтиды. Клиенттер түйреуіштердің күйінің өзгеруі туралы ақпаратты жібереді, ал сервер бұл күйді өзгертеді.

1 -қадам: демонстрация

2 -қадам: серверді орнату

Серверді орнату
Серверді орнату

3 -қадам: Клиенттерді жинау

Клиенттер жиналысы
Клиенттер жиналысы

4 -қадам: Flow - Сервер

Ағын - сервер
Ағын - сервер

5 -қадам: Flow - клиент

Ағын - клиент
Ағын - клиент

6 -қадам: Client.ino

Декларациялар мен айнымалылар

#қосу /қосу // Серверсіз жұмыс жасау #SSID «ESP32Server» анықтаңыз #PASSWORD «87654321» анықтаңыз #SERVER_PORT 5000 анықтаңыз // WiFiClient клиентінің кез келген міндетін орындаңыз; // Struct que os os dados que vamos enviar (deve ser igual no server) typedef struct {int number; int күйі; } Түйреу; // Міндетті түрде #PIN_COUNT анықталатын 2 анықтама // Жиынтықтар анықталмады // Тіркелгі жоқ 21 немесе 19 нүкте түйреуіштері [PIN_COUNT] = { {.сана = 21}, {.сандық = 19}};

Орнату

void setup () {Serial.begin (115200); // Client.setTimeout (5000) келешектегі уақытты қарастыру; // Wi -Fi байланысын реттеу және серверді орнатуWiFi (); connectClient (); үшін (int i = 0; i

WiFi орнату

void setupWiFi () {Serial.print («Қосылу» + Жолға (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print («.»); кешіктіру (500); } // WiFi Serial.println () желісін пайдалану қажет; Serial.println («Қосылды!»); }

ConnectClient

void connectClient () {Serial.println («Қосылатын клиент»); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT))) {Serial.print («.»); кешіктіру (500); } // Serial.println () серверін пайдалану қажет; Serial.println («Клиент қосылды!»); }

Цикл

void loop () {// Wi -Fi желісін пайдалану, егер (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}

HandleConnection

void handleConnection (void* pvParameters) {// МАҢЫЗДЫ: кез келген нүктенің соңғы нүктесі, егер ол ақиқат болса ({true)}) {connectClient (); } // Қарапайым пино, верфикамос менуду эстадо. (Int i = 0; i

hasPinStatusChanged

// Деректер тізбегінің позициясын анықтауға болады // «шын» мудау «жалған» деп аталатын логикалық hasPinStatusChanged (int i) {// Қатысу pinStatus = digitalRead (түйреуіштер) .сандар); // Se o estado do pino for diferente if if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; шындықты қайтару; } // Ақпараттың өзгеруі // жалған қайтару; }

sendPinStatus

// SendPinStatus (int i) {client.write ((uint8_t*) & түйреуіштері , sizeof (түйреуіш)) arrayvoid жасаудан бас тартуға мүмкіндік беретін серверге ену; client.flush (); }

7 -қадам: Server.ino

Декларациялар мен айнымалылар

#include #include // Dados da rede // Клиентсіз жұмыс жасаңыз #SSID «ESP32Server» анықтаңыз #PASSWORD «87654321» анықтаңыз #SERVER_PORT 5000 анықтаңыз // «SERVER_PORT» WiFiServer серверінің сервері (SERVER_PORT); // Векторлық операциялар клиенттерге сәйкес келеді stect:: vector клиенттері; // Struct que os os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int күйі; } Түйреу;

Орнату

void setup () {Serial.begin (115200); // Wi -Fi мен серверді орнатуWiFi () параметрлерін өзгерту; server.begin (); xTaskCreatePinnedToCore (handleClients, // функциялары «handleClients», // 10000 номері, // Таманхо да пилха NULL, // параметро да (ешқандай мүмкіндік жоқ) 2, // Tarefa NULL, // Тапсырманы орындауға рұқсат етіңіз (ешқандай шарт жоқ) 0); // Тапсырмалар орындалады (ядро 0 -ге тең болады);

Wi -Fi орнату

void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID және ESP WiFi.softAP (SSID, PASSWORD) байланыстарын анықтау; }

Цикл

void loop () {// Wi -FiClient client = server.available () клиентті тексеру қажет; // Se sim colocamos ele вектор жоқ if (client) {clients.push_back (client); }}

HandleClients

void handleClients (void* pvParameters) {// МАҢЫЗДЫ: кез келген нүктенің соңғы нүктесі, егер ол ақиқат болса, онда (true) {// Para cada клиентінің векторы жоқ (int i = 0; i)

8 -қадам: файлдар

Файлдарды жүктеңіз

PDF

МЕН ЖОҚ

Ұсынылған: