Äntligen fått till en uppkopplad fågelholk – ett projekt jag länge velat göra. Blev inspirerad av en jobbarkompis som byggt en uppkopplad fågelholk och ville prova själv med en holk utanför kontoret.
Att koppla upp en fågelholk och streama aktiviteterna som pågår inne i holken till YouTube är ett riktigt kul byggoteknik-projekt. Men man får räkna med att stöta på både bygg- och teknikrelaterade problem eller utmaningar och förhoppningsvis kanske denna instruktion kan hjälpa. Om inte annat så är det en bra dokumentation för min egen del om något behöver skruvas på i framtiden…
Projektet består av två delar; ett fågelholksbygge som är själva snickeridelen och en del som är mer teknikinriktad att konfigga en Raspberry Pi med en kamera och få den att streama till YouTube. Vi börjar med holkbygget som omfattar ett gäng bilder 🙂
– en tvårummare med fågelrum och teknikrum.
Features:
Material:
Verktyg:
Komponenter:
Bra att ha:
Här finns en hyffsat komplett guide för hur man får igång Raspberry-streamingen men vissa detaljer förutsätter att man är bekant med Raspberryn. Följande gjorde jag från en Windows 10-maskin.
Börja med att byta lösenord på pi-användaren i användargränssnittet genom att skriva
sudo raspi-config
Konfigurera nätverket
Använd Notepad och skapa en fil i rooten som heter wpa_supplicant.conf och med detta innehåll:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=SE network={ ssid="2.4G WIFI NETWORK" psk="WIFI PASSWORD" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP auth_alg=OPEN }
Disablade Bluetooth eftersom jag inte vill använda det genom att lägga till dtoverlay=disable-bt i config.txt-filen.
Mitt Raspberry Pi Zero W är version 1.1 och har inte stöd för 5G-WiFi. Var därför tvungen aktivera ett 2.4G gästnätverk i routern för att kunna ansluta till det. Tänk på att dölja SSID inte fungerar. Om du har ett mesh-nätverk med flera routers, tänk på att dela ut nätverket till de andra noderna. Jag valde också lägga in ett MAC-filter för att hindra andra enheter att ansluta till 2.4-nätet.
Använd Notepad och skapa en fil i rooten som heter SSH. Inget innehåll i själva filen. Starta upp pien så kommer filen läsas in och aktivera SSH. Installera en SSH-klient som t.ex. PuTTY.
https://ffmpeg.org/download.html
https://tracker.debian.org/pkg/ffmpeg
https://packages.debian.org/source/stable/ffmpeg
Anslut Raspberryn via HDMI till TVn och kör kommandot:
raspivid -t 0
Ctrl + C för att avsluta
Avsluta Raspberry OS
sudo halt
Vänta tills ACT-lampan släcks.
Bashscript är vanliga textfiler. För att göra ett Bash-script exekverbart behöver man sätta exekveringsflaggan på filen i Linux, såhär:
”chmod u+x start_stream.sh” (u+x betyder typ ”for user, add execution rights”, så ägaren av filen har rätt att exekvera den, men ingen annan) För att köra scriptet, om man står i samma katalog som det ligger, skriver man ”./start_stream.sh”.
start_stream.sh
Filen start_stream.sh innehåller följande kod för att starta streamen till YouTube:
raspivid -o – -t 0 -w 1280 -h 720 -fps 30 -b 4000000 -g 50 -awb greyworld -a 4 -a ”Bird Box: %Y-%m-%d %X” | ffmpeg -re -ar 44100 -ac 2 -acodec pcm_s16le -f s16le -ac 2 -i /dev/zero -f h264 -i – -vcodec copy -acodec aac -ab 128k -g 50 -strict experimental -f flv rtmp://a.rtmp.youtube.com/live2/STREAMINGNYCKEL FRÅN YOUTUBE
Ersätt STREAMINGNYCKEL FRÅN YOUTUBE med den unika nyckeln för din streaming i YouTube. Hoppa till ”Streama till YouTube” längst ner för att förbereda din stream och få nyckeln.
Kommandot består av två delar. Första delen kör programmet raspivid.
Parametrarna efter säger bland annat storlek på bilden, var den ska skickas (ut i terminalen), och vitbalans-preset som heter ”greyworld” och är en vitbalans anpassad för NoIR-kameran. Om du har en annan kamera så kan du behöva en annan vitbalans, eller utelämna ”-awb”-parametern helt
raspivid -o – -t 0 -w 1280 -h 720 -fps 30 -b 4000000 -g 50 -awb greyworld -a 4 -a ”Bird Box: %Y-%m-%d %X”
Sen kommer ett pipe-tecken ”|” följt av nästa program som heter ffmpeg.
ffmpeg kodar videon till FLV-format och skickar till YouTube. En del av kommandot trycker in tystnad som ljudspår. Tror YouTube kräver det.
Pipe är vanligt i Linux och betyder att output från ett kommando, i det här fallet ”raspivid” används som input i nästa kommando som är ”ffmpeg”.
wrapper-script.sh
cd /boot until ./start_stream.sh; do echo "Script crash: $?. Respawning.." >&2 sleep 10 done
Om du får problem med att scriptet kraschar efter en stund kan man skapa ytterligare ett script som automatiskt startar upp processen igen. wrapper-script.sh innehåller ett kommando som heter ”until” för att anropa ”start_stream.sh”. Until kommer att köra ”start_stream.sh” till dess att det kraschar, och kommer då att utföra instruktionerna som står efter ”do”, och sen startar until om ”start_stream.sh” igen. I mitt fall skriver ”until” ut ”Script Crash” och lite annat, och sen pausar den 10 sekunder innan den drar igång ”start_stream.sh” igen.
Glöm inte att köra ”chmod u+x wrapper-script.sh” också. Så för att köra igång streamingen kör jag alltså wrapper_script.sh som anropar start_stream.sh.
/boot/config.txt
De här raderna har jag lagt längst ner i /boot/config.txt. Det kan lösa problem om pien kraschar.
over_voltage=4 force_turbo=1 arm_freq=600 arm_freq_max=700 arm_freq_min=500
Så fort konfigurationen är klar på SD-kortet via datorn är det bra att frånkoppla enheten på ett säkert sätt så inga filer ligger låsta eller liknande. Högerklicka på den lilla USB-sticke-ikonen nere till höger på skärmen och välj Eject USB Drive och enhetsbokstaven.
För att autostarta streamingen till YouTube när Raspberryn strömsätts flyttade jag wrapper_script.sh till /etc/init.d genom att skriva följande
cd /boot
sudo mv wrapper_script.sh /etc/init.d
cd /etc/init.d
sudo update-rc.d wrapper_script.sh defaults
Efter detta autostartar streamingen men jag vet tyvärr inte hur man avbryter programmet om man skulle vilja. Får återkomma om detta…
För att man ska kunna se även när det blir mörk installeras en infraröd LED i serie med ett 100 ohms motstånd och ansluts till Raspberryns 5V-utgång. LEDen jag använder har framspänning 1,5V och drar 100mA varför ett 100 ohms motstånd blir ganska lagom till 5V. Det räcker med en LED. Gjorde ett snabbt test i labbet och anslut till spänningsregulatorn och förhandsgranskade streamingen i total mörker och det blev som mott på dagen trots att man inte själv ser ljuset från IR-dioden! Då kommer den heller inte störa fågellivet!
Sedan är det bara att löda fast headern i Raspberryn, montera kameran och trycka dit grejerna i caset. Hur snyggt som helst! Justera in focus på kameran med dem medföljande vita ploppen som man fäster försiktigt på kameralinsen och snurrar något varv tills man hittar rätt.
Uppdaterat 2023-04-30. Efter ett par säsongers drift är det dags att uppdatera Raspberry PI OS för att säkra med patchar o.s.v. Det kräver att SSH är aktiverat enligt ovan. Mer info här.
RRS feed