• Haus & Hof
  • Veröffentlicht in Heft 5/2008 auf Seite 36
Über den Artikel

DigiButler (2)

Aufbau, Test und Software-Installation

DigiButler (2)
Hier ist die Fortsetzung des ersten Teils aus Elektor April 2008: Es geht um den Zusammenbau und das Aufspielen der Software. Außerdem zeigen wir, wie man den DigiButler ins Internet bringt, um damit elektrische Geräte von überall her fernsteuern zu können. Alle in diesem Projekt benötigten Bauelemente sind in einem Kit enthalten, das man komplett über Elektor beziehen kann. Die im Kit enthaltene Platine ist schon mit den meisten SMD-Bauteilen vorbestückt. Der ColdFire-Controller ist überdies mit der DigiButler-Firmware vorprogrammiert. Zusammenbau heißt hier also im Wesentlichen ein Einlöten von drei Dutzend „normalen“ Bauteilen sowie sechs relativ großen SMDs.
Dieser Artikel ist ausschließlich unseren GOLD- und GREEN-Mitgliedern vorbehalten.
Sind Sie bereits Mitglied? Klicken Sie hier, um sich einzuloggen.
Produkte
Gerber-Datei


Die zu diesem Projekt gehörende Platine steht als Gerber-Datei exklusiv allen GOLD- und GREEN-Mitgliedern zum sofortigen Download zur Verfügung. Mit Gerber-Daten können Sie Platinen selber herstellen oder sie bei einem Platinenhersteller in Auftrag geben.

Elektor empfiehlt den zuverlässigen PCB-Service von Eurocircuits.

Extra info, Update

Hinweis: Der Link [1] im Artikel stimmt nicht mehr. Die Coldfire-Software lässt sich nun bei uns downloaden, siehe rechts unten! 

 

5. Mai 2008
Der Mikrocontroller-Typ MC68HC908JB16 im ursprünglichen TBLCF Dokument ist nicht mehr in Produktion. Die MC908JB16JDWE ist der Ersatztyp und als kostenloses Muster über die Freescale-Website erhältlich.

 

19. August 2008 
Mit dem Kit 071102-71 wird eine upgedatete Stückliste und ein neuer Schaltplan ausgeliefert.
Die neue Stückliste steht auch auf der Site. 
Die ersten 300 Kits werden ab 22. August versandt. Unprogrammierte Boards werden ab Kalenderwoche 36 erwartet. 
Mehr programmierte Boards gibt es in Kürze, demnächst teilen wir Näheres mit! 

 

2. September 2008

Der Controller auf dem Board (U1) wird leicht mehr als handwarm (ca. 40...50°C). Das ist normal und unterhalb der Grenzwerte — siehe auch die Datenblätter zum MCF52231.

 

3. September 2008

Aufgrund mehrfacher Nachfrage wurde eine Leerplatine für das TBLCF-Tool in den Elektor-Shop aufgenommen. Die Platinen-Nummer ist 071102-2. Die Platinen sind ab der Kalenderwoche 38 lieferbar. TBLCF-Betrieb und -Bau wird sehr detailliert im TBLCF-Handbuch „manual_v14.pdf“ von Daniel Malik erklärt.

 

3. September 2008

Alle programmierten DigiButler-Platinen enthalten eine frühe Version der Firmware, welche die Hardware auf die statische IP-Addresse 192.168.0.151 ansprechen lässt und welche die komplette in den Artikeln beschriebene Funktionalität inklusive WAP-Access und Webseiten bietet. Eine statische IP-Addresse ist nicht nur nützlich, sondern fast unabdingbar für eine sichere Fernsteuerung, wo der autorisierte Nutzer die Vergabe neuer IP-Adressen via DHCP nach einem Router-Reset bzw. einem Stromausfall nicht ausschließen kann.

Um sich erfolgreich mit dem DigiButler zu verbinden, sollte der Router den IP-Adressbereich 192.168.0.XXX für angeschlossene Geräte einsetzen. Falls erforderlich kann man dies der Dokumentation des Routers entnehmen. Die meisten (aber nicht alle) Router erlauben die Änderung des IP-Adressbereichs, der für Clients verwendet wird. Der Router oder ein direkt mit dem Digibutler verbundener PC sollte 100-Mbit-Ethernet unterstützen. Bei direktem Anschluss an einen PC kann u.U. auch ein so genanntes „gekreuztes“ Ethernet-Kabel erforderlich sein.

 

Im Falle dass:

a) es nicht möglich sein sollte, die Adresse 192.168.0.151 als gültige Client-IP-Addresse mit dem Router zu verwenden,

b) es nicht möglich sein sollte, den Adressbereich 192.168.0.XXX für Clients am Router einzustellen (damit der DigiButler 192.168.0.151 verwenden kann)

c) oder der Anwender unbedingt den DHCP-Server des Router zusammen mit dem DigiButler einsetzen will,

 

sollte man sich nach den nachfolgenden Vorschlägen von John Stuart aus dem englischen Elektor-Forum richten.

Übrigens wurde die DigiButler-Firmware mit CodeWarrior for ColdFire in der Version 6.3 entwickelt (gibt es immer noch als kostenlosen Download von der DigiButler-Projekt-Seite). Freescale empfiehlt allerdings die Verwendung der Version 7.0 in Hinsicht auf den Chip MCF52231. Mittlerweile gibt es schon CodeWarrior 7.2.

 

Detaillierte Vorgehensweise:

Nachfolgend eine Anleitung zur Modifikation und zur Kompilierung des DigiButler-Source-Codes, damit Digibutler sich eine IP-Adresse via DHCP zuweisen lassen kann. Auf die Verwendung des TBLCF-Programmers zur Übertragung der neuen Firmware in den Digibutler wird ebenfalls eingegangen. Hierzu wird natürlich ein funktionierendes TBLCF-Modul oder ein äquivalenter Coldfire-Programmer vorausgesetzt.

 

Diese Dateien werden benötigt:

1. CodeWarrior for Coldfire Architectures 7.1. Der Download findet sich hier: www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01272600610BF1

2. Das Archiv „071102-11.zip“. Man findet es via jahrgang/2008/mai/digibutler-(2).432280.lynkx?tab=3 unter „Gratis-Downloads“ als „Software“. Das Archiv ist auch auf der CD enthalten, die beim DigiButler-Bausatz 071102-71 mitgeliefert wird.

3. Die Datei „setup.xml“. Auch diese kann man von der Projekt-Webseite als „DHCP Update“ laden.

4. Die Datei „mcf5223_sysinit.txt“, welche ebenfalls im vorigen Download (DHCP Update) enthalten ist.

 

Dann sollte zunächst einmal der CodeWarrior 7.1 installiert werden. Nachdem dies erledigt ist, sollten die Dateien im Archiv „071102-11.zip“ entpackt werden. Anschließend öffnet man den so generierten Ordner „Versions CW 7.0“. In diesem Ordner sollte nun ein weiteres Archiv mit der Bezeichnung „SW_Main_Board_31_03_08.zip“ enthalten sein. Beim Entpacken dieses Archiv wird der Ordner „SW_Main_Board“ erstellt, der die Projekt-Dateien und den Source-Code enthält.

 

Der Ordner mit den CodeWarrior-Projekt-Dateien hat den Pfad „..\SW_Main_Board\build\m5223evb“. Im Ordner „m5223evb“ ist die Datei „elektor.mcp“ enthalten. Nun zieht man das Symbol von „elektor.mcp“ auf CodeWarrior oder aber öffnet diese Datei mit dem Menü innerhalb von CodeWarrior. Nun sollten sich auf der linken Seite von CodeWarrior ein Ordner mit allen Source-Dateien zeigen.

 

Um den DHCP-Client zu aktivieren, müssen zwei Änderungen gemacht werden. Eine Änderung steckt in „main.c“. Man öffnet „main.c“ per Doppelklick auf den Namen innerhalb des Ordners (project files). In „main.c“ steht folgender Code:

 

#if 1

     IP_ADDRESS(192,168,0,151);

     DEF_GATEWAY(192,168,0,1);

     SUBN_MASK(255,255,255,0);

#else  // IP: 0.0.0.0 Gateway: 0.0.0.0 Mask: 255.255.255.0  -  Now DHCP client works properly

     IP_ADDRESS(10,171,88,10);

     DEF_GATEWAY(10,171,88,254);

     SUBN_MASK(255,255,255,0);

#endif

 

Dieser Code wird gelöscht und ersetzt durch:

 

#if 0

     IP_ADDRESS(192,168,0,151);

     DEF_GATEWAY(192,168,0,1);

     SUBN_MASK(255,255,255,0);

#else  // IP: 0.0.0.0 Gateway: 0.0.0.0 Mask: 255.255.255.0  -  Now DHCP client works properly

     IP_ADDRESS(0,0,0,0);

     DEF_GATEWAY(0,0,0,0);

     SUBN_MASK(255,255,255,0);

#endif

 

Die nächste Änderung wird in „ipport.h“ vorgenommen. Diese Datei findet sich unter „\common\ColdfireLite\headers“.

Man suche den Code:

 

// EMG - To enable DHCP, uncomment the line below

//#define DHCP_CLIENT     1  /* include DHCP client code */

 

Nun löscht man die Kommentarzeichen der zweiten Zeile und erhält:

 

// EMG - To enable DHCP, uncomment the line below

#define DHCP_CLIENT     1  /* include DHCP client code */

 

Jetzt kann der Code neu kompiliert werden. Man kann das mit über das Projekt-Menü mit „make“ erledigen oder F7 drücken. Der Code sollte nun ohne Fehlermeldungen kompiliert werden. Wenn dem so ist, kann der DigiButler mit der resultierenden neuen Firmware geflasht werden.

 

Zum Flaschen öffnet man den Ordner „TBLCF“ (in „071102-11.zip“ enthalten). Innerhalb dieses Ordners expandiert man das Archiv „tblcf_v10.zip“. Nun ganz genau der Anleitung in „manual_v14.pdf“ folgen um die TBLCF-Treiber zu installieren und den TBLCF zu flashen. Wenn der TBLCF funktioniert, geht man in das Tools-Menü und wählt „Flash Programmer“ in CodeWarrior. Dann ein Klick auf den Knopf „Load Settings“ und „setup.xml“ auswählen. Jetzt ist CodeWarrior bereit für das Flashen des Controllers von DigiButler.

 

Vor dem Programmieren sollte man sich vergewissern, dass die Jumper auf der DigiButler-Platine richtig gesteckt sind. Jumper JP2 stecken (= JTAG einschalten) und bei Jumper JP1 sollten die beiden Pins 1 und 2 verbunden sein.

 

Das TBLCF-Modul mit dem Programmier-Port (J1) von DigiButler verbinden und via USB mit dem PC verbinden, dann erst den DigiButler einschalten. Nun mit „Erase / Blank Check“ in CodeWarrior den Flash-Speicher löschen. Nach dem Klick auf „Erase“ auf die Erfolgsmeldung warten. Wenn das Löschen fehlschlägt, einfach nochmals wiederholen und wenn es dann immer noch nicht klappt, den CodeWarrior schließen und neu starten.

 

Jetzt kommt der Knopf „Program / Verify“ und dann ein Klick auf „Browse“. Nun wird der Ordner „SW_Main_Board\obj“ und darin die Datei „web_coordinator.S19“ ausgewählt. Ein Klick auf „Program“ und warten, bis ein erfolgreicher Vollzug gemeldet wird.

 

Da DigiButler jetzt vollständig programmiert ist, kann man nun die Software starten, indem man auf „Project“ geht und dann auf „Debug“ klickt oder einfach F5 drücken. Wenn eine Dialog-Box aufpoppt, einfach auf „Yes“ klicken. Jetzt sollte das Debug-Fenster geöffnet sein. Nun ein Klick auf den „Run“-Knopf oben links im Fenster (Der Knopf mit einem Pfeil und einem „Bug“). Eventuell muss „Run“ ein zweites Mal betätigt werden. Wenn man überhaupt nicht debuggen möchte, drückt man einfach den Reset-Taster auf der DigiButler-Platine und startet so das Programm. Die Firmware startet unabhängig von der Belegung von JP2.

 

Wenn man nach der Programmierung die Meldung „@@@@ LINK IS DOWN @@@@“ via serieller Schnittstelle erhält, sollte man den Software-Workaround im neuesten TCP/IP-Stack verwenden. Hierzu DigiButler genau wie zuvor beschrieben neu programmieren. In CodeWarrior wird die Datei „mcf5223_sysinit.c“ im CPU-Ordner öffnen. Jetzt allen Code auswählen und löschen. Stattdessen nun den Code aus der Datei „mcf5223_sysinit.txt“ (Download von der Projekt-Webseite) kopieren und in die Datei „mcf5223_sysinit.c“ einfügen. Nach neuem Compiler-Lauf kann die neue Firmware in DigiButler übertragen werden, und die Probleme sollten sich in Nichts aufgelöst haben.

 

Hinweise:

1. Der Controller sollte vor jeder Programmierung gelöscht werden.

2. Möglicherweise muss CodeWarrior für jede neue Programmierung neu gestartet werden. Dies ist vermutlich auf einen Fehler im Setup zurück zu führen.

3. Nach der Programmierung ist die Baud-Rate der seriellen Schnittstelle auf 115.200 gesetzt. Dieser Wert kann in der Datei „m5223evb.h“ in der Zeile:

#define UART_BAUD    115200   /*  19200*/

geändert werden. Hierzu einfach 115200 durch die gewünschte Baud-Rate ersetzen.

4. Aktive DigiButler-Anwender mit Ahnung von der Sache finden sich auch im Elektor-Forum. In den jeweiligen Threads sind die jeweils neuesten Entwicklungen und Ideen zu finden.

 

5. September 2008

Elektor hat Freescale offiziell gebeten, den Chip MC908JB16JDWE für das TBLCF-Board weiter als kostenloses Muster zur Verfügung zu stellen. Allein im Zeitraum Mai...Juli 2008 wurden fast 350 Muster an Elektor-Leser verschickt.

 

15. September 2008

TBLCF-Platinen können via Elektor bezogen werden. Alle noch ausstehenden Lieferungen von DigiButler-Kits und Leerplatinen wurden mittlerweile erledigt.

 

16. September 2008

Vom Chip MC908JB16JDWE können weiterhin kostenlose Muster von Freescale bezogen werden. Hierzu im Anfrage-Formular „Elektor-DigiButler“ als Name des Projekts angeben. Wir möchten nochmals darauf hinweisen, dass die Lieferung kostenloser Muster in einige Länder eine Entscheidung ist, die sich Freescale vorbehält und auf die Elektor keinerlei Einfluss hat.


 

Stückliste

 

Neu - für Platine Version 00286_2, June-10-2008

 

1. Vorbestückte Bauteile:

 

Widerstände:

R3 = 12 k, SMD 0805

R4 = 390 ?, SMD 0805

R5 = 10 M, SMD 0805

R6,R7,R8,R9 = 51 ?, SMD 1206

 

Kondensatoren:

C2,C3,C4,C12,C13,C14 = 220 n, Keramik, SMD 0805

C9,C10,C11 = 100 n, Keramik, SMD 0805

C17 = 220 n, Keramik, SMD 1206

C5,C6 = 22 p, Keramik, SMD 0805

C7 = 1 n, Keramik, SMD 0805

C8 = 100 n, Keramik, SMD 1206

C16 = 10 n, Keramik, SMD 1206

 

Spulen:

FB1,FB2 = BLM31PG601SN1, Ferrit-Kern, SMD 1206

 

Halbleiter:

U1 = MCF52231CAF6 (Freescale)*

 

2. Manuell zu bestückende Bauteile:

 

Widerstände:

R1 = 22 ?, SFR16S

R2,R17,R18 = 10 k?, SFR16s

R15 = 470 ?

R10...R13 = 75 ?, SFR16S

R14 = 270 ?

R16 = 1 k, SFR16S

RN1 = 7 x 4k7, SIL-Array

RN2 = 5 x 10 k, SIL-Array

RN3 = 7 x 10 k, SIL-Array

 

Kondensatoren:

C1,C23,C24, C26,C19,C27…C30 = 100 n, Keramik, RM 5 mm

C15,C20,C21 = 4?7, Keramik, SMD1206

C18 = 2n2 / 1000 V, Keramik (TDK)

C22 = 330 ? / 16 V, Elko, radial

C25 = 220 ? / 6,3 V, Elko, radial

 

Halbleiter:

D1 = 1N4004

D2 = LED, 3 mm, grün

D3 = 1N4148

D4 = LED, 3mm, gelb

Q1 = BC546B

U2 = LD29080DT33R (STMicro)

U3 = MAX3232ECPE

 

Außerdem:

F1 = 0,5 A, träge, 5 x 20 mm

J1 = 26-pol. zweireihiger Pfostenstecker

J2 = RJ45-Buchse für Platinenmontage

J3 = Hohlstecker-Buchse für Platinenmontage

J7 = 10-pol. zweireihiger Pfostenstecker

J6 = 8-pol. zweireihiger Pfostenstecker

J5 = 9-pol. Sub-D-Buchse, abgewinkelt für Platinenmontage

J14 = 2-pol. Schraubklemme, RM 5 mm

JP1 = 3-pol. Pfostenstecker mit Jumper

JP2 = 2-pol. Pfostenstecker mit Jumper

RE1 = G6D-1A-ASI-DC5 (Omron)

S1,S2 = Taster, EVQ-PAE05R Panasonic)

T1 = H1102 Ethernet-Trafo (Pulse)

Y1 = Quarz 25 MHz

Sicherungshalter für Platinenmontage

 

Das komplette Kit ist unter der Nummer EPS 071102-71 erhältlich. Es enthält alle Bauteile und die vorbestückte Platine sowie die CD 071102-81 (siehe Text).

Die vorbestückte Platine 071102 ist auch separat ohne beigelegte Bauteile aber mit unprogrammiertem Controller erhältlich.

Platine für TBLCF: EPS 071102-2 **

 

* Fertig mit aufgespielter Firmware im Kit sowie unprogrammiert bei der separaten Platine.

** optional, siehe Text.

Kommentare werden geladen...