Raspberry Pi beweging gevoelige Camera (20 / 21 stap)

Stap 20: Hoe de Python programma's werken


Er zijn twee klant Python programma's gebruikt in dit instructable maken de Raspberry Pi Motion gevoelige Camera.

RPI-ms-camera.py

Het eerste programma "rpi-ms-camera.py" is gestart met de opdracht:

 post-up python /home/pi/python_programs/rpi-ms-camera.py -p 

in het systeembestand "/ etc/network/interfaces'. De 'post-up' opdracht wordt uitgevoerd wanneer de netwerkinterfaces gebruiksklaar zijn.

Aanbiedingen 1 tot en met 6 Toon de broncode voor de rpi-ms-camera.py-programma:

Lijnen 4-26 (tekstvak 1) invoer nodig bibliotheken en constanten die zullen worden gebruikt binnen het programma definiëren.

  • Lijnen 4-6 importeren de bibliotheken die nodig zijn voor het systeem commando, controle van de module van de camera de tijd krijgen en opdat het programma kan lezen en schrijven van de GPIO pinnen.
  • Lijn 10 definieert welke GPIO pin wordt gebruikt voor het detecteren van bewegingsdetectie door de PIR-sensor.
  • Lijnen 13 en 14 zijn constanten die worden gebruikt voor de uitvoer worden weergegeven die aangeven welke modus de camera functioneert.
  • Regel 17 definieert welke folder zal worden gebruikt voor het opslaan van de meest recente foto of video gevangen genomen door de camera.
  • Lijn 20 definieert de locatie van het programma dat wordt gebruikt om bestanden te uploaden naar Dropbox.
  • Regel 23 wordt het aantal seconden van video die zal worden opgenomen wanneer er beweging is gedetecteerd. Dit kan worden aangepast aan uw behoeften te voldoen. De meer seconden video opgenomen, hoe langer het duurt om te uploaden naar Dropbox.
  • Regel 26 wordt het aantal seconden dat het programma wachten zal na de breuk van een foto of een video-opname. Deze vertraging wordt gebruikt om te voorkomen dat het nemen van een heleboel foto's / video's in een rij van dezelfde gebeurtenis. Dit kan worden veranderd als vaker of minder vaak foto's / video's zijn te nemen.

Lijnen van 28-31 (opsomming 2) de "generate_file_name"-functie definiëren. Deze functie wordt gebruikt voor het genereren van een unieke bestandsnaam op basis van de datum en tijd. De naam van dit bestand zal worden gebruikt voor de foto's of video's. Het formaat van de gegenereerde naam is "yyyy-mm-dd-hh-MM-ss-tz" waarbij JJJJ het jaar, mm de maand, dd is de dag, hh is het uur, MM de minuten, ss de seconden is en tz is de tijdzone.

Lijnen 33-46 (opsomming 2) de "motion_detected"-functie definiëren. Deze functie wordt aangeroepen wanneer de PIR-sensor beweging heeft gedetecteerd. Deze functie kunt u een foto of records video, upload de foto of video naar Dropbox, en verwijdert het bestand van de Raspberry Pi.

  • Regel 36 gemaakt de naam van het bestand moet worden gebruikt voor de foto of video.
  • Lijn 37 wordt een bericht weergegeven dat aangeeft dat er beweging is geconstateerd afgedrukt.
  • Lijnen 38-40 zijn uitgevoerd als de cameramodus in om snap foto's is ingesteld.
    • Lijn 39 wordt de extensie ".jpg" toegevoegd aan de naam van het bestand.
    • Lijn 40 roept de functie van de "snap_photo" om de foto te maken.
  • Lijnen 41-43 worden uitgevoerd als de modus van de camera is ingesteld om video te registreren.
    • Lijn 42 wordt de extensie ".h264" toegevoegd aan de naam van het bestand.
    • Lijn 43 roept de functie van de "record_video" om vast te leggen van de video.
  • Lijn 44 roept de functie van de "upload_to_dropbox" om de foto of video uploaden naar Dropbox.
  • Lijn 45 verwijdert de foto of video. Dit wordt gedaan om te voorkomen dat de Raspberry Pi SD kaart te vullen met foto's of video's.
  • Lijn 46 wordt een bericht weergegeven dat aangeeft dat het bestand is verwijderd.

Lijnen van 48-53 (lijst 3) de "snap_photo"-functie definiëren. Deze functie wordt gebruikt om een foto te nemen.

  • Lijn 51 stelt u de resolutie voor de foto.
  • Lijn 52 wordt uitgelijnd op de foto en wordt deze opgeslagen in het opgegeven bestand.
  • Lijn 53 wordt afgedrukt op een bericht dat aangeeft dat er een foto werd genomen.

Lijnen 55-64 (lijst 3) de "record_video"-functie definiëren. Deze functie wordt gebruikt om een video te registreren.

  • Lijn 59 stelt u de resolutie voor de video.
  • Lijn 60 begint de video-opname en slaat deze op in het opgegeven bestand.
  • Lijn 61 wordt afgedrukt op een bericht dat aangeeft dat de video-opname is gestart.
  • Lijn 62 maakt het programma wacht totdat het opgegeven aantal seconden.
  • Lijn 63 stopt de opname van de video.
  • Lijn 64 wordt afgedrukt op een bericht dat aangeeft dat de video opname is gestopt.

Lijnen 66-74 (lijst 3) definieert de "upload_to_dropbox"-functie. Deze functie zal het opgegeven bestand uploaden naar Dropbox.

  • Lijn 70 haalt gewoon de naam van het bestand uit de volledige bestandsnaam die werd doorgegeven aan de functie. Dit is de naam van het bestand opgeslagen in Dropbox.
  • Lijn 71 wordt afgedrukt op een bericht over wat bestand worden geüpload.
  • Lijn 72 definieert de volledige opdracht die worden gebruikt voor het laden van het bestand. De opdracht bestaat uit de naam en locatie van het upload-programma, de "upload" optie voor de opdracht, de naam van het lokale bestand en de naam die moet worden gebruikt voor het bestand op Dropbox.
  • Lijn 74 maakt gebruik van de functie van systeem "subprocess.call" de opdracht moet worden uitgevoerd.

Lijnen 76-85 (aanbieding 4) de "upload_ip_address"-functie definiëren. Deze functie wordt gebruikt om een bestand te maken met het IP-adres van de Raspberry Pi en deze uploaden naar Dropbox. Het doel van het uploaden van een bestand met het IP-adres is dat het gemakkelijk om het IP-adres van de Raspberry Pi voor foutopsporing. Met het IP-adres is het mogelijk om te gebruiken "ssh" open een terminal sessie naar de Raspberry Pi en Linux commando's.

  • Lijn 80 wordt een bericht weergegeven dat aangeeft dat het IP-adres worden geuploaded naar Dropbox afgedrukt.
  • Lijn 81 maakt de naam van het bestand waarin u het IP-adres.
  • Lijn 82 construeert de opdracht om het IP-adres van het systeem. De opdracht ' hostname-ik > "gevolgd door de bestandsnaam.
  • Lijn 83 maakt gebruik van de functie van systeem "subprocess.call" de opdracht moet worden uitgevoerd.
  • Lijn 84 dringt erop aan dat "upload_to_dropbox" het bestand uploaden naar Dropbox.
  • Lijn 85 wordt het bestand verwijderd van de Raspberry Pi.

Lijnen van 87-91 (aanbieding 4) de "first_time_config"-functie definiëren. Deze functie wordt aangeroepen tijdens het instellen van de Raspberry Pi als de opdracht 'python rpi-ms-camera.py - firsttime"wordt afgegeven. Deze opdracht wordt gebruikt in stap 9 van dit instructable.

  • Lijn 91 maakt gebruik van de functie van systeem "subprocess.call" aan het commando dat bestanden naar Dropbox uploaden. Wanneer deze opdracht voor de eerste keer gegeven, vraagt de gebruiker voor het invoeren van de informatie die nodig is om te verbinden met Dropbox.

Lijnen 93-99 (aanbieding 4) de "test_dropbox"-functie definiëren. Deze functie wordt aangeroepen tijdens het instellen van de framboos wanneer de opdracht ' python rpi-ms-camera.py - test "wordt afgegeven. Deze opdracht maakt u een testbestand met daarin het IP-adres van de Raspberry Pi en upload het naar Dropbox. Als het succesvol de bestand verzendt, heeft vervolgens de Raspberry Pi zijn goed ingesteld voor gebruik met Dropbox. Het wordt gebruikt in stap 9 van dit instructable.

  • Lijn 97 wordt een bericht weergegeven dat aangeeft dat de verbinding van Dropbox is ongeveer te beproeven afgedrukt.
  • Regel 98 roept de functie van de "upload_ip_address" te maken en uploaden van een bestand met daarin het IP-adres van de Raspberry Pi.
  • Lijn 99 wordt afgedrukt op een bericht van de upload is voltooid en vraagt de gebruiker om te controleren de Dropbox app map om te controleren of het bestand is geüpload.

100-133 lijnen (opsomming 5) zijn het begin van het hoofdprogramma.

  • Lijnen 107-110 zijn opmerkingen die Toon alle opties voor het programma.
  • Lijn 113 controleert of alle opties zijn opgegeven. Als opties hebt opgegeven dat het programma blijft op regel 114. Als er geen opties zijn opgegeven, wordt het programma gaat naar regel 127.
  • Lijnen 114-115 controleren om te zien als de optie voor het nemen van foto's is opgegeven en als zo stelt in de cameramodus op foto's.
  • Lijnen 116-117 controleren om te zien als de optie voor het opnemen van video is opgegeven en als de cameramodus zo ingesteld naar video's.
  • Lijnen 118-120 controleren om te zien als de eerste tijd-optie was gespecificeerd en dus de "first_time_config"-functie aanroept en vervolgens verlaat het programma.
  • Lijnen 121-123 controleren om te zien als de test-optie was gespecificeerd en dus de "test_dropbox"-functie aanroept en vervolgens verlaat het programma.
  • Lijnen 124-126 zijn bereikt als sommige andere optie was gespecificeerd. Aangezien dit een niet-herkende optie, een foutbericht wordt afgedrukt en het programma wordt afgesloten.
  • Lijnen 127-133 uitgevoerd wanneer geen opties zijn opgegeven. Lijnen 128-132 afdrukken wat alle geldige opties zijn en vervolgens lijn 133 verlaat het programma.

Lijnen van 135-164 (aanbieding 6) initialisatie uitvoeren voor het hoofdprogramma.

  • Lijnen afdrukken berichten 135-136 met vermelding van de Raspberry Pi Motion gevoelige Camera begint en welke modus (foto of video) zal worden gebruikt.
  • 138-141 stelt de cameramodule lijnen. Lijn 139 initialiseert de camera. Lijnen 140-141 geven aan naar de camera de afbeelding spiegelen, dus het zal rechts omhoog vanuit de gebruiker gezien. Het wegknippen van het beeld is noodzakelijk vanwege de manier waarop die de camera gemonteerd staat op het voorpaneel.
  • Lijnen 143-145 de GPIO pin voor de PIR-bewegingsmelder stelt. Er zijn twee nummeringsschema's voor de GPIO pinnen: lijn 144 vertelt de GPIO software welke regeling deze wordt gebruikt. Lijn 145 Hiermee stelt u de pin voor de PIR sensor als een input pin.
  • Line 149 roept de functie van de "upload_ip_address" om te uploaden naar Dropbox met daarin het IP-adres toegewezen aan deze Raspberry Pi. Dit wordt gebruikt voor het opsporen van fouten maar ook om te laten weten dat de camera is en uitvoeren.

152-163 lijnen (aanbieding 6) is de hoofdlus van het programma.

  • Lijn 152 definieert een lus dat wordt herhaald voor onbepaalde tijd tot de de Raspberry Pi wordt afgesloten.
  • Lijn 154 wordt een bericht weergegeven dat aangeeft dat de camera wachten zal om motie ontdekken afgedrukt.
  • Lijn 155 wacht op een signaal van de PIR sensor aan te geven dat beweging is gedetecteerd.
  • Lijn 156 roept de functie van de "motion_detected" Maak een foto of een video opnemen en uploaden naar Dropbox.
  • Lijn 157 wordt een bericht weergegeven dat aangeeft dat de camera gedurende een aantal seconden slapen zal afgedrukt. Het doel van deze vertraging is te voorkomen dat te veel foto's / video's genomen voor dezelfde motie gebeurtenis.
  • Lijn 158 slaapt gedurende het opgegeven aantal seconden.
  • Na slapen is beëindigd, wordt het programma teruggaat tot lijn 154.

159-163 lijnen (aanbieding 6) worden gebruikt voor foutopsporing. Deze regels zullen worden uitgevoerd als het programma werd uitgevoerd vanaf de opdrachtregel en Ctrl/C is ingedrukt om het te stoppen.

  • Lijn 160 wordt afgedrukt op een bericht dat aangeeft dat de gebruiker het programma is gestopt
  • Lijn 161 stopt de cameramodule.
  • Lijn 162 stopt het toezicht op de GPIO pinnen.
  • Regel 163 stopt de lus veroorzaakt het programma om af te sluiten.

RPI-halt toe te roepen-btn.py

Het tweede programma "rpi-halt toe te roepen-btn.py" wordt gestart tijdens het opstarten door de opdracht

 python /home/pi/python_programs/rpi-halt-btn.py& 

in het systeembestand "/ etc/rc.local". De "&" toe aan het einde van de opdracht wordt het programma uitvoeren als een afzonderlijk proces dat draaien blijft totdat het programma wordt afgesloten.

Lijst 7 bevat de broncode voor de rpi-halt toe te roepen-btn.py-programma:

Lijnen 2-13 initialiseren het programma.

  • Lijnen 2-3 importeren de bibliotheken die nodig zijn voor het bedienen van de apparaten aangesloten op de GPIO pinnen, kwestie systeemopdrachten, kan het programma om te slapen.
  • Lijnen 6-7 definiëren de pin die op de afsluiten-schakelaar toezien zal en de PIN-code waarmee de verlichting van de LED in de schakelaar.
  • Lijn 8 vertelt de GPIO software wat nummering schema het programma zal gebruiken voor de GPIO pinnen.
  • Regel 9 wordt de GPIO pin voor het beheersen van de LED in de schakelaar om de pin van een uitgang.
  • Regel 10 wordt de GPIO pin voor de controle van de switch voor persen als een input pin.
  • Lijn 11 brandt de LED in de schakelaar door de waarde van de pin op true.
  • Lijn 13 wordt een bericht weergegeven dat aangeeft dat de switch nu wordt gecontroleerd afgedrukt.

Regel 18 veroorzaakt het programma om te wachten op de schakelaar ingedrukt worden.

19-21 lijnen worden gebruikt voor foutopsporing. Wanneer het programma wordt uitgevoerd vanaf de opdrachtregel en Ctrl/C wordt gedrukt op deze lijnen worden uitgevoerd.

  • Lijn 20 wordt een bericht weergegeven dat aangeeft dat de gebruiker wordt gestopt afgedrukt.
  • Regel 21 stopt het toezicht op de GPIO pinnen.

Lijnen 22-26 uitgevoerd wanneer de schakeloptie afsluiten heeft gedrukt.

  • Lijn 23-25 oorzaak de LED op de schakelaar kort uitschakelen zodat de feedback van de gebruikers dat de schakelaar is ingedrukt.

    • De LED wordt lijn 23 uitgeschakeld.
    • Lijn 24 veroorzaakt het programma om te slapen voor een halve seconde.
    • Lijn 25 schakelt de LED weer in.
  • Regel 26 wordt de functie van de "subprocess.call" het commando "sudo halt toe te roepen" waardoor de Raspberry Pi aan sluiting.

Toen de Raspberry Pi heeft zal afsluiten de LED op de schakelaar afsluiten uitschakelt met vermelding van dat het is veilig om de stekker uit de camera uit het stopcontact.

Gerelateerde Artikelen

Raspberry Pi Cloud IP-Camera met POE

Raspberry Pi Cloud IP-Camera met POE

Ik was geïnspireerd door scavix van werk met de instructable Raspberry Pi als goedkope HD bewakingscamera dus heb ik besloten om mijn eigen Raspberry PI gebaseerde IP-camera die ook beschikt over POE en ondersteunt integratie met de Google Drive.De v
Arduino sleutelhanger camera aanpassen aan beweging detecteren camera

Arduino sleutelhanger camera aanpassen aan beweging detecteren camera

Draai uw sleutelhanger camcorder in beweging detecteren camera.Wanneer er beweging gedetecteerd door HC SR501 PIR sensor, camera inschakelen, neem een foto en uitschakelen, wachten voor de volgende beweging.Stap 1: bedrading Bedrading is zeer eenvoud
Raspberry Pi - Motion Sensing Camera

Raspberry Pi - Motion Sensing Camera

In deze video zullen we kijken hoe maak je een motie geactiveerde camera met behulp van de raspberry pi en camera module.Ik zal met behulp van de nieuwste raspbian afbeelding. Ik zal ook worden met behulp van C-code naar programma en kunt u in mijn v
Raspberry Pi B + geval & Camera mount - FabLab NerveCentre

Raspberry Pi B + geval & Camera mount - FabLab NerveCentre

Ik heb een laser gesneden ontwerp van gestapelde lagen voor de Raspberry Pi B +.Het omvat de openingen voor de GPIO pinnen en voor de officiële pi camera (& Pi NoIR).Ook inbegrepen is een 3D gedrukte montage voor de officiële camera's.Stap 1: Laserge
Timelapse met de Raspberry Pi en zijn Camera

Timelapse met de Raspberry Pi en zijn Camera

deze video was voorbeeld.je nooit gedroomd van het maken van video's in timelapse, naar de film van een evenement in versnelde?Deze tutorial zal streven naar het instellen van de camera, dan gebruiken voor het maken van een timelapse regelmatige foto
Zet de webcam aan IR gevoelige camera

Zet de webcam aan IR gevoelige camera

Low-cost infraroodcamera's kan worden gemaakt gemakkelijk met behulp van een normale webcam. iBall aangezicht tot aangezicht c12.0 wordt gebruikt voor hetzelfdeStap 1: Verwijderen van IR-filter De specificaties van de camera zijn als volgt:Resolutie
Beweging gevoelige Bubble Machine met littleBits!

Beweging gevoelige Bubble Machine met littleBits!

Maak de kinderen voor bubbels dansen! LittleBits en een 5V relais gebruiken om te hack uw bubble machine. Dit is een solderless instructable. littleBits sluit magnetisch, en we zullen een breadboard gebruiken voor de estafette.Dit project wordt ervan
App aan controle Raspberry Pi (GPIO, automatisering, camera...

App aan controle Raspberry Pi (GPIO, automatisering, camera...

Instructables Gemeenschap heeft al smart home projects home projecten gemaakt met Raspberry Pi en próta OS meer dan 85.000 keerbekeken!Dat is een uitstekende prestatie en een grote bron van inspiratie voor ons om verder te gaan met onze próta project
Beweging gevoelige kat traktatie dispenser

Beweging gevoelige kat traktatie dispenser

Mijn zoon, kitty en beste vriend, Sputnik heeft een kak-n-pee probleem, hij houdt van te gaan over het hele huis.  Om te verhelpen behandelen dit ik heb gemaakt een kitty dispenser die zit bovenop zijn kattenbak.  Als hij naar de vogelhuisje gaat, de
Met behulp van een MCU in uw circuit

Met behulp van een MCU in uw circuit

een hele nieuwe wereld aan uw circuits met behulp van microcontrollers kunt openen.  Terwijl het houden van hen eenvoudig en hard-wired in plaats van geprogrammeerde aardig is een alles, er komt een punt waar het schrijven van een programma voor een
De BoBoBoT 5MP 1080 HD SECURITY Camera Raspberry Pi Veiligheidsraad Robot

De BoBoBoT 5MP 1080 HD SECURITY Camera Raspberry Pi Veiligheidsraad Robot

5 Mega Pixel 1080 HD Camera Module met nachtzicht NOIRMotion Capture technologieMotion Capture E-mail AlertsLive Web Feed horloge van uw smart phoneSD-kaart DVRRaspberry Pi GPIO pinnenLED 'sWiFiBluetooth5V DC Lithium-ionenbatterij aangedreven5V DC US
How to turn een USB-camera met Raspberry Pi in een Onvif IP Camera?

How to turn een USB-camera met Raspberry Pi in een Onvif IP Camera?

IntroductieDit instructable, zullen we een nieuwe interessante Camera oplossing, die nooit eerder hebben gezien! Ik zou willen tonen u hoe u verbinding kunt maken uw USB-camera en de Raspberry Pi met Camera SDK. Het doel is om te zetten uw webcam aan
RainBerry: Compact, weerbestendige behuizing voor Raspberry Pi A + en Pi Camera

RainBerry: Compact, weerbestendige behuizing voor Raspberry Pi A + en Pi Camera

RainBerry geval geldt een compacte, weerbestendig en esthetisch ontworpen voor Raspberry Pi en Pi camera. Dit project werd geboren uit een behoefte om te bewaken en beveiligen van de tuin met behulp van een slimme Pi-camera met de computer-visie.Stap
Raspberry Pi spel infraroodcamera

Raspberry Pi spel infraroodcamera

Ik ben net begonnen met het verkennen van de Raspberry Pi en was geïntrigeerd met de Pi infrarood cameramodule. Ik woon in een enigszins afgelegen gebied en hebben tekenen van verschillende wilde diertjes verkennen rond het huis bij nacht gezien.Ik h