Obsah:
- Krok 1: Ukázka
- Krok 2: Připojení serveru
- Krok 3: Sestavení klienta
- Krok 4: Flow - Server
- Krok 5: Flow - klient
- Krok 6: Client.ino
- Krok 7: Server.ino
- Krok 8: Soubory
![Arduino IDE s dvoujádrovým procesorem: Dálkové ovládání: 8 kroků Arduino IDE s dvoujádrovým procesorem: Dálkové ovládání: 8 kroků](https://i.howwhatproduce.com/images/006/image-17056-26-j.webp)
Video: Arduino IDE s dvoujádrovým procesorem: Dálkové ovládání: 8 kroků
![Video: Arduino IDE s dvoujádrovým procesorem: Dálkové ovládání: 8 kroků Video: Arduino IDE s dvoujádrovým procesorem: Dálkové ovládání: 8 kroků](https://i.ytimg.com/vi/HWa-oghRlkE/hqdefault.jpg)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
![Image Image](https://i.howwhatproduce.com/images/006/image-17056-28-j.webp)
![](https://i.ytimg.com/vi/hkkktLZJR4E/hqdefault.jpg)
![Demonstrace Demonstrace](https://i.howwhatproduce.com/images/006/image-17056-29-j.webp)
Toto video je o „více“. Zabýváme se multitaskingem, vícejádry a multiclienty. Před chvílí jsem vytvořil dálkové ovládání se dvěma ESP: klientem a přístupovým bodem. Na základě toho dnes zřídíme více klientský server. To znamená, že v jednom ESP budeme mít připojeno více klientů.
Dnešní lekce tedy zahrnuje vytvoření serveru v ESP32, přidání nových klientů do smyčky a zpracování požadavků v jiném jádru. Klienti odešlou informace o změně stavu svých pinů a server tyto změny stavu reprodukuje.
Krok 1: Ukázka
Krok 2: Připojení serveru
![Montáž serveru Montáž serveru](https://i.howwhatproduce.com/images/006/image-17056-30-j.webp)
Krok 3: Sestavení klienta
![Sestava klienta Sestava klienta](https://i.howwhatproduce.com/images/006/image-17056-31-j.webp)
Krok 4: Flow - Server
![Flow - Server Flow - Server](https://i.howwhatproduce.com/images/006/image-17056-32-j.webp)
Krok 5: Flow - klient
![Flow - klient Flow - klient](https://i.howwhatproduce.com/images/006/image-17056-33-j.webp)
Krok 6: Client.ino
Deklarace a proměnné
#include // Dárky pro další // Vývoj serveru bez serveru #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Objeto que vai fazer a conexão com o server WiFiClient client; // Struct que define os dados que vamos enviar (deve ser igual no server) typedef struct {int number; int stav; }Kolík; // Množství pinos que iremos ler e enviar o status #define PIN_COUNT 2 // Array com os pinos definidos // No caso vamos trabalhar com os 21 e 19 mas você pode alterar para para os pinos que desejar Pin pins [PIN_COUNT] = { {.number = 21}, {.number = 19}};
Založit
neplatné nastavení () {Serial.begin (115200); // Tempo para considerar a conexão como perdida client.setTimeout (5000); // Conectamos à rede WiFi e conectamos ao server serverWiFi (); connectClient (); pro (int i = 0; i
Nastavení WiFi
void setupWiFi () {Serial.print ("Připojování k" + String (SSID)); // Conectamos à rede WiFi criado pelo outro ESP WiFi.begin (SSID, PASSWORD); // Esperamos conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.print ("."); zpoždění (500); } // Se připojit k Wi -Fi připojení Serial.println (); Serial.println („Připojeno!“); }
ConnectClient
void connectClient () {Serial.println ("Připojující se klient"); // Esperamos conectar com o server while (! Client.connect (WiFi.gatewayIP (), SERVER_PORT)) {Serial.print ("."); zpoždění (500); } // Se chegou aqui está conectado com o server Serial.println (); Serial.println („Klient připojen!“); }
Smyčka
void loop () {// Vyhledání připojení k WiFi, připojení mandamos if (WiFi.status ()! = WL_CONNECTED) {setupWiFi (); }}
Rukojeť Připojení
void handleConnection (void* pvParameters) {// DŮLEŽITÉ: Terminál tarefa não pode, deve ficar presa em um loop infinito while (true) {// Se não estiver conectado com o server, mandamos conectar if (! client.connected ()) {connectClient (); } // Para cada pino, verificamos se mudou o estado. Podívejte se na server nebo na nové prostředí pro (int i = 0; i
hasPinStatusChanged
// Verifica se o estado do pino na posição 'i' do array mudou // Retorna 'true' se mudou ou 'false' caso contrário boolean hasPinStatusChanged (int i) {// Faz a leitura do pino int pinStatus = digitalRead (pins .číslo); // Se o estado do pino for differentente if (pins .status! = PinStatus) {// Guardamos o novo estado e retornamos true pins .status = pinStatus; return true; } // Só chegará aqui se o estado não foi alterado // Então retornamos falso return false; }
sendPinStatus
// Envia para o server os dados do pino on posição 'i' do arrayvoid sendPinStatus (int i) {client.write ((uint8_t*) & pins , sizeof (Pin)); client.flush (); }
Krok 7: Server.ino
Deklarace a proměnné
#include #include // Dados da rede // Deve ser igual no Client #define SSID "ESP32Server" #define PASSWORD "87654321" #define SERVER_PORT 5000 // Criamos um server on porta definida por 'SERVER_PORT' WiFiServer server (SERVER_PORT); // Vektorové další klienti doplňují své klienty v souladu s předním připojením std:: vektoroví klienti; // Struct que define os dados que vamos enviar (deve ser igual no client) typedef struct {int number; int stav; }Kolík;
Založit
neplatné nastavení () {Serial.begin (115200); // Criamos a rede WiFi a inicializace nastavení serveruWiFi (); server.begin (); xTaskCreatePinnedToCore (handleClients, // Função que será executada "handleClients", // Nome da tarefa 10000, // Tamanho da pilha NULL, // Parâmetro da tarefa (no caso não usamos) 2, // Prioridade da tarefa NULL, // Caso queria manter uma referência para a tarefa que vai ser criada (no caso não precisamos) 0); // Número do core que será executada a tarefa (usamos o core 0 para o loop ficar livre com o core 1)}
Nastavení Wi -Fi
neplatné nastaveníWiFi () {// Coloca este ESP como Access Point WiFi.mode (WIFI_AP); // SSID e Senha para se připojuje a je ESP WiFi.softAP (SSID, HESLO); }
Smyčka
void loop () {// Verifica se um novo client está tentando se conectar WiFiClient client = server.available (); // Se sim colocamos ele no vector if (client) {clients.push_back (client); }}
RukojeťKlients
void handleClients (void* pvParameters) {// DŮLEŽITÉ: Terminál tarefa não pode, deve ficar presa em um loop infinito while (true) {// Para cada client que temos no vector for (int i = 0; i
Krok 8: Soubory
Stáhněte si soubory
INO
Doporučuje:
Klonujte jakékoli dálkové ovládání pomocí Arduino Nano: 5 kroků
![Klonujte jakékoli dálkové ovládání pomocí Arduino Nano: 5 kroků Klonujte jakékoli dálkové ovládání pomocí Arduino Nano: 5 kroků](https://i.howwhatproduce.com/images/001/image-2365-j.webp)
Klonujte jakékoli dálkové ovládání pomocí Arduino Nano: Klonujte libovolné dálkové ovládání pomocí Arduino Nano
Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)
![Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky) Dálkové ovládání založené na prohlížeči Arduino (Linux): 9 kroků (s obrázky)](https://i.howwhatproduce.com/images/002/image-4365-j.webp)
Dálkové ovládání založené na prohlížeči Arduino (linux): Máme děti. Miluji je na kousky, ale dál zapínají dálkové ovládání pro satelit a televizi, když zapnou dětské kanály. Poté, co se to děje několik let denně, a poté, co mi moje drahá manželka dovolila mít
IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: 6 kroků
![IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: 6 kroků IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: 6 kroků](https://i.howwhatproduce.com/images/012/image-33548-j.webp)
IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: Pokud jste někdy ztratili dálkový ovladač pro váš televizor nebo DVD přehrávač, víte, jak frustrující je chodit k němu, hledat a používat tlačítka na samotném zařízení. Někdy tato tlačítka ani nenabízejí stejné funkce jako dálkové ovládání. Přijmout
Bezdrátové dálkové ovládání pomocí 2,4GHz modulu NRF24L01 s Arduino - Nrf24l01 4kanálový / 6kanálový přijímač vysílače pro Quadcopter - RC vrtulník - RC letadlo využívající Arduino: 5 kroků (s obrázky)
![Bezdrátové dálkové ovládání pomocí 2,4GHz modulu NRF24L01 s Arduino - Nrf24l01 4kanálový / 6kanálový přijímač vysílače pro Quadcopter - RC vrtulník - RC letadlo využívající Arduino: 5 kroků (s obrázky) Bezdrátové dálkové ovládání pomocí 2,4GHz modulu NRF24L01 s Arduino - Nrf24l01 4kanálový / 6kanálový přijímač vysílače pro Quadcopter - RC vrtulník - RC letadlo využívající Arduino: 5 kroků (s obrázky)](https://i.howwhatproduce.com/images/003/image-7044-j.webp)
Bezdrátové dálkové ovládání pomocí 2,4GHz modulu NRF24L01 s Arduino | Nrf24l01 4kanálový / 6kanálový přijímač vysílače pro Quadcopter | RC vrtulník | RC letadlo pomocí Arduina: Provoz RC auta | Kvadrokoptéra | Dron | RC letadlo | RC loď, vždy potřebujeme přijímač a vysílač, předpokládejme, že pro RC QUADCOPTER potřebujeme 6kanálový vysílač a přijímač a ten typ TX a RX je příliš nákladný, takže si jej vyrobíme na našem
Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 4 kroky
![Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 4 kroky Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 4 kroky](https://i.howwhatproduce.com/images/002/image-5261-42-j.webp)
Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 如何 将 通用 遥控 器 套件 转换 为 玩具 模型 器 使用 的 四 四 通道 遥控 器。 遥控 器 套件 非常 便宜 便宜。 它 采用改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 教程 完成 这个 电子 项目 为 您 您 服务。 玩具 车船 提供 远程 无线 无线。