- Απαιτούμενα στοιχεία
- Διάγραμμα κυκλώματος
- Ρύθμιση φιάλης στο Raspberry Pi για τον έλεγχο της πόρτας του γκαράζ
- Δημιουργία του σεναρίου Python για Smart Garage Door Opener
- Δημιουργία σελίδας HTML για το Raspberry Pi Webserver
- {{pins.name}} {% if pins.state == true%} είναι προς το παρόν ανοιχτό
Σε αυτήν την εποχή του IoT (Internet of Things) όπου τα πάντα μπορούν να ελέγχονται εξ αποστάσεως χρησιμοποιώντας το smartphone σας, γιατί να έχετε μαζί σας κλειδιά. Υπάρχουν πολλές τεχνολογίες για την υποστήριξη ασύρματου ελέγχου συσκευών όπως RFID, Bluetooth, Wi-Fi, LoRa. Προηγουμένως κατασκευάσαμε μερικούς συναγερμούς και κύκλωμα ελέγχου πόρτας για να ανοίξουμε και να κλείσουμε την πόρτα ασύρματα:
- Κλειδαριά πόρτας Arduino RFID
- Αυτόματο άνοιγμα πόρτας χρησιμοποιώντας το Arduino
- Κύκλωμα συναγερμού μαγνητικής πόρτας χρησιμοποιώντας Hall Sensor
- Συναγερμός πόρτας βασισμένος σε IoT που ελέγχεται από τον Βοηθό Google
Εδώ σε αυτό το σεμινάριο θα δημιουργήσουμε ένα Smart Garage Door Opener χρησιμοποιώντας το Raspberry Pi. Εδώ θα δημιουργηθεί ένας διακομιστής ιστού Raspberry Pi για το άνοιγμα και το κλείσιμο της πόρτας του γκαράζ χρησιμοποιώντας το smartphone σας.
Απαιτούμενα στοιχεία
- Raspberry pi board με Raspbian εγκατεστημένο σε αυτό
- Μονάδα ρελέ
- Σύνδεση καλωδίων
Υποτίθεται ότι το Raspberry Pi σας έχει ήδη αναβοσβήνει με ένα λειτουργικό σύστημα και μπορεί να συνδεθεί στο Διαδίκτυο. Εάν όχι, ακολουθήστε τον οδηγό Ξεκινώντας με το Raspberry Pi πριν συνεχίσετε. Εδώ χρησιμοποιούμε το Rasbian Jessie εγκατεστημένο στο Raspberry Pi 3.
Εδώ η εξωτερική οθόνη που χρησιμοποιεί καλώδιο HDMI χρησιμοποιείται ως οθόνη για σύνδεση με το Raspberry Pi. Εάν δεν έχετε οθόνη, μπορείτε να χρησιμοποιήσετε διακομιστή SSH (Putty) ή διακομιστή VNC για σύνδεση στο Raspberry pi χρησιμοποιώντας φορητό υπολογιστή ή υπολογιστή. Μάθετε περισσότερα σχετικά με τη ρύθμιση του Raspberry Pi χωρίς κεφάλι εδώ.
Διάγραμμα κυκλώματος
Συνδέστε το μηχανισμό ανοίγματος πόρτας Garage στην έξοδο του ρελέ. Εδώ μόλις συνδέσαμε ένα LED με ρελέ για λόγους επίδειξης.
Ρύθμιση φιάλης στο Raspberry Pi για τον έλεγχο της πόρτας του γκαράζ
Εδώ, δημιουργήσαμε έναν διακομιστή ιστού χρησιμοποιώντας το Flask, ο οποίος παρέχει έναν τρόπο αποστολής των εντολών από την ιστοσελίδα στο Raspberry Pi για τον έλεγχο του ρομπότ μέσω του δικτύου. Το Flask μας επιτρέπει να εκτελέσουμε τα σενάρια python μέσω μιας ιστοσελίδας και μπορούμε να στείλουμε και να λάβουμε δεδομένα από το Raspberry Pi στο πρόγραμμα περιήγησης ιστού και το αντίστροφο. Η φιάλη είναι ένα μικροπλαίσιο για την Python. Αυτό το εργαλείο βασίζεται σε Unicode με ενσωματωμένο διακομιστή ανάπτυξης και εντοπισμό σφαλμάτων, ενσωματωμένη υποστήριξη δοκιμών μονάδων, υποστήριξη για ασφαλή cookie και εύκολο στη χρήση του, αυτά τα πράγματα το καθιστούν χρήσιμο για τον χομπίστα.
Εκτελέστε τις ακόλουθες εντολές για να εγκαταστήσετε τη φιάλη στο Raspberry Pi:
sudo apt-get ενημέρωση sudo apt-get εγκατάσταση python-pip python-flask
Τώρα, εκτελέστε την εντολή pip για να εγκαταστήσετε το Flask και τις εξαρτήσεις του:
sudo pip εγκαταστήστε φιάλη
Μπορείτε να μάθετε περισσότερα σχετικά με τον προγραμματισμό χρησιμοποιώντας το Flask εδώ, επίσης να ελέγξετε τα προηγούμενα έργα μας όπου χρησιμοποιήσαμε το Flask για τον έλεγχο ρομπότ μέσω διακομιστή ιστού, να στείλετε το μήνυμα από την ιστοσελίδα στο Raspberry Pi και να στείλετε αξία βάρους στο Raspberry Pi στο Smart Container.
Τώρα, θα γράψουμε ένα σενάριο python για τον διακομιστή web της γκαραζόπορτας μας.
Δημιουργία του σεναρίου Python για Smart Garage Door Opener
Αυτό το σενάριο θα αλληλεπιδρά με τα Raspberry Pi GPIOs και θα ρυθμίζει τον διακομιστή ιστού. Έτσι, αυτό είναι το βασικό σενάριο για την εφαρμογή μας. Στο τέλος παρέχεται πλήρες σενάριο Python για το άνοιγμα της πόρτας, εδώ έχουμε εξηγήσει μερικά μέρη του.
Αρχικά, δημιουργήστε ένα φάκελο. Όλοι οι άλλοι απαιτούμενοι φάκελοι πρέπει να βρίσκονται μόνο σε αυτόν το φάκελο. Εκτελέστε τις παρακάτω εντολές για τη δημιουργία φακέλου και το αρχείο δημιουργίας python που ονομάζεται app.py μέσα σε αυτόν το φάκελο.
mkdir garage_door cd garage_door nano app.py
Αυτό θα ανοίξει το πρόγραμμα επεξεργασίας Nano όπου πρέπει να γράψουμε το σενάριο.
Ξεκινήστε συμπεριλαμβάνοντας σημαντικές βιβλιοθήκες.
εισαγωγή RPi.GPIO ως GPIO από φιάλη εισαγωγή φιάλης, render_template, request app = Flask (__ name__, static_url_path = '/ static')
Τώρα, δημιουργήστε ένα λεξικό ως καρφίτσες για να αποθηκεύσετε τον αριθμό pin, το όνομα και την κατάσταση pin. Μπορείτε να χρησιμοποιήσετε περισσότερες από μία καρφίτσες ανάλογα με τις ανάγκες σας.
καρφίτσες = { 14: {'name': 'Garage Door', 'state': GPIO.LOW} }
Στη συνέχεια, ορίστε τον πείρο ως έξοδο και χαμηλώστε τον αρχικά.
Για καρφίτσες σε pin: GPIO.setup (pin, GPIO.OUT) GPIO.output (pin, GPIO.LOW)
Τώρα, κάντε μια κύρια λειτουργία για να διαβάσετε την κατάσταση pin και να αποθηκεύσετε αυτήν την κατάσταση σε μια μεταβλητή.
@ app.route ("/") def main (): για pin in pins: pins = GPIO.input (pin) ..
Πρέπει να μεταφέρουμε αυτά τα δεδομένα στη σελίδα μας html έτσι ώστε να μπορούμε να ελέγξουμε την κατάσταση του κουμπιού εισαγωγής.
return render_template ('main.html', ** templateData)
Τώρα, κάντε μια συνάρτηση για να χειριστείτε τα αιτήματα από τη διεύθυνση URL με τον αριθμό pin και τη δράση σε αυτό.
@ app.route ("/
Μετατρέψτε την καρφίτσα από τη διεύθυνση URL σε ακέραιο.
changePin = int (αλλαγήPin)
Εάν το τμήμα ενέργειας του URL είναι "ανοιχτό", κάντε τα εξής.
if action == "open": GPIO.output (changePin, GPIO.HIGH) αν η ενέργεια == "κλείσιμο": GPIO.output (changePin, GPIO.LOW)
Μπορείτε να αντιγράψετε το πλήρες σενάριο από το τέλος αυτού του σεμιναρίου και να το αποθηκεύσετε χρησιμοποιώντας το ctrl + x και, στη συνέχεια, πατήστε enter. Έχουμε κάνει με το σενάριο python. Τώρα, πρέπει να δημιουργήσουμε μια σελίδα HTML για να αλληλεπιδράσουμε με το σενάριο python.
Δημιουργία σελίδας HTML για το Raspberry Pi Webserver
Στον ίδιο φάκελο garage_door , δημιουργήστε έναν άλλο φάκελο με όνομα templates και μέσα σε αυτόν το φάκελο δημιουργήστε ένα αρχείο.html χρησιμοποιώντας τις παρακάτω εντολές.
mkdir templates cd templates nano main.html
Στο πρόγραμμα επεξεργασίας κειμένου nano , γράψτε τον κώδικα html. Μπορείτε να επεξεργαστείτε το μέρος της σελίδας και το στυλ σύμφωνα με την επιλογή σας. Μόλις χρησιμοποίησα το σχήμα css τρίτου μέρους χρησιμοποιώντας ετικέτα συνδέσμου. Ο πλήρης κώδικας HTML δίνεται παρακάτω:
Διακομιστής Web Garage Door
{% για καρφίτσες σε καρφίτσες%}{{pins.name}} {% if pins.state == true%} είναι προς το παρόν ανοιχτό
Εδώ το σημαντικό μέρος είναι να δημιουργήσετε ένα κουμπί για να ανοίξετε και να κλείσετε την πόρτα και να ορίσετε μια κατάσταση για να ανοίξετε και να κλείσετε το κουμπί. Το κουμπί θα στείλει και θα πάρει την κατάσταση GPIO από το σενάριο python.
Μπορείτε να χρησιμοποιήσετε τον παραπάνω κώδικα HTML στον επεξεργαστή και να τον αποθηκεύσετε. Τώρα ο διακομιστής ιστού είναι έτοιμος για εκκίνηση.
Ανοίξτε το τερματικό και μεταβείτε στο φάκελο garage_door και εκτελέστε την παρακάτω εντολή
sudo python app.py
Ανοίξτε το πρόγραμμα περιήγησης και εισαγάγετε τη διεύθυνση IP του βατόμουρου και πατήστε enter. Για να βρείτε τη διεύθυνση IP σας, μπορείτε να εκτελέσετε την παρακάτω εντολή στο τερματικό.
όνομα κεντρικού υπολογιστή -I
Θα δείτε μια σελίδα σαν αυτήν.
Βεβαιωθείτε ότι η μονάδα ρελέ είναι συνδεδεμένη στο βατόμουρο pi. Πατήστε το κουμπί Άνοιγμα για να ενεργοποιήσετε το ρελέ ή για να ανοίξετε την πόρτα του γκαράζ. Μπορείτε επίσης να δείτε την κατάσταση του ρελέ. Μόλις ενεργοποιήσετε το ρελέ, το κείμενο του κουμπιού θα αλλάξει Κλείσιμο για να απενεργοποιήσετε το ρελέ. Τώρα, όταν κάνετε ξανά κλικ στο κουμπί, το ρελέ θα απενεργοποιηθεί και το κείμενο του κουμπιού θα αλλάξει σε Άνοιγμα ξανά.
Για να σταματήσετε τον διακομιστή πατήστε ctrl + c.
Απλώς συνδέστε αυτό το ρελέ σε κάποιο μηχανισμό Door Opener, που είναι άμεσα διαθέσιμο στην αγορά και αρχίστε να ελέγχετε την πόρτα του γκαράζ χρησιμοποιώντας Smartphone.
Ακολουθεί ένα βίντεο επίδειξης.