ዝርዝር ሁኔታ:

DuvelBot - ESP32 -CAM ቢራ ሮቦት የሚያገለግል 4 ደረጃዎች (ከስዕሎች ጋር)
DuvelBot - ESP32 -CAM ቢራ ሮቦት የሚያገለግል 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: DuvelBot - ESP32 -CAM ቢራ ሮቦት የሚያገለግል 4 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: DuvelBot - ESP32 -CAM ቢራ ሮቦት የሚያገለግል 4 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: Goodies 2024, ህዳር
Anonim
DuvelBot - ESP32 -CAM ቢራ የሚያገለግል ሮቦት
DuvelBot - ESP32 -CAM ቢራ የሚያገለግል ሮቦት

የከባድ ቀን ሥራን በመከተል ፣ የሚወዱትን ቢራ በሶፋው ላይ ለማጠጣት ምንም አይጠጋም። በእኔ ሁኔታ ያ ያ የቤልጂየም ብልጭልጭ አለ “ዱቬል” ነው። ሆኖም ፣ ከመውደቃችን በኋላ በጣም ከባድ የሆነ ችግር ገጥሞናል - የእኔን Duvel የያዘው ፍሪጅ ከዚህ ሶፋ ላይ የማይወገድ 20 ጫማ ነው።

ከጎኔ ያለው አንዳንድ ቀላል ማስገደድ በሳምንት ውስጥ የ Duvel ን አበል ለማፍሰስ አልፎ አልፎ በአሥራዎቹ ዕድሜ ውስጥ የሚገኝ የፍሪጅ ማጭበርበሪያ ማሽን ቢያንቀሳቅሰውም ፣ ለደከመው ቅድመ አያቱ የማድረስ ተግባር በእርግጥ አንድ እርምጃ በጣም ሩቅ ነው።

ብረትን እና ቁልፍ ሰሌዳውን ለማላቀቅ ጊዜው …

DuvelBot ከስማርትፎንዎ ፣ ከአሳሽዎ ወይም ከጡባዊዎ ሊቆጣጠሩት የማይችሉት AI- Thinker ESP32-CAM የተመሠረተ የመንዳት ድር ካሜራ ነው።

ይህንን የመሣሪያ ስርዓት ከአነስተኛ የአልኮል መጠቀሚያዎች ጋር ማላመድ ወይም ማስፋፋት ቀላል ነው (SpouseSpy ፣ NeighbourWatch ፣ KittyCam…) ያስቡ።

እኔ ይህንን ሮቦት የገነባሁት ስለ አጠቃላይ የድር መርሃ ግብር እና ስለ IoT ነገሮች ትንሽ ለማወቅ ፣ ስለ እኔ ምንም የማውቀው ነገር የለም። ስለዚህ በዚህ Instructable መጨረሻ ላይ ያ እንዴት እንደሚሠራ ሰፋ ያለ ማብራሪያ አለ።

ብዙ የዚህ አስተማሪ ክፍሎች በ Random Nerd Tutorials ላይ በተገኙት እጅግ በጣም ጥሩ ማብራሪያዎች ላይ የተመሰረቱ ናቸው ፣ ስለሆነም እባክዎን ጉብኝት ያድርጉላቸው!

አቅርቦቶች

ምንድን ነው የሚፈልጉት:

የክፍሎቹ ዝርዝር በድንጋይ አልተቀረጸም እና ብዙ ክፍሎች በተለያዩ ስሪቶች ቶን እና ከብዙ የተለያዩ ቦታዎች ማግኘት ይችላሉ። እኔ በጣም የገዛሁት ከአሊ-ኤክስፕረስ ነው። ልክ ማቼቴ እንዳሉት - ማሻሻል።

ሃርድዌር

  • AI Thinker ESP32-CAM ሞዱል። ምናልባት ከሌሎች የ ESP32-CAM ሞጁሎች ጋር ሊሠራ ይችላል ግን እኔ የተጠቀምኩት ያ ነው
  • L298N የሞተር ሾፌር ቦርድ ፣
  • ርካሽ ባለ 4 ጎማ ሮቦቶች መድረክ ፣
  • እንደ ሃሞንድ ኤሌክትሮኒክስ 1599KGY ያለ ትልቅ ጠፍጣፋ ወለል ያለው መኖሪያ ቤት ፣
  • ለፕሮግራም ዩኤስቢ-ወደ -3.3V-TTL- መለወጫ።
  • ለብርሃን: 3 ነጭ ኤልኢዲዎች ፣ BC327 ወይም ሌላ አጠቃላይ ዓላማ ትራንዚስተር NPN (Ic = 500mA) ፣ 4k7k resistor ፣ 3 82Ohm resistors ፣ perfboard ፣ ኬብሎች (ሥዕላዊ መግለጫዎችን እና ስዕሎችን ይመልከቱ)።
  • ማብሪያ/ማጥፊያ መቀየሪያ ማብሪያ/ማጥፊያ እና ለፕሮግራም በመደበኛነት ክፍት የሆነ የግፊት ቁልፍ።

አማራጭ

  • በ ESP32-CAM ሞዱል ከተሰጡት መደበኛ የ OV2460 ካሜራ ረዘም ያለ ተጣጣፊ ያለው የዓሣ ካሜራ።
  • የ WiFi አንቴና በተገቢው ረዥም ኬብል እና እጅግ በጣም አናሳ Coax አያያዥ ፣ እንደዚህ ያለ። ESP32-CAM በመርከብ ላይ አንቴና አለው እና መኖሪያ ቤቱ ፕላስቲክ ነው ፣ ስለዚህ አንቴና በእውነት አያስፈልገውም ፣ ግን አሪፍ መስሎኝ ነበር ፣ ስለዚህ…
  • ለላይኛው የሽፋን ንድፍ Inkjet ሊታተም የሚችል ተለጣፊ ወረቀት።

የተለመደው የሃርድዌር መሣሪያዎች -ብየዳ ብረት ፣ መልመጃዎች ፣ ዊንዲውር ፣ ፕለር …

ደረጃ 1 የሮቦት መድረክን መገንባት

የሮቦት መድረክን መገንባት
የሮቦት መድረክን መገንባት
የሮቦት መድረክን መገንባት
የሮቦት መድረክን መገንባት
የሮቦት መድረክን መገንባት
የሮቦት መድረክን መገንባት

ዘዴው:

መርሃግብሩ ልዩ አይደለም። ESP32- ካሜራ ሁለት ሰርጦች ባሉት በ L298N ሞተር የመንጃ ቦርድ በኩል ሞተሮችን ይቆጣጠራል። የግራ እና የቀኝ ጎን ሞተሮች በትይዩ ይቀመጣሉ እና እያንዳንዱ ጎን አንድ ሰርጥ ይይዛል። አራት ትናንሽ 10..100nF የሴራሚክ መያዣዎች ከሞተር ፒኖች ጋር ቅርብ የ RF ጣልቃ ገብነትን ለመቃወም ሁል ጊዜ የሚመከሩ ናቸው። እንዲሁም ፣ በእቅዱ ውስጥ እንደሚታየው በሞተር ቦርድ አቅርቦት ላይ አንድ ትልቅ የኤሌክትሮላይት ካፕ (2200… 4700uF) ፣ በጥብቅ አስፈላጊ ባይሆንም ፣ የአቅርቦቱን voltage ልቴጅ በትንሹ ሊገድብ ይችላል (አስፈሪ ፊልም ማየት ከፈለጉ ፣ ከዚያ Vbat ን ይፈትሹ) ሞተሮቹ በሚንቀሳቀሱበት ጊዜ ከአ oscilloscope ጋር)።

ያስታውሱ ሁለቱም የሞተር ሰርጦች የሚቻል ፒን በ ESP32 (IO12) በተመሳሳዩ የልብ ምት ስፋት (PWM) ፒን የሚነዱ ናቸው። ይህ የሆነው የ ESP32-CAM ሞዱል ቶን ጂፒኦዎች ስለሌለው (የሞጁሉ መርሃግብር ለማጣቀሻ ተካትቷል) ነው። የሮቦቱ ኤልኢዲዎች በ IO4 የሚነዱ ናቸው ፣ እሱ ደግሞ የቦርዱ ፍላሽ ኤልኤልን ይነዳዋል ፣ ስለዚህ ፍላሽ ኤልዲ በተዘጋ መኖሪያ ቤት ውስጥ እንዳይበራ ለመከላከል Q1 ን ያስወግዱ።

የፕሮግራም ማድረጊያ ቁልፍ ፣ ማብሪያ/ማጥፊያ ፣ የኃይል መሙያ አያያዥ እና የፕሮግራም አያያዥ በሮቦት ስር ተደራሽ ናቸው። ለፕሮግራም አያያዥ (3.5 ሚሜ መሰኪያ?) በጣም የተሻለ ሥራ መሥራት እችል ነበር ፣ ግን ቢራ ከእንግዲህ መጠበቅ አልቻለም። እንዲሁም የአየር ላይ ዝመናዎች (ኦቲኤ) ለማዋቀር ጥሩ ይሆናል።

ሮቦትን በፕሮግራም ሞድ ውስጥ ለማስቀመጥ የፕሮግራም ቁልፍን ይጫኑ (ይህ IO0 ን ይጎትታል) እና ከዚያ ያብሩት።

አስፈላጊ -የሮቦቱን የኒኤምኤች ባትሪዎችን ለመሙላት ፣ የላቦራቶሪ አቅርቦት ስብስብ (ያልተጫነ) ወደ 14 ቮ ገደማ እና የአሁኑ በ 250mA የተገደበ ነው። ቮልቴጅ ከባትሪዎቹ voltage ልቴጅ ጋር ይጣጣማል። ሮቦቱ ሙቀት ከተሰማው ወይም የባትሪው ቮልቴጅ ወደ 12.5 ቮ ገደማ ከደረሰ ያላቅቁ። እዚህ ላይ ግልጽ የሆነ መሻሻል ትክክለኛውን የባትሪ መሙያ ማዋሃድ ይሆናል ፣ ግን ያ ከዚህ አስተማሪ ወሰን ውጭ ነው።

ሃርድዌር:

እባክዎን በስዕሎቹ ውስጥ ያሉትን ማስታወሻዎች ይመልከቱ። መኖሪያ ቤቱ በሮቦት መሠረት ላይ 4 M4 ብሎኖች እና የራስ መቆለፊያ ፍሬዎችን በመጠቀም ይጫናል። እንደ የርቀት ጠቋሚዎች ጥቅም ላይ የዋለውን የጎማ ቱቦ ልብ ይበሉ። ተስፋ እናደርጋለን ፣ ጉዞው ጎበዝ ሆኖ ከተገኘ ይህ ለ Duvel የተወሰነ እገዳን ይሰጣል። የ ESP32-CAM ሞዱል እና የ L298N ሞተር ቦርድ ተጨማሪ ቀዳዳዎችን መቆፈር እንዳይኖር ለመከላከል የፕላስቲክ ተለጣፊ እግሮችን (ትክክለኛውን ስም በእንግሊዝኛ እርግጠኛ አይደለም) በመጠቀም በቤቱ ውስጥ ተጭነዋል። እንዲሁም ESP32 በእራሱ የሽቶ ሰሌዳ እና ሊሰካ በሚችል የፒንሄቨሮች ላይ ተጭኗል። ይህ ESP32 ን ለመለዋወጥ ቀላል ያደርገዋል።

አይርሱ-አብሮ በተሰራው ምትክ ከውጭ የ WiFi አንቴና ጋር የሚሄዱ ከሆነ ፣ እንዲሁም በ ESP32-CAM ቦርድ ታችኛው ክፍል ላይ የአንቴና-ምርጫ መዝለያውን ይሸጡ።

በ DuvelBot.svg ፋይል ውስጥ የላይኛውን አርማ በቀለም ተለጣፊ ወረቀት ላይ ያትሙ (ወይም የራስዎን ንድፍ ያድርጉ) ፣ እና ለመሄድ ዝግጁ ነዎት!

ደረጃ 2 - ሮቦትን ፕሮግራም ያድርጉ

ሮቦትን ፕሮግራም ያድርጉ
ሮቦትን ፕሮግራም ያድርጉ

ሮቦቱን ከመዝጋትዎ በፊት መርሃግብር ማድረጉ ይመከራል ፣ ሁሉም ነገር እንደሚሰራ እና ምንም አስማታዊ ጭስ እንዳይታይ።

የሚከተሉትን የሶፍትዌር መሣሪያዎች ያስፈልግዎታል

  • የአርዱዲኖ አይዲኢ ፣
  • የ ESP32 ቤተመፃህፍት ፣ SPIFFS (ተከታታይ peripheral flash file system) ፣ ESPAsync Webserver library።

የኋለኛው ይህንን “randomnerdtutorial” ን በመከተል እና “ፋይሎችዎን ማደራጀት” የሚለውን ክፍል በመከተል ሊጫን ይችላል። በእውነቱ በተሻለ ሁኔታ መግለፅ አልቻልኩም።

ኮዱ ፦

የእኔ ኮድ እዚህ ይገኛል

  • የአርዱዲኖ ንድፍ DuvelBot.ino ፣
  • SPIFFS ን በመጠቀም ወደ ESP ፍላሽ የሚሰቀሉትን ፋይሎች የያዘ የውሂብ ንዑስ አቃፊ። ይህ አቃፊ ESP የሚያገለግልበትን ድረ -ገጽ ይ indexል (index.html) ፣ የድረ -ገጹ (duvel.png) አካል የሆነ የአርማ ምስል እና የታሸገ የቅጥ ሉህ ወይም የ CSS ፋይል (style.css)።

ሮቦትን ፕሮግራም ለማድረግ -

  • በስዕላዊ መግለጫው ላይ እንደሚታየው የዩኤስቢ- TTL መለወጫውን ያገናኙ ፣
  • ፋይል -> ክፈት -> DuvelBot.ino ወደሚገኝበት አቃፊ ይሂዱ።
  • በስዕሉ ውስጥ የአውታረ መረብ ምስክርነቶችን ይለውጡ

const char* ssid = "yourNetworkSSIDHere"; const char* password = "yourPasswordHere";

  • መሣሪያዎች -> ቦርድ -> “AI- Thinker ESP -32 CAM” እና ለፒሲዎ ተገቢውን ተከታታይ ወደብ ይምረጡ (መሳሪያዎች -> ወደብ -> የሆነ ነገር /dev /ttyUSB0 ወይም COM4) ፣
  • በአርዱዲኖ አይዲኢ ውስጥ ተከታታይ ማሳያውን ይክፈቱ ፣ የ PROG ቁልፍን (IO0 ን ዝቅ የሚያደርግ) ሲጫኑ ፣ ሮቦቱን ያብሩ ፣
  • ESP32 ለማውረድ ዝግጁ መሆኑን በተከታታይ ማሳያ ላይ ያረጋግጡ ፣
  • ተከታታይ ማሳያውን ይዝጉ (አለበለዚያ የ SPIFFS ጭነት አልተሳካም) ፣
  • መሣሪያዎች -> "ESP32 Sketch Data Upload" እና እስኪጨርስ ይጠብቁ ፣
  • ወደ ፕሮግራሚንግ ሁኔታ ለመመለስ የ PROG ቁልፍን ያጥፉ እና እንደገና ያብሩ ፣
  • ንድፉን ለማዘጋጀት “ስቀል” የሚለውን ቀስት ይጫኑ እና እስኪጨርስ ይጠብቁ ፣
  • ተከታታይ ማሳያውን ይክፈቱ እና ESP32 ን በማብራት/በማብራት ፣
  • አንዴ ከተነሳ የአይፒ አድራሻውን (እንደ 192.168.0.121 ያለ ነገር) ልብ ይበሉ እና ሮቦቱን ከዩኤስቢ- TTL መቀየሪያ ያላቅቁት ፣
  • በዚህ አይፒ አድራሻ ላይ አሳሽ ይክፈቱ። በስዕሉ ላይ እንደሚታየው በይነገጹን ማየት አለብዎት።
  • እንደ አማራጭ የ ESP32 ማክሮ አድራሻውን በ ራውተርዎ ውስጥ ወዳለ ቋሚ የአይፒ አድራሻ ያዋቅሩ (እንዴት ማድረግ እንደሚቻል በ ራውተር ላይ የተመሠረተ ነው)።

ይሀው ነው! እንዴት እንደሚሰራ ለማወቅ ከፈለጉ ያንብቡ…

ደረጃ 3: እንዴት እንደሚሰራ

አሁን ወደ አስደሳችው ክፍል እንመጣለን -ሁሉም እንዴት አብሮ ይሠራል?

እሱን ለማብራራት እሞክራለሁ… በ… ደረጃ ግን እባክዎን ያስታውሱ ካጅጃፕስ የድር ፕሮግራም ባለሙያ አይደለም። እንደ እውነቱ ከሆነ ፣ ጥቂት የድር ፕሮግራም መማር DuvelBot ን የመገንባት አጠቃላይ መነሻ ነበር። ግልፅ ስህተቶችን ከሠራሁ እባክዎን አስተያየት ይተው!

እሺ ፣ ESP32 ከበራ በኋላ ፣ እንደተለመደው በማዋቀር ላይ ጂፒኦዎችን ይጀምራል ፣ ለሞተር እና ለ LED ቁጥጥር ከ PWM ሰዓት ቆጣሪዎች ጋር ያቆራኛቸዋል። በሞተር መቆጣጠሪያ ላይ ለበለጠ እዚህ ይመልከቱ ፣ እሱ በጣም ጥሩ ደረጃ ነው።

ከዚያ ካሜራው ተዋቅሯል። ዘገምተኛ ምላሽ እንዳይኖር ሆን ብዬ ውሳኔውን በጣም ዝቅተኛ (ቪጂኤ ወይም 640x480) ጠብቄአለሁ። የ AI-Thinker ESP32-CAM ቦርድ በትልቅ ጥራት የካሜራ ፍሬሞችን ለማከማቸት የሚጠቀም ተከታታይ ራም ቺፕ (PSRAM) እንዳለው ልብ ይበሉ

ከሆነ (psramFound ()) {Serial.println ("PSRAM ተገኝቷል"); config.frame_size = FRAMESIZE_VGA; config.jpg_quality = 12; config.fb_count = 2; // የክፈፍ አምራቾች ቁጥር https://github.com/espressif/esp32-camera} ሌላ {Serial.println («PSRAM አልተገኘም») ይመልከቱ ፤ config.frame_size = FRAMESIZE_QVGA; config.jpg_quality = 12; config.fb_count = 1; }

ከዚያ ተከታታይ ተጓዳኝ ፍላሽ ፋይል ስርዓት (SPIFFS) ተጀምሯል -

// (SPIFFS.begin (እውነተኛ)) {Serial.println (“SPIFFS ን በመጫን ጊዜ ስህተት ተከስቷል!”) ከሆነ SPIFFS ን ያስጀምሩ። መመለስ; }

SPIFFS በ ESP32 ላይ እንደ ትንሽ የፋይል ስርዓት ይሠራል። እዚህ ሶስት ፋይሎችን ለማከማቸት ይጠቅማል -ድረ -ገጹ ራሱ index.html ፣ የታሸገ ፋይል የቅጥ ሉህ style.css ፣ እና-p.webp

ቀጥሎ ESP32 ከእርስዎ ራውተር ጋር ይገናኛል (ከመስቀልዎ በፊት ምስክርነቶችዎን ማዘጋጀትዎን አይርሱ)

// የራውተርዎን ምስክርነቶች እዚህ ይለውጡ charcon* ssid = "yourNetworkSSIDHere"; const char* password = "yourPasswordHere"; … // ከ WiFi Serial.print (“ከ WiFi ጋር መገናኘት”) ይገናኙ ፤ WiFi.begin (ssid ፣ የይለፍ ቃል); ሳለ (WiFi.status ()! = WL_CONNECTED) {Serial.print ('.')); መዘግየት (500); } // አሁን ከራውተሩ ጋር ተገናኝቷል - ESP32 አሁን የአይፒ አድራሻ አለው

በእውነቱ ጠቃሚ የሆነ ነገር ለማድረግ ፣ የማይመሳሰል የድር አገልጋይ እንጀምራለን-

// በ AsincWebServer ነገር ወደብ 80AsyncWebServer አገልጋይ (80) ላይ ይፍጠሩ ፤ … Server.begin (); // ለግንኙነቶች ማዳመጥ ይጀምሩ

አሁን ፣ በአሳሹ የአድራሻ አሞሌ ውስጥ በራውተሩ ለ ESP32 የተመደበውን የአይፒ አድራሻ ቢተይቡ ፣ ESP32 ጥያቄ ያገኛል። ይህ ማለት ለደንበኛው (እርስዎ ፣ ወይም አሳሽዎ) የሆነ ነገር በማቅረብ ፣ ለምሳሌ አንድ ድረ -ገጽ መስጠት አለበት ማለት ነው።

ESP32 እንዴት እንደሚመልስ ያውቃል ፣ ምክንያቱም በማዋቀር ውስጥ ለሁሉም ሊሆኑ ለሚችሉ ጥያቄዎች ምላሾች አገልጋይን () በመጠቀም ተመዝግበዋል። ለምሳሌ ፣ ዋናው ድረ -ገጽ ወይም መረጃ ጠቋሚ (/) እንደሚከተለው ተይ isል -

አገልጋይ። አንጎለ ኮምፒውተር);});

ስለዚህ ደንበኛው ከተገናኘ ፣ ESP32 የፋይሉን index.html ከ SPIFFS ፋይል ስርዓት በመላክ ምላሽ ይሰጣል። የመለኪያ ማቀነባበሪያው ኤችቲኤምኤልን ቀድሞ የሚያከናውን እና ማንኛውንም ልዩ መለያዎችን የሚተካ የተግባር ስም ነው-

// ሊያሳዩት በሚፈልጓቸው ተለዋዋጮች እንደ %DATA %// በ html ውስጥ ቦታ ባለቤቶችን ይተካል/

ውሂብ %DATA %

ሕብረቁምፊ አንጎለ ኮምፒውተር (const String & var) {if (var == "DATA") {//Serial.println(" in processor! "); ተመለስ ሕብረቁምፊ (dutyCycleNow); } ሕብረቁምፊን ይመልሱ ();}

አሁን ፣ የድር ገጹን index.html እራሱ እንዲታመም ያስችለዋል። በአጠቃላይ ሁል ጊዜ ሶስት ክፍሎች አሉ-

  1. html ኮድ - ምን ክፍሎች መታየት አለባቸው (አዝራሮች/ጽሑፍ/ተንሸራታቾች/ምስሎች ወዘተ) ፣
  2. የቅጥ ኮድ ፣ በተለየ.css ፋይል ውስጥ ወይም በ…
  3. ጃቫስክሪፕት ሀ… ክፍል - ድረ -ገጹ እንዴት እንደሚሠራ።

አንዴ index.html በአሳሹ ውስጥ ከጫነ (በ DOCTYPE መስመር ምክንያት ኤችቲኤምኤል መሆኑን ያውቃል) ፣ ወደዚህ መስመር ይሄዳል።

ያ ለ css የቅጥ ሉህ ጥያቄ ነው። የዚህ ሉህ ቦታ በ href = "…" ውስጥ ተሰጥቷል። ስለዚህ አሳሽዎ ምን ያደርጋል? ትክክል ፣ ሌላ ጥያቄ ለአገልጋዩ ይጀምራል ፣ በዚህ ጊዜ ለ style.css። የተመዘገበ ስለሆነ አገልጋዩ ይህንን ጥያቄ ይይዛል።

server.on ("/style.css", HTTP_GET, (AsyncWebServerRequest *request) {Serial.println ("css ጥያቄ ደርሷል"); ");});

ንፁህ? በነገራችን ላይ አሳሽዎ ሁሉ ለሚንከባከበው href = "/some/file/on/the/other/side/of/the/the moon" ሊሆን ይችላል። ያንን ፋይል በደስታ ለማምጣት ይሄዳል። መልክን ስለሚቆጣጠር ስለ ቅጦች ሉህ አልገልጽም ስለዚህ እዚህ በእውነት አስደሳች አይደለም ፣ ግን የበለጠ ለማወቅ ከፈለጉ ይህንን አጋዥ ስልጠና ይመልከቱ።

የ DuvelBot አርማ እንዴት ይታያል? በ index.html ውስጥ እኛ አለን

ESP32 ለሚከተለው ምላሽ ይሰጣል

አገልጋይ። );});

..ሌላ የ SPIFFS ፋይል ፣ በዚህ ጊዜ በምስል “ምስል/png” እንደተመለከተው የተሟላ ምስል።

አሁን ወደ በጣም አስደሳችው ክፍል እንመጣለን -ለአዝራሮቹ ኮድ። በ FORWARD አዝራር ላይ እናተኩር-

ወደፊት

ክፍሉ = "…" የሚለው ስም መጠኑን ፣ ቀለሙን ፣ ወዘተ ለማበጀት ከቅጥ ሉህ ጋር ለማገናኘት ስም ብቻ ነው አስፈላጊዎቹ ክፍሎች onmousedown = "toggleCheckbox ('ወደፊት')" እና onmouseup = "toggleCheckbox ('stop') ". እነዚህ የአዝራር ድርጊቶችን (ለ ontouchstart/ontouchend ተመሳሳይ ናቸው ፣ ግን ያ ለንክኪ ማያ ገጾች/ስልኮች ነው)። እዚህ ፣ የአዝራር እርምጃው በጃቫስክሪፕት ክፍል ውስጥ toggleCheckbox (x) ተግባርን ይጠራል-

ተግባር toggleCheckbox (x) {var xhr = new XMLHttpRequest (); xhr.open ("GET", "/" + x, true); xhr.send (); // ዝግጁ በሚሆንበት ጊዜ በምላሹ አንድ ነገር ማድረግ ይችላል ፣ ግን እኛ አናደርግም}

ስለዚህ የማስተላለፊያ አዝራሩን በመጫን ወዲያውኑ የመቀየሪያ ሳጥንን ('ወደፊት') ጥሪን ያስከትላል። ይህ ተግባር ከዚያ በአሳሽዎ የአድራሻ አሞሌ ውስጥ 192.168.0.121/forward ብለው ቢተይቡ ልክ እንደ ሚሠራው የ “XMLHttpRequest” GET”፣ የአከባቢው/ወደፊት” ን ይጀምራል። አንዴ ይህ ጥያቄ ESP32 ላይ ከደረሰ ፣ የሚስተናገደው በ ፦

አገልጋይ።. );});

አሁን ESP32 በቀላሉ “እሺ ወደፊት” በሚለው ጽሑፍ ይመልሳል። ማስታወሻ toggleCheckBox () በዚህ ምላሽ (ወይም በመጠባበቅ) ምንም አያደርግም ፣ ሆኖም በኋላ ላይ በካሜራው ኮድ እንደሚታየው።

በዚህ ምላሽ ወቅት ፣ ፕሮግራሙ ቁልፉን ለመጫን ምላሽ እንደመሆኑ ተለዋዋጭ እርምጃNow = FORWARD ን ብቻ ያዘጋጃል። አሁን በፕሮግራሙ ዋና ክፍል ውስጥ ይህ ተለዋዋጭ የሞተር ሞተሮችን PWM ወደ ላይ/ወደ ታች ከፍ ለማድረግ/ዓላማውን ይቆጣጠራል። አመክንዮው -አቁም ያልሆነ እርምጃ እስካለን ድረስ ፣ የተወሰነ ቁጥር (dutyCycleMax) እስኪደርስ ድረስ በዚያ አቅጣጫ ሞተሮችን ከፍ ያድርጉ። እርምጃው አሁን እስካልተለወጠ ድረስ ያንን ፍጥነት ያክብሩ።

ባዶነት loop () {currentMillis = millis (); ከሆነ (currentMillis - previousMillis> = dutyCycleStepDelay) {// የቀደመውን ሉፕ የፈፀሙበትን የመጨረሻ ጊዜ ይቆጥቡMillis = currentMillis; // mainloop ሞተሮችን (እርምጃNow! ከሆነ (dutyCycleNow <= 0) {// ዲሲን ወደ ታች ካወረደ በኋላ 0 ከሆነ ፣ ወደ አዲሱ አቅጣጫ ከተዋቀረ ፣ ከ min dutycycle setDir (actionNow) ይጀምሩ ፤ previousAction = actionNow; dutyCycleNow = dutyCycleMin; }} ሌላ // actionNow == ቀዳሚው እርምጃ ከፍ ይላል ፣ አቅጣጫው እስኪያቆም ድረስ {ከሆነ (actionNow! = STOP) {dutyCycleNow = dutyCycleNow+dutyCycleStep; ከሆነ (dutyCycleNow> dutyCycleMax) dutyCycleNow = dutyCycleMax; } ሌላ ግዴታCycleNow = 0; } ledcWrite (pwmChannel ፣ dutyCycleNow); // የሞተር ብስክሌቱን ያስተካክሉ}}

ይህ በሙሉ ፍጥነት ከመጀመር እና ውድ የሆነውን ውድ ዱቭልን ከመፍሰስ ይልቅ የሞተሮችን ፍጥነት ቀስ በቀስ ይጨምራል። ግልፅ መሻሻል ይህንን ኮድ ወደ ሰዓት ቆጣሪ ማቋረጫ አሠራር ማዛወር ነው ፣ ግን እንደዛው ይሠራል።

አሁን የማስተላለፊያ አዝራሩን ከለቀቅን ፣ አሳሽዎ ወደ toggleCheckbox ('stop') ይጠራል ፣ ይህም GET /ለማቆም ጥያቄን ያስከትላል። ESP32 እርምጃውን አሁን ለማቆም ያዘጋጃል (እና “እሺ አቁም” የሚል ምላሽ ይሰጣል) ፣ ይህም የሞተር ሞተሮችን ወደ ታች ለማሽከርከር የሚወስድ ነው።

ስለ LED ዎችስ? ተመሳሳይ ዘዴ ፣ ግን አሁን ተንሸራታች አለን -

በጃቫስክሪፕት ውስጥ የማንሸራተቻው ቅንብር ቁጥጥር ይደረግበታል ፣ ይህም በእያንዳንዱ ለውጥ ላይ ጥሪ//LED/xxx ን ለማግኘት ፣ xxx ኤልዲዎች ሊቀመጡበት የሚገባው የብሩህነት እሴት በሚሆንበት

var ተንሸራታች = document.getElementById ('ተንሸራታች') ፣ sliderDiv = document.getElementById ("sliderAmount"); slide.onchange = ተግባር () {var xhr = new XMLHttpRequest (); xhr.open ("GET", "/LED/" + this.value, true); xhr.send (); sliderDiv.innerHTML = this.value; }

ተንሸራታች ነገሩን እራሱ ለማግኘት ፣ ዶክመንት.getElementByID ('ስላይድ') እንደተጠቀምን እና እሴቱ በእያንዳንዱ ለውጥ ላይ ለጽሑፍ አካል የሚወጣ መሆኑን ልብ ይበሉ።

በስዕሉ ውስጥ ያለው ተቆጣጣሪ በአስተዳዳሪው ምዝገባ ውስጥ “/LED/*” ን በመጠቀም ሁሉንም የብሩህነት ጥያቄዎችን ይይዛል። ከዚያ የመጨረሻው ክፍል (ቁጥር) ተከፍሎ ወደ int ውስጥ ይጣላል

አገልጋይ። ()); ጥያቄ-> ላክ (200 ፣ “ጽሑፍ/ሜዳ” ፣ “እሺ Leds”);});

ከላይ እንደተገለፀው ተመሳሳይ ፣ የሬዲዮ ቁልፎቹ የ PWM ነባሪዎችን የሚያቀናብሩ ተለዋዋጮችን ይቆጣጠራሉ ፣ ይህም DuvelBot በቢራ ቀስ ብሎ ወደ እርስዎ መንዳት ይችላል ፣ ያንን ፈሳሽ ወርቅ እንዳያፈስ ተጠንቀቁ ፣ እና ጥቂት ተጨማሪ ለማምጣት በፍጥነት ወደ ኩሽና ይመለሱ።

… ታዲያ ገጹን ማደስ ሳያስፈልግዎት የካሜራ ምስሉ እንዴት ይዘምናል? ለዚያ AJAX (ያልተመሳሰለ ጃቫስክሪፕት እና ኤክስኤምኤል) የተባለ ዘዴ እንጠቀማለን። ችግሩ በመደበኛነት የደንበኛ-አገልጋይ ግንኙነት አንድ ቋሚ አሰራርን ይከተላል-ደንበኛ (አሳሽ) ጥያቄ ያቀርባል ፣ አገልጋይ (ESP32) ምላሽ ይሰጣል ፣ ጉዳዩ ተዘግቷል። ተከናውኗል። ከእንግዲህ ምንም ነገር አይከሰትም። በሆነ መንገድ አሳሹን በየጊዜው ከ ESP32 ዝመናዎችን እንዲጠይቅ ማታለል ከቻልን… እና በትክክል በዚህ የጃቫስክሪፕት ቁርጥራጭ እናደርጋለን-

setInterval (ተግባር () {var xhttp = new XMLHttpRequest (); xhttp.open ("GET", "/CAMERA", true); xhttp.responseType = "blob"; xhttp.timeout = 500; xhttp.ontimeout = function () {}; xhttp.onload = ተግባር (ሠ) {ከሆነ (this.readyState == 4 && this.status == 200) {// ይመልከቱ https://stackoverflow.com/questions/7650587/using… // https://www.html5rocks.com/en/tutorials/file/xhr2/ var urlCreator = window. URL || window.webkitURL; var imageUrl = urlCreator.createObjectURL (ይህ ምላሽ) ፣ // ከብሎው አንድ ነገር ይፍጠሩ document.querySelector ("#camimage"). src = imageUrl; urlCreator.revokeObjectURL (imageurl)}}; xhttp.send ();}, 250);

setInterval ተግባርን እንደ መለኪያ ይወስድ እና በየግዜው ያስፈጽመዋል (እዚህ በ 250ms አንድ ጊዜ በ 4 ክፈፎች/ሰከንድ ምክንያት)። የተፈጸመው ተግባር በአድራሻው /ካሜራው ላይ የሁለትዮሽ “ነጠብጣብ” ጥያቄ ያቀርባል። ይህ በስዕሉ ውስጥ በ ESP32-CAM የተያዘ ነው (ከ Randomnerdtutorials)

server.on ("/CAMERA" ፣ HTTP_GET ፣ (AsyncWebServerRequest * ጥያቄ) {Serial.println ("የካሜራ ጥያቄ ደርሷል!") ፤ camera_fb_t * fb = NULL; // esp_err_t res = ESP_OK ፤ size_t _jpg_buf_len = 0; * _jpg_buf = NULL; // አንድ ክፈፍ ይያዙ fb = esp_camera_fb_get () ፤ ((fb) {Serial.println («የክፈፍ ቋት ማግኘት አልተቻለም») ፤ ይመለሱ ፤} ከሆነ (fb-> ቅርጸት! = PIXFORMAT_JPEG)/ /ቀድሞውኑ በዚህ ቅርጸት ከቅንብር {bool jpeg_converted = frame-j.webp

አስፈላጊዎቹ ክፍሎች ፍሬሙን fb = esp_camera_fb_get () ወደ-j.webp

ከዚያ የጃቫስክሪፕት ተግባር ይህ ምስል እስኪመጣ ድረስ ይጠብቃል። ከዚያ የተቀበለውን “ብሉ” በ html ገጽ ውስጥ ምስሉን ለማዘመን እንደ ምንጭ ሆኖ ሊያገለግል ወደሚችል ዩአርኤል ለመለወጥ ትንሽ ስራ ብቻ ይወስዳል።

አቤት ፣ ጨርሰናል!

ደረጃ 4 ሀሳቦች እና ቀሪዎች

ሀሳቦች እና ቀሪዎች
ሀሳቦች እና ቀሪዎች

ለእኔ የዚህ ፕሮጀክት ግብ ሃርድዌርን ከድር ጋር ለማገናኘት በቂ የድር ፕሮግራም ብቻ መማር ነበር። ለዚህ ፕሮጀክት በርካታ ማራዘሚያዎች ይቻላል። ጥቂት ሀሳቦች እዚህ አሉ

  • እዚህ እና እዚህ እንደተገለፀው ‹እውነተኛ› የካሜራ ዥረት ይተግብሩ እና እዚህ በተመሳሳይ ESP32 ላይ እንደተገለጸው ወደ 2 ኛ አገልጋይ ያንቀሳቅሱት ፣ ግን በሌላ ሲፒዩ ኮር ላይ ፣ ከዚያ በ 1 ኛ አገልጋይ ወደሚገለገለው ኤችቲኤምኤል የካሜራውን ፍሰት በ… ይህ ፈጣን የካሜራ ዝማኔዎችን ሊያስከትል ይገባል።
  • እዚህ እንደተብራራው ሮቦቱ ለብቻው እንዲቆም የመዳረሻ ነጥብ (ኤፒ) ሁነታን ይጠቀሙ።
  • በባትሪ ቮልቴጅ ልኬት ፣ በጥልቅ የእንቅልፍ ችሎታዎች ወዘተ ያስፋፉ ፣ ይህ AI-Thinker ESP32-CAM ብዙ ጂፒዮዎች የሉትም ምክንያቱም በአሁኑ ጊዜ ትንሽ አስቸጋሪ ነው። በ uart በኩል መስፋፋት እና ለምሳሌ ባሪያ አርዱዲኖ ይፈልጋል።
  • በአንድ ትልቅ አዝራር ፓት ማተሚያ ላይ የድመት ሕክምናዎችን ከጊዜ ወደ ጊዜ ወደሚያስወግድ ድመት ፈላጊ ሮቦት ይለውጡ ፣ በቀን ውስጥ ብዙ ጥሩ የድመት ፎቶዎችን ይልቀቁ…

እባክዎን ከወደዱ ወይም ጥያቄዎች ካሉዎት እና ስላነበቡ እናመሰግናለን!

የሚመከር: