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

Pumpkin Pi Trick-or-Treat Tracker: 5 Βήματα
Pumpkin Pi Trick-or-Treat Tracker: 5 Βήματα

Βίντεο: Pumpkin Pi Trick-or-Treat Tracker: 5 Βήματα

Βίντεο: Pumpkin Pi Trick-or-Treat Tracker: 5 Βήματα
Βίντεο: 35 видео со страшными призраками: мегасборник 2023 года [V1] 2024, Ιούλιος
Anonim
Pumpkin Pi Trick-or-Treat Tracker
Pumpkin Pi Trick-or-Treat Tracker

Ακολουθήστε περισσότερα από τον συγγραφέα:

Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor
Πώς να φτιάξετε ένα Raspberry Pi Temperature Monitor
Μεταδώστε δεδομένα από τα Υπολογιστικά φύλλα Google σε έναν Πίνακα ελέγχου
Μεταδώστε δεδομένα από τα Υπολογιστικά φύλλα Google σε έναν Πίνακα ελέγχου
Μεταδώστε δεδομένα από τα Υπολογιστικά φύλλα Google σε έναν Πίνακα ελέγχου
Μεταδώστε δεδομένα από τα Υπολογιστικά φύλλα Google σε έναν Πίνακα ελέγχου
Δίκτυο αισθητήρων θερμοκρασίας
Δίκτυο αισθητήρων θερμοκρασίας
Δίκτυο αισθητήρων θερμοκρασίας
Δίκτυο αισθητήρων θερμοκρασίας

Lookάχνετε για ένα γρήγορο αποκριάτικο έργο που είναι χρήσιμο με περισσότερους από έναν τρόπους; Θέλετε να χρησιμοποιήσετε αυτό το Pi Zero WH; Νιώθετε σαν να χρησιμοποιείτε δεδομένα για να προσδιορίσετε πόσες καραμέλες θα χρειαστείτε για το επόμενο έτος;

Ετοιμαστείτε να φτιάξετε το Pumpkin Pi Trick-or-Treat Tracker! Διπλασιάζοντας τη διακόσμηση και τον ιχνηλάτη ανθρώπων, αυτό το Pi-in-a-Pumpkin αλλάζει χρώμα και ρέει όταν ανιχνεύεται κίνηση. Ξεκινώντας από την αρχή, αυτό το έργο δεν θα σας πάρει περισσότερο από ένα απόγευμα για να το συνδυάσετε - ακριβώς την ώρα του Halloween!

Προμήθειες

  • Pi Zero WH με κάρτα SD
  • Αισθητήρας κίνησης PIR
  • RGB LED
  • Αντίσταση 220 ohm
  • (3) Γραμμές γραβάτας (F/F, M/F, M/M)
  • Φορητή μπαταρία
  • Fεύτικη κολοκύθα

Βήμα 1: Συναρμολόγηση υλικού

Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού
Συναρμολόγηση υλικού

Μόλις τεθεί σε λειτουργία το Pi σας, πρέπει να συνδέσουμε τον αισθητήρα κίνησης και τα LED. Βεβαιωθείτε ότι το Pi δεν είναι συνδεδεμένο στο ρεύμα σε αυτό το σημείο.

Ο αισθητήρας κίνησης απαιτεί να τον συνδέσουμε σε ισχύ 3,3V, γείωση και μια καρφίτσα δεδομένων. Συνδέσα τον πείρο αισθητήρα 3.3V στον πείρο 1 του Pi, τον πείρο αισθητήρα γείωσης στον πείρο 6 του Pi και τον πείρο του αισθητήρα δεδομένων στο pin 16 του Pi. Η πρώτη εικόνα δείχνει την πλήρη σύνδεση του Pi και του αισθητήρα κίνησης.

Οι λυχνίες LED είναι λίγο πιο περίπλοκες από τον αισθητήρα κίνησης επειδή απαιτούν αντίσταση για να λειτουργούν σωστά χωρίς να καταστρέφονται αυτά ή το Pi. Χρησιμοποίησα τρεις αντιστάσεις 220 ohm αλλά οι αντιστάσεις 220 και 330 ohm χρησιμοποιούνται συνήθως με LED.

Για να συνδέσετε τα πάντα, μπορείτε είτε:

  • Συγκολλήστε τα πόδια LED στις αντιστάσεις και στη συνέχεια περάστε τα καλώδια στο Pi
  • Χρησιμοποιήστε ένα breadboard και γραβάτες για να συνδέσετε τα πάντα
  • Χρησιμοποιήστε γραμμές γραβάτας και ηλεκτρική ταινία για να συνδέσετε τα πάντα (όπως έκανα).

Θα συνδέσουμε το LED μας στις ακίδες 11, 13 και 15. Αυτό είναι λίγο πιο περίπλοκο από τον αισθητήρα κίνησης, ωστόσο, επειδή τα πόδια στο LED αντιστοιχούν σε ένα συγκεκριμένο χρώμα! Το μακρύ πόδι είναι GND. και, τουλάχιστον στο LED μου, τα πόδια πήγαν Κόκκινο, GND, Μπλε, Πράσινο. Συνδέσα το Μπλε με τον ακροδέκτη 11, το Πράσινο με τον ακροδέκτη 13 και τον Κόκκινο με τον ακροδέκτη 15. Η δεύτερη εικόνα δείχνει τις τελικές συνδέσεις κυκλώματος.

Βήμα 2: Αρχική κατάσταση

Αρχική κατάσταση
Αρχική κατάσταση
Αρχική κατάσταση
Αρχική κατάσταση

Σίγουρα μπορούμε να δούμε πότε ανιχνεύεται κίνηση με τη λυχνία LED, αλλά πώς θα παρακολουθήσουμε πόσα κόλπα ή κλέφτες έπεσαν για να κλέψουν την καραμέλα μας;

Θα μεταφέρουμε ροή σε έναν πίνακα ελέγχου κάθε φορά που η κίνηση ξεκινά και σταματά να ανιχνεύεται. Δεδομένου ότι αυτός ο πίνακας ελέγχου είναι προσβάσιμος από οπουδήποτε με σύνδεση στο Διαδίκτυο, μπορούμε να παρακολουθούμε από απόσταση εάν κάποιος πλησιάζει ή όχι στην μπροστινή πόρτα/μπολ με καραμέλες.

Βήμα 1: Εγγραφείτε για τον αρχικό λογαριασμό του κράτους Μεταβείτε στη διεύθυνση https://iot.app.initialstate.com και δημιουργήστε έναν νέο λογαριασμό.

Βήμα 2: Εγκαταστήστε το ISStreamer

Εγκαταστήστε τη μονάδα αρχικής κατάστασης Python στο Raspberry Pi σας. Σε μια γραμμή εντολών (μην ξεχάσετε να κάνετε SSH πρώτα στο Pi σας), εκτελέστε την ακόλουθη εντολή:

$ cd/home/pi/

$ / curl -sSL https://get.initialstate.com/python -o -| sudo bash

Βήμα 3: Κάντε λίγη Automagic

Μετά το Βήμα 2, θα δείτε κάτι παρόμοιο με την ακόλουθη έξοδο στην οθόνη:

pi@raspberrypi ~ $ / curl -sSL https://get.initialstate.com/python -o -| sudo bash

Κωδικός πρόσβασης: Έναρξη ISStreamer Python Εύκολη εγκατάσταση! Αυτό μπορεί να πάρει μερικά λεπτά για να εγκατασταθεί, πιείτε λίγο καφέ:) Αλλά μην ξεχάσετε να επιστρέψετε, θα έχω ερωτήσεις αργότερα! Βρέθηκε easy_install: setuptools 1.1.6 Βρέθηκε pip: pip 1.5.6 από /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip major version: 1 pip minor version: Βρέθηκε 5 ISStreamer, ενημερώνεται… Η απαίτηση είναι ήδη ενημερωμένη: ISStreamer στο/Librar/Python/2.7/site-packages Καθαρισμός… Θέλετε να λάβετε αυτόματα ένα παράδειγμα δέσμης ενεργειών; [y/N] Πού θέλετε να αποθηκεύσετε το παράδειγμα; [προεπιλογή:./is_example.py] Επιλέξτε ποια εφαρμογή αρχικής κατάστασης χρησιμοποιείτε: 1. app.initialstate.com 2. [ΝΕΟ!] iot.app.initialstate.com Εισαγάγετε την επιλογή 1 ή 2: Πληκτρολογήστε iot.app.initialstate.com όνομα χρήστη: Εισαγάγετε τον κωδικό πρόσβασης iot.app.initialstate.com:

Όταν σας ζητηθεί να λάβετε αυτόματα ένα παράδειγμα δέσμης ενεργειών, πληκτρολογήστε y. Αυτό θα δημιουργήσει ένα δοκιμαστικό σενάριο που μπορούμε να εκτελέσουμε για να διασφαλίσουμε ότι μπορούμε να μεταδώσουμε δεδομένα στην αρχική κατάσταση. Η επόμενη ερώτηση θα σας ρωτήσει πού θέλετε να αποθηκεύσετε το παράδειγμα του αρχείου. Μπορείτε είτε να πληκτρολογήσετε μια προσαρμοσμένη τοπική διαδρομή είτε να πατήσετε enter για να αποδεχτείτε την προεπιλεγμένη τοποθεσία. Τέλος, θα ερωτηθείτε ποια εφαρμογή αρχικής κατάστασης χρησιμοποιείτε. Εάν δημιουργήσατε πρόσφατα έναν λογαριασμό, επιλέξτε την επιλογή 2, εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασής σας. Μετά από αυτό, η εγκατάσταση θα ολοκληρωθεί.

Βήμα 4: Κλειδιά πρόσβασης

Ας ρίξουμε μια ματιά στο παράδειγμα σεναρίου που δημιουργήθηκε. $ nano is_example.py Στη γραμμή 15, θα δείτε μια γραμμή που ξεκινά με streamer = Streamer (bucket_…. Αυτές οι γραμμές δημιουργούν έναν νέο κάδο δεδομένων που ονομάζεται "Python Stream Παράδειγμα" και σχετίζεται με τον λογαριασμό σας. Αυτή η συσχέτιση συμβαίνει λόγω access_key =”…” παράμετρος στην ίδια γραμμή. Αυτή η μεγάλη σειρά γραμμάτων και αριθμών είναι το κλειδί πρόσβασης στο λογαριασμό αρχικής κατάστασης. Εάν μεταβείτε στον λογαριασμό αρχικής κατάστασης στο πρόγραμμα περιήγησής σας, κάντε κλικ στο όνομα χρήστη σας επάνω δεξιά και μετά μεταβείτε στις "ρυθμίσεις μου", θα βρείτε το ίδιο κλειδί πρόσβασης στο κάτω μέρος της σελίδας στην ενότητα "Κλειδιά πρόσβασης ροής".

Κάθε φορά που δημιουργείτε μια ροή δεδομένων, αυτό το κλειδί πρόσβασης θα κατευθύνει αυτήν τη ροή δεδομένων στο λογαριασμό σας (οπότε μην μοιράζεστε το κλειδί σας με κανέναν).

Βήμα 5: Εκτελέστε το Παράδειγμα

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

$ python is_example.py

Βήμα 6: Κέρδος

Επιστρέψτε στον αρχικό σας λογαριασμό στο πρόγραμμα περιήγησής σας. Ένας νέος κάδος δεδομένων που ονομάζεται "Παράδειγμα ροής Python" θα έπρεπε να έχει εμφανιστεί στα αριστερά στο ράφι καταγραφής (ίσως χρειαστεί να ανανεώσετε τη σελίδα). Κάντε κλικ σε αυτόν τον κάδο και, στη συνέχεια, κάντε κλικ στο εικονίδιο Waves για να δείτε τα δεδομένα δοκιμής.

Βήμα 3: Python Script

Δημιουργήστε ένα σενάριο και ανοίξτε τον επεξεργαστή κειμένου με την ακόλουθη εντολή:

nano vistors.py

Αντιγράψτε και περάστε τον κώδικα από εδώ στο πρόγραμμα επεξεργασίας κειμένου.

Πριν προσπαθήσουμε να εκτελέσουμε οτιδήποτε, πρέπει να κάνουμε μερικές τροποποιήσεις και να αναθεωρήσουμε τι συμβαίνει στο σενάριό μας.

εισαγωγή RPi. GPIO ως GPIO

από ώρα εισαγωγή ύπνου από ISStreamer. Streamer import Streamer # Πείτε στο Pi που πρόκειται να χρησιμοποιήσουμε το σύστημα αρίθμησης GPIO.setmode (GPIO. BCM) # Καρφίτσες που συνδέονται με D1 και LED με PIN = 23 BLUE = 17 GREEN = 27 RED 22, GPIO. OUT) GPIO.output (ΠΡΑΣΙΝΟ, 0) GPIO.setup (ΜΠΛΕ, GPIO. OUT) GPIO.output (ΜΠΛΕ, 0)

Οι γραμμές 1-21 προορίζονται για αρχικοποίηση. Αρχικά εισάγουμε τη διεπαφή GPIO του Pi και έναν τρόπο να κοιμηθούμε το σενάριό μας. Στη συνέχεια, εισάγουμε τη ροή αρχικής κατάστασης που εγκαταστήσαμε στην προηγούμενη σελίδα.

Το GPIO.setmode καθορίζει ποιο σύστημα αρίθμησης χρησιμοποιούμε για τις ακίδες. Αντί για φυσική τοποθεσία, χρησιμοποιούμε το σύστημα αρίθμησης του Pi. Όπως στο διάγραμμά μας νωρίτερα, οι ακίδες που επιλέξαμε ήταν 23, 17, 27 και 22. Στη συνέχεια, ρυθμίζουμε τον πείρο κίνησης ως είσοδο και τους πείρους LED ως έξοδο.

# Όνομα κάδου αρχικής κατάστασης (εμφανίζεται)

BUCKET_NAME = ": jack_o_lantern: Trick or Treat Tracker" # Κλειδί κάδου αρχικής κατάστασης (κρυφό) BUCKET_KEY = "trickortreat" # Κλειδί πρόσβασης αρχικής κατάστασης ACCESS_KEY = "Your_Access_Key" # Μεταβλητές που διασφαλίζουν ότι δεν κάνουμε ροή ότι υπήρχε ή δεν υπήρχε κίνηση δύο φορές στη σειρά # Αυτό εξοικονομεί ήδη αποσταλμένα συμβάντα και ήδη επεξεργαστική ισχύ το LED σε κίτρινο GPIO.output (RED, 1) GPIO.output (GREEN, 1)

Οι γραμμές 23-41 είναι σημαντικές διότι προετοιμάζουμε τη ροή αρχικής κατάστασης και θέτουμε το LED σε κίτρινο. Τοποθετήστε το κλειδί πρόσβασης αρχικής κατάστασης στη γραμμή 28.

# Βρόχος επ 'αόριστον

while True: # Εάν ο αισθητήρας κίνησης τραβήξει ψηλά (ανιχνεύει κίνηση): αν GPIO.input (PIN) == 1: εκτύπωση "Εντοπίστηκε κίνηση" # Αν δεν έχουμε κάνει ακόμα ροή: αν όχι ήδηRecordedMotion: counter = counter + 1 # Ορίστε το LED σε κόκκινο GPIO.output (ΚΟΚΚΙΝΟ, 1) GPIO.output (ΠΡΑΣΙΝΟ, 0) # Ροή στην αρχική κατάσταση streamer.log (": ghost: or:ocolate_bar:?", ":ocolate_bar: Time For Treats!") streamer.log (": candy: Hungry Humans?: candy:", counter) streamer.flush () ήδηRecordedMotion = True ήδηRecordedNoMotion = Λάθος άλλο: # Παύση του σεναρίου για 1 δευτερόλεπτο ύπνο (1) αλλιώς: εκτύπωση "Δεν εντοπίστηκε κίνηση" # Αν δεν έχουμε κάνει ακόμα ροή: αν όχι ήδηRecordedNoMotion: # Ορίστε το LED σε κίτρινο GPIO.output (RED, 1) GPIO.output (GREEN, 1) # Stream to Initial State streamer.log (": ghost: or:ocolate_bar:? ",": no_pedestrians: No One Around ") streamer.flush () ήδηRecordedNoMotion = Σωστό ήδηRecordedMotion = Λάθος άλλο: # Παύση του σεναρίου για 1 δευτερόλεπτο ύπνο (1)

Οι γραμμές 43-77 είναι το κρέας του κώδικα. Εάν εντοπιστεί κίνηση, το σενάριο θα ελέγξει εάν "Time For Treats!" έχει ήδη μεταδοθεί. Εάν όχι, αποστέλλεται στην αρχική κατάσταση και η λυχνία LED ρυθμίζεται σε κόκκινο. αν έχει, το σενάριο περιμένει 1 δευτερόλεπτο και μετά διαβάζει ξανά από τον αισθητήρα κίνησης. Το ίδιο ισχύει εάν δεν εντοπιστεί κίνηση.

It'sρθε η ώρα να δοκιμάσετε τον κωδικό! Βεβαιωθείτε ότι έχετε αποθηκεύσει το επεξεργασμένο αρχείο με το κλειδί πρόσβασης που έχει προστεθεί στη γραμμή 28 και, στη συνέχεια, εισαγάγετε το τερματικό:

επισκέπτες του python.py

Θα πρέπει να δείτε ότι η λυχνία LED ανάβει και η ένδειξη "Δεν εντοπίστηκε κίνηση" αρχίζει να εκτυπώνει στη γραμμή εντολών. Δοκιμάστε να κουνήσετε το χέρι σας πάνω από τον αισθητήρα κίνησης - θα πρέπει τώρα να δείτε ένα κόκκινο φως και να αρχίσει η εκτύπωση "Εντοπίστηκε κίνηση"!

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

Βήμα 4: Πίνακας ελέγχου Trick-or-Treat

Πίνακας ελέγχου Trick-or-Treat
Πίνακας ελέγχου Trick-or-Treat

Προχωρήστε στην Αρχική κατάσταση και ελέγξτε τον πίνακα ελέγχου σας! Θα πρέπει να δείτε έναν κάδο που ονομάζεται "? Trick or Treat Tracker". Κουνήστε το χέρι σας κοντά στον αισθητήρα κίνησης και παρακολουθήστε τον να ενημερώνεται!

Ο πίνακας ελέγχου αποτελείται από 2 Πλακάκια περίληψης που εμφανίζουν την Τελευταία τιμή και ένα Ιστόγραμμα του αριθμού συμβάντων, ώστε να μπορώ να δω σε ποιες ώρες ενεργοποιήθηκε ο αισθητήρας.

Εδώ είναι μερικά πράγματα που πρέπει να λάβετε υπόψη:

  • Πιθανότατα θέλετε να διαιρέσετε τον αριθμό των "πεινασμένων ανθρώπων" με 2 για να εξηγήσετε το γεγονός ότι το ίδιο άτομο θα περάσει δύο φορές μπροστά από τον αισθητήρα κίνησης - στο δρόμο προς την πόρτα σας και στην επιστροφή. Μπορείτε να το κάνετε αυτό με εκφράσεις σε πραγματικό χρόνο χρησιμοποιώντας την εξίσωση "= math.round (([Hungry Humans?]/2), 0)".
  • Μπορείτε να δοκιμάσετε πόσο ευαίσθητος φαίνεται ο αισθητήρας κίνησής σας και να τον τοποθετήσετε ανάλογα στο πεζοδρόμιο σας. Προτείνω να το κρατήσετε αρκετά μακριά από την πόρτα ώστε να μην ενεργοποιείται όταν κάποιος στέκεται στην πόρτα.
  • Μπορείτε επίσης να ρυθμίσετε ειδοποιήσεις κειμένου για να σας ενημερώσουν ότι κάποιος πλησιάζει.
  • Επιλέξτε μια εικόνα φόντου για να δώσετε στον πίνακα ελέγχου σας μια τρομακτική προσωπικότητα!

Συνιστάται: