Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam
Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam
Anonim
Image
Image
Namoyish
Namoyish

Bu video "ko'p" haqida. Biz ko'p vazifali, ko'p yadroli va ko'p mijozli bilan shug'ullanamiz. Biroz oldin men ikkita ESP bilan masofadan boshqarish pultini qildim: mijoz va kirish nuqtasi. Shunga asoslanib, bugun biz ko'p mijozli serverni o'rnatamiz. Bu shuni anglatadiki, bizda bitta ESPga ulangan bir nechta mijozlar bo'ladi.

Shunday qilib, bugungi dars ESP32 -da server yaratish, yangi mijozlarni qo'shish va so'rovlarni boshqa yadroda ishlashni o'z ichiga oladi. Mijozlar pinlarning holati o'zgarishi haqida ma'lumot yuborishadi va server bu holat o'zgarishlarini takrorlaydi.

1 -qadam: Namoyish

2 -qadam: Serverni o'rnatish

O'rnatish serveri
O'rnatish serveri

3 -qadam: mijozlarni yig'ish

Mijozlar yig'ilishi
Mijozlar yig'ilishi

4 -qadam: oqim - server

Oqim - server
Oqim - server

5 -qadam: oqim - mijoz

Oqim - mijoz
Oqim - mijoz

6 -qadam: Client.ino

Deklaratsiyalar va o'zgaruvchilar

#include // Dados da rede // Deve ser gigual no Server #SSID "ESP32Server" ni belgilang #PASSWORD "87654321" #SERVER_PORT 5000 -ni aniqlang // WiFiClient mijozining vazifasi; // Strukturani belgilash kerakmi? int holati; } Pin; // Maqolani aniqlang #PIN_COUNT 2 ni belgilang // Array comos pinos ta'riflari // Yo'q, hech qanday ma'lumot yo'q, bu 21 -sonli 19 -sonli pin pinlari [PIN_COUNT] = { {.number = 21}, {.number = 19}};

Sozlash

void setup () {Serial.begin (115200); // Client.setTimeout (5000) bilan bog'liq vaqtni hisoblash. // Wi -Fi ulanishini sozlash yoki serverni sozlashWiFi (); connectClient (); uchun (int i = 0; i

WiFi -ni sozlash

void setupWiFi () {Serial.print ("Ulanish" + String (SSID)); // ESP WiFi.begin (SSID, PASSWORD) dan foydalangan holda Wi -Fi tarmog'ini qayta ishlash; // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); kechikish (500); } // WiFi Serial.println () ni tanlang; Serial.println ("Ulangan!"); }

ConnectClient

void connectClient () {Serial.println ("Mijoz ulanmoqda"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT))) {Serial.print ("."); kechikish (500); } // Serial.println () serverini tanlang. Serial.println ("Mijoz ulandi!"); }

Loop

void loop () {// Agar siz Wi -Fi tarmog'ini ishlatmasangiz, unda (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}

Handle Connection

void handleConnection (void* pvParameters) {// MUHIM: Noutbukning oxirgi nuqtasi, vaqtni uzluksiz hisoblashda (haqiqiy),) {ulanishClient (); } // Para -pino, verificamos seudou o estado. (Int i = 0; i

hasPinStatusChanged

// Muvaffaqiyatli ishlarni bajarishga ruxsat berish // "to'g'ri" ni tanlashda "noto'g'ri", chunki bu "mantiqiy" hasPinStatusChanged (int i) {// Aniqlanishicha, pinStatus = digitalRead (pins) .sonli); // Se o estado do pino for diferente if (pins . Status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; haqiqatga qaytish; } // Savol -javob: "Qayta tiklash noto'g'ri"; }

sendPinStatus

// SendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)) qatorini o'chirib qo'yish uchun serverni ishga tushirish kerak; mijoz.flush (); }

7 -qadam: Server.ino

Deklaratsiyalar va o'zgaruvchilar

#include #include // Dados da rede // Mijozlarsiz ishlash #aniqlang SSID "ESP32Server" #parolni aniqlang "87654321" #SERVER_PORT 5000ni aniqlang // "SERVER_PORT" WiFiServer serverining serveri (SERVER_PORT); // Vektorli mijozlar mijozlarning talablariga muvofiq, stect:: vektorli mijozlar; // Strukturani belgilash kerakmi? int holati; } Pin;

Sozlash

void setup () {Serial.begin (115200); // Wi -Fi -ni sozlash yoki serverni sozlashWiFi () ni ishlating; server.begin (); xTaskCreatePinnedToCore (handleClients, // funktsiyalarni bajarish "handleClients", // 10000 nomlari, // Tamanho da pilha NULL, // Parametrlar ham (hech qanday noo usamos yo'q) 2, // Tarafa NULL, // O'ylaymanki, siz hech qanday ma'lumotga ega bo'lmaysiz (0); // Noma'lum vazifalar bajarilgan bo'lsa (yadro 0 ga teng)

Wi -Fi -ni sozlash

void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID va ESP WiFi.softAP (SSID, PASSWORD) ma'lumotlarini birlashtirish uchun; }

Loop

void loop () {// Internet -mijozlar uchun WiFiClient mijoz = server.available (); // Se sim colocamos ele hech vektor if (client) {clients.push_back (client); }}

HandleClients

void handleClients (void* pvParameters) {// MUHIM: Noma'lum vaqt oralig'ida, lekin hech bo'lmaganda (haqiqiy) {// mijoz mijozlari uchun vektor yo'q (int i = 0; i)

8 -qadam: fayllar

Fayllarni yuklab oling

PDF

INO