Obsah:
- Krok 1: Použité zdroje
- Krok 2: NodeMCU ESP32S - pinout
- Krok 3: Periférne zariadenia ESP32
- Krok 4: Ovládanie servomotora PWM
- Krok 5: Analógové snímanie
- Krok 6: Okruh - server a klient
- Krok 7: Zdrojový kód prístupového bodu a servera
- Krok 8: Zdrojový kód zákazníka
- Krok 9: Súbory
![Kamera PANTILT s ESP32: 9 krokov Kamera PANTILT s ESP32: 9 krokov](https://i.howwhatproduce.com/images/006/image-17664-18-j.webp)
Video: Kamera PANTILT s ESP32: 9 krokov
![Video: Kamera PANTILT s ESP32: 9 krokov Video: Kamera PANTILT s ESP32: 9 krokov](https://i.ytimg.com/vi/DqHZ1Fyd10o/hqdefault.jpg)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
![Image Image](https://i.howwhatproduce.com/images/006/image-17664-20-j.webp)
![](https://i.ytimg.com/vi/2Ase7awrUAc/hqdefault.jpg)
![Kamera PANTILT s ESP32 Kamera PANTILT s ESP32](https://i.howwhatproduce.com/images/006/image-17664-21-j.webp)
Dnes predstavím PAN TILT, čo je zariadenie, ktoré umožňuje pohyb kamery v smeroch hore, dole a do strán. Toto zariadenie som sám vyrobil prostredníctvom 3D tlačených dielov pomocou dvoch serv a ESP32, ktoré umožňuje ovládať tento mechanizmus prostredníctvom WiFi. Potom vykonajme merania pomocou AD kanálov ESP32, ako aj analógovej operácie pomocou ovládača LED_PWM. Aplikujeme tiež kontrolu nad pripojením TCP / IP.
Na videu vidíte, že mám ESP32 čítajúci hodnoty dvoch potenciometrov, ktoré sú odoslané (cez WiFi) do iného ESP32. Je spojený s dvoma servomotormi. Fotoaparát sa pohybuje (a je pripevnený k PAN TILT) v smere nahor, nadol alebo do strán, v závislosti od ovládacieho prvku, ktorý vykonáte v hrncoch.
Odkaz na 3D tlačový návrh PAN TILT nájdete tu:
Krok 1: Použité zdroje
![Použité zdroje Použité zdroje](https://i.howwhatproduce.com/images/006/image-17664-22-j.webp)
• Viacnásobné prepojky na pripojenie
• Dva uzlové MCU ESP32
• Dva káble USB pre ESP32
• Webová kamera na ovládanie
• Dva ovládacie hrnce
• Protoboard
• Zdroj pre serva
Krok 2: NodeMCU ESP32S - pinout
![NodeMCU ESP32S - vývod NodeMCU ESP32S - vývod](https://i.howwhatproduce.com/images/006/image-17664-23-j.webp)
Krok 3: Periférne zariadenia ESP32
![Periférne zariadenia ESP32 Periférne zariadenia ESP32](https://i.howwhatproduce.com/images/006/image-17664-24-j.webp)
Periférne zariadenia PWM ESP32 má dve periférne zariadenia schopné generovať signály PWM. Patria sem motor modulátora šírky impulzu (MCPWM) určený na ovládanie výkonu a motora a LED_PWM vyvinutý na ovládanie intenzity LED. Ale dajú sa použiť aj genericky.
Použijeme LED_PWM, ktorý môže generovať 16 nezávislých kanálov PWM s konfigurovateľnými periódami a pracovnými cyklami. Má rozlíšenie až 16 bitov.
Krok 4: Ovládanie servomotora PWM
![Ovládanie servomotora PWM Ovládanie servomotora PWM](https://i.howwhatproduce.com/images/006/image-17664-25-j.webp)
Ovládanie servomotora sa vykonáva nastavením modulácie šírky impulzu štvorca so špecifickou frekvenciou.
Pre použité servo (ako aj pre väčšinu) je frekvencia 50 Hz. Uhlová poloha serva tiež určuje šírku impulzu s dĺžkou 1 až 2 ms.
Kanál 0 LED_PWM nasmerujeme na GPIO13 a kanál 1 na GPIO12, pričom pomocou týchto informácií vykonáme riadenie.
Krok 5: Analógové snímanie
![Analógové snímanie Analógové snímanie](https://i.howwhatproduce.com/images/006/image-17664-26-j.webp)
Periférne zariadenie na konverziu analógového signálu na digitálny
ESP32 má analógovo-digitálne prevodníky, ktoré je možné použiť až v 18 kanáloch, ale iba v analógových GPIO.
Privedené napätie nesmie prekročiť rozsah 0 až 3V.
Vykonaná konverzia neudržiava konštantnú chybu pre všetky vzorkované napätia a to všetko závisí od nakonfigurovaného rozsahu. Pre rozsah 150 mV pri 2,450 V je pre kritickejšie aplikácie potrebná kontrola správania.
Na zachytenie použijeme ako delič napätia potenciometer 10k. Zachytávanie sa bude vykonávať v kanáloch ADC0 a ADC3, prístupných pomocou GPIO36 a GPIO39.
Krok 6: Okruh - server a klient
![Okruh - server a klient Okruh - server a klient](https://i.howwhatproduce.com/images/006/image-17664-27-j.webp)
Krok 7: Zdrojový kód prístupového bodu a servera
Vyhlásenia
Zahŕňam knižnicu WiFi a definujem niektoré premenné.
#include // inclusão da biblioteca WiFi const int freq = 50; // frekvencia do PWM const int canal_A = 0; // hlavný kanál na ovládanie LED_PWM const int canal_B = 1; // segundo kanál do ovládača LED_PWM const int resolucao = 12; // Resolução usado no controlador LED_PWM const int pin_Atuacao_A = 13; // Pino para onde o canal 0 será presmerovanie const int pin_Atuacao_B = 12; // Pino paraboly kanála 1 presmerovania konštantného char* ssid = "ESP32ap"; // konštantná SSID do WiFi do prístupového bodu ESP32 const char* heslo = "12345678"; // senha para confirmmação de conexão no ponto de acesso const int port = 2; // porta na qual o servidor receberá as conexões int ciclo_A = 0; // variável que receberá o ciclo de atuação do canal A int ciclo_B = 0; // variável que receberá o ciclo de atuação do canal A WiFiServer server (port); // deklaração do objektu servidor IPAddress myIP; // deklarujte svoju IP
Nastaviť ()
Tu definujeme výstupné kolíky. Kanály nastavíme na požadovanú frekvenciu a nastavíme hodnotu PWM.
neplatné nastavenie () {pinMode (pin_Atuacao_A, VÝSTUP); // definindo o pino de atuação A como saída pinMode (pin_Atuacao_B, OUTPUT); // definindo o pino de atuação B como saída ledcSetup (canal_A, freq, resolucao); // Úroveň kanála 0 Hz s frekvenciou 50 Hz a rozlíšením 12 bitov ledcSetup (kanál_B, frekvencia, rozlíšenie); // Úroveň kanála 1 s frekvenciou 50 Hz a rozlíšením 12 bitov ledcAttachPin (pin_Atuacao_A, canal_A); // redirecionando o canal 0 para o pino 13 ledcAttachPin (pin_Atuacao_B, canal_B); // redirecionando o canal 1 para o pino 12 ledcWrite (canal_A, ciclo_A); // definindo o valor do PWM para 0 ledcWrite (canal_B, ciclo_B); // definindo o valor do PWM para 0
Spustili sme sériový prístupový bod s SSID ESP32ap a heslom. Potom získame IP servera a spustíme server.
Serial.begin (115200); // iniciando a Serial Serial.println ("Iniciando ponto de acesso:" + String (ssid)); // mensagem WiFi.softAP (ssid, heslo); // inicializácia prechodu na SSID ESP32ap e senha 12345678 Serial.println ("Obtendo IP"); // mensagem myIP = WiFi.softAPIP (); // obtendo o IP do servidor (como não foi configurado deverá ser o padrão de fábrica) Serial.println ("IP:" + WiFi.localIP ()); // mensagem Serial.println ("Iniciando servidor em:" + String (port)); // mensagem server.begin (); // iniciando o servidor}
Slučka ()
V slučke prvá vec, ktorú urobíme, je inštancia klienta, pripojenie a väzba na klientsku premennú. Skontrolujte, či je klient pripojený. Ak je to tak, spustíme premennú, ktorá prijme údaje. Pokiaľ je nadviazané spojenie a ak sú prijaté dáta, čítame znaky pre premennú c. Nakoniec zreťazíme c v dátovej premennej.
void loop () {WiFiClient cliente = server.available (); // spojovací kód klienta, asocie a rôzne klienty if (cliente.connected ()) {// se há um kliente conectado String dados = ""; // inicia a variável que receberá os dados Serial.println ("Cliente conectado."); // mensagem while (cliente.connected ()) {// enquanto a conexão estiver establishmentelecida if (cliente.available ()) {// e se houver dados a receber char c = cliente.read (); // leia os caracteres para a variável c dados = dados + c; // concatene c na variável dados
Ak je prijatý znak nového riadka, v reťazci v údajoch hľadáme index znaku „,“. Získame podreťazce tesne pred čiarkou a potom ich prevedieme na celé číslo. Nastavíme PWM kanálov A a B. Vymažeme premennú.
if (c == '\ n') {// se um caracter de nova linha for recebido int virgula = dados.indexOf (','); // obstaranie pelo índice do caracter ',' na string em dados ciclo_A = (dados.substring (0, virgula)). toInt (); // obntha a substring até antes da vírgula e converta para inteiro ciclo_B = dados.substring (virgula + 1, dados.length ()). toInt (); // obtenha a substring apos a vírgula e converta para inteiro ledcWrite (canal_A, ciclo_A); // Ajusta o PWM do canal A ledcWrite (canal_B, ciclo_B); // Ajusta o PWM do kanála B dados = ""; // Limpa a variável}}}}
Ak sa klient odpojí, potvrdíme koniec pripojenia. Chvíľu počkáme a vytlačíme „Nie je pripojený žiadny klient“. Potom počkáme ďalšiu sekundu, kým sa reštartuje.
// caso o cliente se desconecte, confirmma o fim da conexão delay (50); // aguarda um momento cliente.stop (); Serial.println („Nenhum cliente conectado.“); // oneskorenie mensagemu (1000); // aguarda um segundo antes de reiniciar}
Krok 8: Zdrojový kód zákazníka
Vyhlásenia
Knižnicu WiFi sme opäť zaradili, tentokrát na klienta. Tiež definujeme premenné.
#include const char* ssid = "ESP32ap"; // SSID do prístupového bodu ESP32 const char* heslo = "12345678"; // Senha para acessar o ponto de acesso const uint16_t port = 2; // Porta de escuta do servidor const char * host = "192.168.4.1"; // endereco IP to servidor const int pin_Leitura_A = 36; // GPIO leitura do ADC0 const int pin_Leitura_B = 39; // GPIO de leitura do ADC3 int ciclo_A = 0; // variável que receberá o valor do ciclo do PWM A int ciclo_B = 0; // Variável que receberá o valor do ciclo do PWM B WiFiClient cliente; // deklarujte svoje klienty
Nastaviť ()
GPIO definujeme ako vstup, spustíme sériový port a pripojíme sa k prístupovému bodu.
neplatné nastavenie () {pinMode (pin_Leitura_A, INPUT); // definujte o GPIO como entrada pinMode (pin_Leitura_B, INPUT); // definujte o GPIO como entrada Serial.begin (115200); // inicia a komunikacny serial WiFi.begin (ssid, heslo); // conecta ao ponto de acesso}
Slučka ()
V tejto slučke sa pripojíme k serveru, čo znamená druhý ESP.
void loop () {// sa pripojí a pripojí sa, pripojí sa súčasne (WiFi.status ()! = WL_CONNECTED) {Serial.println (String (millis ()) + " - Conectando no WiFi" + ssid + „…“); // mensagem WiFi.begin (ssid, heslo); oneskorenie (2000); } Serial.println (String (millis ()) + " - Conectado …"); // mensagem // sa pripojí k servidoru, pripojí sa súčasne (! cliente.connect (host, port)) {Serial.println (String (millis ()) + " - Conectando no Servidor" + host + ":" + port + "…"); // oneskorenie mensagemu (1000); }
V tomto kroku, keď sme pripojení k serveru, spustíme premenné na uloženie čítania ADC0 a ADC3. Tiež sme vykonali čítanie 500 vzoriek a spriemerovali sme ich. Namapovali sme čítanie, aby sme vytvorili správne trvanie riadenia serv a zreťazili a odoslali na server.
// pripojenie zdroja k serveru a súčasne (cliente.connected ()) {int leitura_A = 0; // variável para armazenar a leitura do ADC0 int leitura_B = 0; // variável para armazenar a leitura do ADC3 int amostras = 500; // número de amostras int contador = 0; // contador de amostras while (contador <amostras) {// acumua várias leituras leitura_A = leitura_A + analogRead (pin_Leitura_A); leitura_B = leitura_B + analogRead (pin_Leitura_B); contador ++; } leitura_A = leitura_A / amostras; // média das leituras leitura_B = leitura_B /amostras; ciclo_A = mapa (leitura_A, 0, 4095, 140, 490); // mapeia a leitura para criar a duração correta para control to servo ciclo_B = map (leitura_B, 0, 4095, 140, 490); // mapeia a leitura para criar a duração correta para control to servo // concatena e envia para o servidor cliente.println (String (ciclo_A) + "," + String (ciclo_B)); }
Nakoniec, ak nie je pripojené, zaistíme, aby bolo pripojenie ukončené zobrazením ekvivalentnej správy.
// aby ste sa spojili, zaručili ste si konečnú finalizáciu klienta.stop (); Serial.println (String (millis ()) + " - klientske riešenie …"); // mensagem}
Krok 9: Súbory
Stiahnite si súbory:
INO
Odporúča:
Časozberná kamera používajúca dosku ESP32-CAM: 6 krokov
![Časozberná kamera používajúca dosku ESP32-CAM: 6 krokov Časozberná kamera používajúca dosku ESP32-CAM: 6 krokov](https://i.howwhatproduce.com/images/002/image-5560-j.webp)
Časozberná kamera využívajúca dosku ESP32-CAM: Tento projekt nadväzuje na predchádzajúci projekt digitálnej kamerovej kamery a pomocou dosky ESP32-CAM staviame časozbernú kameru. Všetky obrázky sa postupne ukladajú na kartu microSD a doska po nasnímaní obrázka uspí, aby pomohla uložiť
IP kamera s detekciou tváre pomocou dosky ESP32-CAM: 5 krokov
![IP kamera s detekciou tváre pomocou dosky ESP32-CAM: 5 krokov IP kamera s detekciou tváre pomocou dosky ESP32-CAM: 5 krokov](https://i.howwhatproduce.com/images/005/image-14013-j.webp)
IP kamera s detekciou tváre pomocou dosky ESP32-CAM: Tento príspevok sa líši od ostatných a pozrime sa na veľmi zaujímavú dosku ESP32-CAM, ktorá je prekvapivo lacná (menej ako 9 dolárov) a ľahko sa používa. Vytvárame jednoduchú IP kameru, ktorú je možné použiť na streamovanie živého videa pomocou 2
Digitálna statická kamera používajúca dosku ESP32-CAM: 5 krokov
![Digitálna statická kamera používajúca dosku ESP32-CAM: 5 krokov Digitálna statická kamera používajúca dosku ESP32-CAM: 5 krokov](https://i.howwhatproduce.com/images/005/image-14023-j.webp)
Digitálna kamera pomocou dosky ESP32-CAM: V tomto príspevku sa naučíme, ako vytvoriť digitálnu kameru pomocou dosky ESP32-CAM. Keď stlačíte tlačidlo reset, doska nasníma obrázok, uloží ho na kartu microSD a potom sa vráti do hlbokého spánku. Používame EEPROM
Systém puzdra ESP32-CAM a kamera 3D tlačiarne: 10 krokov (s obrázkami)
![Systém puzdra ESP32-CAM a kamera 3D tlačiarne: 10 krokov (s obrázkami) Systém puzdra ESP32-CAM a kamera 3D tlačiarne: 10 krokov (s obrázkami)](https://i.howwhatproduce.com/images/009/image-25670-j.webp)
Systém puzdra ESP32-CAM a kamera 3D tlačiarne: Uvažoval som o výmene fotoaparátu na mojej 3-D tlačiarni za niečo malé, jednoduché a funkčné …. a lacné. K modulu ESP32-Cam ma priviedlo niekoľko vyhľadávaní Google. Nájdete ich za menej ako 10 dolárov, rovnako ako menej, a fungujú naozaj dobre
Najľahšia webová kamera ako bezpečnostná kamera - detekcia pohybu a obrázky odoslané e -mailom: 4 kroky
![Najľahšia webová kamera ako bezpečnostná kamera - detekcia pohybu a obrázky odoslané e -mailom: 4 kroky Najľahšia webová kamera ako bezpečnostná kamera - detekcia pohybu a obrázky odoslané e -mailom: 4 kroky](https://i.howwhatproduce.com/images/001/image-1364-40-j.webp)
Najľahšia webová kamera ako bezpečnostná kamera - Detekcia pohybu a obrázky zaslané e -mailom: Na to, aby ste mohli dostávať obrázky rozpoznané pohybom z webovej kamery do e -mailu, si už nemusíte sťahovať ani konfigurovať softvér - jednoducho použite prehliadač. Na zachytenie obrázku použite aktuálny prehliadač Firefox, Chrome, Edge alebo Opera v systéme Windows, Mac alebo Android