RX320D-NY nog steeds on-line

‘onlinereceiver.net still going strong’.

Tot mijn groot genoegen kwam ik onlangs tot de ontdekking dat de oorspronkelijke onlinereceivers.net ontvanger in Rochester (NY) nog steeds operationeel is. Steve, KD2OM heeft er zelfs nog een antennekeuze bijgebouwd en de ontvangst is subliem. Vooral van LF en MF stations. De server is een Raspberry Pi en de set-up en werking nog steeds oud en vertrouwd.

rx320d-ny

De ontvanger is bereikbaar op rx320.doesntexist.org/rx320d en uiteraard ook via onlinereceivers.net.

Zeker de moeite waard om er nog eens een kijkje te nemen en te luisteren naar een ‘traditionele’ radio.

RPi Webcam update

Sterk vereenvoudigd script.

Na enige jaren onafgebroken een wolkencamera on line te hebben gehad, vond ik het tijd worden voor een ‘çlean-up’. De RPi Webcam was begonnen in mei 2013 met een eenvoudig script, maar werd later toch met de nodige extra’s uitgebreid. Ongeveer een jaar later kwam daar nog een aanvullende Dropbox toepassing bij. Vorig jaar heb ik zelfs de hele software veranderd naar een geavanceerde Rpi Cam Web Interface met de nodige toeters en bellen.

Allemaal erg mooi, maar met de laatste applicatie merkte ik wel dat de WiFi verbinding regelmatig uitviel op de RPi versie 1 type A (een oude model dus). Hierdoor viel de camera regelmatig stil, vooral als ik niet thuis was. Lastig, dus maar op zoek gegaan naar een oplossing.

Om de WiFi regelmatig te testen op connectie kun je een programmaatje (shell script) maken wat door de crontab (robot) wordt aangeroepen:

#!/bin/sh

TESTIP=192.168.178.1

ping -c4 ${TESTIP} > /dev/null

if [ $? != 0 ]
then
echo “$(date) WiFi seems down, restarting…” >> /home/pi/wifi.log
ifdown –force wlan0
ifup wlan0
else
echo “$(date) WiFi seems up.” >> /home/pi/wifi.log
fi

De TESTIP is het adres van de router. In wifi.log schrijf ik het resultaat van de test. Dit script met de naam testwifi.sh wordt in de /etc/crontab (dit is de system-wide crontab) uitgevoerd met deze regel:

*/10 *  * * *   root    /home/pi/testwifi.sh

Elke 10 minuten wordt er dus gekeken of de WiFi nog verbinding heeft en zo niet dan wordt deze opnieuw gestart. Dus opnieuw verbinding zoeken met behulp van de gegevens in de file /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=”PA3ANG”
psk=”wachtwoord”
key_mgmt=WPA-PSK
}

Nu ik toch bezig was wilde weer terug naar het eenvoudige webcam script van 2014. Ik had een script met de naam elapse.sh geschreven, met de mogelijkheid om verschillende formaten aan te kunnen bieden plus een website met php mogelijkheid. Redelijk zwaar. In eerste instantie met lighttpd en daarna zelfs met apache. Nou kan de RPi dat makkelijk aan, maar ik houd wel van KISS (Keep It Simple Stupied) en ik kwam een ‘ingebouwde’ webserver gebaseerd op Python tegen die ook nog eens onderdeel is van het standaard RPi pretpakket. Je hoeft dus geen aparte webserver te gebruiken, mits je html gebruikt (dus geen php) en simpele rechttoe rechtaan geschreven pagina’s gebruikt. Wel heb ik daarnaast een ftp mogelijkheid geïnstalleerd en via GitHub een Dropbox upload applicatie.

#!/bin/bash

picture=/var/www/webcam/stills/still.jpg

while [ true ]; do

directory=`date +%Y%m%d`
snaptime=`date +%H%M`
datetext=`date +%d/%m/%Y`
timetext=`date +%H:%M`

raspistill -o $picture -w 720 -h 405 -q 30 -awb auto -sa -70 -br 54

convert $picture -pointsize 20 -fill yellow -annotate +20+30 ‘RPi-Webcam|JO32am’ $picture
convert $picture -pointsize 16 -fill yellow -annotate +230+30 $datetext $picture
convert $picture -pointsize 16 -fill yellow -annotate +320+30 $timetext $picture
convert $picture -pointsize 16 -fill yellow -annotate +620+30 ‘©pa3ang’ $picture

ftp -n pa3ang.nl <<END_SCRIPT
quote USER ftp_user
quote PASS ftp_wachtwoord
binary
put $picture /public_html/webcam/stills/still.jpg
quit
END_SCRIPT

./dropbox_uploader.sh upload $picture $directory/$snaptime.jpg

while [ `date +%H%M` -eq $snaptime ]; do
sleep 1
done

done

Toen ik deze eenvoudige wijze van beeldopslag weer aanzette, merkte ik dat er geen tekst meer op de wolkenfoto was afgebeeld. Hiervoor maar weer google gebruiken en ja hoor, er is een speciaal programmaatje beschikbaar met de naam convert. Even met apt-get installeren en voila ik kan op de foto weer mijn eigen graffiti kwijt.

still

Het raam kan ook wel een schoonmaakbeurt gebruiken zie ik.

Ten slotte nog een toevoeging gemaakt in de /etc/rc.local zodat het programma automatisch start bij het aanzetten van de RPi:

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Print the IP address
_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %s\n” “$_IP”
fi

#START WEBCAM SESSION
cd /home/pi/webcam
python -m SimpleHTTPServer >/dev/null 2>&1 &
sudo -u pi /home/pi/elapse.sh &

exit 0

Zorg ervoor dat de SimpelHTTPServer naar /dev/null schrijft! anders stopt de server. Ook moet je even opletten met de eigenaarschap van scripts in de /home/pi directory. Ik roep overigens het elapse.sh script aan met -u pi (gebruik user pi) omdat de dropbox api bij mij is ingesteld op gebruiker pi.

Samenvattend heb ik dus nu een superlichte webcam / wolkencamera server, voorzien van een 10 minuten wifi waakhond. Je kunt de server vinden op pa3ang.xs4all.nl en dat is mijn hostnaam thuis. Via de router is de server veilig aangesloten op de buitenwereld.

Raspberry Pi Camera

De camara module is eindelijk leverbaar.

Na lang wachten is hij er dan: de Rapsberry Pi Camera Module. Te koop bij mijn hofleverancier onder het motto ‘kost een paar cent, maar dan heb je ook wat’. Hij is op dit moment (mei 2013) nog beperkt leverbaar, maar leuk!

Zo ziet het eruit op de transparante behuizing.

Om het aan de praat te krijgen moet je een Raspbian ‘wheezy’ update / upgrade doen. Alle informatie vind je hier. Door eerst even te experimenteren met een aangesloten HDMI scherm kun je ervaring krijgen met de twee nieuwe programma’s raspistill (voor foto’s) en raspivid (voor video’s). De programma’s hebben volwaardige ‘toestel’ functionaliteit met Exposure en AWB instellingen en je kunt het beeld roteren, flippen en wat al niet meer  (hier een goed overzicht uit Maleisië).

Tja, wat gaan we ermee doen? Een webcam, weathercam of streaming ding-dong geval? Eerst maar eens snel een website-je in elkaar flansen om stilstaande beelden te streamen. Dat is namelijk het makkelijkste 🙂 en daar heb ik voldoende ervaring mee. Hier alvast de  eerste beeldjes.

O ja, het is natuurlijk wel handig dat de inhoud van de ‘picture’ of stream interessant is. Ach een weerplaatje is altijd leuk. Kun je kijken hoe het weer thuis is als je op reis bent.

Het streamen van video blijkt even wat lastiger te zijn. Ik heb mezelf even in de wachtstand gezet. De beschikbare software en ideeën via het zoeken met gooooogle leverde nog iets te weinig op.

Het is dus nu voorlopig een ‘weathercam’ geworden op de bovenste verdieping van mijn huis, met uitzicht naar het noordoosten. Dus niet echt spectaculair, maar bij ons gebeurd niks in de straat en het enige wat de cameramodule niet heeft is een zoom functie. Dus ‘gluren bij de buren’ is ook geen optie :).

De opstelling is als volgt: RPi met camera (zoals boven op de foto). Deze neemt een aantal verschillende foto’s en stuurt die naar de RPi webserver 2 verdiepingen lager. Vandaar kun je op zowel pa3ang.nl (linksboven) als pa3ang-rpi.nl naar de beelden kijken.  (NB: ‘s nachts is het donker!!)

Dit is het bash script dat op de camera RPi draait:

#!/bin/bash
SAVEDIR=stills
while [ true ]; do
datetime=$(date -u +”%d-%m-%Y %H:%M:%S”)
location=”52.53519, 6.053596″
echo $datetime”&nbsp;&nbsp;&nbspMap:”$location > stills/still.txt
filenamebig=still-big.jpg
filenamesmall=still-small.jpg
filenamerpi=still.jpg
raspistill -o $SAVEDIR/$filenamebig -w 1024 -h 640 -q 50 -hf
raspistill -o $SAVEDIR/$filenamesmall -w 240 -h 144 -q 10 -hf
raspistill -o $SAVEDIR/$filenamerpi -w 640 -h 384 -q 20 -hf
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamebig root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamesmall root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamerpi root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/still.txt root@raspberry-black:/var/www/stills/
sleep 30
done;

Op de webserver is een klein php scriptje om de datum en tijd op de website te presenteren. Zodra ik een goed programma vind voor het streamen van beelden dan zie je dat hier wel weer verschijnen!

Met dank aan raspberrystore.nl voor de snelle levering.

En…. nog steeds groen. Het opgenomen vermogen van de RPi met camera is ca. 4 watt en van de RPi server idem dito. Ik denk dat de FritzBox modem / router en de NetGear HUB meer energie nemen :).

Raspberry Pi, versie 2.0, Type B, met 5Volt USB adaper en een LAN kabel aan de NetGear HUB. Beetje onbeschermd, maar er komt verder toch niemand in mijn ‘Home Office’ op de derde verdieping.

RTLSDR op onlinereceivers.net

Definitieve doorstart van onlinereceivers.net?

Als test is er een nieuwe afstembare ontvanger operationeel op http://pa3ang-rpi.nl/onlinereceivers/rtlsdr.php. Het is een RTL2832u dongle (de nieuwste dus van $10 :)) welke aan een Raspberry Pi verbonden is via een gevoede USB 2.0 hub.

In feite heb ik alles al beschreven in deze blog http://pa3ang.nl/wp/archives/3559, alleen heb ik nu op de RPi een extra soundkaart aangesloten en met darkice wordt het gedemoduleerde signaal op internet aangeboden. Ook is een extra python controller programmaatje geschreven (dit keer niet door zoonlief maar zelf gedaan :)) zodat de RTL afgestemd kan worden.

Ondanks dat de nabuurkanaalselectiviteit (nog) niet optimaal is, kun je er best goed gebruik van maken om frequenties te monitoren.

We hebben dus nu een SDR gebaseerde breedbandontvanger met een Raspberry Pi en dat alles op een webserver die ook op een Raspberry Pi draait. O ja er staan dus nu twee RPi-en op de plank. Een zwarte en een rode . Zwart is voor de RX320 besturing, de webserver, icecast2 en darkice stream nr 1 (RX320). Rood is voor de RTL2832u besturing, demodulatieprogramma (rtl_fm) en darkice stream nr2. Beetje rustig laten draaien en zelf niet met teveel RF in de lucht komen.

Mooie bende die kabels, maar ach het is op een plank onder het bureau dus je hebt er veder geen last van. O ja het bromt, blaast of trilt niet. All solid state!

 

Doorstart onlinereceivers.net !?

Compleet op een Raspberry Pi geïnstalleerde RX320D server.

Gedurende de jaren dat ik mijn PCR100, RX320D, FT-817 en soms een extra audio stream op internet aanbood werd daarvoor een laptop gebruikt. Eerst een oude IBM Thinkpad 390 (P2/450MHz), daarna een Asus S1300 (P3/1000MHz) en beide draaiden op Windows. Het stroomverbruik was niet extreem hoog en zeker niet in vergelijk met een Desktop, maar ik had wel steeds 3 wensen. Eigenlijk wilde ik op Linux omschakelen en ook wilde ik geen draaiende (en dus geluidmakende, hoe zacht ook) delen meer in de server hebben en een zo laag mogelijk stroomverbruik.

Tja, en dan dient de Raspberry Pi zich aan. Een Linux systeem dat vergelijkbaar is met een P2, 300Mhz, maar qua architectuur en opbouw wel eens best goed zou kunnen performen als een RX320D server. Misschien dan wel niet 2 of 3 ontvangers en bijbehorende audiostream tegelijk, maar dat is toch niet meer van belang, want op VHF/UHF is weinig meer te beleven, de PCR100 is niet meer te gebruiken en mijn extra audiostreams zijn vaak niet 24/7 dus kunnen ook wel door een andere pc gestreamed worden.

Maar hoe ga je te werk, wat is er allemaal nodig? Na enig speurwerk met de bekende google machine blijkt er een lichtgewicht webserver te bestaan genaamd lighttpd. Hierop kun je tevens php5 en mysql installeren. Dus zo gezegd zo gedaan. Wat testen en experimenteren en vervolgens de code van onlinereceivers.net testen op de nieuwe RPi omgeving. Speciaal een domein aangevraagd http://pa3ang-rpi.nl en ja hoor het werkt. Goede performance en de RPi geeft geen krimp. Vervolgens icecast2 installeren. Ook geen probleem. Dat gaat allemaal lekker makkelijk met de sudo apt-get install commando’s overigens. Ik ga mooi niet vertellen hier hoe je alles moet doen. Google maar en als je een beetje gezond verstand hebt kom je al een heel eind. Alleen de moeilijke zaken zal ik in dit blog belichten.

Ondertussen ziet onlinereceivers.net (of eigenlijk pa3ang-rpi.nl) er zo uit:

Een lichtgewicht layout op een micro server. Zoals je ziet een nieuwe player. Dit is een Flash player met minder dan 2 seconden vertraging. Hij werkt vooralsnog niet op Internet Explorer, maar tja wie gebruikt die Microsoft meuk nog. Op FF en Chrome en ja ja op mijn Samsung Tab2 10.1 Android werkt het voortreffelijk. Dat laatste was een vereiste en daarom is de nieuwe layout ook passend op het Samsung scherm en heeft de pagina weinig overhead (lees pictures en java scripts) voor mobiel gebruik. Ook is de shoutbox groter geworden. Er komt nog wat betere navigatie, want je kunt ook naar de RX320D ontvanger in New York en naar een pagina met vaste repeater streams surfen / luisteren.

Okay terug naar de RPi installatie.

De webserver werkt, icecast2 was een ‘piece of cake’ en voor onderhoud van de mysql database heb ik phpmyadmin adminer geïnstalleerd. Verder webalizer voor de site statistiek en nog wat Linux tooltjes (o.a. chkconfig). Maar nu moet ik nog een goede audio encoder hebben die werkt met een USB soundkaart en de RX320D controller die op java draait en praat met een USB<>RS232 convertor.

Allereerst java….. even zoeken om vervolgens gewoon met apt-get install de laatste java-7 versie te installeren. Ik heb een 16GB SD card en die heb je ook wel nodig met al dat ‘geïnstalleer’. Ergens halverwege zul je met raspi-config het commando expand rootfs moeten uitvoeren om weer voldoende ruimte te hebben voor alle software. Vervolgens met een beetje hulp van zoonlief de RX320D controllersoftware uitgepakt en tenslotte, om via de USB<>RS232 poort te communiceren, de library libRXTX-java geïnstalleerd. Hierna kon ik met de ontvanger praten en zoals ik dat vaker doe, weer live testen uitgevoerd met gebruikers. Tot nu gaat het goed. De laatste hobbel is de stream encoder.

Ik had namelijk al wat getest met Darkice. Dit is een Linux programma dat mp3 gecodeerde live audio kan streamen. Hiervoor moet je wel een lame library hebben. Dus weer googlen en ook dat varkentje gewassen. Echter, de RPi gaat door de knieën. Te zwaar?  De CPU loopt naar 98% en niks gaat meer. Echter… lang verhaal kort…. ik heb de configuratie van Darkice als volgt:

[general]
duration=0
bufferSecs=10
reconnect=yes

[input]
device=plughw:1,0
sampleRate=11025
bitsPerSample=16
channel=1

[icecast2-0]
format=mp3
bitrateMode=cbr
bitrate=16
#quality=0.4
server=localhost
mountPoint=rx320
port=8000
name=RX320D Zwolle – Netherlands
description=Tunable HF receiver
url=http://pa3ang-rpi.nl/onlinereceivers/rx320a.php
genre=Talk
public=yes

Hiermee heb je een goed verstaanbare stream waarbij de cpu belasting slecht 10% is! O ja… je moet misschien nog een alsa-mixer installeren om de USB Audiokaart te kunnen beïnvloeden. Hier een top beeldje van de belasting.

Kortom het is gelukt. Een Raspberry Pi, type B + gevoede USB hub + USB<>RS232 + USB Audio. De RPi wordt overigens ook gevoed vanuit de USB hub. Nog een paar foto’s van onder de tafel waar de opstelling te vinden is.

Wel een beetje rommelig, maar de verschillende onderdelen zijn goed te zien. De RPi, USB hub met USB audio en RS232. Op de andere foto zie je de RX320 met bovenop een coax splitter om de WL1030 loop antenne ook op mijn eigen set (Rx antenne ingang) te gebruiken en het kastje op de plank is de voeding voor de WL1030 loop.

Ondertussen (mei 2013) de boel een beetje gefatsoeneerd. Alleen op 20 meter (en hoog vermogen) gaat de RX232<>USB convertor nog plat.

Ik ben we wel blij mee. Geen tikkende harddisk meer en slechts 4 Watt energieverbruik. Maximaal gebruik van de nieuwe ARM processor technologie en ook nog eens  ecologisch verantwoord. Ik ga er denk ik een groene stikker op plakken.

UPDATE (30 maart 2013)

Tom, mijn in Linux denkende zoon, heeft mooi ingespeeld op de ‘voorkeur programmeertaal’ voor de RPi, namelijk Python en heeft de RX320 controller / server herschreven. Hierdoor is de cpu belasting teruggegaan van 12% naar minder dan 2%. Vermoedelijk omdat de RXTX-library nogal belastend de RS232 poort afvraagt. Hij heeft er een eigen blog over geschreven dat je hier kunt lezen.  Het top plaatje ziet er nu zo uit.

Zo verbruiken we nog minder stroom en wordt de ARM processor ook minder warm, wat ook weer voordeel biedt voor de levensduur etc. etc.

 

Raspberry Pi Internet Radio

Eerste project met een add-on UI print

Je bent radioman of niet. Dus het eerste project met wat meer voeten in de aarde zou hebben moest een internet radio ‘ontvanger’ worden met display en schakelaars. Hiermee kan je hem immers ook stand alone gebruiken. Dus zonder beeldscherm, keyboard of externe pc via SSH of VNC.

Nou ik kan jullie meedelen, het is gelukt!

Al vrij snel kwam ik met googlen BitWizard tegen. Deze hobby-isten club (trouwens ook radioamateurs) heeft hele handige, leuke en prijsgunstige producten voor je op de plank liggen, waaronder een SPi User Interface opsteek print. Deze unit heeft dezelfde afmetingen als de Raspberry Pi en ik heb hem voorlopig met een extra 26 pin long header door de behuizing heen gemonteerd.

De UI print heeft een HD44780 compatble 2 x 16 karaters display en 6 schakelaars. Verder zijn alle RPi in en output lijnen beschikbaar op de print. Vandaar de uitstekende printheaders (kunnen we er altijd nog afknippen als we ze niet gaan gebruiken).

Overigens, je moet wel een beetje ‘nerd’ zijn om de boel aan de gang te krijgen. Er is wel documentatie beschikbaar, maar je moet de nodige handelingen verrichten om de kaart door de RPi te laten herkennen. Vervolgens moet je git installeren ($ apt-get install git) en daarna bw_tool.

Nu een paar zaken waar ik tegenaan liep:

  • In eerste instantie kon ik de kaart in het geheel niet bereiken. Het viel me op dat het display niet mooi de karakters weergaf. De oorzaak bleek uiteindelijk de voedingspanning te zijn. Je moet er echt op letten om een goede USB<->micro kabel te gebruiken en dat de 5 volt ‘USB’ voeding voldiende stroom kan leveren. Ik gebruik nu een ‘auto-sigaretten-aansteker-adapter’ waar 2A op staat die in mijn station voeding van 10A is aangesloten.
  • Er zijn voorbeelden op internet te vinden die niet werken! Dit komt door een klein verschil op de GPIO bus van de RPi tusen versie 1 en 2 waardoor de adressen (nummer) veranderd zijn.
  • De aangemaakt /dev devices verlenen geen rw (read write) rechten aan all. Hierdoor moet je alle bw_tool command’s met sudo beginnen. (of $ sudo chmod a+rw /dev/spi*)
  • De SPI_UI device naam is niet /dev/I2C-0 en /dev/I2C-1 maar /dev/spidev0.0 en /dev/spidev0.1. Hierdoor werd ik door de diverse voorbeelden ook behoorlijk op het verkeerde been gezet.
  • Mijn SPI_ rpi_ui 1.3 start op met de tekst A: 94 op de tweede lijn. Dit is dus het adres van het board / display en niet 82 zoals in veel voorbeelden.

Goed dit wetende kon ik teksten op het display krijgen en vervolgens ook de schakelaars uitlezen. Nu dus op naar een eerste aanzet voor een bedienbare internetradio.

Ik had al een radio script. Dit script wert samen met de xmms2 player. Het installatiescript vind je hier  (www.dronkert.net/misc/radio.html).  Volg de instructies en je kunt al aan de slag met ontvangst.

Ik heb hierna het script aangepast om de zenderinformatie op het SPI schermpje te plaatsen. De code van het script radio ziet er dan als volgt uit:

else
		if [ -f $DBFILE ]; then
			curstation=$(cat $DBFILE | grep --colour=never -m 1 -F "$curstream" | grep --colour=never -oP '^\S+')
			# added lookup real name in DBFILE (pa3ang)
			curname=$(cat $DBFILE | grep --colour=never -A 1 "$curstream" | tail -n 1)
			if [ -z "$curstation" ]; then
				curstation="(station not found)"
			fi
		else
			curstation="(station database not found at \"$DBFILE\")"
		fi
	fi

	echo
	if [ ! -z "$curstation" ]; then
               echo -n "   Select  : "
               echo $curstation
 		echo -n "   Station : "
		echo $curname
	fi
	if [ ! -z "$curstream" ]; then
		echo -n "   Stream  : "
		echo $curstream
	fi
	if [ ! -z "$curvolume" ]; then
		echo -n "   Volume  : "
		echo $curvolume
	fi
	echo

        # Info on SPI display
  	sudo bw_tool -a 94 -C
	# Display lines
	# Goto Pos 0 on Line1
  	sudo bw_tool -a 94 -r 17 -v 0
  	sudo bw_tool -a 94 -t $curname
	# Goto Pos 0 on Line 2
  	sudo bw_tool -a 94 -r 17 -v 32
  	sudo bw_tool -a 94 -t "RPi inet radio"

	exit $ERR_OK

Er zijn nog wel wat meer aanpassingen. De source zal ook nog wel wijzigen. Je kunt hem hier downloaden.

Ook moet de file .radiodb aangepast worden en wel op elke 2e regel moet de ‘echte’ en toonbare naam van het station ingevoerd worden.

10gold  	http://82.201.100.23/Radio10Gold
Radio 10 Gold
pi1utr-rr      	http://relay.radioreference.com:80/401514669
PI1UTR - DCS007B

Ja en toen nog een bediening. Toevallig was zoonlief even thuis. Ja de ‘nerd’ die de meest ingewikkelde problemen weet op te lossen. Hij heeft een python script voor me geschreven, waarmee ik niet alleen een eenvoudig script heb wat ik verder uit kan breiden, maar ook een start kan maken met Python, de bij de Raspberry Pi ‘meegeleverde’ programmeertaal.

Het programaatje inetradio.py ziet er als volgt uit:

from subprocess import *
from time import sleep

print "\nRPi inet radio with BitWizard RPi UI board.\n"
call(["/usr/local/bin/radio", "on"])
sleep(1)
call(["/usr/local/bin/radio"])
bank = 1

channel = {
	"00001010": "bnr",
	"00000808": "radio2",
	"00000404": "10gold",
	"00000202": "radio4",
	"00000101": "sky",
	"00003030": "pi1utr-rr",
	"00002828": "pi3utr-rr",
	"00002424": "pi2rtd",
	"00002222": "rx320a"
}
delay = 0
quit = 0
counter = 0
while not quit:
	output = Popen(["/usr/bin/bw_tool", "-a", "94", "-R", "30:i"], stdout=PIPE).communicate()[0].strip()
	if output == "00002121":
		call(["/usr/local/bin/radio", "off"])
		quit = 1
	if output in channel:
		call(["/usr/local/bin/radio", channel[output]])
		sleep(1)
		call(["/usr/local/bin/radio"])
		counter = 0
		delay = 0
	if output == "00002020":
		delay = delay +1
	if delay == 100:
		call(["/usr/local/bin/radio"])
		delay = 0
	if counter == 1000:
		call(["/usr/local/bin/radio"])
	counter = counter + 1

Ook dit programma zal nog sterk gaan veranderen. De sourcecode kun je hier ophalen.

De werking is als volgt:

  1. Bij het starten van inetradio.py wordt de ontvanger aangezet en start hij op het laatst afgestemde station, tenzij het een koude (reboot) start is.
  2. De bediening van de schakelaars is als volgt:
    • schakelaar 1 – shift en bij 2 seconden wordt het display gerefreshed
    • schakelaar 2 – preset 1 en preset 6 bij shift gelijktijdig indrukken
    • schakelaar 3 – preset 2 en preset 7
    • schakelaar 4 – preset 3 en preset 8
    • schakelaar 5 – preset 4 en preset 9
    • schakelaar 6 – preset 5
  3. Toets 1 en toets 6 gelijktijdig is radio uit en bij radio uit, gaat hij weer aan!
  4. Als je ‘handmatig’ van station wisselt met pi@raspberrypi ~ $  radio “zender” dan kun je door een display refresh (2 sec. schakelaar 1) de stationsnaam in beeld krijgen.

LET OP : De juiste stationsnaam komt alleen in beeld als de stream gevonden en gestart kan worden!

Als de radio uit staat (maar het inetradio programma draait wel) dan heb je de volgende functies:

  • schakelaar 2 – datum en tijd
  • schakelaar 3 –
  • schakelaar 4 –
  • schakelaar 5 –
  • schakelaar 6 – inetradio.py programma wordt definitief gestopt

Het geheel draait dus gewoon met Raspbian “wheezy” op een type B versie 2 board. Zoals gezegd zal de programmatuur nog verder verbeteren. Ook is de .radiodb file door mij aangepast.  Voor de goede order, volg de instructies op de hierboven gelinkte sites. Aanvullende source code welke door mij geschreven is / wordt staat hieronder. Misschien wordt het nog wat en komt er gewoon een automatische install van het geheel.

bash script radio
http://pa3ang.nl/rpi/radio

Python programma  inetradio.py
http://pa3ang.nl/rpi/inetradio.py

database met stations .radiodb
http://pa3ang.nl/rpi/.radiodb

suc6, PA3ANG

 

UPDATE  (2 april 2013)

Nu ook mobiel via een WiFi link en draaiend op een Type A board. Dus minder stroomverbruik door de RPi zelf waardoor power overblijft voor het UI boardje. Nu nog een goede 5 volt accu eraan en je hebt een echte portable internetradio.

Ps: Het blijkt dat deze nano WiFi dongles niet stabiel zijn in de hoge 2,4GHz kanalen. Ik heb omgeschakeld van kanaal 13 naar kanaal 2 en nu werkt het lekker stabiel en ook redelijk goed daar waar de veldsterkte laag is. De WiFi start tijdens het booten zelf op (headless gebruik van de RPi) en verbind met het voorkeursnetwerk.

UPDATE  (23 april 2013)

Een nieuwe behuizing en een Type A Raspberry Pi. De behuizing is verkrijgbaar bij mijn vaste leverancier en is super compact voor deze uitvoering van de RPi.

Het wordt steeds mooier! Ook wordt er nog druk gesleuteld aan het script dus we zullen eerdaags een update op de website plaatsen.