Мазмұны:

ESP32 бар PANTILT камерасы: 9 қадам
ESP32 бар PANTILT камерасы: 9 қадам

Бейне: ESP32 бар PANTILT камерасы: 9 қадам

Бейне: ESP32 бар PANTILT камерасы: 9 қадам
Бейне: ESP32 Tutorial 7 - Using Array with ESP32 Arduino Programming-SunFounder's ESP32 IoT Learnig kit 2024, Қараша
Anonim
Image
Image
ESP32 бар PANTILT камерасы
ESP32 бар PANTILT камерасы

Бүгін мен PAN TILT -ті ұсынамын, ол камераның жоғары, төмен және екі жаққа қозғалысын қамтамасыз ететін құрылғы. Мен өзім бұл құрылғыны екі баспа мен ESP32 көмегімен 3D басып шығарылған бөлшектер арқылы шығардым, бұл WiFi арқылы бұл механизмді басқаруға мүмкіндік береді. Келіңіздер, ESP32 AD арналарының көмегімен оқуды, сонымен қатар LED_PWM контроллерінің көмегімен аналогтық операцияны алайық. Сонымен қатар, біз TCP / IP қосылымын басқарамыз.

Бейнеде менде басқа ESP32 -ге (WiFi арқылы) жіберілетін екі потенциометрдің мәндерін оқитын ESP32 бар екенін көруге болады. Ол екі серво қозғалтқышына қосылған. Кәстрөлдер арқылы басқаруға байланысты камера жоғары, төмен немесе бүйір бағытта жылжиды (және PAN TILT -ке бекітілген).

PAN TILT 3D баспа дизайнына сілтемені мына жерден табуға болады:

1 -қадам: Қолданылған ресурстар

Қолданылған ресурстар
Қолданылған ресурстар

• Қосылу үшін бірнеше секіргіштер

• Екі түйінді MCU ESP32

• ESP32 үшін екі USB кабелі

• Бақылауға арналған WebCam

• Екі бақылау кастрөлі

• протокол тақтасы

• Серваларға арналған дереккөз

2 -қадам: NodeMCU ESP32S - түйреу

NodeMCU ESP32S - түйреу
NodeMCU ESP32S - түйреу

3 -қадам: ESP32 қосымша құрылғылары

ESP32 қосымша құрылғылары
ESP32 қосымша құрылғылары

PWM перифериялық құрылғылары ESP32 -де PWM сигналдарын шығаруға қабілетті екі перифериялық қондырғы бар. Оларға күш пен қозғалтқышты басқаруға арналған импульстік ен модуляторы (MCPWM) қозғалтқышы мен жарықдиодты интенсивтілікті басқаруға арналған LED_PWM кіреді. Бірақ оларды жалпы түрде қолдануға болады.

Біз LED_PWM қолданамыз, ол конфигурацияланатын кезеңдер мен жұмыс циклдары бар 16 тәуелсіз PWM арналарын құра алады. Оның ажыратымдылығы 16 битке дейін.

4 -қадам: PWM қозғалтқышты басқару

PWM сервоқозғалтқышты басқару
PWM сервоқозғалтқышты басқару

Серво қозғалтқышты басқару белгілі бір жиіліктегі квадраттың импульстік ені модуляциясын реттеу арқылы жүзеге асады.

Қолданылатын серво үшін (сонымен қатар көпшілігінде) жиілік 50 Гц. Сондай -ақ, импульстің ұзындығы 1 -ден 2 мс дейін серваның бұрыштық орнын анықтайды.

Біз бақылауды орындау үшін осы ақпаратты пайдалана отырып, LED_PWM 0 арнасын GPIO13 -ке, ал 1 -арнаны GPIO12 -ге жібереміз.

5 -қадам: Аналогты түсіру

Аналогтық түсіру
Аналогтық түсіру

Аналогты цифрлық конверсия перифериялық

ESP32-де аналогты-цифрлық түрлендіргіштер бар, оларды 18 арнаға дейін қолдануға болады, бірақ тек аналогты қолдайтын GPIO-да.

Қолданылатын кернеу 0 -ден 3В -қа дейінгі диапазоннан аспауы керек.

Орындалған түрлендіру барлық алынған кернеулер үшін тұрақты қатені сақтамайды және мұның бәрі конфигурацияланған диапазонға байланысты. 2, 450В кернеудегі 150мВ диапазонында, аса маңызды қосымшалар үшін мінез -құлықты тексеру қажет.

Түсіру үшін біз кернеу бөлгіш ретінде 10 к потенциометрді қолданамыз. Түсіру GPIO36 және GPIO39 қол жетімді ADC0 және ADC3 арналарында орындалады.

6 -қадам: схема - сервер мен клиент

Схема - сервер мен клиент
Схема - сервер мен клиент

7 -қадам: Қатынас нүктесі мен сервердің бастапқы коды

Мәлімдемелер

Мен WiFi кітапханасын қосамын және кейбір айнымалыларды анықтаймын.

#include // inclusão da biblioteca WiFi const int freq = 50; // PWM const int kanal_A = 0 жиіліктері; // primeiro channel to controlador LED_PWM const int channel_B = 1; // бақылау каналы LED_PWM const int resolutionucao = 12; // LED_PWM const int pin_Atuacao_A = 13 реттегіші жоқ; // Қосымша ақпарат 0 арнаға қайта бағытталды pin_Atuacao_B = 12; // 1 -ші арнаға сілтеме жасаңыз, бұл char* ssid = «ESP32ap»; // тұрақты SSID немесе WiFi байланысы ESP32 const char* password = «12345678»; // порттың құпиялығын растаудың қажеті жоқ; // ciclo_A = 0 байланысы бар қызметтерді алу мүмкін емес; // variável que receptberá o ciclo de atuação channel A int ciclo_B = 0; // WiFiServer сервері (порт); // декларациялау IPAddress myIP; // декларациялау IP -де

Орнату ()

Мұнда біз шығыс түйреуіштерін анықтаймыз. Біз арналарды қажетті жиілікке орнатамыз және PWM мәнін орнатамыз.

void setup () {pinMode (pin_Atuacao_A, OUTPUT); // анықтамалар немесе ережелер pinMode (pin_Atuacao_B, OUTPUT); // ledcSetup (канал_А, жиілік, ажыратымдылық) анықтамасы; // 0 каналдағы жиіліктер 50 Гц және 12 бит битке ledcSetup (kanal_B, жиілік, ажыратымдылық); // 1 каналда 50 Гц жиіліктегі жиіліктер 12c бит ledcAttachPin (pin_Atuacao_A, арна_А); // арнаны қайта бағыттау 0 para 13 pc ledcAttachPin (pin_Atuacao_B, channel_B); // арнаны қайта бағыттау 1 para para pino 12 ledcWrite (channel_A, ciclo_A); // PWM para 0 ledcWrite (kanal_B, ciclo_B); // PWM 0 параграфының мәні

Біз сериялық, кіру нүктесін SSID ESP32ap және құпия сөзбен бастадық. Содан кейін біз сервердің IP -ін аламыз және серверді іске қосамыз.

Serial.begin (115200); // iniciando a Serial Serial.println («Iniciando ponto de acesso:» + String (ssid)); // mensagem WiFi.softAP (ssid, құпия сөз); // SSID ESP32ap және 12345678 Serial.println («IP мекенжайы»); // mensagem myIP = WiFi.softAPIP (); // IP -сервисті пайдалану (коммерциялық емес конфигурациялау) Serial.println («IP:» + WiFi.localIP ()); // mensagem Serial.println («Iniciando servidor em:» + Жол (порт)); // mensagem server.begin (); // сервидор}

Цикл ()

Loop -те біз бірінші кезекте клиенттің айнымалы мәнін қосатын және байланыстыратын клиентті іске қосамыз. Клиенттің қосылғанын тексеріңіз. Олай болса, біз деректерді алатын айнымалыны бастаймыз. Байланыс орнатылғанша және егер деректер қабылданса, біз c айнымалысының таңбаларын оқимыз. Ақырында, біз деректер айнымалысында c қосамыз.

void loop () {WiFiClient cliente = server.available (); // клиент біркелкі, егер клиент біркелкі болса, онда (cliente.connected ()) {// se client of conectado String dados = «»; // Serial.println («Cliente conectado.») нұсқасын алу; // mensagem while (cliente.connected ()) {// enquanto a conexão estiver setelecida if (cliente.available ()) {// e c houver dados a charter c = cliente.read (); // leia os caracteres para a variável c dados = dados + c; // біркелкі емес

Егер жаңа жол таңбасы алынса, біз деректер жолындағы ',' таңбасының индексін іздейміз. Біз ішкі жолдарды үтірдің алдында ғана аламыз, содан кейін оларды бүтін санға түрлендіреміз. Біз А және В арналарының PWM орнатамыз. Біз айнымалы мәнді тазалаймыз.

if (c == '\ n') {// se vir carula de nova linha for recebido int virgula = dados.indexOf (','); // сатып алуды «сипаттау», 'doc ciclo_A = (dados.substring (0, virgula)). toInt (); // ішкі жолдар ciclo_B = dados.substring (virgula + 1, dados.length ()). toInt (); ciclo_A); // A ledcWrite арнасы бойынша PWM (канал_В, ciclo_B); // B каналы PWM немесе B каналы = «»; // өзгермелі нұсқа}}}}

Егер клиент байланысын үзсе, біз байланыстың аяқталғанын растаймыз. Біз бір сәт күтеміз және «Клиент қосылмаған» деп басып шығарамыз. Біз қайта іске қосар алдында тағы бір секунд күтеміз.

// caso o cliente se desconecte, Confirma o fim da conexão delay (50); // клиент.stop (); Serial.println («Nenhum cliente conectado.»); // mensagem кідірісі (1000); // қай кезде де қайтып келуге болады}

8 -қадам: Тұтынушының бастапқы коды

Мәлімдемелер

Біз WiFi кітапханасын қайтадан енгіздік, бұл жолы клиентке. Сонымен қатар, біз айнымалыларды анықтаймыз.

#include const char* ssid = «ESP32ap»; // SSID EPS32 const char* password = «12345678»; // Сенсорлық ацесар немесе порт uint16_t порт = 2; // Port char de host servidor const char * host = «192.168.4.1»; // IP -сервис const int pin_Leitura_A = 36; // ADC0 const int pin_Leitura_B = 39 деңгейіндегі GPIO бағдарламасы; // ADC3 int ciclo_A = 0 деңгейіндегі GPIO бағдарламасы; // PWM A ciclo_B = 0; // PWM B WiFiClient клиентінің бағасы өзгереді; // клиенттерге мәлімдеме жасау

Орнату ()

Біз GPIO -ны кіріс ретінде анықтаймыз, серияны бастаймыз және кіру нүктесіне қосыламыз.

void setup () {pinMode (pin_Leitura_A, INPUT); // анықтау GPIO como entrada pinMode (pin_Leitura_B, INPUT); // анықтау o GPIO como entrada Serial.begin (115200); // inicia a comunicação сериялық WiFi.begin (ssid, құпия сөз); // conecta ao ponto de acesso}

Цикл ()

Бұл циклде біз басқа ESP дегенді білдіретін серверге қосыламыз.

void loop () {// se não conectado ao ponto de acesso, a conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.println (String (millis ()) + « - WiFi байланысы жоқ» + ssid + «…»); // mensagem WiFi.begin (ssid, құпия сөз); кешіктіру (2000); } Serial.println (String (millis ()) + « - Conectado…»); // mensagem // se não conectado ao servidor, tenta se conectar while (! cliente.connect (хост, порт)) {Serial.println (String (millis ()) + « - Консерт сервисі жоқ» + хост + «:») + порт + «…»); // mensagem кідірісі (1000); }

Бұл қадамда, серверге қосылған кезде, біз ADC0 және ADC3 көрсеткіштерін сақтау үшін айнымалыларды орындаймыз. Сондай -ақ, біз 500 үлгіні оқуды орындадық және оқылымды орташа алдық. Біз серверлерді басқарудың дұрыс ұзақтығын құру үшін оқуды картаға түсіріп, оны біріктіріп, серверге жібердік.

// enquanto estiver conectado ao servidor while (cliente.connected ()) {int leitura_A = 0; // ADC0 int leitura_B = 0 оқулықтары бойынша; // ADC3 интерфейсінің амортизациясы = 500; // nosher 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 / амостра; // média das leituras leitura_B = leitura_B /амостра; ciclo_A = карта (leitura_A, 0, 4095, 140, 490); // mapo a leitura para criar a servité ciclo_B = control (servito ciclo_B = карта) (leitura_B, 0, 4095, 140, 490); // сервистік қызмет көрсетуді бақылау // клиент.println (String (ciclo_A) + «,» + String (ciclo_B)) конверсиясы; }

Соңында, егер қосылмаған болса, біз эквивалентті хабарды көрсету арқылы байланыстың үзілгеніне көз жеткіземіз.

// клиенттерге тапсырыс беру кезінде кепілдік беріледі; Serial.println (String (millis ()) + « - cliente desconectado…»); // mensagem}

9 -қадам: файлдар

Файлдарды жүктеңіз:

PDF

МЕН ЖОҚ

Ұсынылған: