Სარჩევი:

ESP32 კამერის რობოტი - FPV: 6 ნაბიჯი
ESP32 კამერის რობოტი - FPV: 6 ნაბიჯი

ვიდეო: ESP32 კამერის რობოტი - FPV: 6 ნაბიჯი

ვიდეო: ESP32 კამერის რობოტი - FPV: 6 ნაბიჯი
ვიდეო: Lesson 102: Using ZK-5AD 4A Dual DC Motor Driver TA6586 4A 14V The best Motor Driver (new product) 2024, ივლისი
Anonim
Image
Image
ESP32 კამერის რობოტი - FPV
ESP32 კამერის რობოტი - FPV
ESP32 კამერის რობოტი - FPV
ESP32 კამერის რობოტი - FPV

ESP32 კამერის მოდული არის იაფი და ძლიერი PLC. ეს მოიცავს სახის ამოცნობასაც კი!

მოდით ავაშენოთ პირველი პირის თვალსაზრისის რობოტი, რომელსაც თქვენ მართავთ ბორტ ვებ ინტერფეისით!

ეს პროექტი იყენებს Geekcreit ESP32 მოდულს OV2640 კამერით. იგი დაფუძნებულია AIThinker მოდულზე.

არსებობს მრავალი განსხვავებული ESP32 კამერის კლონი. ზოგი მუშაობს, ზოგი არა. მე გირჩევთ გამოიყენოთ იგივე მოდული, რაც მე გავაკეთე, ასე რომ თქვენ გაქვთ კარგი შესაძლებლობა იყოთ წარმატებული.

რობოტი მუშაობს შემდეგნაირად.

ESP32 ავრცელებს ვებ – მისამართს თქვენს ქსელში, რომელიც წარმოგიდგენთ პირდაპირ ვიდეო ნაკადს რამდენიმე ჩამრთველს კამერის ზოგიერთი ფუნქციის მუშაობისთვის. ის ასევე იღებს კლავიატურაზე ვებ გვერდზე გაგზავნილ ღილაკებს, რომლებიც რობოტის მიმართულების ბრძანებებია. შეიძლება გისურვოთ USB ჯოისტიკის ფარის აგება, რათა რობოტი ჯოისტიკით მართოთ და არა კლავიატურის ბრძანებები.

როდესაც ESP32 იღებს გასაღების დაჭერას, ის გადასცემს იმ ბაიტებს Arduino Nano– ზე, რომელიც შემდეგ ამოძრავებს ძრავებს რობოტის გადაადგილებისთვის.

ეს პროექტი საშუალო-მაღალი სირთულისაა. გთხოვთ დრო დაუთმოთ.

Დავიწყოთ!

მარაგები

  • ESP -32 კამერის მოდული OV2640 კამერით - მე გირჩევთ Geekcreit პროდუქტს
  • სიგნალის სიძლიერის მაქსიმალურად გასაძლიერებელი გარე ანტენა ESP-32– ისთვის
  • არდუინო ნანო
  • არდუინო ლეონარდო ჯოისტიკის მოდულისთვის (ჩვენ გვჭირდება ლეონარდოს მიერ მოწოდებული USB კლავიატურის ემულაცია)
  • ზოგადი ჯოისტიკის მოდული
  • L293D Quad H- ხიდის ჩიპი
  • DC-DC Buck Coverter 5V გამომავალი ESP32- ის ენერგიაზე
  • FTDI სერიული ადაპტერი ESP32 პროგრამირებისთვის
  • ზოგადი რობოტის შასი ორი გადაადგილებული ძრავით - ნებისმიერი შასი იმუშავებს. რეკომენდირებულია 3 -დან 6V ძრავა
  • 2 x 7.4V 1300mAh LiPo ბატარეები (ან მსგავსი) ESP32 და ძრავების დასატენად
  • 1 x 9V ბატარეა არდუინო ნანოს დასატენად

ნაბიჯი 1: პროგრამირება ESP32 კამერა

პროგრამირება ESP32 კამერა
პროგრამირება ESP32 კამერა
პროგრამირება ESP32 კამერა
პროგრამირება ESP32 კამერა

პურის დაფის გამოყენებით დააკავშირეთ თქვენი ESP32 კამერა FTDI ადაპტერთან შემდეგნაირად:

FTDI ESP32

3.3V ----------- 3.3V

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

გარდა ამისა, დააკავშირეთ pin IO0 ("eye-oh-zero") GND- თან. თქვენ უნდა გააკეთოთ ეს ESP32 პროგრამირების რეჟიმში ჩასასვლელად.

გახსენით esp32CameraWebRobotforInstructable.zip ფაილი.

ამ პროექტში არის 4 ფაილი:

esp32CameraWebRobotforInstructable.ino არის არდუინოს ესკიზი.

ap_httpd.cpp არის კოდი, რომელიც მართავს ვებ სერვერს და ეხება ვებ – გვერდიდან კამერის მახასიათებლების დაყენებას და ვებ – გვერდიდან გასაღებების დაჭერას.

camera_index.h შეიცავს ვებ აპლიკაციის HTML/JavaScript კოდს ბაიტის მასივების სახით. ვებ პროგრამის შეცვლა სცილდება ამ პროექტის ფარგლებს. მე დავამატებ ბმულს, თუ როგორ შევცვალოთ HTML/JavaScript მოგვიანებით.

camera_pins.h არის სათაურის ფაილი, რომელიც ეხება ESP32 კამერის pin კონფიგურაციას.

ESP32 პროგრამირების რეჟიმში დასაყენებლად, თქვენ უნდა დაუკავშიროთ IO0 ("eye-oh-zero") მიწას.

გაუშვით თქვენი Arduino IDE და გადადით ინსტრუმენტები/დაფები/დაფების მენეჯერი. მოძებნეთ esp32 და დააინსტალირეთ esp32 ბიბლიოთეკა.

გახსენით პროექტი თქვენს Arduino IDE– ში.

განათავსეთ თქვენი როუტერის ქსელის ID და თქვენი პაროლი ზემოთ მოცემულ სურათზე მონიშნულ ხაზებში. შეინახეთ პროექტი.

გადადით ინსტრუმენტების მენიუში და გააკეთეთ არჩევანი, როგორც ნაჩვენებია ზემოთ სურათზე.

დაფა: ESP32 Wrover

ატვირთვის სიჩქარე: 115200

გაყოფის სქემა: "უზარმაზარი აპლიკაცია (3 მბ არა OTA)"

და შეარჩიეთ პორტი, რომელთანაც დაკავშირებულია თქვენი FTDI ადაპტერი.

დააჭირეთ ღილაკს "ატვირთვა".

ახლა, ზოგჯერ, ESP32 არ დაიწყებს ატვირთვას. ასე რომ იყავით მზად დააჭიროთ ღილაკს RESET ESP32– ის უკანა მხარეს, როდესაც იხილავთ… ---… სიმბოლოებს კონსოლში ჩატვირთვისას. ამის შემდეგ დაიწყება ატვირთვა.

როდესაც ხედავთ "დააჭირეთ RST" კონსოლს, ატვირთვა დასრულებულია.

გათიშეთ IO0 მიწიდან. გათიშეთ 3.3V ხაზი FTDI გადამყვანსა და ESP32- ს შორის.

ESP32 კამერა მოითხოვს ბევრ დენს, რომ კარგად იმუშაოს. შეაერთეთ 5V 2A დენის ადაპტერი 5V და GND ქინძისთავებთან ESP32- ზე.

გახსენით სერიული მონიტორი, დააყენეთ ბადის სიჩქარე 115200 და შემდეგ უყურეთ ESP32- ის გადატვირთვას. საბოლოოდ, თქვენ ნახავთ URL სერვერისთვის.

გადადით თქვენს ბრაუზერში და შეიყვანეთ URL. როდესაც ვებ – გვერდი იტვირთება, დააწკაპუნეთ ღილაკზე „სტრიმინგის დაწყება“და პირდაპირი ვიდეო ნაკადი უნდა დაიწყოს. თუ დააწკაპუნებთ "Floodlight" ჩამრთველზე, ბორტზე ფლეშ LED უნდა აანთოს. Ფრთხილად! ნათელია!

ნაბიჯი 2: შექმენით რობოტი

შექმენით რობოტი
შექმენით რობოტი

თქვენ გჭირდებათ ორი ბორბლიანი რობოტის შასი. ნებისმიერი გააკეთებს. შეიკრიბეთ შასი მწარმოებლის ინსტრუქციის შესაბამისად.

შემდეგ შეაერთეთ რობოტი დიაგრამის მიხედვით. დატოვეთ ბატარეის კავშირები ახლავე.

L293D გამოიყენება ძრავების გასაკონტროლებლად. გაითვალისწინეთ, რომ ჩიპზე ნახევრად მაღალი დონე არის ESP32– ის მიმართულებით.

როგორც წესი, Arduino– ზე საჭიროა 6 ქინძისთავი ორი ძრავის გასაკონტროლებლად.

ეს რობოტი მოითხოვს მხოლოდ 4 ქინძისთავს და კვლავ მუშაობს სრულად.

ქინძისთავები 1 და 9 უკავშირდება არდუინოს 5V წყაროს, ამიტომ ისინი მუდმივად მაღალია. რობოტის ამგვარი გაყვანილობა ნიშნავს იმას, რომ ჩვენ გვჭირდება Arduino– ზე ორი ნაკლები ქინძისთავი ძრავების გასაკონტროლებლად.

წინსვლის მიმართულებით, INPUT ქინძისთავები დაყენებულია LOW– ზე და საავტომობილო პულსის ტალღის მოდულაციის ქინძისთავები 0 – დან 255 – მდე, 0 – ით ნიშნავს OFF და 255 ნიშნავს მაქსიმალურ სიჩქარეს.

საპირისპირო მიმართულებით, INPUT ქინძისთავები დაყენებულია HIGH- ზე და PWM მნიშვნელობები უკუქცეულია. 0 ნიშნავს მაქსიმალურ სიჩქარეს და 255 ნიშნავს გამორთვას.

გახსენით და ატვირთეთ ArduinoMotorControl ესკიზი Arduino Nano– ზე.

ნაბიჯი 3: ჰეი! Მოიცა! რატომ მჭირდება არდუინო ნანო?

თქვენ ალბათ ფიქრობთ: "ჰეი! ESP32 კამერაზე არის სულ მცირე 4 IO ქინძისთავი. რატომ არ შემიძლია მათი გამოყენება ძრავების გასაკონტროლებლად?"

მართალია, ESP32– ზე არის ქინძისთავები შემდეგნაირად:

IO0 - საჭიროა ESP32 პროგრამირების რეჟიმში დასაყენებლად

IO2 - ხელმისაწვდომია

IO4 - Flash LED

IO12, IO13, IO14, IO15, IO16 - დამატებითი GPIO ქინძისთავები.

თუ თქვენ უბრალოდ ჩატვირთავთ ძირითად ესკიზს ESP32– ზე, რომ აკონტროლოთ ქინძისთავები PWM ბრძანებებით, ისინი მუშაობენ.

თუმცა, როდესაც ესკიზებში CAMERA ბიბლიოთეკები გააქტიურდება, ეს ქინძისთავები აღარ არის ხელმისაწვდომი.

უმარტივესი რამ არის მხოლოდ ნანოს გამოყენება ძრავების გასაკონტროლებლად PWM საშუალებით და ბრძანებების გაგზავნა ESP32– დან სერიული კომუნიკაციებით ერთ მავთულზე (ESP32 U0T Arduino Rx0– ზე) და GND. Ძალიან მარტივი.

ნაბიჯი 4: შეაერთეთ USB ჯოისტიკი (სურვილისამებრ)

თქვენ შეგიძლიათ მართოთ რობოტი ვებ გვერდზე გასაღებების დაჭერით შემდეგნაირად:

8 - წინ

9 - წინ მარჯვნივ

7 - წინ მარცხნივ

4 - როტაცია მარცხნივ

5 - გაჩერდი

1 - უკანა მარცხენა

2 - უკუ

3 - უკანა მარჯვენა.

USB ჯოისტიკის ესკიზი თარგმნის ჯოისტიკების შეყვანას გასაღების დაჭერით და აგზავნის მათ ვებ ინტერფეისზე, რომელიც აგზავნის მათ Arduino– ს რობოტის მართვის მიზნით.

ჯოისტიკი დაუკავშირეთ Arduino LEONARDO- ს შემდეგნაირად:

ლეონარდო ჯოისტიკი

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

გახსენით usbJoyStick ესკიზი, შეარჩიეთ დაფა არდუინო ლეონარდო და ატვირთეთ ლეონარდოზე.

თუ გსურთ მისი გამოცდა, უბრალოდ გახსენით ტექსტური რედაქტორი თქვენს კომპიუტერში, დააწკაპუნეთ მაუსზე ფანჯარაში და დაიწყეთ ჯოისტიკის გადატანა. თქვენ უნდა ნახოთ მნიშვნელობები 1 -დან 9 -მდე, რომლებიც ნაჩვენებია ფანჯარაში

ნაბიჯი 5: ვიმოგზაუროთ

გარკვეული დრო დაუთმეთ და გადადით თქვენს გაყვანილობაზე, რათა დარწმუნდეთ, რომ ყველაფერი სწორია.

შემდეგი, შეაერთეთ თქვენი ბატარეები შემდეგნაირად.

1. ჩართეთ ESP32 კამერა. მას სჭირდება რამდენიმე წამი ვებ სერვერის დასაწყებად.

2. ჩართეთ არდუინო ნანო.

3. გააძლიერე ძრავები.

გაუშვით თქვენი ბრაუზერი და გადადით URL– ზე ESP32– ისთვის.

დააჭირეთ ღილაკს სტრიმინგის დაწყება.

დააწკაპუნეთ მაუსზე სადმე ბრაუზერის ეკრანზე ისე, რომ ეკრანი ახლა იყოს ყურადღების ცენტრში.

დაიწყეთ თქვენი რობოტის მართვა ჯოისტიკით (ან კლავიატურით).

მე აღმოვაჩინე, რომ ჩარჩოს ნაგულისხმევი ზომა კარგად მუშაობს პირდაპირ ვიდეოზე საკმაოდ საპასუხოდ WiFi- ით. თუმცა, როდესაც გაზრდით ჩარჩოს ზომას, ნაკადი გახდება უფრო ცვალებადი, რადგან თქვენ ცდილობთ უფრო დიდი სურათების გადაცემას.

ეს არის რთული პროექტი, რომელიც გაძლევთ შესაძლებლობას დაიწყოთ მუშაობა პირდაპირ ვიდეო ნაკადთან და რობოტის მართვა WiFi- ზე. იმედი მაქვს, რომ ეს თქვენთვის სახალისო აღმოჩნდა!

წადი ახლა და გააკეთე რაღაც საოცრება!

2020 წლის იანვრის განახლება - ბოლო ფოტოებზე ნაჩვენებია რობოტის საბოლოო ვერსია, მყარად გამყარებული და საიმედოდ დამონტაჟებული შასისზე.

სამი წინა გადამრთველი არის შემდეგი:

მარცხნივ - ძრავის კვების ელემენტი

ცენტრი - არდუინოს ბატარეა

მარჯვნივ - ESP32 კამერის ბატარეა

მე შემიძლია გამოვიყენო ერთი დიდი ბატარეა რამოდენიმე მამალიანი ტრანსფორმატორებით (მე ვიყენებ ერთს ESP32– ისთვის-ეს არის წინა ხედის ქვედა მარჯვენა კუთხეში), მაგრამ სიმარტივის გამო, მე მხოლოდ 3 ბატარეას ვინახავ.

რობოტი არის წვდომის წერტილზე

მე მიჭირს ამ რობოტის დემონსტრირება ჩემი სახლის გარეთ, რადგან ჩემი სკოლის საწარმოთა ქსელი არ მაძლევს საშუალებას რობოტი ვებ სერვერის მასთან დაკავშირება. როგორც გამოსავალი, მე გავაკეთე კვლევა ESP32 ვებ სერვერის Access Point ფუნქციის გამოყენების შესახებ. ეს მოითხოვს გარკვეულ სამუშაოს, მაგრამ მოითხოვს მინიმალურ ცვლილებებს რობოტის მთავარ ესკიზში, რათა ESP32 გადასცეს საკუთარი IP მისამართი. ეს არ არის ისეთი ძლიერი, როგორც გამოყოფილი მაღალი სიჩქარით wifi კერა (ზოგჯერ ჩამოკიდებულია თუ ძალიან სწრაფად მოძრაობთ), მაგრამ ის საკმაოდ კარგად მუშაობს და ახლა მე შემიძლია რობოტის დემონსტრირება ნებისმიერ ადგილას, სადაც მინდა, ქსელთან დაკავშირების გარეშე! მას შემდეგ რაც რობოტი მუშაობთ, სცადეთ თავად გადააკეთოთ იგი წვდომის წერტილში!

ნაბიჯი 6: დეტალები, თუ როგორ უნდა შეცვალოთ HTML/Javascript კოდი ვებ სერვერისთვის

ეს არ არის აუცილებელი, მაგრამ მე მქონდა რამდენიმე თხოვნა.

მე ამ Google Doc– ს მივაწოდე დეტალები იმის შესახებ, თუ როგორ გამოვიყენოთ CyberChef HTML/Javascript და ბაიტი მასივის წარმომადგენლობებს შორის წინ და უკან გადასაყვანად camera_index.h ფაილში.

გირჩევთ: