Microview ist ein Arduino kompatibles Modul mit eingebauten OLED-Display. Das On-Board 64×48 Pixel OLED kann sehr einfach zum Anzeigen von Sensordaten, kurzen Mitteilungen u.a.m. eingesetzt werden. Es passt gut in ein Steckbrett und macht das Prototyping einfach. Eine voll funktionsfähige Arduino-Bibliothek erleichtert die Programmierung des Moduls erheblich. Ausführliche Informationen sind bei Sparkfun zu finden.
Die Programmierung kann über die Arduino IDE oder aber auch sehr komfortabel über Codebender erfolgen.
MicroView can über einen USB-Serial-Converter an die USB-Schnittstelle eines Raspberry Pi/Banana Pi/Beaglebone o.ä. angeschlossen werden.
Der Quelltext des MicroView Programmbeispiels SerialDisplay.ino ist im Folgenden dargestellt:
// MicroView as SerialDisplay // Displays temperature and humidity data serial received in format "D t.t h" // t.t means temperature as floating point number // h means humidity as interger number // Configuration of serial interface is 9600 baud, 8n1, no handshake // 2014-11-03/Claus Kühnel #include <MicroView.h> int hum; float temp; void readData() { if(Serial.available()) { if(Serial.find("D")) { temp = Serial.parseFloat(); hum = Serial.parseInt(); } } } void displayData() { uView.clear(PAGE); uView.setCursor(0,0); uView.print("Temperatur"); uView.setCursor(10,12); uView.print(temp); uView.print(" *C"); uView.setCursor(0,24); uView.print("Feuchte"); uView.setCursor(10,36); uView.print(hum); uView.print(" %"); uView.display(); } void setup() { Serial.begin(9600); uView.begin(); } void loop() { readData(); // Query data displayData(); // Refresh display delay(200); }
Mit dem Programm usb-wde1-2_mc.sh kann beispielsweise ein Temperatur- und Feuchtigkeitssensor ASH2200 über den Funkempfänger USB-WDE1-2 abgefragt werden. Der Funkempfänger wird mit dem Linux-Device über USB verbunden.
Der Link zur ELV-Website und die Konfigurationsdaten sind dem Quelltext zu entnehmen.
Bei der seriellen Kommunikation über den MicroView-Programmer, wird der MicroView beim Datentransfer über DTR immer in den Reset gesteuert (Bootloader wird aktiviert). Es ist also darauf zu achten, dass DTR disabled oder nicht verbunden wird. Mir ist ein Disable über stty nicht gelungen, also habe ich nur TX, RX, VCC und GND verbunden.
#!/bin/bash # Query Temperature&Humidity Sensor ASH2200 via USB-WDE1-2 # http://www.elv.de search for "USB-WDE1-2 # 2014-11-03/Claus Kühnel DEVICE=/dev/ttyUSB0 # USB-WDE1-2 connected to ttyUSB0 DISPLAY=/dev/ttyUSB1 # MicroView connected via RS232-to-USB to ttyUSB1 stty < $DISPLAY 9600 # MicroView initialization in SeriaDisplay.ino # USB-WDE1-2 connected? if [ "$(ls $DEVICE)" ]; then stty < $DEVICE 9600 -brkint -opost -onlcr -echo echo -n "INIT" > /dev/ttyUSB0 sleep 2 echo -n "USB-WDE1-2 connected - " stty -F $DEVICE | grep speed | cut -d ";" -f1 echo "Read Data from USB-WDE1-2 - stop by Ctrl-C" echo "Measuring periode about 3 minutes" while read line do echo $line if [ "$(echo $line | grep '$1')" ]; then TEMP="$(echo $line | grep '$1' | cut -d ";" -f4)" TEMP="$(echo $TEMP | sed -e 's/,/./g')" HUMI="$(echo $line | grep '$1' | cut -d ";" -f12)" DATE="$(date +"%D")" HOUR="$(date +"%T")" echo "D $TEMP $HUMI" echo "D $TEMP $HUMI" > $DISPLAY fi done < $DEVICE else echo "No USB-WDE1-2 connected" fi