Tagg: python

HolkCam2 – 2017

Säsongssammanfattning:

2017-03-04: Holken sattes upp
2017-03-08: Första besöket!
2017-04-01: Det första bomaterialet börjar tas in efter mer än 120 besök
2017-04-11: Den första övernattningen!
2017-04-21: Första synliga ägget men det är kanske fler
2017-04-24: Tre synliga ägg
2017-04-25: Fyra ägg och honan blir matad i holken
2017-04-26: Fem ägg
2017-04-30: Nio ägg. Nu är det nog snart dags att börja ruva på riktigt!
2017-05-01: Nu har jag spelat in drygt 6800 videosnuttar som upptar 10.5 GB på serverns hårddisk
2017-05-02: Nu ruvas det på riktigt! Honan har varit i holken större delen av dagen.
2017-05-06: Snart har halva ruvningstiden gått
2017-05-15: Första ägget kläcks
2017-05-16: Alla ägg utom ett är kläckta
2017-05-21: Det är 7 eller 8 ungar som krälar runt och äter, sover, äter… Nu börjar också de första fjädrarna synas
2017-05-29: Nu är det 4 bara ungar kvar. Övriga har dukat under och blivit utkastade ur holken av föräldrarna
2017-05-31: Tyvärr har mamma blåmes och 3 ytterligare ungar dött i holken och det är bara en unge kvar som får mat av pappa blåmes. Jag publicerar inga videos på detta eller resten av säsongen då holkens innandöme inte är särskilt trevligt.
2017-06-03: Den unge som fått mat av pappa blåmes sitter i holk-öppningen ett bra tag innan den bestämmer sig för att flyga ut men till slut så vågar den. Nu är det bara döda fåglar och flugor kvar i holken…

HolkCam2 är därmed avslutat och nu är det bara att ta ner holken och rensa den eller slänga den.
Videofilerna finns kvar ett tag men avslutningen blev ju inte så trevlig i år heller så jag får se vad jag ska göra med materialet.

Mer spännande information om blåmesar finns på Wikipedia.

Säsongens höjdpunkter hittills på YouTube

All kod för kamera och server-backend finns på mitt github-konto.


Nedtagning och avslutning

Nedan är bilder när holken tömdes. Det var en rejäl bobale detta år, ca dubbelt så hög som förra året men djupet i holken var också större för att undvika skatattacker.

Kamera modulen, en raspberry pi 3 och en Arducam IR kamera med riktigt vidvinkelobjektiv ska jag återanvända. Jag rengjorde den och försökte torka av den med handdesinfektion men har också knutit in den i en plastpåse och lagt den i frysen några dygn så eventuella bakterier ska försvinna.

Själva holken kanske jag också använder igen då den har ganska bra mått och är målad som vår husfasad.

Holken när taket tagits av

Den höga bobalen. Hålet nederkant är i samma höjd som undersidan på ‘ribborna’. Hålets diametar var 28mm.

Bobalen med den döda blåmesmamman och några döda ungar.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Bygget av holken, projektbeskrivning:

Steg 1 Trä-hårdvaran

20160716_114640Det började med att jag köpte lite prylar från ebay, en kameramodul med skruvfäste för riktiga objektiv och ett medföljande fish-eye objektiv. Jag ska prova det lite och så får vi se vad som händer.

Leveransen av kameramodulen drog ut lite på tiden och då började jag med själva holken. Ett mindre ingångshål, djupare och med inbyggt skatskydd blir den säkrare. Holken har även ett ‘innertak’ precis ovanför ingångshålet så det blir ett litet ‘maskinrum’ där kameran etc kan placeras. Till vänster syns delarna innan dom skruvades ihop.

Förutom kamera kommer holken att ha IR-belysning och någon form av temperaturgivare. Kanske kan jag även får plats med en andra kamera dvs ha både en IR-och en vanlig kamera.

Nedan är en bild när holken är hopmonterad men utan tak.
20160716_121510

Steg 2 Val av hårdvara

Nu har jag valt en kameramodul med lagom mycket vidvinkel, (NoIR Camera Board OV5647 /w M12x0.5)  och provat lite hur den ska få plats i holkens ‘maskinrum’. Jag skulle även vilja ha en mikrofon och kanske någon mer givare förutom temperatur. Det vore kul att sätta upp en lysdiod eller motsvarande på holken som visar när någon är ‘hemma’ tex. Hårdvaran för övrigt blir nog en raspberry pi 3 och ett stort minneskort.

Den utvalda hårdvaran. En raspberry pi 3 och IR-kameran kompletterade med en temperatur och luftfuktighetssensor och några IR-lysdioder. Ev tillkommer en vanlig röd lysdiod som ska sitta på utsidan för att visa om det är någon i holken.

Steg 3 Programvarutest

Nu ska jag prova programvaran där jag denna gång använder python och opencv samt en egen implementation för att detektera rörelser och spara videosnuttarna. Jag ska också automatisera hur jag sparar och publicerar klippen på en websida. Som tidigare kommer en videoström alltid att vara tillgänglig för att se ‘live’ vad som händer i holken.

Steg 4 Färdigt koncept för hårdvaran

Nu har jag ett koncept på hur det hela ska monteras i holken.

Programvaran börjar också ta form och jag checkade just in en version av en opencv-genererad bildström som får en uppdateringsfrekvens på ca 5 när jag kör 1024×768 vilket är en rejäl förbättring mot tidigare. Det är också väldigt mycket bättre bildkvalitet och lättare att styra överlägg (tex text) i bildströmmen.

Kameran är monterad på rätt sätt och en temp/fuktighets-sensor finns på plats för montering i holken.

Steg 5 IR-belysning

Nu har jag en fungerande ljusramp av IR-dioder också där det går att styra ljusstyrkan mha en pwm-signal. Programvaran kan nu också spara videosekvenser och jag håller på att programmera rörelsedetekteringen så snart blir det skarpa tester.

En stillbild från videoströmmen. Det är tvärmörkt i holken men ir-dioderna lyser upp ganska bra även med 50% pwm. Texten visar tid, temperatur, luftfuktighet och bilder per sekund. Då det är ett fish-eye objektiv ser holken väldigt djup ut. Jag har ett objektiv till som inte är lika vidvinkligt så jag ska prova med det också och se vilket som funkar bäst.

Steg 6 Kameramodulen

Nu har jag en fungerande hårdvara! Allt monterat i en lite låda för raspberry-pi med kamera och IR dioder som tittar ut genom locket. Jag bytte ljusrampen mot fastmonterade dioder som jag tror funkar bättre.

Smältlim, gummiband och eltejp håller ihop det just nu. Nu fattas ‘bara’ programmet som ska fixa rörelsedetektorn och videoinspelningen men det är på g. Sedan gäller det att hitta en bra plats att sätta upp holken på. Just nu lutar det åt att jag helt enkelt skruvar upp den på väggen utanför fönstret på övervåningen. Då blir det lätt att dra ut en strömsladd och även göra ‘service’ om det skulle behövas.

Jag ska även göra en bättre ‘backend’ än förra året då det är tänkt att videofilerna ska synkas till min egna webserver.

Raspberry-pi lådan med kamera och ir-belysning. Det vita är en temperatur och luftfuktighets sensor som ska sitta i holken.

Steg 7 Rörelsedetektor

Projektet tog ett rejält kliv framåt i helgen då det var ‘Minihack. Jag fick hjälp av en jobbarkompis och vi snodde ihop en rörelsedetektering i mjukvaran med hjälp av opencvs ‘backgroundsubtraction’.

Nu fungerar även inspelningsfunktionen och det finns två rörelsedetektorer. Förutom direkt i videoströmmen har jag även installerat en ‘PIR’ detektor men den verkar falsklarma lite för ofta så kanske behövs det någon justering…

Steg 8 Sista touchen

Nu är den snart klart att sättas upp. Förutom att ‘backend’ och övriga programvaran är klar (eller åtminstone tillräckligt klar) har jag även satt fast tätningslister runt taket och bättrings målat holken lite. Nästa steg blir att sätta upp den och det kommer jag att göra till helgen. Sen är det bara att hoppas på att blåmesarna gillar även denna nya generation av holk.

Kameran monterad under taket och temperatursensorn på sidan i bakre hörnet.

Tätningslisten. Taket skruvas fast mot denna så då blir det förhoppningsvis tillräckligt tätt.

Steg 9: Uppsättning och start

Nu är den uppsatt och startad på riktigt. Följ utvecklingen via http://sundback.ddns.net/

Holken uppsatt på samma ställe som förra året, dvs på en av stolparna till våran trappavsats.

Temperaturövervakning

Detta är ett projekt som pågått ett tag innan det blev tillräckligt färdigt och som går ut på att övervaka temperaturen i kylen och frysen. Det utökades efterhand  och har du även koll på temperatur, luftfuktighet och lufttryck ute och inne. I lådan finns även en summer, några led och en knapp som ska användas när jag så småningom implementerar en larmfunktion.

Den första versionen hade en liten LCD skärm som visade resultatet men det var svårt att bygga in på ett snyggt sätt så den versionen blev förbjuden att ha i köket…

Den senaste versionen ryms i en Rasberry Pi låda men har förstås lite sensorer utspridda i kylen,  frysen och utanför köksfönstret. Alla värden rapporteras till en databas som har en tabell med tätt uppmätta värden för det senaste dygnet och en tabell för långsiktig statistik men längre mellanrum mellan mätningarna.

Just nu är själva visningen lite eftersatt, det är tänkt att det ska bli en android-app som körs på en gammal smartphone som kan sitta på köksväggen tex. Det finns ett php-skript som levererar ut senaste mätningen i en enkel xml-fil men det ska även gå att se trender etc.

All kod till projektet finns på mitt github-konto. Kontroll-loopen som körs hela tiden är skriven i python, backend delarna i php och mysql (stored procedures)

wsmounted

Temperaturövervakningen monterad och igångkörd. Den gröna lysdioden lyser varje gång en mätning görs. Hela installationen döljs sedan av våran köksgardin.

outdoorsensors

Sensorerna som sitter på utsidan med locket borttaget.

tempsensor

En av temperatursensorerna i kylen. Bra att hålla koll på vilket id-nr som sitter var…

RF moduler

s-l500I går fick jag ett litet vadderat kuvert igen. Denna gång innehöll det 5 uppsättningar av RF sändare och mottagare som jag var tvungen att prova. Jag hittade lite exempel kod för Aurdino och var snart redo att tända en lysdiod via en radiolänk. Rätt coolt i all sin enkelhet… Jag kopplade sändaren till en raspberry pi och mottagaren till en Aurdino. Rasberryn talade sedan om via radolänken när dioden skulle tändas och Aurdinon utförde ordern.

I samband med detta började jag också med ett ‘device-lib’ för Raspberry Pi. Meningen är att det ska bli python-klasser för olika enheter som jag använder, tex RfTransmitter, RfReceiver, switchar, 7-segmens led, 2-raders displayenheter etc etc. Det kommer antagligen att publiceras på GitHub så småningom ifall det blir nåt…

Fågelövervakning

Nu är hårdvaran till fågelholken med inbyggd kamera på plats, dvs holken är upphängd där den ska sitta.

Holken innehåller en raspberry pi B+, ir-kamera och några ir-lysdioder. Just nu körs programmet ‘motion’  som egentligen är för övervakningskameror men det fungerar ju bra här också. Ett litet python-program (en modul bara) sköter belysningen genom att pwm-styra spänningen till lysdioderna. Planen just nu är att ha detta igång ett tag och se vad som händer. Är det någon som vill använda holken som nattkvarter? Vi får se…

Själva upphängningen var inte helt problemfri. Först var det lite problem med strömförsörjningen och när det var löst visade det sig att den tänkta placeringen var i radioskugga under ett tak med betongpannor men genom att flytta vår router en bit så löste det sig.

En nedskalad version av live-strömmen från holken kan ses till höger och i full upplösning finns den här: http://sundback.ddns.net:8080/. Förhoppningsvis blir det några övervakningsfilmer snart och då kommer det länk till dom också.

birdcam1

Tomt än så länge men förhoppningsvis hittar någon pippi hit så småningom. Kameran är monterad i taket och Ingångshålet är nedåt i bilden.

Temperaturlarm och väderstation

Efter några dagars sjukdom är jag på benen igen och pysslar med ett gammalt projekt som fått nytt liv. Det går ut på att mäta temperaturen i kyl och frys och kunna upptäcka om en dörr är öppen för länge eller om temperaturförändringen är ‘onormal’. Förutom dessa tre one-wire givare (två i kylen och en i frysen) så har jag även givare för temperatur och luftfuktighet inne och ute samt även för lufttrycket. Min tidigare installation hade en liten touchskärm men det var svårt att få någon snygg inbyggnad av detta så hela den grejen dissades hårt av övriga familjen.

Nu är det nya tag och allt är inbyggt i en raspberry pi låda som ska monteras bakom köksgardinen. En gammal Samsung Galaxy S2 utan sim-kort ska agera displayenhet. Alla värden skickas till en webserver/databas och visningen ska genereras som en websida i version 1 men i framtiden tänkte jag göra en androidapp för att få snyggare utseende och lite bättre känsla. Utvärdering av temperaturförändringen ska göras på pi:en då den ska spara senaste dygnets mätningar. Mer avancerad utvärdering kan göras på webservern eller i androidappen.

Lådan innehåller också några lysdioder som kan indikera mätning och larm, en buzzer för larmljud och en knapp för att tysta ljudet när det larmar (som på en brandvarnare).

All kod till projektet (python, php och sql) finns på GitHub.

20151222_185559

Lådan, några av givarna och displayenheten.

‘Talk Python To Me’

Rubriken är namnet på en podcast med temat ‘Python’ (programmeringsspråket) och relaterade teknologier. Riktigt nördigt och kul 🙂

I senaste episoden intervjuas Adrian Rosebrock som driver en blogg som handlar om tekniker för bildigenkänning och hantering av detta med python och openCv vilket är ett kärt ämne för mig just nu. Jag har precis köpt och laddat ner ‘premium bundle’ från hans websida som innehåller e-böcker, kod och en virtuell maskin så nu är det bara att sätta igång. Jag har ju två heta projekt just nu: känna igen vägskyltar och räkna poäng i dart. Båda projekten använder bildigenkänning, python och openCv samt är tänkta att köras på en raspberry pi med kameramodul. Jag planerar att lägga upp båda projekten på github som nån sorts ‘team’-work men sedan får jag väl se om någon är intresserad av att hjälpa till.

dart1

Rå skärmdump från den raspberry pi som sitter över darttavlan.

Amilo 2.0

Jag har börjat kolla efter en värdig ersättare till min 8 år gamla Fujitsu Amilo som visserligen fungerar utmärkt fortfarande men pga sin ålder börjar tappa fart allteftersom nya versioner av program mm installeras och med mina nya utvecklingsmiljöer för .net, android och python sackar den ordentligt i backarna om man säger så…

Jag har fastnat för Lenovo som jag tycker verkar vara ett bra märke och ett av alternativen är denna 13 tums dator i metallchassi som väger 1.5 kg och har en SSD disk, 8GB RAM går att uppdatera till 16 och en 1.7GHz i5 processor. Kraven på ersättaren är att den är hyfsat lätt, funkar för programmering, multimedia och fotoredigering. Bra batteritid är ju också ett plus.

lenovo-u330p-core-i5-17ghz-8gb-256gb-ssd-133tum

…lätt, smart och responsiv. Bildlänken leder till Dustinhome.

Ett annat alternativ är Lenovo Flex 2 som har något bättre processorprestanda men ingen riktig SSD disk och dessutom är det en något annorlunda typ av dator.

Raspberry Pi med touch

Min Raspberry Pi har nu fått en 2.8″ touch skärm och jag har gjort en liten demo som bevisar att det går att göra ett användargränssnitt med ‘knappar’ och tända en lysdiod via Pi:ens IO-pinnar. Lite coolt faktiskt. Programmeringsspråket är python och jag använder PyCharm som editor, användargränssnittet har jag gjort med PyGame och IO-pinnarna styrs med WiringPi2. Nu börjar det bli riktigt nördigt och jag har lite projektidéer för min lilla pi. Kanske går den att kombinera med dom 9V motorer och sensorer som jag har liggande och som ursprungligen kommer från Lego Mindstorms. Eller också är det nåt helt annat jag vill göra, det visar sig…

20150130_185658

För övrigt har jag blivit förkyld så det blev ingen springrunda igår men förhoppningsvis kan jag ta en imorgon bitti om förkylningen är bättre och vädret inte blir så illa som dom hotar med, klass 1 varning och snöstorm…

Teknik

OrdKnuten är skrivet i C# och nu utvecklar jag i Visual Studio 2010 express edition och använder Microsofts spelutvecklingsbibliotek XNA i version 4. Backend-funktionerna är skrivna i PHP och Python  och använder en MySQL databas.

Utvecklingen började redan runt år 2000 då jag gjorde en version i C++ och DirectX. Med denna version kunde jag prova konceptet men slutresultatet blev inte helt lyckat då bland annat användargränssnittet inte gick att göra så snyggt.

Version 3.0 av spelet var en ’demo’ med fem olika korsord och nu var jag ganska nöjd med utseendet. Denna  version var helt omskrivet och jag återanvände ingenting utom principerna för hur spelet fungerade samt en del grafik och ljudfiler.

Version 3.2 och framåt är ’riktiga’ releaser som släpps som shareware där man kan prova hela programmet med ett begränsat antal korsord. Gillar man spelet kan man betala en registreringsavgift via SMS och direkt få tillgång till alla korsorden.

I version 3.2 gjorde jag om hela korsordshanteringen med nya typer av definitioner (xml). För utveckling av nya korsord har jag också gjort en korsordsgenerator som är skriven i Python.

Registreringsmodellen för 3.2-> bygger på SMS-betalning där mo-sms är tjänsteleverantör och hanteringen av den har jag också skrivit själv. Databasen som håller reda på registreringarna är också egen design och körs än så länge på min egen server.

All kod versionshanteras i Subversion.

Bilnyheter

Idag fick jag reda på att våran nya bil redan är byggd och får reg nr på torsdag om allt går som det ska och sedan tar det 3-5 veckor innan den är här. Då det är ett ‘leasing’-kontrakt så kan nog bara hämta ut den i samband med ett månadsskifte men 1:a mars borde funka. Nedräkningen är ändrad igen (denna gång åt ‘rätt’ håll).

Vår gröne snöman

För övrigt var det en bra dag på jobbet och jag fick massor gjort, kanske för att jag hade ‘U.D.O’  i lurarna en stor del av dagen… Det bidrog nog också att det jag gjort hittills denna vecka har varit i Python (programmeringsspråket) och det är ju hemmaplan för min del. Från imorgon är det ‘scrum’-punkter som kräver C# och .NET 4 igen. Kul med lite omväxling.

[youtube 7YlmtoLgehg]

[youtube HmkereoJWoE]