BoardFaxHack

Link zur G-Tafel: http://g-tafel (funktioniert aktuell nur im LAN)

Dank Andreas Spende ist ein Whiteboard mit Scan/Print-Funktion bei uns eingezogen.
Mit großer Begeisterung haben wir darauf herumgemalt und alles auf dem Thermodrucker ausgegeben. Aber für unsere Zwecke ist das ziemlich sinnlos.
Besser wäre, wenn das eingescannte Bild direkt digitalisiert auf unserem Server landen würde.

image

Idee:
Wir greifen das Signal vom Bildsensor ab, nehmen den seriellen Bitstrom mit einem RaspberryPi auf und erzeugen daraus eine JPG-Datei, die wir auf dem Server speichern.

1. Erkenntnisse nach Tag 1:
Der Bildsensor ist ziemlich baugleich mit denen in Flachbettscannern. Er liegt auf der Rückseite des Whiteboards und blickt auf die Folie, die per Neonröhre beleuchtet wird.
Datenrate: 250kbps
Pixelzeile: 2048 + Randpixel
Synchronisation: Es gibt am Zeilenanfang einen Sync Puls

image

image

Der Bildsensor läuft kontinuierlich. Auch wenn gar nicht gescannt wird. D.h. wir müssen vielleicht noch das Schrittmotorsignal abgreifen, um auf die x-Verschiebung der Folie zu synchronisieren.

Hier noch ein Blick auf die Hauptplatine, an der die Signale zusammenlaufen.
image

2. Erste Versuche mit RaspberryPi
Da wir ca. 6 Megapixel bei jedem Scan aufnehmen müssen, bietet sich ein Arduino nicht an. Der hat bei weitem nicht genug Speicher.
Daher versuchen wir das mit einem RaspberryPi, der die Daten direkt auf die Platte (d.h. die Flash-Karte) schreibt.
Damit das schnell genug geht, verwenden wir das in C machen. Dazu nehmen wir die Library „wiringPi“.

Installation:
Siehe hier: http://wiringpi.com/

sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade

git clone git://git.drogon.net/wiringPi
cd wiringPi
git pull origin

cd wiringPi
./build

Simples Beispiel um den Zugriff auf GPIO zu testen:
#include
int main (void)
{
wiringPiSetup () ;
pinMode (0, OUTPUT) ;
for (;;)
{
digitalWrite (0, HIGH);
digitalWrite (0, LOW);
}
return 0 ;
}

Das sollte die maximale IO Geschwindigkeit sein.
Messung mit Scope ergab 5MHz Signal.

20141105_204922[1]

Sollte also schnell genug sein, um das 250kbps Scannersignal zu sampeln.

Hier noch die Pinbelegung des GPIO-Steckers. Die großen fett gedruckten Zahlen beziehen sich auf die Nummerierung in der PinMode()-Funktion der WiringPi Bibliothek.

p1header

Hier die Adapterplatine
Adapterplatine

Hier die ersten Versuche mit wiringPi:
1. Capture
2. Write BMP-Datei

Es funktioniert!!! – Hier mein erstes Testbild:

boardCap

Ich lese jetzt einfach brute force ohne synchronisation mit den Motorpulsen ein und es passt gerade so mit der Lauflänge des Scan-Vorgangs 🙂

Zum Ausprobieren:
Der Raspi hängt an einem eigenen Router (SSID Belkin54g) unter der IP 192.168.2.2.
Dort in einer SSH Session im Unterverzeichnis BoardFaxHac das Shellscript capLoop starten:
sudo ./capLoop

Nun wartet die SW darauf, dass der Motor anläuft und nimmt dann das Bild auf. Es wird eine .bmp Datei geschrieben, die dann vom Script mit imagemagick nach .png konvertiert wird. Von dort ist es Sache des Web-Interfaces, das Teil sinnvoll anzuzeigen.

Dokumentation (Datenblätter, Fotos, Oszillogramme etc.)
BoardFaxHack

Der Source-Code für den RaspberryPi
BoardFax(9-Sep-15)

6 Gedanken zu „BoardFaxHack

  1. Heute habe ich bereits das vorbereitete Board gesehen. Toll, dass Ihr das so schnell in Angriff genommen habt. Ein Tip noch von mir: Das jpg-Format ist für Schwarz-Weiß-Bilder und Zeichnungen nicht geeignet. Die Kompression erzeugt Schatten um die Konturen herum. Das Bild wirkt dann nicht hochwertig. Besser ist das gif-Format oder das tiff-Format, die Ihr sicher bereits vom Scannen oder Faxgeräten kennt.
    Eine gute Kompression bei gleichbleibender Qualtität und die Möglichkeit für einen Alpha-Kanal (Transparente Bilder) bringt das offen png-Format bereits mit. Mittels Imagemagic sollten alle Bildformate erreichbar sein.
    Bei der Analyse der Schaltung kann Euch das Oszilloscop, das dank Ralf jetzt wieder funktioniert, gute Dienste erweisen.

    Gutes Gelingen,
    Andreas

  2. Habs am Mittwoch selbst gesehen. Der Hack ist wirklich super. Ich bin voll begeistert und angespornt für unsere eigenen Hacks.
    Ihr seit ein Top-Team und ich freue mich schon auf Euer nächstes Projekt.
    Unglaublich, dass das so gut funktioniert auvh ohne abtasten der Schrittmotorsignale.
    Wahrscheinlich erkennen wir die Verzerrungen nicht. Ihr könnt ja mal ein Testbild „zeichnen“ und einscannen. Vielleicht leiht Euch ein Lehrer ja mal ein Tafel-Geodreieck und einen Tafelzirkel, um das Bild einzumessen.
    Mal sehen, was die Jury der First-Lego-League dazu sagt. Aber für mich habt Ihr schon gewonnen.
    Thumbs up!!!!
    Andreas

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.