![YouTubeHolk]()
Ä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 holken som hänger 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 under byggets gång stöter man stöter på ett antal både bygg- och teknikrelaterade problem eller utmaningar.
Projektet består av två delar; ett fågelholksbygge som är själva snickeridelen och en del som är mer teknimkinriktad 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 :)
Fågelholksbygget
- en tvårummare med fågelrum och teknikrum.
Features:
- Vill dela av fågelrummet och teknikrummet med en plexiglasskiva som webbkameran kan se igenom. På så sätt får elektroniken vara ifred från diverse insekter och annat kryp. En fågelholk blir ganska bösig efter en säsongs användning och då är det fräscht om elektroniken får ett eget renrum att husera i
- Löstagbar botten gör det enkelt att tömma holken till nästkommande gäst
- Löstagbart tak gör det enkelt komma åt elektroniken vid behov
- Sågade spår i panelen gör att holken ser ut att vara byggd av liggande panel
Material:
- Några träbitar 22x170 mm ca 40 cm långa
- En bit formplyfa till tak
- Trälim för utomhusbruk
- En bit 2mm plexiglas
- En skruv 5x80 mm
- 2 4x30 mm skruv
- 2 st Magnetlås
- Tätningslist
- Utomhusfärg
Verktyg:
- En kapsåg underlättar göra fina kap
- En klyvsåg för att göra spår som ser ut som liggande panel
- En fogsvans
- Vinkelhake
- Penna
- Skruvmejsel eller skruvdragare med bits
- 6 mm borr
[gallery ids="13802,13803,13804,13805,13806,13807,13808,13809,13810,13811,13812,13796,13797,13798,13799,13800,13801"]
Hårdvaran
Komponenter:
- Raspberry Pi NOIR camera module
- Ett MicroSD-kort. Jag kör med ett 16 GB
- Litet case som passar
- 5 meter Micro-USB kabel för att strömsätta kortet
- 3 Female-to-female jumper
- Några 220 Ohm 1% Resistors
- Några infraröda LED (5mm 890nm)
Mjukvara
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.
Installera Raspberry Pi OS (tidigare kallad Raspbian) med hjälp av
Raspberry Pi Imager. Följde
denna guide och valde
Raspberry Pi OS Other,
Raspberry Pi OS Lite eftersom jag inte behöver något gränssnitt utan bara ett basic operativsystem.
Det går inte formattera SD-kortet i Windows
Om man får problem med SD-kortet (vilket jag fick när jag avbröt Raspberry Imager mitt i en process) så kan det strula till sig med partitionerna på kortet och det går inte längre att skriva till kortet eller formatera det i Windows Explorer. Raspberry Imager skriver till två partitioner på SD-kortet; en boot-partition FAT32 och en Linux-partition som Windows inte ser. För att formatera om hela kortet kan man då använda ett program som heter
SD Card Formatter som kan
laddas ner här.
Börja med att byta lösenord på pi-användaren i användargränssnittet genom att skriva
sudo raspi-config
Headerless
Hittade en guide för att konfigurera en
headerless Raspberry Pi.
Headless (betyder att man inte ansluter någon skärm, mus eller tangentbord).
Konfigurera nätverket
https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md
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
}
Disabla Bluetooth
Disablade Bluetooth eftersom jag inte vill använda det genom att lägga till
dtoverlay=disable-bt i config.txt-filen.
Routerkonfiguration
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.
SSH
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.
Installera ffmpeg
https://ffmpeg.org/download.html
https://tracker.debian.org/pkg/ffmpeg
https://packages.debian.org/source/stable/ffmpeg
Testa kameran
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.
Script
Skapa två script genom att använda Notepad++ och lägg dem i rooten på SD-kortet.
start_stream.sh
Det här är kommandot för att starta YouTube-streamen från kameran:
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/
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 vitbalanspreset 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".
För att slippa hålla på med det långa kommandot för att starta en stream så har jag lagt kommandot rakt upp och ner i ett Bash-script som jag döpt till start_stream.sh.
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".
Sen hade jag ju problemet med att streamen kraschade ibland, och jag vill då att den automatiskt startar upp igen. Det gjorde jag genom ett enkelt script som jag kallade "wrapper-script.sh". I wrapper-script.sh kör jag 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 starta min stream kör jag alltså wrapper-script.sh som anropar start-stream.sh.
wrapper-script.sh
until ./start_stream.sh; do
echo "Script crash: $?. Respawning.." >&2
sleep 10
done
/boot/config.txt
De här raderna har jag lagt längst ner i /boot/config.txt Det är tack vare dem som min Pi Zero slutade att krascha hela tiden
over_voltage=4
force_turbo=1
arm_freq=600
arm_freq_max=700
arm_freq_min=500
Autostarta streamingen
För att autostarta streamingen till YouTube när Raspberryn strömsätts flyttade jag wrapper_script.sh till HMM... ÅTERKOMMER.
Belysning
För att man ska kunna se även när det blir mörk installeras infraröda LED.
Beskrivning kommer så småningom...
Streama till YouTube
Logga in på din YouTube-kanal.
Välj Hantera videor
Välj Innehåll och fliken Live
Kom igång.
Börja Nu
Välj Streamingprogramvara
Skapa Streamingen
Kopiera Streamingnyckeln och adressen
Fler holkar
Här är min kompis fågelholksstream.