Mundarija:

Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam
Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam

Video: Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam

Video: Ikki yadroli Arduino IDE: masofadan boshqarish: 8 qadam
Video: ESP32 Tutorial 2 - What's ESP32, Camera Extension Board, unboxing SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
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

Tavsiya: