Inhoudsopgave:

Pumpkin Pi Trick-or-Treat Tracker - Ajarnpa
Pumpkin Pi Trick-or-Treat Tracker - Ajarnpa

Video: Pumpkin Pi Trick-or-Treat Tracker - Ajarnpa

Video: Pumpkin Pi Trick-or-Treat Tracker - Ajarnpa
Video: Pumpkin With Moving Eyes! | Servo Arduino Raspberry Pi | Halloween Projects 2024, Juli-
Anonim
Pumpkin Pi Trick-or-Treat-tracker
Pumpkin Pi Trick-or-Treat-tracker

Door elizabethnaVolg meer door de auteur:

Hoe een Raspberry Pi-temperatuurmonitor te bouwen
Hoe een Raspberry Pi-temperatuurmonitor te bouwen
Hoe een Raspberry Pi-temperatuurmonitor te bouwen
Hoe een Raspberry Pi-temperatuurmonitor te bouwen
Gegevens streamen van Google Spreadsheets naar een dashboard
Gegevens streamen van Google Spreadsheets naar een dashboard
Gegevens streamen van Google Spreadsheets naar een dashboard
Gegevens streamen van Google Spreadsheets naar een dashboard
Netwerk van temperatuursensoren
Netwerk van temperatuursensoren
Netwerk van temperatuursensoren
Netwerk van temperatuursensoren

Op zoek naar een snel Halloween-project dat op meer dan één manier nuttig is? Wil je die Pi Zero WH goed gebruiken? Zin om aan de hand van data te bepalen hoeveel snoep je volgend jaar nodig hebt?

Maak je klaar om de Pumpkin Pi Trick-or-Treat Tracker te bouwen! Deze Pi-in-a-Pumpkin verdubbelt als decoratie en als mensenvolger en verandert van kleur en streamt wanneer beweging wordt gedetecteerd. Dit project, dat helemaal opnieuw begint, zou je niet meer dan een middag in beslag moeten nemen - net op tijd voor Halloween!

Benodigdheden

  • Pi Zero WH met SD-kaart
  • PIR-bewegingssensor
  • RGB-LED
  • 220 ohm Weerstanden
  • (3) Tie-lijnen (F/F, M/F, M/M)
  • Draagbare batterij
  • Nep Pompoen

Stap 1: Hardwaremontage

Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage
Hardware-assemblage

Zodra u uw Pi in gebruik heeft, moeten we de bewegingssensor en LED's aansluiten. Zorg ervoor dat je Pi op dit moment niet is aangesloten op de stroom.

Onze bewegingssensor vereist dat we hem aansluiten op 3,3V voeding, aarde en een datapin. Ik heb de 3,3V-sensorpin aangesloten op pin 1 van de Pi, de grondsensorpin op pin 6 van de Pi en de datasensorpin op pin 16 van de Pi. De eerste foto toont de volledige aansluiting voor de Pi en de bewegingssensor.

LED's zijn wat lastiger dan de bewegingssensor omdat ze een weerstand nodig hebben om correct te werken zonder ze of de Pi te beschadigen. Ik gebruikte drie 220 ohm weerstanden, maar 220 en 330 ohm weerstanden worden meestal gebruikt met LED's.

Om alles aan te sluiten kun je ofwel:

  • Soldeer de LED-poten aan de weerstanden en voer de draden vervolgens in de Pi
  • Gebruik een breadboard en koppellijnen om alles met elkaar te verbinden
  • Gebruik daslijnen en isolatietape om alles aan te sluiten (zoals ik deed).

We zullen onze LED aansluiten op pinnen 11, 13 en 15. Dit is echter een beetje lastiger dan de bewegingssensor, omdat de pootjes op de LED overeenkomen met een specifieke kleur! Het lange been is GND; en, tenminste op mijn LED, werden de poten rood, GND, blauw, groen. Ik heb blauw aangesloten op Pi-pin 11, groen op Pi-pin 13 en rood op Pi-pin 15. De tweede afbeelding toont de uiteindelijke circuitverbindingen.

Stap 2: Oorspronkelijke staat

Oorspronkelijke toestand
Oorspronkelijke toestand
Oorspronkelijke toestand
Oorspronkelijke toestand

Natuurlijk kunnen we zien wanneer er beweging wordt gedetecteerd met de LED, maar hoe gaan we bijhouden hoeveel trick-or-treaters langskwamen om ons snoep te stelen?

We gaan naar een dashboard streamen telkens wanneer beweging begint en niet meer wordt gedetecteerd. Omdat dit dashboard overal met een internetverbinding toegankelijk is, kunnen we op afstand monitoren of iemand de voordeur/snoepschaal nadert.

Stap 1: Registreer voor Initial State AccountGa naar https://iot.app.initialstate.com en maak een nieuw account aan.

Stap 2: Installeer de ISStreamer

Installeer de Initial State Python-module op uw Raspberry Pi. Voer de volgende opdracht uit bij een opdrachtprompt (vergeet niet eerst SSH naar uw Pi te sturen):

$ cd /home/pi/

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

Stap 3: Maak wat Automagic

Na stap 2 ziet u iets dat lijkt op de volgende uitvoer op het scherm:

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

Wachtwoord: Begin ISStreamer Python Eenvoudige installatie! Dit kan een paar minuten duren om te installeren, neem wat koffie:) Maar vergeet niet terug te komen, ik heb later vragen! Easy_install gevonden: setuptools 1.1.6 Gevonden pip: pip 1.5.6 van /Library/Python/2.7/site-packages/pip-1.5.6- py2.7.egg (python 2.7) pip hoofdversie: 1 pip kleine versie: 5 ISStreamer gevonden, updaten… Vereiste al up-to-date: ISStreamer in /Library/Python/2.7/site-packages Opruimen… Wil je automatisch een voorbeeldscript krijgen? [j/N] Waar wil je het voorbeeld opslaan? [default:./is_example.py] Selecteer a.u.b. welke Initial State-app u gebruikt: 1. app.initialstate.com 2. [NIEUW!] iot.app.initialstate.com Voer keuze 1 of 2 in: Voer iot.app in.initialstate.com gebruikersnaam: Voer het iot.app.initialstate.com wachtwoord in:

Wanneer u wordt gevraagd om automatisch een voorbeeldscript op te halen, typt u y. Hiermee wordt een testscript gemaakt dat we kunnen uitvoeren om ervoor te zorgen dat we gegevens naar de oorspronkelijke status kunnen streamen. De volgende prompt zal vragen waar u het voorbeeldbestand wilt opslaan. U kunt een aangepast lokaal pad typen of op Enter drukken om de standaardlocatie te accepteren. Ten slotte wordt u gevraagd welke Initial State-app u gebruikt. Als je onlangs een account hebt aangemaakt, kies dan optie 2, voer je gebruikersnaam en wachtwoord in. Daarna is de installatie voltooid.

Stap 4: Toegangssleutels

Laten we eens kijken naar het voorbeeldscript dat is gemaakt. $ nano is_example.py Op regel 15 ziet u een regel die begint met streamer = Streamer(bucket_ …. Deze regel maakt een nieuwe gegevensbucket aan met de naam "Python Stream Voorbeeld" en is gekoppeld aan uw account. Deze koppeling vindt plaats vanwege de access_key="…" parameter op diezelfde regel. Die lange reeks letters en cijfers is de toegangssleutel van uw Initial State-account. Als u in uw webbrowser naar uw Initial State-account gaat, klikt u op uw gebruikersnaam in de rechterbovenhoek en gaat u naar “mijn instellingen”, vindt u diezelfde toegangssleutel onderaan de pagina onder “Streaming Toegangssleutels”.

Elke keer dat u een gegevensstroom maakt, leidt die toegangssleutel die gegevensstroom naar uw account (deel uw sleutel dus met niemand).

Stap 5: Voer het voorbeeld uit

Voer het testscript uit om er zeker van te zijn dat we een gegevensstroom naar uw Initial State-account kunnen maken. Voer het volgende uit:

$ python is_voorbeeld.py

Stap 6: Winst

Ga terug naar uw Initial State-account in uw webbrowser. Een nieuwe data-bucket genaamd "Python Stream-voorbeeld" zou aan de linkerkant in uw logplank moeten verschijnen (mogelijk moet u de pagina vernieuwen). Klik op deze bucket en klik vervolgens op het Waves-pictogram om de testgegevens te bekijken.

Stap 3: Python-script

Maak een script en open de teksteditor met de volgende opdracht:

nano bezoekers.py

Kopieer en plak de code van hier naar in uw teksteditor.

Voordat we iets proberen uit te voeren, moeten we een paar bewerkingen uitvoeren en bekijken wat er in ons script gebeurt.

importeer RPi. GPIO als GPIO

from time import sleep from ISStreamer. Streamer import Streamer # Vertel de Pi dat we zijn nummeringssysteem GPIO.setmode(GPIO. BCM) gaan gebruiken # Pinnen waarop D1 en LED zijn aangesloten PIN = 23 BLAUW = 17 GROEN = 27 ROOD = 22 # Specificeer onze bewegingssensorpin als input GPIO.setup(PIN, GPIO. IN) # Specificeer onze LED-pinnen als output GPIO.setup(RED, GPIO. OUT) GPIO.output(RED, 0) GPIO.setup(GREEN, GPIO. OUT) GPIO.output (GROEN, 0) GPIO.setup (BLAUW, GPIO. OUT) GPIO.output (BLAUW, 0)

Regels 1-21 zijn voor initialisatie. Eerst importeren we de GPIO-interface van de Pi en een manier om ons script te laten slapen. Vervolgens importeren we de Initial State-streamer die we op de vorige pagina hebben geïnstalleerd.

GPIO.setmode specificeert welk nummeringssysteem we gebruiken voor de pinnen. In plaats van fysieke locatie gebruiken we het nummeringssysteem van de Pi. Zoals in ons eerder diagram, waren de pinnen die we kozen 23, 17, 27 en 22. Vervolgens hebben we de bewegingspin ingesteld als invoer en de LED-pinnen als uitvoer.

# Bucketnaam initiële status (weergegeven)

BUCKET_NAME = ":jack_o_lantern: Trick or Treat Tracker" # Initiële status-bucketsleutel (verborgen) BUCKET_KEY = "trickortreat" # Initiële statustoegangssleutel ACCESS_KEY = "Your_Access_Key" # Variabelen die ervoor zorgen dat we niet streamen wat er wel of niet was beweging twee keer achter elkaar # Dit bespaart verzonden gebeurtenissen en verwerkingskracht reedsRecordedMotion = False reedsRecordedNoMotion = False counter = 0 # Initialiseer de initiële status Streamer streamer = Streamer(bucket_name=BUCKET_NAME, bucket_key=BUCKET_KEY, access_key=ACCESS_KEY) # Inschakelen en instellen de LED naar geel GPIO.output (ROOD, 1) GPIO.output (GROEN, 1)

Regels 23-41 zijn belangrijk omdat we de Initial State-streamer initialiseren en de LED op geel zetten. Zet uw Initial State-toegangssleutel op lijn 28.

# Loop voor onbepaalde tijd

while True: # Als de bewegingssensor hoog trekt (detecteert beweging): if GPIO.input(PIN) == 1: print "Beweging gedetecteerd" # Als we nog niet hebben gestreamd: indien niet reedsRecordedMotion: counter = counter + 1 # Zet LED op rood GPIO.output(ROOD, 1) GPIO.output(GROEN, 0) # Stream naar beginstatus streamer.log(":ghost: or:chocolate_bar:?", ":chocolate_bar: Time For Treats!") streamer.log(":candy: Hungry Humans?:candy:", counter) streamer.flush() reedsRecordedMotion = True reedsRecordedNoMotion = False else: # Pauzeer het script voor 1 seconde slaap(1) else: print "Geen beweging gedetecteerd" # Als we nog niet hebben gestreamd: indien niet reedsRecordedNoMotion: # Zet LED op geel GPIO.output(RED, 1) GPIO.output(GREEN, 1) # Stream naar Initial State streamer.log(":ghost: of:chocolate_bar:?", ":no_pedestrians: No One Around") streamer.flush() reedsRecordedNoMotion = True alRecordedMotion = False else: # Pauzeer het script voor 1 seconde slaap(1)

Regels 43-77 zijn het vlees van de code. Als er beweging wordt gedetecteerd, controleert het script of "Time For Treats!" is al gestreamd. Als dat niet het geval is, wordt het naar de beginstatus gestuurd en wordt de LED rood; als dat het geval is, wacht het script 1 seconde en leest het vervolgens opnieuw van de bewegingssensor. Hetzelfde geldt als er geen beweging wordt gedetecteerd.

Het is tijd om de code uit te testen! Zorg ervoor dat u uw bewerkte bestand hebt opgeslagen met uw toegangssleutel toegevoegd op regel 28 en voer vervolgens in de terminal in:

python bezoekers.py

U zou de LED moeten zien gaan branden en "Geen beweging gedetecteerd" begint met afdrukken naar de opdrachtregel. Probeer met uw hand over de bewegingssensor te zwaaien - u zou nu een rood lampje moeten zien en "Beweging gedetecteerd" begint met afdrukken!

Nu om te controleren of onze metingen naar de oorspronkelijke staat worden gestreamd.

Stap 4: Trick-or-Treat-dashboard

Trick-or-Treat-dashboard
Trick-or-Treat-dashboard

Ga naar Initial State en bekijk je dashboard! U zou een emmer moeten zien met de naam "?Trick or Treat Tracker". Zwaai met uw hand in de buurt van de bewegingssensor en kijk hoe deze wordt bijgewerkt!

Mijn dashboard bestaat uit 2 samenvattingstegels die de laatste waarde en een histogram van het aantal gebeurtenissen weergeven, zodat ik kan zien op welke tijden de sensor is geactiveerd.

Hier zijn enkele dingen om te overwegen:

  • U wilt waarschijnlijk het aantal "hongerige mensen" door 2 delen om rekening te houden met het feit dat dezelfde persoon twee keer langs de bewegingssensor zal passeren - op weg naar uw deur en op de terugweg. U kunt dit doen met Real-Time Expressions met behulp van de vergelijking "=math.round(([Hungry Humans?]/2), 0)".
  • Je kunt testen hoe gevoelig je bewegingssensor lijkt te zijn en dienovereenkomstig op je trottoir plaatsen. Ik stel voor om het ver genoeg van de deur te houden, zodat het niet afgaat als er iemand voor de deur staat.
  • U kunt ook tekstmeldingen instellen om u te laten weten dat er iemand nadert.
  • Kies een achtergrondafbeelding om je dashboard een beetje spookachtig karakter te geven!

Aanbevolen: