Off-the-grid kamera beacon med solpaneler (3 / 5 steg)
Steg 3: Konfigurera programvara stacken
Installera OS som du väljer på Pi, vi använt Raspbian eftersom folk bekant med Debian/Ubuntu tycker att det är lätt att använda. Detta steg kommer att följa Raspbian konventioner. Du kan använda någon distribution om du vill men då kommer ni att anpassa dessa till den smak som den använder.
Tar bilder kommer att hända med raspistill, detta bör redan vara installerat på enheten. Konvertering till SSTV modulerade ljudfil som kommer att hända med PySSTV och UNIXSSTV, så du behöver Python, Git, GCC och göra för att. Sistnämnda beroenden finns som standard på Raspbian, så du behöver bara installera programmet två SSTV genom att köra följande kommandon.
sudo pip installera PySSTV
git clone < en href = "https://github.com/dnet/unixsstv" rel = "nofollow" > https://github.com/dnet/unixsstv</a>
göra - C unixsstv
Bilden tas och förbehandlat i Python, återfinns en exempelskriptet nedan:
importera bild från PIL
importera MartinM2 från pysstv.color
importera check_output från underprocess
importera StringIO från cStringIO
importera RPi.GPIO som GPIO
importera struct, sys
TX_PIN = 18
IMG = Image.open (StringIO (check_output (['raspistill', '--output', '-',
"--bredd", "320", "--höjd ',"256","-e', "bmp"])))
Overlay = Image.open('overlay.png')
img.paste (overlay, (0, 0), overlay)
IMG = img.resize ((MartinM2.WIDTH, MartinM2.HEIGHT))
SSTV = MartinM2 (img, 44100, 16)
för freq, msec i sstv.gen_freq_bits():
sys.stdout.write (struct.pack ("ff", freq, msec))
GPIO.setmode (GPIO. BCM)
GPIO.setup (TX_PIN, GPIO. OUT)
GPIO.output (TX_PIN, sant)
Bilden i overlay.png kommer att sättas på fotot, så måste du bygga den på ett sätt som de flesta av det är transparent, eftersom dessa pixlar kommer att vara de enda som kan ses från fotot. Känn dig fri att experimentera, bara se till att om du använder skinka (amatör) radiofrekvenser, överföra din callsign genom att sätta det på bilden. (Avancerade användare kan prova och använda FSK callsign kodaren i PySSTV.)
Martin M2 valdes eftersom den har en ganska fin färg utgång, medan du fortfarande tar bara en minut att överföra en bild. 44100 Hz och 16 bitar är också bra standardparametrar, men känn dig fri att experimentera med dem också, se bara till att matcha dessa parametrar i andra komponenter.
Eftersom skriptet slutar sitt jobb genom att aktivera PTT och skriver förbehandlade SSTV data om standardutdata (stdout), en annan komponent som behövs som avslutar behandlingen, spelar ljudet på ljudet och deaktiverar PTT i slutet.
För detta behöver ett skalskript skapas som den nedan:
#! / bin/sh python
/Home/PI/Beacon.py | /Home/PI/unixsstv/gen_values 44100 > /tmp/wav.bin
spela - q - r 44100 -t f32 - c 1 - normen /tmp/wav.bin >/dev/null 2 > & 1
python - c ' importera RPi.GPIO som G; G.setmode(G.BCM); G.Setup (18, G.OUT); G.output (18, False); G.CleanUp()' >/dev/null 2 > & 1
RM -f /tmp/wav.bin
Python skript ovan är heter beacon.py och ligger i arbetskatalogen för standardanvändaren pi, om detta skiljer sig på enheten, måste du ändra detta på lämpligt sätt. Utdata är förs in i gen_values av UNIXSSTV, och sedan sparas i en fil med ingen header, bara binärt innehåll, därav den .bin utsträckande.
Detta spelas senare med kommandot spela av sox, som kan installeras på Raspbian från paketet sox, men du kan behöva göra det manuellt på andra distributioner. Slutligen, PTT avaktiveras genom att ringa Python kod direkt, i så kallade infogad formatmall, och rm tar bort temporärfilen förbehandlade.
Obs: eftersom GPIO kan bara manipuleras av root, måste du köra shell skriptet som roten också. Dessutom kommer spela använda HDMI audio kanal som standard, så se till att koppla ur HDMI samtidigt som man försöker denna del. Om inget ljud spelas upp kan också kontrollera ljudvolymen (till exempel med alsamixer).
Med dessa, erövrare imagen och överföra bilden kan prövas genom att köra ovan shell script från en konsol (seriell, lokal, GUI) eller via SSH. Om det fungerar bra, behövs bara en sak för regelbunden överföring kallas cron. På Unix-liknande system såsom Linux utför detta program fördefinierade aktiviteter enligt ett schema som kan ställas in med crontab -e, där -e står för edit. Detta kommer att visa det aktuella schemat för användaren (detta bör vara root för denna uppgift) och redigera det i användarens standardredigerare. Det finns också lite hjälp där när det gäller syntax och till exempel skicka en bild var 15 minut ser ut så här:
* / 15 **** sh /home/pi/beacon.sh
Denna inställning kan testas genom att ansluta Raspberry Pi till en USB-laddare, och om allt fungerar, kan du fortsätta genom att ersätta det med sol.