River Cam (6 / 8 steg)

Steg 6: Ljus nivåkontroll



Auto ljusstyrkan kontrollen är inte så bra för att styra kameran som på Pi efter ett tag du finna det bara pendlande mellan ytterligheterna. Ursprungligen jag hade råd att vända motioneye automatisk ljusstyrka på och bort skulle kalibrera saker-vilket den gjorde – åtminstone tills juni 2016 uppgraderingen!

Det ursprungliga manuset som jag placerade i cron var:

ECHO "---Start level_ligt.sh---"
datum
sed -I's / auto_brightness off/auto_brightness på / g' /data/etc/thread-1.conf
sed -I's / # på / # off / g' /data/etc/thread-1.conf
/etc/init.d/S85motioneye restart
sömn 30
sed -I's / auto_brightness på/auto_brightness off / g' /data/etc/thread-1.conf
sed -I's / # off / # på / g' /data/etc/thread-1.conf
/etc/init.d/S85motioneye restart

Den fil som redigeras är effektivt motion.conf filen som motioneye har bytt namn med en rad för varje kamera (så om du som jag bara har en kommer att vara thead-1.conf.

Som sagt, detta fungerade grad tills MotionEyeOs uppgraderas och resulterade i ljuset nivå lämnas på en random inställning (oftast i ena änden av spektrumet) lyckligtvis som jag hade beslutat att flytta till en vanilj Raspbian installation, jag fått tillgång till v4l2 kontrollerna och funnit att följande kommandorad arbetade samtidigt motion var igång :

v4l2-ctl--set-ctrl = ljusstyrka = 50, kontrast = 50

Så min nästa strategi var att placera ovanstående uttalande (med värden av 50/50 för dagtid, och 100/100 för natt) i python IRfilter_control.py script (dessa har lagts ovan), värden men kruxet är att nu IR-filter är bort ljuset in i kameran dubbel, så ställer in det till natten på denna punkt resultat i virtuella mörker före solnedgången , och utbränd bild efter.

Något mer intensiv krävdes, så nästa steg var att skapa en sqlite konfigurationsdata som har värden för endera sidan av solen händelsen och styr även IR-filter.

IRfilter_control.py (detta är en upprepning av de tidigare avsnitten kod och behov sunset.py att köra)

#-----------------------------------------------------------#
# bibliotek #
#-----------------------------------------------------------#
importera RPi.GPIO som GPIO
från att importera sömn, localtime, mktime
från datetime import datetime, datum
importera sunset
importera underprocess
importera re
importera sqlite3
importera sys
#-----------------------------------------------------------#
# time2sec #
#-----------------------------------------------------------#
def time2sec (t):
skriva ut t
l = re.split(':',t)
återgå int(l[0]) * 3600 + int(l[1]) * 60 +float(l[2])
#-----------------------------------------------------------#
# exposure_level #
#-----------------------------------------------------------#
def exposure_level (sr, ss, t):
TS = time2sec(str(t))
skriva ut ts
SRS = time2sec(str(sr))
SSS = time2sec(str(ss))
om ts > sss: # då iit är efter solnedgången
period = 4 # efter solnedgången
gap = ts - sss
annat:
om ts < srs:
period = 1 # före gryningen
gap = srs - ts
annat:
mitt på dagen = (sss - srs) / 2 # inte riktigt men tillräckligt bra
om ts < middagar:
period = 2 # efter gryningen
gap = ts - srs
annat:
period = 3 # före solnedgången
gap = sss - ts
# Nu använder han gap och period arbetet ut nivåerna.
Skriv ut period
gap = gap / 60 #convert till mminutes
skriva ut gap
försök:
dbconnect = ingen
dbconnect = sqlite3.connect('light_levels.db')
markören = dbconnect.cursor()
cursor.Execute ("SELECT * FROM nivåer där period = %d och gap > %d ORDER BY gap ASC" % (period, gap))
rad = cursor.fetchone() # förhoppningsvis är nästa en i ordning som vi strategi/moveaway från sr/ss
Om raden:
ljusstyrka = rad [2]
kontrast = rad [3]
filtret = rad [4]
annat:
skriva ut "Ingen data availalble - ange standardinställningar"
ljusstyrka = 50
kontrast = 50
filtret = 1
utom sqlite3. Fel, e:
skriva ut "Fel % s:" % e.args[0]
sys.Exit(1)
Slutligen:
om dbconnect:
dbconnect.Close
skriva ut "ljusstyrka", ljusstyrka
skriva ut "kontrast", kontrast
Print "Filtrera", filtrera
skriva ut "gap", raden [1]
tillbaka (ljusstyrka, kontrast, filter)

#-----------------------------------------------------------#
# Allmänna parametrar #
#-----------------------------------------------------------#

#display inga varningar (på kommandoraden)
GPIO.setwarnings(False)
#use RPi styrelsen pin-koder
GPIO.setmode (GPIO. STYRELSEN)
#set pin 16, 18 och 22 som utgång
GPIO.setup (16, GPIO. OUT)
GPIO.setup (18, GPIO. OUT)
GPIO.setup (22, GPIO. OUT)

delay_s = 60 #delay i sekunder

# Ställ in latitud och longitud (det är möjligt att få detta på nätet,
# men jag föredrog fasta som kameran är inte rörliga)
home_lat = "51.83"
home_long = "-1.40"

welcome_mess = "From Dusk Till Dawn v2.1 (08/2014)"
skriva ut "\n"
skriva ut welcome_mess
#-----------------------------------------------------------#
# main loop #
#-----------------------------------------------------------#
medan 1:

#-----------------------------------------------------------#
# Avgöra soluppgång/solnedgång #
#-----------------------------------------------------------#

#determine föregående/nästa solnedgången och -upphov

#define solen som anmärker av intresserar
s=Sunset.Sun()

SR = s.sunrise()
SS = s.sunset()
t = datetime.utcnow().time()

skriva ut "solnedgång:", ss
skriva ut "soluppgång:", sr

# Lookup databas att få nivåer för tiden på dagen i förhållande till solen
light_level = exposure_level (sr, ss, t)

om light_level [2]: # värdet av filter är sanna och filtret måste vara på
skriva ut "Slå på IR-filter"
GPIO.output (16, GPIO. LÅG)
GPIO.output (18, GPIO. HÖG)
GPIO.output (22, GPIO. HÖG)
annat:
skriva ut "Stänga av IR-filter"
GPIO.output (16, GPIO. HÖG)
GPIO.output (18, GPIO. LÅG)
GPIO.output (22, GPIO. HÖG)

# Justera digital vinst på kameran med hjälp av databasdata
subprocess.Call ("v4l2-ctl--set-ctrl = ljusstyrka = %d kontrast = %d ' % (light_level [0], light_level[1]), skal = True)

Sleep(delay_s) #wait

Själva koden använder en sqlite databas "light_levels.db" som från början innehöll följande data (detta kommer att förfinas med tiden att göra resultaten matchar de generiska ljusförhållandena:

DROP TABLE nivåer. Skapa tabell nivåer (perioden INT, gap INT, ljusstyrka INT, kontrast INT, filtrera INT);
INSERT INTO nivåer värden (1,5,75,60,0);
INSERT INTO nivåer värden (1,10,80,65,0);
INSERT INTO nivåer värden (1,15,85,70,0);
INSERT INTO nivåer värden (1,20,90,75,0);
INSERT INTO nivåer värden (1,25,95,80,0);
INSERT INTO nivåer värden (1,30,100,100,0);
INSERT INTO nivåer värden (1,999999,100,100,0);
INSERT INTO nivåer värden (2,5,75,60,0);
INSERT INTO nivåer värden (2,10,65,60,0);
INSERT INTO nivåer värden (2,15,55,60,0);
INSERT INTO nivåer värden (2,20,70,70,1);
INSERT INTO nivåer värden (2,25,60,60,1);
INSERT INTO nivåer värden (2,30,50,50,1);
INSERT INTO nivåer värden (2,999999,50,50,1);
INSERT INTO nivåer värden (3,5,60,60,0);
INSERT INTO nivåer värden (3,10,60,60,0);
INSERT INTO nivåer värden (3,15,75,75,1);
INSERT INTO nivåer värden (3,20,65,65,1);
INSERT INTO nivåer värden (3,25,60,60,1);
INSERT INTO nivåer värden (3,30,50,50,1);
INSERT INTO nivåer värden (3,999999,50,50,1);
INSERT INTO nivåer värden (4,5,60,60,0);
INSERT INTO nivåer värden (4,10,70,70,0);
INSERT INTO nivåer värden (4,15,80,80,0);
INSERT INTO nivåer värden (4,20,90,90,0);
INSERT INTO nivåer värden (4,25,90,90,0);
INSERT INTO nivåer värden (4,30,100,90,0);
INSERT INTO nivåer värden (4,999999,100,90,0);

Fungerar genom att bryta dagen på 4 perioder bryts upp av solen händelserna och då med ett dataelement för varje 10 minuters fönster (detta kunde minskas) i zonen 30 minuter och sedan en standardpost som koden plockar utanför "zone". Skriptet ovan kan förresten klistras som en klump i en sqlite för att skapa databasinnehållet.

En del jag förväntar att åtgärda undertrycka rörelsedetektorn när vända ljusnivåer. Men har inte jag ännu bestämt om att behålla Motion detection elementet på YouTube sänder Pi som jag inte vill att bildfrekvensen att släppa när något intressant händer. Mer att följa om jag kan räkna ut hur man gör detta arbete av de verkliga ljusförhållandena utan en ljussensor (som det finns inte plats för mer kretsar)...

Se Steg
Relaterade Ämnen

Acrobat Cable Cam

Eftersom jag har gjort instructables, har jag haft en bra tid att göra videos för mina projekt. Denna skapelse ger mig en chans att flex min kreativa licens. Det är en alla vinklar kabel vagn för din kamera. Det ger ett sätt att filma rullande eller...

Återvunnet, kasta bort spy cam

en igen jag har tagit några trasiga skit runt huset och gjorde något nyttigt... Jag blir väldigt uttråkad... Så jag hade den gamla första upplagan kinda "flip video" och skärmen var trasig och det bulking ganska ändå och i grund och botten jag a...

Raspberry Pi Cam Tank v1.0

Jag älskar tankar sedan som en liten unge. Bygga min egen tank leksak är alltid en av mina drömmar. Men på grund av bristen på kunskaper och färdigheter. Drömmen är bara en dröm.Efter år av studier i teknik och industriell design. Jag förvärvade färd...

Ersätta ventil tätningar utan riva motor: Honda XR Dirtbike

Honda XR80, XR100, CRF80 och CRF100 är mycket populära dirtbike modeller. Med det sagt, hoppas jag jag inte förolämpa någon när jag säger att de är vanligtvis individens första cykel, och därför har de ingen erfarenhet service nämnda cykel. Därför an...

Pikachu Cam mekanism automater med galler gångjärn Box

Vi var tvungna att göra en automater med snickeri och galler gångjärn för ett projekt och detta var vad jag brukade gå Pikachus huvud som om han förlorat en kamp i den franska revolutionen. Se nedan i steg 9: refererar till den andra Instructables ja...

Lägga till en ansikte Cam till din Gaming

Hej killar, TechHead Tutorials här och idag jag kommer att visa dig hur du lägger till en FaceCam dina videor. Du kan antingen titta på instruktions Video eller följ stegen: Valet är ditt!Steg 1: Det enkla sättet:Titta på denna Video för enkel och sn...

Fiska Cam GoPro HERO

detta instructable visar hur man kan anpassa GoPro Hero2 kameran att passa på en stor fiske lockbete (eller jigger) så att du kan observera den fisk som finns inom räckvidd och också se åtgärder under fångsten. Det finns en begränsad möjlighet att fi...

Hur man skapar en framgångsrik KICKSTARTER kampanj - Fallstudie: GOFISH CAM: Extreme Action-äventyr kameran för fiske

HUR MAN SKAPAR EN FRAMGÅNGSRIK KICKSTARTER KAMPANJFallstudie: GOFISH CAM: Extreme Action-äventyr kameran för fiske2014 kom två bröder med en idé till en undervattensfiske kamera på en fisketur. Efter att medel från vänner och familj, och investera me...

Barreras anticaida para la cama usando PVC

Barreras fáciles y baratas usando tubería de PVC.Este es el, espero, primero de muchos Instructables.Al ir buscando barreras comerciales mig di cuenta de que, en parte de ser muy caras, eran muy simples.Por una barrera solo para un lado de la cama el...

Hur till se den läskiga ansikten i Gameboy Camera

upprop till alla skräck fans! Om du vill se den skrämmande ansikten i Gameboy Camera på original kassetten är detta instuctable för dig! De läskiga ansiktena är den enda anledningen till att jag sålde min Gameboy kamera! Störande ansikten, höger?Steg...

Riv vitlök med en gaffel

detta är ett snabbt enkelt sätt att riv vitlök utan en Vitlökspress.För detta instructable behöver du:• En vitlöksklyfta• Och en rostfritt stål gaffelSteg 1: Steg 1: skala vitlökSteg 2: Steg 2: hålla gaffeln platt mot skärbrädaSteg 3: Steg 3: Gnid vi...

Camas de perros

Buenas en todos ahora les traigo dos proyectos sv uno, se trata de camas para perros de diferentes tamaños, en esta in hice una para perros de razas pequeñas como Chihuahua, tácita de te, etc y otra para perros medianos como Schnauzer, franska Liffey...

3D tryckt stadig Cam

detta instructable visar dig hur du skapar en "stadig cam" med bara ett par 3d tryckta delar och andra lätt att hitta material.Steg 1: Delar och materialDelarKullager: 5 - 1/2" innerdiameter, 1/4" inre diameter (jag köpte några till mi...

Actobotics tid förflutit kabel Cam

Ibland är det skönt att fånga en tid förflutit sekvens med rörelse med ett större avstånd än du kan få från ett reglage. Jag har sett många kabel kameror som används inom videoproduktion, och trodde det skulle vara en bra idé att göra en som gick myc...

Adobe Camera Raw efterbehandling - gatan stående

Denna handledning täcka hur man bearbetar hela bilden med Adobe Camera Raw utan någon Plugin.Områden som omfattas:Belysning justering | Färg justering | Skärpa | Burn & Dodge känslaÄr programvara som används: Adobe Camera Raw, Adobe Photoshop CCSe ti...

Grundläggande porträtt förbättra och retuschering Photoshop CC och Camera Raw handledning

Del 1: Camera Raw-bearbetningSteg 1: Öppna din bild i Camera Raw med Adobe Bridge.1. * om du redigerar en JPEG, duplicera bakgrunden, gå till Filter, Camera Raw Filter och fortsätta därifrån.2. med hjälp av verktyget vitbalans, titta för en gråzon i...

Bilen hallon Pi3 Dash Cam

IntroJag har tidigare arbetat med Arduino styrelser att utveckla en rörelse baserade mobila aviseringar. Men alltid velat arbeta med Raspberry Pi på grund av de diversifierad projekt som skulle kunna göras relativt enkelt eftersom det är en fullt utv...

Camera Equipped RC car using sixth sense

Använder öppen källkod från 6th sense och webbsidor, har vi skapat en motor leksaksbil som styrs med 6th sense teknik. En webbkamera plockar upp olika handrörelser från användaren som har 4 färgade finger handskar och kommer att skicka informationen...

Barebones denhöjd ballong Cam

Hög höjd ballongflygning, eller HAB, innebär skicka en nyttolast på kameror, vetenskapliga instrument eller andra element på en resa i stratosfären, fastspänd på en väderballong. När Ballongen spricker, en fallskärm för nyttolasten försiktigt tillbak...