Raspberry Pi Motion känsliga kamera (20 / 21 steg)

Steg 20: Hur Python programmen fungerar



Det finns två kund Python program används i detta instructable att skapa Raspberry Pi Motion känsliga kameran.

RPI-ms-camera.py

Första programmet "rpi-ms-camera.py" startas med kommandot:

efter upp python /home/pi/python_programs/rpi-ms-camera.py -p

i system-filen "/ etc/nätverken/gräns flat". "Post upp" kommandot körs när nätverksgränssnitt är igång.

Listor 1 till 6 Visa källkoden för rpi-ms-camera.py programmet:

Fodrar 4-26 (notering 1) import behövs bibliotek och definiera konstanter som används i programmet.

  • Linje 4-6 importera bibliotek som är skyldiga att utfärda kommandon, styra den kameramodulen, får tid och låta programmet läsa och skriva GPIO stiften.
  • Linje 10 definierar vilka GPIO pin används för att upptäcka rörelse upptäckts av PIR-sensorn.
  • Linjerna 13 och 14 är konstanter som används för utgående meddelanden som visar vad läge kameran är i drift.
  • Linje 17 definierar vilken katalog används för att lagra de senaste foto eller video tas med kameran.
  • Linje 20 definierar platsen för det program som används för att ladda upp filer till Dropbox.
  • Lina 23 anger hur många sekunder som ska spelas när rörelse detekteras. Detta kan ändras efter behov. Sekunderna video inspelad, desto längre tid tar det att ladda upp till Dropbox.
  • Raden 26 anger antalet sekunder programmet väntar efter knäppa ett foto eller spelar in en video. Denna försening är van vid förhindrar ta en massa bilder/video i rad av samma händelse. Detta kan ändras om oftare eller mer sällan foton/video ska tas.

Linje 28-31 (notering 2) definierar funktionen "generate_file_name". Denna funktion används för att generera ett unikt filnamn baserat på datum och tid. Detta namn kommer att användas för bilderna eller videoklippen. Formatet på de namn som skapas är "yyyy-mm-dd-hh-MM-ss-tz" där ÅÅÅÅ är året, mm är månaden, dd är dagen, hh är timmen, MM är minimalt, ss är sekunder och tz är tidszonen.

Linjerna 33-46 (notering 2) definierar funktionen "motion_detected". Denna funktion kallas när PIR-sensorn har detekterat rörelse. Denna funktion fäster ett foto eller spelar in video, laddar upp fotot eller videoklippet till Dropbox, och tar bort filen från Raspberry Pi.

  • Rad 36 skapar filnamnet som ska användas för fotot eller videoklippet.
  • Linje 37 skriver ut ett meddelande som anger att motion har upptäckts.
  • Raderna 38-40 körs om kameraläge har ställts in att knäppa bilder.
    • Linje 39 standardtillägget ".jpg" till namnet på filen.
    • Linje 40 anropar funktionen "snap_photo" för att ta fotot.
  • Linje 41-43 avrättas om kameraläge har ställts in att spela in video.
    • Linje 42 standardtillägget ".h264" till namnet på filen.
    • Linje 43 anropar funktionen "record_video" för att spela in video.
  • Linje 44 anropar funktionen "upload_to_dropbox" för att ladda upp fotot eller videoklippet till Dropbox.
  • Linje 45 tar bort fotot eller videoklippet. Detta görs för att förhindra Raspberry Pi SD-kortet från att fylla upp med foton eller videoklipp.
  • Linje 46 skriver ut ett meddelande som anger att filen har tagits bort.

Linjerna 48-53 (notering 3) definierar funktionen "snap_photo". Denna funktion används för att ta ett foto.

  • Linje 51 ställer in upplösning för fotot.
  • Linje 52 fäster bilden och lagrar den i den angivna filen.
  • Linje 53 skriver ut ett meddelande som anger att ett foto togs.

Linjerna 55-64 (notering 3) definierar funktionen "record_video". Denna funktion används för att spela in en video.

  • Linje 59 ställer in upplösning för video.
  • Linje 60 startar inspelningen video och lagras i den angivna filen.
  • Linje 61 skriver ut ett meddelande som anger att video inspelningen har påbörjats.
  • Linje 62 gör programmet vänta tills det angivna antalet sekunder.
  • 63 stannar inspelningen av videon.
  • Linje 64 skriver ut ett meddelande som anger att videon har slutat inspelning.

Linje 66-74 (notering 3) definierar funktionen "upload_to_dropbox". Denna funktion kommer att ladda upp filen till Dropbox.

  • Linje 70 extraherar bara filnamnet från det fullständiga filnamnet som skickades till funktionen. Detta är namnet på filen i Dropbox.
  • Linje 71 skriver ut ett meddelande om vad filen kommer att laddas upp.
  • Linje 72 definierar det fullständiga kommandot som används för att ladda upp filen. Kommandot består av namn och plats för ladda upp programmet, alternativet "ladda upp" för kommandot, lokala filens namn och det namn som ska användas för filen på Dropbox.
  • Linje 74 använder systemfunktionen "subprocess.call" för att utföra kommandot.

Linje 76-85 (notering 4) definierar funktionen "upload_ip_address". Denna funktion används för att skapa en fil med IP-adressen för Pi-hallon och ladda upp den till Dropbox. Syftet med ladda upp en fil med IP-adressen är att göra det enkelt att få IP-adress Raspberry Pi för felsökning. Med IP-adressen är det möjligt att använda "ssh" för att öppna en terminal session till Raspberry Pi och utfärda Linux-kommandon.

  • Linje 80 skriver ut ett meddelande som anger att IP-adressen kommer att laddas upp till Dropbox.
  • Rad 81 skapar namnet på filen som innehåller IP-adressen.
  • Linje 82 konstruerar kommandot för att få IP-adressen från systemet. Kommandot är "hostname-jag >" följt av namnet.
  • Linje 83 använder systemfunktionen "subprocess.call" för att utföra kommandot.
  • Linje 84 samtal "upload_to_dropbox" att ladda upp filen till Dropbox.
  • Linje 85 tar bort filen från Raspberry Pi.

Linjerna 87-91 (notering 4) definierar funktionen "first_time_config". Denna funktion kallas under processen att inrätta Raspberry Pi när den kommandot "python rpi-ms-camera.py - boxen" utfärdas. Det här kommandot används i steg 9 i detta instructable.

  • Linje 91 använder systemfunktionen "subprocess.call" för att utfärda kommandot som laddar upp filer till Dropbox. När kommandot utfärdas för första gången, ombeds användaren att mata in den information som krävs för att ansluta till Dropbox.

Linjerna 93-99 (notering 4) definierar funktionen "test_dropbox". Denna funktion kallas under processen att inrätta hallon när kommandot "python rpi-ms-camera.py - testa" utfärdas. Detta kommando skapar en testfil som innehåller IP-adressen för Pi-hallon och överför det till Dropbox. Om det skickar framgångsrikt filen, har sedan Raspberry Pi angetts korrekt för användning med Dropbox. Det används i steg 9 detta instructable.

  • Linje 97 skriver ut ett meddelande som anger att Dropbox anslutningen håller på att testas.
  • Linje 98 anropar funktionen "upload_ip_address" för att skapa och ladda upp en fil som innehåller IP-adressen för Pi-hallon.
  • Linje 99 skriver ut ett meddelande om uppladdningen har slutförts och ber användaren att kontrollera mappen Dropbox app att kontrollera filen har framgångsrikt lagt upp.

Linje 100-133 (notering 5) är början på huvudprogrammet.

  • 107-110 är kommentarer som visar alla alternativ för programmet.
  • Linje 113 kontroller för att se om alla alternativ som har angetts. Om alternativ som har angetts i programmet fortsätter på rad 114. Om ingen alternativ har angetts, går programmet till linje 127.
  • Linjerna 114-115 check till se om alternativet för att ta foton har angetts och om så ställer kameraläge bilder.
  • Linjerna anger 116-117 kontrollera om du har angett alternativet för inspelning av video och om så kameraläge till videor.
  • Linje 118-120 kontrollera om alternativet första angavs och om så anropar funktionen "first_time_config" och sedan avslutas programmet.
  • Linjerna 121-123 check till se om alternativet test har angetts och om så anropar funktionen "test_dropbox" och sedan avslutas programmet.
  • Linjerna 124-126 nås om några andra alternativ angavs. Sedan detta ett okänt alternativ, ett felmeddelande skrivs ut och programmet avslutas.
  • 127-133 linjer körs när ingen alternativ har angetts. Linjerna 128-132 print vad alla giltiga alternativ är och sedan linje 133 avslutar programmet.

Linjerna 135-164 (notering 6) utföra initieringen för huvudprogrammet.

  • Linjerna 135-136 tryckta meddelanden som anger Raspberry Pi Motion känsliga kameran börjar och vilket läge (foto eller video) kommer att användas.
  • Fodrar 138-141 sätter upp den kameramodulen. Linje 139 initierar kameran. Linjerna 140-141 indikerar att kameran för att rotera den så det blir rätt sida upp från användarens perspektiv. På det sätt kameran monteras på frontpanelen är det nödvändigt att vända bilden.
  • Linje 143-145 sätter upp PIN-koden för PIR rörelse sensoren GPIO. Det finns två numreringsscheman för GPIO stiften: linje 144 berättar GPIO mjukvaran vilken ordning detta används. Linje 145 anger PIN-koden för PIR-sensorn vara en ingångsstift.
  • Line 149 anropar funktionen "upload_ip_address" för att ladda upp filer till Dropbox som innehåller IP-adressen tilldelats denna Raspberry Pi. Detta används för felsökning men också för att låta dig veta att kameran är upp och löpande.

Linjerna 152-163 (notering 6) är huvudloop för programmet.

  • Linje 152 definierar en loop som upprepas på obestämd tid tills de Raspberry Pi stängs.
  • Linje 154 skriver ut ett meddelande som anger att kameran kommer att vänta på att upptäcka rörelse.
  • Linje 155 väntar på en signal från PIR sensor som visar att motion har upptäckts.
  • Linje 156 anropar funktionen "motion_detected" för att knäppa ett foto eller spela in en video och ladda upp den till Dropbox.
  • Linje 157 skriver ut ett meddelande som anger att kameran kommer att sova för ett antal sekunder. Syftet med denna försening är att alltför många foton/videor som tas ut för samma motion händelse.
  • Linje 158 sover för det angivna antalet sekunder.
  • Efter slut sova går programmet tillbaka till linje 154.

Linjerna 159-163 (notering 6) används för felsökning ändamål. Dessa rader kommer att genomföras om programmet kördes från kommandoraden och Ctrl/C trycks att stoppa den.

  • Linje 160 skriver ut ett meddelande som anger att användaren har slutat att programmet
  • 161 stannar den kameramodulen.
  • 162 stannar övervakning av GPIO stiften.
  • 163 stannar slingan orsakar programmet att avsluta.

RPI-stopp-btn.py

Det andra programmet "rpi-stopp-btn.py" startas upp under uppstartsprocessen med kommandot

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

i system-filen "/ etc/rc.local". Den "&" i slutet av kommandot gör programmet körs som en separat process som håller igång tills programmet avslutas.

Notering 7 visar källkoden för rpi-stopp-btn.py programmet:

Linje 2-13 initiera programmet.

  • Linje 2-3 importera de bibliotek som krävs för att styra enheter anslutna till GPIO stiften, fråga systemkommandon, kan sova.
  • Rader 6-7 ange PIN-koden som kommer att övervaka växeln avstängning och PIN-koden som kommer att kontrollera belysning av lysdioden i växeln.
  • Linje 8 berättar GPIO mjukvaran vad adressnumreringen programmet kommer att använda för GPIO stiften.
  • Linje 9 anger GPIO pin för att kontrollera lysdioden i växeln för att vara en utgångsstiftet.
  • Linje 10 anger GPIO PIN-koden för att övervaka växeln för pressar vara en ingångsstift.
  • Linje 11 tänds lysdioden i växeln genom att ange värdet i PIN-koden till true.
  • Linje 13 skriver ut ett meddelande som anger att växeln nu övervakas.

Linje 18 innebär att vänta för växeln vara intryckt.

Raderna 19-21 används för felsökning. När programmet körs från kommandoraden och Ctrl/C trycks dessa rader kommer att genomföras.

  • Linje 20 skriver ut ett meddelande som anger att användaren stoppade programmet.
  • 21 stannar övervakning av GPIO stiften.

Linjerna 22-26 körs när växeln avstängning har tryckts.

  • Linje 23-25 orsaken LED på växeln för att stänga av kort för att ge användarfeedback att växeln var tryckt.
    • Lina 23 släcks lampan.
    • Linje 24 innebär att sova i en halv sekund.
    • Linje 25 tänds lampan tillbaka.
  • Linje 26 använder funktionen "subprocess.call" för att köra kommandot "sudo stopp" som kommer att orsaka Raspberry Pi till stängningen.

När Raspberry Pi har kommer att avstängning LED på växeln avstängning stänga av som anger det är säkert att koppla bort kameran från eluttaget.

Se Steg
Relaterade Ämnen

Motion känsliga LCD Real-Time Clock/larm/Timer (uppdaterad Program)

jag behövde en klocka för mitt hemmakontor (där jag tillbringar helgen morgnar bygga robotar och sådant) och jag ville att det skulle passa in i inredningen i min elektronik arbetsbänk. Jag bestämde mig att bygga en med alla "modet" utsatt. Spec...

Daves dans i en en Arduino baserade Motion känsliga ljus kostym

En Arduino baserad motion känsliga ljus kostymDet kan också Visa mönster och sådant även om det bara rörelse sensing i vid. Det använder en ADXL335 accelerometer känna bärare rörelse. Min vän Dave vänligt uttryckte det är dock steg med hans nya dans...

Motion känsliga Bubble Machine med littleBits!

Se barnen dansa för bubblor! Använd littleBits och en 5V relä till hacka din bubbla maskin. Detta är ett Lödfritt instructable. littleBits ansluta magnetiskt, och vi kommer att använda en skärbräda för reläet.Projektet förutsätter att du är eller har...

RainBerry: Kompakt, väderbeständig fall för Raspberry Pi A + och Pi kamera

RainBerry är en kompakt, estetiskt utformade, väderbeständig för Raspberry Pi och Pi kamera. Projektet föddes ur ett behov av att övervaka och skydda trädgården med en smart Pi kamera med datorseende.Steg 1: Funktioner av RainBerry fallFör de flesta...

Raspberry Pi - Motion Sensing kameran

I denna video kommer vi att titta på hur man skapar en rörelse aktiverat kamera använder modulen raspberry pi och kamera.Jag kommer att använda den senaste raspbian bilden. Jag kommer också att använda C kod till program och du kan titta på min video...

Motion Sensing Digital kamera & larm (aka Critter Cam)

Välkommen till min instructable om hur man gör en Arduino-kontrollerad rörelse sensing kameran och larm!Motivationen bakom detta projekt, som jag arbetade på i min elektronik klass på Pomona College, var behovet av att hålla bort varmints (särskilt t...

Motion känsliga ledde Throwies

utformad för att vara placeras/kastas på rörliga mål, dessa throwies utnyttja en rå rörelsesensor.Steg 1: Sätta i batterierna tillsammans Stället cr2032-batterier, jag använda 2 knapp cellsbatterier. 1Put batterier tillsammans (- till +) summera de t...

Vända webcam till IR känslig kamera

låg kostnad värmekamera kan göras enkelt med hjälp av en vanlig webbkamera. iBall ansikte mot ansikte c12.0 används för sammaSteg 1: Avlägsnande av IR-filter Specifikationerna för kameran är följande:Sensorupplösning: 1.3M pixel sensorUtdataformat: 2...

Motion känsliga Tesla Coil

i år bestämde jag mig att göra mitt garage till ett litet spökhus. För att lägga till några roliga och allvarliga skrämmande saker, jag skrev en del kod och en av min Tesla spolar till en rörelsesensor ansluten via min Arduino. Det visar nu på när nå...

Motion känsliga glödande ögon som lyser upp slumpmässigt och blinkning långsamt

Letar du efter en hel armé av glödande ögon som blinkning på och sedan långsamt wink som dina gäster gå upp din uppfart? Eller kanske din armé av onda minions vaknar när dina gäster når en behandling? Jag ska lära dig hur man gör båda!Artikellista--S...

Motion känsliga katt behandla dispenser

Min Son, kitty och bästa vän, Sputnik har bajs-n-pee problem, han gillar att gå hela huset. För att avhjälpa detta skapade jag en kitty behandla dispenser som ligger ovanpå hans skräp låda. När han går in i låda, PIR-sensorn upptäcker detta och vänta...

Med en MCU i din krets

kan öppna en helt ny värld till din kretsar med microcontrollers. Medan att hålla dem enkelt och fastprogrammerade snarare än programmerad är trevligt allt, det kommer en punkt där skriva ett program för en krets är mycket bättre. Med hjälp av MCU ka...

DIY IR Motion sensorsystem för Raspberry Pi

Under månad juli 2015, jag avslutade gymnasiet praktik vid Colorado State University och en av de projekt som jag arbetat på var en infraröd proximity sensor för Raspberry Pi.Detta kort räckvidd infraröd sensor kan hänföras till en mängd olika tilläm...

3D tryckta Raspberry Pi säkerhet kameran

Artikel i 3Ders.orgUppdatering: Om du gillar min instructable snälla rösta på mig i Raspberry Pi och Epilog utmaningen. Jag kommer även uppdatera det 5: e steget att omfatta hur jag in Motion på den första starten. Tack för dina klick och tack Instru...

Stå ensam videoövervakningssystem med Raspberry Pi

Självstudierna här beskriver hur man bygger en stå ensam videoövervakningssystem baserat på Raspberry Pi.Vi kommer att använda en Raspberry Pi kamera som kontinuerligt in video på en usb-enhet. Detta skapar videofiler på 15 minuter kontinuerligt. Med...

Att göra en självständig båt med en Raspberry Pi (Pia)

våg av entusiasm för Raspberry Pi har drivit många människor att undra på möjligheterna, och förundras över sin enkelhet. Kreditkortet storlek SBC är perfekt för precis vad som helst. Kanske även för korsar Atlanten.FishPi är ett projekt med målet at...

Motion modul

modulen rörelse är den mest komplexa photocoupled anordning som används i enkla robotar. Det är i grunden en strömbrytare tillsammans med en motion sensing nattlampa. När någon i dess allmänna området flyttas, Detta utlöser sensorn, sätter på ljuset,...

Off-the-grid kamera beacon med solpaneler

En ledstjärna är sådan en radiosändare som överför signaler i stamgästmellanrum att utföra olika radio mätningar. Transmisison bär vanligt morsekod, men som du ser i detta instructable, det kan inkludera en levande bild av en liten kamera. Eftersom e...

Kamera stöd för alla Multi Shot fotografi - The OB-Pod

vill kunna justera kameran utan att förlora stativ justering att skjuta perfekt justerad flera bilder?. ......................Detta Instructable visar hur man bygger en enkel anordning så att du kan returnera din kamera till nästan exakt samma plats...