Donnerstag, 27. Februar 2014

5. Überraschung: PL7 und PL9 lassen sich nicht ansprechen

Bei PL7 (I2C CTLAB) und PL9 (BTN) handelt es sich um Anschlüsse die nur auf dem TFT Maximite verfügbar sind.

Für was PL9 gut sein soll erschließt sich mir nicht so ganz, wozu hat denn das Teil touch-Bedienung. PL7 soll neben dem I2C-Bus auch noch 4 I/O-Leitungen und 5V bieten. Gerade diese schmale, schlanke Schnittstelle war für mich sehr attraktiv um z.B. mal schnell irgendwas über I2C anzuklemmen.

Nachdem ich auf das Gehäuse warten musste wollte ich mal eben schnell PL7 austesten. Die Frage war nur wie. Im Manual war PL7 nicht erwähnt, ebenso wenig PL9. Zu Verwendung von Letzterem gab es schon mehrere posts in unterschiedlichen Foren, allerdings alle ohne Ergebnis. Zu PL7 fand sich dagegen so gut wie nichts. Na gut, kommt ja von c't, sollte also irgendwie funktionieren. Außerdem gibt es im Zeitschriften-Artikel ein Bild, das mit an Sicherheit grenzender Wahrscheinlichkeit die Verwendung dieser Schnittstelle zeigt (c't Hardware Hacks 4/2013, Seite 119 oben rechts). Also muss es irgendwie funktionieren. Allerdings auch hier kein Ton zu dem "Wie".

Ein Blick in den Schaltplan verrät nur, dass die Leitungen PIN_D0..D3 für PL4 verwendet werden (für PL9 sind es PIN_D8..D12). Hilft erst mal nicht. Allerdings meinte ich in der MMBasic-Anleitung wäre mir irgendwo ein Pin D0 über den Weg gelaufen.

So war es dann auch. Der Arduino-Connector vom Color Maximite hat D0..D13 und A0..A5. Allerdings gibt es diesen Anschluss nicht auf dem TFT Maximite. Sehr verdächtig! Da wird doch wohl nicht einer die Pins deaktiviert haben, ...?!?!?!?!

Um das zu klären habe ich mir den MMBasic-Quellcode bestellt. Das geht sehr unkompliziert und kostenlos. Einfach das Mini-Formular auf http://www.mmbasic.com/source.html ausfüllen und ein paar Stunden später bekommt man eine e-mail mit dem Code. Warum der Code nur auf diese Art und Weise verfügbar ist erklärt Geoff auf dieser Seite.

Nach kurzer Recherche wurde ich prompt fündig: Der Color Maximite hat 40 Pins, der TFT Maximite dagegen nur 20. Zumindest laut Software.

Letzte Zweifel hat dann eine Mail von Geoff zerstreut. Ich hatte ihn gefragt, ob er davon wisse, dass Carsten Meyer einige der Arduino-Pins verwendet hat und ob es reichen würde die Variable NBRPINS von 20 auf 40 zu setzen um die Pins normal nutzen zu können. Als Antwort kam prompt, dass er davon nichts wisse. Allerdings müsse man beim neukompilieren auch noch die Tabelle PinDef[] anpassen, dann würde es aber funktionieren.

Sch...ade!!! Da gab es wohl ein Kommunikations-Problem!

Nachdem Geoff in nächster Zeit kein update von MMBasic plant und das Problem sowieso nur den TFT Maximite betrifft bleibt nur zu hoffen, dass Carsten Meyer demnächst was baut. Für die blockierende touch-Geschichte (siehe http://raketenbuggy.blogspot.com/2014/02/4-uberraschung-touch-objekte-konnen-tft.html) ist sowieso ein update fällig!

4. Überraschung: touch-Objekte können TFT Maximite blockieren

Von dieser Geschichte habe ich per Zufall von einem anderen TFT Maximite Besitzer erfahren.

Wenn man einen touch-Button berührt und nicht loslässt wird solange das komplette Programm angehalten bis man den Button wieder loslässt. Slider sind davon nicht betroffen. Eine genauere Beschreibung findet sich hier:

http://www.heise.de/forum/c-t-Hacks/Heft-Projekte/Artikelforen-Heft-4-2013/Color-Maximite-2/Touchpaneel-stoppt-Programm/posting-467608/show/

Ich hatte die Sache zwar bemerkt (z.B. in dem Demo-Programm AnInstr.bas), ihr aber keine Bedeutung geschenkt, da sie für mich nebensächlich war.

Mittwoch, 26. Februar 2014

Ein passendes Gehäuse finden


Nachdem der TFT Maximite als blanke Platine geliefert wird, stand für mich von Anfang an fest, dass das Gerät möglichst schnell in ein adäquates Gehäuse gesetzt werden muss. Nicht nur zum Schutz der Schaltung sondern auch zur besseren Handhabung.

Die erste Frage, die sich dabei stellt ist: Kunststoff oder Metall?

Ich habe mich sehr schnell für ein Metallgehäuse entschieden. Kunststoff lässt sich zwar leichter bearbeiten, verkratzt aber auch leichter. Weiterhin bietet Metall auch eine elektrische Abschirmung. Und außerdem sieht es besser aus.

Da das Gehäuse nicht wesentlich größer als der TFT Maximite sein sollte gestaltete sich die Suche entsprechend schwierig. In die enger Wahl kamen letztendlich:
  • KOH-Profilhalbschalengehäuse von fischer
  • Euroflachgehäuse EFG 1 von proMa bzw. gie-tec
Leider gab es für die von mir gewünschte Kombination von fischer-Gehäusehalbschalen keinen passenden Deckelsatz, so dass ich letztendlich das EFG 1 genommen habe.

Euro-Flachgehäuse EFG 1 von proMa bzw. gie-tec

Rückblickend war das die richtige Entscheidung, da das fischer-Gehäuse einiges dicker und damit nicht nur schwerer und klobiger sondern auch schwieriger zu bearbeiten gewesen wäre.

Dienstag, 25. Februar 2014

3. Überraschung: Pin 20 funktioniert nicht

Der TFT Maximite verfügt wie alle Maximites über 20 MMBASIC-Pins die relativ frei als Ein- und Ausgänge programmiert werden können. Will man z.B. COM2 nutzen ist Pin19 RX und Pin20 TX, zumindest in der Theorie.

RX funktionierte problemlos, aber aus TX kam nichts raus. Eine Recherche im Netz brachte es dann an den Tag: Die Leiterplatte hat einen Fehler, MMBASIC-Pin20 ist am PIC auf Pin 11 statt auf Pin 17 gelegt.

Nachdem sicher war, dass es sich dabei wirklich um einen Fehler auf der Leiterkarte handelt habe ich beschlossen das Problem mittels hardwiring zu lösen. Dazu wird die Leiterbahn unterbrochen und eine neue Verbindung zum richtigen Anschluss am PIC gelegt. Hört sich einfach an, ist ohne das richtige Werkzeug aber nur sehr schwer machbar.

Man benötigt:
  • einen SMD-Lötkolben mit dünner Spitze (Bleistiftspitze)
  • SMD-Lötzinn
  • evtl. etwas Flussmittel
  • dünnen Draht (Fädeldraht o.Ä., dünner als 0,5mm)
  • Skalpell o.Ä. zum durchtrennen der Leiterbahn
  • Pinzette mit feinen Spitzen (am besten gebogen)
  • evtl. Lupe oder Mikroskop
  • eine ruhige Hand
  • einen Whisky oder ein Bier (für hinterher)
Als erstes identifiziert man die richtige Leiterbahn und den richtigen Anschluss am PIC.

Die fehlerhafte Leiterbahn und die zugehörigen Beinchen am PIC.

Diese Leiterbahn muss nun irgendwo unterbrochen (Skalpell) und mit dem richtigen Pin neu verbunden werden (Fädeldraht).

Ich habe die Bahn auf dem geraden Stück direkt nach Pin 11 unterbrochen und eine kurze Brücke zu Pin 17 gelegt.

Leiterbahn direkt nach PIC aufgetrennt und neue Brücke eingelötet

Damit funktioniert jetzt auch die TX-Leitung von COM2 bzw. Pin20.

Zum Wohl!

Samstag, 15. Februar 2014

2. Überraschung: USB-Verbindung funktioniert nicht

Der TFT Maximite lässt sich auch über eine serielle Konsole steuern. Wie das unter windows und mac osx geht dazu findet sich haufenweise Material im Netz. Zu linux hatte ich damals nichts gefunden. Und warum? Weil's so einfach ist??? Ja, das ist wirklich so!!! Auch ältere Distributionen haben bereits alles Nötige an Board.

Der kernel muss den Treiber ''cdc-acm'' als Modul oder statisch enthalten (ist bei praktisch allen mitgelieferten Standard-kernels der Fall). Ansonsten braucht man noch ein Terminal-Programm seiner Wahl. Ich verwende ''minicom''.

Alles was man dann tun muss ist den Maximite mit einem USB-Kabel mit dem Rechner zu verbinden. Es wird ein neues Gerät erzeugt, ''/dev/ttyACM0''. Bevor man versucht darauf zuzugreifen sollte man sicherstellen, dass man über die entsprechenden Rechte (lesen und schreiben) verfügt, sprich, zur richtigen Gruppe gehört. Dann startet man das Terminal-Programm, wählt als Anschluss ''/dev/ttyACM0'' und als Parameter 115200 Baud, 8 Bits, keine Parity und 1 Stopbit. Für minicom reicht z.B. folgende Zeile:

minicom -D /dev/ttyACM0 -b 115200

Und los geht’s. Zumindest in der Theorie. Der Kernel hat zwar das device angelegt, ich hatte auch die richtigen Rechte, bekam aber trotzdem keine Verbindung mit dem Maximite.

Meine erste Befürchtung, der VIA-Chipsatz meines Rechners, der mich schon die letzten 10 Jahre ständig geärgert hat (ich sage nur sandisk USB-Stick), würde auch diesmal für Datenmüll sorgen hat sich zum Glück nicht bestätigt.

Es liegt an der Spannungsversorgung. Wenn am Maximite zu wenig Spannung ankommt stellt sich der PIC in Sachen Datenübertagung taub. Ansonsten funktioniert er aber tadellos. Da der TFT Maximite wegen seines Displays relativ viel Strom zieht (im Durchschnitt knapp 300 mA) reicht es wenn:
  • der Rechner zu wenig Strom liefert
  • das USB-Kabel zu schlecht ist
  • das USB-Kabel zu lang / verlängert ist
Dadurch kann die Spannung am Maximite soweit absinken, dass es zu Problemen kommt. Man kann das auch leicht nachmessen, z.B. an PL6 Pin 23. Wenn dort statt 5V weniger als 4,6V anliegen gibt’s Probleme. Dann hat man folgende Möglichkeiten:
  • anderen USB Port am Rechner verwenden (hilft selten)
  • anderes / kürzeres / besseres USB-Kabel verwenden (hilft meistens)
  • aktiven (!) USB-Hub dazwischen schalten (muss nicht zwangsläufig helfen, kann auch zu Timing-Probelmen führen)
  • 5V über PL4 einspeisen (hilft immer, vorausgesetzt die Spannungsquelle kann genügend Strom liefern)

Dienstag, 11. Februar 2014

Erstinbetriebnahme

Erstinbetriebnahme, das hört sich recht sperrig an (schönes Beamtendeutsch) ist aber notwendig, sonst funktioniert später nicht alles so wie es soll.

Die Reihenfolge der einzelnen Schritte ist wichtig! Die Kalibrierung des Touchscreens z.B. funktioniert nur nachdem man Datum und Uhrzeit gesetzt hat.

  1. TFT Maximite soweit wie gewünscht zusammen löten.
  2. Batterie einlegen.
  3. PS2-Tastatur einstecken.
  4. USB-Kabel einstecken oder Strom an PL4 anlegen.
  5. Startbildschirm erscheint.
  6. Datum und Uhrzeit setzen:
    DATE$="TT-MM-JJJJ"
    TIME$="hh:mm:ss"
  7. Tastatur auf deutsches Layout stellen:
    config keyboard gr
  8. Touchscreen kalibrieren
    touch calibrate
  9. fertig
PS: Ja, das Datum wird tatsächlich im Format "TT-MM-JJJJ" eingegeben, auch wenn im Netz genügend andere Varianten kursieren. Wer's nicht glaubt kann gerne mal die Uhrzeit auf "23:59:50" o.Ä. setzen und schauen welche Zahl sich ändert.

Sonntag, 9. Februar 2014

Der Bausatz : Zusammenbau und die 1. Überraschung

„Was kommt denn jetzt wohin?“ Dies Frage bleibt erst mal leider genauso unbeantwortet wie: „Was davon braucht man wirklich, was kann später nachrüsten und was kann man sich getrost sparen?“

Nachdem sich weder bei segor noch bei c't (!) noch sonst irgendwo was brauchbares findet (Geoff verweist in Sachen TFT Maximite auch nur auf die c't-Seiten weil er das Teil nicht verbrochen hat) habe ich mir die Informationen selbst zusammen geklaubt. Für Ungeduldige gibt’s unter der Tabelle die Zusammenfassung.

TeilBeschreibungPlatzStatusBemerkung
B1Batteriehalterrechts obennotwendigfür die RTC
BZ1Buzzer / Summerunter Batteriehaltersehr nützlichweglassen spart keinen Platz
XTAL232,768 kHz Quarzganz unten rechtsabsolut notwendigohne Quarz funktioniert die RTC nicht
LED1SD-Zugriff, rotganz unten linksnützlichmuss Richtung Display schauen
LED2Power, grünganz unten linksnützlichmuss Richtung Display schauen
JP1Boot Loaderneben PL10sehr nützlich-
PL1PS/2 Tastaturlinks obensehr nützlichkann man weglassen, wenn man den Maxi nur über USB ansteuern will
PL2USBlinks Mittesehr nützlichspätestens zum Firmwareupdate notwendig
PL3SD-Kartelinks untensehr nützlich-
PL45V Poweroben linkssehr nützlichkann man weglassen wenn man den Maxi nur über USB betreibt
PL5ICSPüber Potientbehrlichbraucht man eigentlich nur wenn man den bootloader geschrottet hat
PL6MMBASIC Pinsoben Mittesehr nützlich-
PL7CTLABunten Mittenützlich-
PL8PWM outneben PL6nützlich-
PL9Switchesneben BuzzerentbehrlichWie spricht man die überhaupt an?
PL10Displayüber Quarzschon vorhanden-
PL11Resetneben PL4nützlich-
PL12Unbekanntunter SD-KarteentbehrlichWas ist das für ein Stecker?
JP1Boot Loaderneben PL10sehr nützlichspätestens zum Firmwareupdate


Minimalstbestückung A: Quarz, Batterie, Poti, PS/2, und PL4
Minimalstbestückung B: Quarz, Batterie, Poti, und USB

Minimalbestückung: Quarz, Batterie, Poti, Buzzer, PL1, PL2, PL3, PL4, PL6

Normalbestückung: Quarz, Batterie, Poti, Buzzer, LED1, LED2 PL1, PL2, PL3, PL4, PL6, PL7, PL8, PL11, JP1

Ich habe aktuell den Stand "Minimalbestückung"

1. Überraschung: Was bitte ist PL12?

Dieser Anschluss befindet sich direkt unter dem SD-Karten-Slot und ist nach dessen Auflöten nicht mehr zugänglich. Und wieso taucht er weder im Schaltplan noch im Bestückungsplan auf, dafür aber auf dem Silk-Layer? Für was ist der gut? Braucht man den?

Verfolgt man die Leiterbahnen stellt man fest, dass auf dem Anschluss die Leitungen von PS/2, USB und SD-Slot liegen.


Damit könnte man sich also die 3 Buchsen auf der Platine sparen und sie per Kabel an eine günstigere Stelle legen.

Schade, dass so etwas nicht offiziell dokumentiert ist.

Der Bausatz : bestellen, warten, auspacken

Die Bestellung bei segor verlief soweit ganz unspektakulär und problemlos, per Vorkasse und DHL-Paket. Nach ein paar Tagen war dann das Paket da.

Offensichtlich hat DHL bzw. die Post immer noch Probleme mit Sendungen, die die nicht der Standardgröße entsprechen:


Zum Glück ist segor nicht erst seit gestern im Geschäft und kennt seine Pappenheimer. Das Paket war locker gepackt und allein die halbe Länge wurde für Polsterung genutzt. Weder der TFT Maximite noch der Rest der Bestellung (ich hatte noch ein bisschen Kleinkram mitbestellt) waren beschädigt.

So, was bekommt man denn jetzt genau, wenn man sich den TFT Maximite 5“ Touch bestellt?

 Eine Tüte mit einem rosa Päckchen und einer Schachtel voll Bauteile.

In der Schachtel findet man alle bedrahteten Bauteile (die SMD-Bauteile sind alle schon aufgelötet), Steckverbinder und die passenden Anschlusskabel.

Gerade das Beilegen der passenden Anschlusskabel ist sehr löblich da man sonst immer Probleme hat die exakt passenden „Molex-Stecker“ (Unwort des Jahrhunderts!!!) zu bekommen und stattdessen irgendwas hinfrickeln muss.
Ebenso genial ist die Idee, das Display nicht mit Doppelseitigem-Klebeband fest mit der Platine zu verbinden sondern dafür Klett-Streifen zu verwenden, so dass man nachträglich noch problemlos an die Platine kommt um z.B. einen Anschluss nachzurüsten.

In dem rosa Päckchen befinden sich das Display ...

… und die Platine.


Ein Gehäuse gibt es nicht.

Samstag, 8. Februar 2014

Wie es dazu kam

Als ich in der letzten c't Hardware Hacks (4/2013) über den BASIC-Touchpanel-Computer gestolpert bin dachte ich zuerst, das wäre ein Scherz. BASIC und Touch, das passte irgendwie so überhaupt nicht zusammen. Andererseits gab es früher ja den Lichtgriffel oder lightpen als eines der ersten Eingabegeräte überhaupt (noch lange vor der Maus). Das hat aus einem Röhrenmonitor ja so eine Art touchdisplay gemacht. Hm, das könnte ja doch ernst gemeint sein.

Als ich dann beim überfliegen des Artikels aber was von PIC-Prozessor und 3% Rechenzeit während Grafikausgabe gesehen habe war für mich alles klar: Wenn so ein schwachbrüstiger PIC auch noch ein Grafikdisplay steuern muss bleibt noch 3% Rechenzeit übrig, ganz wie früher. Hinzu kommt, dass BASIC von Haus aus sehr langsam ist, weil es als Interpreter arbeitet. Also kann man das Teil vergessen, oder?

Nein kann man nicht. Bei genauerem Lesen stellte ich fest, dass der PIC für die Grafikausgabe nur 3% Rechenzeit braucht. Die restlichen 97% bleiben für das Programm übrig! Und den Interpreter hatte der Autor selbst geschrieben. Langsam begann mich die Sache doch zu interessieren.

Was soll ich sagen. Nachdem ich den Artikel komplett gelesen und noch etwas im Netz recherchiert hatte stand fest: Das Teil ist für mich die ideale Alternative zu einem Arduino weil es gleich ein Display (sogar in Farbe!!!) mitbringt und einfach zu programmieren ist. Hinzu kam, dass es als Bausatz angeboten werden sollte, was einem die u.U. schwierige und langwierige Bauteilbeschaffung ersparen aber trotzdem den Bastelspaß erhalten würde.

TFT Maximite - Zusammenbau-Doku

Nachdem es im Netz keine vernünftige Anleitung zum Zusammenbau des TFT Maximite gibt (auch der Artikel in der c't Hardware Hacks ist in der Richtung sehr sparsam) habe ich mich entschlossen meinen Zusammenbau zu dokumentieren und dem Rest der Welt zur Verfügung zu stellen.

Der geübte Bastler mag darüber lachen und es als unnötig abtun. So schwer ist der Zusammenbau schließlich nicht. Aber wenn ich mich in die Rolle eines Neueinsteigers mit wenig Erfahrung hineindenke käme ich mir ganz schön alleine gelassen vor. Und außerdem, wir haben alle klein und waren froh für jeden noch so kleinen hilfreichen Tipp.