Montag, 14. April 2014

Der Gehäuseeinbau – Teil 1 : Ober und Unterschale

Als erstes wurden die Löcher in die Unterschale gebohrt und soweit angesenkt, dass die Schraubenköpfe außen nicht überstehen. Dann wurden die Abstandshalter (Messingröhrchen) gesägt, auf Maß gefeilt und zusammen mit Unterlegscheiben auf die Schrauben gefädelt. Die Platine kommt zum Schluss.
Unterschale mit Schrauben und Abstandshaltern

Unterschale mit eingebauter Platinen

Blick von der Seite: Genügend Platz nach unten für Stecker und Kabel.

In die Oberschale kommt der Ausschnitt für das Display.
Gehäuseoberschale mit Displayausschnitt

Baut man Ober- und Unterschale zusammen (aufeinander legen reicht fürs Erste) sieht man gleich, ob man genau gearbeitet hat, oder ob man sich vermessen, verbohrt, versägt, verfeilt oder sonst wo nicht aufgepasst hat.
Gehäuse probehalber zusammengesetzt. Der schräge Winkel täuscht, der Displayausschnitt passt genau.

Sonntag, 13. April 2014

Gehäuse-Einbau planen – Teil 3

Die beste Planung nützt nichts wenn man sie nicht umsetzen kann, oder anders ausgedrückt: Wie bekommt man die Maße auf das Werkstück bzw. die Löcher an die richtige Stelle?

Bei den Gehäuseschalen kann man sich an den Kanten bzw. an den Linien auf der Außenseite orientieren. Die Deckel sind aber sehr ungenau geschnitten, krumm und mit unterschiedlichem Übermaß. Auch die Löcher taugen nicht als Orientierungspunkte, die Ränder sind zu rau und von der Lochmitte aus messen ist ziemlich schwierig.

Die Lösung, wenn man kein vernünftiges Werkzeug wie z.B. einen Höhenanreißer hat: Schablonen

Die CAD-Zeichnungen im Maßstab 1:1 ausdrucken, ausschneiden, anlegen, anzeichen, bearbeiten und fertig.

Ganz so einfach war es dann doch nicht. Das Problem war die Zeichnungen wirklich 1:1 auf das Papier zu bringen. LibreCAD fehlt eine entsprechende Funktion, Ausdrucke und Exporte sind immer auf die jeweilige Blattgröße skaliert. Exportiert man die Zeichnung als SVG kann man sie hinterher bequem z.B. mit Inkscape passend skalieren.

Das Ausschneiden mit dem Skalpell hat dagegen problemlos geklappt.

Die fertigen Schablonen: oben für die Enddeckel unten für die Gehäuseoberschale (Displayausschnitt) und -Unterschale (Bohrungen für die Platinenbefestigung).

Die Schablone auf der Gehäuseoberschale sauber ausgerichtet: Hier kommt der Ausschnitt für das Display hin. Die Löcher außen herum kommen in die Unterschale.

Mittwoch, 9. April 2014

Gehäuse-Einbau planen - Teil 2

Mit einem Gehäuse und einem fast fertig aufgebauten TFT Maximite kann man endlich vernünftig planen. Also Messschieber, Taschenrechner, Papier und Bleistift gesucht und die benötigten Maße ermittelt.
Hierbei zeigte sich auch der einzige Kritikpunkt am proMa-Gehäuse: Die Enddeckel passen nicht richtig zum Gehäusequerschnitt. Sie sind zu groß und stehen über.

Enddeckel sind zu groß und stehen über

Aber das lässt sich später mit einer Feile korrigieren.
Aus den gewonnenen Daten habe ich ein CAD-Modell gebaut. So kann man nicht nur die einzelnen Teile so lange zueinander verschieben bis alles passt und es einem gefällt sondern bekommt am Ende (wenn man das richtige Programm verwendet) auch noch eine hübsche Zeichnung mit den Maßen, die man wirklich braucht.
Die Anordnung der Teile hat sich größtenteils von selbst ergeben:
  • Das Gehäuse ist dick genug, so dass ich das Display nicht komplett nach außen setzen muss sondern von innen mit dem Rand am Gehäuse anliegen lassen kann.
  • Da ich auf der Gehäuseoberseite keine Schrauben haben wollte musste die Platine von hinten in der Unterschale befestigt werden.
  • SD-Kartenslot, PS/2- und USB-Stecker gehen nach rechts raus, also muss die Platine im Gehäuse rechts angeordnet werden.
  • Bleibt noch die vertikale Ausrichtung der Platine: Mittig, oben oder unten? Um später unterhalb des Display noch Tasten anordnen zu können (PL9 lässt grüßen) habe ich die Platine ganz noch oben geschoben.
  • Eigentlich wollte ich die Anschlüsse für PL6 (MMBASIC Pins) und später auch für PL7 (ct Lab) nach hinten herausführen. Da dort das Gehäuse aber bis zu 7,5mm stark ist müssen sie seitlich angeordnet werden, und da bleibt nur noch links übrig.
Als Zeichnung sieht das dann so aus:
Blick von oben: Schwarz ist das Gehäuse, grün die Platine und blau die sichtbare Fläche vom 5“-Display.

Blick von rechts: Schwarz ist das Gehäuse, grün die Platine und das Display, gelb die Schrauben und pink die notwendigen Ausschnitte für SD-Karte, USB-Anschluss und PS/2-Tastatur (v.l.n.r.).

Blick von links: Schwarz ist das Gehäuse, blau die Buchse für die MMBasic-Pins und pink die notwendigen Ausschnitte und Bohrungen (die Schrauben der Platine sind weit genug weg und stören hier nicht).
Weitere Durchbrüche für Strom, ... können erst geplant werden, wenn ich weiß, wieviel Platz noch wo übrig ist und wo welche Kabel im Weg sind. Aber gerade Letztere lassen sich schlecht simulieren.
Also wird das Ganze erst mal soweit gebaut wie geplant, dann sehen wir weiter.

Montag, 24. März 2014

Gehäuse-Einbau planen – Teil 1

Als Anschlüsse sollen herausgeführt werden:
  • PL4 (5V Power) als 5,5mm/2,1mm DC-Hohlbuchse
  • PL6 (MMBASIC Pins) als Sub-D 25f 
  • PL8 (PWM out) als 3,5mm stereo Klinkenbuchse
  • LED1 (SD-Zugriff, rot) und LED2 (Power, grün) versenkt eingebaut in Frontplatte
  • PL1 (PS/2 Tastatur), PL2 (USB), PL3 (SD-Karte) und BZ (Summer) als Gehäusedurchbrüche
Folgende Erweiterungen sollen noch nachrüstbar sein:
  • PL7 (ct Lab) als Sub-D 9f
  • PL11 (Reset) als Kurzhubtaster
  • JP1 (Bootloader) als verdeckter Taster (auch Kurzhub-)
  • evtl. Akku für netzunabhängigen Betrieb
Und natürlich muss der TFT auch eine passende Öffnung bekommen.

Das erste Problem war die richtigen / interessanten Abmessungen zu finden, und zwar sowohl vom Maximite als auch vom Gehäuse. Vom TFT Maximite gibt es zwar auf dem github eine Art Maßbild (TFT MM Dimensions.pdf), allerdings hat diese Zeichung zwei gravierende Mängel:
  1. Es ist nur das 4.3'' Display eingezeichnet, das 5'' Display wird überhaupt nicht erwähnt.
  2. Es fehlen einige wichtige Abmessungen (z.B. größte Höhe aller Bauteile, sehr wichtig sonst passt das Gehäuse nicht).
Beim Gehäuse sieht es ähnlich schlecht aus. Von proMa findet sich überhaupt nichts Nützliches (keine Angabe zu Innenmaßen in irgendeiner Form). Von gie-tec gibt es immerhin eine Beschreibung des Profils mit Zeichnung. Dummerweise fehlen auch hier wichtige Maße (wie hoch ein Gehäuse aus zwei Profilen aufeinander ist muss man sich zusammenrechnen, die Höhe der Stege auf der Innenseite fehlt komplett, …). Prinzipiell könnte man die Zeichnung ausmessen, allerdings müsste sie dafür eine gewisse Mindestqualität besitzen.

Was bleibt als Lösung: Gehäuse und TFT Maximite (soweit noch nicht vorhanden) bestellen, die Maße „am lebenden Objekt studieren“ bzw. ausmessen und selbst eine Zeichnung erstellen.

Samstag, 15. März 2014

Total Recompile - Der Fehlerteufel schlägt zu

Leider war in meinem Post vom 02.03.14 ein Fehler.

In der Datei "IOPorts - TFT_Maximite.h" war der Befehl "#define FINALBUILD" auskommentiert. Dadurch waren MMBasic Pin 5 und 6 trotzdem nicht benutzbar. Da ich die Firmware streng nach meiner selbst geschriebenen Anleitung gebaut hatte, war der Fehler auch dort enthalten.

Dummerweise hatte ich die Tests dann mit einer anderen Version durchgeführt, die zusätzliche Änderungen enthielt, die ich nicht veröffentlichen wollte. Dort hatte ich die Auskommentierung der entsprechenden Zeile entfernt, d.h. alles funktionierte einwandfrei.

Der Post vom 02.03.14 ist jetzt korrigiert und eine neue (diesmal hoffentlich wirklich fehlerfreie) Firmware ist im Post vom 10.03.14 verlinkt.

Tut mir leid für den Fehler. Ich hoffe, ich habe nicht zuviel Verwirrung gestiftet.

Montag, 10. März 2014

Total Recompile - Das Ergebnis: TFT_Maximite_44Brb.hex

Nachdem mich mehrere Leute danach gefragt haben und Geoff sein Einverständnis gegeben hat hier nun auch die fertige, selbst gebaute Firmware.

Änderungen gegenüber MMBasic Version 4.4B:
  • PL7 und PL9 werden unterstützt und sind benutzbar
  • die neuesten Touch-Funktionen sind eingearbeitet
Haftungsausschluss: Bei dieser Firmware handelt es sich nicht um einen offiziellen build sondern um eine selbst gebaute Version, die nach bestem Wissen und Gewissen erzeugt wurde. Ich übernehme keinerlei Garantie oder sonstige Gewährleistung. Jede Verwendung erfolgt auf eigenes Risiko. Die Bereitstellung dieser Version wurde von Geoff Graham freigegeben.


Downlaod: TFT_Maximite_44Brb.zip

Sonntag, 2. März 2014

Total Recompile - MMBasic neu bauen

Nachdem auch von Carsten Meyer kein baldiges update (u.a. wegen der touch-Geschichte) zu erwarten ist habe ich mich entschlossen die Firmware mit allen nötigen und nützlichen Änderung selbst zu bauen sprich: total recompile

Das hört sich viel komplizierter an, als es ist. Hat man erst einmal die nötigen Tools installiert ist das Erzeugen einer hex-Datei sehr einfach. Auch das Hochladen der Datei ist unproblematisch.

Vorarbeiten

Eine der Grundvoraussetzungen, den MMBasic-Quelltext, hatte ich bereits. Alles was noch dazu fehlte war ein compiler und eine Möglichkeit die FW auf den TFT Maximite zu bekommen.

Leider gibt es den compiler nicht einzeln, man muss sich das komplette MPLAB-IDE herunter laden. Der Empfehlung aus dem c't Hardware Hacks Artikel folgend habe ich mir die Version 8.9 aus dem Archiv von microchip besorgt. Das Archiv findet man entweder über die Suchmaschine seines Vertrauens oder hier:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2115
Die letzte Version der 8.9er IDE ist die 8.92:
http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_IDE_8_92.zip
Bevor man sich das aber installiert sollte man sich über folgende Dinge klar sein:
  1. Die Installation braucht 1,2 GB Plattenplatz!!!
  2. Das IDE verewigt sich an allen möglichen Orten im Betriebssystem und ist nur äußerst schwer wieder vollständig zu entfernen.
Eine Linux-Version gibt es nicht. Allerdings habe ich das MPLAB-IDE mit wine (Version 1.6.2-7 unter Debian jessie) zum Laufen bekommen. So ganz reibungslos ist die Installation aber trotzdem nicht verlaufen, wobei der Fehler meiner Meinung nach nicht bei wine liegt.

Es brauchte 6 Anläufe bis endlich ein komplettes MPLAB installiert war. Zwischendurch gab es immer wieder Abbrüche und kryptische Fehlermeldung. Letztendlich habe ich alles komplett deinstalliert und eine neue "custom installation" durchgeführt. Dabei habe ich bemerkt, dass MPLAB sich selbst nicht rückstandsfrei entfernt, und dass selbst bei manueller Nacharbeit das Setup mir immer noch die exakte Liste der vorher gewählten Komponenten präsentiert. Man sollte sich also gut überlegen ob und wohin man das installiert, schon allein wegen des enormen Platzbedarfs. Wine oder eine virtuelle Maschinen bieten sich hier an, da man beides sehr einfach wieder rückstandsfrei entfernen kann.

Welche Komponenten man braucht hängt davon ab wie man letztendlich das fertige Kompilat übertragen will / kann. Wenn man so wie ich den bereits installierten Bootloader nutzen kann genügt folgende Auswahl:

Wichtig sind die Häkchen bei "32-bit MCU", "MPLAB C32 Suite" und "MPLAB Sim". Wenn ich "AN851 Bootloader" und "MPLAB ICD 3" weg gelassen habe gab es bei der Installation kryptische Fehlermeldungen.

Als nächstes muss man den MMBasic Quellcode in ein geeignetes Verzeichnis kopieren. Der Einfachheit halber habe ich alles direkt auf C: unter C:\MMBasicSource kopiert.

Dann wird es interessant. Man startet MPLAB und lädt das Projekt TFT_Maximite.mcp (zu finden unter MMBasicSource\Maximite\MPLAB\). Nachdem man sich vergewissert hat, dass unter "Configure" --> "Select Device" der richtige Prozessor (PIC32MX695F512L) eingestellt und unter "Project" --> "Build Configuration" --> "Release" ausgewählt ist kann man mit "Project" --> "Build All" den Kompiliervorgang starten.

Wenn alles erfolgreich durchgelaufen ist (dauert je nach Computer Sekunden bis Minuten) findet man unter MMBasicSource\Maximite\Output u.a. die Datei "TFT_Maximite.hex". Diese Datei ist nicht identisch mit "TFT_Maximite_44b1.hex" vom github sondern dürfte in etwa dem entsprechen, mit dem der TFT Maximite ausgeliefert wurde.

Um letzte Pannen auszuschließen kann man die frisch erzeugte hex-Datei auf den TFT Maximite laden (s.u.) und versuchen ob er damit läuft. Nicht erschrecken, das Tastaturlayout ist dann erst mal wieder auf "us" eingestellt. Sollte der Maxi nicht starten kann man trotzdem noch die letzte Version vom github "TFT_Maximite_44b1.hex") hochladen, dann läuft wieder alles.

Angeblich ist es unmöglich den TFT Maximite unter Verwendung des bootloader zu bricken (die SW so zu zerschießen, dass man gar nichts mehr mit dem Teil anfangen kann).

Quelltext anpassen und neu kompilieren

Ist man in der Lage funktionierende hex-Dateien zu erzeugen kann man sich daran machen den Quellcode anzupassen.

Touch.c und Touch.h

Carsten Meyer hat auf github eine aktuellere Version der touch-Funktionen abgelegt. Wenn man diese verwenden möchte muss man beide Dateien nach MMBasicSource/Maximite/MMSource kopieren. Da diese aber nicht mehr 100% mit den alten Funktionen kompatibel sind muss man im gleichen Verzeichnis aus noch die Datei "External.c" anpassen. Es ist eine Funktion umbenannt worden, d.h. man muss "item_init" durch "item_active" erstzen.

IOPorts - TFT_Maximite.h

Um die Anschlüsse PL7 und PL9 nutzen zu können muss man diese Datei (zu finden unter MMBasicSource/Maximite/MMSource/IOPorts) anpassen.

Als erstes sollte man im Kopf den Dateinamen ändern:

Das ist zwar nicht zwingend notwendig schadet aber in keinem Fall.

Dann muss weiter unten eine Zeile eingefügt werden:

Macht man das nicht kann man später Pin5 und Pin6 nicht verwenden.

Um mehr als 20 I/O-Pins verwenden zu können muss die entsprechende Variable geändert werden:

Grundsätzlich könnte man bis zu 40 Pins verwenden. Da die analogen Pins auf dem TFT Maximite aber überhaupt nicht verwendet werden kann man sich die letzten 6 Pins sparen.

Jetzt muss man nur noch die Pins selbst definieren:

Diese Zeilen kann man aus IOPorts – ColourMM.h kopieren. Damit ist auch festgelegt, wie man die entsprechenden Pins verwenden kann.

Hat mal alle Änderungen gespeichert kann man mit "Project" --> "Make" (oder wer auf Nummer sicher gehen will mit "Build All" eine hex-Datei erzeugen.

hochladen und testen

Wie man auf einen TFT Maximite eine neue Firmware lädt findet man auf der Seite des Color Maximite:
http://geoffg.net/maximite.html

Unter der Überschift "MMBasic Updates" gibt es ein zip-file mit der aktuellst Firmware. Darin enthalten ist ein pdf (Loading New Firmware.pdf) welches die Prozedur beschreibt und eine BootLoader.exe für Windows.

Für Linux und Macintosh gibt es zum Glück das Programm MPHidFlash welches auch in der Prozedur beschrieben wird. Das Programm kann hier herunter geladen werden:
http://code.google.com/p/mphidflash/

Der einzige Schwachpunkt ist die Abhängigkeit von der Bibliothek libhid, welche in aktuellen Distributionen nicht mehr enthalten ist. Für debian können die erforderlichen Pakete aber auf archive.debian.org herunter geladen werden:
http://archive.debian.org/debian/pool/main/libh/libhid/libhid0_0.2.15+20060325-2.2_i386.deb
Wer das Programm selbst kompilieren will benötigt noch das zugehörige dev-Paket
http://archive.debian.org/debian/pool/main/libh/libhid/libhid-dev_0.2.15+20060325-2.2_i386.deb

Unter Linux funktioniert der Firmware Upload folgendermaßen:
  • TFT Maximite einschalten solange JP1 (BOOTLOADER) gebrückt ist, das Display blinkt dann hell dunkel.
  • TFT Maximite an den PC anschließen, lsusb sollte folgendes Gerät anzeigen:
    Bus xxx Device xxx: ID 04d8:fa8d Microchip Technology, Inc.
    Befindet sich der TFT Maximite nicht im Bootloader Modus erscheint eine andere product ID:
    Bus xxx Device xxx: ID 04d8:fd52 Microchip Technology, Inc.
  • Die Übertragung der hex-datei mit folgendem Befehl starten:
    ./mphidflash -v 04d8 -p fa8d -n -w TFT_Maximite.hex
    Während der Übertragung bleibt der Bildschirm dunkel und fängt erst nach der Übertragung wieder an zu blinken.

Wenn die Fehlermeldung "Error: Device not found (is device attached and in Bootloader mode?)" erscheint, der TFT Maximite aber im Bootloader Modus ist und von lsusb angezeigt wird kann MPHidFlash nicht auf den USB-Anschluss zugreifen, dann muss das Programm mit root-Rechten ausgeführt werden:
sudo ./mphidflash -v 04d8 -p fa8d -n -w TFT_Maximite.hex

Wer dem Programm oder dem ganzen Upload-Prozess misstraut kann auch zuerst versuchen die letzte Version vom github ("TFT_Maximite_44b1.hex") hoch zu laden bevor er sich an die selbst erstellte TFT_Maximite.hex wagt.

Nach Upload und erfolgreichem Neustart steht der TFT Maximite erst mal wieder auf us-Tastaturlayout. Außerdem muss evtl. das Display-Poti nachgestellt werden und eine touch-Kalibrierung durchgeführt werden.