Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In dit eenvoudige project gebruiken we een bewegingssensor om te detecteren of een object voor onze Raspberry Pi passeert. Dan tellen we hoe vaak dat gebeurt en sturen we deze waarde naar Ubidots.
Mensentellers zijn doorgaans dure apparaten die in de detailhandel worden gebruikt om te begrijpen hoe shoppers zich gedragen. Dankzij Raspberry Pi en Ubidots zijn we in staat om in een paar uur en voor een paar tientjes een functionele mensenteller te bouwen!
Zodra we de telgegevens van mensen naar Ubidots hebben gestuurd, kunnen we mooie grafieken maken voor analyse, evenals sms-/e-mailwaarschuwingen.
Stap 1: De juiste materialen verkrijgen
Om dit project te voltooien heb je nodig:
- Een Raspberry Pi-model B
- Een PIR-sensor van Parallax
- Een Raspberry Pi-compatibele USB WiFi-dongle
- Een USB-batterijpakket om de Raspberry Pi van stroom te voorzien (dit is optioneel als u de Pi volledig draadloos wilt laten)
- Drie vrouwelijke-vrouwelijke jumperdraden
- Ubidots-account - of - STEM-licentie
Stap 2: Dingen aansluiten
De PIR-bewegingssensor is vrij eenvoudig te gebruiken omdat deze slechts drie pinnen heeft:
- V+
- GND
- Een signaalpin die "1" uitvoert als er beweging is en "0" als er geen beweging is.
U hoeft niets te solderen of complexe I2C- of seriële functies te schrijven om dit signaal te detecteren; sluit de kabels gewoon rechtstreeks aan op de GPIO-pinnen van uw Raspberry Pi en het zal werken!
Stap 3: Behuizing
Omdat de PIR-sensor erg gevoelig is voor beweging, heb ik de jumperschakelaar erachter gebruikt om de laagst mogelijke gevoeligheid in te stellen. Ik nam ook een oud etui uit een zonnebril, maakte er een gat in en plaatste de RPi en de PIR-sensor erin. Op deze manier is de bewegingssensor sterk gefocust op één punt, in plaats van zo omnidirectioneel te zijn.
Stap 4: Uw RPi. coderen
Op dit punt gaan we ervan uit dat je een basisconfiguratie van je Raspberry Pi hebt gedaan en dat je naar de Linux-opdrachtregel kijkt. Zo niet, dan raden we aan eerst deze handleiding door te nemen. Je kunt ook dit bericht bekijken over het gebruik van Wicd om de wifi van je Raspberry Pi in te stellen.
Laten we beginnen met ervoor te zorgen dat we alle vereiste bibliotheken hebben:
$ sudo apt-get update$ sudo apt-get upgrade $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip install ubidots
Maak een nieuw bestand met de naam "peoplecounter.py":
$ sudo nano peoplecounter.py
En schrijf daarin de onderstaande code. Zorg ervoor dat u de waarden van de API-sleutel en de variabele ID vervangt door die in uw persoonlijke Ubidots-account. (Opmerking: de code is niet al te elegant, maar hey, ik ben geen Python-ontwikkelaar, alleen een hardwareman:)
Het script bestaat uit een lus die de status van pin #7 (de bewegingssensor) controleert. Als het een "1" aangeeft, wat betekent dat er beweging was, verhoogt het de "peoplecount" -variabele en wacht 1,5 seconde zodat de bewegingssensor weer normaal wordt. Dit wordt 10 keer gedaan, waarbij je ervoor zorgt dat er minstens 1 seconde tussen elke cyclus zit, dan stuurt het de totale som van "bewegingen" naar Ubidots. Als u de People Counter moet kalibreren, moet u met de "time.sleep"-lijnen spelen met andere waarden.
van ubidots import ApiClient
importeer RPi. GPIO als GPIO
import tijd
GPIO.setmode(GPIO. BCM)
GPIO.setup(7, GPIO. IN)
proberen:
api =ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3")
mensen = api.get_variable("5238cec3f91b282c7357a140")
behalve: print "Kan geen verbinding maken met de API, controleer uw internetverbinding"
teller = 0
mensenv = 0
terwijl(1):
aanwezigheid = GPIO.input(7)
als (aanwezigheid):
aantal mensen += 1
aanwezigheid = 0
tijd.slaap(1.5)
tijd.slaap(1)
teller += 1
if(teller==10):
aantal mensen afdrukken
mensen.save_value({'value':peoplecount})
teller = 0
mensenv = 0
Stap 5: Toon uw gegevens
Ga ten slotte naar je Ubidots-dashboard en voeg een widget van het type "Statement" toe. Hiermee wordt het totale aantal mensen weergegeven dat is gedetecteerd binnen een door u opgegeven tijdsbestek
Stap 6: afronden
Dit project geeft een indicatie van het aantal mensen dat door een bepaald punt gaat. Het geeft niet het exacte aantal mensen, gezien de beperkingen van de bewegingssensor, maar in sommige toepassingen kan dit net genoeg zijn.
De verzamelde gegevens kunnen eenvoudig worden verzonden naar de Ubidots Cloud, waar ze kunnen worden geïnterpreteerd door waarschuwingen, live dashboards te maken of deze gegevens zelfs te delen op sociale media, als insluitcode of gewoon in een openbare link. Je kunt deze gegevens ook uit een andere applicatie lezen met behulp van de Ubidots API.