Orodha ya maudhui:
- Hatua ya 1: Rasilimali Zilizotumiwa
- Hatua ya 2: NodeMCU ESP32S - Pinout
- Hatua ya 3: Vipengele vya ESP32
- Hatua ya 4: Udhibiti wa Magari ya Servo PWM
- Hatua ya 5: Kukamata Analog
- Hatua ya 6: Mzunguko - Seva na Mteja
- Hatua ya 7: Msimbo wa Chanzo wa Kituo cha Ufikiaji na Seva
- Hatua ya 8: Nambari ya Chanzo cha Wateja
- Hatua ya 9: Faili
Video: Kamera ya PANTILT Na ESP32: Hatua 9
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:53
Leo, nitawasilisha PAN TILT, ambayo ni kifaa kinachowezesha kusonga kwa kamera kwa mwelekeo wa juu, chini, na kwa pande. Mimi mwenyewe nilitengeneza kifaa hiki kupitia sehemu zilizochapishwa za 3D, nikitumia servos mbili na ESP32, ambayo inafanya uwezekano wa kudhibiti utaratibu huu kupitia WiFi. Wacha basi tuchukue usomaji kwa kutumia njia za AD za ESP32, na pia operesheni ya analog kutumia mtawala LED_PWM. Pia, tunatumia udhibiti wa unganisho la TCP / IP.
Kwenye video, unaweza kuona kuwa nina ESP32 inayosoma maadili ya nguvu mbili, ambazo zinatumwa (kupitia WiFi) kwa ESP32 nyingine. Imeunganishwa na motors mbili za servo. Kamera hutembea (na imeshikamana na PAN TILT) kwa mwelekeo wa juu, chini, au kando, kulingana na udhibiti unaofanya kupitia sufuria.
Kiungo cha muundo wa kuchapisha wa PAN TILT 3D kinaweza kupatikana hapa:
Hatua ya 1: Rasilimali Zilizotumiwa
• Nambari nyingi za kuruka kwa unganisho
• Node mbili MCU ESP32s
• nyaya mbili za USB za ESP32
• WebCam ya kudhibiti
• Vyungu viwili vya kudhibiti
• Kitabu cha maandishi
• Chanzo cha servos
Hatua ya 2: NodeMCU ESP32S - Pinout
Hatua ya 3: Vipengele vya ESP32
Vipengele vya PWM ESP32 ina vifaa vya pembejeo viwili vyenye uwezo wa kutoa ishara za PWM. Hizi ni pamoja na Injini ya Pulse Width Modulator (MCPWM) iliyoundwa kwa nguvu na udhibiti wa magari, na LED_PWM, iliyoundwa kwa udhibiti wa nguvu za LED. Lakini pia zinaweza kutumika kwa njia ya generic.
Tutatumia LED_PWM, ambayo inaweza kutoa njia 16 za kujitegemea za PWM na vipindi vya kusanidi na mizunguko ya kazi. Ina hadi bits 16 za azimio.
Hatua ya 4: Udhibiti wa Magari ya Servo PWM
Udhibiti wa servo motor hufanywa kwa kurekebisha upanaji wa upana wa mraba wa mraba na masafa maalum.
Kwa servo inayotumiwa (na vile vile kwa wengi), masafa ni saa 50Hz. Pia, upana wa urefu wa mapigo 1 hadi 2ms huamua nafasi ya angular ya servo.
Tutasafirisha kituo cha 0 cha LED_PWM kwenda GPIO13, na kituo cha 1 kwenda GPIO12, tukitumia habari hii kutekeleza udhibiti.
Hatua ya 5: Kukamata Analog
Analog kwa pembeni ya ubadilishaji wa dijiti
ESP32 ina waongofu wa analojia-kwa-dijiti ambao unaweza kutumika kwa njia hadi 18, lakini tu kwenye GPIOs zinazowezeshwa na analog.
Voltage inayotumiwa haipaswi kuzidi upeo wa 0 hadi 3V.
Ubadilishaji uliofanywa hauhifadhi makosa ya kila wakati kwa voltages zote zilizochukuliwa, na hii yote inategemea anuwai iliyosanidiwa. Kwa anuwai ya 150mV saa 2, 450V, hundi ya tabia inahitajika kwa matumizi muhimu zaidi.
Kwa kukamata, tutatumia potentiometer ya 10k kama mgawanyiko wa voltage. Kukamata utafanywa katika kituo cha ADC0 na ADC3, kinachoweza kupatikana na GPIO36 na GPIO39.
Hatua ya 6: Mzunguko - Seva na Mteja
Hatua ya 7: Msimbo wa Chanzo wa Kituo cha Ufikiaji na Seva
Taarifa
Ninajumuisha maktaba ya WiFi, na ninafafanua anuwai kadhaa.
# pamoja na // inclusão da biblioteca WiFi const int freq = 50; // mara kwa mara kufanya PWM const int canal_A = 0; // primeiro canal do controlador LED_PWM const int canal_B = 1; // segundo canal do controlador 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á redirecionado const int pin_Atuacao_B = 12; // Pino para onde o canal 1 será redirecionado const char * ssid = "ESP32ap"; // constante com o SSID kufanya WiFi kufanya ponto de acesso ESP32 const char * password = "12345678"; // senha para confirmação de conexão no ponto de acesso const int bandari = 2; // porta na qual o servidor receberá as conexões int ciclo_A = 0; // Variável que receiverá o ciclo de atuação do canal A int ciclo_B = 0; // anuwai ya kupokea njia ya kufanya mfereji Seva ya WiFiServer (bandari); // Decaração do objeto servidor IPAddress myIP; // Decaração da variável de IP
Sanidi ()
Hapa, tunafafanua pini za pato. Tunaweka njia kwa masafa yanayotakiwa na kuweka thamani ya PWM.
kuanzisha batili () {pinMode (pin_Atuacao_A, OUTPUT); // definindo o pino de atuação Como saída pinMode (pin_Atuacao_B, OUTPUT); // ufafanuzi wa pino de atuação B como saída ledcSetup (canal_A, freq, resolutionucao); // Ajustando o canal 0 para frequencyência de 50 Hz na resolução de 12bits ledcSetup (canal_B, freq, resolutionucao); // Ajustando o canal 1 kwa masafa ya 50 Hz na resolução de 12bits 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 ledc Andika (canal_A, ciclo_A); // definindo o valor do PWM para 0 ledcWrite (canal_B, ciclo_B); // ufafanuzi wa nguvu hufanya PWM kwa 0
Tulianza serial, hatua ya kufikia na SSID ESP32ap, na nywila. Kisha tunapata IP ya seva na kuanza seva.
Serial. Kuanza (115200); // iniciando Serial Serial.println ("Iniciando ponto de acesso:" + String (ssid)); // mensagem WiFi.softAP (ssid, nywila); // iniciando o ponto de acesso com 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:" + Kamba (bandari)); // seva ya mensagem. anza (); // iniciando o servidor}
Kitanzi ()
Katika Kitanzi, jambo la kwanza tutafanya ni kumthibitisha mteja, akiunganisha na kumfunga kwa kutofautisha kwa mteja. Angalia ikiwa mteja ameunganishwa. Ikiwa ndivyo, tunaanza anuwai ambayo itapokea data. Kwa muda mrefu ikiwa unganisho limesimama, na ikiwa data inapokelewa, tunasoma wahusika wa ubadilishaji c. Mwishowe, tunakubaliana c katika ubadilishaji wa data.
kitanzi batili () {WiFiClient cliente = server haipatikani (); // se um cliente conectar, associé a variável cliente if (cliente.connected ()) {// se há um cliente conectado String dados = ""; // inicia a variável que receberá os dados Serial.println ("Cliente conectado."); // mensagem wakati (cliente.connected ()) {/ // leia os caracteres para a variável c dados = baba + c; // concatene c na variável dados
Ikiwa herufi mpya inapokelewa, tunatafuta faharisi ya herufi ',' kwenye kamba kwenye data. Tunapata vifungo mpaka kulia kabla ya koma, na kisha tunawabadilisha kuwa nambari kamili. Tunaweka PWM ya vituo A na B. Tunafuta tofauti.
ikiwa (c == '\ n') {// se um caracter de nova linha kwa recebido int virgula = dados.indexOf (','); // Taratibu za manunuzi pelo Indice kufanya caracter ',' NA kamba em dados ciclo_A = (dados.substring (0, virgula)) toInt ()., // obtenha a substring até antes da vírgula na converta para inteiro ciclo_B = dados.substring (virgula + 1, dados.length ()). toInt (); ciclo_A); // Ajusta o PWM fanya mfereji A ledcWrite (canal_B, ciclo_B); // Ajusta o PWM fanya mfereji B dados = ""; // Limpa anuwai}}}}
Ikiwa mteja atakata, tunathibitisha mwisho wa unganisho. Tunasubiri kwa muda na kuchapisha "Hakuna mteja aliyeunganishwa". Tunasubiri sekunde nyingine kabla ya kuanza tena.
// caso o cliente se desconecte, confirma o fim da conexão kuchelewa (50); // aguarda um momento cliente.stop (); Serial.println ("Nenhum cliente conectado."); // kuchelewa kwa mensagem (1000); // aguarda um segundo antes de reiniciar}
Hatua ya 8: Nambari ya Chanzo cha Wateja
Taarifa
Tumejumuisha maktaba ya WiFi tena, wakati huu kwa mteja. Pia, tunafafanua anuwai.
# pamoja na const char * ssid = "ESP32ap"; // SSID fanya ponto de acesso ESP32 const char * password = "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"; // endereço IP kufanya servidor const int pin_Leitura_A = 36; // GPIO de leitura do ADC0 const int pin_Leitura_B = 39; // GPIO de leitura fanya ADC3 int ciclo_A = 0; // kila aina ya kipokezi cha ushujaa hufanya PWM A int ciclo_B = 0; // Varievel que à sua do do ciclo do PWM B WiFiClient cliente; // declaração do objeto cliente
Sanidi ()
Tunafafanua GPIOs kama pembejeo, anza serial, na unganisha kwenye kituo cha ufikiaji.
kuanzisha batili () {pinMode (pin_Leitura_A, INPUT); // fafanua o GPIO como entada pinMode (pin_Leitura_B, INPUT); // fafanua o GPIO como entada Serial.begin (115200); // inicia comunicação serial WiFi.begin (ssid, nywila); // conecta ao ponto de acesso}
Kitanzi ()
Katika Kitanzi hiki, tutaunganisha kwenye seva, ikimaanisha ESP nyingine.
kitanzi batili () {// se não conectado ao ponto de acesso, tenta se conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.println (String (millis ()) + "- Conectando no WiFi" + ssid + "…"); // mensagem WiFi.anza (ssid, nywila); kuchelewa (2000); } Serial.println (Kamba (millis ()) + "- Conectado…"); // mensagem // se não conectado ao servidor, tenta se conectar wakati (! cliente.connect (mwenyeji, bandari)) {Serial.println (String (millis ()) + "- Conectando no Servidor" + host + ":" + bandari + "…"); // kuchelewa kwa mensagem (1000); }
Katika hatua hii, wakati tumeunganishwa na seva, tunafanya anuwai ili kuhifadhi usomaji wa ADC0 na ADC3. Pia, tulifanya usomaji wa sampuli 500 na wastani wa usomaji. Tulichora ramani ya usomaji ili kuunda muda sahihi wa udhibiti wa servos, na kuunga na kuutuma kwa seva.
// enquanto estiver conectado ao servidor wakati (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 wakati (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 = ramani (leitura_A, 0, 4095, 140, 490); // mapeia a leitura para criar a duração correta para controle do servo ciclo_B = ramani (leitura_B, 0, 4095, 140, 490); // mapeia a leitura para criar a duração correta para controle do servo // concatena e envia para o servidor cliente.println (String (ciclo_A) + "," + String (ciclo_B)); }
Mwishowe, ikiwa haijaunganishwa, tunahakikisha kuwa unganisho umekomeshwa kwa kuonyesha ujumbe sawa.
// se não coonectado, garante que a conexão foi finalizada cliente.stop (); Serial.println (Kamba (millis ()) + "- safu ya chini…"); // mensagem}
Hatua ya 9: Faili
Pakua faili:
INO
Ilipendekeza:
Kamera ya CCTV iliyo na Moduli ya Kamera ya NodeMCU + ya Laptop ya Kale (Na bila Kutumia Blynk): Hatua 5
Kamera ya CCTV Na NodeMCU + Moduli ya Kamera ya Laptop ya Kale (Pamoja na Bila Kutumia Blynk): Halo jamani! Katika hii inayoweza kufundishwa, nitakuonyesha jinsi nilivyotumia moduli ya zamani ya kamera ya mbali na nodeMCU kutengeneza kitu sawa na CCTV
Kuanza na ESP32 CAM - Kutiririsha Video Kutumia ESP CAM Juu ya Wifi - Mradi wa Kamera ya Usalama ya ESP32: Hatua 8
Kuanza na ESP32 CAM | Kutiririsha Video Kutumia ESP CAM Juu ya Wifi | Mradi wa Kamera ya Usalama ya ESP32: Leo tutajifunza jinsi ya kutumia bodi hii mpya ya ESP32 CAM na jinsi tunaweza kuisimbo na kuitumia kama kamera ya usalama na kupata video ya kutiririka kupitia wifi
Tengeneza Kamera yako ya Juu ya Kamera na Mwangaza wa LED !: Hatua 5 (na Picha)
Tengeneza Kamera yako ya Juu ya Kamera na Mwangaza wa LED!: Katika mradi huu nitakuonyesha jinsi ya kuunda kifaa rahisi cha kamera. Ulaji hauwezi tu kushikilia kamera juu ya kitu unachotaka kupiga filamu, lakini pia inaangazia mfuatiliaji wa kuona picha na mwangaza wa LED kwa l kikamilifu
Uboreshaji wa Kamera Kubwa ya Kamera ya DIY Chini ya $ 50: 3 Hatua
Uboreshaji wa Kamera Kubwa ya Kamera ya DIY Chini ya $ 50: Risasi za juu zinaweza kuwa muhimu sana katika aina fulani za upigaji picha za bidhaa au hata nyimbo za kisanii. Lakini wakati mwingine uko kwenye bajeti. Walakini, hii haifai kusimamisha kazi yako ya ubunifu. Badala yake, tafuta njia zingine za kutengeneza picha hizo na c
KAMERA YA UNICORN - Raspberry Pi Zero W NoIR 8MP Kujenga Kamera: Hatua 7 (na Picha)
KAMERA YA UNICORN - Raspberry Pi Zero W NoIR 8MP Kujenga Kamera: Pi Zero W NoIR 8MP Kujenga KameraHii Inayoweza Kuundwa iliundwa kumsaidia mtu yeyote anayetaka Kamera ya infrared au Kamera ya Kubebeka Kweli Kubwa au Kamera ya Raspberry Pi inayobebeka au Anataka tu kujifurahisha, heheh . Hii ndio bei rahisi na usanidi