Πίνακας περιεχομένων:

Ρομπότ κάμερας ESP32 - FPV: 6 βήματα
Ρομπότ κάμερας ESP32 - FPV: 6 βήματα

Βίντεο: Ρομπότ κάμερας ESP32 - FPV: 6 βήματα

Βίντεο: Ρομπότ κάμερας ESP32 - FPV: 6 βήματα
Βίντεο: Build FPV robot 2024, Ιούλιος
Anonim
Image
Image
Ρομπότ κάμερας ESP32 - FPV
Ρομπότ κάμερας ESP32 - FPV
Ρομπότ κάμερας ESP32 - FPV
Ρομπότ κάμερας ESP32 - FPV

Η μονάδα κάμερας ESP32 είναι ένα φθηνό και ισχυρό PLC. Περιλαμβάνει ακόμη και αναγνώριση προσώπου!

Ας δημιουργήσουμε ένα ρομπότ Πρώτου προσώπου Viewpoint που οδηγείτε μέσω μιας ενσωματωμένης διεπαφής ιστού!

Αυτό το έργο χρησιμοποιεί τη μονάδα Geekcreit ESP32 με κάμερα OV2640. Βασίζεται στην ενότητα AIThinker.

Υπάρχουν πολλοί διαφορετικοί κλώνοι κάμερας ESP32 εκεί έξω. Άλλα δουλεύουν, άλλα όχι. Θα πρότεινα να χρησιμοποιήσετε την ίδια ενότητα που έκανα, ώστε να έχετε μια καλή ευκαιρία να είστε επιτυχημένοι.

Το ρομπότ λειτουργεί ως εξής.

Το ESP32 μεταδίδει μια διεύθυνση URL ιστού στο δίκτυό σας που παρουσιάζει τη ζωντανή ροή βίντεο με ορισμένα πλαίσια ελέγχου για τη λειτουργία ορισμένων λειτουργιών της κάμερας. Λαμβάνει επίσης πατήματα πλήκτρων που αποστέλλονται στην ιστοσελίδα από το πληκτρολόγιο και είναι εντολές κατεύθυνσης για το ρομπότ. Μπορεί να θέλετε να φτιάξετε την ασπίδα χειριστηρίου USB, ώστε να μπορείτε να οδηγείτε το ρομπότ με το χειριστήριο αντί να πληκτρολογείτε εντολές πληκτρολογίου.

Όταν το ESP32 λαμβάνει πατήματα πλήκτρων, προωθεί τα byte στο Arduino Nano το οποίο στη συνέχεια οδηγεί τους κινητήρες για να κάνει το ρομπότ να κινηθεί.

Αυτό το έργο είναι μέτριας-μεγάλης δυσκολίας. Παρακαλώ πάρτε το χρόνο σας.

Ας αρχίσουμε!

Προμήθειες

  • Μονάδα κάμερας ESP -32 με κάμερα OV2640 - Θα συνιστούσα το προϊόν Geekcreit
  • Εξωτερική κεραία snap-on για το ESP-32 για μεγιστοποίηση της ισχύος του σήματος
  • Arduino Nano
  • Arduino Leonardo για τη μονάδα Joystick (χρειαζόμαστε προσομοίωση πληκτρολογίου USB που παρέχεται από το Leonardo)
  • Γενική μονάδα Joystick
  • Τσιπ L293D Quad H-bridge
  • DC-DC Buck Coverter με έξοδο 5V για την τροφοδοσία του ESP32
  • Σειριακός προσαρμογέας FTDI για προγραμματισμό του ESP32
  • Ένα γενικό πλαίσιο ρομπότ με δύο κινητήρες με γρανάζια - οποιοδήποτε πλαίσιο θα λειτουργήσει. Συνιστώνται κινητήρες 3 έως 6V
  • 2 μπαταρίες LiPo 7,4V 1300mAh (ή παρόμοιες) για την τροφοδοσία του ESP32 και των κινητήρων
  • Μπαταρία 1 x 9V για τροφοδοσία του Arduino Nano

Βήμα 1: Προγραμματίστε την κάμερα ESP32

Προγραμματίστε την κάμερα ESP32
Προγραμματίστε την κάμερα ESP32
Προγραμματίστε την κάμερα ESP32
Προγραμματίστε την κάμερα ESP32

Χρησιμοποιώντας ένα breadboard, συνδέστε την κάμερα ESP32 στον προσαρμογέα FTDI ως εξής:

FTDI ESP32

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

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

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

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

Επιπλέον, συνδέστε τον ακροδέκτη IO0 ("eye-oh-zero") στο GND. Πρέπει να το κάνετε αυτό για να θέσετε το ESP32 σε λειτουργία προγραμματισμού.

Αποσυμπιέστε το αρχείο esp32CameraWebRobotforInstructable.zip.

Υπάρχουν 4 αρχεία σε αυτό το έργο:

Το esp32CameraWebRobotforInstructable.ino είναι το σκίτσο του Arduino.

Το ap_httpd.cpp είναι ο κώδικας που διαχειρίζεται τον διακομιστή ιστού και ασχολείται με τη ρύθμιση των χαρακτηριστικών της κάμερας από την ιστοσελίδα και τη λήψη πιέσεων πλήκτρων από την ιστοσελίδα.

Το camera_index.h περιέχει τον κώδικα HTML/JavaScript για την εφαρμογή ιστού ως πίνακες byte. Η τροποποίηση της διαδικτυακής εφαρμογής είναι πολύ πέρα από το πεδίο αυτού του έργου. Θα συμπεριλάβω έναν σύνδεσμο για τον τρόπο τροποποίησης του HTML/JavaScript αργότερα.

Το camera_pins.h είναι το αρχείο κεφαλίδας που αφορά τη διαμόρφωση pin της κάμερας ESP32.

Για να θέσετε το ESP32 σε λειτουργία προγραμματισμού, πρέπει να συνδέσετε το IO0 ("eye-oh-zero") στο Ground.

Εκκινήστε το Arduino IDE και μεταβείτε στο Tools/Boards/Boards Manager. Αναζητήστε το esp32 και εγκαταστήστε τη βιβλιοθήκη esp32.

Ανοίξτε το έργο στο Arduino IDE.

Τοποθετήστε το αναγνωριστικό δικτύου του δρομολογητή σας και τον κωδικό πρόσβασής σας στις γραμμές που επισημαίνονται στην παραπάνω εικόνα. Αποθηκεύστε το έργο.

Μεταβείτε στο μενού Εργαλεία και κάντε τις επιλογές όπως φαίνεται στην παραπάνω εικόνα.

Πίνακας: ESP32 Wrover

Ταχύτητα μεταφόρτωσης: 115200

Σχέδιο διαμερίσματος: "Huge APP (3MB no OTA)"

και επιλέξτε τη θύρα στην οποία είναι συνδεδεμένος ο προσαρμογέας FTDI.

Κάντε κλικ στο κουμπί "Μεταφόρτωση".

Τώρα, μερικές φορές, το ESP32 δεν ξεκινά τη μεταφόρτωση. Επομένως, είστε έτοιμοι να πατήσετε το κουμπί RESET στο πίσω μέρος του ESP32 όταν αρχίσετε να βλέπετε τους χαρακτήρες… ---… να εμφανίζονται στην κονσόλα κατά τη μεταφόρτωση. Στη συνέχεια, θα ξεκινήσει η μεταφόρτωση.

Όταν δείτε «πατήστε RST» στην κονσόλα, η μεταφόρτωση ολοκληρώθηκε.

ΑΠΟΣΥΝΔΕΣΗ IO0 από το έδαφος. Αποσυνδέστε τη γραμμή 3.3V μεταξύ του προσαρμογέα FTDI και του ESP32.

Η κάμερα ESP32 απαιτεί πολύ ρεύμα για να λειτουργήσει καλά. Συνδέστε έναν προσαρμογέα ισχύος 5V 2A στις ακίδες 5V και GND στο ESP32.

Ανοίξτε το Serial Monitor, ορίστε τον ρυθμό baud σε 115200 και, στη συνέχεια, παρακολουθήστε την επανεκκίνηση του ESP32. Τελικά, θα δείτε τη διεύθυνση URL για τον διακομιστή.

Μεταβείτε στο πρόγραμμα περιήγησής σας και εισαγάγετε τη διεύθυνση URL. Όταν φορτώνει ο ιστότοπος, κάντε κλικ στο κουμπί "Έναρξη ροής" και θα ξεκινήσει η ζωντανή ροή βίντεο. Εάν κάνετε κλικ στο πλαίσιο ελέγχου "Floodlight", η ενδεικτική λυχνία φλας θα πρέπει να ανάψει. Πρόσεχε! ΕΙΝΑΙ ΦΩΤΕΙΝΟ!

Βήμα 2: Φτιάξτε το ρομπότ

Φτιάξτε το ρομπότ
Φτιάξτε το ρομπότ

Χρειάζεστε ένα πλαίσιο δύο ροδών ρομπότ. Οποιοσδήποτε θα κάνει. Συναρμολογήστε το πλαίσιο σύμφωνα με τις οδηγίες του κατασκευαστή.

Στη συνέχεια, συνδέστε το ρομπότ σύμφωνα με το διάγραμμα. Αφήστε τις συνδέσεις μπαταρίας προς το παρόν.

Το L293D χρησιμοποιείται για τον έλεγχο των κινητήρων. Παρατηρήστε ότι η μισή εγκοπή στο τσιπ είναι ΠΡΟΣ ΤΟ ESP32.

Συνήθως, χρειάζονται 6 ακίδες στο Arduino για τον έλεγχο δύο κινητήρων.

Αυτό το ρομπότ απαιτεί μόνο 4 ακίδες και εξακολουθεί να λειτουργεί πλήρως.

Οι ακίδες 1 και 9 συνδέονται με την πηγή 5V του Arduino, έτσι ώστε να είναι μόνιμα Υ HIGHΗΛΕΣ. Η καλωδίωση του ρομπότ με αυτόν τον τρόπο σημαίνει ότι χρειαζόμαστε δύο λιγότερες ακίδες στο Arduino για τον έλεγχο των κινητήρων.

Σε κατευθύνσεις προς τα εμπρός, οι ακίδες INPUT ρυθμίζονται σε LOW και οι ακίδες Pulse Wave Modulation του μοτέρ ρυθμίζονται σε τιμές μεταξύ 0 και 255 με 0 που σημαίνει OFF και 255 σημαίνει μέγιστη ταχύτητα.

Σε αντίθετες κατευθύνσεις, οι ακίδες INPUT ρυθμίζονται σε Υ HIGHΗΛΕΣ και οι τιμές PWM αντιστρέφονται. 0 σημαίνει μέγιστη ταχύτητα και 255 σημαίνει απενεργοποίηση.

Αποσυμπιέστε και ανεβάστε το σκίτσο ArduinoMotorControl στο Arduino Nano.

Βήμα 3: ΓΕΙΑ! Περιμένετε ένα δευτερόλεπτο! Γιατί χρειάζομαι Arduino Nano;

Μάλλον σκέφτεστε, "Hey! Υπάρχουν τουλάχιστον 4 ακίδες IO διαθέσιμες στην κάμερα ESP32. Γιατί δεν μπορώ να τις χρησιμοποιήσω για τον έλεγχο των κινητήρων;"

Λοιπόν, είναι αλήθεια, υπάρχουν ακίδες στο ESP32 ως εξής:

IO0 - απαιτείται για τη θέση του ESP32 σε λειτουργία προγραμματισμού

IO2 - διαθέσιμο

IO4 - το φλας LED

IO12, IO13, IO14, IO15, IO16 - επιπλέον καρφίτσες GPIO.

Εάν απλά φορτώσετε ένα βασικό σκίτσο στο ESP32 για να ελέγξετε τις ακίδες με εντολές PWM, λειτουργούν.

ΠΑΝΤΩΣ, μόλις ενεργοποιήσετε τις βιβλιοθήκες CAMERA στα σκίτσα σας, αυτές οι ακίδες δεν είναι πλέον διαθέσιμες.

Το πιο εύκολο πράγμα που πρέπει να κάνετε είναι να χρησιμοποιήσετε μόνο ένα Nano για να ελέγξετε τους κινητήρες μέσω PWM και να στείλετε τις εντολές από το ESP32 μέσω σειριακών επικοινωνιών μέσω ενός καλωδίου (ESP32 U0T στο Arduino Rx0) και GND. Πολύ απλό.

Βήμα 4: Συνδέστε το Joystick USB (προαιρετικό)

Μπορείτε να οδηγήσετε το ρομπότ στέλνοντας πατήματα πλήκτρων στην ιστοσελίδα ως εξής:

8 - Εμπρός

9 - Εμπρός δεξιά

7 - Εμπρός Αριστερά

4 - Περιστροφή Αριστερά

5 - Σταμάτα

1 - Αντίστροφη Αριστερά

2 - Αντίστροφη

3 - Αντίστροφη Δεξιά.

Το σκίτσο του joystick USB μεταφράζει τις εισόδους του joystick σε πιέσεις πλήκτρων και τα στέλνει στη διεπαφή ιστού που τα προωθεί στο Arduino για να οδηγήσει το ρομπότ.

Συνδέστε το joystick στο Arduino LEONARDO ως εξής:

Leonardo Joystick

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

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

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

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

Ανοίξτε το σκίτσο του usbJoyStick, επιλέξτε Arduino Leonardo ως πίνακα και ανεβάστε το στο Leonardo.

Εάν θέλετε να το δοκιμάσετε, απλώς ανοίξτε έναν επεξεργαστή κειμένου στον υπολογιστή σας, κάντε κλικ στο ποντίκι στο παράθυρο και ξεκινήστε να μετακινείτε το χειριστήριο. Θα πρέπει να δείτε τις τιμές από το 1 έως το 9 που εμφανίζονται στο παράθυρο

Βήμα 5: ΑΣ ΟΔΗΓΟΥΜΕ

Αφιερώστε λίγο χρόνο και περάστε από την καλωδίωση για να βεβαιωθείτε ότι όλα είναι σωστά.

Στη συνέχεια, συνδέστε τις μπαταρίες σας ως εξής.

1. Ενεργοποιήστε την κάμερα ESP32. Χρειάζονται μερικά δευτερόλεπτα για να ξεκινήσει ο διακομιστής ιστού.

2. Ενεργοποιήστε το Arduino Nano.

3. Τροφοδοτήστε τους κινητήρες.

Εκκινήστε το πρόγραμμα περιήγησής σας και μεταβείτε στη διεύθυνση URL για το ESP32.

Κάντε κλικ στο κουμπί Έναρξη ροής.

Κάντε κλικ στο ποντίκι σας κάπου στην οθόνη του προγράμματος περιήγησης, έτσι ώστε η οθόνη να είναι τώρα στο επίκεντρο.

Ξεκινήστε να οδηγείτε το ρομπότ σας με το χειριστήριο (ή το πληκτρολόγιο).

Διαπίστωσα ότι το προεπιλεγμένο μέγεθος πλαισίου λειτουργεί εντάξει για τη μετάδοση του ζωντανού βίντεο αρκετά αποκριτικά μέσω WiFi. Ωστόσο, καθώς αυξάνετε το μέγεθος καρέ, η ροή θα γίνει πιο ασταθής επειδή προσπαθείτε να μεταδώσετε μεγαλύτερες εικόνες.

Αυτό είναι ένα δύσκολο έργο που σας δίνει την ευκαιρία να ξεκινήσετε να εργάζεστε με ζωντανή ροή βίντεο και να οδηγείτε ρομπότ μέσω WiFi. Ελπίζω να σας φάνηκε διασκεδαστικό!

ΤΩΡΑ ΠΗΓΑΙΝΕ ΚΑΙ ΚΑΝΕ ΚΑΤΙ ΥΠΕΡΟΧΟ!

Ενημέρωση Ιανουαρίου 2020 - Οι τελευταίες φωτογραφίες δείχνουν την τελική έκδοση του ρομπότ, σκληρά συγκολλημένη και ασφαλώς τοποθετημένη στο πλαίσιο.

Οι τρεις μπροστινοί διακόπτες είναι οι εξής:

Αριστερά - Μπαταρία ισχύος κινητήρα

Κέντρο - Μπαταρία Arduino

Δεξιά - Μπαταρία κάμερας ESP32

Θα μπορούσα να χρησιμοποιήσω μια μεγάλη μπαταρία με μερικούς μετασχηματιστές (χρησιμοποιώ έναν για το ESP32-βρίσκεται κάτω δεξιά στην μπροστινή φωτογραφία), αλλά για λόγους απλότητας, κρατάω απλώς τις 3 μπαταρίες.

Ρομπότ τώρα στο Access Point

Θεωρώ ότι είναι δύσκολο να δείξω αυτό το ρομπότ έξω από το σπίτι μου επειδή το σχολικό επιχειρησιακό μου δίκτυο δεν μου επιτρέπει να συνδέσω τον διακομιστή ιστού ρομπότ σε αυτό. Ως λύση, έκανα έρευνα σχετικά με τη χρήση της δυνατότητας Σημείου πρόσβασης του διακομιστή ιστού ESP32. Θέλει λίγη δουλειά, αλλά απαιτεί ελάχιστες αλλαγές στο κύριο σκίτσο του ρομπότ για να μεταδώσει η ESP32 τη δική της διεύθυνση IP. Δεν είναι τόσο ισχυρό όσο ένα διανομέα wifi υψηλής ταχύτητας (μερικές φορές κρέμεται αν κινείστε πολύ γρήγορα), αλλά λειτουργεί αρκετά καλά και τώρα μπορώ να δείξω το ρομπότ οπουδήποτε θέλω χωρίς να χρειάζεται να το συνδέσω σε δίκτυο! Μόλις ενεργοποιήσετε το ρομπότ, δοκιμάστε να το μετατρέψετε σε Access Point μόνοι σας!

Βήμα 6: Λεπτομέρειες για τον τρόπο τροποποίησης του κώδικα HTML/Javascript για τον διακομιστή ιστοσελίδων

Αυτό δεν είναι απαραίτητο, αλλά είχα κάποια αιτήματα.

Έχω δώσει σε αυτό το Έγγραφο Google λεπτομέρειες σχετικά με τον τρόπο χρήσης του CyberChef για μετατροπή εμπρός και πίσω μεταξύ HTML/Javascript και παραστάσεων πίνακα byte στο αρχείο camera_index.h.

Συνιστάται: