Im Rahmen des Free2Review von boxtec.ch darf ich hier ein DigiX Board von Digistump testen. Vielen Dank an Boxtec für die tolle Möglichkeit.
Unboxing
Board in Anti-Statik-Sack…

Beschriftung auf der Rückseite teilweise unvollständig, Fingerabdrücke

2560 Mega Design

Um die vielen zusätzlichen IOs herauszuführen sind neben den Arduino-Standard-Anschlüssen noch eine parallele Reihe von Anschlüssen angebracht. (Unten Doppelreihe).
Rechts befindet sich der Audio 3.5 Asnchluss, WLAN, Micro USB, Power-Jack (Von Oben nach unten).
Features
- 99 IOs davon 12 PWM, 12 Analog Input, 2 Analog-Output
- WLAN mit eigenem Prozessor (Low-Power)
- Arduino DUE Kompatibel
- Audio Buchse
- RTC OnBoard
- 4KB (32kbit) EEPROM über I2C
- nRF24L01+ ready (Anschluss vorhanden, Modul muss gekauft werden…)
- 3.3V, 3.4-5.5V (LiPo Ready), 5V, or 6-16V input (onboard buck regulator)
- Micro SD
- 96KB SRAM
- 512KB Flash
- 1A @ 3.3V and 1A @ 5V (Wenn das Board mit mehr als 5V gespiesen wird)
und vieles mehr … http://digistump.com/wiki/digix/overview
Wichtiges für den Anfang
Treiber und Beispiele für die Arduino IDE (Mindestens 1.5): http://digistump.com/wiki/digix/tutorials/software
Das Digix Board hat im Gegensatz zum Arduino Due nur einen USB Anschluss. Dieser wird zum Programmieren, Serielle Ausgaben, und auch als USB Host verwendet. Der DUE hat zwei Anschlüsse, damit sich das Programmieren einfacher gestaltet. Daher gibt es je nach Anwendungsfall einiges zu beachten. Windows macht z.B. für jede USB Device ID an einem Port einen eigenen seriellen COM Port. Da das Divix Board nur ein USB für Programmieren und Host hat, gibt es sich je nach Bootloader-Status mit unterschiedlichen USB-DEV-ID aus. Das heisst, sobald das Board in den Programmier-Modus geht, stimmt der eingestellte Port in der Arduino IDE nicht mehr… 🙂 Dazu gibt es aber eine lange Erklärung inklusive einiger Lösungs-Vorschläge…Auf englisch und sehr umfangreich.http://digistump.com/wiki/digix/tutorials/programming
Das DigiX Board hat noch zusätzliche IOs herausgeführt. Im offiziellen Forum hat ein User mit einer PinMap begonnen. Scheint aber noch nicht ganz fertig zu sein. Ist im Wiki verlinkt. http://digistump.com/wiki/digix/tutorials/pinout
Was mich an dem Board am meisten gereizt hat und warum ich mich für diesen Review gemeldet habe
Das Board ist kompatibel mit den bekannten iTead Touch-TFTs. Und wenn diese aufgesattelt sind, sind noch weitere IOs frei zugänglich. Ausserdem hat das Board WLAN integriert. Alleine WLAN für diesen Preis ist Kauf-Argument. Da ich aktuell noch an einem CAN-Bus Projekt dran bin, hat mich der integrierte CAN-Bus natürlich auch gereizt.
RTC, SD, nRF24L01+ … spätestens da bin ich sowas von… 🙂 Und ich gebe es gerne zu; ich bin auch schon Fan des Mega 2560 von iTead mit Ethernet und RTC usw. onBoard. Da erhalte ich als Kunde fürs Geld doch schon einige coole Features die ich so nicht noch extra anschaffen muss.
Was ich speziell angeschaut habe …
CAN Bus
Als erstes hat mich der CAN Bus gereizt. Da das DigiX Board eigentlich dem Arduino DUE sehr nahe steht, habe ich zuerst nach Infos oder einer Library zum DUE gesucht. Im offiziellen Adruino Forum habe ich dann folgenden Thread gefunden: http://forum.arduino.cc/index.php?topic=131096.0
Hier wird aktiv an einer Library (Auch von den offiziellen Arduino Entwicklern) gearbeitet. Soweit ich das aber richtig verstehe, braucht es trotzdem noch zusätzliche Hardware um mit dem Bus zu sprechen (Transmitter) Ich habe bereits einen lauffähigen Arduino UNO mit CAN Bus Shield und dieses funktioniert sehr gut und ist relativ günstig. Wenn ich also für den DUE oder das DigiX noch Zusatz-Hardware brauche… naja… dann sehe ich den direkten Nutzen noch nicht so… 🙁
WLAN
Wenn das Board das erste Mal eingesteckt wird, zeigt sich ein neues WLAN mit der SSID DIGIX. Dort bekommt man per DHCP eine Adresse und kann das Board über 10.10.100.254 über ein WebInterface konfigurieren. Alles zum Thema WiFi konfigurieren findet man hier. http://digistump.com/wiki/digix/tutorials/wifi Natürlich will man je nach Programm die WiFi Settings auch aus dem Arduino Sketch programmieren. Dazu können serielle AT Kommandos gesendet werden. Für die meisten Funktionen gibt es aber in der Digifi Library schon fertige Funktionen die hier beschrieben sind. http://digistump.com/wiki/digix/tutorials/wifi/library-functions
Ich habe 4 der Beispiels-Sketchs ausprobiert, nachdem ich das Board über das Webinterface mit meinem WLAN verbunden habe. Genial gelöst: Das Board kann gleichzeitig selbst Access-Point sein UND mit einem lokalen WLAN verbunden sein.

Juhu … WLAN funktioniert auf Anhieb und der Ping zum Gateway hat auch geklappt. Frohen mutes ans zweite Beispiel, ein kleiner HTML WebServer. Soweit ich die Library verstehe, macht das WLAN Modul den TCP Server.
#include <DigiFi.h>
DigiFi wifi;
void setup()
{
Serial.begin(9600);
wifi.begin(9600);
//DigiX trick - since we are on serial over USB wait for character to be entered in serial terminal
while(!Serial.available()){
Serial.println("Enter any key to begin");
delay(1000);
}
Serial.println("Starting");
while (wifi.ready() != 1)
{
Serial.println("Error connecting to network");
delay(15000);
}
Serial.println("Connected to wifi!");
Serial.print("Server running at: ");
String address = wifi.server(8088);//sets up server and returns IP
Serial.println(address);
// wifi.close();
}
void loop()
{
if ( wifi.serverRequest()){
Serial.print("Request for: ");
Serial.println(wifi.serverRequestPath());
if(wifi.serverRequestPath()!="/")
wifi.serverResponse("404 Not Found",404);
else
wifi.serverResponse("<html><body><h1>This is a test</h1></body></html>"); //defaults to 200
}
delay(10);
}
Wie man hier am mitgelieferten Beispiel sieht wird als erstes im Setup Teil auf die serielle Arduino Konsole gewartet. Das hat mit dem Umschalten des USB Ports zu tun. (Siehe Hinweis oben) Dann wird über das wifi Objekt ein neuer TCP Server auf Port 8088 gestartet. Nach dieser Initialisierung kann man über die Weboberfläche des WLANs (Welches auf Port 80 sitzt…) sehen, dass der Controller einen TCP Server auf 8088 offen hat. Ich denke, dass hier die Digifi Library über die seriellen AT Kommandos alles schön konfiguriert und uns dadurch viel Arbeit abnimmt 🙂
Natürlich hat das Beispiel dann bei mir NICHT funktioniert. Auch nmap hat keinen offenen Port auf der Adresse gefunden. Ein Neustart des Boards hat da aber geholfen. Nach dem es sich frisch mit dem WLAN verbunden hat, klappte es auch mit dem TCP Server. Auch beim Client Beispiel hat es erst nach einem Neustart richtig funktioniert. Danach klappt es aber richtig schnell und sehr sehr einfach.
Ein weiteres cooles Beispiel ist „SetRTCbyNTP“. Es wird über eine Client UDP Verbindung die Zeit eines Internet-Zeitservers geholt und die interne RTC damit abgeglichen. Danach gibt das Board seine Zeit über den seriellen Port aus. Das Beispiel zeigt relativ einfach wie mit der RTC umzugehen ist.
nRF24L01+
Konnte ich noch nicht testen…
TFT + Touch
Wenn man(n) schon so viele IOs hat, wollte ich gleich noch das iTead 3.2 “ TFT mit integriertem Touch testen.

Die beliebte Library von Henning Karlsen (uTFT und uTouch) sind im Download des DigiX Pakets bereit enthalten. TFT aufstecken und einen der Beispiel-Sketches ausführen, funktioniert auf Anhieb. Naja, ausser bei mir… aber das war mein Fehler. Das Display muss wirklich eine SEHR gute Verbindung zum Board haben, damit alles funktioniert. Dann klappts auch mit Bild. 🙂 Einzig die Display Helligkeit finde ich sehr schwach. Aber vielleicht finde ich hier noch was dazu.
Update: Hier ist die Lösung…
Fazit
Das Board ist sehr schnell. Das Laden eines neuen Sketch, booten usw. Und WLAN zu diesem Preis ist einfach unschlagbar. Funktioniert einwandfrei und auf Anhieb. Ich denke das DigiX wäre mich der logische Nachfolger zum iTead iBoard Pro. Dazu die vielen IOs, der präzisere ADC und 2x DAC … die Möglichkeiten mit dem Board sind meiner Meinung nach sehr gross. Für den ambitionierten Arduino Bastler ein tolles Produkt.