Мазмуну:

Arduino IDE Dual Core менен: Алыстан башкаруу: 8 кадам
Arduino IDE Dual Core менен: Алыстан башкаруу: 8 кадам

Video: Arduino IDE Dual Core менен: Алыстан башкаруу: 8 кадам

Video: Arduino IDE Dual Core менен: Алыстан башкаруу: 8 кадам
Video: Arduino UNO and Mega Windows 7, 8, 10 USB driver Solved 2024, Ноябрь
Anonim
Image
Image
Демонстрация
Демонстрация

Бул видео "мульти" жөнүндө. Биз көп тапшырмалар менен иштейбиз, көп борборлор жана көп клиенттер. Бир аз мурун мен эки ESP менен алыстан башкарууну жасадым: кардар жана кирүү чекити. Ушуга таянып, бүгүн биз көп квалификациялуу серверди орнотобуз. Бул бизде бир ESPке туташкан бир нече кардарлар болот дегенди билдирет.

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

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

2 -кадам: Server орнотуу

Server орнотуу
Server орнотуу

3 -кадам: Кардарларды чогултуу

Кардар Ассамблеясы
Кардар Ассамблеясы

4 -кадам: Flow - Server

Flow - Server
Flow - Server

5 -кадам: Flow - Кардар

Flow - Кардар
Flow - Кардар

6 -кадам: Client.ino

Декларациялар жана өзгөрмөлөр

#include // Dados da rede // Deve ser giual no Server #SSID "ESP32Server" #deefine PASSWORD "87654321" #define SERVER_PORT 5000 // WWW серверин байланыштырыңыз WiFiClient кардары; // Структураны аныктоо os enosar (dever ser igual no server) typedef struct {int number; int абалы; } Pin; // Статус #аныктоо PIN_COUNT 2 // Тандоо коду // Аракеттердин тизмеси жок 21 же 19 маселени чечүү Pin pins [PIN_COUNT] = { {.number = 21}, {.number = 19}};

Жайгашуу

void setup () {Serial.begin (115200); // Тапшырмаларды аткаруу үчүн client.setTimeout (5000); // Conectamos à rede WiFi жана conectamos au server setupWiFi (); connectClient (); үчүн (int i = 0; i

WiFi орнотуу

void setupWiFi () {Serial.print ("Туташуу" + String (SSID)); // ESP WiFi.begin (SSID, PASSWORD) аркылуу Wi -Fi байланышын калыбына келтирүү; // 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 ("Кардар туташты!"); }

Loop

void loop () {// Wi -Fi жаңыртылганда, эгерде (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}

HandleConnection

void handleConnection (void* pvParameters) {// МААНИЛҮҮ: Жаңы терминал, акыркы мезгилде (чын) { /niche de ficar presa em um loop infinito while {true] {// Se server nào estiver conectado com o server, mandamos conectar if (! client.connected ()) {connectClient (); } // Төмөнкү позицияны карап көрүңүз: Серверди жаңыртуу үчүн (int i = 0; i

hasPinStatusChanged

// Туура эмес позиционуу 'i' массивди жасоо // Туура "туура" тандоо "логикалык" логикалык hasPinStatusChanged (int i) {// Кирүү pinStatus = digitalRead (казыктар) .сана); // Se if est est do do pino for diferente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; чындыкка кайтуу; } // Активдүү эмес нерселер // жалган кайтаруу; }

sendPinStatus

// Envia para server to os os doos do pino na posichão 'i' arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }

7 -кадам: Server.ino

Декларациялар жана өзгөрмөлөр

#include #include // Dados da rede // Deve ser igual no Client #SSID "ESP32Server" аныктоо #PASSWORDту аныктоо "87654321" #define SERVER_PORT 5000 // "SERVER_PORT" WiFiServer Server (SERVER_PORT) үчүн серверди аныктоо // Вектордук кардарлар кардарлардын конкандуу стд:: вектордук кардарларына ылайыкташат; // Түзүлүштү аныктоо os dados que vamos enviar (иштеп чыгуу igual no client) typedef struct {int number; int абалы; } Pin;

Жайгашуу

void setup () {Serial.begin (115200); // Wi -Fi серверлерин калыбына келтирүү же серверди орнотууWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // "HandClients" функциясын аткаруу, // 10000 номери, // Таманьо да пилха NULL, // Параметро да (эч кандай касиети жок) 2, // Тарафа NULL, // Колдонуу шарттары Купуялуулук Мобилдүү Жөндөө Колдонуу шарттары Купуялуулук Мобилдүү Жөндөө // Негизги тизмекти аткарыңыз (негизги 0 пункту 0 циклден ашпашы керек)}

Wi -Fi орнотуу

void setupWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID жана сиз ESP WiFi.softAP (SSID, PASSWORD) менен байланышыңыз; }

Loop

void loop () {// Колдонуучу WiFiClient client = server.available (); // Sim sim colocamos ele no vektor if (client) {clients.push_back (client); }}

HandleClients

void handleClients (void* pvParameters) {// МААНИЛҮҮ: Потер терминалы, акыркы мезгилде (чыныгы) { /para claent клиенттери үчүн вектор жок (int i = 0; i)

8 -кадам: Файлдар

Файлдарды жүктөп алыңыз

PDF

МЕН ЖОК

Сунушталууда: