Das RT5350F-OLinuXino und das darauf basierende Evaluation Board RT5350F-OLinuXino-EVB bieten jede Menge Schnittstellen sowie einen programmierbaren 5-port Ethernet Switch zu äusserst kleinem Preis. Als Betriebssystem ist OpenWRT vorinstalliert.
Als besonderes Gadget enthält das Evaluation Board auch noch zwei integrierte 250V/10A Relais und einen Taster als Eingabemöglichkeit. Leider sind damit auch alle freien GPIOs des RT5350F verbraucht.
Die verfügbare Dokumentation zum Board ist leider etwas bescheiden, daher geben wir hier ein paar hilfreiche Informationen zum Einstieg.
Die erste Hürde stellt sich, wenn man versucht zum ersten Start die serielle Konsole über einen handelsüblichen 3.3V USB-Serial Adapter wie dem Foca herzustellen - die Beschriftung der Pins auf dem vorliegenden Port benennt die Pins als GND, RXD2 und RXD2. Die richtige Belegung (vom PCB Rand nach innen) ist:
Olinuxino-RT5350F | GND | RXD | TXD |
USB-Serial | GND | TXD | RXD |
Damit sei auch bereits erwähnt, dass das TXD des Olinuxino natürlich ans RXD des USB-Serial Adapters gehört und umgekehrt.
Als Geschwindigkeit ist 57600 Baud voreingestellt.
Das Board darf nur mit 5VDC gespiesen werden! Einmaliges Speisen mit höherer Spannung füḧrt laut Anwenderberichten dazu, dass das Gerät nur noch zur Indianerkommunikation mit Rauchzeichen taugt!
Wird dies beachtet, steht einem ersten Start des Boards nichts mehr im Weg.
Wenn das Board eingeschaltet wird, sollte man auf der seriellen Konsole den Bootvorgang beobachten können. Mit einem beherzten Enter wird die Konsole aktiviert und erlaubt uns das System zu inspizieren:
Please press Enter to activate this console. BusyBox v1.23.2 (2015-08-24 08:59:39 EEST) built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- CHAOS CALMER (15.05-rc3, r46591) ----------------------------------------------------- * 1 1/2 oz Gin Shake with a glassful * 1/4 oz Triple Sec of broken ice and pour * 3/4 oz Lime Juice unstrained into a goblet. * 1 1/2 oz Orange Juice * 1 tsp. Grenadine Syrup -----------------------------------------------------
Das Board wird einer OpenWrt Standardkonfig ausgeliefert, das heisst die beiden vorhandenen LAN Ports sind als LAN und WAN konfiguriert und das Board agiert als NAT-Router mit Firewall, die WiFi Schnittstelle ist per default deaktiviert. Die LAN Schnittstelle ist auf 192.168.1.1/24 konfiguriert, die WAN Schnittstelle darauf eine Adresse per DHCP zu beziehen.
Die Netzwerkkonfiguration kann nun entweder durch bearbeiten der Datei /etc/config/network
gemäss der OpenWrt Dokumentation bearbeitet werden - oder ab man verbindet seinen PC/Notebook mit der LAN Schnittstelle des Boards und greift mit Hilfe des OpenWrt eigenen Konfig Tools 'Luci' über die IP 192.168.1.1 mit dem Browser auf das Board zu:
Die Luci Oberfläche ermöglicht die einfache Konfiguration des Routers und z.B. das einfache Aktivieren und Konfigurieren der WiFi Schnittstelle:
Die GPIO Pins und damit auch die Relais sind im sysfs über Dateihandles zugänglich. So kann man den Status von Relais 1 z.B. auslesen mit:
cat /sys/class/gpio/relay1/value
Das Setzen eines GPIO Pins geht ähnlich einfach mit z.B.
echo 1 > /sys/class/gpio/relay1/value
Das Olinuxino-RT5350F-EVB erlaubt es rel. einfach einen Ethernet Power Switch aufzubauen, das heisst eine Steuerung von zwei bis zu 230V Lasten über den Webbrowser oder eine eigene Netzwerkanwendung.
Nachfolgendes Code Beispiel kann unter /www/powerset.cgi
gespeichert werden und mit chmod 755 /www/powerset.cgi
ausführbar gemacht werden.
Dieser schnelle Hack erlaubt das Ein- und Ausschalten der beiden Relais auf dem RT5350F-Olinuxino über den Webbrowser:
Hinweis: Der Code ist als schnelle Demo und Anregung gedacht und keinesfalls für produktive Umgebungen.
#!/bin/sh # # $Id: powerset.cgi,v 1.1 2015-09-08 11:08:27 boxtec Exp $ PWR1=/sys/class/gpio/relay1/value PWR2=/sys/class/gpio/relay2/value getpower () { pwr0=$(cat $PWR1) pwr1=$(cat $PWR2) } setpower () { if [[ "$1" == "0" ]]; then echo $2 > $PWR1 elif [[ "$1" == "1" ]]; then echo $2 > $PWR2 fi } echo "Content-type: text/html" echo echo -n "<html>" URLARGS=$(echo $QUERY_STRING | awk -F '&' '{print $1 " " $2 " " $3 " " $4}') cmd=$(echo $URLARGS | cut -d " " -f1 | cut -d "=" -f2) port=$(echo $URLARGS | cut -d " " -f2 | cut -d "=" -f2 ) state=$(echo $URLARGS | cut -d " " -f3 | cut -d "=" -f2 ) getpower echo "<head>" echo "<title>IP Switch Olinuxino</title>" if [[ "$cmd" = "SetPower" ]]; then setpower $port $state echo "<meta http-equiv='refresh' content='0,URL=/cgi-bin/powerset.cgi' >" fi echo "</head><body>" getpower if [[ $pwr0 == "1" ]]; then checked1="checked='checked'" newstate1="0" else checked1="" newstate1="1" fi if [[ $pwr1 == "1" ]]; then checked2="checked='checked'" newstate2="0" else checked2="" newstate2="1" fi echo "<h2>Set Power:</h2>" echo "<form action='/cgi-bin/powerset.cgi' method='get'>" echo "<input type='hidden' name='cmd' value='SetPower' />" echo "<input type='hidden' name='port' value='0' />" echo "<input type='hidden' name='state' value=$newstate1 />" echo "Relay1: <input type='checkbox' name='relay1' value=$pwr0 $checked1 onchange='submit();'/>" echo "</form>" echo "<form action='/cgi-bin/powerset.cgi' method='get'>" echo "<input type='hidden' name='cmd' value='SetPower' />" echo "<input type='hidden' name='port' value='1' />" echo "<input type='hidden' name='state' value=$newstate2 />" echo "Relay2: <input type='checkbox' name='relay2' value=$pwr1 $checked2 onchange='submit();'/>" echo "</form>" echo "</body></html>"
Das sieht dann in etwas so aus und ermöglicht das komfortable Schalten von grossen Lasten über den Webbrowser:
Das Olinuxino-RT5350F bietet sehr viele Möglichkeiten. Dass einem da in dieser kleinen Form ein programmierbarer 100Mbit/s Switch mit integriertem WiFi Access Point in die Finger kommt ist erstaunlich und macht jegliche IoT Projekte einfach. Der Stromverbrauch des Boards liegt bei offenen Relais, deaktiviertem WiFi bei unter 20mA. Wenn WiFi eingeschaltet ist, sind etwa 50-80mA im Betrieb zu erwarten. Je angezogenes Relais fallen etwa weitere 20-40mA an.
Es sind zwar viele Schnittstellen wie I2C, USB etc. vorhanden, einen freien GPIO Pin für eigene Anwendungen sucht man aber vergebens bei der EVB Variante. Beim reinen RT5350F Modul sind 3 GPIO Pins vorhanden die beim EVB für Relais und Taster verwendet werden.
Wenn man nun z.B. das Board um einen einfachen Temperatursensor erweitern möchte wirds also mit der EVB Version schon schwerer - der muss über eine der bestehenden Schnittstellen ans System. Der Versuch testweise einen Arduino Uno über USB anzuschliessen und über USB-seriell Messwerte an das Board zu übermitteln scheitert an der Tatsache, dass das OpenWrt im RT5350F-Olinuxino ohne den CDC Modem Treiber kommt - es müsste also erst ein neues OpenWrt mit dem entsprechenden Modulen kompiliert werden.
Trotzdem, alles in allem ein leistungsfähiges Board fürs Heimnetzwerk und IoT Projekte - wenn auch mit gewissen Einschränkungen.