ዝርዝር ሁኔታ:
- ደረጃ 1 - ያገለገሉ ሀብቶች
- ደረጃ 2: NodeMCU ESP32S - Pinout
- ደረጃ 3 - ESP32 ተጓipች
- ደረጃ 4 - Servo የሞተር ቁጥጥር PWM
- ደረጃ 5 የአናሎግ ቀረፃ
- ደረጃ 6 - ወረዳ - አገልጋይ እና ደንበኛ
- ደረጃ 7 - የመዳረሻ ነጥብ እና የአገልጋይ ምንጭ ኮድ
- ደረጃ 8 የደንበኛ ምንጭ ኮድ
- ደረጃ 9 - ፋይሎች
ቪዲዮ: PANTILT ካሜራ ከ ESP32: 9 ደረጃዎች ጋር
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:32
ዛሬ ፣ ወደ ላይ ፣ ወደታች እና ወደ ጎን አቅጣጫዎች የካሜራ እንቅስቃሴን የሚያነቃቃ መሣሪያ የሆነውን PAN TILT ን አቀርባለሁ። እኔ ራሴ ይህንን መሣሪያ በ 3 ዲ የታተሙ ክፍሎች ፣ ሁለት ሰርቶፖችን እና ESP32 ን በመጠቀም ፣ ይህንን ዘዴ በ WiFi በኩል ለመቆጣጠር ያስችለናል። የ ESP32 ን የ AD ሰርጦችን ፣ እንዲሁም መቆጣጠሪያውን LED_PWM በመጠቀም የአናሎግ ሥራን በመጠቀም ንባቦችን እንውሰድ። እንዲሁም ፣ በ TCP / IP ግንኙነት ላይ መቆጣጠሪያውን እንተገብራለን።
በቪዲዮው ውስጥ (እኔ በ WiFi በኩል) ወደ ሌላ ESP32 የሚላኩትን የሁለቱ ፖታቲሞሜትር እሴቶችን የሚያነብ ESP32 እንዳለኝ ማየት ይችላሉ። ከሁለቱ ሰርቮ ሞተሮች ጋር ተገናኝቷል። በሸክላዎቹ በኩል በሚያደርጉት መቆጣጠሪያ ላይ በመመርኮዝ ካሜራው ወደ ላይ ፣ ወደ ታች ወይም ወደ ጎን አቅጣጫዎች (እና ከ PAN TILT ጋር ተያይ isል)።
ወደ PAN TILT 3D የህትመት ንድፍ አገናኝ እዚህ ይገኛል
ደረጃ 1 - ያገለገሉ ሀብቶች
• ለግንኙነት ብዙ ዝላይዎች
• ሁለት መስቀለኛ መንገድ MCU ESP32 ዎች
• ለ ESP32 ሁለት የዩኤስቢ ገመዶች
• ለቁጥጥር የድር ካሜራ
• ሁለት የመቆጣጠሪያ ማሰሮዎች
• ፕሮቶቦርድ
• ለ servos ምንጭ
ደረጃ 2: NodeMCU ESP32S - Pinout
ደረጃ 3 - ESP32 ተጓipች
PWM Peripherals ESP32 የ PWM ምልክቶችን የማመንጨት ችሎታ ያላቸው ሁለት ተጓipች አሉት። እነዚህ ለኃይል እና ለሞተር ቁጥጥር የተነደፈውን የ Pulse Width Modulator (MCPWM) ሞተር እና ለ LED ኃይለኛ ቁጥጥር የተገነባውን LED_PWM ያካትታሉ። ግን እነሱ በአጠቃላይ መንገድ ጥቅም ላይ ሊውሉ ይችላሉ።
ሊዋቀሩ ከሚችሉ ወቅቶች እና የስራ ዑደቶች ጋር 16 ገለልተኛ የ PWM ሰርጦችን ማፍለቅ የሚችልን LED_PWM እንጠቀማለን። እስከ 16 ቢት ጥራት አለው።
ደረጃ 4 - Servo የሞተር ቁጥጥር PWM
የ servo ሞተር መቆጣጠሪያው የሚከናወነው የአንድ የተወሰነ ካሬ ድግግሞሽ ስፋት ድግግሞሽ በማስተካከል ነው።
ጥቅም ላይ ለዋለው (እንዲሁም ለአብዛኛው) ፣ ድግግሞሹ በ 50Hz ነው። እንዲሁም ከ 1 እስከ 2ms የ pulse ርዝመት ስፋት የ servo ማዕዘኑን አቀማመጥ ይወስናል።
መቆጣጠሪያውን ለማከናወን ይህንን መረጃ በመጠቀም የ LED_PWM ሰርጥ 0 ን ወደ GPIO13 እና 1 ወደ GPIO12 እናመራለን።
ደረጃ 5 የአናሎግ ቀረፃ
አናሎግ ወደ ዲጂታል የመቀየሪያ ዳርቻ
ESP32 እስከ 18 ሰርጦች ውስጥ ሊተገበር የሚችል ከአናሎግ-ወደ-ዲጂታል ተለዋዋጮች አሉት ፣ ግን በአናሎግ በነቁ ጂፒኦዎች ውስጥ ብቻ።
የተተገበረው ቮልቴጅ ከ 0 እስከ 3 ቪ ክልል መብለጥ የለበትም።
የተከናወነው ልወጣ ለናሙና ለሁሉም ናሙናዎች የማያቋርጥ ስህተት አይጠብቅም ፣ እና ይሄ ሁሉም በተዋቀረው ክልል ላይ የተመሠረተ ነው። ለ 150mV ክልል በ 2 ፣ 450 ቪ ፣ ለበለጠ ወሳኝ ትግበራዎች የባህሪ ምርመራ ያስፈልጋል።
ለመያዝ ፣ እንደ የቮልቴጅ መከፋፈያ 10 ኪ ፖታቲሞሜትር እንጠቀማለን። መያዝ በ GPIO36 እና GPIO39 ተደራሽ በሆነ ሰርጥ ADC0 እና ADC3 ውስጥ ይከናወናል።
ደረጃ 6 - ወረዳ - አገልጋይ እና ደንበኛ
ደረጃ 7 - የመዳረሻ ነጥብ እና የአገልጋይ ምንጭ ኮድ
መግለጫዎች
የ WiFi ቤተ -መጽሐፍት አካትቻለሁ ፣ እና አንዳንድ ተለዋዋጮችን እገልጻለሁ።
#ያካትቱ // inclusão da biblioteca WiFi const int freq = 50; // frequência do 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 do WiFi do ponto de acesso ESP32 const char* password = "12345678"; // senha para confirmação de conexão no ponto de acesso const int port = 2; // porta na qual o servidor receberá 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 የ WiFi አገልጋይ አገልጋይ (ወደብ); // declaração do objeto servidor IPAddress myIP; // declaração da variável de IP
አዘገጃጀት ()
እዚህ ፣ የውጤት ፒኖችን እንገልፃለን። ሰርጦቹን ወደሚፈለገው ድግግሞሽ እናዘጋጃለን እና የ PWM እሴትን አዘጋጅተናል።
ባዶነት ማዋቀር () {pinMode (pin_Atuacao_A ፣ OUTPUT); // 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); // Ajustando o canal 0 para frequência de 50 Hz e resolução de 12bits ledcSetup (canal_B, freq, resolucao); // Ajustando o canal 1 para frequência de 50 Hz e 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 ledcWrite (canal_A, ciclo_A); // የ PWM para 0 ledcWrite (canal_B ፣ ciclo_B) ጽናት ያድርጉ። // የ PWM para 0 ን ጉልህ ያድርጉት
ተከታታይ ፣ የመዳረሻ ነጥብ በ SSID ESP32ap እና በይለፍ ቃል ጀምረናል። ከዚያ የአገልጋዩን አይፒ እናገኛለን እና አገልጋዩን እንጀምራለን።
Serial.begin (115200); // iniciando a Serial Serial.println ("Iniciando ponto de acesso:" + String (ssid)); // mensagem WiFi.softAP (ssid ፣ የይለፍ ቃል); // 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:" + String (port)); // mensagem server.begin (); // iniciando ወይም servidor}
ሉፕ ()
በ Loop ውስጥ ፣ እኛ መጀመሪያ የምናደርገው ደንበኛን ከደንበኛው ተለዋዋጭ ጋር ማገናኘት እና ማሰር ነው። ደንበኛው መገናኘቱን ያረጋግጡ። እንደዚያ ከሆነ ውሂቡን የሚቀበለውን ተለዋዋጭ እንጀምራለን። ግንኙነቱ እስከተመሠረተ ፣ እና መረጃ ከተቀበለ ፣ ለተለዋዋጭ ሐ ቁምፊዎችን እናነባለን። በመጨረሻም ፣ በመረጃ ተለዋዋጭ ውስጥ ሐን እናያይዛለን።
ባዶነት loop () {WiFiClient cliente = server.available (); // se u cliente conectar, 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 ሳለ (cliente.connected ()) {// enquanto a conexão estiver estabelecida 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
አዲስ መስመር ገጸ -ባህሪ ከተቀበለ ፣ በመረጃው ውስጥ ባለው ሕብረቁምፊ ውስጥ የባህሪው ‹፣› ን ጠቋሚ እንፈልጋለን። ከኮማው በፊት እስከሚደርስ ድረስ ንዑስ ጽሑፎችን እናገኛለን ፣ ከዚያ ወደ ኢንቲጀር እንለውጣቸዋለን። የሰርጦች ሀ እና ለ PWM ን እናዘጋጃለን ተለዋዋጭውን እናጸዳለን።
ከሆነ (c == '\ n') {// se um caracter de nova linha for recebido int virgula = dados.indexOf (','); // '' '' '' '' '' '' '' '' '' '' '' '' '' (''); // obtenha a substring até antes da vírgula e converta para inteiro ciclo_B = dados.substring (virgula + 1, dados.length ()). toInt (); // obtenha a substring após a vírgula e converta para inteiro ledcWrite (canal_A, ciclo_A); // አጁስታታ ወይም ፒኤምኤም ቦይ A ledcWrite (canal_B ፣ ciclo_B); // Ajusta o PWM ቦይ ቢ ዳዶስ = ""; // ሊምፓ አንድ variável}}}}
ደንበኛው ከተቋረጠ የግንኙነቱን መጨረሻ እናረጋግጣለን። ለአፍታ እንጠብቃለን እና “ምንም ደንበኛ አልተገናኘም” ን እናተምማለን። ከዚያ እንደገና ከመጀመርዎ በፊት ሌላ ሰከንድ እንጠብቃለን።
// caso o cliente se desconecte, confirma o fim da conexão መዘግየት (50); // aguarda um momento cliente.stop (); Serial.println ("Nenhum cliente conectado."); // mensagem መዘግየት (1000); // aguarda um segundo antes de reiniciar}
ደረጃ 8 የደንበኛ ምንጭ ኮድ
መግለጫዎች
በዚህ ጊዜ በደንበኛው ላይ የ WiFi ቤተ -መጽሐፍትን እንደገና አካተናል። እንዲሁም ፣ ተለዋዋጮችን እንገልፃለን።
#const char* ssid = "ESP32ap" ን ያካትቱ ፤ // SSID do 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 do servidor const int pin_Leitura_A = 36; // GPIO de 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 velor do ciclo do PWM B WiFiClient cliente; // declaração do objeto cliente
አዘገጃጀት ()
ጂፒኦዎችን እንደ ግብዓት እንገልፃለን ፣ ተከታታይን እንጀምራለን እና ከመዳረሻ ነጥብ ጋር እንገናኝ።
ባዶነት ማዋቀር () {pinMode (pin_Leitura_A ፣ INPUT) ፤ // GPIO como entrada pinMode (pin_Leitura_B ፣ INPUT) ይግለጹ; // ይግለጹ የ GPIO como entrada Serial.begin (115200); // inicia a comunicação ተከታታይ WiFi.begin (ssid ፣ የይለፍ ቃል); // conecta ao ponto de acesso}
ሉፕ ()
በዚህ Loop ውስጥ ከአገልጋዩ ጋር እንገናኛለን ፣ ማለትም ሌላውን ESP ማለት ነው።
ባዶነት loop () {// se não conectado ao ponto de acesso, tena se conectar while (WiFi.status ()! = WL_CONNECTED) {Serial.println (String (millis ()) + " - Conectando no WiFi" + ssid + "…"); // mensagem WiFi.begin (ssid ፣ የይለፍ ቃል); መዘግየት (2000); } Serial.println (ሕብረቁምፊ (ሚሊስ ()) + " - Conectado …"); // mensagem // se não conectado ao servidor, tenta se conectar while (! cliente.connect (host, port)) {Serial.println (String (millis ()) + " - Conectando no Servidor" + host + ":") + ወደብ + “…”); // mensagem መዘግየት (1000); }
በዚህ ደረጃ ፣ ከአገልጋዩ ጋር ስንገናኝ ፣ የ ADC0 እና ADC3 ንባብ ለማከማቸት ተለዋዋጮችን እንፈፅማለን። እንዲሁም ፣ የ 500 ናሙናዎችን ንባብ አከናውነናል እና ንባቦቹን አማካኝ አድርገናል። ለ servos ቁጥጥር ትክክለኛውን የቆይታ ጊዜ ለመፍጠር ንባቡን ካርታ አድርገናል ፣ እና አጣምረን ወደ አገልጋዩ እንልካለን።
// enquanto estiver conectado ao servidor ሳለ (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 ሳለ (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 = ካርታ (leitura_A, 0, 4095, 140, 490); // mapeia a leitura para criar a duração correta para controle do servo ciclo_B = map (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 (ሕብረቁምፊ (ciclo_A) + "," + String (ciclo_B)); }
በመጨረሻም ፣ ካልተገናኘ ፣ ተመጣጣኝ መልዕክቱን በማሳየት ግንኙነቱ መቋረጡን እናረጋግጣለን።
// se não coonectado, garante que a conexão foi finalizada cliente.stop (); Serial.println (ሕብረቁምፊ (ሚሊስ ()) + " - ደንበኛ desconectado …"); // mensagem}
ደረጃ 9 - ፋይሎች
ፋይሎቹን ያውርዱ ፦
ፒዲኤፍ
INO
የሚመከር:
የ ESP32-CAM ቦርድን በመጠቀም የፊት ካሜራ ያለው የአይፒ ካሜራ 5 ደረጃዎች
የአይፒ ካሜራ የ ESP32-CAM ቦርድን በመጠቀም ፊት መለየት-ይህ ልጥፍ ከሌሎቹ ጋር ሲነፃፀር የተለየ ነው እና በሚያስደንቅ ሁኔታ ርካሽ (ከ 9 ዶላር በታች) እና ለመጠቀም ቀላል የሆነውን በጣም አስደሳች የሆነውን የ ESP32-CAM ቦርድ እንመለከታለን። 2 ን በመጠቀም የቀጥታ ቪዲዮ ምግብን ለመልቀቅ የሚያገለግል ቀላል የአይፒ ካሜራ እንፈጥራለን
CCTV ካሜራ ከኖድ ኤምሲዩ + የድሮ ላፕቶፕ ካሜራ ሞዱል ጋር (ብሊንክን ሳይጠቀም እና ሳይጠቀም) 5 ደረጃዎች
CCTV ካሜራ ከኖድ ኤምሲዩ + የድሮ ላፕቶፕ የካሜራ ሞዱል ጋር (ብሊንክን ሳይጠቀም እና ሳይጠቀም) - ሠላም ወንዶች! በዚህ መመሪያ ውስጥ ፣ እኔ ከሲሲቪ ጋር ተመሳሳይ የሆነ ነገር ለመሥራት የድሮ ላፕቶፕ ካሜራ ሞዱሉን እና nodeMCU ን እንዴት እንደ ተጠቀምኩ አሳያችኋለሁ።
በጣም ቀላሉ የድር ካሜራ እንደ የደህንነት ካሜራ - የእንቅስቃሴ መፈለጊያ እና የኢሜል ስዕሎች 4 ደረጃዎች
በጣም ቀላሉ የድር ካሜራ እንደ የደህንነት ካሜራ - የእንቅስቃሴ መፈለጊያ እና የኢሜል ሥዕሎች ከእንቅስቃሴ የተገኙ ሥዕሎችን ከድር ካሜራዎ ወደ ኢሜልዎ ለማምጣት ማውረድ ወይም ማዋቀር አያስፈልግዎትም - በቀላሉ አሳሽዎን ይጠቀሙ። በዊንዶውስ ፣ በማክ ወይም በ Android ላይ ወቅታዊውን ፋየርፎክስ ፣ Chrome ፣ ጠርዝ ወይም ኦፔራ አሳሽ ይጠቀሙ
በሃውኬዬ ብራውን ካሜራ ውስጥ የድር ካሜራ 3 ደረጃዎች (ከስዕሎች ጋር)
በሃውኬዬ ብራውን ካሜራ ውስጥ ዌብካም - ከጥቂት የእሳት እራቶች በፊት የድሮ ማጠፊያ ካሜራ ውስጥ የድር ካሜራ ስለማስቀመጥ በ Make መጽሔት ላይ ወደ አንድ ዲይ እሮጣለሁ ፣ እና እኔ በነጥብ እና በጥይት ተኩስ ለማድረግ ከሞከርኩት ጋር ቅርብ የሆነ ነገር ነበር። ግን ለእሱ ፍጹም የሆነ ጉዳይ አላገኘሁም። እወዳለሁ
በማንኛውም ካሜራ ላይ ካሜራዎን ወደ “ወታደራዊ የምሽት ዕይታ” ውስጥ ማድረጉ ፣ የሌሊትቪዥን ውጤትን ማከል ወይም የሌሊት እይታን ሁኔታ በማንኛውም ካሜራ ላይ መፍጠር !!!: 3 ደረጃዎች
ካሜራዎን ወደ “ወታደራዊ የምሽት ዕይታ” ፣ የሌሊትቪዥን ተፅእኖን ማከል ወይም የሌሊት ዕይታን ሁኔታ በማንኛውም ካሜራ ላይ መፍጠር !!!: *** ይህ በዲጂታል ቀኖች ፎቶ ውድድር ውስጥ እባክዎን ድምጽ ይስጡኝ ** *ማንኛውም እገዛ ከፈለጉ እባክዎን በኢሜል ይላኩ - [email protected] እንግሊዝኛ ፣ ፈረንሣይኛ ፣ ጃፓናዊ ፣ ስፓኒሽ እና እኔ የምችል ከሆነ ሌላ ቋንቋዎችን አውቃለሁ