Hilfe beim Firmware-Upload
Vorbereitende Arbeiten
Ein oft auftretendes Problem ist das Aufspielen der Firmware auf
den ATMEGA328-Chip. Hier ein paar Hinweise, damit es klappt.
Zunächst einmal ist die Uhr-Hardware kompatibel zu der Arduino-Welt.
Das bedeutet, die Firmware wird mit der Arduino-IDE über ein FTDI-Kabel
aufgespielt. Wenn man also Probleme hat, kann man auch eine der ungefähr fünf
Fastallionen Stellen im Netz aufsuchen, die das Thema
Upload Sketch Arduino
behandeln.
Man benötigt also zunächst: die Arduino-IDE in der neuesten Version
(http://arduino.cc/en/Main/Software).
Außerdem ein FTDI-Kabel, auch FTDI-BUB oder USB-BUB genannt, mit 5 Volt...
Achtung! FTDI-Kabel/-Adapter vom Chinesen nebenan machen Probleme! Ich habe Dich gewarnt!
(http://www.heise.de/make/meldung/FTDI-Proaktive-Fake-Chip-Abwehr-2430780.html)
Bevor man jetzt versucht, die ganze, große, komplizierte Firmware aufzuspielen,
testet man erst einmal ein kleines Probeprogramm. In der Arduino-Welt
heißen diese Programme übrigens Sketch
. Also...
- IDE starten
- Beispiel öffnen (→Datei→Beispiele→01.Basics→Blink)
Es öffnet sich ein Fenster mit dem Blink-Sketch
,
der den Pin Nummer 13 im Sekundentakt ein- und ausschaltet.
Um das Programm auf den Chip zu spielen, muß man den Computer über das
FTDI-Kabel mit dem Board verbinden. Wie herum? Auf dem Adapter ist eine
Seite des Steckers mit GND bezeichnet. An einem FTDI-Kabel hat der Stecker
farbige Käbelchen, dort ist GND das schwarze Kabel. Auf den Boards ist
diese Seite mit GND, BK (für Black = Schwarz) oder einem Pfeil markiert.
Bevor man den FTDI-Stecker einsteckt, zieht man natürlich andere
Stromversorgungen ab! Bei manchen Boards, wie dem NachBau_V03, muß man den
Jumper bei dem Hohlstecker von Wall (= Wand, externe Stromversorgung)
auf USB umstecken.
Jetzt kann man den Sketch kompilieren (Knopf mit Häkchen) und hochladen (Knopf mit Pfeil).
Leider gibt es dabei eine kleine Hürde: man muß der Arduino-IDE sagen, auf welchem
seriellen Port (Windows: COM-Port) der FTDI-Stecker hängt. Außerdem muß man
das Board und den Prozessor wählen.
- Der Prozessor ist einfach: ATMEGA328.
-
Das Board ist eigentlich der Bootloader. Bei den ATMEGAs aus
Christians-Bastel-Laden ist das immer Arduino Duemilanove,
bei Elmotex Arduino UNO und bei anderen muß man probieren
oder auf der Seite des Verkäufers nachlesen, was auf dem Chip ist.
-
Beim seriellen Port hilft nur probieren, oder man startet
die IDE mal ohne eingesteckten FDTI-Stecker und schaut
nach, was in der Liste steht. Dann steckt man den
Stecker ein und schaut, welcher Port neu dazu gekommen ist.
Wenn man den Blink-Sketch
erfolgreich hochladen kann, ist die
erste Hürde genommen! Die Verbindung vom PC zum Board steht!
Vorher lohnt es sich aber auch gar nicht weiter zu machen!
Die Uhr-Firmware
Jetzt kann man anfangen, sich um die echte
Firmware zu kümmern.
Dazu braucht man...
Wenn man die Libraries von Github herunterlädt, haben sie ein
-master
am Dateinamen hängen. Dieses -master
muß aus dem
Dateinamen des ZIP-Files bzw. des entpackten Ordners gelöscht werden.
Die Firmware entpackt man und benennt den Ordner gegebenenfalls
nach Qlockthree
um. In ihm muß sich direkt der Qlockthree.ino-Sketch
und andere Dateien befinden. Diesen Ordner verschiebt man dann in den
Sketchbook-Ordner
. Wo dieser Ordner ist, kann man in der
Arduino-IDE unter Arduino→Einstellungen
nachsehen.
Die Libraries importiert man, in dem man sie in der Arduino-IDE
unter Sketch→Bibliothek importieren...→Bibliothek hinzufügen
aufnimmt.
Am Ende muß der Inhalt des Sketchbook-Folders wie folgt aussehen.
Diese Struktur
ist wichtig! Es dürfen keine gleichlautenden Unterodner in
den einzelnen Library-Ordner sein! Als Beispiel: Im Ordner
LedControl muß direkt LedControl.h liegen, nicht noch mal ein
Unterordner LedControl!
Jetzt kann man die Firmware öffnen, kompilieren und hochladen.
Nicht vergessen: in der Configuration.h kann man
einstellen, welche Hardware man hat.
Viel Erfolg!
P.S.: Der LPD8806-Library-Fix
Leider hat die LPD8806-Library von Adafruit einen Bug, der
das erfolgreiche Kompilieren im Moment verhindert. Ich habe den Bug
gemeldet, weiß aber nicht, wann er gefixt wird. Solange muß man
es halt selber tun. Dazu...
... öffnet man die Datei LPD8806.h
aus dem Ordner
Sketchbook-Folder→libraries→LPD8806
und fügt vor der Zeile
class LPD8806 {
die beiden Zeilen
#ifndef __LPD8806__H__
#define __LPD8806__H__
ein. Am Ende fügt man die Zeile
#endif
ein. Die Klasse sieht dann etwas eingedampft so aus:
[... Anfangscode...]
#ifndef __LPD8806__H__
#define __LPD8806__H__
class LPD8806 {
[... weiterer Code...]
};
#endif
Kompliziert? Ja, aber hey - jetzt bist Du schon fast ein echter Hacker!