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

Raspberry Tank With Web Interface και Video Streaming: 8 βήματα (με εικόνες)
Raspberry Tank With Web Interface και Video Streaming: 8 βήματα (με εικόνες)

Βίντεο: Raspberry Tank With Web Interface και Video Streaming: 8 βήματα (με εικόνες)

Βίντεο: Raspberry Tank With Web Interface και Video Streaming: 8 βήματα (με εικόνες)
Βίντεο: ComfyUI Tutorial - How to Install ComfyUI on Windows, RunPod & Google Colab | Stable Diffusion SDXL 2024, Νοέμβριος
Anonim
Raspberry Tank με διεπαφή ιστού και ροή βίντεο
Raspberry Tank με διεπαφή ιστού και ροή βίντεο

Θα δούμε πώς συνειδητοποίησα μια μικρή δεξαμενή WiFi, ικανή για απομακρυσμένο έλεγχο Web και ροή βίντεο.

Αυτό προορίζεται να είναι σεμινάριο που απαιτεί βασικές γνώσεις ηλεκτρονικού προγραμματισμού και λογισμικού. Για το λόγο αυτό επέλεξα ένα κιτ πλαισίου Tank (αντί να το εκτυπώσω χρησιμοποιώντας τρισδιάστατο εκτυπωτή, μπορεί να είναι μια μεταγενέστερη αναβάθμιση) και συνολικά 6 εξαρτήματα συμπεριλαμβανομένων των μπαταριών. Από την πλευρά του λογισμικού μπορείτε να ακολουθήσετε βήμα προς βήμα τη διαδικασία εγκατάστασης και τον προγραμματισμό που διατηρείται στο ελάχιστο, μια βασική γνώση των πραγμάτων του Raspberry μπορεί να βοηθήσει.

Έχω υπολογίσει 12 ώρες εργασίας από το 0 έως το έτοιμο για λειτουργία δεξαμενής. Συνολικό κόστος 70 € για όλα τα εξαρτήματα.

Βήμα 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - DIY RC Robot Chassis Tank - 32 (€)

www.banggood.com/DIY-RC-Robot-Chassis-Tan…

1 - Διπλό κανάλι L298N DC Motor Driver Board - 1, 39 (€)

www.banggood.com/Dual-Channel-L298N-DC-Mo…

1 - Raspberry Pi Zero W Starter Kit - 26 (€)

amzn.eu/1ugAaMP

Κάρτα SD 1 - 16 GB - 5, 50 (€)

www.gearbest.com/memory-cards/pp_337819.h…

1 - Κάμερα κάμερας Raspberry Pi 5MP για Model Zero - 8 (€)

www.gearbest.com/raspberry-pi/pp_612249.h…

1 - Power Bank 5V

Μπαταρία 1 - 9v

Μικτή σύνδεση καλωδίων Breadboard Dupont

Ποντίκι, πληκτρολόγιο, οθόνη ή τηλεόραση για ρύθμιση Raspberry (προαιρετικά, για να διευκολυνθεί η πρώτη ρύθμιση)

Βήμα 2: Προδιαγραφές κύριων εξαρτημάτων

Μοτέρ

Κινητήρας ταχυτήτων JGA25-370 DC

Αυτός ο κινητήρας διαθέτει άξονα εξόδου σχήματος D.

Προδιαγραφές

· Τάση λειτουργίας: μεταξύ 6 V και 18 V

· Ονομαστική τάση: 12 V

· Ταχύτητα ελεύθερης λειτουργίας 12 V: 399 RPM

· Ρεύμα ελεύθερης λειτουργίας στα 12 V: 50 mA

· Ρεύμα διακοπής λειτουργίας στα 12V: 1200 mA

· Ροπή στάσης στα 12V: 2,2 kg.cm

· Αναλογία ταχυτήτων: 1:21

· Μέγεθος μειωτήρα: 19 mm

· Βάρος: 84 g

Πίνακας οδηγών διπλού καναλιού L298N DC Motor Motor

Διπλός οδηγός μοτέρ H-γέφυρας, μπορεί να οδηγήσει δύο κινητήρες DC ή 4-σύρμα διφασικούς βηματικούς κινητήρες. Ενσωματωμένο TSD, για προστασία από στάση κινητήρα.

Προδιαγραφές

· Τάση τροφοδοσίας μονάδας: DC 2V-10V

· Τάση εισόδου σήματος: DC 1,8-7V

· Ενιαίο ρεύμα λειτουργίας: 1.5A

· Μέγιστο ρεύμα έως 2,5Α

· Χαμηλό ρεύμα αναμονής (λιγότερο από 0.1uA)

· Ενσωματωμένο κοινό κύκλωμα αγωγιμότητας, ο ακροδέκτης εισόδου κενός, ο κινητήρας δεν λειτουργεί

· Μέγεθος: 24,7 x 21 x 7mm

Βήμα 3: ΚΑΛΩΔΙΩΣΗ

ΚΑΛΩΔΙΩΣΗ
ΚΑΛΩΔΙΩΣΗ
ΚΑΛΩΔΙΩΣΗ
ΚΑΛΩΔΙΩΣΗ

Αυτή θα είναι η τελική καλωδίωση, αλλά περιμένετε, πριν χρειαστεί να εγκαταστήσουμε κάποια

λογισμικό και είναι καλή ιδέα να το δοκιμάσετε με απλούστερη καλωδίωση, όταν είστε έτοιμοι, επιστρέψτε εδώ.

Χρειαζόμαστε δύο διαφορετικές πηγές ενέργειας, μία για τον κινητήρα και μία για το Raspberry.

Ο οδηγός κινητήρα Dual Channel L298N DC Motor Driver Board (μέγιστη τάση εισόδου DC 2V-10V) τροφοδοτείται με τη χρήση της μπαταρίας 9V και το Raspberry Pi χρησιμοποιεί τον πρότυπο συσσωρευτή USB 5V.

Ο πείρος GND του οδηγού κινητήρα θα συνδεθεί με τη μπαταρία μείον και το Raspberry Pi (GND). Οι ακίδες GPIO του Raspberry Pi συνδέονται με τον οδηγό του κινητήρα ως πίνακα.

Βήμα 4: ΠΡΟΕΤΟΙΜΑΣΙΑ RASPBERRY O. S

Αυτή είναι μια τυπική εγκατάσταση για το λειτουργικό σύστημα Raspbian, μπορείτε να βρείτε

πολλά λεπτομερή μαθήματα αναζήτησης στον ιστό, βασικά τα βήματα είναι:

1. Κατεβάστε το iso RASPBIAN STRETCH WESKTOP από τη διεύθυνση

2. Διαμορφώστε μια κάρτα SD 16 GB, έχω χρησιμοποιήσει τη μορφή SD

3. Εγγραφή αρχείου. IMG, έχω χρησιμοποιήσει το Win32DiskImager

Τώρα το βατόμουρό σας είναι έτοιμο για εκκίνηση, συνδέστε το σε μια πηγή τροφοδοσίας USB (5V, 2A) και προετοιμαστείτε για την πρώτη εγκατάσταση εκκίνησης. Μπορείτε να το κάνετε με δύο τρόπους, χρησιμοποιώντας εξωτερικές συσκευές όπως ποντίκι, πληκτρολόγιο και οθόνη ή χρησιμοποιώντας τον υπολογιστή σας και μια απομακρυσμένη σύνδεση με το Raspberry. Υπάρχουν πολλά μαθήματα για αυτό, ένα είναι:

Βήμα 5: ΠΩΣ ΝΑ ΕΛΕΓΧΟΥΜΕ ΤΟ ΔΕΞΑΜΕΝΟ WIFI ΜΑΣ ΜΕ NODE. JS ΚΑΙ WEBSOCKET. IO

ΠΩΣ ΝΑ ΕΛΕΓΧΟΥΜΕ ΤΟ ΔΕΞΑΜΕΝΟ WIFI ΜΑΣ ΜΕ NODE. JS ΚΑΙ WEBSOCKET. IO
ΠΩΣ ΝΑ ΕΛΕΓΧΟΥΜΕ ΤΟ ΔΕΞΑΜΕΝΟ WIFI ΜΑΣ ΜΕ NODE. JS ΚΑΙ WEBSOCKET. IO

Τώρα έχουμε μια νέα εγκατάσταση του Raspberry micro PC μας έτοιμο να εκτελέσει τη δουλειά μας, οπότε … τι χρησιμοποιούμε για την έκδοση εντολών στη δεξαμενή;

Η Python είναι μια πολύ εύχρηστη γλώσσα που χρησιμοποιείται συνήθως για την εκτέλεση του έργου Rapsberry sand μπορεί να χρησιμοποιηθεί εύκολα και για αλληλεπίδραση με καρφίτσες εισόδου και εξόδου Rapsberry (GPIO)

Αλλά, ο στόχος μου ήταν να συνδέσω το wi-fi του tank μου από οποιαδήποτε συσκευή (υπολογιστή, κινητό τηλέφωνο, tablet…) χρησιμοποιώντας ένα κοινό πρόγραμμα περιήγησης ιστού και επίσης να μεταδώσω βίντεο από αυτό. Έτσι, ξεχάστε την Python προς το παρόν και αφήστε να προχωρήσουμε στο NODE. JS και το SOCKET. IO.

NODE.js

Το Node.js (https://github.com/nodejs/node/wiki) είναι μια εργασία πλαισίου διακομιστή ανοιχτού κώδικα που βασίζεται στη γλώσσα js. Δεδομένου ότι χρησιμοποιώ το Raspberry Pi Zero (ARMv6 CPU), δεν μπορούμε να χρησιμοποιήσουμε τη διαδικασία αυτόματης εγκατάστασης (προορίζεται για επεξεργαστή ARMv7) και πρέπει να το κάνουμε χειροκίνητα:

Κατεβάστε το Nodejs τοπικά, (έχω χρησιμοποιήσει την έκδοση 7.7.2 για ARMv6, ελέγξτε άλλες εκδόσεις εδώ

pi@raspberry: ~ $ wget

nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…

Μόλις τελειώσετε, εξαγάγετε το συμπιεσμένο αρχείο:

pi@raspberry: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Αντιγράψτε και εγκαταστήστε τα αρχεία στο /user /local

pi@raspberry: ~ $ sudo cp -R node-v7.7.2-linux-armv6l/*/usr/local/

Προσθέστε τη θέση στην οποία εγκαθιστούμε τα nodejs στη διαδρομή, επεξεργαστείτε το αρχείο ".profile":

pi@raspberry: ~ $ nano ~/.προφίλ

Προσθέστε την ακόλουθη γραμμή στο τέλος του αρχείου, αποθηκεύστε και βγείτε

PATH = $ PATH:/usr/local/bin

Καταργήστε το ληφθέν αρχείο:.

pi@raspberry: ~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz

pi@raspberry: ~ $ rm -r ~/node-v7.7.2-linux-armv6l

Πληκτρολογήστε τις ακόλουθες εντολές για να ελέγξετε την εγκατάσταση του nodejs:

pi@raspberry: n $ node -v

pi@raspberry: ~ $ npm -v

Θα πρέπει να διαβάσετε v7.7.2 και v4.1.2 ως απάντηση.

Εάν όλα πήγαν καλά, δημιουργήστε έναν νέο φάκελο για να φιλοξενήσετε τα αρχεία nodejs:

pi@raspberry: m $ mkdir nodehome

Μετακίνηση μέσα σε νέο φάκελο:

pi@raspberry: ode $ cd nodehome

Εγκαταστήστε πρόσθετη ενότητα που απαιτείται για τη διαχείριση του GPIO με τον πιο βασικό τρόπο, ON και OFF:

pi@raspberry: n $ npm εγκατάσταση onoff

Τώρα ήρθε η ώρα να δοκιμάσουμε το πρώτο μας έργο "Blink.js", το αποτέλεσμα θα είναι … ένα LED που αναβοσβήνει

pi@raspberry: n $ nano blink.js

Επικολλήστε τον ακόλουθο κώδικα, αποθηκεύστε και βγείτε:

var Gpio = απαιτούν ("onoff"). Gpio; // περιλαμβάνει onoff

var LED = νέο Gpio (3, 'out'); // χρησιμοποιήστε το GPIO 3

var blinkInterval = setInterval (αναβοσβήνειLED, 250);

// αναβοσβήνει LED κάθε 250ms

λειτουργία blinkLED () {// λειτουργία για να αρχίσει να αναβοσβήνει

αν

(LED.readSync () === 0) {// ελέγξτε την κατάσταση καρφίτσας, εάν η κατάσταση είναι 0 (ή απενεργοποιημένη)

LED.writeSync (1);

// ορίστε την κατάσταση καρφίτσας σε 1 (ενεργοποιήστε το LED)

} αλλο {

LED.writeSync (0);

// ορίστε την κατάσταση καρφίτσας στο 0 (απενεργοποιήστε το LED)

}

}

συνάρτηση endBlink () {// λειτουργία για να σταματήσει να αναβοσβήνει

clearInterval (blinkInterval)? // Σταματήστε τα διαστήματα αναβοσβήματος

LED.writeSync (0); // Απενεργοποιήστε το LED

LED.unexport (); // Κατάργηση εξαγωγής GPIO σε δωρεάν πόρους

}

setTimeout (endBlink, 5000); // σταματήστε να αναβοσβήνετε μετά από 5 δευτερόλεπτα

Συνδέστε ένα LED, μια αντίσταση (200ohms) όπως φαίνεται στο σχήμα και εκτελέστε το έργο:

pi@raspberry: n $ node blink.js

Ο κόμβος είναι έτοιμος.

SOCKET. IO

Το WebSocket είναι ένα πρωτόκολλο επικοινωνίας υπολογιστή, βασισμένο στη σύνδεση TCP, παρέχει στον προγραμματιστή τη δημιουργία διακομιστή και πελάτη. Ο πελάτης συνδέεται με τον διακομιστή και εκπέμπει και λαμβάνει μηνύματα από και προς τον διακομιστή. Η εφαρμογή WebSocket για το Node.js ονομάζεται Socket.io (https://socket.io/).

Εγκατάσταση socket.io:

pi@raspberry: ~ $ npm install socket.io --save

Μετακινηθείτε μέσα στο nodejs home, που δημιουργήθηκε προηγουμένως:

pi@raspberry: ode $ cd nodehome

Και δημιουργήστε έναν νέο φάκελο "δημόσιος":

pi@raspberry: m $ mkdir δημόσια

Δημιουργήστε νέο δείγμα διακομιστή ιστού, ονομάστε τον "webserver.js"

pi@raspberry: ~ $ nano webserver.js

Επικολλήστε τον ακόλουθο κώδικα, αποθηκεύστε και βγείτε:

var http = απαιτεί ('http'). createServer (χειριστής); // απαιτείται διακομιστής http και δημιουργία διακομιστή με χειριστή λειτουργιών ()

var fs = απαιτούν ('fs'); // απαιτούν μονάδα συστήματος αρχείων

http.listen (8080); // ακούστε τη θύρα 8080

χειριστής συναρτήσεων (req, res) {// δημιουργία διακομιστή

fs.readFile (_ dirname + '/public/index.html', λειτουργία (λάθος, δεδομένα) {// ανάγνωση

αρχείο index.html σε δημόσιο φάκελο

αν (λάθος) {

res.writeHead (404, {'Content-Type': 'text/html'}); // εμφάνιση 404 σε σφάλμα

επιστροφή res.end ( 404 Όχι

Βρέθηκαν );

}

res.writeHead (200, {'Content-Type': 'text/html'}); // εγγραφή HTML

res.write (δεδομένα); // εγγραφή δεδομένων

από index.html

επιστροφή res.end ();

});

}

Αυτός ο διακομιστής ιστού θα ακούσει τη θύρα Raspberry 8080 και θα παρέχει αρχεία σε οποιοδήποτε πρόγραμμα -πελάτη ιστού που το συνδέει. Τώρα πρέπει να δημιουργήσουμε κάτι για να φιλοξενήσουμε και να προσφέρουμε στους πελάτες μας: Μετακινηθείτε μέσα στον φάκελο "δημόσιος": pi@raspberry: ~ $ cd public

Δημιουργήστε νέο αρχείο html "index.html":

pi@raspberry: ~ $ nano index.html

Επικολλήστε τον κωδικό από το συνημμένο "HelloWorld.txt", αποθηκεύστε και βγείτε.

Μετακίνηση στο φάκελο nodejs "nodehome":

pi@raspberry: ode $ cd nodehome

Εκκίνηση διακομιστή ιστού

pi@raspberry: er $ node webserver.js

Ανοίξτε τον ιστότοπο σε ένα πρόγραμμα περιήγησης χρησιμοποιώντας https:// Raspberry_IP: 8080/(αντικαταστήστε το Raspberry_IP με την IP σας)

Βήμα 6: ΠΡΟΣΘΗΚΗ ΔΥΝΑΤΟΤΗΤΑΣ STREAMING VIDEO

Υπάρχουν διαφορετικοί τρόποι υλοποίησης ροής βίντεο σε ένα Raspberry, ο ευκολότερος

με τον τρόπο που έχω διαπιστώσει μέχρι τώρα, ότι ως εξαιρετική απόδοση και μπορεί να ενσωματωθεί σε μια διεπαφή ιστού βασίζεται στο έργο του Miguel Mota:

miguelmota.com/blog/raspberry-pi-camera-bo…

Ευχαριστώ Miguel! Από το ιστολόγιό του αυτά είναι τα βήματα:

Εγκαταστήστε τα στοιχεία libjpeg8 και cmake:

pi@raspberry: su $ sudo apt-get install libjpeg8

pi@raspberry: su $ sudo apt-get install libjpeg8-dev

pi@raspberry: su $ sudo apt-get install cmake

Λήψη mjpg-streamer με πρόσθετο raspicam:

pi@raspberry: ~ $ git κλώνος

github.com/jacksonliam/mjpg-streamer.git/mjpg-streamer

Αλλαγή καταλόγου:

pi@raspberry: ~ $ cd ~/mjpg-streamer/mjpg-streamer-experimental

Συντάσσω:

pi@raspberry: ~ $ καθαρίστε τα όλα

Αντικατάσταση παλιού mjpg-streamer:

pi@raspberry: su $ sudo rm -rf /opt /-j.webp

pi@raspberry: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-experimental

/opt/mjpg-streamer

pi@raspberry: ~ $ sudo rm -rf ~/mjpg -streamer

Δημιουργήστε ένα νέο αρχείο "start_stream.sh", αντιγράψτε και επικολλήστε από το συνημμένο αρχείο "start_stream.txt".

Κάντε το εκτελέσιμο (δημιουργήστε σενάρια κελύφους):

pi@raspberry: ~ $ chmod +x start_stream.sh

Έναρξη διακομιστή ροής:

pi@raspberry: ~ $./start_stream.sh

Ανοίξτε τον ιστότοπο σε ένα πρόγραμμα περιήγησης χρησιμοποιώντας https:// Raspberry_IP: 9000 (αντικαταστήστε το Raspberry_IP με την IP σας)

Βήμα 7: ΔΕΞΑΜΕΝΙΚΟ ΠΡΟΓΡΑΜΜΑ

Όλα είναι έτοιμα, τώρα πρέπει να δημιουργήσουμε την ιστοσελίδα μας για να ελέγξουμε τη δεξαμενή (index.html) και τον διακομιστή ιστού μας για να ακούσουμε τις εντολές μας (webserver.js). Έτσι, απλώς αντικαταστήστε τα αρχεία που έχετε δει μέχρι τώρα (μόνο παραδείγματα για τον έλεγχο του συστήματος) με τα συνημμένα webserver.txt και index.txt.

Βήμα 8: ΕΚΚΙΝΗΣΗ ΕΛΕΓΧΟΥ ΣΕΡΒΕΡ Διασύνδεσης και ροής

ΣΕΡΒΕΡ ΕΝΑΡΞΗΣ ΕΛΕΓΧΟΥ ΔΙΑΔΙΚΤΥΑΣΙΑΣ ΚΑΙ ΑΤΡΙΜΑΤΟΣ
ΣΕΡΒΕΡ ΕΝΑΡΞΗΣ ΕΛΕΓΧΟΥ ΔΙΑΔΙΚΤΥΑΣΙΑΣ ΚΑΙ ΑΤΡΙΜΑΤΟΣ

Για να ξεκινήσετε τις υπηρεσίες, ανοίξτε δύο παράθυρα τερματικού και εκτελέστε αυτές τις εντολές:

nodehome/webserver.js

./nodehome/start_stream.sh

Ανοίξτε τον ιστότοπο σε ένα πρόγραμμα περιήγησης χρησιμοποιώντας https:// Raspberry_IP: 8080 (αντικαταστήστε το Raspberry_IP με την IP σας)

Συνιστάται: