Мазмұны:
- 1 -қадам: демонстрация
- 2 -қадам: серверді орнату
- 3 -қадам: Клиенттерді жинау
- 4 -қадам: Flow - Сервер
- 5 -қадам: Flow - клиент
- 6 -қадам: Client.ino
- 7 -қадам: Server.ino
- 8 -қадам: файлдар
Бейне: Arduino IDE екі ядролы: қашықтан басқару: 8 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл бейне «мульти» туралы. Біз көп тапсырмалы, көпкортты және мультиклиентпен жұмыс жасаймыз. Біраз уақыт бұрын мен екі 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 -қадам: файлдар
Файлдарды жүктеңіз
МЕН ЖОҚ
Ұсынылған:
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару құралына еліктеу: 6 қадам
IRduino: Arduino қашықтан басқару пульті - Жоғалған қашықтан басқару пультіне еліктеу: Егер сіз теледидар немесе DVD ойнатқыш үшін қашықтан басқару пультін жоғалтқан болсаңыз, құрылғының өзіндегі түймелерге жүгіру, табу және пайдалану қаншалықты ауыр болатынын білесіз. Кейде бұл түймелер қашықтан басқару пультімен бірдей функцияны ұсынбайды. Алу
ESP8266 RGB LED STRIP WIFI басқару - NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде - RGB LED STRIP смартфонды басқару: 4 қадам
ESP8266 RGB LED STRIP WIFI басқару | NODEMCU Wifi арқылы басқарылатын жарықдиодты жолақ үшін IR қашықтан басқару құралы ретінде | Смартфонды RGB LED STRIP басқару: Сәлеметсіздер ме, балалар, бұл оқулықта біз nodemcu немесе esp8266 -ды RGB жарықдиодты жолағын басқару үшін инфрақызыл қашықтан басқару құралы ретінде қолдануды үйренеміз, ал Nodemcu смартфон Wi -Fi арқылы басқарылады. Негізінде сіз RGB LED STRIP -ті смартфонмен басқара аласыз
IR қашықтан басқару пультін RF қашықтан басқару пультіне түрлендіру: 9 қадам (суреттермен)
IR қашықтан басқару пультін RF қашықтан басқару пультіне түрлендіріңіз: бүгінгі нұсқаулықта мен сізге микроконтроллерсіз жалпы радиожиілік модульді қалай қолдануға болатынын көрсетемін, бұл бізді кез келген құрылғының IR қашықтан басқару пультін ЖЖ -ге түрлендіре алатын жобаны құруға әкеледі. Қашықтан басқару. Түрлендірудің басты артықшылығы
Arduino мен TV қашықтан басқару пультінің көмегімен қашықтан басқарылатын робот: 11 қадам
Қашықтан басқарылатын робот Arduino мен теледидардың қашықтан басқару пультін қолдана отырып: Бұл қашықтан басқарылатын автокөлікті теледидар, айнымалы ток сияқты кез келген қашықтан басқару пультінің көмегімен жылжытуға болады. инфрақызыл қабылдағыштың көмегімен, бұл өте арзан сенсор
Olympus Evolt E510 қашықтан кабель шығарылымы (2 -нұсқа қашықтан басқару пультінде): 6 қадам (суреттермен)
Olympus Evolt E510 қашықтан кабельді шығару (2 -нұсқа қашықтан басқару пультінде): Кеше мен Olympus E510 үшін қарапайым бір түймелі пультті құрастырдым. Көптеген камераларда екі режимі бар ысырманы босату түймесі бар (суретке түсіру үшін оны басасыз). Егер түйме ақырын басылса, камера автоматты түрде фокусталады және жарықты өлшейді