<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mockup</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mockup"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Mockup"/>
	<updated>2026-04-10T10:59:59Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97873</id>
		<title>WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97873"/>
		<updated>2017-11-30T19:18:55Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Weitere geplante Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist der Nachfolger der beiden Projekte [[Word_Clock]] und [[WordClock24h]]. Diese Projekte werden hier zusammengefasst und mit ein- und derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.&lt;br /&gt;
&lt;br /&gt;
Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden &#039;&#039;&#039;WordClock12h&#039;&#039;&#039; und die 24-Stunden-Variante &#039;&#039;&#039;WordClock24h&#039;&#039;&#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Zugehöriger Thread im Forum: https://www.mikrocontroller.net/topic/385955&lt;br /&gt;
&lt;br /&gt;
Tutorial zum Aufbau der WordClock: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WordClock12h und WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:wordclock-frontplatte-v2.png|400px|left|WordClock12h]] &lt;br /&gt;
|| [[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] als auch auf einem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:&lt;br /&gt;
&lt;br /&gt;
* Lauffähig auf STM32F401 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]], STM32F411 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]] und [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
* Anbindung eines [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls mit speziell abgestimmter Firmware&lt;br /&gt;
* WPS-Button zum schnellen Anbinden des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls an das vorhandene Netzwerk&lt;br /&gt;
* Konfiguration über [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]]&lt;br /&gt;
* Holen der Uhrzeit per NTP-Protokoll aus dem Internet&lt;br /&gt;
* Fernsteuerung über IR-Fernbedienung mittels [[IRMP]]&lt;br /&gt;
* Fernsteuerung per [[WordClock_mit_WS2812#Android_App|Android App]]&lt;br /&gt;
* Einstellen des Anzeigemodus (&amp;quot;Sprache&amp;quot;), Helligkeit und der Farbe per IR-Fernbedienung/App/Web&lt;br /&gt;
* Konfigurierbare Nachtschaltzeiten - d.h. automatisches Abschalten zur Nachtzeit, separat auch für das Ambilight&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; Abspielen von MP3-Dateien zu bestimmten Ereignissen oder zu Alarmzeiten (Wecker) über optionalen Mini-DFPlayer&lt;br /&gt;
* Anbindung von LED-Stripes des Typs [[WordClock_mit_WS2812#WS2812|WS2812]], [[WordClock_mit_WS2812#WS2812|WS2812B]], APA102 und SK6812 (RGB- und RGBW-RLEDs)&lt;br /&gt;
* Sanftes Überblenden der Uhrzeiten oder verschiedene Animationen bei Uhrzeitwechsel, z.B. &amp;quot;Explode&amp;quot; oder &amp;quot;Matrix&amp;quot;&lt;br /&gt;
* Farbanimationen, z.B. Automatischer Farbverlauf durch alle Regenbogenfarben (&amp;quot;Rainbow&amp;quot;)&lt;br /&gt;
* Anzeigen von teilweise animierten Piktogrammen an bestimmten Tagen wie Geburtstag/Weihnachten/Silvester etc.&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]] (optional)&lt;br /&gt;
* Anbindung einer externen DS3231-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]&lt;br /&gt;
* Anbindung eines externen I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]&lt;br /&gt;
* Optionaler Anschluss eines [[WordClock_mit_WS2812#DCF77|DCF77]]-Moduls&lt;br /&gt;
* Manuelles Stellen der Uhrzeit per [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]] oder [[WordClock_mit_WS2812#Android_App|Android App]], wenn kein Internet/DCF77 verfügbar&lt;br /&gt;
* Optionale Temperaturmessung und -Anzeige mit [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx-Sensor]]&lt;br /&gt;
* Optionale Wetteranzeige über openweathermap.org&lt;br /&gt;
* Separate Farbauswahl für Display und Ambilight&lt;br /&gt;
* Separat einschaltbares Ambilight mit auswählbaren Animationen: Keine, &amp;quot;Clock&amp;quot; (Umlaufende Sekundenanzeige) und &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
* Konfiguration einer &amp;quot;Zeitschaltuhr&amp;quot; für das Ambilight, um dieses zum Beispiel generell nachts abzuschalten&lt;br /&gt;
* Laufschriften - eigene Texte und Wettermeldungen&lt;br /&gt;
* Optionale Steuerung der Stromversorgung für die LED-Stripes&lt;br /&gt;
* Einspielen von [[WordClock_mit_WS2812#Update|Updates]] für ES8266 ESP-12F und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* WCtris - Tetris Clone zum Spielen auf der Uhranzeige&lt;br /&gt;
&lt;br /&gt;
=== Geplante Features für Version 2.7.x ===&lt;br /&gt;
&lt;br /&gt;
* Änderung Programmlogik: Display-Timer soll nicht das Ambilight einschalten. Dieses geht über den Ambilight-Timer.&lt;br /&gt;
* Anzeige von Wetterdaten über Piktogramme, Einblendung automatisch zu konfigurierbaren Zeiten.&lt;br /&gt;
* Ausblenden einzelner LEDs bei animierten Piktogrammen&lt;br /&gt;
* Konfiguration der Anzeigedauer von Piktogrammen&lt;br /&gt;
* Automatische Helligkeit separat auch für Ambilight (alle Modi) - mit Offset-Regler im Vergleich zum Display&lt;br /&gt;
* Ambilight Mode Clock: Sekundenzeiger mit Fading über mehrere LEDs&lt;br /&gt;
* Ambilight Mode Clock: Farbe der 5-Sekunden-Marker einstellbar&lt;br /&gt;
* FIR-Filter für automatische Helligkeitsregelung.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Einstellung: In aktueller Displayfarbe oder in grün.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Ausblenden der Buchstaben per Strahl, Einblenden der Buchstaben durch 2. Strahl&lt;br /&gt;
* Snake Animation frisst nicht nur die alte Uhrzeit, sondern baut die neue Uhrzeit gleichzeitig oder in 2. Durchlauf hinter sich auf&lt;br /&gt;
* Angabe eines Ausgabeformats für die Datumsanzeige&lt;br /&gt;
* Harlekin-Farbanimation (jeder Buchstabe hat eine eigene Farbe)&lt;br /&gt;
* Jester-Modus (1. April): Unorthodoxe Anzeige am 1. April.&lt;br /&gt;
&lt;br /&gt;
=== Weitere geplante Features ===&lt;br /&gt;
&lt;br /&gt;
* Optional: Umgekehrte Logik zur Helligkeitssteuerung des Ambilights: Bei viel Umgebungslicht Dimmen des Ambilights, bei wenig Umgebungslicht die Helligkeit des Ambilights erhöhen.&lt;br /&gt;
* Webinterface: zusätzliche Infos, z.B. Link auf Liste der Timeserver.&lt;br /&gt;
* STM32-Logbook im Web-Interface&lt;br /&gt;
* Geburtstagsreminder: An einem Geburtstag scrollt der Name und das Alter zu einer vordefinierten Uhrzeit durch.&lt;br /&gt;
* Farbe von Ambilight und Display gesteuert nach Uhrzeit (z.B. von morgens rot nach abends blau)&lt;br /&gt;
* Optimierung der Rainbow-Animation für SK6812 (Weiß)&lt;br /&gt;
* Feinere Unterscheidungen bei Änderung der Display-Helligkeit über Schieberegler (ist momentan nur bei jedem zweiten Schritt erkennbar).&lt;br /&gt;
* Neue Animation &amp;quot;Implode&amp;quot;&lt;br /&gt;
* Animation Flicker: Zunächst die alte Uhrzeit flackern lassen, dann erst die neue. Also nicht beide zusammen.&lt;br /&gt;
* Mood-Light-Funktion&lt;br /&gt;
* Hintergrundfarbe/Helligkeit für Display bzw. Ambilight&lt;br /&gt;
* Vereinfachtes Bedienkonzept für IR-Fernbedienung&lt;br /&gt;
* Spiele wie TRON, SNAKE und PONG&lt;br /&gt;
* Default LDR-Werte für MIN und MAX auf 0 und 4095 (oder angepasster) ändern, wenn im EEPROM-Speicher für die Werte 0 und 0 erkannt wird. So funktioniert der LDR von vorn herein auch ohne kalibrieren und es werden Missverständnisse vermieden.&lt;br /&gt;
* Animationen in der Helligkeit dimmen. Diese sind aktuell voll an.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist unbedingt erforderlich, dass die passende ESP8266-Firmware zur STM32-Firmware eingespielt wird! Ältere ESP8266-Firmware-Versionen führen auf jeden Fall zu Fehlverhalten!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Regel ist dabei: Die STM32-Version muss mit der ESP8266-Firmware in den ersten beiden Ziffern A.B übereinstimmen, die dritte Ziffer C darf unterschiedlich sein.&lt;br /&gt;
&lt;br /&gt;
Aktuelle STM32-Version: &#039;&#039;&#039;2.7.0 vom 29.11.2017&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Aktuelle ESP-Version: &#039;&#039;&#039;2.7.1 vom 29.11.2017&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Momentan kann das SVN nicht aktualisiert werden, daher ist der Quellcode im SVN noch auf Stand 2.6.6. Die Sources von 2.7.0 kann man alternativ hier herunterladen: [http://uclock.de/update/wclock24h-2.7.0-src.zip wclock24h-2.7.0-src.zip]&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EmBitz-Projekt für STM32 und Sources für ESP8266:&#039;&#039;&#039; || [https://www.mikrocontroller.net/svnbrowser/wordclock24h/?view=tar Tarball] (Version 2.6.6)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SVN hier auf µc.net:&#039;&#039;&#039;|| svn://mikrocontroller.net/wordclock24h/ (Version 2.6.6)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repo-Browser&#039;&#039;&#039;:|| [http://www.mikrocontroller.net/svnbrowser/wordclock24h/ WordClock24h im SVN] (Version 2.6.6)&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Hex- und Bin-Dateien, wenn man - ohne zu compilieren - direkt flashen will:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%&amp;quot; | Firmware !! style=&amp;quot;width:8%&amp;quot; | Version !! style=&amp;quot;width:10%&amp;quot; | Datum !! style=&amp;quot;width:30%&amp;quot; | Datei&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock STM32 Firmware&#039;&#039;&#039; alle Varianten          || [[WordClock_mit_WS2812#STM32_WordClock_Software|2.7.0]] || 29.11.2017 || [[Datei:Wordclock-hex.zip]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-01 Firmware&#039;&#039;&#039;                          || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.0]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-512K.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-12F Firmware&#039;&#039;&#039;                  || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.1]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-4M.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App|Android App]]&#039;&#039;&#039; || &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App_2|2.6.6]]&#039;&#039;&#039; || 15.06.2017 || [[Datei:WC24h.apk]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WCTris Windows-Console-Programm&#039;&#039;&#039;                  || 2.6.0 || 11.03.2017 || [[Datei:Wctris.zip]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, wird hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]&lt;br /&gt;
&lt;br /&gt;
Wie man die App unter Android installiert, kann man hier nachlesen:&lt;br /&gt;
&lt;br /&gt;
http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html&lt;br /&gt;
&lt;br /&gt;
Am einfachsten erlaubt man die Installation von Apps &amp;quot;aus unbekannten Quellen&amp;quot; und klickt anschließend direkt auf dem Android-Gerät auf den [[WordClock_mit_WS2812#Download|Download]]-Link. Dann kann man das Programm direkt nach dem Download installieren.&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Varianten ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Hardware-Varianten unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Uhrenanzeige WC24h und WC12h&lt;br /&gt;
* Mikrocontroller: STM32F103 (Mini-Development Board), STM32F401 (Nucleo) und STM32F411 (Nucleo)&lt;br /&gt;
* LED-Streifen: WS2812-GRB, WS2812-RGB, SK6812-RGB, SK6812-RGBW und APA102&lt;br /&gt;
&lt;br /&gt;
Für jede dieser Kombinationen gibt es eine spezielle Hex-Datei zum Flashen des STM32. Der Dateiname setzt sich aus den oben genannten drei Teilen zusammen.&lt;br /&gt;
&lt;br /&gt;
* 1. Teil: wc12h oder wc24h&lt;br /&gt;
* 2. Teil: stm32f103, stm32f401 oder stm32f411&lt;br /&gt;
* 3. Teil: ws2812-grb, ws2812-rgb, sk6812-rgb, sk6812-rgbw oder apa102&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich folgende Dateinamen:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Firmware Varianten&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | Controller || style=&amp;quot;width:30%&amp;quot; | Dateiname || style=&amp;quot;width:40%&amp;quot; | Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F103&#039;&#039;&#039; || wc12h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F401&#039;&#039;&#039; || wc12h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F411&#039;&#039;&#039; || wc12h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F103&#039;&#039;&#039; || wc24h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F401&#039;&#039;&#039; || wc24h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F411&#039;&#039;&#039; || wc24h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu beachten: Die normalen WS2812-LED-Streifen benutzen die Farbreihenfolge GRB (Grün-Rot-Blau)!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Software für Windows ===&lt;br /&gt;
&lt;br /&gt;
Die Software zum Flashen des Programms:&lt;br /&gt;
&lt;br /&gt;
* ST-Link/V2 , siehe: http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; (nicht Nucleo!) auch über UART geflashed werden. Dann braucht man keinen ST-Link und verwendet folgende Software: http://www.st.com/web/en/catalog/tools/PF257525&lt;br /&gt;
&lt;br /&gt;
Alternativer Link:&lt;br /&gt;
&lt;br /&gt;
http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html&lt;br /&gt;
&lt;br /&gt;
Zum Flashen des &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; über &#039;&#039;&#039;UART&#039;&#039;&#039; muss beim Einschalten des STM Boot0 über einen Jumper auf „1“ gesetzt sein. Bei Verwendung eines ESP8266-ESP12F-WLAN-Moduls ist aber der mittlere Anschluss von Boot0 schon durch eine Drahtverbindung für das OTA-Flashen belegt – deshalb wird für das Flashen ein &#039;&#039;&#039;ST-Link-Adapter&#039;&#039;&#039; über die SWD-Schnittstelle des STM32MiniBoard &#039;&#039;&#039;empfohlen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Software für das Flashen über UART wird auch zum Aufspielen der ESP8266 Firmware des WLAN-Moduls benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchte man die Sources selber übersetzen:&lt;br /&gt;
&lt;br /&gt;
* EmBitz IDE, siehe https://www.embitz.org/&lt;br /&gt;
&lt;br /&gt;
Möchte man die Debug- und Log-Meldungen als Entwickler oder zur Diagnose verfolgen, braucht man noch&lt;br /&gt;
&lt;br /&gt;
* STM32 Virtual COM Port Driver: http://www.st.com/web/en/catalog/tools/PF257938 für das Nucleo-Board&lt;br /&gt;
* oder einen zusätzlichen USB-UART Adapter nebst Treiber für das STM32F103 Mini Development Board&lt;br /&gt;
* PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder andere Terminal-Emulation&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Quellcode selbst übersetzen ===&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist nur notwendig, wenn man an den Quellen etwas ändern möchte. Im Normalfall braucht man lediglich eine der oben im [[WordClock_mit_WS2812#Download|Download]]-Kapitel angegebenen Hex-Dateien auszuwählen und diese auf den Prozessor flashen.&lt;br /&gt;
&lt;br /&gt;
Wenn man an dem Programm etwas ändern oder erweitern möchte, dann startet man die zuvor installierte EmBitz-IDE. Aus dem SVN lädt man sich den Tarball (Link siehe Kapitel [[WordClock_mit_WS2812#Download|Download]]) und entpackt diesen unter C:\EmBitzProjects.&lt;br /&gt;
&lt;br /&gt;
Nach dem Entpacken findet man dann im Unterverzeichnis wclock24h die Projekt-Datei &#039;&#039;&#039;wclock24h.ebp&#039;&#039;&#039;, um den Quellcode für ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zu compilieren. In der EmBitz-Ide kann man nun mit &#039;&#039;&#039;File -&amp;gt; Open&#039;&#039;&#039; die Projekt-Datei laden.&lt;br /&gt;
&lt;br /&gt;
Möchte man jedoch den Quellcode für das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Board]] übersetzen, dann lädt man die Projektdatei &#039;&#039;&#039;wclock24h-F103.ebp&#039;&#039;&#039; aus dem Unterverzeichnis &#039;&#039;&#039;wclock24h-F103&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Anschließend wählt man in der oberen Zeile in der Mitte das Ziel aus, wofür man den Quellcode übersetzen möchte.&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]]-Projekt werden folgende Alternativen angeboten:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo401-Debug&lt;br /&gt;
* WC24h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo411-Debug&lt;br /&gt;
* WC24h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo401-Debug&lt;br /&gt;
* WC12h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo411-Debug&lt;br /&gt;
* WC12h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
In der F103-Projektdatei können folgende Varianten ausgewählt werden:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-STM32F103-Debug&lt;br /&gt;
* WC24h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-STM32F103-Debug&lt;br /&gt;
* WC12h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
Die Debug-Varianten sind lediglich für die Bugsuche im Programm vonnöten. Es empfiehlt sich daher im Normalfall, die entsprechende Release-Variante auszuwählen.&lt;br /&gt;
&lt;br /&gt;
Nach der Auswahl kann man dann unter &#039;&#039;&#039;Build -&amp;gt; Rebuild all target files&#039;&#039;&#039; den Übersetzungsvorgang starten. Danach findet man im Unterverzeichnis bin\\Release die dazugehörige Hex-Datei mit dem ST-Link-Programm dann auf dem Ziel geflasht werden kann. Das wars!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== STM32F103C8T6 Mini-Development Board ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Dieses Board wird für die &amp;quot;klassische&amp;quot; 10x11 WordClock12h empfohlen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein kleines, platzsparendes Board mit ausreichendem 32Bit-Mikrocontroller. Der STM32F103C8T6 hat 64 KB Flash und 20KB RAM. Bei ebay ist er für kleines Geld (unter 4 EUR) zu haben: Einfach dort nach &amp;quot;STM32F103C8T6&amp;quot; suchen. Die Anbieter sind meist in China. Aber es gibt auch Anbieter aus Deutschland, wo das bestellte Board dann auch schon nach 2 Tagen im Briefkasten steckt. Meist sind die deutschen Anbieter aber etwas teurer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während die [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Boards]] bereits den &amp;quot;Programmer&amp;quot; ST-Link-V2 zum Programmieren des Flashs on-Board haben, ist dies hier nicht der Fall. Hier muss ein separates ST-Link-V2 zum einmaligen Programmieren verwendet werden. Hat man schon ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zuhause, kann der darauf befindliche ST-Link verwendet werden. Oder man beschafft sich einen eigenen Programmer. Bei eBay erhält man sie bereits im einstelligen Euro-Bereich, wenn man nach &amp;quot;ST-Link V2&amp;quot; sucht.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieses Boards gegenüber dem Nucleo ist der geringe Platzbedarf. Rechts sind der Anschluss eines ST-Link V2-Clones zum Flashen und die Anschluss-Skizze der WordClock an das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] zu sehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei den Shields ab V3 für das STM32-Mini-Development Board muss noch eine Drahtbrücke eingelötet werden: Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss über eine Drahtbrücke mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32F103C8T6.png|miniatur|STM32F103C8T6 Mini-Development Board]]&lt;br /&gt;
[[Datei:STM32F103C8T6 MiniDevBoard Schematic.png|mini|MiniDevBoard Schaltplan]]&lt;br /&gt;
[[Datei:STM32F103 MiniBoard STLink.jpg|mini|Flashen per ST-Link V2-Clone]]&lt;br /&gt;
[[Datei:WC_MiniDev_Shield_v4_Drahtbruecke.jpg|mini|Drahtbrücke zu BOOT0]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STM32F401RE Nucleo und STM32F411RE Nucleo ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Es kann sowohl das 401er als auch das 411er [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] verwendet werden. Beide werden identisch genutzt.&lt;br /&gt;
&lt;br /&gt;
Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte man die überstehenden Enden der Steckerleisten auf der &#039;&#039;&#039;Unterseite&#039;&#039;&#039; mit einer Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil) können dabei auf die Oberseite gesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile vier verschiedene Revisionen von den Nucleo-Boards:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;MB1136 C01&amp;quot;: Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator&lt;br /&gt;
* &amp;quot;MB1136 C02 bis C04&amp;quot;: Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Device&lt;br /&gt;
&lt;br /&gt;
Damit auch das Board mit der Revision &amp;quot;MB1136 C01&amp;quot; zuverlässig im HSE-Modus mit 84MHz läuft, sind folgende Hardware-Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
* Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)&lt;br /&gt;
* Lötbrücken SB16 und SB50 entfernen (dito)&lt;br /&gt;
* R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken&lt;br /&gt;
* Quarz X3 (8 MHz) einlöten&lt;br /&gt;
* C33 und C34 mit jeweils 22pF bestücken.&lt;br /&gt;
&lt;br /&gt;
C33 und C34 können auch normale THT-Bauteile sein, wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-Anschlüssen angebracht und mit einem Draht zu CN6, Pin7 (GND) die nötige Masseverbindung hergestellt, siehe Foto rechts. &lt;br /&gt;
&lt;br /&gt;
Es geht aber auch auf der Oberseite direkt an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren. In diesem Falle ist die Masseverbindung bereits im PCB Layout vorhanden und die Drahtbrücke nach CN6, Pin7 (GND) entfällt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 &amp;amp; R37 einlöten, bevor man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision &amp;quot;MB1136 C02&amp;quot; und höher durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.&lt;br /&gt;
&lt;br /&gt;
Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene stellt also den gewünschten Endzustand dar.&lt;br /&gt;
&lt;br /&gt;
Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das Board (nach dem Abtrennen des ST-Link) über die Stiftleiste mit Spannung versorgt werden kann (z.B. durch das Nucleo-Shield), muss &amp;quot;JP5&amp;quot; noch von &amp;quot;U5V&amp;quot; auf &amp;quot;E5V&amp;quot; umgesteckt werden.&lt;br /&gt;
(Zusätzlich auf dem ST-Link &amp;quot;JP1&amp;quot; entfernen, falls noch nicht abgetrennt.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bevor man den ST-Link-Teil abtrennt&#039;&#039;&#039;, sollte man den &#039;&#039;&#039;STM32F4xx und das ESP8266-Modul flashen&#039;&#039;&#039; und auch testen. Nach dem Abtrennen werden dann Updates über OTA geflasht.&lt;br /&gt;
|| [[Datei:WC24h-Nucleo-Oberseite.jpg|miniatur|Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Unterseite.jpg|miniatur|Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Shield.jpg|miniatur|Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für EEPROM/RTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TSOP31238 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zum optionalen Steuern per IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32F411_Nucleo_Board|Nucleo-Shield]]:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an GND, TSOP-Pin2 an 3V3, TSOP-Pin3 an Data&lt;br /&gt;
&lt;br /&gt;
Dabei wird zusätzlich ein Tiefpassfilter (C/R) - wie auch im Datenblatt angegeben - verwendet.&lt;br /&gt;
 &lt;br /&gt;
Es kann auch der kleinere Bruder TSOP4838 angeschlossen werden. Dieser hat den Vorteil, dass er besser hinter einem &amp;quot;Loch&amp;quot; im Zwischenboden untergebracht werden kann, weil er einfach vom Gehäuse her kleiner ist. Allerdings ist dann die Anschlussreihenfolge anders:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an DATA, TSOP-Pin2 an GND, TSOP-Pin3 an 3V3&lt;br /&gt;
&lt;br /&gt;
Der TSOP4838 kann also nicht direkt 1:1 an einem der beiden Shields angeschlossen werden. Da aber sowieso ein 3-poliges Kabel an die Pin-Header geführt wird, sollte das kein Problem sein.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP.png|miniatur|Schaltplan]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP.png|miniatur|Anschluß des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Wird kein IRMP-Empfänger benutzt, sollte R5 (siehe Schaltplan rechts) mit 100k Ohm statt 100 Ohm auf dem Shield bestückt werden. Der zum Tiefpass gehörende Kondensator C1 entfällt dann. Zwischen den Pins 3V3 und Data wird schlussendlich eine Drahtbrücke eingelötet, um einen stabilen Zustand am Daten-Pin des µCs zu gewährleisten.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Ab der Shield Version 4 wird ohne TSOP R5/C1 nicht bestückt und stattdessen R15 (NucleoShield) bzw R16 (MiniDevShield) mit 100k bestückt. Damit wir ein stabilen Zustand am Daten-Pin des µCs gewährleistet.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:TSOP_v4.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WS2812 ==&lt;br /&gt;
Bei der WordClock24h wird eine 16x18-Matrix verwendet plus eine Status LED, bei der WordClock12h eine 10x11-Matrix plus 4 Stück Minuten LED.&lt;br /&gt;
&lt;br /&gt;
Die [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs werden dabei folgendermaßen verdrahtet:&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock12h ====&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Spezialanfertigung von WS2812-Stripes eingesetzt - nämlich mit einem Rastermaß von 28,1mm. Damit ist die WordClock12h von den Maßen her kompatibel zum bisherigen [[Word_Clock]]-Projekt. Das hat den Vorteil, dass bisherige Frontplatten und Zwischenböden weiterverwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Bei der Wordclock12h steht jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;. Folgende Zeichnung ist von der Vorderseite der Uhr aus gesehen, beim Verkabeln von Hinten muss man es natürlich gedanklich umdrehen.&lt;br /&gt;
&lt;br /&gt;
          M4                                                    M1&lt;br /&gt;
           O---------+              µC Data --------------------O&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         1  2  3  4  ...              11            |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |                                          |         |&lt;br /&gt;
           |        22                            12  |         |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--          |&lt;br /&gt;
           |       23 24 ....                                   |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           O----------------------------------------------------O&lt;br /&gt;
          M3                                                    M2&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Dabei sind M1-M4 die 4 Minutenpunkte in den Ecken. Es wird keine Status-LED wie bei der WordClock24 verwendet. Tatsächlich werden hier dafür die Minutenpunkte zur zusätzlichen Statusausgabe mitbenutzt.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board und beim STM32-Mini-Board werden bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt (ab Software-Version 2.6.6). Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 114 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
|| [[Datei:LEDS-Datakabel.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock24h ====&lt;br /&gt;
Verwendet werden Standard-WS2812-Stripes mit &#039;&#039;&#039;60 LEDs pro Meter&#039;&#039;&#039;. Dabei steht - wie bei der WC12h - jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
               +-------------------------------------------------------+&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               1  2  3  4  ...                              18         |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
                                                               |       |&lt;br /&gt;
               36                                       20  19 |       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--        |&lt;br /&gt;
              37 38 ....                                               |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                  Status-LED                           |&lt;br /&gt;
  µC Data -----------------------------O-------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch für die WC24h gilt: Beim (für die WC24 primär empfohlenen) Nucleo-Board und beim (ebenfalls für die WC24h nutzbaren) STM32-Mini-Board werden ab Software-Version 2.6.6 bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 289 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== WS2812-Anschlüsse am Shield ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Der DI-Eingang des LED-Streifens wird per möglichst kurzem Kabel am WS2812-Pin des Shields verbunden, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
In seltenen Fällen kommen die WS2812-LEDs mit einem 3,3V-Pegel an ihrem Eingang nicht zurecht. Die Folge sind dann Falsch-Farben bzw. Ausfälle bei einzelnen LEDs. Für diesen Fall ist auf den Shields ab Version v3 zwischen DI und 5V ein 1k8 Pullup-Widerstand angebracht. Die STM32-Software erkennt beim Boot den Pullup-Widerstand automatisch und schaltet dann den Daten-Ausgang auf Open-Drain-Betrieb um. Damit ist dann der High-Pegel an der ersten angeschlossenen LED nahezu 5V statt 3,3V.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812.png|miniatur|Data Anschluss WS2812 auf Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Jede zweite Reihe (1., 3., 5. usw.) der Streifen wird per Flachbandkabel an die Spannungsversorgung der WS2812-Streifen angeschlossen. Dafür dient der Flachbandkabel-Stecker auf dem Shield. Hier werden 16 mal jeweils +5V und GND zur Verfügung gestellt, siehe nebenstehendes Bild.&lt;br /&gt;
Die 1 und damit die obere Reihe ist 5V, die 2 und damit untere Reihe GND.&lt;br /&gt;
Werden zusätzlich Ambilight LED verwendet, wird ebenfalls jede Seite separat an die Spannungsversorgung angeschlossen um den Spannungsabfall entgegenzuwirken.&lt;br /&gt;
&lt;br /&gt;
Bei der WC12 können dazu die 6 noch freien Pin Pärchen des Pfostensteckers genutzt werden. Bei der WC24h muss die Spannung anderweitig abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812-Power.png|miniatur|Spannungsversorgung der WS2812 auf dem Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DS18xx ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Optional:&#039;&#039;&#039; [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] als Temperatur-Sensor&lt;br /&gt;
&lt;br /&gt;
Es werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
* DS1820&lt;br /&gt;
* DS18S20&lt;br /&gt;
* DS1822&lt;br /&gt;
* DS18B20&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DS18xx-GND (Pin 1) an GND&lt;br /&gt;
* DS18xx-DQ  (Pin 2) an B5 (Mini) bzw. D2 (Nucleo)&lt;br /&gt;
* DS18xx-VDD (Pin 3) an 3V3&lt;br /&gt;
&lt;br /&gt;
Ein 4,7k Pullup-Widerstand ist zum sicheren Betrieb des One-Wire-Busses auf den Shields vorgesehen. &lt;br /&gt;
Der DS18xx sollte nicht in der Nähe von Wärmequellen angebracht werden, am besten also nicht direkt an das Shield löten, sondern in der unteren Tasche des Zwischenbodens anbringen. Die Litze am DS18XX dabei, z.B. mit Hilfe von Schrumpfschlauch, isolieren, damit es nicht zum Kurzschluss am Kühlkörper kommen kann.&lt;br /&gt;
Weiterhin wird aufgrund der geringen Eigenerwärmung der DS18XX Sensoren empfohlen, den Sensor mit Wärmeleitpad/-kleber auf ein kleines Kühlblech zu kleben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ist kein DS18xx Temperatur-Sensor angeschlossen, wird die Temperatur über die RTC (DS3231) ermittelt.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DS1820.png|miniatur|DS1820 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mini-DFPlayer ==&lt;br /&gt;
&lt;br /&gt;
Mit dem optionalen Mini-DFPlayer können als Reaktion auf bestimmte Ereignisse oder zu bestimmten Uhrzeiten MP3-Dateien abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nucleo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB6 (STM324xx TX ALT1)&lt;br /&gt;
* DFPlayer TX an PB7 (STM324xx RX ALT1)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mini-Shield:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB10 (STM32F103 TX)&lt;br /&gt;
* DFPlayer TX an PB11 (STM32F103 RX)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse Quellen im Internet, welche aussagen, dass eine Betriebsspannung von 4,3V wegen des Klangs sinnvoller wäre. Das kann man mit einer Si-Diode in der Zuleitung lösen.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: http://stonez56.blogspot.de/2015/03/arduino-dfplayer-mini-mp3-module.html&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: &#039;&#039;&#039;[[WordClock_mit_WS2812#DFPlayer|Konfiguration DFPlayer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LDR ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: Fotowiderstand (LDR) zur Lichtstärkenmessung, welche die Leuchtstärke der LEDs in Abhängigkeit des Umgebungslichtes automatisch steuert.&lt;br /&gt;
&lt;br /&gt;
Als LDR sollte der LDR07 von Reichelt, ggf. der Ersatz &amp;quot;A 906011&amp;quot; verwendet werden. Wird noch der zwischenzeitlich empfohlene &amp;quot;A 906032&amp;quot; von Reichelt eingesetzt, ist R1 = 10K besser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird kein [[WordClock_mit_WS2812#LDR|LDR]] benutzt, muss auf dem Shield der 10k-Pullup (R2) eingelötet werden, R1 wird dann nicht bestückt.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird der LDR benutzt, darf der Widerstand R2 nicht eingelötet werden!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-LDR.png|miniatur|Schaltplan LDR am Mini-Shield]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-LDR.png|miniatur|LDR-Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DCF77 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: DCF77 Modul&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DCF77 GND an GND&lt;br /&gt;
* DCF77 V+ an 3,3V&lt;br /&gt;
* DCF77 Out an Data&lt;br /&gt;
* DCF77 PON an PON&lt;br /&gt;
&lt;br /&gt;
Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein befriedigendes Empfangsverhalten hat. PON kann beim Reichelt-Modul offen bleiben, beim Pollin DFCF77-1 sollte man PON jedoch anschließen.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang verwendet, muss an Data noch ein 100k Pullup (zu 3,3V) angeschlossen werden.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DCF77.png|miniatur|DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Wird KEIN DCF-Modul verwendet, muss der 100k Widerstand R3 eingelötet werden, um den µC-Eingang auf stabilem Niveau zu halten - aber nur dann! Die sonstigen Komponenten auf dem nebenstehenden Schaltplan entfallen ersatzlos.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-DCF77.png|miniatur|Schaltplan DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ESP8266 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Ab der Software-Version 2.5.0 ist das Aktualisieren der ESP- und STM32-Firmware auch über OTA (&amp;quot;over the air&amp;quot;, also WLAN) möglich. Damit entfällt ein erneutes Anschließen der Uhr an entsprechende Programmiergeräte bei einem Update. Allerdings müssen dafür die bisher eingesetzten ESP8266 ESP-01 durch ein ESP-12F ersetzt werden. Deshalb wird generell ab der Version v3 der Nucleo- bzw. Mini-Shields das ESP8266 ESP-12F Modul statt ESP-01 verwendet. &lt;br /&gt;
&lt;br /&gt;
Es werden nun 2 USARTs vom STM32 benutzt: Das erste für die Kommunikation der beiden µCs zum Datenaustausch, das zweite zum Flashen des STM32 über OTA. Die Bedienung von 2 USARTs des STM32 geschieht durch eine Software-Umschaltung der ESP-UART-Pins.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Nucleo-Shield-ESP-12F.png|180x128px|miniatur|ESP-12F an Nucleo-Shield]]&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-ESP-12F.png|187x122px|miniatur|ESP-12F an Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Die User-Taste wird für mehrere Funktionen genutzt.&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist sie bereits vorhanden. Sie ist blau und mit &amp;quot;User&amp;quot; beschriftet. Wird das Mini-Development-Board benutzt, ist die Taste auf dem dazugehörenden Shield (ab v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] ist die Taste nicht vorhanden, sondern lediglich als Jumper-Pin mit der Bezeichnung &amp;quot;Flash&amp;quot; (PA6) vorhanden. Hier kann man entweder eine Taste anschließen oder mit einem Jumper den Flash-Pin mit dem danebenliegenden Pin &amp;quot;GND&amp;quot; kurzschließen, was derselben Funktion entspricht.&lt;br /&gt;
&lt;br /&gt;
Die User-Taste wird für zwei Fälle benutzt:&lt;br /&gt;
&lt;br /&gt;
* Im Reset-Zustand des STM32 zum Flashen des ESP8266 über UART&lt;br /&gt;
* Im Betriebszustand zum Versetzen des ESP8266 in den AP-Modus mit SSID &amp;quot;wordclock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Funktionen werden in den Kapiteln &#039;&#039;&#039;[[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Flash des WLAN-Moduls]]&#039;&#039;&#039; und &#039;&#039;&#039;[[WordClock_mit_WS2812#Start_als_Access-Point|Start als Access-Point]]&#039;&#039;&#039; näher erläutert.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WPS-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ab Software-Version 2.6.0 wird auch WPS unterstützt. Dann kann die Verbindung des ESP8266 über diese Taste vorgenommen werden. Ab der Shield-Version v3 ist dafür eine eigene Taste auf den Shields vorgesehen. Ältere Shields kann man aber auch nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Dazu schließt man an:&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|STM32F4xx Nucleo]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PC5&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103C8T6 Mini-Development Board]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PA7&lt;br /&gt;
&lt;br /&gt;
Wie dann die Verbindung zum WLAN-Gateway aufgebaut wird, ist hier beschrieben: [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]].&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RTC und EEPROM ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
I2C-Modul mit DS3231 als RTC und EEPROM&lt;br /&gt;
&lt;br /&gt;
Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als Suchbegriff &amp;quot;DS3231 EEPROM&amp;quot; eingibt. Es wird als Echtzeituhr und für die Speicherung der Konfigurationsparameter verwendet. Ist kein DS18xx als Temperatursensor angeschlossen, wird die RTC auch zur Temperaturmessung genutzt.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* 32K Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SQW Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SCL an SCL&lt;br /&gt;
* SDA an SDA&lt;br /&gt;
* VCC an 3V3&lt;br /&gt;
* GND an GND&lt;br /&gt;
&lt;br /&gt;
Von der Software werden auch ältere [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC/EEPROM]]-Module mit DS1307 erkannt, dennoch sollte man aus Kompatibilitätsgründen auf die Verwendung dieser älteren Module verzichten.&lt;br /&gt;
&lt;br /&gt;
Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich&lt;br /&gt;
genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.&lt;br /&gt;
      &lt;br /&gt;
Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-IC bestückt, dann kann man auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss das Modul aber mit +5V statt 3,3V betreiben, damit der Akku überhaupt geladen wird. Sonst ist er aufgrund der Selbstendladung irgendwann leer.&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollte man das Modul eher mit einer CR2032 Batterie betreiben. &#039;&#039;&#039;Dann sollte man aber sicherheitshalber die Diode oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild), damit keine Ladung (und Überhitzung) der Batterie passiert&#039;&#039;&#039;. Das ist zwar eigentlich erst ab einer Betriebsspannung von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht eine CR2032 Batterie für 5-10 Jahre.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h-DS3231-EEPROM.png|miniatur|DS3231 RTC + EEPROM]]&lt;br /&gt;
 [[Datei:WC-Mini-Shield-I2C.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMS1117-3,3V-Spannungsregler-Modul ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur 3,3V-Versorgung des ESP8266-WLAN- Moduls sowie weiterer Peripherie wird ein AMS1117-3,3V-Spannungsregler-Modul eingesetzt. Die Shields aus der Sammelbestellung sind für die Spannungsregler-Module wie in der Abbildung rechts ausgelegt. Beispiele für Bezugsquellen sind in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Die leuchtende rote LED (D1) zeigt an, das die Ausgangsspannung von 3,3V vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:AMS1117-Spannungsregler-Modul.jpg|miniatur|AMS1117-Spannungsregler-Modul]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-AMS1117.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Schalten der 5V-Versorgungsspannung für die LED-Stripes ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Beim Abschalten der LED-Stripes kann neben den Daten, wenn gewünscht, auch die 5V-Versorgungsspannung abgeschaltet werden. Je nach Zahl des LEDs sinkt der Verbrauch um 1 W bis 2 W (--&amp;gt; ca. 3 - 5 EUR im Jahr). Ansonsten wird dem Controller auf den WS2812 nur mitgeteilt, dass gerade alle Kanäle aus sein sollen.&lt;br /&gt;
&lt;br /&gt;
Die Abschaltung der Versorgungsspannung erfolgt dann mit Hilfe der im Schaltplanauszug rechts gezeigten Bauteile. Die Diode begrenzt die Spannung an D IN auf 0,3 V, falls bei abgeschalteter Versorgungsspannung Datenimpulse anliegen – das wird auch durch die Software verhindert. &lt;br /&gt;
&lt;br /&gt;
Ab V3 der Shields muss bei Nichtverwendung der Spannungsabschaltung eine Drahtbrücke eingelötet werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WS2818_Schalten_1.png|miniatur|Schaltplanauszug: Schalten Versorgungsspannung]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Netzteil ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur Spannungsversorgung der WordClock wird ein (Stecker-)Netzteil mit einer Ausgangsspannung von 5V und einer Belastbarkeit von 4A benötigt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt – vergleichbare Netzteile anderer Lieferanten wie eBay oder AliExpress usw. können ebenfalls verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, schon vor der Inbetriebnahme der WordClock die Ausgangsspannung des Netzteils zu messen, da in seltenen Fällen die Ausgangsspannung des Netzteils höher ist als die für die WS2812B-LEDs maximal zulässige Spannung von 5,3V.&lt;br /&gt;
&lt;br /&gt;
Für eine Wordclock12h ohne Ambilight reicht ein Netzteil mit einer Belastbarkeit von 2A.&lt;br /&gt;
&lt;br /&gt;
Der Querschnitt der Verkabelung vom Netzteil zur WordClock ist so zu wählen, dass an den Anschlussklemmen des Shields auch bei angeschalteten LEDs eine Spannung von mindestens 4,75V anliegt. &lt;br /&gt;
&lt;br /&gt;
Bei einer WordClock12h ohne Ambilight und einer Kabellänge 2m reicht ein Querschnitt von 2x0,5mm². &lt;br /&gt;
&lt;br /&gt;
Der für eine WordClock24h, ggf. mit Ambilight, notwendige Querschnitt kann mit einem Tool wie z. B.&lt;br /&gt;
 &lt;br /&gt;
https://www.opendcc.de/info/verdrahtung/wiring.html &lt;br /&gt;
&lt;br /&gt;
abgeschätzt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wer nicht über entsprechende Kenntnisse und Erfahrungen im Umgang mit 230V-Netzspannung verfügt, sollte unbedingt ein Stecker- oder Tischnetzteil verwenden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschluss USB-UART-Adapter ==&lt;br /&gt;
&lt;br /&gt;
Man benötigt in folgenden Fällen einen USB-UART-Adapter:&lt;br /&gt;
&lt;br /&gt;
* Logging der Meldungen auf dem PC&lt;br /&gt;
* Flashen des ESP8266 über das verwendete STM32-Board&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo ist ein USB-UART-Adapter bereits integriert - und zwar im oberen ST-Link-V2-Teil des Boards. Hier ist also kein weiterer Anschluss notwendig. Erst wenn das ST-Link-V2-Teil vom Rest des Boards abgetrennt wird, müssen RX und TX wieder verbunden werden, wenn man den UART-Adapter nutzen will. Also einfach das Board mit dem PC über USB verbinden - fertig. Eventuell muss man noch den STM32 Virtual COM Port Driver installieren. Der entsprechende Link zum Herunterladen steht unter [[WordClock_mit_WS2812#Download|Download]].&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board wird ein externer USB-UART-Adapter benötigt. Dabei schließt man ihn folgendermaßen an:&lt;br /&gt;
&lt;br /&gt;
* USB-UART TX an PA10 (RX)&lt;br /&gt;
* USB-UART RX an PA9 (TX)&lt;br /&gt;
* UAB-UART GND an GND&lt;br /&gt;
&lt;br /&gt;
Solche Adapter (am besten einen, der mit 3,3V-Pegeln arbeitet) gibt es bei eBay oder Amazon für unter 5 EUR. &amp;lt;br /&amp;gt;&lt;br /&gt;
Bei USB-UART-Adaptern mit FTDI-Chip oder Prolific PL2303-Chip sind Fakes im Handel, die von der Original-Treibersoftware nicht korrekt unterstützt werden. &#039;&#039;&#039;Besser sind Adapter mit CH340G- oder CP2102-Chip.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschlusstabelle ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Device || [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] || [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#TSOP31238|TSOP31238]] ([[IRMP]])  || GPIO:   PC10               || GPIO:   PB3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]       || GPIO:   PD2                || GPIO:   PB5&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#LDR|LDR]]                         || GPIO:   PC4                || GPIO:   PA5&lt;br /&gt;
|- &lt;br /&gt;
| WordClock-Logger (USB)                                   || USART2: TX=PA2  RX=PA3 (bereits integriert)    || USART1: TX=PA9  RX=PA10 (externer USB-UART-Adapter)&lt;br /&gt;
|- &lt;br /&gt;
| User Button  || GPIO: USER=PC13 (on-board)               || GPIO: USER=PA6 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| WPS Button  || GPIO: WPS=PC5  (auf dem Shield ab v3)     || GPIO: WPS=PA7 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] Rx/Tx       || USART6: TX=PA11 RX=PA12        || USART2: TX=PA2  RX=PA3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] RST/CH_PD   || GPIO:   RST=PA7 CH_PD=PA6      || GPIO:   RST=PA0 CH_PD=PA1&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO0       || GPIO:   GPIO0=PA4              || GPIO: GPIO0=PA4&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO13/15   || USART1: GPIO13=PA9 GPIO15=PA10 || USART1: GPIO13=PA9 GPIO15=PA10&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#DCF77|DCF77]]                 || GPIO:   DATA=PC11 PON=PC12     || GPIO:   DATA=PB8  PON=PB9 &lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC / EEPROM]] || I2C3:   SCL=PA8 SDA=PC9        || I2C1:   SCL=PB6 SDA=PB7&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#WS2812|WS2812]]               || DMA1:   PC6                    || DMA1:   PA8&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 Power On/Off                                  || PC8                            || PB0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist USART2 bereits fest mit dem auf dem ST-Link-V2-Teil des Boards integrierten UART-USB-Adapter verbunden. Hier sind also keine extra Verbindungen mehr notwendig - erst wenn das ST-Link-V2-Teil abgesägt wird. Und auch dann kann man den USB-UART-Adapter vom ST-Link-V2 weiterverwenden.&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board benötigt man allerdings einen externen USB-UART-Adapter - am besten einen, der mit 3,3V-Pegeln arbeitet. Diese findet man zuhauf bei Amazon oder eBay für ca. 5 EUR.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Teileliste für WC12h oder WC24h und Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:35%&amp;quot; | Bezeichnung || Bezugsquelle&lt;br /&gt;
|-&lt;br /&gt;
| Board&lt;br /&gt;
||  &lt;br /&gt;
STM32 MiniBoard (empfohlen für WC12h)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=STM32F103C8T6 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F103C8T6 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oder&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
STM32 Nucleo&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=nucleo AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F411%20Nucleo eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/Nucleo-STM32F411 Watterott]&lt;br /&gt;
|-&lt;br /&gt;
| USB-UART-Adapter - NUR für Logging und (erstmaliges) Flashen des ESP8266-Moduls am MiniDevBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://de.aliexpress.com/wholesale?SearchText=uart+CH340G AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=USB%20UART%20Adapter eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 ST-Link - NUR für MiniBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;&lt;br /&gt;
Prinzipiell reicht USB-UART-Adapter aus aber ein ST-Link wird zusätzlich empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=st-link+v2 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 MiniBoard Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für MiniBoard notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Das per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Shield enthält sämtliche Anschlüsse um alle benötigten Module mit einander zu verbinden. Der STM32F103 wird direkt in das Shield gesteckt und verlötet - er wird nicht gesockelt!&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321201 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| STM32 Nucleo Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für Nucleo-Board notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Diese per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Adapterplatine wird auf das Nucleo-Board aufgesteckt. Sie enthält sämtliche Anschlüsse für alle vorgesehen Module.&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321193 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 LED Stripes &lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Stripes mit einem Sonderformat über die [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h können Standard Stiles mit 60 LEDs / Meter verwendet werden.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ws2812+60+ip30 AliExpress]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=WS2812%2060%20ip30 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Frontplatte&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Frontplatten über eine Sammelbestellung aus [[WordClock_mit_WS2812#WC12h_Sammelbestellung_Frontplatten | Plexiglas ]] oder [[Word_Clock#Sammelbestellung_.28Edelstahl.29 | Edelstahl]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h gibt es eine Sammelbestellung von Frontplatten aus &lt;br /&gt;
[[WordClock_mit_WS2812#WC24h_Sammelbestellung_Frontplatten | Plexiglas]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird kein Rahmen (siehe unten) verwendet werden zusätzliche Teile (z.B. [[Word_Clock_Variante_1_-_getrennte_Steuerplatine#Befestigung_der_Frontplatte_.28.E2.80.9CPlexiglasvariante.E2.80.9D.29_an_der_Zwischenplatte| Magnete]]) zur Befestigung der Frontplatte benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| Zwischenboden&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h und WC24h sind Zwischenböden über eine [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alu-Platte&lt;br /&gt;
||&amp;lt;br&amp;gt;Aluminiumblech,  1 mm Stärke. Für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) und alle WC12h Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/(aluminium%2C+alu)+(blech%2C+platte) ebay]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DS3231 [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC und EEPROM]]&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ds3231 AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=DS3231 eBay]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Falls bei dem Modul keine Batterie mitgeliefert wird, wird zusätzlich folgende Knopfzelle benötigt:&lt;br /&gt;
[http://www.reichelt.de/directlink/CR2032/index.html?&amp;amp;ACTION=3&amp;amp;ARTICLE=26550&amp;amp;GROUPID=4241&amp;amp;ARTNR=CR+2032&amp;amp;&amp;amp;SHOW=1&amp;amp;SID=12UXp5iH8AAAIAAAE-gdod799e4cf62d5cd255e52464fe671b8ea Reichelt CR2032]&lt;br /&gt;
|-&lt;br /&gt;
| Netzteil&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/MDY0ODQ2OTk-/Stromversorgung/Netzgeraete/Steckernetzgeraete/Steckernetzteil_QUATPOWER_PSN5_4000H5_5_5_V_4_A_5_5_2_1_mm.html Pollin Netzteil 5V 4A]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-01 (WLAN-Modul) bis Shield V2&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-01 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-01 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-WiFi-Serial-Transceiver-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-01 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-12F (WLAN-Modul) ab Shield V3 (OTA)&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-12F AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-12F eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/WLAN-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-12 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Infrarot-Decoder (IRMP)&lt;br /&gt;
||&amp;lt;br&amp;gt;mit IRMP Fernbedienungsensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321194 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird noch eine [http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.V0CsuCFgfs0 IR-Fernbedienung] benötigt, die optional mit einer [[WordClock_mit_WS2812#IR-Fernbedienung|Folie]] versehen werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Rahmen&lt;br /&gt;
||&amp;lt;br&amp;gt;Innenmaße 450x450 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Funktioniert nicht zusammen mit Ambilight&amp;lt;br&amp;gt;&lt;br /&gt;
Z. B. [https://www.alutech.de/alu---zuschnitt-profil-18.html Alurahmen]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Ambilight&lt;br /&gt;
||&amp;lt;br&amp;gt;Mittels zusätzlicher WS2812 LED Stripes per &amp;lt;br&amp;gt;[[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]]&lt;br /&gt;
Funktioniert nicht zusammen mit einem Rahmen. Erfordert Zwischenboden mit entsprechender Ausfräsung (bisher nur für WC12 per Sammelbestellung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Fotowiderstand (LDR) zur Lichtmessung&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://www.reichelt.de/Fotodioden-etc-/LDR-07/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=10208&amp;amp;GROUPID=3045&amp;amp;artnr=LDR+07&amp;amp;SEARCH=ldr07 Reichelt LDR07]&amp;lt;br&amp;gt; Ggf. Ersatz: [https://www.reichelt.de/Fotodioden-etc-/A-906011/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=47506&amp;amp;GROUPID=3045&amp;amp;artnr=A+906011&amp;amp;SEARCH=fotowiderstand Reichelt A906011]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-1-0-k-Ohm-9-1-k-Ohm/1-4W-1-0K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1315&amp;amp;GROUPID=3065&amp;amp;artnr=1%2F4W+1%2C0K&amp;amp;SEARCH=%252A Reichelt Widerstand 1,0k] (bei Verwendung von LDR07 oder A906011)&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-10-k-Ohm-91-k-Ohm/1-4W-10K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1338&amp;amp;GROUPID=3066&amp;amp;artnr=1%2F4W+10K&amp;amp;SEARCH=%252A Reichelt Widerstand 10k] (bei Verwendung des zwischenzeitlich empfohlenen A906032 und auch bei Nicht-Anschluss des LDRs)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Temperatur-Sensor&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DS1820 Temperatur-Sensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321196 Reichelt Warenkorb]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: DCF77-Empfänger&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DCF werden folgende Teile benötigt:&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Pollin DCF77 Empfänger]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321191 Reichelt Warenkorb]&lt;br /&gt;
&amp;lt;br&amp;gt; ggf. IC-Sockel für den OP (Reichelt GS 8P)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: WS2812 Spannungsabschaltung&lt;br /&gt;
||&amp;lt;br&amp;gt;mit WS2812 Spannungsabschaltung werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321190 Reichelt Warenkorb]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Start =&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Geflasht wird mit dem ST-Link-Programm, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dient die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]]. Dazu nimmt man eine WLAN-Verbindung mit dem ESP8266-Modul auf. Für die erste Konfiguration wird das ESP8266 zunächst als eigener Access-Point gestartet. Anschließend kann man über das [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] die Zugangsdaten zu dem eigenen WLAN-Router einstellen. Im Folgenden läuft das ESP8266-Modul dann als WLAN-Client.&lt;br /&gt;
&lt;br /&gt;
Für Entwickler und zur Diagnose kann man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) verwenden, um über ein Mini-USB-Kabel Debug- und Log-Meldungen mitzuschneiden. Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die &amp;quot;blauen&amp;quot; USB3.0-Buchsen möglichst meiden.&lt;br /&gt;
&lt;br /&gt;
== Ablauf ==&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)&lt;br /&gt;
* Wenn man die EmBitz-IDE einsetzt: Nach [[WordClock_mit_WS2812#WordClock-Quellcode_selbst_.C3.BCbersetzen|Anleitung: WordClock-Quellcode selbst übersetzen]] vorgehen&lt;br /&gt;
* Die entsprechende Hex-Datei (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32 MiniDevBoards ==&lt;br /&gt;
&lt;br /&gt;
Hier eine ausführliche Schritt für Schritt Anleitung um die Software vom .HEX File aus dem Artikel in das STM32 MiniDevBoard zu bekommen:&lt;br /&gt;
&lt;br /&gt;
Benötigt werden neben dem STM32 MiniDevBoard:&lt;br /&gt;
* Hardware: ST-Link V2 (z. B. von [https://www.aliexpress.com/wholesale?ltype=wholesale&amp;amp;d=y&amp;amp;origin=y&amp;amp;isViewCP=y&amp;amp;SearchText=st-link+v2&amp;amp;blanktest=0&amp;amp;tc=af Aliexpress] oder [http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay])&lt;br /&gt;
* Software: STM32 ST-Link Utility, siehe: http://www.st.com/en/development-tools/st-link-v2.html&lt;br /&gt;
* Installation der Software &amp;quot;STM32 ST-Link Utility&amp;quot;: https://www.youtube.com/watch?v=ONzRL06Umfo&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Danach im Geräte-Manager von Windows unter „USB-Geräte“ kontrollieren, ob die Installation erfolgreich war.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 1.PNG|miniatur|Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ST-Link v2 mit STM32 MiniDevBoard verbinden (Achtung: Die Anschlussbelegung an ST-Link v2 und die Beschriftung am MiniDevBoard ist nicht immer einheitlich, daher bitte immer auf die Beschriftung achten!). Verbunden werden folgende Pins:&lt;br /&gt;
* St-Link v2 &amp;quot;VCC&amp;quot; mit &amp;quot;3.3&amp;quot; oder &amp;quot;3.3V&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWDIO&amp;quot; mit &amp;quot;DIO&amp;quot; oder &amp;quot;SWDIO&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWCLK&amp;quot; mit &amp;quot;CLK&amp;quot; oder &amp;quot;SWCLK&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;GND&amp;quot; mit &amp;quot;GND&amp;quot; des MiniDevBoard&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 2.PNG|miniatur|Anschluss des ST-Link v2 Adapters]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Das STM32 ST-Link Utility öffnen und im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 3.PNG|miniatur|Verbindung zum STM Board im STM32 ST-Link Utility herstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Im STM32 ST-Link Utility im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im STM32 MiniDevBoard konsistent zu den Informationen im .HEX File sind&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 4.PNG|miniatur|Reiter &amp;quot;Target&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Die gewünschte Hex-Datei passend zur Hardware auswählen (im Beispiel: WordClock 12h mit „Standard“-WS2812) und auf „Öffnen“ klicken&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 5.PNG|miniatur|Auswahl der Firmware / des .HEX Files]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Den Flashvorgang mit „Start“ beginnen. An den standardmäßig gesetzten Optionen muss nichts weiter verändert werden&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 6.PNG|miniatur|rechts|Start des Flashvorgangs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Erfolgreiches Flashen wird anschließend im Logbereich des STM32 ST-Link Utility (unten im Fenster) angezeigt. Sollten im Log Fehlermeldungen auftauchen ist beim Flashen etwas schiefgelaufen. Verkabelung prüfen (z.B. DIO und CLK vertauscht?) und wenn das Problem weiterhin besteht im Forum (https://www.mikrocontroller.net/topic/385955) nach Hilfe fragen.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 7.PNG|miniatur|Logbeispiel: Flashen erfolgreich!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Zum Abschluss noch in der Software unter „Target“ die Verbindung der Software zum ST-Link v2 mit „Disconnect“ trennen. Jetzt kannst du auch das ST-Link V2 USB Modul aus dem Port entfernen und die Verkabelung vom STM32 MiniDevBoard trennen. Im Speicher des Boards ist jetzt die zuvor ausgewählte Software und du hast dein Modul erfolgreich geflasht! &lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 8.PNG|miniatur|ST-Link v2 trennen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Upgrade der Firmware des ST-Link v2 - DFU mode ====&lt;br /&gt;
Wenn versucht wird die Firmware des ST-Link v2 zu aktualisieren und dies scheitert mit der Meldung &amp;quot;Not in DFU Mode&amp;quot;, so kann folgende Vorgehensweise helfen: &lt;br /&gt;
# ST-Link Utility schließen und ST-Link v2 vom USB Port entfernen. &lt;br /&gt;
# Miniboard vom ST-Link trennen. &lt;br /&gt;
# ST-Link Utility starten aber noch nichts anschließen. &lt;br /&gt;
# Firmware Upgrade Dialog öffnen. &lt;br /&gt;
# Nun ST-Link am USB Port anschließen. MiniBoard nicht anschließen. &lt;br /&gt;
# Update starten. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Ablauf ist nur notwendig, wenn man die Log-Meldungen aus Diagnose-Zwecken mitschneiden möchte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PuTTY starten&lt;br /&gt;
* PuTTY einstellen: Auswahl &amp;quot;Serial&amp;quot;, Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200&lt;br /&gt;
* Einen Session-Namen eingeben, z.B. &amp;quot;Nucleo&amp;quot;&lt;br /&gt;
* Auf SAVE klicken, dann kann man die Session später wieder auswählen&lt;br /&gt;
* Open anklicken&lt;br /&gt;
* RESET-Button am [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] drücken&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039; Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nicht die bereits ausgegebenen Log-Meldungen. Um den Ablauf des Programms von Anfang an zu verfolgen, drückt man auf dem Board einfach den Reset-Knopf. Dann beginnt die Ausgabe ganz von vorn.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039; Für das Logging sollten lediglich RX und GND des externen USB-UART-Adapters angeschlossen werden. TX vom Adapter bzw. RX auf dem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] sollten offen bleiben. Sonst kann es bei Verwendung des ESP8266 ESP-12F dazu kommen, dass dieser nicht mehr bootet.&lt;br /&gt;
&lt;br /&gt;
Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund im PuTTY ist normalerweise schwarz. Möchte man lieber eine Ausgabe in schwarz auf weiß, kann man das folgendermaßen umstellen:&lt;br /&gt;
&lt;br /&gt;
   Change Settings -&amp;gt; Window -&amp;gt; Colours:&lt;br /&gt;
&lt;br /&gt;
      Default Foreground: 2 2 2&lt;br /&gt;
      Default Bold Foreground: 0 0 0&lt;br /&gt;
      Default Background: 245 245 245&lt;br /&gt;
      Default Bold Background: 255 255 255&lt;br /&gt;
      Cursor Text: 0 0 0&lt;br /&gt;
      Cursor Color: 255 0 0&lt;br /&gt;
      (Rest kann man so lassen)&lt;br /&gt;
&lt;br /&gt;
Anschließend zurück über &amp;quot;Session&amp;quot; oben links und: &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des WLAN-Moduls ==&lt;br /&gt;
&lt;br /&gt;
=== Flash des WLAN-Moduls ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Genereller Hinweis: Es ist zu empfehlen das OTA Update auszuprobieren, auch wenn ihr schon die aktuelle Version geflasht habt! Es kommt vereinzelt vor, dass dieses nicht funktioniert. Mit der Version 2.7.1 wurde ein extra Button (Format ESP8266 SPIFFS) unter dem Menüpunkt Update hinzugefügt mit dem der interne Zwischenspeicher für die Updatedateien auf dem ESP gelöscht werden kann. Sollte es auch danach nicht funktionieren, sollte man die verschiedenen Flasher durchprobieren.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
==== esp8266_flasher.exe ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Für das ESP8266-Wlan-Modul wird aus Stabilitäts- und Geschwindigkeitsgründen eine spezielle auf die WordClock-Anwendung abgestimmte Firmware benutzt (siehe [[WordClock_mit_WS2812#Download|Download]]), die über das STM32-Board geflasht werden kann. Das ESP8266 kann also während des Flashens in der WordClock-Schaltung verbleiben.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo wird der integrierte USB-UART-Adapter verwendet. Beim Anschluss des Nucleo-Board per USB an den PC wird automatisch ein COM-Device angelegt, z.B. COM12. Dafür braucht man aber den entsprechenden Virtual COM Port Driver, siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|Software für Windows]].&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]] wird ein externer USB-UART-Adapter, welcher mit 3,3V-Pegeln arbeitet, verwendet. Wie er angeschlossen wird, sieht man in der [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|Anschluss-Skizze]] und auch in obiger [[WordClock_mit_WS2812#Anschlusstabelle|Anschlusstabelle]]. Das Shield muss außerdem extern mit +5V versorgt werden. Anderenfalls ist zumindest das ESP-Modul ohne Spannungsversorgung. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig: Handelt es sich hier um ein ESP8266 ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]], darf TX vom USB-UART-Wandler erst dann angeschlossen werden, wenn der ESP8266 sich bereits im Flash-Modus befindet - nicht früher. Siehe Beschreibung unten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zum eigentlichen Flashen lädt man am besten das sehr einfach gehaltene Programm &#039;&#039;&#039;[https://github.com/Stadslab/ESP8266_example/raw/master/ESP8266_flasher_V00170901_00_Cloud%20Update%20Ready/esp8266_flasher.exe esp8266_flasher.exe]&#039;&#039;&#039; herunter.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-ESP-Flasher.png|miniatur|esp8266_flasher.exe für das ESP8266-Modul]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativ dazu kann man auch  von der Espressif-Seite zunächst die ESP8266-Flash-Software &#039;&#039;&#039;FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar&#039;&#039;&#039; (http://bbs.espressif.com/download/file.php?id=856) herunterladen und das Archiv an geeigneter Stelle entpacken. Es müssen dann als Einstellungen die im Bild rechts markierten Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Dann ist das weitere Vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eventuell gestartetes PuTTY beenden, um COM-Schnittstelle freizugeben&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) abziehen!&lt;br /&gt;
* Reset-Taste drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3) drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;. Auf älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] gibt es diese Taste nicht, sondern ist lediglich als Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) bezeichnet. Hier muss man mittels eines Jumpers eine Verbindung zu GND daneben herstellen.&lt;br /&gt;
* Reset-Taste loslassen&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] nach 2 Sekunden loslassen bzw. Jumper ziehen&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) wieder anschließen.&lt;br /&gt;
&lt;br /&gt;
Das WordClock-Programm auf dem STM32 versetzt dann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul in den Flash-Modus und verbindet dann die beiden UARTs softwaremäßig 1:1, d.h. die Daten werden vom USB-Anschluss transparent an das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Nun startet man das Programm &#039;&#039;&#039;esp8266_flasher.exe&#039;&#039;&#039; (bzw. ESP_DOWNLOAD_TOOL_V2.4.exe) und wählt durch Klick auf die Schaltfläche &#039;&#039;&#039;Bin&#039;&#039;&#039; die Datei &#039;&#039;&#039;ESP-WordClock.bin&#039;&#039;&#039; aus - siehe [[WordClock_mit_WS2812#Download|Download]]. Außerdem muss der COM-Port an den tatsächlichen Anschluss angepasst werden. Beim ESP-01 stellt man die Flash-Size auf 4MBit (=512KB), beim ESP-12F auf 32MBit (=4MB).&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-ESP8266-FLASH.png|miniatur|Alternative: ESP FLASH DOWNLOAD TOOL]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach Drücken auf &#039;&#039;&#039;Download&#039;&#039;&#039; (bzw. &#039;&#039;&#039;Start&#039;&#039;&#039; beim Alternativprogramm) sollte nun das Flashen des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls beginnen. Eine eventuell am Ende auftretende Fehlermeldung &amp;quot;Failed to leave Flash mode&amp;quot; kann dabei getrost ignoriert werden. Anschließend startet man den STM32 (und damit auch das WLAN-Modul) neu durch kurzes Drücken der Reset-Taste.&lt;br /&gt;
&lt;br /&gt;
==== Flash Download Tool des Chipherstellers ====&lt;br /&gt;
&lt;br /&gt;
Unter (http://www.espressif.com/en/support/download/other-tools?keys=&amp;amp;field_type_tid%5B%5D=14) findet ihr die jeweils aktuellste Version (V3.6.2 vom 2017.11.16) des Hersteller.&lt;br /&gt;
Das vorgehen ist wie bei der Version v2.4.&lt;br /&gt;
&lt;br /&gt;
==== NODEMCU Firmware Flasher ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativprogramm NODEMCU Firmware Flasher von (https://github.com/nodemcu/nodemcu-flasher) herunter laden. Es steht in den Unterordnern ein WIN32 oder Win64 Bit Programm zur Verfügung.&lt;br /&gt;
1. Zuerst sollte nach dem Start unter Advanced die Baudrate eingestellt werden.&lt;br /&gt;
2. Danach folgt die Auswahl der zu flashenden Firmware unter Config&lt;br /&gt;
3. Dann den COM-Port auswählen und&lt;br /&gt;
4. Flashen drücken.&lt;br /&gt;
Ist die Anzeige nicht wie im letzten Teiles des Bildes half bei mir (MockUp) nur das zurücksetzen der Einstellungen auf Default und wieder setzen der Parameter. Das Programm ist auf alle fälle nicht so stabil wie die anderen was den Verbindungsaufbau anbelangt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-NODEMCU-Flasher.png|miniatur|NODEMCU Firmware Programmer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Start als Access-Point ===&lt;br /&gt;
&lt;br /&gt;
Folgender Ablauf ist nur notwendig, wenn die Software-Version älter als 2.5.0 ist oder keine [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] (ab Shield v3) angeschlossen ist. Sonst kann direkt zu [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]] gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
Um für die Konfiguration der WLAN-Daten (Zugang zum WLAN-Router oder -Gateway) mit dem ESP8266 Kontakt aufzunehmen, muss man zunächst dafür sorgen, dass das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul als Access-Point arbeitet. Dafür drückt man die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board (blau) bzw. die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] verbindet man den Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) kurz mit dem danebenliegenden GND-Pin.&lt;br /&gt;
&lt;br /&gt;
Unmittelbar nach dem Drücken der Taste erscheint die IP-Adresse des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls als Laufschrift - und auch im Log. Nun sucht man auf dem PC oder Tablet nach dem WLAN-Netz mit dem Namen &amp;quot;wordclock&amp;quot; und verbindet das Gerät mit diesem Netz. Als Netzwerkschlüssel gibt man &amp;quot;1234567890&amp;quot; ein. Sobald die Verbindung hergestellt ist, startet man einen Browser und gibt als URL die ausgegebene IP-Adresse ein, z.B. http://192.168.4.1/ .&lt;br /&gt;
&lt;br /&gt;
Sobald die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] erscheint, wählt man den Menüpunkt &amp;quot;Network&amp;quot; aus, wählt &amp;quot;Wlan-Client&amp;quot; aus und gibt die SSID (&amp;quot;AP&amp;quot;) und den Key des WLAN-Routers ein und bestätigt die Eingabe mit &amp;quot;Save&amp;quot;. Das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul wird nun als WLAN-Client umkonfiguriert. War das erfolgreich, erscheint nun auf dem Display die neue IP-Adresse. Die Browser-Seite wird dann ungültig. Man kann seinen PC nun wieder mit dem bisherigen WLAN-Gateway verbinden und im Folgenden die neue IP-Adresse verwenden.&lt;br /&gt;
&lt;br /&gt;
Gibt es an dem Ort, wo die Uhr betrieben werden soll, kein WLAN, kann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul auch weiterhin als Accesspoint (&amp;quot;AP&amp;quot;) betrieben werden, damit man es über WLAN fernsteuern kann. In diesem Fall sollte nicht &amp;quot;WLAN-Client&amp;quot;, sondern &amp;quot;AP&amp;quot; ausgewählt werden, eine entsprechende SSID und einen mindestens 10 Zeichen langen Key einstellen. Anschließend kann man sich mit PC/Handy/Tablet in das neue WLAN einklinken, um die Uhr per Browser oder Android-App fernzusteuern. Ein Zugriff auf einen externen Timeserver ist dann selbstverständlich nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
=== Start per WPS-Button ===&lt;br /&gt;
&lt;br /&gt;
Ab Software-Version 2.6.0 wird WPS unterstützt. Dazu drückt man die auf dem Shield (ab Shield-Version v3) befindliche [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] für einen kurzen Moment und anschließend auf dem WLAN-Gateway (bzw. Router). Bei der Fritzbox muss man die Taste solange drücken, bis die WLAN-LED blinkt. Im Normalfall wird dann die Verbindung innerhalb weniger Sekunden aufgenommen - erkennbar daran, dass auf dem LED-Display die vergebene IP-Adresse als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Befindet der ESP8266 bereits im AP-Modus, kann WPS auch im Browser über den Klick auf die Schaltfläche &amp;quot;WPS&amp;quot; im Reiter [[WordClock_mit_WS2812#Network|Network]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Start als WLAN-Client ===&lt;br /&gt;
&lt;br /&gt;
Bei jedem folgenden Start wird nur noch die Einstellung &amp;quot;WLAN-Client&amp;quot; verwendet. Sobald sich das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul mit dem gewünschten Access-Point (&amp;quot;AP&amp;quot;) verbunden hat, wird auf dem LED-Display die neue IP-Adresse des Moduls in Laufschrift ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Viele WLAN-Router sorgen automatisch dafür, dass ein WLAN-Client auch noch nach Tagen dieselbe IP-Adresse hat. Wenn das nicht der Fall sein sollte, kann man meist in den Router-Einstellungen dafür sorgen, dass der Client mit der MAC-Adresse xx-xx-xx-xx-xx-xx immer dieselbe IP-Adresse vom WLAN-Router zugeteilt bekommt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Web-Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Neben der Ausgabe der installierten Firmware-Version sieht man hier unter anderem auch, ob das EEPROM erkannt wurde. Es wird entweder &amp;quot;online&amp;quot; oder &amp;quot;offline&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man keine Verbindung zum Internet, kann man auf der Hauptseite Datum und Uhrzeit auch manuell eingeben. Außerdem kann man hier einen Ticker-Text angeben, welcher dann auf dem Display als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Mit den Schaltflächen &amp;quot;Power on&amp;quot; bzw. &amp;quot;Power off&amp;quot; kann das LED-Display ein- und ausgeschaltet werden. Die Power-Buttons schalten erstmal generell auch das Ambilight ein bzw. aus. Es kann aber über die entsprechenden Schaltflächen separat ein- und ausgeschaltet werden. Diese wirken aber nur, wenn die Uhr selbst im eingeschalteten Zustand (&amp;quot;Power on&amp;quot;) ist. Sonst werden sie ignoriert.&lt;br /&gt;
&lt;br /&gt;
Mit dem Klick auf &amp;quot;Learn IR remote control&amp;quot; kann eine IR-Fernbedienung angelernt werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Main.png|miniatur|Web-Interface: Hauptmenü]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier werden die aktuelle IP-Adresse und die Firmware-Version des ESP8266-Moduls angezeigt. Auch kann man hier die Verbindung zu einem WLAN-Gateway oder -Router angeben. In diesem Fall wählt man in der Zeile &amp;quot;WLAN-Client&amp;quot; den gewünschten Accesspoint aus und gibt dann noch den korrekten Key ein. Wichtig: Enthält der Key internationale Sonderzeichen wie zum Beispiel Umlaute, kann die WLAN-Anwendung fehlschlagen, weil das Web-Interface einen anderen Zeichensatz als der Accesspoint verwendet. In diesem Fall sollte man den Key im Accesspoint ändern oder die Möglichkeit einer Verbindung per WPS wählen. Nach erfolgter Einstellung wird die gewünschte Verbindung aufgebaut und die evtl. neue IP-Adresse auf dem LED-Display als Laufschrift eingeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039; ist die alternative Möglichkeit, das ESP8266-Modul über WPS ins Netz einzubinden. Dafür drückt man zuerst die WPS-Taste am Router (bei der FritzBox solange, bis die WLAN-LED blinkt) und anschließend die [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] auf dem Shield - oder die WPS-Schaltfläche im Web-Interface.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man hier den [[WordClock_mit_WS2812#Timeserver|Timeserver]] und die [[WordClock_mit_WS2812#Timeserver|Zeitzone]] konfigurieren, siehe entsprechendes [[WordClock_mit_WS2812#Timeserver|Kapitel]].&lt;br /&gt;
&lt;br /&gt;
Mit der Schaltfläche &amp;quot;Get net time&amp;quot; kann die aktuelle Uhrzeit von dem konfigurierten Timeserver ad hoc abgerufen werden. Das ist aber im Normalfall nicht notwendig, da dies ohnehin alle 3800 Sekunden automatisch geschieht. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Network.png|miniatur|Web-Interface: Netzwerk-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hier wird die aktuelle Temperatur von RTC und DS18xx (sofern vorhanden) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Wegen der Selbsterwärmung der Sensoren werden meist zu hohe Werte gemessen. Dagegen hilft beim DS18xx zum Beispiel ein Kühlkörper. Sollte das nicht möglich oder nicht gewünscht sein, kann hier sowohl für RTC als auch für DS18xx eine Korrektur in 0,5°C Schritten angegeben werden. Bei Eingabe von beispielsweise &amp;quot;5&amp;quot; werden 2,5°C von der Messung abgezogen. Die Korrekturwerte sollte man frühestens nach einigen Minuten Betrieb wählen, damit RTC/DS18xx auch die endgültige Betriebstemperatur erreicht haben.&lt;br /&gt;
&lt;br /&gt;
Beim Betätigen der Schaltfläche &amp;quot;Display temperature&amp;quot; wird die aktuelle Temperatur auf dem LED-Display entweder als Laufschrift (WordClock12h) oder als Wort-Anzeige (Word-Clock24h) eingeblendet. Diese Anzeige kann in einem gewissen Zeitintervall auch automatisch erfolgen, siehe &#039;&#039;&#039;[[WordClock_mit_WS2812#Display|Display]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Temperature.png|miniatur|Web-Interface: Temperatur-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Um Wetterdaten auf der Uhr ausgeben zu können, braucht man eine sogenannte APPID (auch API-Id genannt), die man durch eine Registrierung bei http://openweathermap.org kostenlos beziehen kann. Am einfachsten findet man sie über den Menü-Eintrag &amp;quot;Price&amp;quot;. Dort kann man dann eine API-Id in der Free-Version generieren lassen.&lt;br /&gt;
&lt;br /&gt;
Diese APPID wird dann hier eingetragen. Des Weiteren ist notwendig:&lt;br /&gt;
&lt;br /&gt;
* entweder die Angabe eines Ortes&lt;br /&gt;
* oder die Angabe von Geo-Koordinaten (Longitude/Lattitude)&lt;br /&gt;
&lt;br /&gt;
Gerade bei Großstädten ist es sinnvoll, die genauen Koordinaten des eigenen Wohnorts anzugeben, da das Wetter bereits lokal unterschiedlich sein kann. Werden sowohl Ort als auch die Geo-Koordinaten angegeben, haben die Koordinaten Priorität. Auch kann es sein, dass bei kleineren Ortschaften der Ort selbst bei openweathermap.org unbekannt ist. Im Zweifel sollte man sich besser für die Koordinaten-Variante entscheiden. Wichtig bei der Angabe eines Ortes ist es, die Stadt in der eigenen Landessprache anzugeben, also z.B. &amp;quot;Koeln&amp;quot; oder &amp;quot;Muenchen&amp;quot;. Die Angabe von z.B. &amp;quot;Cologne&amp;quot; ist nicht zielführend, weil dies ein kleiner Ort in Italien ist ;-)&lt;br /&gt;
&lt;br /&gt;
Kennt man die Geo-Koordinaten vom gewünschten Standort nicht, kann man sie über Google-Earth ermitteln. Dafür muss man nicht unbedingt Google-Earth herunterladen, es reicht das Aufrufen von Google-Maps im Browser. Anschließend kann man dann unten links auf die Web-Version von Google-Earth wechseln. Ein Klick auf den eigenen Standort lässt dann die gewünschten Koordinaten erscheinen. Dabei ist die erste Zahl (irgendetwas um die 50) die Lattitude und die zweite Zahl (in der Größenordnung 7) die Longitude. Die Zahlen sollen mit Dezimalpunkt und nicht Dezimalkomma eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Ein abschließender Klick auf die Schaltfläche &amp;quot;Get weather&amp;quot; bezieht dann von openweathermap.org das aktuelle Wetter vom gewünschten Standort. Die Wetterdaten (Temperatur und Wetterlage) werden dann als Laufschrift auf dem Display ausgegeben. Diese Anzeige kann in einer kommenden Version über ein einstellbares Zeitintervall dann auch automatisch erfolgen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Weather.png|miniatur|Web-Interface: Wetterdaten-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDR ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Mittels Aktivierung von &amp;quot;Automatic Brightness&amp;quot; werden die automatische Helligkeitssteuerung scharf geschaltet und das erweiterte Menü sichtbar.&lt;br /&gt;
&lt;br /&gt;
Die Seite zeigt den aktuellen Wert an, den der ADC am LDR misst, aber erst, wenn eine Kalibrierung des Min- und des Max-Wertes vorgenommen worden ist. Dazu betätigt man einmal die Minimum-Schaltfläche bei verdunkeltem Raum, einmal die Maximum-Schaltfläche bei maximaler Raumhelligkeit und speichert jeweils durch Drücken der Save-Schaltfläche. Die automatische Helligkeitssteuerung verwendet dann bei einer Helligkeitsmessung diese Min-/Max-Werte zum Vergleich. Somit kann der Helligkeitsbereich bei der automatischen Helligkeitssteuerung komplett ausgenutzt werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist nicht sinnvoll, bei der Max-Messung einfach eine Taschenlampe direkt vor den LDR zu halten. Da der LDR normalerweise hinter der Frontplatte sitzt, wird so eine Helligkeit in der Praxis niemals erreicht. Die Folge wäre, dass die LEDs der Uhr dann zu dunkel leuchten würden.&lt;br /&gt;
&lt;br /&gt;
Hinweis2: Der angezeigte LDR Wert wird auf die Min und Max-Werte begrenzt. Sind diese 0 wird auch der LDR-Wert als 0 angezeigt. Dann sollte wie beschrieben kalibriert werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-LDR.png|miniatur|Web-Interface: LDR-Kalibrierung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Brightness ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können die 16 vorhandenen Helligkeitsstufen an die Gegebenheiten angepasst werden. Je nach Transparenz der verwendeten Frontplatte bzw. des Diffusors kann man hier nachjustieren.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig sind die Helligkeitsstufen hier so gewählt, dass immer eine gewisse Grundhelligkeit eingestellt ist. Erscheinen die unteren Helligkeitsstufen zu hell, kann man das durch Verschieben der entsprechenden Regler nach links anpassen. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Brightness.png|miniatur|Web-Interface: Helligkeitskurve]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Unter &amp;quot;Display Mode&amp;quot; können unter anderem verschiedene Sprachvarianten, die regionale Unterschiede beim Gebrauch der Uhrzeit berücksichtigen, ausgewählt werden. Die Anzeige von &amp;quot;Es ist&amp;quot; kann hier generell ein- oder ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Schieberegler &amp;quot;Brightness&amp;quot; kann die Grundhelligkeit eingestellt werden. Dieser wird deaktiviert, wenn die automatische Helligkeitssteuerung aktiviert wurde. Die eigentlichen Farben des Displays stellt man dann mit den Schiebereglern &amp;quot;R&amp;quot;, &amp;quot;G&amp;quot; und &amp;quot;B&amp;quot; ein. Diese erscheinen jedoch nur dann, wenn nicht die Animation &amp;quot;Rainbow&amp;quot; eingestellt ist. Die Rainbow-Animation kontrolliert die Farben nämlich selbst.&lt;br /&gt;
&lt;br /&gt;
Durch Wahl einer Ticker-Verzögerung kann die Geschwindigkeit der &amp;quot;Ticker-Messages&amp;quot; (Laufschriftanzeige) kontrolliert werden. 3 ist hier der Standardwert. Niedrigere Werte ergeben eine höhere Geschwindigkeit (bis zur Unleserlichkeit), höhere Werte verzögern die Geschwindigkeit der Laufschriften.&lt;br /&gt;
&lt;br /&gt;
Stellt man für das Ambilight &amp;quot;Use Display Colors&amp;quot; ein, dann werden die Einstellungen für Helligkeit und Farben auch für das Ambilight verwendet, das heißt die Farben laufen synchron.&lt;br /&gt;
&lt;br /&gt;
Auch hier gibt es nochmal die Schaltflächen zum Ein- und Ausschalten des LED-Displays. Mit der Schaltfläche &amp;quot;Test Display&amp;quot; werden sämtliche LEDs bei halber (subjektiver) Helligkeit eingeschaltet (benötigt ca. 1/4 des theoretisch möglichen Maximalstroms) und einige Farben zur Kontrolle der Funktionsfähigkeit aller LEDs durchprobiert.&lt;br /&gt;
&lt;br /&gt;
Bei &amp;quot;Temp Display Interval&amp;quot; lässt sich ein Zeitintervall wählen, bei welchem die aktuell gemessene Temperatur eingeblendet werden soll. Bei Angabe von &amp;quot;1&amp;quot; passiert das jede Minute, nämlich immer bei hh:mm:30 Uhr. Bei Angabe von beispielsweise &amp;quot;5&amp;quot; wird die Temperatur dann nur noch alle 5 Minuten eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;Heart Display interval&amp;quot; gilt dasselbe. Hier wird ein Herz als Piktogramm eingeblendet - z.B. für Geburtstage. Ebenso kann man in der vorweihnachtlichen Zeit einen Weihnachtsbaum einblenden unter Angabe eines Wertes für &amp;quot;XMas tree display interval&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Intervalle ausgefüllt, gilt folgende Regel bei zeitgleicher Einblendung: Dasjenige Piktogramm, welches seltener erscheinen soll, hat eine höhere Priorität.&lt;br /&gt;
&lt;br /&gt;
Beispiel (siehe auch Bild rechts):&lt;br /&gt;
&lt;br /&gt;
* Temp display interval = 10&lt;br /&gt;
* Heart display interval = 1&lt;br /&gt;
* XMas tree display interval 5&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich:&lt;br /&gt;
&lt;br /&gt;
* 09:01 Uhr bis 09:04 Uhr: Herz&lt;br /&gt;
* 09:05 Uhr: Tannenbaum&lt;br /&gt;
* 09:06 Uhr bis 09:09 Uhr: Herz&lt;br /&gt;
* 09:10 Uhr: Temperatur&lt;br /&gt;
* 09:11 Uhr bis 09:14 Uhr: Herz&lt;br /&gt;
* 09:15 Uhr: Tannenbaum&lt;br /&gt;
&lt;br /&gt;
usw. Die Einblendungen geschehen grundsätzlich 30 Sekunden nach der vollen Minute. Intervalle gleicher Dauer sollte man vermeiden. Dann wird konsequent nur noch eins der beiden Piktogramme gezeigt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Display.png|miniatur|Web-Interface: Einstellungen des LED-Displays]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Animationen werden immer dann ausgeführt, wenn sich die Anzeige ändert, zum Beispiel bei einem Uhrzeitwechsel. Hier kann man sich die gewünschte Animation aussuchen und auch die dazugehörige Geschwindigkeit eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Animationen sind verfügbar:&lt;br /&gt;
&lt;br /&gt;
* None - Keine Animation&lt;br /&gt;
* Fade - Langsames Überblenden der Buchstaben&lt;br /&gt;
* Roll - Rollen der Wörter von links/rechts/oben/unten&lt;br /&gt;
* Explode - Die Wörter wandern schnell vom Mittelpunkt sternförmig auf ihren Platz&lt;br /&gt;
* Snake - Eine Schlange &amp;quot;frisst&amp;quot; die zuletzt angezeigten Wörter weg&lt;br /&gt;
* Teletype - Die Wörter werden in &amp;quot;Schreibmaschinen-Geschwindigkeit&amp;quot; ausgegeben&lt;br /&gt;
* Cube - Ein Rahmen &amp;quot;fällt&amp;quot; von außen nach innen, um die Anzeige zu löschen&lt;br /&gt;
* Matrix - Matrix-Animation aus dem gleichnamigen Film&lt;br /&gt;
* Drop - Buchstaben alter Wörter fallen aus der Anzeige, Buchstaben neuer Wörter fallen von oben in die Anzeige hinein&lt;br /&gt;
* Squeeze - Die Wörter werden einmal kurz &amp;quot;gequetscht&amp;quot;&lt;br /&gt;
* Flicker - Die Wörter &amp;quot;flackern&amp;quot;, danach erscheint die neue Anzeige&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die Animation &amp;quot;Random&amp;quot;. Hier wird mit Hilfe eines Zufallsgenerators jedes Mal eine andere Animation ausgewählt. Deklariert man eine Animation als Favoriten, dann wird diese von der Zufallsanimation &amp;quot;Random&amp;quot; genutzt. Anderenfalls wird sie von &amp;quot;Random&amp;quot; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Geschwindigkeit kann man in 15 Stufen einstellen. Bei Klick auf die Schaltfläche &amp;quot;Default&amp;quot; wird die Geschwindigkeit auf einen sinnvollen Standardwert gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als zusätzliche Farbanimation kann noch &amp;quot;Rainbow&amp;quot; ausgewählt und konfiguriert werden. Dann wechselt das Display fließend die Farben der LEDs.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Animations.png|miniatur|Web-Interface: Einstellungen der Animationen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier kann eine separate Animation für das Ambilight eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Clock&amp;quot; werden 20, 30 oder 60 Ambilight-LEDs als umlaufende Sekundenanzeige verwendet. Mit &amp;quot;#LEDs&amp;quot; kann man einstellen, wie viele Ambilight-LEDs sich im &amp;quot;Kreis&amp;quot; befinden. Sinnvoll sind hier 20, 30 oder 60. Ausserdem lässt sich mit &amp;quot;Offset of second = 0&amp;quot; diejenige LED einstellen, die mittig oben als Sekunde 0 angebracht ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Beginnt das Ambilight mit 60 LEDs links unten und ist im Uhrzeigersinn angebracht, dann wäre die LED mit Sekunde 0 die Nr. 22. Diese Zahl ist dann hier einzutragen.&lt;br /&gt;
&lt;br /&gt;
Der Ambilight-Modus &amp;quot;Clock2&amp;quot; entspricht dem Modus &amp;quot;Clock&amp;quot;. Jedoch wird hier ein zu-/abnehmender Vollkreis dargestellt.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Rainbow&amp;quot; durchlaufen die Ambilight-LEDs langsam (über mehrere Minuten hinweg) alle Farben des Regenbogens. Dieser läuft unabhängig von der Farbanimation &amp;quot;Rainbow&amp;quot; des Displays.&lt;br /&gt;
&lt;br /&gt;
Ist auf der Display-Webseite eingestellt, dass die Ambilight-Farben nicht synchronisiert werden sollen, dann kann man hier auch unabhängig von dem Display eine eigene Helligkeit und einen anderen RGB-Wert wählen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Ambilight.png|miniatur|Web-Interface: Ambilight]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Mit bis zu acht Timern kann man einstellen, wann die Uhr aus- bzw. eingeschaltet werden soll. Die Einstellung kann in Abhängigkeit der Wochentage eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel rechts wird in der Woche abends die Uhr um 22:30 Uhr abgeschaltet. Eingeschaltet wird dann morgens wieder um 07:00 Uhr. Nach dem Frühstück wird die Uhr dann um 08:00 Uhr wieder abgeschaltet, um dann abends um 17:00 Uhr wieder eingeschaltet zu werden.&lt;br /&gt;
&lt;br /&gt;
Am Wochenende sieht das dann anders aus: Hier ist die Uhr abends länger eingeschaltet, nämlich bis 23:30 Uhr. Morgens geht es erst dann um 09:00 Uhr wieder weiter.&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Timers.png|miniatur|Web-Interface: Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können Timer speziell für das Ambilight eingestellt werden, um zum Beispiel nachts das Ambilight separat abzuschalten. Umschaltzeiten, während die Uhr selbst abgeschaltet ist, werden ignoriert. Sonst gelten dieselben Bemerkungen wie im vorangehenden Kapitel.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Ambilight-Timers.png|miniatur|Web-Interface: Ambilight Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DFPlayer ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können MP3-Tracks konfiguriert werden, die zu bestimmten Zeiten oder Ereignissen von einem Mini-DFPlayer abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Auf der SD-Card müssen 3 Verzeichnisse angelegt werden:&lt;br /&gt;
&lt;br /&gt;
* Verzeichnis 01 - Bell-Mode: Hier werden MP3-Dateien abgelegt, die zu jeder vollen Stunde oder auch Viertelstunde abgespielt werden sollen.&lt;br /&gt;
* Verzeichnis 02 - Speak-Mode: Hier können MP3-Dateien abgelegt werden, welche die auf der Uhr angezeigten Wörter &amp;quot;vorlesen&amp;quot;.&lt;br /&gt;
* Verzeichnis 03 - Alarm: Die hier gespeicherten MP3-Dateien werden zu den eingetragenen Weckzeiten abgespielt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bell Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 000.mp3 - wird um 00:00 Uhr (Mitternacht) abgespielt&lt;br /&gt;
* 001.mp3 - wird um 01:00 und 13:00 Uhr abgespielt&lt;br /&gt;
* 002.mp3 - wird um 02:00 und 14:00 Uhr abgespielt&lt;br /&gt;
* ...&lt;br /&gt;
* 012.mp3 - wird um 12:00 Uhr mittags abgespielt&lt;br /&gt;
* 013.mp3 - wird jede Stunde um xx:15 Uhr abgespielt, falls xx:15 aktiviert wurde&lt;br /&gt;
* 014.mp3 - wird jede Stunde um xx:30 Uhr abgespielt, falls xx:30 aktiviert wurde&lt;br /&gt;
* 015.mp3 - wird jede Stunde um xx:45 Uhr abgespielt, falls xx:45 aktiviert wurde&lt;br /&gt;
&lt;br /&gt;
Beispielsweise können das Aufnahmen von BigBen oder auch Zeitansagen sein.&lt;br /&gt;
&lt;br /&gt;
Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 02&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Speak Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist der Speak Mode aktiviert, werden die Wörter auf dem Display einzeln vorgelesen. Wie oft, wird mit dem &amp;quot;Speak Cycle&amp;quot; eingestellt, z.B. 1 = jede Minute, 5 = alle 5 Minuten. Je nachdem, welche &amp;quot;Sprache&amp;quot; man für das Display eingestellt hat, wird dann auch die Uhrzeit vorgelesen - also z.B. &amp;quot;Es ist dreiviertel neun&amp;quot; (Ossi-Modus) vs. &amp;quot;Es ist viertel vor neun&amp;quot; (Wessi-Modus).&lt;br /&gt;
&lt;br /&gt;
Dafür muss jedes mögliche Wort auf dem Display als MP3-Datei vorhanden sein.&lt;br /&gt;
&lt;br /&gt;
Hier die Tabelle für die WC24h und WC12h:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
| Datei || Wort WC24h || Wort WC12h&lt;br /&gt;
|-&lt;br /&gt;
| 001.mp3  || ES || ES&lt;br /&gt;
|-&lt;br /&gt;
| 002.mp3  || IT || IST&lt;br /&gt;
|-&lt;br /&gt;
| 003.mp3  || IST || FUENF&lt;br /&gt;
|-&lt;br /&gt;
| 004.mp3  || IS || ZEHN&lt;br /&gt;
|-&lt;br /&gt;
| 005.mp3  || VIERTEL || ZWANZIG&lt;br /&gt;
|-&lt;br /&gt;
| 006.mp3  || EIN || DREI&lt;br /&gt;
|-&lt;br /&gt;
| 007.mp3  || EINS || VIER&lt;br /&gt;
|-&lt;br /&gt;
| 008.mp3  || IN || VIERTEL&lt;br /&gt;
|-&lt;br /&gt;
| 009.mp3  || DREI || DREIVIERTEL&lt;br /&gt;
|-&lt;br /&gt;
| 010.mp3  || EIN || NACH&lt;br /&gt;
|-&lt;br /&gt;
| 011.mp3  || EINE || VOR&lt;br /&gt;
|-&lt;br /&gt;
| 012.mp3  || EINER || HALB&lt;br /&gt;
|-&lt;br /&gt;
| 013.mp3  || SECH || ZWOELF&lt;br /&gt;
|-&lt;br /&gt;
| 014.mp3  || SECHS || ZWEI&lt;br /&gt;
|-&lt;br /&gt;
| 015.mp3  || SIEB || EIN&lt;br /&gt;
|-&lt;br /&gt;
| 016.mp3  || SIEBEN || EINS&lt;br /&gt;
|-&lt;br /&gt;
| 017.mp3  || ELF || SIEBEN&lt;br /&gt;
|-&lt;br /&gt;
| 018.mp3  || FUENF || DREI&lt;br /&gt;
|-&lt;br /&gt;
| 019.mp3  || NEUN || FUENF&lt;br /&gt;
|-&lt;br /&gt;
| 020.mp3  || VIER || ELF&lt;br /&gt;
|-&lt;br /&gt;
| 021.mp3  || ACHT || NEUN&lt;br /&gt;
|-&lt;br /&gt;
| 022.mp3  || NULL || VIER&lt;br /&gt;
|-&lt;br /&gt;
| 023.mp3  || ZWEI || ACHT&lt;br /&gt;
|-&lt;br /&gt;
| 024.mp3  || ZWOELF || ZEHN&lt;br /&gt;
|-&lt;br /&gt;
| 025.mp3  || ZEHN || SECHS&lt;br /&gt;
|-&lt;br /&gt;
| 026.mp3  || UND || UHR&lt;br /&gt;
|-&lt;br /&gt;
| 027.mp3  || ZWANZIG&lt;br /&gt;
|-&lt;br /&gt;
| 028.mp3  || VIERZIG&lt;br /&gt;
|-&lt;br /&gt;
| 029.mp3  || DREISSIG&lt;br /&gt;
|-&lt;br /&gt;
| 030.mp3  || FUENFZIG&lt;br /&gt;
|-&lt;br /&gt;
| 031.mp3  || UHR&lt;br /&gt;
|-&lt;br /&gt;
| 032.mp3  || MINUTE&lt;br /&gt;
|-&lt;br /&gt;
| 033.mp3  || MINUTEN&lt;br /&gt;
|-&lt;br /&gt;
| 034.mp3  || VOR&lt;br /&gt;
|-&lt;br /&gt;
| 035.mp3  || UND&lt;br /&gt;
|-&lt;br /&gt;
| 036.mp3  || NACH&lt;br /&gt;
|-&lt;br /&gt;
| 037.mp3  || EIN&lt;br /&gt;
|-&lt;br /&gt;
| 038.mp3  || DREIVIERTEL&lt;br /&gt;
|-&lt;br /&gt;
| 039.mp3  || VIERTEL&lt;br /&gt;
|-&lt;br /&gt;
| 040.mp3  || HALB&lt;br /&gt;
|-&lt;br /&gt;
| 041.mp3  || SIEB&lt;br /&gt;
|-&lt;br /&gt;
| 042.mp3  || SIEBEN&lt;br /&gt;
|-&lt;br /&gt;
| 043.mp3  || NEUN&lt;br /&gt;
|-&lt;br /&gt;
| 044.mp3  || NULL&lt;br /&gt;
|-&lt;br /&gt;
| 045.mp3  || ZWEI&lt;br /&gt;
|-&lt;br /&gt;
| 046.mp3  || EIN&lt;br /&gt;
|-&lt;br /&gt;
| 047.mp3  || EINE&lt;br /&gt;
|-&lt;br /&gt;
| 048.mp3  || FUENF&lt;br /&gt;
|-&lt;br /&gt;
| 049.mp3  || SECH&lt;br /&gt;
|-&lt;br /&gt;
| 050.mp3  || SECHS&lt;br /&gt;
|-&lt;br /&gt;
| 051.mp3  || ACHT&lt;br /&gt;
|-&lt;br /&gt;
| 052.mp3  || VIER&lt;br /&gt;
|-&lt;br /&gt;
| 053.mp3  || DREI&lt;br /&gt;
|-&lt;br /&gt;
| 054.mp3  || EIN&lt;br /&gt;
|-&lt;br /&gt;
| 055.mp3  || EINS&lt;br /&gt;
|-&lt;br /&gt;
| 056.mp3  || UND&lt;br /&gt;
|-&lt;br /&gt;
| 057.mp3  || ELF&lt;br /&gt;
|-&lt;br /&gt;
| 058.mp3  || ZEHN&lt;br /&gt;
|-&lt;br /&gt;
| 059.mp3  || ZWANZIG&lt;br /&gt;
|-&lt;br /&gt;
| 060.mp3  || GRAD&lt;br /&gt;
|-&lt;br /&gt;
| 061.mp3  || DREISSIG&lt;br /&gt;
|-&lt;br /&gt;
| 062.mp3  || VIERZIG&lt;br /&gt;
|-&lt;br /&gt;
| 063.mp3  || ZWOELF&lt;br /&gt;
|-&lt;br /&gt;
| 064.mp3  || FUENFZIG&lt;br /&gt;
|-&lt;br /&gt;
| 065.mp3  || MINUTE&lt;br /&gt;
|-&lt;br /&gt;
| 066.mp3  || MINUTEN&lt;br /&gt;
|-&lt;br /&gt;
| 067.mp3  || UHR&lt;br /&gt;
|-&lt;br /&gt;
| 068.mp3  || FRUEH&lt;br /&gt;
|-&lt;br /&gt;
| 069.mp3  || VOR&lt;br /&gt;
|-&lt;br /&gt;
| 070.mp3  || ABENDS&lt;br /&gt;
|-&lt;br /&gt;
| 071.mp3  || MITTERNACHT&lt;br /&gt;
|-&lt;br /&gt;
| 072.mp3  || NACH&lt;br /&gt;
|-&lt;br /&gt;
| 073.mp3  || NACHTS&lt;br /&gt;
|-&lt;br /&gt;
| 074.mp3  || MORGENS&lt;br /&gt;
|-&lt;br /&gt;
| 075.mp3  || WARM&lt;br /&gt;
|-&lt;br /&gt;
| 076.mp3  || MITTAGS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Beispiel-Dateien&#039;&#039;&#039; für das Verzeichnis 02 - sowohl für WC12h als auch WC24h: &#039;&#039;&#039;[[Datei:WordClock24-mp3.zip]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der jeweils gewünschte Ordner muss auf die SD-Karte kopiert und dann das Verzeichnis 02-WC12h bzw. 02-WC24h in 02 umbenannt werden. Die MP3-Dateien wurden mit dem Programm &#039;&#039;&#039;[http://www.cross-plus-a.com/de/balabolka.htm Balabolka]&#039;&#039;&#039; erzeugt.&lt;br /&gt;
&lt;br /&gt;
(Kleiner Fehler im Ordner für die WC24: Datei 60.mp3 muss in 060.mp3 umbenannt werden).&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt: Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wecker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unabhängig von den oben angegebenen Modi und Ruhezeiten können bis zu acht Alarm-Zeiten (Wecker) eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dabei wird die auf der Webseite in der aufgeführten Tabelle angegebene MP3-Datei abgespielt. Im nebenstehenden Beispiel wird die Datei 001.mp3 im Verzeichnis 03 Montags bis Freitags morgens um 06:30 Uhr abgespielt. Die darüber angegebenen Ruhezeiten spielen hier ausnahmsweise &#039;&#039;&#039;keine Rolle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-DFPlayer.png|miniatur|Web-Interface: DFPlayer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Updates für den ESP8266 als auch für den STM32 können über das WLAN eingespielt werden. Dazu ist eine Internet-Verbindung notwendig. Für OTA-Updates (&amp;quot;Over The Air&amp;quot;) ist zwingend ein ESP8266 ESP-12F notwendig. &#039;&#039;&#039;Mit den bisher eingesetzten ESP-01 kann kein OTA-Update eingespielt werden.&#039;&#039;&#039; Jedoch können alte Shields mit ESP-01 auf ESP-12F umgebaut werden: [[WordClock_mit_WS2812#Umbau_von_ESP-01_auf_ESP-12F|Umbau von ESP-01 auf ESP-12F]]&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils die benutzte und die verfügbare Firmware-Version angezeigt. Sind diese gleich, ist ein Update nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039;: Durch Klick auf die Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; kann der Flash-Speicherbereich, wo der ESP8266 die Update-Images sowohl für ESP8266 als auch für STM32 ablegt, neu formatiert werden. Das kann dann notwendig werden, wenn die Images nur unvollständig heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn sowohl die ESP- als auch die STM32-Firmware abweichen, sollte immer zunächst der ESP8266 aktualisiert werden und danach der STM32. Durch Klick auf die Schaltfläche &amp;quot;Update ESP Firmware&amp;quot; wird das Update gestartet. Dieses dauert ca. 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann der STM32 aktualisiert werden. Dazu muss zunächst die richtige Firmware-Variante (HEX-Datei) ausgewählt werden. Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, ist hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]. Ab installierter Version 2.6.0 ermittelt die Software selbst anhand der Hardware-Konfiguration den Namen der passenden HEX-Datei und schlägt diesen dann automatisch vor.&lt;br /&gt;
&lt;br /&gt;
Durch Klick auf die Schaltfläche &amp;quot;Flash STM32&amp;quot; wird der STM32 zunächst in den Bootloader-Modus gebracht, danach wird er neu programmiert. Der STM32 verbleibt solange im Bootloader-Modus, bis die Schaltfläche &amp;quot;Reset STM32&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler beim OTA Update:&#039;&#039;&#039; In Einzelfällen kam es beim OTA Update zu einem Fehler, der auf ein Problem mit dem im ESP enthaltenen Dateisystem hinweist. Dieses Dateisystem wird normalerweise beim Flash der Software in das ESP Modul automatisch erstellt und kann dann z.B. als Zwischenspeicher für OTA Updates von ESP und STM32 genutzt werden. Taucht im OTA-Log ein Fehler wie z.B. &#039;&#039;&#039;error: cannot open file&#039;&#039;&#039; auf, dann hilft es ggf. die Software mit einem anderen Programm in das ESP Modul zu schreiben oder das vorhandene Programm in einer aktuelleren Version zu testen. &#039;&#039;&#039;Alternativ dazu kann man den Flashspeicherbereich des ESP8266 durch Betätigen der Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; neu formatieren und das OTA-Update anschließend neu durchführen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte die aktuelle Version der ESP8266 Flash Download Tools (http://espressif.com/en/support/download/other-tools) Probleme bereiten, könnte man z.B. den NodeMCU Flasher (https://github.com/nodemcu/nodemcu-flasher) testen. Dort einfach unter &amp;quot;Config&amp;quot; das .BIN File laden und dann im Reiter &amp;quot;Operation&amp;quot; den entsprechenden COM Port auswählen und auf &amp;quot;Flash&amp;quot; klicken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Update.png|miniatur|Web-Interface: Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Update ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Während das normale Update über einen Host im Internet durchgeführt wird, kann man über das lokale Update den STM32 vom lokalen PC aus flashen. Das lokale Flashen des ESP8266 ist noch nicht möglich, ist aber für ein späteres Release geplant. Sonst gelten dieselben Bemerkungen wie zum vorhergehenden Kapitel &amp;quot;Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auch hier gilt: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Local-Update.png|miniatur|Web-Interface: Local Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeserver ==&lt;br /&gt;
&lt;br /&gt;
Der Timeserver muss ein RFC 958 konformer NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Alternative Timeserver sind zum Beispiel ntp1.ptb.de (192.53.103.108), ntp2.ptb.de (192.53.103.104) oder time.nist.gov (216.229.0.179).&lt;br /&gt;
&lt;br /&gt;
Eine Liste von europäischen Timeservern findet man u.a. hier: http://www.pool.ntp.org/zone/europe&lt;br /&gt;
&lt;br /&gt;
Den Timeserver konfiguriert man folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Im Browser gibt man als URL die ausgegebene IP-Adresse ein, also z.B. http://192.168.10.1/ . Anschließend wählt man den Menüpunkt &amp;quot;Network&amp;quot; an und gibt in der entsprechenden Zeile die IP-Adresse des Wunsch-Timeservers ein und bestätigt mit &amp;quot;Save&amp;quot;. Nun wird zunächst geprüft, ob der Timeserver das NTP-Protokoll unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Uhrzeit wird alle 3800 Sekunden vom Timeserver geholt. Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] kann man die Übertragung auch jederzeit per Mausklick starten. Das funktioniert auch mit einer angelernten IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
&lt;br /&gt;
Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] Menüpunkt &amp;quot;Network&amp;quot; auswählen, in der Zeile &amp;quot;Timezone&amp;quot; die Abweichung von GMT eingeben. Für die mitteleuropäische Zeitzone wäre das einfach eine 1. Dies entspricht dann GMT+1. Bei einer negativen Abweichung wie GMT-1 muss dann entsprechend -1 eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IR-Fernbedienung ==&lt;br /&gt;
&lt;br /&gt;
In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe Weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt. Die Anlernroutine kann auch über die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] (Menü &amp;quot;Main&amp;quot;) gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man wird nun über eine Laufschrift auf dem LED-Display aufgefordert, folgende FB-Tasten zu drücken:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Tasten für IR-Fernbedienung&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste || Funktion || Laufschrift&lt;br /&gt;
|-&lt;br /&gt;
| Power || Anzeige ein/aus                           || power off/on&lt;br /&gt;
|- &lt;br /&gt;
| OK    || Speichern der Einstellungen               || ok&lt;br /&gt;
|- &lt;br /&gt;
| MODE- || Anzeigemodus erniedrigen                  || decrement display mode&lt;br /&gt;
|- &lt;br /&gt;
| MODE+ || Anzeigemodus erhöhen                      || increment display mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM- || Animation erniedrigen                     || decrement animation mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM+ || Animation erhöhen                         || increment animation mode&lt;br /&gt;
|- &lt;br /&gt;
| HOUR- || Stunde erniedrigen                        || decrement hour&lt;br /&gt;
|- &lt;br /&gt;
| HOUR+ || Stunde erhöhen                            || increment hour&lt;br /&gt;
|- &lt;br /&gt;
| MIN-  || Minute erniedrigen                        || decrement minute&lt;br /&gt;
|- &lt;br /&gt;
| MIN+  || Minute erhöhen                            || increment minute&lt;br /&gt;
|- &lt;br /&gt;
| RED-  || Helligkeit der Farbe Rot erniedrigen      || decrement red brightness&lt;br /&gt;
|- &lt;br /&gt;
| RED+  || Helligkeit der Farbe Rot erhöhen          || increment red brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN- || Helligkeit der Farbe Grün erniedrigen    || decrement green brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN+ || Helligkeit der Farbe Grün erhöhen        || increment green brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE-  || Helligkeit der Farbe Blau erniedrigen    || decrement blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE+  || Helligkeit der Farbe Blau erhöhen        || increment blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT-  || Grundhelligkeit erniedrigen            || decrement global brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT+  || Grundhelligkeit erhöhen                || increment global brightness&lt;br /&gt;
|- &lt;br /&gt;
| AUTO+  || Automatische Helligkeitsregelung ein/aus || toggle auto brightness&lt;br /&gt;
|- &lt;br /&gt;
| TEMP   || Anzeige der Temperatur für 5 Sekunden    || get temperature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.&lt;br /&gt;
&lt;br /&gt;
Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:&lt;br /&gt;
&lt;br /&gt;
* SIRCS (Sony)&lt;br /&gt;
* NEC (Viele Hersteller, sehr verbreitet)&lt;br /&gt;
* SAMSUNG&lt;br /&gt;
* MATSUSHITA&lt;br /&gt;
* KASEIKYO&lt;br /&gt;
&lt;br /&gt;
[[IRMP]] &amp;quot;versteht&amp;quot; jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des [[IRMP]]-Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine passende Fernbedienung gibt es bei &#039;&#039; [http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019 DX] &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Passend beschriftet werden kann die Fernbedienung mit einem der folgenden Labels &amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Fernbedienung Folie ZW.pdf]] &amp;lt;br&amp;gt; &lt;br /&gt;
[[Datei:Fernbedienung Folie ZW2.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
(sie unterscheiden sich in der Anordnung des Power- und Save-Knopfes). Einfach auf eine selbstklebende Folie drucken, ausschneiden und aufkleben. Die unterste Reihe ist für weitere zusätzliche Optionen (z.B. Ambilight, usw.) noch offen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Android App ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Ist ein [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul angeschlossen und korrekt konfiguriert, kann die Uhr per [[WordClock_mit_WS2812#Android_App|Android App]] ferngesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Momentan können folgende Einstellungen vorgenommen werden:&lt;br /&gt;
&lt;br /&gt;
* Ein-/Ausschalten der Uhr&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Anzeige der WordClock-Temperatur&lt;br /&gt;
* Einstellen der Farben (&#039;&#039;&#039;Neu&#039;&#039;&#039;: nun auch RGBW)&lt;br /&gt;
* Manuelle Einstellung einer Grundhelligkeit&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] ein/aus&lt;br /&gt;
* Einstellung des Anzeigemodus&lt;br /&gt;
* Einstellung der Farbanimation, z.B. &amp;quot;Rainbow&amp;quot; (&#039;&#039;&#039;Neu&#039;&#039;&#039;)&lt;br /&gt;
* Einstellung der Animation (Überblenden, Rollen, Explosion etc.)&lt;br /&gt;
&lt;br /&gt;
Es können bis zu 4 Profile konfiguriert und damit auch bis zu 4 unterschiedliche WordClocks gesteuert werden. Den Wechsel der Profile nimmt man mit der Schaltfläche &amp;quot;Laden&amp;quot; vor, das Speichern der Profile mit dem Button &amp;quot;Speichern&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag &amp;quot;Einstellungen&amp;quot;. Bei älteren Android-Versionen ist dafür zunächst die spezielle Menü-Taste zu drücken, bei neueren Android-Versionen geht das auch über die Menüschaltfläche mit den drei übereinanderliegenden Punkten - siehe Bild rechts oben. Die IP-Adresse wird dann dem aktuell ausgewählten Profil zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Unter den Menüpunkten findet man nun auch einen mit dem Eintrag &amp;quot;Tetris&amp;quot;. Damit wird eine Art &amp;quot;Gamepad&amp;quot; eingeblendet, mit dem man auf der Uhr WCtris - einen Tetris-Clone - spielen kann. Viel Spaß!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wc24h-Android.png|miniatur|WC24h Android App]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tutorial zum Aufbau =&lt;br /&gt;
&lt;br /&gt;
Ein Tutorial zum Aufbau der WordClock findet man hier: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung.&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
== Anbringung der WS2812-Streifen ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine 1mm starke Alu-Platte (für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm). Darauf lassen sich nicht nur einfach die WS2812-LED-Streifen aufkleben, auch dient die Alu-Platte der Wärmeabfuhr. Die Alu-Platte kann man sich von einem der eBay-Händler entweder direkt erstehen oder für ca. 3,50 Euro zurechtschneiden lassen.&lt;br /&gt;
&lt;br /&gt;
Den LED-Streifen schneidet man 16 Streifen à 18 LEDs. Bevor man sie auf die LED-Platte klebt, sollte man senkrecht je einen Tesa-Streifen links und rechts auf die Alu-Platte kleben, da sich gezeigt hat, dass die Schnittkanten der Streifen gern einen Kurzschluss mit der Alu-Platte bilden.&lt;br /&gt;
&lt;br /&gt;
Die LED-Streifen werden dann im Ziehharmonika-Verfahren aufgeklebt. Dabei steht jeder 2. Streifen auf dem Kopf. Das hat den Vorteil, dass die Verbindungen zwischen den Streifen möglichst kurz sind. Auf der rechten Seite verbindet man dann die Anschlüsse +5V mit +5V, GND mit GND und DO mit DI - siehe Bild. Man verbindet also den ersten mit dem zweiten Streifen, den dritten mit dem vierten Streifen usw.&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite verbindet man lediglich DO mit DI, also den zweiten Streifen mit dem dritten, den vierten mit dem fünften usw. An den verbleibenden Lötpunkten +5V und GND lötet man an jedem *zweiten* Streifen (1, 3, 5 usw.) die Spannungsversorgung  an. Praktisch ist die Verwendung eines 16-poligen Flachbandkabels, welches man auf einen Flachbandkabel-Stecker aufquetscht. Pin 1 und 2 gehen dann an 5V/GND des ersten Streifens, 3 und 4 an 5V/GND des dritten Streifens usw. Mit ca. 2 m Flachbandkabel kann die komplette Uhr verkabelt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann man mittels 16-poligem Wannenstecker, den man auf eine Lochrasterplatine lötet, die Spannungsversorgung einfach verpolungssicher anstecken. Unter der Lochrasterplatine werden die geradzahligen Pins und die ungeraden Pins je mit einem Kupferdraht verbunden. Mit einer 2-poligen Schraubklemme auf der Lochrasterplatine kann dann das Netzteil angeschlossen werden - siehe Bild rechts. Bei Verwendung eines der Shields aus der Sammelbestellung wird die Lochrasterplatine &#039;&#039;&#039;nicht&#039;&#039;&#039; benötigt - die Spannungsversorgung für die Stripes ist auf den Shields mit eingeplant. &lt;br /&gt;
&lt;br /&gt;
Beim Anschluss des Datensignals sollte beachtet werden, dass zuerst die Status-LED angeschlossen wird und das Signal dann von dieser weiter zur Platte geht. Spannung für die Status-LED kann man sich bequem vom letzten Streifen der Platte holen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wclock24h-WS2812-auf-Alu-Platte.jpg|miniatur|16 WS2812-Streifen auf Alu-Platte]]&lt;br /&gt;
[[Datei:Wclock24h-16-pol-Wanne.png|miniatur|16pol Wanne zum Verbinden des Netzteils und der Streifen]]&lt;br /&gt;
[[Datei:Wclock24h-Spannungsvergung-Streifen.jpg|miniatur|Anschluss der Streifen an die Spannungsversorgung]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine Alu-Platte (1mmx310mmx310mm).&lt;br /&gt;
Der Aufbau ist analog zu der WordClock 24h zu betrachten. Der Unterschied liegt darin, dass bei der WC12h die LED Streifen mit dem Sonderabstand benutzt werden und dieser in 10 Streifen a 11 LEDs geteilt wird. Sowie in 4 Einzel LEDs für die Minutenanzeigen in den Ecken.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Verbindung der Streifen erfolgt dann analog zu der oben beschriebenen Weise.&lt;br /&gt;
|| &lt;br /&gt;
[[Datei:Aufbau WC12h WS2812.jpg|mini]]&lt;br /&gt;
Aufgebaute WC12h mit WS2812 Streifen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zwischenböden ==&lt;br /&gt;
Es gibt insgesamt 3 Varianten der Zwischenböden.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei Varianten für die WordClock 12h (mit und ohne Ambilight Aussparungen) und eine Variante für die WordClock 24h&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h OHNE Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden ohne Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden ohne Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h MIT Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden mit Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden mit Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 OHNE Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h Boden Rueckseite.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Vorderseite.jpeg|mini|Vorderseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Rueckseite schraeg.jpeg|mini|Rückseite schräg]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 mit Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h MIT Ambilight-innen.jpg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h MIT Ambilight-aussen.jpg|mini|Vorderseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
(in Arbeit)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Shields für STM32 MiniDev und Nucleo Board ==&lt;br /&gt;
Hier werden nur die aktuellen Versionen der Shields beschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
[[WordClock_mit_WS2812#Historie_der_Hardware-Versionen|Ältere HW Versionen sind im Anhang aufgeführt]]&amp;lt;br&amp;gt;&lt;br /&gt;
=== Shield für STM32 MiniDevBoard ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das MiniDevBoard in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R16 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP13 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) und JP12 (Prog/Run) wurde um 90° gedreht&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Ein Bild folgt noch.&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden. Bild zeigt die v4 mit RTC, TSOP, AMS1117, ESP12, Spannungsabschaltung, LDR&lt;br /&gt;
||[[Datei:MiniDev_v4_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zum Stromstecker (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V4:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32F411 Nucleo Board ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das Nucleo Board in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Aufdruck des v4 hat sich der Fehlerteufel eingeschlichen. Der Aufdruck spricht noch von der Version3. Version 4 ist aber gut an den vergoldeten Lötpads zu erkennen. V3 hat die Lötpäds versilbert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R15 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP11 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) wurde neu positioniert und liegt nun nicht mehr unter dem Nucleo Board&lt;br /&gt;
* JP8 (SWD) wurde neu hinzugefügt&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Bild folgt noch&amp;lt;br&amp;gt;&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board. Bild zeigt noch die v3&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V4:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tischversion der WC12h aus dem 3D Drucker ==&lt;br /&gt;
[[Datei:WC12h_desk_printed.JPG|mini]]&lt;br /&gt;
&lt;br /&gt;
Wer Zugriff auf einen 3D Drucker mit einem Druckbereich &amp;gt;= 180x190mm hat, der findet bei Thingiverse 3D Modelle für alle unterstützten Sprachversionen der Software. Die Modelle der WC12h sind recht einfach zu drucken und sollten sich eigentlich mit so ziemlich jedem Gerät realisieren lassen. Wenn eine Version mit eingebautem Diffusor gedruckt werden soll, steht und fällt das Vorhaben mit der Ausrichtung des Druckbetts. Schon ein Versatz von 0.1mm über die gesamte Fläche kann hier das Druckergebnis ziemlich negativ beeinträchtigen. Aber in der Regel kennen die Besitzer solcher Geräte ja die Stolpersteine. Falls euer Druckbett nicht wirklich gerade, oder nicht sauber ausgerichtet ist, könnt ihr zur Not einfach eine Version ohne Diffusor drucken und diesen dann in Eigenregie erstellen (Butterbrotpapier, Milchglasfolie, usw.).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WC12h_desk_beleuchtet.jpg|mini]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Displaymatrix der 3D Modelle ist wegen der kleinen Größe der Uhr für den Abstand eines 90LED/m Streifens (11.11mm) ausgelegt, die man z.B. bei eBay, Aliexpress und Konsorten kaufen kann. Ich habe Anfang des Jahres ca. 12 USD inkl. Versand für einen Meter WS2812B mit 90 LEDs pro Meter bei Aliexpress bezahlt, bei 2 Metern habt ihr also Kosten von etwas über 22 Euro für die Streifen.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Update 10/2017&#039;&#039;&#039;: Wegen der mittlerweile schlechten Verfügbarkeit der 90LED/m habe ich Modelle für 96LED/m Streifen ergänzt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In Sachen Ambilight gibt es hier 2 verschiedene Deckel zur Auswahl, mit denen ihr z.B. den Sekundenzeiger der Uhr oder das Ambilight als Gehäusebeleuchtung benutzen könnt. Im Deckel ist jeweils ein Kreis für die Anbringung der Streifen vorhanden. Der Umfang der Kreise ist berechnet für den Einsatz von 30 LEDs eines 60 LED pro Meter Streifens, bzw. 60 LEDs eines 144 LED pro Meter Streifens. Achtet darauf hier nicht unterschiedliche LED Typen zu mischen (z.B. SK6812 für die Matrix und WS2812 für das Ambilight)! Ich persönlich habe gute Erfahrungen mit den LEDs von &amp;quot;BTF Lighting&amp;quot; bei Aliexpress gemacht.&lt;br /&gt;
&lt;br /&gt;
Hier geht es zur [http://www.thingiverse.com/thing:2130830 WordClock 12h (desk clock edition) bei Thingiverse]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Sammelbestellungen =&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung LED Stripes, Zwischenböden, Shields ==&lt;br /&gt;
Für die WC12h Variante der WordClock werden WS2812 Stripes als Spezialanfertigung mit einem Rastermaß von 28,1mm eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;WS2812 Pakete&#039;&#039;&#039; angeboten (WC12h):&lt;br /&gt;
* Paket 5 (Uhr - STM32 Basis - WS2812) - 40,80Eur : 120 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
* Paket 6 (Ambilight - STM32 Basis - WS2812) - 20,40Eur : 60 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
(durch die Umstellung des Ambilight Paketes auf 60 LEDs, kann die umlaufende Sekundenanzeige realisiert werden)&lt;br /&gt;
&lt;br /&gt;
Für die WC24h werden die WS2812 Stripes nicht über eine Sammelbestellung bestellt, da hier das Standardformat genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Zwischenböden&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Zwischenboden (WC12h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC12h) mit Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) mit Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Shields&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Shield für STM32 MiniDevBoard - 3,50Eur&lt;br /&gt;
* Shield für STM32 NucleoBoard - 5,50Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der Shields&#039;&#039;&#039; erfolgt als Großbrief:&lt;br /&gt;
* innerhalb BRD – 4,00Eur&lt;br /&gt;
* Österreich – 6,00Eur&lt;br /&gt;
* Schweiz - 6,00Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der WS2812-Stripes&#039;&#039;&#039; erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) – 6,50Eur&lt;br /&gt;
* Österreich – 15,50Eur&lt;br /&gt;
* Schweiz – in die Schweiz kann nur als normales Paket versendet werden, Kosten hierzu siehe unten&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand mit Zwischenboden&#039;&#039;&#039; erfolgt als normales Paket:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 10,00Eur (bis 2 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 12,00Eur (bis 4 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 18,00Eur (ab 5 Böden)&lt;br /&gt;
* Österreich – 20,00Eur (bis 2 Böden)&lt;br /&gt;
* Österreich – 25,00Eur (bis 4 Böden)&lt;br /&gt;
* Schweiz - 31,00Eur (bis 2 Böden)&lt;br /&gt;
* Schweiz - 40,00Eur (bis 4 Böden)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&amp;lt;br&amp;gt;&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig und wird dann entsprechend mitgeteilt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 06.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;09.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~10.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~17.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-front-dia.jpg|miniatur|Frontplatte: Dia]]&lt;br /&gt;
[[Datei:Wordclock-front-full.jpg|miniatur|Frontplatte: Vollansicht]]&lt;br /&gt;
[[Datei:WordClock-gelb.jpg|miniatur|4-sprachige Frontplatte]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatten bleiben identisch zu denen aus dem früheren [[Word Clock|WordClock]]-Projekt. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version, die auch für die Sammelbestellung gilt:&lt;br /&gt;
&lt;br /&gt;
 E S K I S T L F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N Z W A N Z I G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN ZWANZIG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI|VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T G N A C H V O R J M    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B Q Z W Ö L F P    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB ZWÖLF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W E I N S I E B E N    &amp;lt;nowiki&amp;gt;==&amp;gt; ZW|EI|N|S|IEBEN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K D R E I R H F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W A C H T Z E H N R S    &amp;lt;nowiki&amp;gt;==&amp;gt; ACHT ZEHN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B S E C H S F M U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; SECHS UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist es möglich, vier regionale Sprechweisen darzustellen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wessi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rhein-Ruhr-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zwanzig nach eins&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ossi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schwaben-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zwanzig nach zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC12h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also bitte auch in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Minutenpunkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;WC12h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC12h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise pro Stück:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 42,- EUR.&lt;br /&gt;
   - weiß: 49,- EUR.&lt;br /&gt;
   - rot: 49,- EUR.&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Aus der letzten Sammelbestellung sind aufgrund einer Fehlproduktion der Druckerei von den schwarzen WC12h noch WC12h-Frontplatten übrig, welche 3,5mm kleiner sind, also lediglich 446,5mm x 446,5mm statt 450mm x 450mm groß sind. Diese lassen sich nur mit einem Rahmen - wie z.B. dem im Artikel empfohlenen Alu-Rahmen einsetzen. Für den rahmenlosen Einsatz eignen sie sich eher nicht, weil dann der Zwischenboden leicht übersteht. Auf diese Frontplatten gebe ich einen Preisnachlass von 10,- EUR.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet alle 4 Sprachversionen:&lt;br /&gt;
&lt;br /&gt;
* Wessi-Modus (viertel nach/vor)&lt;br /&gt;
* Ossi-Modus (viertel/dreiviertel)&lt;br /&gt;
* Rhein-Ruhr-Modus (viertel nach/vor, zwanzig nach/vor)&lt;br /&gt;
* Schwaben-Modus (viertel/dreiviertel, zwanzig nach/vor)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Edelstahl Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Edelstahl126.jpg|miniatur]][[Datei:Edelstahl139.jpg|miniatur]][[Datei:Edelstahl092.jpg|miniatur|Loch]][[Datei:Edelstahl116.jpg|miniatur|Buchstabe]]&lt;br /&gt;
Eckdaten der Edelstahlblende:&lt;br /&gt;
&lt;br /&gt;
  - Abmessungen: ca. 450x450x1 mm &lt;br /&gt;
  - gelasert gem. dxf Vorgabe, &lt;br /&gt;
  - Material 1.4301-2G, &lt;br /&gt;
  - eins. K320 geschliffen/gebürstet, &lt;br /&gt;
  - ohne weitere Nachbearbeitung, &lt;br /&gt;
  - Layout unterscheidet sich von der Originaluhr&lt;br /&gt;
&lt;br /&gt;
Verwendet wird hierbei die Schriftart Lucida Console allerdings erweitert. Die Schriftart hat Stege, so dass freie Inselteile (z.&amp;amp;nbsp;B. Innenteil O) nicht lose sind. Jeder Steg hat eine Breite von mind. 2mm.&lt;br /&gt;
[[Datei:Edelstahlfront_V2.png|miniatur|ohne]]&lt;br /&gt;
Die Buchstaben werden entsprechend ausgelasert und müssen von hinten noch mit einem Diffusor versehen werden. Der Diffusor ist nicht Bestandteil des Angebots. &lt;br /&gt;
&lt;br /&gt;
Hinweise zum Diffusor findet ihr hier: &amp;lt;br /&amp;gt;&lt;br /&gt;
http://christians-bastel-leben.blogspot.de/2012/04/diffusorfolien.html&lt;br /&gt;
&lt;br /&gt;
Er hat die Folien mit der schwarzen Platte getestet. Er sagt die besten Ergebnisse hatte er mit folgender Folie:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.plexiglas-shop.com/DE/de/plexiglas-folie-5m9m5apyxic/plexiglas-folie-weiss-99532-gt-1-0-mm-iqq6a1wurpd~p.html&lt;br /&gt;
&lt;br /&gt;
Eine Plexiglasplatte hatte ich auch getestet, doch war meine zu breit und sah dann nicht gut aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand: 26.11.2017: Sammelbestellung ist aufgegeben. Habe noch Blenden übrig. Bei Bedarf einfach melden.  (Benutzer [http://www.mikrocontroller.net/user/show/hansa hansa]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Preise der Blenden:&lt;br /&gt;
&lt;br /&gt;
  Frontblende:                  44 Euro (inkl.MwSt)&lt;br /&gt;
  Verpackung :                   5,-  Euro (2 x 3mm MDF, als Rückwand verwendbar)&lt;br /&gt;
  Versand per GLS: 5 Euro&lt;br /&gt;
  Versand in die Schweiz: 8 Euro (wird direkt in der Schweiz verschickt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Selbstnachbau hier die DXF-Datei [[Datei:EdelstahlFrontV2.dxf]]&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Diese Dateidaten müssen um Faktor 10 vergrössert werden!&lt;br /&gt;
Sonst kommt eine 45x45mm Platte an. 8-(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung LED Stripes ==&lt;br /&gt;
&lt;br /&gt;
Eine Sammelbestellung der LED-Stripes für die WC24h ist derzeit nicht geplant, da hier WS2812-Stripes mit dem Standard-Rastermaß von 60 LEDs/m benötigt werden. Diese sind sehr einfach bei eBay oder Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Zwischenböden ==&lt;br /&gt;
&lt;br /&gt;
Wir können nun auch die WC24h Zwischenböden über die Sammelbestellung anbieten.&lt;br /&gt;
&lt;br /&gt;
* Zwischenboden für Wordclock 24h (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Alle Details zu der Sammelbestellung ist weiter oben bei der [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|WC12h Sammelbestellung beschrieben]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-Frontplatte-rot.jpg||right|WordClock24h-rot]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet über ein Dutzend Sprachvarianten:&lt;br /&gt;
&lt;br /&gt;
* hh mm (12)&lt;br /&gt;
* hh mm (24)&lt;br /&gt;
* hh und mm (12)&lt;br /&gt;
* hh und mm (24)&lt;br /&gt;
* mm nach hh (12+)&lt;br /&gt;
* mm nach hh (24)&lt;br /&gt;
* Ossi/Berlin (12)&lt;br /&gt;
* Ossi/Berlin (12+)&lt;br /&gt;
* Oesi (12)&lt;br /&gt;
* Oesi (12+)&lt;br /&gt;
* Rhein/Ruhr (12)&lt;br /&gt;
* Rhein/Ruhr (12+)&lt;br /&gt;
* Schwaben (12)&lt;br /&gt;
* Schwaben (12+)&lt;br /&gt;
* Wessi (12)&lt;br /&gt;
* Wessi (12+)&lt;br /&gt;
* Countdown bis Mitternacht&lt;br /&gt;
* Temperatur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC24h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Punkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;W24h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC24h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 44,- EUR&lt;br /&gt;
   - weiß: 49,- EUR&lt;br /&gt;
   - rot: 49,- EUR&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR für Verpackungs- und Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Die ESP8266-Firmware bietet eine API, über welche die Uhr konfiguriert werden kann. Diese API wird zum Beispiel von der Android-App genutzt, um die wichtigsten Einstellungen vorzunehmen. Allerdings ist die Kommunikation über die API momentan nur &amp;quot;One-Way&amp;quot;, d.h. es können nur Befehle gesandt werden, aber keine momentanen Einstellungen abgerufen werden. Das wird zukünftig noch geändert, so dass auch sämtliche Konfigurationsparameter abgerufen und eingestellt werden können - analog zum Webinterface.&lt;br /&gt;
&lt;br /&gt;
Der ESP8266 horcht auf UDP-Port 2424, die UDP-Messages sind zwischen 1 und 7 Bytes lang. Das erste Zeichen ist immer ein Buchstabe, z.B. &#039;C&#039;. Die weiteren Parameter sind jeweils Bytes, welche binär codiert sind, also 1 Parameter = 1 Byte. Es wird KEIN Abschluss-Zeichen, etwa ein &#039;\n&#039; oder sonstiges gesandt.&lt;br /&gt;
&lt;br /&gt;
=== API Kommandotabelle ===&lt;br /&gt;
&lt;br /&gt;
 C r g b [w]    - Farben (Colors) setzen&lt;br /&gt;
                    r =  0 ... 63        Rot&lt;br /&gt;
                    g =  0 ... 63        Grün&lt;br /&gt;
                    b =  0 ... 63        Blau&lt;br /&gt;
                    w =  0 ... 63        Weiß (nur bei SK6812-RGBW)&lt;br /&gt;
&lt;br /&gt;
 D m            - Anzeigemodus (Display-Mode) setzen&lt;br /&gt;
                  WC12h:&lt;br /&gt;
                    m =  0               Wessi&lt;br /&gt;
                    m =  1               Ossi&lt;br /&gt;
                    m =  2               Rhein-Ruhr&lt;br /&gt;
                    m =  3               Schwaben&lt;br /&gt;
                    m =  4               Schweizerdeutsch 1&lt;br /&gt;
                    m =  5               Schweizerdeutsch 2&lt;br /&gt;
                    m =  4               Englisch 1&lt;br /&gt;
                    m =  5               Englisch 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  WC24h:&lt;br /&gt;
                    m =  0               hh mm (12)&lt;br /&gt;
                    m =  1               hh mm (24)&lt;br /&gt;
                    m =  2               hh und mm (12)&lt;br /&gt;
                    m =  3               hh und mm (24)&lt;br /&gt;
                    m =  4               mm nach hh (12+)&lt;br /&gt;
                    m =  5               mm nach hh (24)&lt;br /&gt;
                    m =  6               Ossi/Berlin (12)&lt;br /&gt;
                    m =  7               Ossi/Berlin (12+)&lt;br /&gt;
                    m =  8               Oesi (12)&lt;br /&gt;
                    m =  9               Oesi (12+)&lt;br /&gt;
                    m = 10               Rhein/Ruhr (12)&lt;br /&gt;
                    m = 11               Rhein/Ruhr (12+)&lt;br /&gt;
                    m = 12               Schwaben (12)&lt;br /&gt;
                    m = 13               Schwaben (12+)&lt;br /&gt;
                    m = 14               Wessi (12)&lt;br /&gt;
                    m = 15               Wessi (12+)&lt;br /&gt;
&lt;br /&gt;
 A a            - Animation setzen&lt;br /&gt;
                    a =  0               Keine Animation&lt;br /&gt;
                    a =  1               Keine&lt;br /&gt;
                    a =  2               Fade&lt;br /&gt;
                    a =  3               Roll&lt;br /&gt;
                    a =  4               Explode&lt;br /&gt;
                    a =  5               Random&lt;br /&gt;
                    a =  6               Snake&lt;br /&gt;
                    a =  7               Teletype&lt;br /&gt;
                    a =  8               Cube&lt;br /&gt;
                    a =  9               Matrix&lt;br /&gt;
                    a = 10               Drop&lt;br /&gt;
                    a = 11               Squeeze&lt;br /&gt;
                    a = 12               Flicker&lt;br /&gt;
&lt;br /&gt;
 F f            - Farbanimation setzen&lt;br /&gt;
                    f =  0               Farbanimation aus&lt;br /&gt;
                    f =  1               Farbanimation Rainbow&lt;br /&gt;
&lt;br /&gt;
 B b            - Helligkeit (Britghtness) setzen&lt;br /&gt;
                    b =  0 ... 15        Helligkeit&lt;br /&gt;
&lt;br /&gt;
 L l            - Automatische Helligkeitsregelung&lt;br /&gt;
                    l =  0               Regelung aus&lt;br /&gt;
                    l =  1               Regelung an&lt;br /&gt;
&lt;br /&gt;
 P p            - Power&lt;br /&gt;
                    p =  0               Power off&lt;br /&gt;
                    p =  1               Power on&lt;br /&gt;
&lt;br /&gt;
 W              - Temperaturanzeige aktivieren&lt;br /&gt;
&lt;br /&gt;
 T y m d h i s  - Datum/Zeit (Time) setzen:&lt;br /&gt;
                    y =  0 ... 99        Jahr seit 2000&lt;br /&gt;
                    m =  1 ... 12        Monat&lt;br /&gt;
                    d =  1 ... 31        Tag im Monat&lt;br /&gt;
                    h =  0 ... 23        Stunde&lt;br /&gt;
                    i =  0 ... 59        Minute&lt;br /&gt;
                    s =  0 ... 59        Sekunde&lt;br /&gt;
&lt;br /&gt;
 gT x           - Tetris&lt;br /&gt;
                    x = s                Tetris starten&lt;br /&gt;
                    x = l                Links&lt;br /&gt;
                    x = r                Rechts&lt;br /&gt;
                    x = d                Unten&lt;br /&gt;
                    x = u                Hoch (hier: Drehen)&lt;br /&gt;
                    x = m                Fallenlassen&lt;br /&gt;
                    x = q                Quit: Beenden&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Historie der Hardware-Versionen ==&lt;br /&gt;
=== Shield für STM32 MiniDevBoard (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des MiniDev Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board ist 38x110mm und verbindet alle Komponenten miteinander.&amp;lt;br&amp;gt;Dieses Board ist die optimale Variante für die klassische 10x11 WordClock. Es enthält alle Schnittstellen für die WordClock und ist für die WC12 als auch für die WC24 Variante geeignet.&lt;br /&gt;
&#039;&#039;&#039;Bei dieser Version (März 2016) sind die Anschlüsse für den UART auf dem Shield so beschriftet, dass (ausnahmsweise) TX -&amp;gt; TX und RX -&amp;gt; RX verbunden werden müssen.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:MiniShield Vorderseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite&lt;br /&gt;
||[[Datei:MiniShield Rueckseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board soweit bestückt - es fehlt hier noch das STM32. Das STM32 MiniDevBoard sollte direkt ohne weiteren Sockel auf das Shield gelötet werden.&lt;br /&gt;
||[[Datei:MiniShield Bestueckt.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Hier nun das vollbestückte Shield, incl STM32, ESP8266, RTC, DS1820, AMS1117&lt;br /&gt;
||[[Datei:MiniShield Bestueckt incl STM32.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards:&amp;lt;br&amp;gt;Einzige Abweichung: +5V ist an die UART Schnittstelle mit raus geführt.&lt;br /&gt;
||[[Datei:MiniShield Schaltplan.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v2 enthält folgende Anpassungen:&lt;br /&gt;
* am UART ist nun auch +5V ausgeführt&lt;br /&gt;
* Rastabstand bei DS3231, TSOP, LDR, Data sind nun einheitlich und können somit mit einem durchgehenden PinHeader bestückt werden&lt;br /&gt;
* die Pins für das DS3231 sind gespiegelt. Damit liegt die Batterie nun oben und steht nicht mehr nach unten über&lt;br /&gt;
* Es wurde die Abschaltschaltung für die 5V Versorgung der WS2812 Streifen eingebaut. Somit kann optional die Versorgungsspannung geschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:MiniDev v2 TOP.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Im Lieferzustand ist die Abschaltschaltung gebrückt. Wird die Abschaltschaltung eingebaut, muss auf der Unterseite eine Leiterbahn durchtrennt werden! Diese ist hier rot umrandet!&#039;&#039;&#039;&lt;br /&gt;
||[[Datei:MiniDev v2 BOTTOM.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bestückte Bilder folgen noch.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards als V2:&lt;br /&gt;
||[[Datei:MiniDev v2 Schematic.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurden zwei Taster (WPS / User) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:MiniDev_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bei bestückten STM32 kann man gut erkennen, dass leider der 4-Pin-Header für den UART Anschluss sowie der 3-Pin-Header für PROG/RUN jeweils mit einem Pin unter dem Shield liegen.&lt;br /&gt;
* Beim UART Anschluss wird einfach nur ein 3-Pin-Header verwendet und +5V nicht angeschlossen. Was keine Funktionsbeeinträchtigung bedeutet.&lt;br /&gt;
* Der 3-Pin-Header für PROG/RUN kann &#039;&#039;&#039;nicht direkt&#039;&#039;&#039; bestückt werden. Stattdessen muss hier mit einer 3-adrigen-Verlängerung gearbeitet werden.&lt;br /&gt;
Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
||[[Datei:MiniDev_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V3:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32 Nucleo-Board (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des Nucleo Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Shield ist 90mm*55mm klein und wird auf das nucleo-Board aufgesteckt. Es enthält alle bekannten Schnittstellen für die WordClock (egal ob 12h oder 24h) und ist zusammengebaut ca 19mm hoch.&lt;br /&gt;
Es passt somit problemlos in eine Aussparung des Zwischenbodens.&lt;br /&gt;
|| [[Datei:Ns-Bild1.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ebenfalls integriert sind Anschlüsse, um den abgesägten ST-Link zur Programmierung oder Kommunikation über UART mit dem PC zu verbinden. Dabei muss der abgesägte ST-Link von interner auf externe Programmierung umgestellt werden. Dazu zieht man beide Jumper an CN2 auf dem ST-Link (rechts neben dem SWD-Header) ab. Wichtig ist, auch noch eine Verbindung vom SWD-Header Pin1 (VDD ganz oben) zu 3V3 des Nucleo-Teils herzustellen. Das ST-Link misst über VDD -&amp;gt; 3V3 die Betriebsspannung des STM32.&lt;br /&gt;
&lt;br /&gt;
||[[Datei:STLink-to-Nucleo.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beschreibung der Schnittstellen:&lt;br /&gt;
Die Belegung der meisten Schnittstellen ergibt sich aus den nebenstehenden Bildern.&lt;br /&gt;
Um das RTC Modul, welches entweder ein DS3231 oder ein DS1307 sein kann, mit Spannung zu versorgen, gibt es die Stiftleiste St-07, welche mit einem Jumper die Spannung am RTC Modul auf 3,3V oder 5V einstellt.&lt;br /&gt;
Die Stiftleiste St-04 kann per Pfostenfeldbuchse und Flachbandkabel insgesamt 8 mal die Spannung in die WS2812 Streifen einspeisen (siehe Beispiel weiter oben im Artikel).&lt;br /&gt;
||[[Datei:Ns-sh2.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| In dem nebenstehenden Bild ist das bestückte Nucleo Board zu sehen. Die einzelnen Module werden hier rechts und links an den überstehenden Pins angebracht.&lt;br /&gt;
||[[Datei:Nucleo_bestueckt.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Seit Juli 2016 wird das Nucleo-Shield in der Version V2.1a ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Es enthält jetzt auch die Möglichkeit, die Abschaltung der WS2812 LEDs per Hardware vorzunehmen. Dazu wurden die entsprechenden Bauteile auf das Board gepackt.&lt;br /&gt;
Außer dem Leistungs MOSFET IRF9310 wurde alles in bedrahteter Technik ausgeführt.&lt;br /&gt;
Wer die Bauteile für die Abschaltung (T1, T2, D1, R7, R8 und R9) NICHT einbaut, muss, wie in nebenstehendem Bild gezeigt, vier Lötbrücken einbauen.&lt;br /&gt;
&lt;br /&gt;
Analog dazu muss derjenige, der die Abschaltung einbaut, die Lötbrücken offen lassen (siehe unteres Bild, roter Kreis).&lt;br /&gt;
|| [[Datei:IMG 0366mod.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der Anschluss der externen Komponenten erfolgt nach neben stehendem Schaltplan an das nucleo Board.&lt;br /&gt;
|| [[Datei:Nucleo-Shield.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Leider haben sich zwei Bugs in den Platinenentwurf eingeschlichen.&lt;br /&gt;
Zum einen gibt es Kurzschlüsse an den Pluspolen der Kondensatoren C1 und C3. Der Workaround besteht darin, das Bohrloch etwas aufzuweiten, um die ungewünschte Verbindung zu Masse zu trennen (siehe Bild)&lt;br /&gt;
|| [[Datei:NS Bug-1.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der zweite Bug betrifft nur diejenigen, die die hardwaremäßige Abschaltung der WS2812 LEDs einbauen.&lt;br /&gt;
Hier muss, wie im nebenstehenden Bild gezeigt, eine kleine Verbindung mit einem Stück Kabel hergestellt werden.&lt;br /&gt;
|| [[Datei:NS Bug-2.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Shield muss über St-08 mit 5V versorgt werden. Die für die Schnittstellen benötigten 3,3V wird auf dem Shield selbst mit einem LM3940-3.3 erzeugt.&lt;br /&gt;
&lt;br /&gt;
Hier findet ihr die Stückliste zum Nucleo-Board und den Link zum öffentlichen Reichelt Warenkorb (noch ohne T1, T2, D1, R7, R8 und R9).&lt;br /&gt;
 [[Datei:Wc24wk.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurde ein Taster (WPS) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
* Komplettes Redesign&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:Nucleo_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board.&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 befindet sich also bei &amp;quot;IRF&amp;quot; des Bestückungsdrucks).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V3:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss ESP8266 ESP-01 ==&lt;br /&gt;
&lt;br /&gt;
Das ESP-01 Modul wurde lediglich bei den älteren Shields verwendet. Mittlerweile (ab Shield v3) wird es nicht mehr verwendet, weil es durch das ESP-12F ersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#ESP8266|ESP8266]] ESP-01: WLAN Modul&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-ESP8266-ESP-01.png|miniatur|Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA6&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4 (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA1&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 GPIO2 via 10k an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ab der Software Version 2.1.0 sind der HTML-Codegenerator und die Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266 ausgelagert. Deshalb ist ein ESP-Modul für das Betreiben der WordClock unbedingt erforderlich.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Umbau von ESP-01 auf ESP-12F ==&lt;br /&gt;
&lt;br /&gt;
Die älteren Shields, welche noch den Anschluss für den ESP-01 haben, können auf das ESP-12F umgebaut werden. Dafür besorgt man sich zusätzlich zum ESP-12F einen Adapter wie diesen hier:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.de/itm/PCB-Adapter-ESP-07-12-Board-fuer-ESP8266-WIFI-Wlan-Serial-Modul-ESP-12E-E-/252713824790&lt;br /&gt;
&lt;br /&gt;
Dieser hat die Widerstände R2 und R3 auch schon direkt auf dem Adapter. Lediglich die Widerstände R1 und R4 (siehe Schaltbilder rechts) müssen beim STM32F103-Mini-Board zusätzlich angebracht werden, siehe unten. Beim Nucleo-Board ist der Pulldown an BOOT0 bereits auf der Nucleo-Platine integriert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Mini-Board&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an R (STM32F103-Mini-Development-Board RESET)&lt;br /&gt;
* ESP8266 GPIO4 an BOOT0-Jumper (Mittlerer Anschluss) und an Pulldown 10k&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Mini-Board-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-STM32F103-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an MiniBoard STM32F103]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Nucleo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an Nucleo RESET&lt;br /&gt;
* ESP8266 GPIO4 an Nucleo BOOT0&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Nucleo-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-Nucleo-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an Nucleo STM32F4xx]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beim Mini-Board findet man den Pin BOOT0 verborgen unter dem oberen Jumper - siehe Bild rechts. Dieser muss entfernt werden. Anschließend verbindet man den ESP-12F-Anschluss D16 (GPIO16, ab Version 2.6.0: D4, also GPIO4) mit dem mittleren Pin des Jumper-Anschlusses. Bei der Gelegenheit kann dann auch der Pulldown-Widerstand R1 zwischen B00T0 und dem Nachbar-Pin (&amp;quot;0&amp;quot;) angebracht werden.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board wird der Pin BOOT0 bereits per 10k Pulldown auf Low-Pegel gezogen. Hier kann der ESP-Pin GPIO16 (ab Version 2.6.0: GPIO4) direkt ohne zusätzlichen Pulldown an BOOT0 angeschlossen werden. Zu beachten ist hier lediglich, dass kein Jumper auf Pin5-7 von CN7 steckt. Dies ist aber standardmäßig sowieso nicht der Fall.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:STM32F103-Bootloader-2.6.0.png|miniatur|Anschluss ESP8266 ESP-12F an BOOT0 des STM32F103-MiniBoards]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historie der Software-Versionen ==&lt;br /&gt;
=== Android App ===&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
Behobene Fehler:&lt;br /&gt;
* Animations- und Anzeigelisten konnten nicht gescrollt werden&lt;br /&gt;
* Titel der Animations- und Modus-Dialoge war falsch (%d wählen)&lt;br /&gt;
* Display Ein und Aus zeigten als Meldung immer &amp;quot;Display Ein gesendet!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Änderungen:&lt;br /&gt;
* Farbregler automatisch verbergen, wenn Regenbogen-Farbanimation gewählt wurde&lt;br /&gt;
* Automatische IP-Suche&lt;br /&gt;
* Laden und Speichern der Profile in einem Dialog zusammengefasst&lt;br /&gt;
* Info anzeigen, wenn beim Starten keine Netzwerkverbindung besteht&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Beim Start (oder auf Knopfdruck) werden die aktuellen Einstellungen von der Uhr geladen.&lt;br /&gt;
* Neu: Es können bis zu vier Profile angelegt werden, um die Einstellungen für bis zu vier Uhren zu steuern.&lt;br /&gt;
* Neu: Gamepad für Spiele wie z.B. Tetris&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Alle aktuell vorgesehenen Animationen können nun vollständig über die App ausgewählt werden&lt;br /&gt;
* RGBW-LED-Unterstützung: Unter dem Menü &amp;quot;Einstellungen&amp;quot; kann nun eingestellt werden, dass RGBW-LEDs eingesetzt werden.&lt;br /&gt;
* Die Oberfläche ist nun &amp;quot;scrollable&amp;quot;, kann also bei kleineren Mobilgeräten, wo nicht alles draufpasst, gerollt werden.&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animationen Snake, Teletype und Cube nun auch über die App einstellbar&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Auswählen der Farbanimation &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Button für Temperaturanzeige eingebaut&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 Firmware ===&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Web-Seite: &amp;quot;DFPlayer&amp;quot; zum Abspielen von MP3-Tracks bei vordefinierten Ereignissen.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* OTA-Flash des STM32: Der Flash-Inhalt wird nun erst unmittelbar vor dem eigentlichen Flash-Vorgang gelöscht, d.h. nach allen Konsistenzprüfungen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix in Local Update über OTA: Es wurde in V2.6.3 immer diejenige Datei geflasht, die zuletzt über das Remote Update heruntergeladen wurde.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Korrekturen in den STM32-OTA-Flash-Routinen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anpassung des Bootloaders an Nucleo STM32F4xx.&lt;br /&gt;
* Ambilight-Mode Clock: 5 Sekunden Marker nun an- und abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Das aktuelle Datum/Uhrzeit wurde im Webinterface nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button im Webinterface&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface - ungetestet.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer - ungetestet.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Unterstützung des ESP8266 ESP-12F&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;&lt;br /&gt;
* Neues Piktogramm &amp;quot;Fireworks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auswahl der Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Verbesserungen bei der Kommunikation zwischen STM32 und ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0b ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - Umlaute in Wettertexten wurden nicht korrekt gezeigt. Konvertierung der Umlaute von openweathermap-Inhalten von UTF8 nach ISO8859 nachgeholt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0a ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - beim Wechseln in den AP-Modus wurde fälschlicherweise &amp;quot;0.0.0.0&amp;quot; als IP-Adresse statt 192.168.4.1 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Ausgabe des WLAN-Modus: WLAN-Client oder AP&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler im NTP-Client behoben: Bei vorherigen Timeouts kann eine alte Uhrzeit ausgegeben werden&lt;br /&gt;
&lt;br /&gt;
=== STM32 WordClock Software ===&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Abspielen von MP3-Tracks über Mini DFPlayer bei ausgewählten Ereignissen.&lt;br /&gt;
* Neu: Sprechende Uhr.&lt;br /&gt;
* Neu: Bis zu acht Weckzeiten konfigurierbar.&lt;br /&gt;
* Neu: Advent (1-4) Overlays.&lt;br /&gt;
* Bugfix Timer-Tabellen: Bei gleichem Wochentag wurde der Timer nicht erkannt.&lt;br /&gt;
* Bugfix: Schweizerdeutsch-Layouts (WC12h)&lt;br /&gt;
* Bugfix: Board-LED leuchtet nun wieder, wenn ESP8266 über STM32 geflasht wird.&lt;br /&gt;
* Takt des STM32F411RE von 84MHz auf 100MHz erhöht.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* ESP8266: Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
* Vorbereitung Unterstützung der Interpretersprache NIC.&lt;br /&gt;
* Neu: Unterstützung für Nucleo STM32F446RE eingebaut - ungetestet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs einheitlich auf 120 erhöht.&lt;br /&gt;
* Bugfix: Ermittlung der Hardware-Konfiguration für HEX-Datei-Vorschlag beim OTA-Update korrigiert.&lt;br /&gt;
* Maximal möglichen Wert für Ticker-Verögerung (&amp;quot;Deceleration&amp;quot;) auf 16 beschränkt.&lt;br /&gt;
* Bugfix I2C-Treiber (betrifft RTC &amp;amp; EEPROM): Busy-Condition nach StopBit-Generierung wurde bisher nicht beachtet.&lt;br /&gt;
* Plausibilitäts-Tests auf EEPROM-Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierung: Double-Buffering für SK6812-DMA-Transfer - analog zu WS2812 in Version 2.6.4.&lt;br /&gt;
* Bugfix: Update von undefinierten EEPROM-Inhalten, welche in 2.6.x zu Hangups führen konnten.&lt;br /&gt;
* Bugfix: Nach Spielen von Tetris wurde nicht immer die aktuelle Uhrzeit wieder eingeblendet&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Verlängerung der Pausen für WS2812 auf 300us.&lt;br /&gt;
* Verschäfte Plausibilitätsprüfungen für EEPROM-Inhalte, ggfls. RESET auf Standardwerte.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Flackern bzw. versetztes Ausgabe der Display-LEDs durch Double-Buffering behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Änderung: 5-Sekunden-Marker für Ambilight-Modus &amp;quot;Clock&amp;quot; ist nun ein-/abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ein-/Ausschalten des Ambilights inkl. Timer funktioniert nun.&lt;br /&gt;
* Bugfix: Anzeige von Datum und Uhrzeit im Webinterface.&lt;br /&gt;
* Änderung: Schweizerdeutsch 2: Unterdrückung der Anzeige von &amp;quot;UHR&amp;quot;.&lt;br /&gt;
* EmBitz: Compiler-Optimierung von -O2 auf -Os gesetzt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button, damit ESP8266 sich per WPS mit dem Router (AccessPoint) verbinden kann.&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer.&lt;br /&gt;
* Neu: Ambilight-Animation &amp;quot;Clock&amp;quot; jetzt mit 5-Sekunden-Marker.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
* Optimierung der DS18xx/OneWire/Delay-Funktionen, um die Prozessorlast zu minimieren.&lt;br /&gt;
* Bugfix: Falsche Berechnung von Überläufen in CLOCK2-Animation für Ambilight (Anzahl Ambilight-LEDs = 30) korrigiert.&lt;br /&gt;
* Bugfix: Diverse Korrekturen in Layout English2 für WC12h.&lt;br /&gt;
* Neu: Zusätzliches Layout für WC12h: &amp;quot;Schweizerdeutsch 2&amp;quot;.&lt;br /&gt;
* Neu: WCtris, noch ein Tetris-Clone ;-)&lt;br /&gt;
* Änderung Verbindung zwischen ESP-12F und STM32: GPIO4 (und nicht mehr GPIO16) muss nun mit BOOT0 des STM32 verbunden werden&lt;br /&gt;
* Umstellung der IDE von EmBlocks 2.3.0 auf EMBitz 1.11.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
* Optimierungen der LED-Treiber zwecks Minimierung des RAM-Speicherverbrauchs.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Hochauflösendes animiertes Piktogramm &amp;quot;Fireworks&amp;quot; für WC24h.&lt;br /&gt;
* Bugfix: Auftretendes Glimmen nach Anzeige eines Piktogramms eliminiert. &lt;br /&gt;
* Bugfix WC24h: Anzeige Ossi-Modus: ES IST EINE MINUTE(N) NACH NEUN.&lt;br /&gt;
* Bugfix WC24h: Nach Anzeige des Datums wurde die Uhrzeit nicht vollständig aktualisiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Date-Intervall wurde fälschlicherweise als Fireworks-Interval gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Variable Größen der Piktogramme.&lt;br /&gt;
* Sanftes Ein- und Ausblenden (Fading) der Piktogramme.&lt;br /&gt;
* Piktogramme können nun animiert werden.&lt;br /&gt;
* Neues animiertes Piktogramm &amp;quot;Feuerwerk&amp;quot; für Silvester.&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;.&lt;br /&gt;
* Anzeige des aktuellen Datums als Laufschrift.&lt;br /&gt;
* Optimiertes Auslesen des DS18xx, um Verzögerungen in der Sekundenanzeige (Ambilight Clock) zu vermeiden.&lt;br /&gt;
* UART-Ringbuffer vergrößert zwecks Stabilisierung des ESP8266-Flashvorgangs.&lt;br /&gt;
* Unterstützung von neuen Layouts für Schweizerdeutsch und Englisch (nur WC12h).&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.5 ====&lt;br /&gt;
&lt;br /&gt;
* Erkennung des (nicht existenten) externen Pullups verbessert durch Delay vor Messung.&lt;br /&gt;
* Piktogramme Heart und Xmas-Tree werden nun in einer höheren Auflösung (16x16) auf der WC24h angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Piktogrammanzeige bei automatischer Helligkeitsregelung korrigiert.&lt;br /&gt;
* Bugfix: Piktogramme werden bei Power-Off nicht mehr angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Compiler-Warnungen für SK6812-RGBW beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeigefehler von Piktogrammen auf WC24h behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeige von Piktogrammen bei gleichzeitiger Rainbow-Animation zu kurz.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ineinanderschieben von Buchstaben bei Ticker-Anzeige behoben.&lt;br /&gt;
* Bugfix: Änderungen von Weiß-Werten bei SK6812-RGBW wurden nicht mehr übernommen.&lt;br /&gt;
* Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot; eingebaut.&lt;br /&gt;
* Unterstützung für WS2812 mit Reihenfolge RGB statt GRB.&lt;br /&gt;
* Spezielle Compiler-Warnungen bei erhöhter Warnstufe beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Umschaltung auf Open-Drain-Betrieb des LED-Ausgangs bei Anbringung eines 4k7 Pullups am WS2812-Eingang zur Erhöhung des LED-Eingangspegels von 3,3V auf 5V.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Unbedingtes Aktivieren des AP-Modus durch User-Button, auch wenn der ESP wegen Hersteller-Einstellungen bereits im AP-Modus ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Regeln der weißen SK6812-RGBW-LED im Browser funktionierte in Version 2.2.1 nicht mehr.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Wenn ausschließlich das RTC-Modul zur Temperaturmessung dient, wurde auf dem Display immer fälschlicherweise 12°C ausgegeben.&lt;br /&gt;
* Bugfix: Korrekturwert für DS18XX geht nach Reboot verloren.&lt;br /&gt;
* SK6812 wird nun auch in der RGB-Variante unterstützt - nicht nur RGBW.&lt;br /&gt;
* Verbesserung der automatischen Helligkeitsregelung (Sprungverhalten bei Unterschreiten der Helligkeits-Mindestwerts).&lt;br /&gt;
* DCF77-Empfänger-Problem bei Sekunde = 50 (gleichzeitige DS18xx-Temperaturmessung) behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Die Anzeigedauer der Temperatur ist nun nicht mehr von der Dauer der Animation abhängig.&lt;br /&gt;
* Bugfix Ambilight: Nach &amp;quot;Test Display&amp;quot; wurde die ursprüngliche Helligkeit des Ambilight nicht wieder hergestellt.&lt;br /&gt;
* Bugfix AP-Mode: Durch einen Timeout bei der ESP8266-Kommmunikation wurden die Vorgabewerte fürs Web-Interface nicht übertragen.&lt;br /&gt;
* RX-Ringbuffer ESP8266 -&amp;gt; STM32 von 128 auf 256 vergrößert.&lt;br /&gt;
* Timeout-Behandlung bei der Kommunikation zwischen STM32 und ESP8266 verbessert. &lt;br /&gt;
* Web-Interface: Checkbox &amp;quot;Use display colors&amp;quot; wurde auf die Seite &amp;quot;Ambilight&amp;quot; verschoben.&lt;br /&gt;
* WC12h Bugfix: Umlaute werden in der Laufschrift immer als Großbuchstaben angezeigt.&lt;br /&gt;
* WC12h: Font zur Laufschriftanzeige durch besser lesbaren Font ersetzt.&lt;br /&gt;
* WC24h: Korrektur der Anzeige von &amp;quot;ES IST EINS UHR&amp;quot; nach &amp;quot;ES IST EIN UHR&amp;quot; in bestimmten Anzeigemodi.&lt;br /&gt;
* Bugfix SK6812: Rot und Grün vertauscht.&lt;br /&gt;
* Bugfix LDR: Nach dem Setzen eines neuen LDR-Max-Wertes wurde dieser nicht zurück an das Web-Interface übertragen und deshalb dort (bis zum nächsten Reboot) ein alter Max-Wert angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266, damit Code-Ersparnis auf dem STM32 von 14KB Flash.&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
* Optional: Laufschrift mit dem aktuellen Wetter (über openweathermap.org)&lt;br /&gt;
* Unterstützung SK6812 (optional, RGBW-LEDs)&lt;br /&gt;
* Verbesserungen bei der LDR-Umgebungshelligkeitsmessung&lt;br /&gt;
* Wegfall der Schaltfläche &amp;quot;Save all&amp;quot; im Web-Interface. Nun werden sämtliche geänderten Konfigurationsdaten sofort auch im EPROM neu gespeichert.&lt;br /&gt;
* Bugfix: DS18xx-Temperatur-Korrekturwert wurde bisher als RTC-Temperatur-Korrekturwert im EEPROM gespeichert.&lt;br /&gt;
* Bugfix: Bei der manuellen Eingabe des aktuellen Datums/Uhrzeit im Webinterface wurde das Jahr bisher als &amp;quot;Zufallszahl&amp;quot; gespeichert, wenn der ESP8266 im AP-Modus läuft, weil kein WLAN vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.7 ====&lt;br /&gt;
&lt;br /&gt;
* URL-Fehler im Web-Interface korrigiert für Rainbow-Geschwindigkeit und Temperatur-Anzeige-Intervall&lt;br /&gt;
* Fehlende Berücksichtigung der Animation-Geschwindigkeiten in &amp;quot;Random&amp;quot; eingebaut&lt;br /&gt;
* Default-Werte für einstellbare Verzögerungen der Animationen auf WC12h verdoppelt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Drop&amp;quot;&lt;br /&gt;
* Neue Animation &amp;quot;Squeeze&amp;quot;&lt;br /&gt;
* Geschwindigkeitsregler für sämtliche Animationen&lt;br /&gt;
* Angaben von Favoriten für die Animationen, die dann bei der Random-Animation ausgewählt werden sollen&lt;br /&gt;
* Geschwindigkeitsregler für Rainbow - sowohl für Display als auch für Ambilight&lt;br /&gt;
* Angabe von Temperaturkorrekturen für DS18xx als auch für RTC in Schritten von 0,5°C bei Selbsterwärmung&lt;br /&gt;
* LED-Kalibrierung durch Messen vom dunkelsten und hellsten Wert manuell im Web-Interface möglich - ungetestet!&lt;br /&gt;
* Clock und Clock2 auf dem Ambilight laufen nun je nach Einstellung in der Display-Farbe oder selbstständig in der Ambilight-Farbe&lt;br /&gt;
* Temperatur-Anzeige auf der WC12h nun nicht mehr als Laufschrift, sondern durch zwei große Ziffern auf dem Display. Wenn die Temperatur xx,5°C und nicht xx,0°C beträgt, wird das &amp;quot;standesgemäß&amp;quot; auf der WC12h durch zwei leuchtende Minuten-LEDs angezeigt. Die Anzeige der Minuten-LEDs ist ungetestet.&lt;br /&gt;
* Angabe eines Intervalls, wie oft die Temperatur automatisch eingeblendet werden soll. Bei &amp;quot;1&amp;quot; wird die Temperatur einmal pro Minute eingeblendet, nämlich immer um hh:mm:30. Bei Angabe von z.B. &amp;quot;5&amp;quot; passiert das dann halt nur noch alle 5 Minuten. Wird 0 oder nichts eingegeben, wird keine Temperatur automatisch eingeblendet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.5 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation: &amp;quot;Matrix&amp;quot;.&lt;br /&gt;
* Bugfix: Fehler in Timerfunktion am Wochenende behoben.&lt;br /&gt;
* Bugfix: Fehlerhafte Offset-Berechnung in Ambilight-Animation &amp;quot;Clock2&amp;quot; korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ambilight leuchtete im Synchronmodus in Rainbow-Animation nach Abschalten durch Timer weiter. Die LEDs werden nun komplett abgeschaltet.&lt;br /&gt;
* Bugfix: Getrennte Helligkeitssteuerung des Ambilights wurde durch Helligkeitssteuerung des Displays beeinträchtigt. Nun sind beide Helligkeiten komplett unabhängig.&lt;br /&gt;
* Bugfix: Wenn die Uhr gem. Timer aus ist, liefen einige Animationen teilweise trotzdem alle 5 Minuten. Ist nun behoben.&lt;br /&gt;
* Bugfix: Keine Webserver-Kommunikation möglich, wenn der ESP-01 im AP-Modus ist und in der RTC die Uhrzeit noch nicht initialisiert wurde. Ist nun behoben.&lt;br /&gt;
* Neu: Anzeige von Laufschriften&lt;br /&gt;
* Ambilight: Sekundenzeiger nun auch für 20 oder 30 LEDs, die Zahl der Ambilight-LEDs ist nun im Webinterface konfigurierbar.&lt;br /&gt;
* Ambilight: Neue Sekundenanzeige mit zunehmendem/abnehmendem Vollkreis.&lt;br /&gt;
* Ambilight: Sekundenzeiger-Animationen: Start-LED nun über Webinterface konfigurierbar&lt;br /&gt;
* Web-Konfiguration: Erweiterung der Schieberegler um numerische Anzeige (zwecks besserer Reproduzierfähigkeit von RGB-Werten)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: einminütiges Abschalten des Displays nach Cube-Animation behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* Um unnötige Animationen zur vollen Minute bei der WC12h zu vermeiden, wird die DCF77-Zeit nun um hh:mm:15 verzögert ausgeliefert. Timeserver-Zugriffe pendeln sich im Laufe der Zeit auf hh:mm:30 (alle 3780 Sekunden) ein, RTC-Zugriffe werden jede Minute um hh:mm:45 ausgeführt.&lt;br /&gt;
* Power-Taste auf der IR-Fernbedienung kann nun beim Anlernen als Skip-Taste verwendet werden.&lt;br /&gt;
* DCF77-Messung: Die Zeit der vorherigen Minute wird nun als zusätzliche Plausibilitätsprüfung herangezogen&lt;br /&gt;
* Snake-Animation: Es werden nun gezielt die Wörter der alten Uhrzeit &amp;quot;gefressen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.1 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration von &amp;quot;ES IST&amp;quot;-Anzeige korrigiert: nun auch jede halbe Stunde.&lt;br /&gt;
* Bugfix bei der &amp;quot;ES IST&amp;quot;-Anzeige auf WC12h: Die Anzeige wird nun 5 Minuten lang beibehalten - und nicht nur ein Minute.&lt;br /&gt;
* Bugfix: Farbanimationen bzw. Ambilight-Animationen verhinderten das Abschalten des Ambilights bei Power-Off.&lt;br /&gt;
* Umgebungs-Helligkeitsmessungen werden nun nur noch durchgeführt, wenn keine Übergangs-Animation läuft.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs nun bei Verwendung eines Nucleo-Board gleich 100, sonst 60.&lt;br /&gt;
* Power-Off-Signal, um LED-Spannungsversorgung abzuschalten, nun beim Mini-Board (STM32F103) auf Pin PB0.&lt;br /&gt;
* Fading-Effekt durch kleinere Farbänderungsschritte verstärkt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Abschalten des Ambilights bei Power-Off-Befehl funktionierte bisher nicht.&lt;br /&gt;
* Bugfix: Ein-/Ausschalten der Spannungsversorgung für LED-Stripe.&lt;br /&gt;
* Anzeige des Wortes &amp;quot;UHR&amp;quot; zur vollen Stunde hinzugefügt - dort, wo es bisher fehlte. Betrifft nur WC24h.&lt;br /&gt;
* Neue Einstellung, ob &amp;quot;ES IST&amp;quot; permanent leuchten soll oder nur zur vollen Stunde.&lt;br /&gt;
* Verbesserung der Rainbow-Animation (Dank an Ralf Hammeran).&lt;br /&gt;
* Dynamische Anpassung der automatischen Helligkeitssteuerung an die Umgebungshelligkeit (Dank an Ralf Hammeran).&lt;br /&gt;
* Neue Übergangs-Animationen: &amp;quot;Snake&amp;quot;, &amp;quot;Teletype&amp;quot; und &amp;quot;Cube&amp;quot;.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs auf 60 Stück begrenzt, siehe auch Ambilight-Modus &amp;quot;Clock&amp;quot; (umlaufende Sekundenanzeige).&lt;br /&gt;
* Neue Seite &amp;quot;Ambilight&amp;quot; in der Web-Konfiguration.&lt;br /&gt;
* Neue Einstellung, ob Ambilight-Farben synchron zu den Display-Farben angepasst werden sollen oder separat gesteuert werden sollen.&lt;br /&gt;
* Neue separate Farbauswahl und Helligkeitssteuerung für Ambilight.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Clock&amp;quot;: Umlaufende Sekundenanzeige.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Rainbow&amp;quot;: Regenbogenfarben-Animation jetzt auch im Ambilight möglich.&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Automatischer Farbwechselmodus: Rainbow&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.9 ====&lt;br /&gt;
&lt;br /&gt;
* Stellen der Uhrzeit über Web-Interface&lt;br /&gt;
* Konfiguration über Web-Interface, ob ESP8266 im AP- oder WLan-Client-Modus arbeiten soll&lt;br /&gt;
* Einstellung SSID und Key für AP-Modus&lt;br /&gt;
* Steuerung der LED-Stripe-Spannungsversorgung (ungetestet)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.8 ====&lt;br /&gt;
&lt;br /&gt;
* Für WC12h kleineren Font (5x8) für Laufschriften zwecks besserer Lesbarkeit integriert&lt;br /&gt;
* Auswertung des Temperatur-Anzeige-Kommandos per Android App (ab Version 1.7.0)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.7 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler in der Wochentagsberechnung korrigiert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.6 ====&lt;br /&gt;
&lt;br /&gt;
* Verzögerte Reaktion der Minuten-LEDs (WC12h) bei Farbwechsel behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.5 ====&lt;br /&gt;
&lt;br /&gt;
* STM32F103 Mini Development Board: Abschalten des JTAGS, um PB3 u.a. als GPIO für z.B. [[IRMP]] nutzen zu können (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.4 ====&lt;br /&gt;
&lt;br /&gt;
* Korrektur der ESP8266 Flash-Pin-Definition für das STM32F103 Mini Development Board (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix bei der Temperatur-Anzeige: Es wurde immer die DS3231-Temperatur statt der DS128xx-Temperatur gezeigt&lt;br /&gt;
* Falsche Temperatur-Anzeige im Modus &amp;quot;Temperatur&amp;quot;&lt;br /&gt;
* Bezeichnungen der Anzeigemodi für WC24 gekürzt&lt;br /&gt;
* Manuelle Aktivierung des LDRs aus Weboberfläche entfernt. LDR-Messung ist nun immer aktiv, egal ob angeschlossen oder nicht&lt;br /&gt;
* Unterstützung des DCF77-Moduls wieder eingebaut&lt;br /&gt;
* Anzahl der Nachtschaltzeiten auf 8 erhöht - unter Berücksichtigung der Wochentage&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.2 ====&lt;br /&gt;
&lt;br /&gt;
* Hangup-Problem bei Aktivieren des LDRs beseitigt&lt;br /&gt;
* Neu: Nachtschaltzeiten in der Weboberfläche&lt;br /&gt;
* Optimierung des HTML-Code-Generators&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.1 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler bei HTTP-Get-Parameter-Übergabe von Leerzeichen in SSID behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Spezielle Firmware für ESP8266-Modul, da die Espressif-Firmware zu instabil ist und zu viele Varianten existieren&lt;br /&gt;
* Kommunikationsprotokoll an neue ESP-Firmware angepasst&lt;br /&gt;
* Direktes Flashen des ESP8266 in der WordClock-Schaltung über das verwendete STM32-Board&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderung: Damit das ESP8266-Modul direkt über das STM32-Board geflasht werden kann, ist die Verbindung ESP8266-GPIO0 zu STM32 PA4 herzustellen, siehe auch: [[WordClock_mit_WS2812#Anschluss_ESP8266|Anschluss ESP8266]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* [[MCURSES]]-Monitor durch [[WordClock_mit_WS2812#Web-Interface|WEB-Server]] ersetzt&lt;br /&gt;
* Laufschriften-Ausgabe der aktuellen IP-Adresse&lt;br /&gt;
* Kleinere Änderungen/Optimierungen&lt;br /&gt;
* DCF77-Decoder mangels Interesse/Notwendigkeit entfernt&lt;br /&gt;
* Laufschriften-Ausgabe auf dem LED-Display beim Anlernen einer IR-Fernbedienung&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* WordClock12h: Anzeige der Temperatur durch Laufschrift&lt;br /&gt;
* Neue Anschlusspins für TSOP und DS18xxx am STM32F103&lt;br /&gt;
* Optimierung des WS2812-DMA-Transfers für STM32F103&lt;br /&gt;
* Temperaturmessung mit DS3231, wenn kein DS18xx angeschlossen&lt;br /&gt;
* Umstrukturierung der C-Sources&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Problem beim Verbindungsaufbau Android App -&amp;gt; WordClock behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Unterstützung der &amp;quot;klassischen&amp;quot; WordClock12h mit 10x11 LEDs&lt;br /&gt;
* Anpassung der [[MCURSES]]-Monitor-Oberfläche an WordClock12h-Variante&lt;br /&gt;
* Portierung auf STM32F103 abgeschlossen (IDE-Projekt folgt mit 1.6.2)&lt;br /&gt;
* Zusätzliche Unterstützung von neueren [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Firmware-Versionen 1.0.1, 1.4.0 und 1.5.0.&lt;br /&gt;
* Optionales [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Debugging auf zusätzlichem USART - nur für Entwickler&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.9 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0&lt;br /&gt;
* Vergrößerung der UART-FIFOs&lt;br /&gt;
* Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration&lt;br /&gt;
* Überarbeitung der [[MCURSES]]-Monitor-Oberfläche&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.8 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben&lt;br /&gt;
* Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.7 ====&lt;br /&gt;
&lt;br /&gt;
* Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx&lt;br /&gt;
* Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt&lt;br /&gt;
* Anzahl der möglichen [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.6 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#ESP8266|ESP8266]] mit neuerer Firmware, welche \r\n statt \r erwartet&lt;br /&gt;
* Unterstützung von verschiedenen Baudraten des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Automatische Umschaltung von 9600Bd auf 115200Bd beim [[WordClock_mit_WS2812#ESP8266|ESP8266]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierungen im LED-Display-Code&lt;br /&gt;
* Diverse Anpassungen an STM32F103&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart&lt;br /&gt;
* Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anzeige der Firmware-Version des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls im [[MCURSES]]-Monitor&lt;br /&gt;
* Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.1 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelle Helligkeitsregelung per [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] eingebaut&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] nun über [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] ein-/ausschaltbar&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Die geladenen aus dem [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Initialisierung des ADC korrigiert&lt;br /&gt;
* Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]]&lt;br /&gt;
* Helligkeitsstufen von 32 auf 64 erhöht&lt;br /&gt;
* LED-Testprogramm eingebaut (Taste &#039;T&#039; im [[MCURSES]]-Monitor)&lt;br /&gt;
* Anzeige des [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Typs im [[MCURSES]]-Monitor)&lt;br /&gt;
* Unterstützung für Status-LED &#039;&#039;&#039;(beachte geändertes LED-Anschluss-Schema!)&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] an 64 Helligkeitsstufen angepasst&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Sporadisches Hangup-Problem nach Auslesen der Temperatur behoben&lt;br /&gt;
* Fehler bei der Erkennung des Family-Codes für [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] beseitigt&lt;br /&gt;
* Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus&lt;br /&gt;
* Optimierung des [[WordClock_mit_WS2812#WS2812|WS2812]]-Codes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Temperatursensoren&lt;br /&gt;
* Temperatur-Anzeige innerhalb +10°C und 39,5°C&lt;br /&gt;
* Korrektur Sommerzeitumstellung&lt;br /&gt;
* Keine Unterstützung mehr von STM32F4-Discovery&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* IRMP-Konfigurationsfehler behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Animationen hinzugefügt&lt;br /&gt;
* Neue Tabellen für Uhrzeit und Temperatur&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Test auf verschiedene Adressen des I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Speicherplatzverbrauch minimiert&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]] DS3231-Routinen auf DS1307 verallgemeinert&lt;br /&gt;
* Network Listener (UDP) zum Fernsteuern der Uhr über WLAN&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9.1 ====&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Hexdump im [[MCURSES]]-Monitor eingebaut&lt;br /&gt;
* Zusätzliche Waitstates beim Beschreiben des [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzlicher Anschluss von RST und CH_PD des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Verbesserung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Konfiguration dank Hardware-Reset&lt;br /&gt;
* Nutzung des Stromsparmodus im [[WordClock_mit_WS2812#ESP8266|ESP8266]], wenn die Anzeige abgeschaltet wird&lt;br /&gt;
* Konfiguration der Zeitzone über [[MCURSES]]-Monitor&lt;br /&gt;
* Test und Überarbeitung der [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] und [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Funktionen&lt;br /&gt;
* Synchronisation der [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Zeit mit dem µC-Timer&lt;br /&gt;
* Speichern folgender Daten im [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]:&lt;br /&gt;
&lt;br /&gt;
     EEPROM-Version&lt;br /&gt;
     IRMP-Daten einer angelernten IR-Fernbedienung&lt;br /&gt;
     Aktuell eingestellte Farben und Anzeigemodus&lt;br /&gt;
     IP-Adresse des Timeservers&lt;br /&gt;
     Zeitzone&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.8 ====&lt;br /&gt;
&lt;br /&gt;
* Neue IR-Fernbedienungs-Tasten POWER und OK&lt;br /&gt;
* Einbau einer konfigurierbaren &amp;quot;Nachtzeit&amp;quot;, in der sich die Uhr selbstständig abschaltet&lt;br /&gt;
* Konfiguration des Timeservers über [[MCURSES]]-Monitor&lt;br /&gt;
* Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM&lt;br /&gt;
* Initialisierung des [[WordClock_mit_WS2812#ESP8266|ESP8266]] verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)&lt;br /&gt;
* Aufteilung der Anzeige-Logik und des [[MCURSES]]-Monitors auf dsp.c und monitor.c&lt;br /&gt;
* Aufteilung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)&lt;br /&gt;
* Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t&lt;br /&gt;
* Diverse Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7.1 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F401RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
* uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)&lt;br /&gt;
* Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)&lt;br /&gt;
* Anzeige der Online-Devices ([[WordClock_mit_WS2812#ESP8266|ESP8266]], DCF77, EEPROM, [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]) im Terminal&lt;br /&gt;
* Verschiedene Optimierungen&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration des WLAN-Moduls (SSID &amp;amp; Key) nun über Terminal statt fest im Code verdrahtet.&lt;br /&gt;
* Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.&lt;br /&gt;
* DCF77- und [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.&lt;br /&gt;
* I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97858</id>
		<title>WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97858"/>
		<updated>2017-11-29T22:24:01Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Konfiguration des WLAN-Moduls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist der Nachfolger der beiden Projekte [[Word_Clock]] und [[WordClock24h]]. Diese Projekte werden hier zusammengefasst und mit ein- und derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.&lt;br /&gt;
&lt;br /&gt;
Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden &#039;&#039;&#039;WordClock12h&#039;&#039;&#039; und die 24-Stunden-Variante &#039;&#039;&#039;WordClock24h&#039;&#039;&#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Zugehöriger Thread im Forum: https://www.mikrocontroller.net/topic/385955&lt;br /&gt;
&lt;br /&gt;
Tutorial zum Aufbau der WordClock: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WordClock12h und WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:wordclock-frontplatte-v2.png|400px|left|WordClock12h]] &lt;br /&gt;
|| [[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] als auch auf einem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:&lt;br /&gt;
&lt;br /&gt;
* Lauffähig auf STM32F401 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]], STM32F411 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]] und [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
* Anbindung eines [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls mit speziell abgestimmter Firmware&lt;br /&gt;
* WPS-Button zum schnellen Anbinden des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls an das vorhandene Netzwerk&lt;br /&gt;
* Konfiguration über [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]]&lt;br /&gt;
* Holen der Uhrzeit per NTP-Protokoll aus dem Internet&lt;br /&gt;
* Fernsteuerung über IR-Fernbedienung mittels [[IRMP]]&lt;br /&gt;
* Fernsteuerung per [[WordClock_mit_WS2812#Android_App|Android App]]&lt;br /&gt;
* Einstellen des Anzeigemodus (&amp;quot;Sprache&amp;quot;), Helligkeit und der Farbe per IR-Fernbedienung/App/Web&lt;br /&gt;
* Konfigurierbare Nachtschaltzeiten - d.h. automatisches Abschalten zur Nachtzeit, separat auch für das Ambilight&lt;br /&gt;
* Einspielen von MP3-Dateien zu bestimmten Ereignissen oder zu Alarmzeiten (Wecker) über optionalen Mini-DFPlayer&lt;br /&gt;
* Anbindung von LED-Stripes des Typs [[WordClock_mit_WS2812#WS2812|WS2812]] und [[WordClock_mit_WS2812#WS2812|WS2812B]]&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs APA102&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs SK6812 (RGBW-LEDs)&lt;br /&gt;
* Sanftes Überblenden der Uhrzeiten oder verschiedene Animationen bei Uhrzeitwechsel, z.B. &amp;quot;Explode&amp;quot; oder &amp;quot;Matrix&amp;quot;&lt;br /&gt;
* Farbanimationen, z.B. Automatischer Farbverlauf durch alle Regenbogenfarben (&amp;quot;Rainbow&amp;quot;)&lt;br /&gt;
* Anzeigen von teilweise animierten Piktogrammen an bestimmten Tagen wie Geburtstag/Weihnachten/Silvester etc.&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]] (optional)&lt;br /&gt;
* Anbindung einer externen DS3231-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]&lt;br /&gt;
* Anbindung eines externen I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]&lt;br /&gt;
* Optionaler Anschluss eines [[WordClock_mit_WS2812#DCF77|DCF77]]-Moduls&lt;br /&gt;
* Manuelles Stellen der Uhrzeit per [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]] oder [[WordClock_mit_WS2812#Android_App|Android App]], wenn kein Internet/DCF77 verfügbar&lt;br /&gt;
* Optionale Temperaturmessung und -Anzeige mit [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx-Sensor]]&lt;br /&gt;
* Optionale Wetteranzeige über openweathermap.org&lt;br /&gt;
* Separate Farbauswahl für Display und Ambilight&lt;br /&gt;
* Separat einschaltbares Ambilight mit auswählbaren Animationen: Keine, &amp;quot;Clock&amp;quot; (Umlaufende Sekundenanzeige) und &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
* Konfiguration einer &amp;quot;Zeitschaltuhr&amp;quot; für das Ambilight, um dieses zum Beispiel generell nachts abzuschalten&lt;br /&gt;
* Laufschriften - eigene Texte und Wettermeldungen&lt;br /&gt;
* Optionale Steuerung der Stromversorgung für die LED-Stripes&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; Einspielen von [[WordClock_mit_WS2812#Update|Updates]] für ES8266 ESP-12F und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; WCtris - Tetris Clone zum Spielen auf der Uhranzeige&lt;br /&gt;
&lt;br /&gt;
=== Geplante Features für Version 2.7.x ===&lt;br /&gt;
&lt;br /&gt;
* Änderung Programmlogik: Display-Timer soll nicht das Ambilight einschalten. Dieses geht über den Ambilight-Timer.&lt;br /&gt;
* Anzeige von Wetterdaten über Piktogramme, Einblendung automatisch zu konfigurierbaren Zeiten.&lt;br /&gt;
* Ausblenden einzelner LEDs bei animierten Piktogrammen&lt;br /&gt;
* Konfiguration der Anzeigedauer von Piktogrammen&lt;br /&gt;
* Automatische Helligkeit separat auch für Ambilight (alle Modi) - mit Offset-Regler im Vergleich zum Display&lt;br /&gt;
* Ambilight Mode Clock: Sekundenzeiger mit Fading über mehrere LEDs&lt;br /&gt;
* Ambilight Mode Clock: Farbe der 5-Sekunden-Marker einstellbar&lt;br /&gt;
* FIR-Filter für automatische Helligkeitsregelung.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Einstellung: In aktueller Displayfarbe oder in grün.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Ausblenden der Buchstaben per Strahl, Einblenden der Buchstaben durch 2. Strahl&lt;br /&gt;
* Snake Animation frisst nicht nur die alte Uhrzeit, sondern baut die neue Uhrzeit gleichzeitig oder in 2. Durchlauf hinter sich auf&lt;br /&gt;
* Angabe eines Ausgabeformats für die Datumsanzeige&lt;br /&gt;
* Anzeige des On-/Off-Zustands im Webinterface&lt;br /&gt;
* Harlekin-Farbanimation (jeder Buchstabe hat eine eigene Farbe)&lt;br /&gt;
* Jester-Modus (1. April): Unorthodoxe Anzeige am 1. April.&lt;br /&gt;
&lt;br /&gt;
=== Weitere geplante Features ===&lt;br /&gt;
&lt;br /&gt;
* Optional: Umgekehrte Logik zur Helligkeitssteuerung des Ambilights: Bei viel Umgebungslicht Dimmen des Ambilights, bei wenig Umgebungslicht die Helligkeit des Ambilights erhöhen.&lt;br /&gt;
* Webinterface: zusätzliche Infos, z.B. Link auf Liste der Timeserver.&lt;br /&gt;
* STM32-Logbook im Web-Interface&lt;br /&gt;
* Geburtstagsreminder: An einem Geburtstag scrollt der Name und das Alter zu einer vordefinierten Uhrzeit durch.&lt;br /&gt;
* Farbe von Ambilight und Display gesteuert nach Uhrzeit (z.B. von morgens rot nach abends blau)&lt;br /&gt;
* Optimierung der Rainbow-Animation für SK6812 (Weiß)&lt;br /&gt;
* Feinere Unterscheidungen bei Änderung der Display-Helligkeit über Schieberegler (ist momentan nur bei jedem zweiten Schritt erkennbar).&lt;br /&gt;
* Neue Animation &amp;quot;Implode&amp;quot;&lt;br /&gt;
* Animation Flicker: Zunächst die alte Uhrzeit flackern lassen, dann erst die neue. Also nicht beide zusammen.&lt;br /&gt;
* Mood-Light-Funktion&lt;br /&gt;
* Hintergrundfarbe/Helligkeit für Display bzw. Ambilight&lt;br /&gt;
* Vereinfachtes Bedienkonzept für IR-Fernbedienung&lt;br /&gt;
* Spiele wie TRON, SNAKE und PONG&lt;br /&gt;
* Default LDR-Werte für MIN und MAX auf 0 und 4095 (oder angepasster) ändern, wenn im EEPROM-Speicher für die Werte 0 und 0 erkannt wird. So funktioniert der LDR von vorn herein auch ohne kalibrieren und es werden Missverständnisse vermieden.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist unbedingt erforderlich, dass die passende ESP8266-Firmware zur STM32-Firmware eingespielt wird! Ältere ESP8266-Firmware-Versionen führen auf jeden Fall zu Fehlverhalten!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Regel ist dabei: Die STM32-Version muss mit der ESP8266-Firmware in den ersten beiden Ziffern A.B übereinstimmen, die dritte Ziffer C darf unterschiedlich sein.&lt;br /&gt;
&lt;br /&gt;
Aktuelle STM32-Version: &#039;&#039;&#039;2.7.0 vom 29.11.2017&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Aktuelle ESP-Version: &#039;&#039;&#039;2.7.1 vom 29.11.2017&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Momentan kann das SVN nicht aktualisiert werden, daher sind die Sources noch auf Stand 2.6.6!&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EmBitz-Projekt:&#039;&#039;&#039; || [https://www.mikrocontroller.net/svnbrowser/wordclock24h/?view=tar Tarball]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SVN hier auf µc.net:&#039;&#039;&#039;|| svn://mikrocontroller.net/wordclock24h/&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repo-Browser&#039;&#039;&#039;:|| [http://www.mikrocontroller.net/svnbrowser/wordclock24h/ WordClock24h im SVN]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Hex- und Bin-Dateien, wenn man - ohne zu compilieren - direkt flashen will:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%&amp;quot; | Firmware !! style=&amp;quot;width:8%&amp;quot; | Version !! style=&amp;quot;width:10%&amp;quot; | Datum !! style=&amp;quot;width:30%&amp;quot; | Datei&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock STM32 Firmware&#039;&#039;&#039; alle Varianten          || [[WordClock_mit_WS2812#STM32_WordClock_Software|2.7.0]] || 03.06.2017 || [[Datei:Wordclock-hex.zip]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-01 Firmware&#039;&#039;&#039;                          || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.0]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-512K.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-12F Firmware&#039;&#039;&#039;                  || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.1]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-4M.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App|Android App]]&#039;&#039;&#039; || &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App_2|2.6.6]]&#039;&#039;&#039; || 15.06.2017 || [[Datei:WC24h.apk]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WCTris Windows-Console-Programm&#039;&#039;&#039;                  || 2.6.0 || 11.03.2017 || [[Datei:Wctris.zip]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, wird hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]&lt;br /&gt;
&lt;br /&gt;
Wie man die App unter Android installiert, kann man hier nachlesen:&lt;br /&gt;
&lt;br /&gt;
http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html&lt;br /&gt;
&lt;br /&gt;
Am einfachsten erlaubt man die Installation von Apps &amp;quot;aus unbekannten Quellen&amp;quot; und klickt anschließend direkt auf dem Android-Gerät auf den [[WordClock_mit_WS2812#Download|Download]]-Link. Dann kann man das Programm direkt nach dem Download installieren.&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Varianten ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Hardware-Varianten unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Uhrenanzeige WC24h und WC12h&lt;br /&gt;
* Mikrocontroller: STM32F103 (Mini-Development Board), STM32F401 (Nucleo) und STM32F411 (Nucleo)&lt;br /&gt;
* LED-Streifen: WS2812-GRB, WS2812-RGB, SK6812-RGB, SK6812-RGBW und APA102&lt;br /&gt;
&lt;br /&gt;
Für jede dieser Kombinationen gibt es eine spezielle Hex-Datei zum Flashen des STM32. Der Dateiname setzt sich aus den oben genannten drei Teilen zusammen.&lt;br /&gt;
&lt;br /&gt;
* 1. Teil: wc12h oder wc24h&lt;br /&gt;
* 2. Teil: stm32f103, stm32f401 oder stm32f411&lt;br /&gt;
* 3. Teil: ws2812-grb, ws2812-rgb, sk6812-rgb, sk6812-rgbw oder apa102&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich folgende Dateinamen:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Firmware Varianten&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | Controller || style=&amp;quot;width:30%&amp;quot; | Dateiname || style=&amp;quot;width:40%&amp;quot; | Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F103&#039;&#039;&#039; || wc12h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F401&#039;&#039;&#039; || wc12h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F411&#039;&#039;&#039; || wc12h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F103&#039;&#039;&#039; || wc24h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F401&#039;&#039;&#039; || wc24h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F411&#039;&#039;&#039; || wc24h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu beachten: Die normalen WS2812-LED-Streifen benutzen die Farbreihenfolge GRB (Grün-Rot-Blau)!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Software für Windows ===&lt;br /&gt;
&lt;br /&gt;
Die Software zum Flashen des Programms:&lt;br /&gt;
&lt;br /&gt;
* ST-Link/V2 , siehe: http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; (nicht Nucleo!) auch über UART geflashed werden. Dann braucht man keinen ST-Link und verwendet folgende Software: http://www.st.com/web/en/catalog/tools/PF257525&lt;br /&gt;
&lt;br /&gt;
Alternativer Link:&lt;br /&gt;
&lt;br /&gt;
http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html&lt;br /&gt;
&lt;br /&gt;
Zum Flashen des &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; über &#039;&#039;&#039;UART&#039;&#039;&#039; muss beim Einschalten des STM Boot0 über einen Jumper auf „1“ gesetzt sein. Bei Verwendung eines ESP8266-ESP12F-WLAN-Moduls ist aber der mittlere Anschluss von Boot0 schon durch eine Drahtverbindung für das OTA-Flashen belegt – deshalb wird für das Flashen ein &#039;&#039;&#039;ST-Link-Adapter&#039;&#039;&#039; über die SWD-Schnittstelle des STM32MiniBoard &#039;&#039;&#039;empfohlen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Software für das Flashen über UART wird auch zum Aufspielen der ESP8266 Firmware des WLAN-Moduls benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchte man die Sources selber übersetzen:&lt;br /&gt;
&lt;br /&gt;
* EmBitz IDE, siehe https://www.embitz.org/&lt;br /&gt;
&lt;br /&gt;
Möchte man die Debug- und Log-Meldungen als Entwickler oder zur Diagnose verfolgen, braucht man noch&lt;br /&gt;
&lt;br /&gt;
* STM32 Virtual COM Port Driver: http://www.st.com/web/en/catalog/tools/PF257938 für das Nucleo-Board&lt;br /&gt;
* oder einen zusätzlichen USB-UART Adapter nebst Treiber für das STM32F103 Mini Development Board&lt;br /&gt;
* PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder andere Terminal-Emulation&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Quellcode selbst übersetzen ===&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist nur notwendig, wenn man an den Quellen etwas ändern möchte. Im Normalfall braucht man lediglich eine der oben im [[WordClock_mit_WS2812#Download|Download]]-Kapitel angegebenen Hex-Dateien auszuwählen und diese auf den Prozessor flashen.&lt;br /&gt;
&lt;br /&gt;
Wenn man an dem Programm etwas ändern oder erweitern möchte, dann startet man die zuvor installierte EmBitz-IDE. Aus dem SVN lädt man sich den Tarball (Link siehe Kapitel [[WordClock_mit_WS2812#Download|Download]]) und entpackt diesen unter C:\EmBitzProjects.&lt;br /&gt;
&lt;br /&gt;
Nach dem Entpacken findet man dann im Unterverzeichnis wclock24h die Projekt-Datei &#039;&#039;&#039;wclock24h.ebp&#039;&#039;&#039;, um den Quellcode für ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zu compilieren. In der EmBitz-Ide kann man nun mit &#039;&#039;&#039;File -&amp;gt; Open&#039;&#039;&#039; die Projekt-Datei laden.&lt;br /&gt;
&lt;br /&gt;
Möchte man jedoch den Quellcode für das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Board]] übersetzen, dann lädt man die Projektdatei &#039;&#039;&#039;wclock24h-F103.ebp&#039;&#039;&#039; aus dem Unterverzeichnis &#039;&#039;&#039;wclock24h-F103&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Anschließend wählt man in der oberen Zeile in der Mitte das Ziel aus, wofür man den Quellcode übersetzen möchte.&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]]-Projekt werden folgende Alternativen angeboten:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo401-Debug&lt;br /&gt;
* WC24h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo411-Debug&lt;br /&gt;
* WC24h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo401-Debug&lt;br /&gt;
* WC12h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo411-Debug&lt;br /&gt;
* WC12h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
In der F103-Projektdatei können folgende Varianten ausgewählt werden:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-STM32F103-Debug&lt;br /&gt;
* WC24h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-STM32F103-Debug&lt;br /&gt;
* WC12h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
Die Debug-Varianten sind lediglich für die Bugsuche im Programm vonnöten. Es empfiehlt sich daher im Normalfall, die entsprechende Release-Variante auszuwählen.&lt;br /&gt;
&lt;br /&gt;
Nach der Auswahl kann man dann unter &#039;&#039;&#039;Build -&amp;gt; Rebuild all target files&#039;&#039;&#039; den Übersetzungsvorgang starten. Danach findet man im Unterverzeichnis bin\\Release die dazugehörige Hex-Datei mit dem ST-Link-Programm dann auf dem Ziel geflasht werden kann. Das wars!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== STM32F103C8T6 Mini-Development Board ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Dieses Board wird für die &amp;quot;klassische&amp;quot; 10x11 WordClock12h empfohlen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein kleines, platzsparendes Board mit ausreichendem 32Bit-Mikrocontroller. Der STM32F103C8T6 hat 64 KB Flash und 20KB RAM. Bei ebay ist er für kleines Geld (unter 4 EUR) zu haben: Einfach dort nach &amp;quot;STM32F103C8T6&amp;quot; suchen. Die Anbieter sind meist in China. Aber es gibt auch Anbieter aus Deutschland, wo das bestellte Board dann auch schon nach 2 Tagen im Briefkasten steckt. Meist sind die deutschen Anbieter aber etwas teurer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während die [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Boards]] bereits den &amp;quot;Programmer&amp;quot; ST-Link-V2 zum Programmieren des Flashs on-Board haben, ist dies hier nicht der Fall. Hier muss ein separates ST-Link-V2 zum einmaligen Programmieren verwendet werden. Hat man schon ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zuhause, kann der darauf befindliche ST-Link verwendet werden. Oder man beschafft sich einen eigenen Programmer. Bei eBay erhält man sie bereits im einstelligen Euro-Bereich, wenn man nach &amp;quot;ST-Link V2&amp;quot; sucht.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieses Boards gegenüber dem Nucleo ist der geringe Platzbedarf. Rechts sind der Anschluss eines ST-Link V2-Clones zum Flashen und die Anschluss-Skizze der WordClock an das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] zu sehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei den Shields ab V3 für das STM32-Mini-Development Board muss noch eine Drahtbrücke eingelötet werden: Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss über eine Drahtbrücke mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32F103C8T6.png|miniatur|STM32F103C8T6 Mini-Development Board]]&lt;br /&gt;
[[Datei:STM32F103C8T6 MiniDevBoard Schematic.png|mini|MiniDevBoard Schaltplan]]&lt;br /&gt;
[[Datei:STM32F103 MiniBoard STLink.jpg|mini|Flashen per ST-Link V2-Clone]]&lt;br /&gt;
[[Datei:WC_MiniDev_Shield_v4_Drahtbruecke.jpg|mini|Drahtbrücke zu BOOT0]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STM32F401RE Nucleo und STM32F411RE Nucleo ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Es kann sowohl das 401er als auch das 411er [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] verwendet werden. Beide werden identisch genutzt.&lt;br /&gt;
&lt;br /&gt;
Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte man die überstehenden Enden der Steckerleisten auf der &#039;&#039;&#039;Unterseite&#039;&#039;&#039; mit einer Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil) können dabei auf die Oberseite gesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile vier verschiedene Revisionen von den Nucleo-Boards:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;MB1136 C01&amp;quot;: Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator&lt;br /&gt;
* &amp;quot;MB1136 C02 bis C04&amp;quot;: Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Device&lt;br /&gt;
&lt;br /&gt;
Damit auch das Board mit der Revision &amp;quot;MB1136 C01&amp;quot; zuverlässig im HSE-Modus mit 84MHz läuft, sind folgende Hardware-Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
* Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)&lt;br /&gt;
* Lötbrücken SB16 und SB50 entfernen (dito)&lt;br /&gt;
* R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken&lt;br /&gt;
* Quarz X3 (8 MHz) einlöten&lt;br /&gt;
* C33 und C34 mit jeweils 22pF bestücken.&lt;br /&gt;
&lt;br /&gt;
C33 und C34 können auch normale THT-Bauteile sein, wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-Anschlüssen angebracht und mit einem Draht zu CN6, Pin7 (GND) die nötige Masseverbindung hergestellt, siehe Foto rechts. &lt;br /&gt;
&lt;br /&gt;
Es geht aber auch auf der Oberseite direkt an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren. In diesem Falle ist die Masseverbindung bereits im PCB Layout vorhanden und die Drahtbrücke nach CN6, Pin7 (GND) entfällt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 &amp;amp; R37 einlöten, bevor man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision &amp;quot;MB1136 C02&amp;quot; und höher durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.&lt;br /&gt;
&lt;br /&gt;
Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene stellt also den gewünschten Endzustand dar.&lt;br /&gt;
&lt;br /&gt;
Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das Board (nach dem Abtrennen des ST-Link) über die Stiftleiste mit Spannung versorgt werden kann (z.B. durch das Nucleo-Shield), muss &amp;quot;JP5&amp;quot; noch von &amp;quot;U5V&amp;quot; auf &amp;quot;E5V&amp;quot; umgesteckt werden.&lt;br /&gt;
(Zusätzlich auf dem ST-Link &amp;quot;JP1&amp;quot; entfernen, falls noch nicht abgetrennt.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bevor man den ST-Link-Teil abtrennt&#039;&#039;&#039;, sollte man den &#039;&#039;&#039;STM32F4xx und das ESP8266-Modul flashen&#039;&#039;&#039; und auch testen. Nach dem Abtrennen werden dann Updates über OTA geflasht.&lt;br /&gt;
|| [[Datei:WC24h-Nucleo-Oberseite.jpg|miniatur|Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Unterseite.jpg|miniatur|Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Shield.jpg|miniatur|Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für EEPROM/RTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TSOP31238 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zum optionalen Steuern per IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32F411_Nucleo_Board|Nucleo-Shield]]:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an GND, TSOP-Pin2 an 3V3, TSOP-Pin3 an Data&lt;br /&gt;
&lt;br /&gt;
Dabei wird zusätzlich ein Tiefpassfilter (C/R) - wie auch im Datenblatt angegeben - verwendet.&lt;br /&gt;
 &lt;br /&gt;
Es kann auch der kleinere Bruder TSOP4838 angeschlossen werden. Dieser hat den Vorteil, dass er besser hinter einem &amp;quot;Loch&amp;quot; im Zwischenboden untergebracht werden kann, weil er einfach vom Gehäuse her kleiner ist. Allerdings ist dann die Anschlussreihenfolge anders:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an DATA, TSOP-Pin2 an GND, TSOP-Pin3 an 3V3&lt;br /&gt;
&lt;br /&gt;
Der TSOP4838 kann also nicht direkt 1:1 an einem der beiden Shields angeschlossen werden. Da aber sowieso ein 3-poliges Kabel an die Pin-Header geführt wird, sollte das kein Problem sein.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP.png|miniatur|Schaltplan]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP.png|miniatur|Anschluß des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Wird kein IRMP-Empfänger benutzt, sollte R5 (siehe Schaltplan rechts) mit 100k Ohm statt 100 Ohm auf dem Shield bestückt werden. Der zum Tiefpass gehörende Kondensator C1 entfällt dann. Zwischen den Pins 3V3 und Data wird schlussendlich eine Drahtbrücke eingelötet, um einen stabilen Zustand am Daten-Pin des µCs zu gewährleisten.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Ab der Shield Version 4 wird ohne TSOP R5/C1 nicht bestückt und stattdessen R15 (NucleoShield) bzw R16 (MiniDevShield) mit 100k bestückt. Damit wir ein stabilen Zustand am Daten-Pin des µCs gewährleistet.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:TSOP_v4.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WS2812 ==&lt;br /&gt;
Bei der WordClock24h wird eine 16x18-Matrix verwendet plus eine Status LED, bei der WordClock12h eine 10x11-Matrix plus 4 Stück Minuten LED.&lt;br /&gt;
&lt;br /&gt;
Die [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs werden dabei folgendermaßen verdrahtet:&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock12h ====&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Spezialanfertigung von WS2812-Stripes eingesetzt - nämlich mit einem Rastermaß von 28,1mm. Damit ist die WordClock12h von den Maßen her kompatibel zum bisherigen [[Word_Clock]]-Projekt. Das hat den Vorteil, dass bisherige Frontplatten und Zwischenböden weiterverwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Bei der Wordclock12h steht jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;. Folgende Zeichnung ist von der Vorderseite der Uhr aus gesehen, beim Verkabeln von Hinten muss man es natürlich gedanklich umdrehen.&lt;br /&gt;
&lt;br /&gt;
          M4                                                    M1&lt;br /&gt;
           O---------+              µC Data --------------------O&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         1  2  3  4  ...              11            |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |                                          |         |&lt;br /&gt;
           |        22                            12  |         |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--          |&lt;br /&gt;
           |       23 24 ....                                   |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           O----------------------------------------------------O&lt;br /&gt;
          M3                                                    M2&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Dabei sind M1-M4 die 4 Minutenpunkte in den Ecken. Es wird keine Status-LED wie bei der WordClock24 verwendet. Tatsächlich werden hier dafür die Minutenpunkte zur zusätzlichen Statusausgabe mitbenutzt.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board und beim STM32-Mini-Board werden bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt (ab Software-Version 2.6.6). Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 114 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
|| [[Datei:LEDS-Datakabel.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock24h ====&lt;br /&gt;
Verwendet werden Standard-WS2812-Stripes mit &#039;&#039;&#039;60 LEDs pro Meter&#039;&#039;&#039;. Dabei steht - wie bei der WC12h - jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
               +-------------------------------------------------------+&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               1  2  3  4  ...                              18         |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
                                                               |       |&lt;br /&gt;
               36                                       20  19 |       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--        |&lt;br /&gt;
              37 38 ....                                               |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                  Status-LED                           |&lt;br /&gt;
  µC Data -----------------------------O-------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch für die WC24h gilt: Beim (für die WC24 primär empfohlenen) Nucleo-Board und beim (ebenfalls für die WC24h nutzbaren) STM32-Mini-Board werden ab Software-Version 2.6.6 bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 289 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== WS2812-Anschlüsse am Shield ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Der DI-Eingang des LED-Streifens wird per möglichst kurzem Kabel am WS2812-Pin des Shields verbunden, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
In seltenen Fällen kommen die WS2812-LEDs mit einem 3,3V-Pegel an ihrem Eingang nicht zurecht. Die Folge sind dann Falsch-Farben bzw. Ausfälle bei einzelnen LEDs. Für diesen Fall ist auf den Shields ab Version v3 zwischen DI und 5V ein 1k8 Pullup-Widerstand angebracht. Die STM32-Software erkennt beim Boot den Pullup-Widerstand automatisch und schaltet dann den Daten-Ausgang auf Open-Drain-Betrieb um. Damit ist dann der High-Pegel an der ersten angeschlossenen LED nahezu 5V statt 3,3V.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812.png|miniatur|Data Anschluss WS2812 auf Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Jede zweite Reihe (1., 3., 5. usw.) der Streifen wird per Flachbandkabel an die Spannungsversorgung der WS2812-Streifen angeschlossen. Dafür dient der Flachbandkabel-Stecker auf dem Shield. Hier werden 16 mal jeweils +5V und GND zur Verfügung gestellt, siehe nebenstehendes Bild.&lt;br /&gt;
Die 1 und damit die obere Reihe ist 5V, die 2 und damit untere Reihe GND.&lt;br /&gt;
Werden zusätzlich Ambilight LED verwendet, wird ebenfalls jede Seite separat an die Spannungsversorgung angeschlossen um den Spannungsabfall entgegenzuwirken.&lt;br /&gt;
&lt;br /&gt;
Bei der WC12 können dazu die 6 noch freien Pin Pärchen des Pfostensteckers genutzt werden. Bei der WC24h muss die Spannung anderweitig abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812-Power.png|miniatur|Spannungsversorgung der WS2812 auf dem Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DS18xx ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Optional:&#039;&#039;&#039; [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] als Temperatur-Sensor&lt;br /&gt;
&lt;br /&gt;
Es werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
* DS1820&lt;br /&gt;
* DS18S20&lt;br /&gt;
* DS1822&lt;br /&gt;
* DS18B20&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DS18xx-GND (Pin 1) an GND&lt;br /&gt;
* DS18xx-DQ  (Pin 2) an B5 (Mini) bzw. D2 (Nucleo)&lt;br /&gt;
* DS18xx-VDD (Pin 3) an 3V3&lt;br /&gt;
&lt;br /&gt;
Ein 4,7k Pullup-Widerstand ist zum sicheren Betrieb des One-Wire-Busses auf den Shields vorgesehen. &lt;br /&gt;
Der DS18xx sollte nicht in der Nähe von Wärmequellen angebracht werden, am besten also nicht direkt an das Shield löten, sondern in der unteren Tasche des Zwischenbodens anbringen. Die Litze am DS18XX dabei, z.B. mit Hilfe von Schrumpfschlauch, isolieren, damit es nicht zum Kurzschluss am Kühlkörper kommen kann.&lt;br /&gt;
Weiterhin wird aufgrund der geringen Eigenerwärmung der DS18XX Sensoren empfohlen, den Sensor mit Wärmeleitpad/-kleber auf ein kleines Kühlblech zu kleben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ist kein DS18xx Temperatur-Sensor angeschlossen, wird die Temperatur über die RTC (DS3231) ermittelt.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DS1820.png|miniatur|DS1820 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mini-DFPlayer ==&lt;br /&gt;
&lt;br /&gt;
Mit dem optionalen Mini-DFPlayer können als Reaktion auf bestimmte Ereignisse oder zu bestimmten Uhrzeiten MP3-Dateien abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nucleo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB6 (STM324xx TX ALT1)&lt;br /&gt;
* DFPlayer TX an PB7 (STM324xx RX ALT1)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mini-Shield:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB10 (STM32F103 TX)&lt;br /&gt;
* DFPlayer TX an PB11 (STM32F103 RX)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse Quellen im Internet, welche aussagen, dass eine Betriebsspannung von 4,3V wegen des Klangs sinnvoller wäre. Das kann man mit einer Si-Diode in der Zuleitung lösen.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: http://stonez56.blogspot.de/2015/03/arduino-dfplayer-mini-mp3-module.html&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: &#039;&#039;&#039;[[WordClock_mit_WS2812#DFPlayer|Konfiguration DFPlayer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LDR ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: Fotowiderstand (LDR) zur Lichtstärkenmessung, welche die Leuchtstärke der LEDs in Abhängigkeit des Umgebungslichtes automatisch steuert.&lt;br /&gt;
&lt;br /&gt;
Als LDR sollte der LDR07 von Reichelt, ggf. der Ersatz &amp;quot;A 906011&amp;quot; verwendet werden. Wird noch der zwischenzeitlich empfohlene &amp;quot;A 906032&amp;quot; von Reichelt eingesetzt, ist R1 = 10K besser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird kein [[WordClock_mit_WS2812#LDR|LDR]] benutzt, muss auf dem Shield der 10k-Pullup (R2) eingelötet werden, R1 wird dann nicht bestückt.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird der LDR benutzt, darf der Widerstand R2 nicht eingelötet werden!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-LDR.png|miniatur|Schaltplan LDR am Mini-Shield]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-LDR.png|miniatur|LDR-Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DCF77 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: DCF77 Modul&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DCF77 GND an GND&lt;br /&gt;
* DCF77 V+ an 3,3V&lt;br /&gt;
* DCF77 Out an Data&lt;br /&gt;
* DCF77 PON an PON&lt;br /&gt;
&lt;br /&gt;
Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein befriedigendes Empfangsverhalten hat. PON kann beim Reichelt-Modul offen bleiben, beim Pollin DFCF77-1 sollte man PON jedoch anschließen.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang verwendet, muss an Data noch ein 100k Pullup (zu 3,3V) angeschlossen werden.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DCF77.png|miniatur|DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Wird KEIN DCF-Modul verwendet, muss der 100k Widerstand R3 eingelötet werden, um den µC-Eingang auf stabilem Niveau zu halten - aber nur dann! Die sonstigen Komponenten auf dem nebenstehenden Schaltplan entfallen ersatzlos.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-DCF77.png|miniatur|Schaltplan DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ESP8266 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Ab der Software-Version 2.5.0 ist das Aktualisieren der ESP- und STM32-Firmware auch über OTA (&amp;quot;over the air&amp;quot;, also WLAN) möglich. Damit entfällt ein erneutes Anschließen der Uhr an entsprechende Programmiergeräte bei einem Update. Allerdings müssen dafür die bisher eingesetzten ESP8266 ESP-01 durch ein ESP-12F ersetzt werden. Deshalb wird generell ab der Version v3 der Nucleo- bzw. Mini-Shields das ESP8266 ESP-12F Modul statt ESP-01 verwendet. &lt;br /&gt;
&lt;br /&gt;
Es werden nun 2 USARTs vom STM32 benutzt: Das erste für die Kommunikation der beiden µCs zum Datenaustausch, das zweite zum Flashen des STM32 über OTA. Die Bedienung von 2 USARTs des STM32 geschieht durch eine Software-Umschaltung der ESP-UART-Pins.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Nucleo-Shield-ESP-12F.png|180x128px|miniatur|ESP-12F an Nucleo-Shield]]&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-ESP-12F.png|187x122px|miniatur|ESP-12F an Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Die User-Taste wird für mehrere Funktionen genutzt.&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist sie bereits vorhanden. Sie ist blau und mit &amp;quot;User&amp;quot; beschriftet. Wird das Mini-Development-Board benutzt, ist die Taste auf dem dazugehörenden Shield (ab v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] ist die Taste nicht vorhanden, sondern lediglich als Jumper-Pin mit der Bezeichnung &amp;quot;Flash&amp;quot; (PA6) vorhanden. Hier kann man entweder eine Taste anschließen oder mit einem Jumper den Flash-Pin mit dem danebenliegenden Pin &amp;quot;GND&amp;quot; kurzschließen, was derselben Funktion entspricht.&lt;br /&gt;
&lt;br /&gt;
Die User-Taste wird für zwei Fälle benutzt:&lt;br /&gt;
&lt;br /&gt;
* Im Reset-Zustand des STM32 zum Flashen des ESP8266 über UART&lt;br /&gt;
* Im Betriebszustand zum Versetzen des ESP8266 in den AP-Modus mit SSID &amp;quot;wordclock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Funktionen werden in den Kapiteln &#039;&#039;&#039;[[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Flash des WLAN-Moduls]]&#039;&#039;&#039; und &#039;&#039;&#039;[[WordClock_mit_WS2812#Start_als_Access-Point|Start als Access-Point]]&#039;&#039;&#039; näher erläutert.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WPS-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ab Software-Version 2.6.0 wird auch WPS unterstützt. Dann kann die Verbindung des ESP8266 über diese Taste vorgenommen werden. Ab der Shield-Version v3 ist dafür eine eigene Taste auf den Shields vorgesehen. Ältere Shields kann man aber auch nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Dazu schließt man an:&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|STM32F4xx Nucleo]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PC5&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103C8T6 Mini-Development Board]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PA7&lt;br /&gt;
&lt;br /&gt;
Wie dann die Verbindung zum WLAN-Gateway aufgebaut wird, ist hier beschrieben: [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]].&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RTC und EEPROM ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
I2C-Modul mit DS3231 als RTC und EEPROM&lt;br /&gt;
&lt;br /&gt;
Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als Suchbegriff &amp;quot;DS3231 EEPROM&amp;quot; eingibt. Es wird als Echtzeituhr und für die Speicherung der Konfigurationsparameter verwendet. Ist kein DS18xx als Temperatursensor angeschlossen, wird die RTC auch zur Temperaturmessung genutzt.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* 32K Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SQW Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SCL an SCL&lt;br /&gt;
* SDA an SDA&lt;br /&gt;
* VCC an 3V3&lt;br /&gt;
* GND an GND&lt;br /&gt;
&lt;br /&gt;
Von der Software werden auch ältere [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC/EEPROM]]-Module mit DS1307 erkannt, dennoch sollte man aus Kompatibilitätsgründen auf die Verwendung dieser älteren Module verzichten.&lt;br /&gt;
&lt;br /&gt;
Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich&lt;br /&gt;
genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.&lt;br /&gt;
      &lt;br /&gt;
Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-IC bestückt, dann kann man auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss das Modul aber mit +5V statt 3,3V betreiben, damit der Akku überhaupt geladen wird. Sonst ist er aufgrund der Selbstendladung irgendwann leer.&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollte man das Modul eher mit einer CR2032 Batterie betreiben. &#039;&#039;&#039;Dann sollte man aber sicherheitshalber die Diode oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild), damit keine Ladung (und Überhitzung) der Batterie passiert&#039;&#039;&#039;. Das ist zwar eigentlich erst ab einer Betriebsspannung von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht eine CR2032 Batterie für 5-10 Jahre.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h-DS3231-EEPROM.png|miniatur|DS3231 RTC + EEPROM]]&lt;br /&gt;
 [[Datei:WC-Mini-Shield-I2C.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMS1117-3,3V-Spannungsregler-Modul ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur 3,3V-Versorgung des ESP8266-WLAN- Moduls sowie weiterer Peripherie wird ein AMS1117-3,3V-Spannungsregler-Modul eingesetzt. Die Shields aus der Sammelbestellung sind für die Spannungsregler-Module wie in der Abbildung rechts ausgelegt. Beispiele für Bezugsquellen sind in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Die leuchtende rote LED (D1) zeigt an, das die Ausgangsspannung von 3,3V vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:AMS1117-Spannungsregler-Modul.jpg|miniatur|AMS1117-Spannungsregler-Modul]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-AMS1117.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Schalten der 5V-Versorgungsspannung für die LED-Stripes ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Beim Abschalten der LED-Stripes kann neben den Daten, wenn gewünscht, auch die 5V-Versorgungsspannung abgeschaltet werden. Je nach Zahl des LEDs sinkt der Verbrauch um 1 W bis 2 W (--&amp;gt; ca. 3 - 5 EUR im Jahr). Ansonsten wird dem Controller auf den WS2812 nur mitgeteilt, dass gerade alle Kanäle aus sein sollen.&lt;br /&gt;
&lt;br /&gt;
Die Abschaltung der Versorgungsspannung erfolgt dann mit Hilfe der im Schaltplanauszug rechts gezeigten Bauteile. Die Diode begrenzt die Spannung an D IN auf 0,3 V, falls bei abgeschalteter Versorgungsspannung Datenimpulse anliegen – das wird auch durch die Software verhindert. &lt;br /&gt;
&lt;br /&gt;
Ab V3 der Shields muss bei Nichtverwendung der Spannungsabschaltung eine Drahtbrücke eingelötet werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WS2818_Schalten_1.png|miniatur|Schaltplanauszug: Schalten Versorgungsspannung]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Netzteil ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur Spannungsversorgung der WordClock wird ein (Stecker-)Netzteil mit einer Ausgangsspannung von 5V und einer Belastbarkeit von 4A benötigt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt – vergleichbare Netzteile anderer Lieferanten wie eBay oder AliExpress usw. können ebenfalls verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, schon vor der Inbetriebnahme der WordClock die Ausgangsspannung des Netzteils zu messen, da in seltenen Fällen die Ausgangsspannung des Netzteils höher ist als die für die WS2812B-LEDs maximal zulässige Spannung von 5,3V.&lt;br /&gt;
&lt;br /&gt;
Für eine Wordclock12h ohne Ambilight reicht ein Netzteil mit einer Belastbarkeit von 2A.&lt;br /&gt;
&lt;br /&gt;
Der Querschnitt der Verkabelung vom Netzteil zur WordClock ist so zu wählen, dass an den Anschlussklemmen des Shields auch bei angeschalteten LEDs eine Spannung von mindestens 4,75V anliegt. &lt;br /&gt;
&lt;br /&gt;
Bei einer WordClock12h ohne Ambilight und einer Kabellänge 2m reicht ein Querschnitt von 2x0,5mm². &lt;br /&gt;
&lt;br /&gt;
Der für eine WordClock24h, ggf. mit Ambilight, notwendige Querschnitt kann mit einem Tool wie z. B.&lt;br /&gt;
 &lt;br /&gt;
https://www.opendcc.de/info/verdrahtung/wiring.html &lt;br /&gt;
&lt;br /&gt;
abgeschätzt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wer nicht über entsprechende Kenntnisse und Erfahrungen im Umgang mit 230V-Netzspannung verfügt, sollte unbedingt ein Stecker- oder Tischnetzteil verwenden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschluss USB-UART-Adapter ==&lt;br /&gt;
&lt;br /&gt;
Man benötigt in folgenden Fällen einen USB-UART-Adapter:&lt;br /&gt;
&lt;br /&gt;
* Logging der Meldungen auf dem PC&lt;br /&gt;
* Flashen des ESP8266 über das verwendete STM32-Board&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo ist ein USB-UART-Adapter bereits integriert - und zwar im oberen ST-Link-V2-Teil des Boards. Hier ist also kein weiterer Anschluss notwendig. Erst wenn das ST-Link-V2-Teil vom Rest des Boards abgetrennt wird, müssen RX und TX wieder verbunden werden, wenn man den UART-Adapter nutzen will. Also einfach das Board mit dem PC über USB verbinden - fertig. Eventuell muss man noch den STM32 Virtual COM Port Driver installieren. Der entsprechende Link zum Herunterladen steht unter [[WordClock_mit_WS2812#Download|Download]].&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board wird ein externer USB-UART-Adapter benötigt. Dabei schließt man ihn folgendermaßen an:&lt;br /&gt;
&lt;br /&gt;
* USB-UART TX an PA10 (RX)&lt;br /&gt;
* USB-UART RX an PA9 (TX)&lt;br /&gt;
* UAB-UART GND an GND&lt;br /&gt;
&lt;br /&gt;
Solche Adapter (am besten einen, der mit 3,3V-Pegeln arbeitet) gibt es bei eBay oder Amazon für unter 5 EUR. &amp;lt;br /&amp;gt;&lt;br /&gt;
Bei USB-UART-Adaptern mit FTDI-Chip oder Prolific PL2303-Chip sind Fakes im Handel, die von der Original-Treibersoftware nicht korrekt unterstützt werden. &#039;&#039;&#039;Besser sind Adapter mit CH340G- oder CP2102-Chip.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschlusstabelle ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Device || [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] || [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#TSOP31238|TSOP31238]] ([[IRMP]])  || GPIO:   PC10               || GPIO:   PB3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]       || GPIO:   PD2                || GPIO:   PB5&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#LDR|LDR]]                         || GPIO:   PC4                || GPIO:   PA5&lt;br /&gt;
|- &lt;br /&gt;
| WordClock-Logger (USB)                                   || USART2: TX=PA2  RX=PA3 (bereits integriert)    || USART1: TX=PA9  RX=PA10 (externer USB-UART-Adapter)&lt;br /&gt;
|- &lt;br /&gt;
| User Button  || GPIO: USER=PC13 (on-board)               || GPIO: USER=PA6 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| WPS Button  || GPIO: WPS=PC5  (auf dem Shield ab v3)     || GPIO: WPS=PA7 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] Rx/Tx       || USART6: TX=PA11 RX=PA12        || USART2: TX=PA2  RX=PA3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] RST/CH_PD   || GPIO:   RST=PA7 CH_PD=PA6      || GPIO:   RST=PA0 CH_PD=PA1&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO0       || GPIO:   GPIO0=PA4              || GPIO: GPIO0=PA4&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO13/15   || USART1: GPIO13=PA9 GPIO15=PA10 || USART1: GPIO13=PA9 GPIO15=PA10&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#DCF77|DCF77]]                 || GPIO:   DATA=PC11 PON=PC12     || GPIO:   DATA=PB8  PON=PB9 &lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC / EEPROM]] || I2C3:   SCL=PA8 SDA=PC9        || I2C1:   SCL=PB6 SDA=PB7&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#WS2812|WS2812]]               || DMA1:   PC6                    || DMA1:   PA8&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 Power On/Off                                  || PC8                            || PB0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist USART2 bereits fest mit dem auf dem ST-Link-V2-Teil des Boards integrierten UART-USB-Adapter verbunden. Hier sind also keine extra Verbindungen mehr notwendig - erst wenn das ST-Link-V2-Teil abgesägt wird. Und auch dann kann man den USB-UART-Adapter vom ST-Link-V2 weiterverwenden.&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board benötigt man allerdings einen externen USB-UART-Adapter - am besten einen, der mit 3,3V-Pegeln arbeitet. Diese findet man zuhauf bei Amazon oder eBay für ca. 5 EUR.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Teileliste für WC12h oder WC24h und Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:35%&amp;quot; | Bezeichnung || Bezugsquelle&lt;br /&gt;
|-&lt;br /&gt;
| Board&lt;br /&gt;
||  &lt;br /&gt;
STM32 MiniBoard (empfohlen für WC12h)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=STM32F103C8T6 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F103C8T6 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oder&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
STM32 Nucleo&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=nucleo AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F411%20Nucleo eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/Nucleo-STM32F411 Watterott]&lt;br /&gt;
|-&lt;br /&gt;
| USB-UART-Adapter - NUR für Logging und (erstmaliges) Flashen des ESP8266-Moduls am MiniDevBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://de.aliexpress.com/wholesale?SearchText=uart+CH340G AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=USB%20UART%20Adapter eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 ST-Link - NUR für MiniBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;&lt;br /&gt;
Prinzipiell reicht USB-UART-Adapter aus aber ein ST-Link wird zusätzlich empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=st-link+v2 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 MiniBoard Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für MiniBoard notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Das per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Shield enthält sämtliche Anschlüsse um alle benötigten Module mit einander zu verbinden. Der STM32F103 wird direkt in das Shield gesteckt und verlötet - er wird nicht gesockelt!&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321201 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| STM32 Nucleo Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für Nucleo-Board notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Diese per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Adapterplatine wird auf das Nucleo-Board aufgesteckt. Sie enthält sämtliche Anschlüsse für alle vorgesehen Module.&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321193 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 LED Stripes &lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Stripes mit einem Sonderformat über die [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h können Standard Stiles mit 60 LEDs / Meter verwendet werden.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ws2812+60+ip30 AliExpress]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=WS2812%2060%20ip30 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Frontplatte&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Frontplatten über eine Sammelbestellung aus [[WordClock_mit_WS2812#WC12h_Sammelbestellung_Frontplatten | Plexiglas ]] oder [[Word_Clock#Sammelbestellung_.28Edelstahl.29 | Edelstahl]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h gibt es eine Sammelbestellung von Frontplatten aus &lt;br /&gt;
[[WordClock_mit_WS2812#WC24h_Sammelbestellung_Frontplatten | Plexiglas]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird kein Rahmen (siehe unten) verwendet werden zusätzliche Teile (z.B. [[Word_Clock_Variante_1_-_getrennte_Steuerplatine#Befestigung_der_Frontplatte_.28.E2.80.9CPlexiglasvariante.E2.80.9D.29_an_der_Zwischenplatte| Magnete]]) zur Befestigung der Frontplatte benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| Zwischenboden&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h und WC24h sind Zwischenböden über eine [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alu-Platte&lt;br /&gt;
||&amp;lt;br&amp;gt;Aluminiumblech,  1 mm Stärke. Für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) und alle WC12h Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/(aluminium%2C+alu)+(blech%2C+platte) ebay]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DS3231 [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC und EEPROM]]&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ds3231 AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=DS3231 eBay]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Falls bei dem Modul keine Batterie mitgeliefert wird, wird zusätzlich folgende Knopfzelle benötigt:&lt;br /&gt;
[http://www.reichelt.de/directlink/CR2032/index.html?&amp;amp;ACTION=3&amp;amp;ARTICLE=26550&amp;amp;GROUPID=4241&amp;amp;ARTNR=CR+2032&amp;amp;&amp;amp;SHOW=1&amp;amp;SID=12UXp5iH8AAAIAAAE-gdod799e4cf62d5cd255e52464fe671b8ea Reichelt CR2032]&lt;br /&gt;
|-&lt;br /&gt;
| Netzteil&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/MDY0ODQ2OTk-/Stromversorgung/Netzgeraete/Steckernetzgeraete/Steckernetzteil_QUATPOWER_PSN5_4000H5_5_5_V_4_A_5_5_2_1_mm.html Pollin Netzteil 5V 4A]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-01 (WLAN-Modul) bis Shield V2&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-01 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-01 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-WiFi-Serial-Transceiver-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-01 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-12F (WLAN-Modul) ab Shield V3 (OTA)&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-12F AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-12F eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/WLAN-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-12 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Infrarot-Decoder (IRMP)&lt;br /&gt;
||&amp;lt;br&amp;gt;mit IRMP Fernbedienungsensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321194 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird noch eine [http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.V0CsuCFgfs0 IR-Fernbedienung] benötigt, die optional mit einer [[WordClock_mit_WS2812#IR-Fernbedienung|Folie]] versehen werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Rahmen&lt;br /&gt;
||&amp;lt;br&amp;gt;Innenmaße 450x450 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Funktioniert nicht zusammen mit Ambilight&amp;lt;br&amp;gt;&lt;br /&gt;
Z. B. [https://www.alutech.de/alu---zuschnitt-profil-18.html Alurahmen]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Ambilight&lt;br /&gt;
||&amp;lt;br&amp;gt;Mittels zusätzlicher WS2812 LED Stripes per &amp;lt;br&amp;gt;[[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]]&lt;br /&gt;
Funktioniert nicht zusammen mit einem Rahmen. Erfordert Zwischenboden mit entsprechender Ausfräsung (bisher nur für WC12 per Sammelbestellung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Fotowiderstand (LDR) zur Lichtmessung&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://www.reichelt.de/Fotodioden-etc-/LDR-07/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=10208&amp;amp;GROUPID=3045&amp;amp;artnr=LDR+07&amp;amp;SEARCH=ldr07 Reichelt LDR07]&amp;lt;br&amp;gt; Ggf. Ersatz: [https://www.reichelt.de/Fotodioden-etc-/A-906011/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=47506&amp;amp;GROUPID=3045&amp;amp;artnr=A+906011&amp;amp;SEARCH=fotowiderstand Reichelt A906011]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-1-0-k-Ohm-9-1-k-Ohm/1-4W-1-0K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1315&amp;amp;GROUPID=3065&amp;amp;artnr=1%2F4W+1%2C0K&amp;amp;SEARCH=%252A Reichelt Widerstand 1,0k] (bei Verwendung von LDR07 oder A906011)&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-10-k-Ohm-91-k-Ohm/1-4W-10K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1338&amp;amp;GROUPID=3066&amp;amp;artnr=1%2F4W+10K&amp;amp;SEARCH=%252A Reichelt Widerstand 10k] (bei Verwendung des zwischenzeitlich empfohlenen A906032 und auch bei Nicht-Anschluss des LDRs)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Temperatur-Sensor&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DS1820 Temperatur-Sensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321196 Reichelt Warenkorb]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: DCF77-Empfänger&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DCF werden folgende Teile benötigt:&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Pollin DCF77 Empfänger]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321191 Reichelt Warenkorb]&lt;br /&gt;
&amp;lt;br&amp;gt; ggf. IC-Sockel für den OP (Reichelt GS 8P)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: WS2812 Spannungsabschaltung&lt;br /&gt;
||&amp;lt;br&amp;gt;mit WS2812 Spannungsabschaltung werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321190 Reichelt Warenkorb]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Start =&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Geflasht wird mit dem ST-Link-Programm, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dient die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]]. Dazu nimmt man eine WLAN-Verbindung mit dem ESP8266-Modul auf. Für die erste Konfiguration wird das ESP8266 zunächst als eigener Access-Point gestartet. Anschließend kann man über das [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] die Zugangsdaten zu dem eigenen WLAN-Router einstellen. Im Folgenden läuft das ESP8266-Modul dann als WLAN-Client.&lt;br /&gt;
&lt;br /&gt;
Für Entwickler und zur Diagnose kann man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) verwenden, um über ein Mini-USB-Kabel Debug- und Log-Meldungen mitzuschneiden. Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die &amp;quot;blauen&amp;quot; USB3.0-Buchsen möglichst meiden.&lt;br /&gt;
&lt;br /&gt;
== Ablauf ==&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)&lt;br /&gt;
* Wenn man die EmBitz-IDE einsetzt: Nach [[WordClock_mit_WS2812#WordClock-Quellcode_selbst_.C3.BCbersetzen|Anleitung: WordClock-Quellcode selbst übersetzen]] vorgehen&lt;br /&gt;
* Die entsprechende Hex-Datei (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32 MiniDevBoards ==&lt;br /&gt;
&lt;br /&gt;
Hier eine ausführliche Schritt für Schritt Anleitung um die Software vom .HEX File aus dem Artikel in das STM32 MiniDevBoard zu bekommen:&lt;br /&gt;
&lt;br /&gt;
Benötigt werden neben dem STM32 MiniDevBoard:&lt;br /&gt;
* Hardware: ST-Link V2 (z. B. von [https://www.aliexpress.com/wholesale?ltype=wholesale&amp;amp;d=y&amp;amp;origin=y&amp;amp;isViewCP=y&amp;amp;SearchText=st-link+v2&amp;amp;blanktest=0&amp;amp;tc=af Aliexpress] oder [http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay])&lt;br /&gt;
* Software: STM32 ST-Link Utility, siehe: http://www.st.com/en/development-tools/st-link-v2.html&lt;br /&gt;
* Installation der Software &amp;quot;STM32 ST-Link Utility&amp;quot;: https://www.youtube.com/watch?v=ONzRL06Umfo&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Danach im Geräte-Manager von Windows unter „USB-Geräte“ kontrollieren, ob die Installation erfolgreich war.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 1.PNG|miniatur|Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ST-Link v2 mit STM32 MiniDevBoard verbinden (Achtung: Die Anschlussbelegung an ST-Link v2 und die Beschriftung am MiniDevBoard ist nicht immer einheitlich, daher bitte immer auf die Beschriftung achten!). Verbunden werden folgende Pins:&lt;br /&gt;
* St-Link v2 &amp;quot;VCC&amp;quot; mit &amp;quot;3.3&amp;quot; oder &amp;quot;3.3V&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWDIO&amp;quot; mit &amp;quot;DIO&amp;quot; oder &amp;quot;SWDIO&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWCLK&amp;quot; mit &amp;quot;CLK&amp;quot; oder &amp;quot;SWCLK&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;GND&amp;quot; mit &amp;quot;GND&amp;quot; des MiniDevBoard&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 2.PNG|miniatur|Anschluss des ST-Link v2 Adapters]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Das STM32 ST-Link Utility öffnen und im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 3.PNG|miniatur|Verbindung zum STM Board im STM32 ST-Link Utility herstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Im STM32 ST-Link Utility im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im STM32 MiniDevBoard konsistent zu den Informationen im .HEX File sind&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 4.PNG|miniatur|Reiter &amp;quot;Target&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Die gewünschte Hex-Datei passend zur Hardware auswählen (im Beispiel: WordClock 12h mit „Standard“-WS2812) und auf „Öffnen“ klicken&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 5.PNG|miniatur|Auswahl der Firmware / des .HEX Files]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Den Flashvorgang mit „Start“ beginnen. An den standardmäßig gesetzten Optionen muss nichts weiter verändert werden&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 6.PNG|miniatur|rechts|Start des Flashvorgangs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Erfolgreiches Flashen wird anschließend im Logbereich des STM32 ST-Link Utility (unten im Fenster) angezeigt. Sollten im Log Fehlermeldungen auftauchen ist beim Flashen etwas schiefgelaufen. Verkabelung prüfen (z.B. DIO und CLK vertauscht?) und wenn das Problem weiterhin besteht im Forum (https://www.mikrocontroller.net/topic/385955) nach Hilfe fragen.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 7.PNG|miniatur|Logbeispiel: Flashen erfolgreich!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Zum Abschluss noch in der Software unter „Target“ die Verbindung der Software zum ST-Link v2 mit „Disconnect“ trennen. Jetzt kannst du auch das ST-Link V2 USB Modul aus dem Port entfernen und die Verkabelung vom STM32 MiniDevBoard trennen. Im Speicher des Boards ist jetzt die zuvor ausgewählte Software und du hast dein Modul erfolgreich geflasht! &lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 8.PNG|miniatur|ST-Link v2 trennen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Upgrade der Firmware des ST-Link v2 - DFU mode ====&lt;br /&gt;
Wenn versucht wird die Firmware des ST-Link v2 zu aktualisieren und dies scheitert mit der Meldung &amp;quot;Not in DFU Mode&amp;quot;, so kann folgende Vorgehensweise helfen: &lt;br /&gt;
# ST-Link Utility schließen und ST-Link v2 vom USB Port entfernen. &lt;br /&gt;
# Miniboard vom ST-Link trennen. &lt;br /&gt;
# ST-Link Utility starten aber noch nichts anschließen. &lt;br /&gt;
# Firmware Upgrade Dialog öffnen. &lt;br /&gt;
# Nun ST-Link am USB Port anschließen. MiniBoard nicht anschließen. &lt;br /&gt;
# Update starten. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Ablauf ist nur notwendig, wenn man die Log-Meldungen aus Diagnose-Zwecken mitschneiden möchte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PuTTY starten&lt;br /&gt;
* PuTTY einstellen: Auswahl &amp;quot;Serial&amp;quot;, Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200&lt;br /&gt;
* Einen Session-Namen eingeben, z.B. &amp;quot;Nucleo&amp;quot;&lt;br /&gt;
* Auf SAVE klicken, dann kann man die Session später wieder auswählen&lt;br /&gt;
* Open anklicken&lt;br /&gt;
* RESET-Button am [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] drücken&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039; Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nicht die bereits ausgegebenen Log-Meldungen. Um den Ablauf des Programms von Anfang an zu verfolgen, drückt man auf dem Board einfach den Reset-Knopf. Dann beginnt die Ausgabe ganz von vorn.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039; Für das Logging sollten lediglich RX und GND des externen USB-UART-Adapters angeschlossen werden. TX vom Adapter bzw. RX auf dem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] sollten offen bleiben. Sonst kann es bei Verwendung des ESP8266 ESP-12F dazu kommen, dass dieser nicht mehr bootet.&lt;br /&gt;
&lt;br /&gt;
Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund im PuTTY ist normalerweise schwarz. Möchte man lieber eine Ausgabe in schwarz auf weiß, kann man das folgendermaßen umstellen:&lt;br /&gt;
&lt;br /&gt;
   Change Settings -&amp;gt; Window -&amp;gt; Colours:&lt;br /&gt;
&lt;br /&gt;
      Default Foreground: 2 2 2&lt;br /&gt;
      Default Bold Foreground: 0 0 0&lt;br /&gt;
      Default Background: 245 245 245&lt;br /&gt;
      Default Bold Background: 255 255 255&lt;br /&gt;
      Cursor Text: 0 0 0&lt;br /&gt;
      Cursor Color: 255 0 0&lt;br /&gt;
      (Rest kann man so lassen)&lt;br /&gt;
&lt;br /&gt;
Anschließend zurück über &amp;quot;Session&amp;quot; oben links und: &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des WLAN-Moduls ==&lt;br /&gt;
&lt;br /&gt;
=== Flash des WLAN-Moduls ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Genereller Hinweis: Es ist zu empfehlen das OTA Update auszuprobieren, auch wenn ihr schon die aktuelle Version geflasht habt! Es kommt vereinzelt vor, dass dieses nicht funktioniert. Mit der Version 2.7.1 wurde ein extra Button (Format ESP8266 SPIFFS) unter dem Menüpunkt Update hinzugefügt mit dem der interne Zwischenspeicher für die Updatedateien auf dem ESP gelöscht werden kann. Sollte es auch danach nicht funktionieren, sollte man die verschiedenen Flasher durchprobieren.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
==== esp8266_flasher.exe ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Für das ESP8266-Wlan-Modul wird aus Stabilitäts- und Geschwindigkeitsgründen eine spezielle auf die WordClock-Anwendung abgestimmte Firmware benutzt (siehe [[WordClock_mit_WS2812#Download|Download]]), die über das STM32-Board geflasht werden kann. Das ESP8266 kann also während des Flashens in der WordClock-Schaltung verbleiben.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo wird der integrierte USB-UART-Adapter verwendet. Beim Anschluss des Nucleo-Board per USB an den PC wird automatisch ein COM-Device angelegt, z.B. COM12. Dafür braucht man aber den entsprechenden Virtual COM Port Driver, siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|Software für Windows]].&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]] wird ein externer USB-UART-Adapter, welcher mit 3,3V-Pegeln arbeitet, verwendet. Wie er angeschlossen wird, sieht man in der [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|Anschluss-Skizze]] und auch in obiger [[WordClock_mit_WS2812#Anschlusstabelle|Anschlusstabelle]]. Das Shield muss außerdem extern mit +5V versorgt werden. Anderenfalls ist zumindest das ESP-Modul ohne Spannungsversorgung. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig: Handelt es sich hier um ein ESP8266 ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]], darf TX vom USB-UART-Wandler erst dann angeschlossen werden, wenn der ESP8266 sich bereits im Flash-Modus befindet - nicht früher. Siehe Beschreibung unten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zum eigentlichen Flashen lädt man am besten das sehr einfach gehaltene Programm &#039;&#039;&#039;[https://github.com/Stadslab/ESP8266_example/raw/master/ESP8266_flasher_V00170901_00_Cloud%20Update%20Ready/esp8266_flasher.exe esp8266_flasher.exe]&#039;&#039;&#039; herunter.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-ESP-Flasher.png|miniatur|esp8266_flasher.exe für das ESP8266-Modul]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativ dazu kann man auch  von der Espressif-Seite zunächst die ESP8266-Flash-Software &#039;&#039;&#039;FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar&#039;&#039;&#039; (http://bbs.espressif.com/download/file.php?id=856) herunterladen und das Archiv an geeigneter Stelle entpacken. Es müssen dann als Einstellungen die im Bild rechts markierten Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Dann ist das weitere Vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eventuell gestartetes PuTTY beenden, um COM-Schnittstelle freizugeben&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) abziehen!&lt;br /&gt;
* Reset-Taste drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3) drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;. Auf älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] gibt es diese Taste nicht, sondern ist lediglich als Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) bezeichnet. Hier muss man mittels eines Jumpers eine Verbindung zu GND daneben herstellen.&lt;br /&gt;
* Reset-Taste loslassen&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] nach 2 Sekunden loslassen bzw. Jumper ziehen&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) wieder anschließen.&lt;br /&gt;
&lt;br /&gt;
Das WordClock-Programm auf dem STM32 versetzt dann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul in den Flash-Modus und verbindet dann die beiden UARTs softwaremäßig 1:1, d.h. die Daten werden vom USB-Anschluss transparent an das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Nun startet man das Programm &#039;&#039;&#039;esp8266_flasher.exe&#039;&#039;&#039; (bzw. ESP_DOWNLOAD_TOOL_V2.4.exe) und wählt durch Klick auf die Schaltfläche &#039;&#039;&#039;Bin&#039;&#039;&#039; die Datei &#039;&#039;&#039;ESP-WordClock.bin&#039;&#039;&#039; aus - siehe [[WordClock_mit_WS2812#Download|Download]]. Außerdem muss der COM-Port an den tatsächlichen Anschluss angepasst werden. Beim ESP-01 stellt man die Flash-Size auf 4MBit (=512KB), beim ESP-12F auf 32MBit (=4MB).&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-ESP8266-FLASH.png|miniatur|Alternative: ESP FLASH DOWNLOAD TOOL]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach Drücken auf &#039;&#039;&#039;Download&#039;&#039;&#039; (bzw. &#039;&#039;&#039;Start&#039;&#039;&#039; beim Alternativprogramm) sollte nun das Flashen des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls beginnen. Eine eventuell am Ende auftretende Fehlermeldung &amp;quot;Failed to leave Flash mode&amp;quot; kann dabei getrost ignoriert werden. Anschließend startet man den STM32 (und damit auch das WLAN-Modul) neu durch kurzes Drücken der Reset-Taste.&lt;br /&gt;
&lt;br /&gt;
==== Flash Download Tool des Chipherstellers ====&lt;br /&gt;
&lt;br /&gt;
Unter (http://www.espressif.com/en/support/download/other-tools?keys=&amp;amp;field_type_tid%5B%5D=14) findet ihr die jeweils aktuellste Version (V3.6.2 vom 2017.11.16) des Hersteller.&lt;br /&gt;
Das vorgehen ist wie bei der Version v2.4.&lt;br /&gt;
&lt;br /&gt;
==== NODEMCU Firmware Flasher ====&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativprogramm NODEMCU Firmware Flasher von (https://github.com/nodemcu/nodemcu-flasher) herunter laden. Es steht in den Unterordnern ein WIN32 oder Win64 Bit Programm zur Verfügung.&lt;br /&gt;
1. Zuerst sollte nach dem Start unter Advanced die Baudrate eingestellt werden.&lt;br /&gt;
2. Danach folgt die Auswahl der zu flashenden Firmware unter Config&lt;br /&gt;
3. Dann den COM-Port auswählen und&lt;br /&gt;
4. Flashen drücken.&lt;br /&gt;
Ist die Anzeige nicht wie im letzten Teiles des Bildes half bei mir (MockUp) nur das zurücksetzen der Einstellungen auf Default und wieder setzen der Parameter. Das Programm ist auf alle fälle nicht so stabil wie die anderen was den Verbindungsaufbau anbelangt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-NODEMCU-Flasher.png|miniatur|NODEMCU Firmware Programmer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Start als Access-Point ===&lt;br /&gt;
&lt;br /&gt;
Folgender Ablauf ist nur notwendig, wenn die Software-Version älter als 2.5.0 ist oder keine [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] (ab Shield v3) angeschlossen ist. Sonst kann direkt zu [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]] gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
Um für die Konfiguration der WLAN-Daten (Zugang zum WLAN-Router oder -Gateway) mit dem ESP8266 Kontakt aufzunehmen, muss man zunächst dafür sorgen, dass das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul als Access-Point arbeitet. Dafür drückt man die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board (blau) bzw. die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] verbindet man den Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) kurz mit dem danebenliegenden GND-Pin.&lt;br /&gt;
&lt;br /&gt;
Unmittelbar nach dem Drücken der Taste erscheint die IP-Adresse des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls als Laufschrift - und auch im Log. Nun sucht man auf dem PC oder Tablet nach dem WLAN-Netz mit dem Namen &amp;quot;wordclock&amp;quot; und verbindet das Gerät mit diesem Netz. Als Netzwerkschlüssel gibt man &amp;quot;1234567890&amp;quot; ein. Sobald die Verbindung hergestellt ist, startet man einen Browser und gibt als URL die ausgegebene IP-Adresse ein, z.B. http://192.168.4.1/ .&lt;br /&gt;
&lt;br /&gt;
Sobald die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] erscheint, wählt man den Menüpunkt &amp;quot;Network&amp;quot; aus, wählt &amp;quot;Wlan-Client&amp;quot; aus und gibt die SSID (&amp;quot;AP&amp;quot;) und den Key des WLAN-Routers ein und bestätigt die Eingabe mit &amp;quot;Save&amp;quot;. Das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul wird nun als WLAN-Client umkonfiguriert. War das erfolgreich, erscheint nun auf dem Display die neue IP-Adresse. Die Browser-Seite wird dann ungültig. Man kann seinen PC nun wieder mit dem bisherigen WLAN-Gateway verbinden und im Folgenden die neue IP-Adresse verwenden.&lt;br /&gt;
&lt;br /&gt;
Gibt es an dem Ort, wo die Uhr betrieben werden soll, kein WLAN, kann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul auch weiterhin als Accesspoint (&amp;quot;AP&amp;quot;) betrieben werden, damit man es über WLAN fernsteuern kann. In diesem Fall sollte nicht &amp;quot;WLAN-Client&amp;quot;, sondern &amp;quot;AP&amp;quot; ausgewählt werden, eine entsprechende SSID und einen mindestens 10 Zeichen langen Key einstellen. Anschließend kann man sich mit PC/Handy/Tablet in das neue WLAN einklinken, um die Uhr per Browser oder Android-App fernzusteuern. Ein Zugriff auf einen externen Timeserver ist dann selbstverständlich nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
=== Start per WPS-Button ===&lt;br /&gt;
&lt;br /&gt;
Ab Software-Version 2.6.0 wird WPS unterstützt. Dazu drückt man die auf dem Shield (ab Shield-Version v3) befindliche [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] für einen kurzen Moment und anschließend auf dem WLAN-Gateway (bzw. Router). Bei der Fritzbox muss man die Taste solange drücken, bis die WLAN-LED blinkt. Im Normalfall wird dann die Verbindung innerhalb weniger Sekunden aufgenommen - erkennbar daran, dass auf dem LED-Display die vergebene IP-Adresse als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Befindet der ESP8266 bereits im AP-Modus, kann WPS auch im Browser über den Klick auf die Schaltfläche &amp;quot;WPS&amp;quot; im Reiter [[WordClock_mit_WS2812#Network|Network]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Start als WLAN-Client ===&lt;br /&gt;
&lt;br /&gt;
Bei jedem folgenden Start wird nur noch die Einstellung &amp;quot;WLAN-Client&amp;quot; verwendet. Sobald sich das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul mit dem gewünschten Access-Point (&amp;quot;AP&amp;quot;) verbunden hat, wird auf dem LED-Display die neue IP-Adresse des Moduls in Laufschrift ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Viele WLAN-Router sorgen automatisch dafür, dass ein WLAN-Client auch noch nach Tagen dieselbe IP-Adresse hat. Wenn das nicht der Fall sein sollte, kann man meist in den Router-Einstellungen dafür sorgen, dass der Client mit der MAC-Adresse xx-xx-xx-xx-xx-xx immer dieselbe IP-Adresse vom WLAN-Router zugeteilt bekommt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Web-Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Neben der Ausgabe der installierten Firmware-Version sieht man hier unter anderem auch, ob das EEPROM erkannt wurde. Es wird entweder &amp;quot;online&amp;quot; oder &amp;quot;offline&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man keine Verbindung zum Internet, kann man auf der Hauptseite Datum und Uhrzeit auch manuell eingeben. Außerdem kann man hier einen Ticker-Text angeben, welcher dann auf dem Display als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Mit den Schaltflächen &amp;quot;Power on&amp;quot; bzw. &amp;quot;Power off&amp;quot; kann das LED-Display ein- und ausgeschaltet werden. Die Power-Buttons schalten erstmal generell auch das Ambilight ein bzw. aus. Es kann aber über die entsprechenden Schaltflächen separat ein- und ausgeschaltet werden. Diese wirken aber nur, wenn die Uhr selbst im eingeschalteten Zustand (&amp;quot;Power on&amp;quot;) ist. Sonst werden sie ignoriert.&lt;br /&gt;
&lt;br /&gt;
Mit dem Klick auf &amp;quot;Learn IR remote control&amp;quot; kann eine IR-Fernbedienung angelernt werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Main.png|miniatur|Web-Interface: Hauptmenü]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier werden die aktuelle IP-Adresse und die Firmware-Version des ESP8266-Moduls angezeigt. Auch kann man hier die Verbindung zu einem WLAN-Gateway oder -Router angeben. In diesem Fall wählt man in der Zeile &amp;quot;WLAN-Client&amp;quot; den gewünschten Accesspoint aus und gibt dann noch den korrekten Key ein. Wichtig: Enthält der Key internationale Sonderzeichen wie zum Beispiel Umlaute, kann die WLAN-Anwendung fehlschlagen, weil das Web-Interface einen anderen Zeichensatz als der Accesspoint verwendet. In diesem Fall sollte man den Key im Accesspoint ändern oder die Möglichkeit einer Verbindung per WPS wählen. Nach erfolgter Einstellung wird die gewünschte Verbindung aufgebaut und die evtl. neue IP-Adresse auf dem LED-Display als Laufschrift eingeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039; ist die alternative Möglichkeit, das ESP8266-Modul über WPS ins Netz einzubinden. Dafür drückt man zuerst die WPS-Taste am Router (bei der FritzBox solange, bis die WLAN-LED blinkt) und anschließend die [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] auf dem Shield - oder die WPS-Schaltfläche im Web-Interface.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man hier den [[WordClock_mit_WS2812#Timeserver|Timeserver]] und die [[WordClock_mit_WS2812#Timeserver|Zeitzone]] konfigurieren, siehe entsprechendes [[WordClock_mit_WS2812#Timeserver|Kapitel]].&lt;br /&gt;
&lt;br /&gt;
Mit der Schaltfläche &amp;quot;Get net time&amp;quot; kann die aktuelle Uhrzeit von dem konfigurierten Timeserver ad hoc abgerufen werden. Das ist aber im Normalfall nicht notwendig, da dies ohnehin alle 3800 Sekunden automatisch geschieht. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Network.png|miniatur|Web-Interface: Netzwerk-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hier wird die aktuelle Temperatur von RTC und DS18xx (sofern vorhanden) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Wegen der Selbsterwärmung der Sensoren werden meist zu hohe Werte gemessen. Dagegen hilft beim DS18xx zum Beispiel ein Kühlkörper. Sollte das nicht möglich oder nicht gewünscht sein, kann hier sowohl für RTC als auch für DS18xx eine Korrektur in 0,5°C Schritten angegeben werden. Bei Eingabe von beispielsweise &amp;quot;5&amp;quot; werden 2,5°C von der Messung abgezogen. Die Korrekturwerte sollte man frühestens nach einigen Minuten Betrieb wählen, damit RTC/DS18xx auch die endgültige Betriebstemperatur erreicht haben.&lt;br /&gt;
&lt;br /&gt;
Beim Betätigen der Schaltfläche &amp;quot;Display temperature&amp;quot; wird die aktuelle Temperatur auf dem LED-Display entweder als Laufschrift (WordClock12h) oder als Wort-Anzeige (Word-Clock24h) eingeblendet. Diese Anzeige kann in einem gewissen Zeitintervall auch automatisch erfolgen, siehe &#039;&#039;&#039;[[WordClock_mit_WS2812#Display|Display]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Temperature.png|miniatur|Web-Interface: Temperatur-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Um Wetterdaten auf der Uhr ausgeben zu können, braucht man eine sogenannte APPID (auch API-Id genannt), die man durch eine Registrierung bei http://openweathermap.org kostenlos beziehen kann. Am einfachsten findet man sie über den Menü-Eintrag &amp;quot;Price&amp;quot;. Dort kann man dann eine API-Id in der Free-Version generieren lassen.&lt;br /&gt;
&lt;br /&gt;
Diese APPID wird dann hier eingetragen. Des Weiteren ist notwendig:&lt;br /&gt;
&lt;br /&gt;
* entweder die Angabe eines Ortes&lt;br /&gt;
* oder die Angabe von Geo-Koordinaten (Longitude/Lattitude)&lt;br /&gt;
&lt;br /&gt;
Gerade bei Großstädten ist es sinnvoll, die genauen Koordinaten des eigenen Wohnorts anzugeben, da das Wetter bereits lokal unterschiedlich sein kann. Werden sowohl Ort als auch die Geo-Koordinaten angegeben, haben die Koordinaten Priorität. Auch kann es sein, dass bei kleineren Ortschaften der Ort selbst bei openweathermap.org unbekannt ist. Im Zweifel sollte man sich besser für die Koordinaten-Variante entscheiden. Wichtig bei der Angabe eines Ortes ist es, die Stadt in der eigenen Landessprache anzugeben, also z.B. &amp;quot;Koeln&amp;quot; oder &amp;quot;Muenchen&amp;quot;. Die Angabe von z.B. &amp;quot;Cologne&amp;quot; ist nicht zielführend, weil dies ein kleiner Ort in Italien ist ;-)&lt;br /&gt;
&lt;br /&gt;
Kennt man die Geo-Koordinaten vom gewünschten Standort nicht, kann man sie über Google-Earth ermitteln. Dafür muss man nicht unbedingt Google-Earth herunterladen, es reicht das Aufrufen von Google-Maps im Browser. Anschließend kann man dann unten links auf die Web-Version von Google-Earth wechseln. Ein Klick auf den eigenen Standort lässt dann die gewünschten Koordinaten erscheinen. Dabei ist die erste Zahl (irgendetwas um die 50) die Lattitude und die zweite Zahl (in der Größenordnung 7) die Longitude. Die Zahlen sollen mit Dezimalpunkt und nicht Dezimalkomma eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Ein abschließender Klick auf die Schaltfläche &amp;quot;Get weather&amp;quot; bezieht dann von openweathermap.org das aktuelle Wetter vom gewünschten Standort. Die Wetterdaten (Temperatur und Wetterlage) werden dann als Laufschrift auf dem Display ausgegeben. Diese Anzeige kann in einer kommenden Version über ein einstellbares Zeitintervall dann auch automatisch erfolgen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Weather.png|miniatur|Web-Interface: Wetterdaten-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDR ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Mittels Aktivierung von &amp;quot;Automatic Brightness&amp;quot; werden die automatische Helligkeitssteuerung scharf geschaltet und das erweiterte Menü sichtbar.&lt;br /&gt;
&lt;br /&gt;
Die Seite zeigt den aktuellen Wert an, den der ADC am LDR misst. Um den Helligkeitsbereich bei der automatischen Helligkeitssteuerung komplett auszunutzen, kann hier eine Kalibrierung vorgenommen werden. Dazu betätigt man einmal die Minimum-Schaltfläche bei verdunkeltem Raum, einmal die Maximum-Schaltfläche bei maximaler Raumhelligkeit und speichert alles durch Drücken der Save-Schaltfläche. Die automatische Helligkeitssteuerung verwendet dann bei einer Helligkeitsmessung diese Min-/Max-Werte zum Vergleich.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist nicht sinnvoll, bei der Max-Messung einfach eine Taschenlampe direkt vor den LDR zu halten. Da der LDR normalerweise hinter der Frontplatte sitzt, wird so eine Helligkeit in der Praxis niemals erreicht. Die Folge wäre, dass die LEDs der Uhr dann zu dunkel leuchten würden.&lt;br /&gt;
&lt;br /&gt;
Hinweis2: Der angezeigte LDR Wert wird auf die Min und Max-Werte begrenzt. Sind diese 0 wird auch der LDR-Wert als 0 angezeigt. Dann sollte wie beschrieben kalibriert werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-LDR.png|miniatur|Web-Interface: LDR-Kalibrierung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Brightness ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können die 16 vorhandenen Helligkeitsstufen an die Gegebenheiten angepasst werden. Je nach Transparenz der verwendeten Frontplatte bzw. des Diffusors kann man hier nachjustieren.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig sind die Helligkeitsstufen hier so gewählt, dass immer eine gewisse Grundhelligkeit eingestellt ist. Erscheinen die unteren Helligkeitsstufen zu hell, kann man das durch Verschieben der entsprechenden Regler nach links anpassen. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Brightness.png|miniatur|Web-Interface: Helligkeitskurve]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Unter &amp;quot;Display Mode&amp;quot; können unter anderem verschiedene Sprachvarianten, die regionale Unterschiede beim Gebrauch der Uhrzeit berücksichtigen, ausgewählt werden. Die Anzeige von &amp;quot;Es ist&amp;quot; kann hier generell ein- oder ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Schieberegler &amp;quot;Brightness&amp;quot; kann die Grundhelligkeit eingestellt werden. Dieser wird deaktiviert, wenn die automatische Helligkeitssteuerung aktiviert wurde. Die eigentlichen Farben des Displays stellt man dann mit den Schiebereglern &amp;quot;R&amp;quot;, &amp;quot;G&amp;quot; und &amp;quot;B&amp;quot; ein. Diese erscheinen jedoch nur dann, wenn nicht die Animation &amp;quot;Rainbow&amp;quot; eingestellt ist. Die Rainbow-Animation kontrolliert die Farben nämlich selbst.&lt;br /&gt;
&lt;br /&gt;
Durch Wahl einer Ticker-Verzögerung kann die Geschwindigkeit der &amp;quot;Ticker-Messages&amp;quot; (Laufschriftanzeige) kontrolliert werden. 3 ist hier der Standardwert. Niedrigere Werte ergeben eine höhere Geschwindigkeit (bis zur Unleserlichkeit), höhere Werte verzögern die Geschwindigkeit der Laufschriften.&lt;br /&gt;
&lt;br /&gt;
Stellt man für das Ambilight &amp;quot;Use Display Colors&amp;quot; ein, dann werden die Einstellungen für Helligkeit und Farben auch für das Ambilight verwendet, das heißt die Farben laufen synchron.&lt;br /&gt;
&lt;br /&gt;
Auch hier gibt es nochmal die Schaltflächen zum Ein- und Ausschalten des LED-Displays. Mit der Schaltfläche &amp;quot;Test Display&amp;quot; werden sämtliche LEDs bei halber (subjektiver) Helligkeit eingeschaltet (benötigt ca. 1/4 des theoretisch möglichen Maximalstroms) und einige Farben zur Kontrolle der Funktionsfähigkeit aller LEDs durchprobiert.&lt;br /&gt;
&lt;br /&gt;
Bei &amp;quot;Temp Display Interval&amp;quot; lässt sich ein Zeitintervall wählen, bei welchem die aktuell gemessene Temperatur eingeblendet werden soll. Bei Angabe von &amp;quot;1&amp;quot; passiert das jede Minute, nämlich immer bei hh:mm:30 Uhr. Bei Angabe von beispielsweise &amp;quot;5&amp;quot; wird die Temperatur dann nur noch alle 5 Minuten eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;Heart Display interval&amp;quot; gilt dasselbe. Hier wird ein Herz als Piktogramm eingeblendet - z.B. für Geburtstage. Ebenso kann man in der vorweihnachtlichen Zeit einen Weihnachtsbaum einblenden unter Angabe eines Wertes für &amp;quot;XMas tree display interval&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Intervalle ausgefüllt, gilt folgende Regel bei zeitgleicher Einblendung: Dasjenige Piktogramm, welches seltener erscheinen soll, hat eine höhere Priorität.&lt;br /&gt;
&lt;br /&gt;
Beispiel (siehe auch Bild rechts):&lt;br /&gt;
&lt;br /&gt;
* Temp display interval = 10&lt;br /&gt;
* Heart display interval = 1&lt;br /&gt;
* XMas tree display interval 5&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich:&lt;br /&gt;
&lt;br /&gt;
* 09:01 Uhr bis 09:04 Uhr: Herz&lt;br /&gt;
* 09:05 Uhr: Tannenbaum&lt;br /&gt;
* 09:06 Uhr bis 09:09 Uhr: Herz&lt;br /&gt;
* 09:10 Uhr: Temperatur&lt;br /&gt;
* 09:11 Uhr bis 09:14 Uhr: Herz&lt;br /&gt;
* 09:15 Uhr: Tannenbaum&lt;br /&gt;
&lt;br /&gt;
usw. Die Einblendungen geschehen grundsätzlich 30 Sekunden nach der vollen Minute. Intervalle gleicher Dauer sollte man vermeiden. Dann wird konsequent nur noch eins der beiden Piktogramme gezeigt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Display.png|miniatur|Web-Interface: Einstellungen des LED-Displays]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Animationen werden immer dann ausgeführt, wenn sich die Anzeige ändert, zum Beispiel bei einem Uhrzeitwechsel. Hier kann man sich die gewünschte Animation aussuchen und auch die dazugehörige Geschwindigkeit eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Animationen sind verfügbar:&lt;br /&gt;
&lt;br /&gt;
* None - Keine Animation&lt;br /&gt;
* Fade - Langsames Überblenden der Buchstaben&lt;br /&gt;
* Roll - Rollen der Wörter von links/rechts/oben/unten&lt;br /&gt;
* Explode - Die Wörter wandern schnell vom Mittelpunkt sternförmig auf ihren Platz&lt;br /&gt;
* Snake - Eine Schlange &amp;quot;frisst&amp;quot; die zuletzt angezeigten Wörter weg&lt;br /&gt;
* Teletype - Die Wörter werden in &amp;quot;Schreibmaschinen-Geschwindigkeit&amp;quot; ausgegeben&lt;br /&gt;
* Cube - Ein Rahmen &amp;quot;fällt&amp;quot; von außen nach innen, um die Anzeige zu löschen&lt;br /&gt;
* Matrix - Matrix-Animation aus dem gleichnamigen Film&lt;br /&gt;
* Drop - Buchstaben alter Wörter fallen aus der Anzeige, Buchstaben neuer Wörter fallen von oben in die Anzeige hinein&lt;br /&gt;
* Squeeze - Die Wörter werden einmal kurz &amp;quot;gequetscht&amp;quot;&lt;br /&gt;
* Flicker - Die Wörter &amp;quot;flackern&amp;quot;, danach erscheint die neue Anzeige&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die Animation &amp;quot;Random&amp;quot;. Hier wird mit Hilfe eines Zufallsgenerators jedes Mal eine andere Animation ausgewählt. Deklariert man eine Animation als Favoriten, dann wird diese von der Zufallsanimation &amp;quot;Random&amp;quot; genutzt. Anderenfalls wird sie von &amp;quot;Random&amp;quot; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Geschwindigkeit kann man in 15 Stufen einstellen. Bei Klick auf die Schaltfläche &amp;quot;Default&amp;quot; wird die Geschwindigkeit auf einen sinnvollen Standardwert gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als zusätzliche Farbanimation kann noch &amp;quot;Rainbow&amp;quot; ausgewählt und konfiguriert werden. Dann wechselt das Display fließend die Farben der LEDs.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Animations.png|miniatur|Web-Interface: Einstellungen der Animationen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier kann eine separate Animation für das Ambilight eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Clock&amp;quot; werden 20, 30 oder 60 Ambilight-LEDs als umlaufende Sekundenanzeige verwendet. Mit &amp;quot;#LEDs&amp;quot; kann man einstellen, wie viele Ambilight-LEDs sich im &amp;quot;Kreis&amp;quot; befinden. Sinnvoll sind hier 20, 30 oder 60. Ausserdem lässt sich mit &amp;quot;Offset of second = 0&amp;quot; diejenige LED einstellen, die mittig oben als Sekunde 0 angebracht ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Beginnt das Ambilight mit 60 LEDs links unten und ist im Uhrzeigersinn angebracht, dann wäre die LED mit Sekunde 0 die Nr. 22. Diese Zahl ist dann hier einzutragen.&lt;br /&gt;
&lt;br /&gt;
Der Ambilight-Modus &amp;quot;Clock2&amp;quot; entspricht dem Modus &amp;quot;Clock&amp;quot;. Jedoch wird hier ein zu-/abnehmender Vollkreis dargestellt.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Rainbow&amp;quot; durchlaufen die Ambilight-LEDs langsam (über mehrere Minuten hinweg) alle Farben des Regenbogens. Dieser läuft unabhängig von der Farbanimation &amp;quot;Rainbow&amp;quot; des Displays.&lt;br /&gt;
&lt;br /&gt;
Ist auf der Display-Webseite eingestellt, dass die Ambilight-Farben nicht synchronisiert werden sollen, dann kann man hier auch unabhängig von dem Display eine eigene Helligkeit und einen anderen RGB-Wert wählen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Ambilight.png|miniatur|Web-Interface: Ambilight]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Mit bis zu acht Timern kann man einstellen, wann die Uhr aus- bzw. eingeschaltet werden soll. Die Einstellung kann in Abhängigkeit der Wochentage eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel rechts wird in der Woche abends die Uhr um 22:30 Uhr abgeschaltet. Eingeschaltet wird dann morgens wieder um 07:00 Uhr. Nach dem Frühstück wird die Uhr dann um 08:00 Uhr wieder abgeschaltet, um dann abends um 17:00 Uhr wieder eingeschaltet zu werden.&lt;br /&gt;
&lt;br /&gt;
Am Wochenende sieht das dann anders aus: Hier ist die Uhr abends länger eingeschaltet, nämlich bis 23:30 Uhr. Morgens geht es erst dann um 09:00 Uhr wieder weiter.&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Timers.png|miniatur|Web-Interface: Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können Timer speziell für das Ambilight eingestellt werden, um zum Beispiel nachts das Ambilight separat abzuschalten. Umschaltzeiten, während die Uhr selbst abgeschaltet ist, werden ignoriert. Sonst gelten dieselben Bemerkungen wie im vorangehenden Kapitel.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Ambilight-Timers.png|miniatur|Web-Interface: Ambilight Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DFPlayer ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können MP3-Tracks konfiguriert werden, die zu bestimmten Zeiten oder Ereignissen von einem Mini-DFPlayer abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Auf der SD-Card müssen 3 Verzeichnisse angelegt werden:&lt;br /&gt;
&lt;br /&gt;
* Verzeichnis 01 - Bell-Mode: Hier werden MP3-Dateien abgelegt, die zu jeder vollen Stunde oder auch Viertelstunde abgespielt werden sollen.&lt;br /&gt;
* Verzeichnis 02 - Speak-Mode: Hier können MP3-Dateien abgelegt werden, welche die auf der Uhr angezeigten Wörter &amp;quot;vorlesen&amp;quot;.&lt;br /&gt;
* Verzeichnis 03 - Alarm: Die hier gespeicherten MP3-Dateien werden zu den eingetragenen Weckzeiten abgespielt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bell Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 000.mp3 - wird um 00:00 Uhr (Mitternacht) abgespielt&lt;br /&gt;
* 001.mp3 - wird um 01:00 und 13:00 Uhr abgespielt&lt;br /&gt;
* 002.mp3 - wird um 02:00 und 14:00 Uhr abgespielt&lt;br /&gt;
* ...&lt;br /&gt;
* 012.mp3 - wird um 12:00 Uhr mittags abgespielt&lt;br /&gt;
* 013.mp3 - wird jede Stunde um xx:15 Uhr abgespielt, falls xx:15 aktiviert wurde&lt;br /&gt;
* 014.mp3 - wird jede Stunde um xx:30 Uhr abgespielt, falls xx:30 aktiviert wurde&lt;br /&gt;
* 015.mp3 - wird jede Stunde um xx:45 Uhr abgespielt, falls xx:45 aktiviert wurde&lt;br /&gt;
&lt;br /&gt;
Beispielsweise können das Aufnahmen von BigBen oder auch Zeitansagen sein.&lt;br /&gt;
&lt;br /&gt;
Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 02&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Speak Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist der Speak Mode aktiviert, werden die Wörter auf dem Display einzeln vorgelesen. Wie oft, wird mit dem &amp;quot;Speak Cycle&amp;quot; eingestellt, z.B. 1 = jede Minute, 5 = alle 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Hier Beispiel-Dateien für das Verzeichnis 02 - sowohl für WC12h als auch WC24h: [[Datei:WordClock24-mp3.zip]].&lt;br /&gt;
&lt;br /&gt;
Der jeweils gewünschte Ordner muss auf die SD-Karte kopiert und dann das Verzeichnis 02-WC12h bzw. 02-WC24h in 02 umbenannt werden. Die MP3-Dateien wurden mit dem Programm &#039;&#039;&#039;[http://www.cross-plus-a.com/de/balabolka.htm Balabolka]&#039;&#039;&#039; erzeugt.&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt: Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wecker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unabhängig von den oben angegebenen Modi und Ruhezeiten können bis zu acht Alarm-Zeiten (Wecker) eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dabei wird die auf der Webseite in der aufgeführten Tabelle angegebene MP3-Datei abgespielt. Im nebenstehenden Beispiel wird die Datei 001.mp3 im Verzeichnis 03 Montags bis Freitags morgens um 06:30 Uhr abgespielt. Die darüber angegebenen Ruhezeiten spielen hier ausnahmsweise &#039;&#039;&#039;keine Rolle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-DFPlayer.png|miniatur|Web-Interface: DFPlayer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Updates für den ESP8266 als auch für den STM32 können über das WLAN eingespielt werden. Dazu ist eine Internet-Verbindung notwendig. Für OTA-Updates (&amp;quot;Over The Air&amp;quot;) ist zwingend ein ESP8266 ESP-12F notwendig. &#039;&#039;&#039;Mit den bisher eingesetzten ESP-01 kann kein OTA-Update eingespielt werden.&#039;&#039;&#039; Jedoch können alte Shields mit ESP-01 auf ESP-12F umgebaut werden: [[WordClock_mit_WS2812#Umbau_von_ESP-01_auf_ESP-12F|Umbau von ESP-01 auf ESP-12F]]&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils die benutzte und die verfügbare Firmware-Version angezeigt. Sind diese gleich, ist ein Update nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039;: Durch Klick auf die Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; kann der Flash-Speicherbereich, wo der ESP8266 die Update-Images sowohl für ESP8266 als auch für STM32 ablegt, neu formatiert werden. Das kann dann notwendig werden, wenn die Images nur unvollständig heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn sowohl die ESP- als auch die STM32-Firmware abweichen, sollte immer zunächst der ESP8266 aktualisiert werden und danach der STM32. Durch Klick auf die Schaltfläche &amp;quot;Update ESP Firmware&amp;quot; wird das Update gestartet. Dieses dauert ca. 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann der STM32 aktualisiert werden. Dazu muss zunächst die richtige Firmware-Variante (HEX-Datei) ausgewählt werden. Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, ist hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]. Ab installierter Version 2.6.0 ermittelt die Software selbst anhand der Hardware-Konfiguration den Namen der passenden HEX-Datei und schlägt diesen dann automatisch vor.&lt;br /&gt;
&lt;br /&gt;
Durch Klick auf die Schaltfläche &amp;quot;Flash STM32&amp;quot; wird der STM32 zunächst in den Bootloader-Modus gebracht, danach wird er neu programmiert. Der STM32 verbleibt solange im Bootloader-Modus, bis die Schaltfläche &amp;quot;Reset STM32&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler beim OTA Update:&#039;&#039;&#039; In Einzelfällen kam es beim OTA Update zu einem Fehler, der auf ein Problem mit dem im ESP enthaltenen Dateisystem hinweist. Dieses Dateisystem wird normalerweise beim Flash der Software in das ESP Modul automatisch erstellt und kann dann z.B. als Zwischenspeicher für OTA Updates von ESP und STM32 genutzt werden. Taucht im OTA-Log ein Fehler wie z.B. &#039;&#039;&#039;error: cannot open file&#039;&#039;&#039; auf, dann hilft es ggf. die Software mit einem anderen Programm in das ESP Modul zu schreiben oder das vorhandene Programm in einer aktuelleren Version zu testen. &#039;&#039;&#039;Alternativ dazu kann man den Flashspeicherbereich des ESP8266 durch Betätigen der Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; neu formatieren und das OTA-Update anschließend neu durchführen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte die aktuelle Version der ESP8266 Flash Download Tools (http://espressif.com/en/support/download/other-tools) Probleme bereiten, könnte man z.B. den NodeMCU Flasher (https://github.com/nodemcu/nodemcu-flasher) testen. Dort einfach unter &amp;quot;Config&amp;quot; das .BIN File laden und dann im Reiter &amp;quot;Operation&amp;quot; den entsprechenden COM Port auswählen und auf &amp;quot;Flash&amp;quot; klicken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Update.png|miniatur|Web-Interface: Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Update ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Während das normale Update über einen Host im Internet durchgeführt wird, kann man über das lokale Update den STM32 vom lokalen PC aus flashen. Das lokale Flashen des ESP8266 ist noch nicht möglich, ist aber für ein späteres Release geplant. Sonst gelten dieselben Bemerkungen wie zum vorhergehenden Kapitel &amp;quot;Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auch hier gilt: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Local-Update.png|miniatur|Web-Interface: Local Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeserver ==&lt;br /&gt;
&lt;br /&gt;
Der Timeserver muss ein RFC 958 konformer NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Alternative Timeserver sind zum Beispiel ntp1.ptb.de (192.53.103.108), ntp2.ptb.de (192.53.103.104) oder time.nist.gov (216.229.0.179).&lt;br /&gt;
&lt;br /&gt;
Eine Liste von europäischen Timeservern findet man u.a. hier: http://www.pool.ntp.org/zone/europe&lt;br /&gt;
&lt;br /&gt;
Den Timeserver konfiguriert man folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Im Browser gibt man als URL die ausgegebene IP-Adresse ein, also z.B. http://192.168.10.1/ . Anschließend wählt man den Menüpunkt &amp;quot;Network&amp;quot; an und gibt in der entsprechenden Zeile die IP-Adresse des Wunsch-Timeservers ein und bestätigt mit &amp;quot;Save&amp;quot;. Nun wird zunächst geprüft, ob der Timeserver das NTP-Protokoll unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Uhrzeit wird alle 3800 Sekunden vom Timeserver geholt. Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] kann man die Übertragung auch jederzeit per Mausklick starten. Das funktioniert auch mit einer angelernten IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
&lt;br /&gt;
Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] Menüpunkt &amp;quot;Network&amp;quot; auswählen, in der Zeile &amp;quot;Timezone&amp;quot; die Abweichung von GMT eingeben. Für die mitteleuropäische Zeitzone wäre das einfach eine 1. Dies entspricht dann GMT+1. Bei einer negativen Abweichung wie GMT-1 muss dann entsprechend -1 eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IR-Fernbedienung ==&lt;br /&gt;
&lt;br /&gt;
In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe Weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt. Die Anlernroutine kann auch über die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] (Menü &amp;quot;Main&amp;quot;) gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man wird nun über eine Laufschrift auf dem LED-Display aufgefordert, folgende FB-Tasten zu drücken:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Tasten für IR-Fernbedienung&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste || Funktion || Laufschrift&lt;br /&gt;
|-&lt;br /&gt;
| Power || Anzeige ein/aus                           || power off/on&lt;br /&gt;
|- &lt;br /&gt;
| OK    || Speichern der Einstellungen               || ok&lt;br /&gt;
|- &lt;br /&gt;
| MODE- || Anzeigemodus erniedrigen                  || decrement display mode&lt;br /&gt;
|- &lt;br /&gt;
| MODE+ || Anzeigemodus erhöhen                      || increment display mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM- || Animation erniedrigen                     || decrement animation mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM+ || Animation erhöhen                         || increment animation mode&lt;br /&gt;
|- &lt;br /&gt;
| HOUR- || Stunde erniedrigen                        || decrement hour&lt;br /&gt;
|- &lt;br /&gt;
| HOUR+ || Stunde erhöhen                            || increment hour&lt;br /&gt;
|- &lt;br /&gt;
| MIN-  || Minute erniedrigen                        || decrement minute&lt;br /&gt;
|- &lt;br /&gt;
| MIN+  || Minute erhöhen                            || increment minute&lt;br /&gt;
|- &lt;br /&gt;
| RED-  || Helligkeit der Farbe Rot erniedrigen      || decrement red brightness&lt;br /&gt;
|- &lt;br /&gt;
| RED+  || Helligkeit der Farbe Rot erhöhen          || increment red brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN- || Helligkeit der Farbe Grün erniedrigen    || decrement green brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN+ || Helligkeit der Farbe Grün erhöhen        || increment green brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE-  || Helligkeit der Farbe Blau erniedrigen    || decrement blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE+  || Helligkeit der Farbe Blau erhöhen        || increment blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT-  || Grundhelligkeit erniedrigen            || decrement global brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT+  || Grundhelligkeit erhöhen                || increment global brightness&lt;br /&gt;
|- &lt;br /&gt;
| AUTO+  || Automatische Helligkeitsregelung ein/aus || toggle auto brightness&lt;br /&gt;
|- &lt;br /&gt;
| TEMP   || Anzeige der Temperatur für 5 Sekunden    || get temperature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.&lt;br /&gt;
&lt;br /&gt;
Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:&lt;br /&gt;
&lt;br /&gt;
* SIRCS (Sony)&lt;br /&gt;
* NEC (Viele Hersteller, sehr verbreitet)&lt;br /&gt;
* SAMSUNG&lt;br /&gt;
* MATSUSHITA&lt;br /&gt;
* KASEIKYO&lt;br /&gt;
&lt;br /&gt;
[[IRMP]] &amp;quot;versteht&amp;quot; jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des [[IRMP]]-Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine passende Fernbedienung gibt es bei &#039;&#039; [http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019 DX] &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Passend beschriftet werden kann die Fernbedienung mit einem der folgenden Labels &amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Fernbedienung Folie ZW.pdf]] &amp;lt;br&amp;gt; &lt;br /&gt;
[[Datei:Fernbedienung Folie ZW2.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
(sie unterscheiden sich in der Anordnung des Power- und Save-Knopfes). Einfach auf eine selbstklebende Folie drucken, ausschneiden und aufkleben. Die unterste Reihe ist für weitere zusätzliche Optionen (z.B. Ambilight, usw.) noch offen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Android App ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Ist ein [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul angeschlossen und korrekt konfiguriert, kann die Uhr per [[WordClock_mit_WS2812#Android_App|Android App]] ferngesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Momentan können folgende Einstellungen vorgenommen werden:&lt;br /&gt;
&lt;br /&gt;
* Ein-/Ausschalten der Uhr&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Anzeige der WordClock-Temperatur&lt;br /&gt;
* Einstellen der Farben (&#039;&#039;&#039;Neu&#039;&#039;&#039;: nun auch RGBW)&lt;br /&gt;
* Manuelle Einstellung einer Grundhelligkeit&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] ein/aus&lt;br /&gt;
* Einstellung des Anzeigemodus&lt;br /&gt;
* Einstellung der Farbanimation, z.B. &amp;quot;Rainbow&amp;quot; (&#039;&#039;&#039;Neu&#039;&#039;&#039;)&lt;br /&gt;
* Einstellung der Animation (Überblenden, Rollen, Explosion etc.)&lt;br /&gt;
&lt;br /&gt;
Es können bis zu 4 Profile konfiguriert und damit auch bis zu 4 unterschiedliche WordClocks gesteuert werden. Den Wechsel der Profile nimmt man mit der Schaltfläche &amp;quot;Laden&amp;quot; vor, das Speichern der Profile mit dem Button &amp;quot;Speichern&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag &amp;quot;Einstellungen&amp;quot;. Bei älteren Android-Versionen ist dafür zunächst die spezielle Menü-Taste zu drücken, bei neueren Android-Versionen geht das auch über die Menüschaltfläche mit den drei übereinanderliegenden Punkten - siehe Bild rechts oben. Die IP-Adresse wird dann dem aktuell ausgewählten Profil zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Unter den Menüpunkten findet man nun auch einen mit dem Eintrag &amp;quot;Tetris&amp;quot;. Damit wird eine Art &amp;quot;Gamepad&amp;quot; eingeblendet, mit dem man auf der Uhr WCtris - einen Tetris-Clone - spielen kann. Viel Spaß!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wc24h-Android.png|miniatur|WC24h Android App]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tutorial zum Aufbau =&lt;br /&gt;
&lt;br /&gt;
Ein Tutorial zum Aufbau der WordClock findet man hier: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung.&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
== Anbringung der WS2812-Streifen ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine 1mm starke Alu-Platte (für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm). Darauf lassen sich nicht nur einfach die WS2812-LED-Streifen aufkleben, auch dient die Alu-Platte der Wärmeabfuhr. Die Alu-Platte kann man sich von einem der eBay-Händler entweder direkt erstehen oder für ca. 3,50 Euro zurechtschneiden lassen.&lt;br /&gt;
&lt;br /&gt;
Den LED-Streifen schneidet man 16 Streifen à 18 LEDs. Bevor man sie auf die LED-Platte klebt, sollte man senkrecht je einen Tesa-Streifen links und rechts auf die Alu-Platte kleben, da sich gezeigt hat, dass die Schnittkanten der Streifen gern einen Kurzschluss mit der Alu-Platte bilden.&lt;br /&gt;
&lt;br /&gt;
Die LED-Streifen werden dann im Ziehharmonika-Verfahren aufgeklebt. Dabei steht jeder 2. Streifen auf dem Kopf. Das hat den Vorteil, dass die Verbindungen zwischen den Streifen möglichst kurz sind. Auf der rechten Seite verbindet man dann die Anschlüsse +5V mit +5V, GND mit GND und DO mit DI - siehe Bild. Man verbindet also den ersten mit dem zweiten Streifen, den dritten mit dem vierten Streifen usw.&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite verbindet man lediglich DO mit DI, also den zweiten Streifen mit dem dritten, den vierten mit dem fünften usw. An den verbleibenden Lötpunkten +5V und GND lötet man an jedem *zweiten* Streifen (1, 3, 5 usw.) die Spannungsversorgung  an. Praktisch ist die Verwendung eines 16-poligen Flachbandkabels, welches man auf einen Flachbandkabel-Stecker aufquetscht. Pin 1 und 2 gehen dann an 5V/GND des ersten Streifens, 3 und 4 an 5V/GND des dritten Streifens usw. Mit ca. 2 m Flachbandkabel kann die komplette Uhr verkabelt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann man mittels 16-poligem Wannenstecker, den man auf eine Lochrasterplatine lötet, die Spannungsversorgung einfach verpolungssicher anstecken. Unter der Lochrasterplatine werden die geradzahligen Pins und die ungeraden Pins je mit einem Kupferdraht verbunden. Mit einer 2-poligen Schraubklemme auf der Lochrasterplatine kann dann das Netzteil angeschlossen werden - siehe Bild rechts. Bei Verwendung eines der Shields aus der Sammelbestellung wird die Lochrasterplatine &#039;&#039;&#039;nicht&#039;&#039;&#039; benötigt - die Spannungsversorgung für die Stripes ist auf den Shields mit eingeplant. &lt;br /&gt;
&lt;br /&gt;
Beim Anschluss des Datensignals sollte beachtet werden, dass zuerst die Status-LED angeschlossen wird und das Signal dann von dieser weiter zur Platte geht. Spannung für die Status-LED kann man sich bequem vom letzten Streifen der Platte holen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wclock24h-WS2812-auf-Alu-Platte.jpg|miniatur|16 WS2812-Streifen auf Alu-Platte]]&lt;br /&gt;
[[Datei:Wclock24h-16-pol-Wanne.png|miniatur|16pol Wanne zum Verbinden des Netzteils und der Streifen]]&lt;br /&gt;
[[Datei:Wclock24h-Spannungsvergung-Streifen.jpg|miniatur|Anschluss der Streifen an die Spannungsversorgung]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine Alu-Platte (1mmx310mmx310mm).&lt;br /&gt;
Der Aufbau ist analog zu der WordClock 24h zu betrachten. Der Unterschied liegt darin, dass bei der WC12h die LED Streifen mit dem Sonderabstand benutzt werden und dieser in 10 Streifen a 11 LEDs geteilt wird. Sowie in 4 Einzel LEDs für die Minutenanzeigen in den Ecken.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Verbindung der Streifen erfolgt dann analog zu der oben beschriebenen Weise.&lt;br /&gt;
|| &lt;br /&gt;
[[Datei:Aufbau WC12h WS2812.jpg|mini]]&lt;br /&gt;
Aufgebaute WC12h mit WS2812 Streifen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zwischenböden ==&lt;br /&gt;
Es gibt insgesamt 3 Varianten der Zwischenböden.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei Varianten für die WordClock 12h (mit und ohne Ambilight Aussparungen) und eine Variante für die WordClock 24h&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h OHNE Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden ohne Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden ohne Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h MIT Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden mit Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden mit Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 OHNE Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h Boden Rueckseite.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Vorderseite.jpeg|mini|Vorderseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Rueckseite schraeg.jpeg|mini|Rückseite schräg]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 mit Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h MIT Ambilight-innen.jpg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h MIT Ambilight-aussen.jpg|mini|Vorderseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
(in Arbeit)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Shields für STM32 MiniDev und Nucleo Board ==&lt;br /&gt;
Hier werden nur die aktuellen Versionen der Shields beschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
[[WordClock_mit_WS2812#Historie_der_Hardware-Versionen|Ältere HW Versionen sind im Anhang aufgeführt]]&amp;lt;br&amp;gt;&lt;br /&gt;
=== Shield für STM32 MiniDevBoard ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das MiniDevBoard in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R16 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP13 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) und JP12 (Prog/Run) wurde um 90° gedreht&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Ein Bild folgt noch.&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden. Bild zeigt die v4 mit RTC, TSOP, AMS1117, ESP12, Spannungsabschaltung, LDR&lt;br /&gt;
||[[Datei:MiniDev_v4_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zum Stromstecker (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V4:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32F411 Nucleo Board ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das Nucleo Board in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Aufdruck des v4 hat sich der Fehlerteufel eingeschlichen. Der Aufdruck spricht noch von der Version3. Version 4 ist aber gut an den vergoldeten Lötpads zu erkennen. V3 hat die Lötpäds versilbert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R15 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP11 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) wurde neu positioniert und liegt nun nicht mehr unter dem Nucleo Board&lt;br /&gt;
* JP8 (SWD) wurde neu hinzugefügt&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Bild folgt noch&amp;lt;br&amp;gt;&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board. Bild zeigt noch die v3&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V4:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tischversion der WC12h aus dem 3D Drucker ==&lt;br /&gt;
[[Datei:WC12h_desk_printed.JPG|mini]]&lt;br /&gt;
&lt;br /&gt;
Wer Zugriff auf einen 3D Drucker mit einem Druckbereich &amp;gt;= 180x190mm hat, der findet bei Thingiverse 3D Modelle für alle unterstützten Sprachversionen der Software. Die Modelle der WC12h sind recht einfach zu drucken und sollten sich eigentlich mit so ziemlich jedem Gerät realisieren lassen. Wenn eine Version mit eingebautem Diffusor gedruckt werden soll, steht und fällt das Vorhaben mit der Ausrichtung des Druckbetts. Schon ein Versatz von 0.1mm über die gesamte Fläche kann hier das Druckergebnis ziemlich negativ beeinträchtigen. Aber in der Regel kennen die Besitzer solcher Geräte ja die Stolpersteine. Falls euer Druckbett nicht wirklich gerade, oder nicht sauber ausgerichtet ist, könnt ihr zur Not einfach eine Version ohne Diffusor drucken und diesen dann in Eigenregie erstellen (Butterbrotpapier, Milchglasfolie, usw.).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WC12h_desk_beleuchtet.jpg|mini]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Displaymatrix der 3D Modelle ist wegen der kleinen Größe der Uhr für den Abstand eines 90LED/m Streifens (11.11mm) ausgelegt, die man z.B. bei eBay, Aliexpress und Konsorten kaufen kann. Ich habe Anfang des Jahres ca. 12 USD inkl. Versand für einen Meter WS2812B mit 90 LEDs pro Meter bei Aliexpress bezahlt, bei 2 Metern habt ihr also Kosten von etwas über 22 Euro für die Streifen.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Update 10/2017&#039;&#039;&#039;: Wegen der mittlerweile schlechten Verfügbarkeit der 90LED/m habe ich Modelle für 96LED/m Streifen ergänzt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In Sachen Ambilight gibt es hier 2 verschiedene Deckel zur Auswahl, mit denen ihr z.B. den Sekundenzeiger der Uhr oder das Ambilight als Gehäusebeleuchtung benutzen könnt. Im Deckel ist jeweils ein Kreis für die Anbringung der Streifen vorhanden. Der Umfang der Kreise ist berechnet für den Einsatz von 30 LEDs eines 60 LED pro Meter Streifens, bzw. 60 LEDs eines 144 LED pro Meter Streifens. Achtet darauf hier nicht unterschiedliche LED Typen zu mischen (z.B. SK6812 für die Matrix und WS2812 für das Ambilight)! Ich persönlich habe gute Erfahrungen mit den LEDs von &amp;quot;BTF Lighting&amp;quot; bei Aliexpress gemacht.&lt;br /&gt;
&lt;br /&gt;
Hier geht es zur [http://www.thingiverse.com/thing:2130830 WordClock 12h (desk clock edition) bei Thingiverse]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Sammelbestellungen =&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung LED Stripes, Zwischenböden, Shields ==&lt;br /&gt;
Für die WC12h Variante der WordClock werden WS2812 Stripes als Spezialanfertigung mit einem Rastermaß von 28,1mm eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;WS2812 Pakete&#039;&#039;&#039; angeboten (WC12h):&lt;br /&gt;
* Paket 5 (Uhr - STM32 Basis - WS2812) - 40,80Eur : 120 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
* Paket 6 (Ambilight - STM32 Basis - WS2812) - 20,40Eur : 60 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
(durch die Umstellung des Ambilight Paketes auf 60 LEDs, kann die umlaufende Sekundenanzeige realisiert werden)&lt;br /&gt;
&lt;br /&gt;
Für die WC24h werden die WS2812 Stripes nicht über eine Sammelbestellung bestellt, da hier das Standardformat genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Zwischenböden&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Zwischenboden (WC12h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC12h) mit Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) mit Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Shields&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Shield für STM32 MiniDevBoard - 3,50Eur&lt;br /&gt;
* Shield für STM32 NucleoBoard - 5,50Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der Shields&#039;&#039;&#039; erfolgt als Großbrief:&lt;br /&gt;
* innerhalb BRD – 4,00Eur&lt;br /&gt;
* Österreich – 6,00Eur&lt;br /&gt;
* Schweiz - 6,00Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der WS2812-Stripes&#039;&#039;&#039; erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) – 6,50Eur&lt;br /&gt;
* Österreich – 15,50Eur&lt;br /&gt;
* Schweiz – in die Schweiz kann nur als normales Paket versendet werden, Kosten hierzu siehe unten&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand mit Zwischenboden&#039;&#039;&#039; erfolgt als normales Paket:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 10,00Eur (bis 2 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 12,00Eur (bis 4 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 18,00Eur (ab 5 Böden)&lt;br /&gt;
* Österreich – 20,00Eur (bis 2 Böden)&lt;br /&gt;
* Österreich – 25,00Eur (bis 4 Böden)&lt;br /&gt;
* Schweiz - 31,00Eur (bis 2 Böden)&lt;br /&gt;
* Schweiz - 40,00Eur (bis 4 Böden)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&amp;lt;br&amp;gt;&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig und wird dann entsprechend mitgeteilt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 06.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;09.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~10.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~17.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-front-dia.jpg|miniatur|Frontplatte: Dia]]&lt;br /&gt;
[[Datei:Wordclock-front-full.jpg|miniatur|Frontplatte: Vollansicht]]&lt;br /&gt;
[[Datei:WordClock-gelb.jpg|miniatur|4-sprachige Frontplatte]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatten bleiben identisch zu denen aus dem früheren [[Word Clock|WordClock]]-Projekt. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version, die auch für die Sammelbestellung gilt:&lt;br /&gt;
&lt;br /&gt;
 E S K I S T L F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N Z W A N Z I G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN ZWANZIG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI|VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T G N A C H V O R J M    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B Q Z W Ö L F P    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB ZWÖLF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W E I N S I E B E N    &amp;lt;nowiki&amp;gt;==&amp;gt; ZW|EI|N|S|IEBEN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K D R E I R H F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W A C H T Z E H N R S    &amp;lt;nowiki&amp;gt;==&amp;gt; ACHT ZEHN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B S E C H S F M U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; SECHS UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist es möglich, vier regionale Sprechweisen darzustellen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wessi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rhein-Ruhr-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zwanzig nach eins&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ossi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schwaben-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zwanzig nach zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC12h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also bitte auch in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Minutenpunkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;WC12h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC12h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise pro Stück:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 42,- EUR.&lt;br /&gt;
   - weiß: 49,- EUR.&lt;br /&gt;
   - rot: 49,- EUR.&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Aus der letzten Sammelbestellung sind aufgrund einer Fehlproduktion der Druckerei von den schwarzen WC12h noch WC12h-Frontplatten übrig, welche 3,5mm kleiner sind, also lediglich 446,5mm x 446,5mm statt 450mm x 450mm groß sind. Diese lassen sich nur mit einem Rahmen - wie z.B. dem im Artikel empfohlenen Alu-Rahmen einsetzen. Für den rahmenlosen Einsatz eignen sie sich eher nicht, weil dann der Zwischenboden leicht übersteht. Auf diese Frontplatten gebe ich einen Preisnachlass von 10,- EUR.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet alle 4 Sprachversionen:&lt;br /&gt;
&lt;br /&gt;
* Wessi-Modus (viertel nach/vor)&lt;br /&gt;
* Ossi-Modus (viertel/dreiviertel)&lt;br /&gt;
* Rhein-Ruhr-Modus (viertel nach/vor, zwanzig nach/vor)&lt;br /&gt;
* Schwaben-Modus (viertel/dreiviertel, zwanzig nach/vor)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Edelstahl Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Edelstahl126.jpg|miniatur]][[Datei:Edelstahl139.jpg|miniatur]][[Datei:Edelstahl092.jpg|miniatur|Loch]][[Datei:Edelstahl116.jpg|miniatur|Buchstabe]]&lt;br /&gt;
Eckdaten der Edelstahlblende:&lt;br /&gt;
&lt;br /&gt;
  - Abmessungen: ca. 450x450x1 mm &lt;br /&gt;
  - gelasert gem. dxf Vorgabe, &lt;br /&gt;
  - Material 1.4301-2G, &lt;br /&gt;
  - eins. K320 geschliffen/gebürstet, &lt;br /&gt;
  - ohne weitere Nachbearbeitung, &lt;br /&gt;
  - Layout unterscheidet sich von der Originaluhr&lt;br /&gt;
&lt;br /&gt;
Verwendet wird hierbei die Schriftart Lucida Console allerdings erweitert. Die Schriftart hat Stege, so dass freie Inselteile (z.&amp;amp;nbsp;B. Innenteil O) nicht lose sind. Jeder Steg hat eine Breite von mind. 2mm.&lt;br /&gt;
[[Datei:Edelstahlfront_V2.png|miniatur|ohne]]&lt;br /&gt;
Die Buchstaben werden entsprechend ausgelasert und müssen von hinten noch mit einem Diffusor versehen werden. Der Diffusor ist nicht Bestandteil des Angebots. &lt;br /&gt;
&lt;br /&gt;
Hinweise zum Diffusor findet ihr hier: &amp;lt;br /&amp;gt;&lt;br /&gt;
http://christians-bastel-leben.blogspot.de/2012/04/diffusorfolien.html&lt;br /&gt;
&lt;br /&gt;
Er hat die Folien mit der schwarzen Platte getestet. Er sagt die besten Ergebnisse hatte er mit folgender Folie:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.plexiglas-shop.com/DE/de/plexiglas-folie-5m9m5apyxic/plexiglas-folie-weiss-99532-gt-1-0-mm-iqq6a1wurpd~p.html&lt;br /&gt;
&lt;br /&gt;
Eine Plexiglasplatte hatte ich auch getestet, doch war meine zu breit und sah dann nicht gut aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand: 26.11.2017: Sammelbestellung ist aufgegeben. Habe noch Blenden übrig. Bei Bedarf einfach melden.  (Benutzer [http://www.mikrocontroller.net/user/show/hansa hansa]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Preise der Blenden:&lt;br /&gt;
&lt;br /&gt;
  Frontblende:                  44 Euro (inkl.MwSt)&lt;br /&gt;
  Verpackung :                   5,-  Euro (2 x 3mm MDF, als Rückwand verwendbar)&lt;br /&gt;
  Versand per GLS: 5 Euro&lt;br /&gt;
  Versand in die Schweiz: 8 Euro (wird direkt in der Schweiz verschickt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Selbstnachbau hier die DXF-Datei [[Datei:EdelstahlFrontV2.dxf]]&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Diese Dateidaten müssen um Faktor 10 vergrössert werden!&lt;br /&gt;
Sonst kommt eine 45x45mm Platte an. 8-(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung LED Stripes ==&lt;br /&gt;
&lt;br /&gt;
Eine Sammelbestellung der LED-Stripes für die WC24h ist derzeit nicht geplant, da hier WS2812-Stripes mit dem Standard-Rastermaß von 60 LEDs/m benötigt werden. Diese sind sehr einfach bei eBay oder Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Zwischenböden ==&lt;br /&gt;
&lt;br /&gt;
Wir können nun auch die WC24h Zwischenböden über die Sammelbestellung anbieten.&lt;br /&gt;
&lt;br /&gt;
* Zwischenboden für Wordclock 24h (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Alle Details zu der Sammelbestellung ist weiter oben bei der [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|WC12h Sammelbestellung beschrieben]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-Frontplatte-rot.jpg||right|WordClock24h-rot]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet über ein Dutzend Sprachvarianten:&lt;br /&gt;
&lt;br /&gt;
* hh mm (12)&lt;br /&gt;
* hh mm (24)&lt;br /&gt;
* hh und mm (12)&lt;br /&gt;
* hh und mm (24)&lt;br /&gt;
* mm nach hh (12+)&lt;br /&gt;
* mm nach hh (24)&lt;br /&gt;
* Ossi/Berlin (12)&lt;br /&gt;
* Ossi/Berlin (12+)&lt;br /&gt;
* Oesi (12)&lt;br /&gt;
* Oesi (12+)&lt;br /&gt;
* Rhein/Ruhr (12)&lt;br /&gt;
* Rhein/Ruhr (12+)&lt;br /&gt;
* Schwaben (12)&lt;br /&gt;
* Schwaben (12+)&lt;br /&gt;
* Wessi (12)&lt;br /&gt;
* Wessi (12+)&lt;br /&gt;
* Countdown bis Mitternacht&lt;br /&gt;
* Temperatur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC24h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Punkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;W24h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC24h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 44,- EUR&lt;br /&gt;
   - weiß: 49,- EUR&lt;br /&gt;
   - rot: 49,- EUR&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR für Verpackungs- und Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Die ESP8266-Firmware bietet eine API, über welche die Uhr konfiguriert werden kann. Diese API wird zum Beispiel von der Android-App genutzt, um die wichtigsten Einstellungen vorzunehmen. Allerdings ist die Kommunikation über die API momentan nur &amp;quot;One-Way&amp;quot;, d.h. es können nur Befehle gesandt werden, aber keine momentanen Einstellungen abgerufen werden. Das wird zukünftig noch geändert, so dass auch sämtliche Konfigurationsparameter abgerufen und eingestellt werden können - analog zum Webinterface.&lt;br /&gt;
&lt;br /&gt;
Der ESP8266 horcht auf UDP-Port 2424, die UDP-Messages sind zwischen 1 und 7 Bytes lang. Das erste Zeichen ist immer ein Buchstabe, z.B. &#039;C&#039;. Die weiteren Parameter sind jeweils Bytes, welche binär codiert sind, also 1 Parameter = 1 Byte. Es wird KEIN Abschluss-Zeichen, etwa ein &#039;\n&#039; oder sonstiges gesandt.&lt;br /&gt;
&lt;br /&gt;
=== API Kommandotabelle ===&lt;br /&gt;
&lt;br /&gt;
 C r g b [w]    - Farben (Colors) setzen&lt;br /&gt;
                    r =  0 ... 63        Rot&lt;br /&gt;
                    g =  0 ... 63        Grün&lt;br /&gt;
                    b =  0 ... 63        Blau&lt;br /&gt;
                    w =  0 ... 63        Weiß (nur bei SK6812-RGBW)&lt;br /&gt;
&lt;br /&gt;
 D m            - Anzeigemodus (Display-Mode) setzen&lt;br /&gt;
                  WC12h:&lt;br /&gt;
                    m =  0               Wessi&lt;br /&gt;
                    m =  1               Ossi&lt;br /&gt;
                    m =  2               Rhein-Ruhr&lt;br /&gt;
                    m =  3               Schwaben&lt;br /&gt;
                    m =  4               Schweizerdeutsch 1&lt;br /&gt;
                    m =  5               Schweizerdeutsch 2&lt;br /&gt;
                    m =  4               Englisch 1&lt;br /&gt;
                    m =  5               Englisch 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  WC24h:&lt;br /&gt;
                    m =  0               hh mm (12)&lt;br /&gt;
                    m =  1               hh mm (24)&lt;br /&gt;
                    m =  2               hh und mm (12)&lt;br /&gt;
                    m =  3               hh und mm (24)&lt;br /&gt;
                    m =  4               mm nach hh (12+)&lt;br /&gt;
                    m =  5               mm nach hh (24)&lt;br /&gt;
                    m =  6               Ossi/Berlin (12)&lt;br /&gt;
                    m =  7               Ossi/Berlin (12+)&lt;br /&gt;
                    m =  8               Oesi (12)&lt;br /&gt;
                    m =  9               Oesi (12+)&lt;br /&gt;
                    m = 10               Rhein/Ruhr (12)&lt;br /&gt;
                    m = 11               Rhein/Ruhr (12+)&lt;br /&gt;
                    m = 12               Schwaben (12)&lt;br /&gt;
                    m = 13               Schwaben (12+)&lt;br /&gt;
                    m = 14               Wessi (12)&lt;br /&gt;
                    m = 15               Wessi (12+)&lt;br /&gt;
&lt;br /&gt;
 A a            - Animation setzen&lt;br /&gt;
                    a =  0               Keine Animation&lt;br /&gt;
                    a =  1               Keine&lt;br /&gt;
                    a =  2               Fade&lt;br /&gt;
                    a =  3               Roll&lt;br /&gt;
                    a =  4               Explode&lt;br /&gt;
                    a =  5               Random&lt;br /&gt;
                    a =  6               Snake&lt;br /&gt;
                    a =  7               Teletype&lt;br /&gt;
                    a =  8               Cube&lt;br /&gt;
                    a =  9               Matrix&lt;br /&gt;
                    a = 10               Drop&lt;br /&gt;
                    a = 11               Squeeze&lt;br /&gt;
                    a = 12               Flicker&lt;br /&gt;
&lt;br /&gt;
 F f            - Farbanimation setzen&lt;br /&gt;
                    f =  0               Farbanimation aus&lt;br /&gt;
                    f =  1               Farbanimation Rainbow&lt;br /&gt;
&lt;br /&gt;
 B b            - Helligkeit (Britghtness) setzen&lt;br /&gt;
                    b =  0 ... 15        Helligkeit&lt;br /&gt;
&lt;br /&gt;
 L l            - Automatische Helligkeitsregelung&lt;br /&gt;
                    l =  0               Regelung aus&lt;br /&gt;
                    l =  1               Regelung an&lt;br /&gt;
&lt;br /&gt;
 P p            - Power&lt;br /&gt;
                    p =  0               Power off&lt;br /&gt;
                    p =  1               Power on&lt;br /&gt;
&lt;br /&gt;
 W              - Temperaturanzeige aktivieren&lt;br /&gt;
&lt;br /&gt;
 T y m d h i s  - Datum/Zeit (Time) setzen:&lt;br /&gt;
                    y =  0 ... 99        Jahr seit 2000&lt;br /&gt;
                    m =  1 ... 12        Monat&lt;br /&gt;
                    d =  1 ... 31        Tag im Monat&lt;br /&gt;
                    h =  0 ... 23        Stunde&lt;br /&gt;
                    i =  0 ... 59        Minute&lt;br /&gt;
                    s =  0 ... 59        Sekunde&lt;br /&gt;
&lt;br /&gt;
 gT x           - Tetris&lt;br /&gt;
                    x = s                Tetris starten&lt;br /&gt;
                    x = l                Links&lt;br /&gt;
                    x = r                Rechts&lt;br /&gt;
                    x = d                Unten&lt;br /&gt;
                    x = u                Hoch (hier: Drehen)&lt;br /&gt;
                    x = m                Fallenlassen&lt;br /&gt;
                    x = q                Quit: Beenden&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Historie der Hardware-Versionen ==&lt;br /&gt;
=== Shield für STM32 MiniDevBoard (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des MiniDev Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board ist 38x110mm und verbindet alle Komponenten miteinander.&amp;lt;br&amp;gt;Dieses Board ist die optimale Variante für die klassische 10x11 WordClock. Es enthält alle Schnittstellen für die WordClock und ist für die WC12 als auch für die WC24 Variante geeignet.&lt;br /&gt;
&#039;&#039;&#039;Bei dieser Version (März 2016) sind die Anschlüsse für den UART auf dem Shield so beschriftet, dass (ausnahmsweise) TX -&amp;gt; TX und RX -&amp;gt; RX verbunden werden müssen.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:MiniShield Vorderseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite&lt;br /&gt;
||[[Datei:MiniShield Rueckseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board soweit bestückt - es fehlt hier noch das STM32. Das STM32 MiniDevBoard sollte direkt ohne weiteren Sockel auf das Shield gelötet werden.&lt;br /&gt;
||[[Datei:MiniShield Bestueckt.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Hier nun das vollbestückte Shield, incl STM32, ESP8266, RTC, DS1820, AMS1117&lt;br /&gt;
||[[Datei:MiniShield Bestueckt incl STM32.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards:&amp;lt;br&amp;gt;Einzige Abweichung: +5V ist an die UART Schnittstelle mit raus geführt.&lt;br /&gt;
||[[Datei:MiniShield Schaltplan.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v2 enthält folgende Anpassungen:&lt;br /&gt;
* am UART ist nun auch +5V ausgeführt&lt;br /&gt;
* Rastabstand bei DS3231, TSOP, LDR, Data sind nun einheitlich und können somit mit einem durchgehenden PinHeader bestückt werden&lt;br /&gt;
* die Pins für das DS3231 sind gespiegelt. Damit liegt die Batterie nun oben und steht nicht mehr nach unten über&lt;br /&gt;
* Es wurde die Abschaltschaltung für die 5V Versorgung der WS2812 Streifen eingebaut. Somit kann optional die Versorgungsspannung geschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:MiniDev v2 TOP.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Im Lieferzustand ist die Abschaltschaltung gebrückt. Wird die Abschaltschaltung eingebaut, muss auf der Unterseite eine Leiterbahn durchtrennt werden! Diese ist hier rot umrandet!&#039;&#039;&#039;&lt;br /&gt;
||[[Datei:MiniDev v2 BOTTOM.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bestückte Bilder folgen noch.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards als V2:&lt;br /&gt;
||[[Datei:MiniDev v2 Schematic.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurden zwei Taster (WPS / User) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:MiniDev_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bei bestückten STM32 kann man gut erkennen, dass leider der 4-Pin-Header für den UART Anschluss sowie der 3-Pin-Header für PROG/RUN jeweils mit einem Pin unter dem Shield liegen.&lt;br /&gt;
* Beim UART Anschluss wird einfach nur ein 3-Pin-Header verwendet und +5V nicht angeschlossen. Was keine Funktionsbeeinträchtigung bedeutet.&lt;br /&gt;
* Der 3-Pin-Header für PROG/RUN kann &#039;&#039;&#039;nicht direkt&#039;&#039;&#039; bestückt werden. Stattdessen muss hier mit einer 3-adrigen-Verlängerung gearbeitet werden.&lt;br /&gt;
Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
||[[Datei:MiniDev_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V3:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32 Nucleo-Board (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des Nucleo Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Shield ist 90mm*55mm klein und wird auf das nucleo-Board aufgesteckt. Es enthält alle bekannten Schnittstellen für die WordClock (egal ob 12h oder 24h) und ist zusammengebaut ca 19mm hoch.&lt;br /&gt;
Es passt somit problemlos in eine Aussparung des Zwischenbodens.&lt;br /&gt;
|| [[Datei:Ns-Bild1.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ebenfalls integriert sind Anschlüsse, um den abgesägten ST-Link zur Programmierung oder Kommunikation über UART mit dem PC zu verbinden. Dabei muss der abgesägte ST-Link von interner auf externe Programmierung umgestellt werden. Dazu zieht man beide Jumper an CN2 auf dem ST-Link (rechts neben dem SWD-Header) ab. Wichtig ist, auch noch eine Verbindung vom SWD-Header Pin1 (VDD ganz oben) zu 3V3 des Nucleo-Teils herzustellen. Das ST-Link misst über VDD -&amp;gt; 3V3 die Betriebsspannung des STM32.&lt;br /&gt;
&lt;br /&gt;
||[[Datei:STLink-to-Nucleo.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beschreibung der Schnittstellen:&lt;br /&gt;
Die Belegung der meisten Schnittstellen ergibt sich aus den nebenstehenden Bildern.&lt;br /&gt;
Um das RTC Modul, welches entweder ein DS3231 oder ein DS1307 sein kann, mit Spannung zu versorgen, gibt es die Stiftleiste St-07, welche mit einem Jumper die Spannung am RTC Modul auf 3,3V oder 5V einstellt.&lt;br /&gt;
Die Stiftleiste St-04 kann per Pfostenfeldbuchse und Flachbandkabel insgesamt 8 mal die Spannung in die WS2812 Streifen einspeisen (siehe Beispiel weiter oben im Artikel).&lt;br /&gt;
||[[Datei:Ns-sh2.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| In dem nebenstehenden Bild ist das bestückte Nucleo Board zu sehen. Die einzelnen Module werden hier rechts und links an den überstehenden Pins angebracht.&lt;br /&gt;
||[[Datei:Nucleo_bestueckt.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Seit Juli 2016 wird das Nucleo-Shield in der Version V2.1a ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Es enthält jetzt auch die Möglichkeit, die Abschaltung der WS2812 LEDs per Hardware vorzunehmen. Dazu wurden die entsprechenden Bauteile auf das Board gepackt.&lt;br /&gt;
Außer dem Leistungs MOSFET IRF9310 wurde alles in bedrahteter Technik ausgeführt.&lt;br /&gt;
Wer die Bauteile für die Abschaltung (T1, T2, D1, R7, R8 und R9) NICHT einbaut, muss, wie in nebenstehendem Bild gezeigt, vier Lötbrücken einbauen.&lt;br /&gt;
&lt;br /&gt;
Analog dazu muss derjenige, der die Abschaltung einbaut, die Lötbrücken offen lassen (siehe unteres Bild, roter Kreis).&lt;br /&gt;
|| [[Datei:IMG 0366mod.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der Anschluss der externen Komponenten erfolgt nach neben stehendem Schaltplan an das nucleo Board.&lt;br /&gt;
|| [[Datei:Nucleo-Shield.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Leider haben sich zwei Bugs in den Platinenentwurf eingeschlichen.&lt;br /&gt;
Zum einen gibt es Kurzschlüsse an den Pluspolen der Kondensatoren C1 und C3. Der Workaround besteht darin, das Bohrloch etwas aufzuweiten, um die ungewünschte Verbindung zu Masse zu trennen (siehe Bild)&lt;br /&gt;
|| [[Datei:NS Bug-1.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der zweite Bug betrifft nur diejenigen, die die hardwaremäßige Abschaltung der WS2812 LEDs einbauen.&lt;br /&gt;
Hier muss, wie im nebenstehenden Bild gezeigt, eine kleine Verbindung mit einem Stück Kabel hergestellt werden.&lt;br /&gt;
|| [[Datei:NS Bug-2.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Shield muss über St-08 mit 5V versorgt werden. Die für die Schnittstellen benötigten 3,3V wird auf dem Shield selbst mit einem LM3940-3.3 erzeugt.&lt;br /&gt;
&lt;br /&gt;
Hier findet ihr die Stückliste zum Nucleo-Board und den Link zum öffentlichen Reichelt Warenkorb (noch ohne T1, T2, D1, R7, R8 und R9).&lt;br /&gt;
 [[Datei:Wc24wk.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurde ein Taster (WPS) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
* Komplettes Redesign&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:Nucleo_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board.&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 befindet sich also bei &amp;quot;IRF&amp;quot; des Bestückungsdrucks).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V3:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss ESP8266 ESP-01 ==&lt;br /&gt;
&lt;br /&gt;
Das ESP-01 Modul wurde lediglich bei den älteren Shields verwendet. Mittlerweile (ab Shield v3) wird es nicht mehr verwendet, weil es durch das ESP-12F ersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#ESP8266|ESP8266]] ESP-01: WLAN Modul&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-ESP8266-ESP-01.png|miniatur|Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA6&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4 (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA1&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 GPIO2 via 10k an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ab der Software Version 2.1.0 sind der HTML-Codegenerator und die Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266 ausgelagert. Deshalb ist ein ESP-Modul für das Betreiben der WordClock unbedingt erforderlich.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Umbau von ESP-01 auf ESP-12F ==&lt;br /&gt;
&lt;br /&gt;
Die älteren Shields, welche noch den Anschluss für den ESP-01 haben, können auf das ESP-12F umgebaut werden. Dafür besorgt man sich zusätzlich zum ESP-12F einen Adapter wie diesen hier:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.de/itm/PCB-Adapter-ESP-07-12-Board-fuer-ESP8266-WIFI-Wlan-Serial-Modul-ESP-12E-E-/252713824790&lt;br /&gt;
&lt;br /&gt;
Dieser hat die Widerstände R2 und R3 auch schon direkt auf dem Adapter. Lediglich die Widerstände R1 und R4 (siehe Schaltbilder rechts) müssen beim STM32F103-Mini-Board zusätzlich angebracht werden, siehe unten. Beim Nucleo-Board ist der Pulldown an BOOT0 bereits auf der Nucleo-Platine integriert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Mini-Board&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an R (STM32F103-Mini-Development-Board RESET)&lt;br /&gt;
* ESP8266 GPIO4 an BOOT0-Jumper (Mittlerer Anschluss) und an Pulldown 10k&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Mini-Board-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-STM32F103-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an MiniBoard STM32F103]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Nucleo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an Nucleo RESET&lt;br /&gt;
* ESP8266 GPIO4 an Nucleo BOOT0&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Nucleo-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-Nucleo-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an Nucleo STM32F4xx]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beim Mini-Board findet man den Pin BOOT0 verborgen unter dem oberen Jumper - siehe Bild rechts. Dieser muss entfernt werden. Anschließend verbindet man den ESP-12F-Anschluss D16 (GPIO16, ab Version 2.6.0: D4, also GPIO4) mit dem mittleren Pin des Jumper-Anschlusses. Bei der Gelegenheit kann dann auch der Pulldown-Widerstand R1 zwischen B00T0 und dem Nachbar-Pin (&amp;quot;0&amp;quot;) angebracht werden.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board wird der Pin BOOT0 bereits per 10k Pulldown auf Low-Pegel gezogen. Hier kann der ESP-Pin GPIO16 (ab Version 2.6.0: GPIO4) direkt ohne zusätzlichen Pulldown an BOOT0 angeschlossen werden. Zu beachten ist hier lediglich, dass kein Jumper auf Pin5-7 von CN7 steckt. Dies ist aber standardmäßig sowieso nicht der Fall.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:STM32F103-Bootloader-2.6.0.png|miniatur|Anschluss ESP8266 ESP-12F an BOOT0 des STM32F103-MiniBoards]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historie der Software-Versionen ==&lt;br /&gt;
=== Android App ===&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
Behobene Fehler:&lt;br /&gt;
* Animations- und Anzeigelisten konnten nicht gescrollt werden&lt;br /&gt;
* Titel der Animations- und Modus-Dialoge war falsch (%d wählen)&lt;br /&gt;
* Display Ein und Aus zeigten als Meldung immer &amp;quot;Display Ein gesendet!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Änderungen:&lt;br /&gt;
* Farbregler automatisch verbergen, wenn Regenbogen-Farbanimation gewählt wurde&lt;br /&gt;
* Automatische IP-Suche&lt;br /&gt;
* Laden und Speichern der Profile in einem Dialog zusammengefasst&lt;br /&gt;
* Info anzeigen, wenn beim Starten keine Netzwerkverbindung besteht&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Beim Start (oder auf Knopfdruck) werden die aktuellen Einstellungen von der Uhr geladen.&lt;br /&gt;
* Neu: Es können bis zu vier Profile angelegt werden, um die Einstellungen für bis zu vier Uhren zu steuern.&lt;br /&gt;
* Neu: Gamepad für Spiele wie z.B. Tetris&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Alle aktuell vorgesehenen Animationen können nun vollständig über die App ausgewählt werden&lt;br /&gt;
* RGBW-LED-Unterstützung: Unter dem Menü &amp;quot;Einstellungen&amp;quot; kann nun eingestellt werden, dass RGBW-LEDs eingesetzt werden.&lt;br /&gt;
* Die Oberfläche ist nun &amp;quot;scrollable&amp;quot;, kann also bei kleineren Mobilgeräten, wo nicht alles draufpasst, gerollt werden.&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animationen Snake, Teletype und Cube nun auch über die App einstellbar&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Auswählen der Farbanimation &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Button für Temperaturanzeige eingebaut&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 Firmware ===&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Web-Seite: &amp;quot;DFPlayer&amp;quot; zum Abspielen von MP3-Tracks bei vordefinierten Ereignissen.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* OTA-Flash des STM32: Der Flash-Inhalt wird nun erst unmittelbar vor dem eigentlichen Flash-Vorgang gelöscht, d.h. nach allen Konsistenzprüfungen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix in Local Update über OTA: Es wurde in V2.6.3 immer diejenige Datei geflasht, die zuletzt über das Remote Update heruntergeladen wurde.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Korrekturen in den STM32-OTA-Flash-Routinen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anpassung des Bootloaders an Nucleo STM32F4xx.&lt;br /&gt;
* Ambilight-Mode Clock: 5 Sekunden Marker nun an- und abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Das aktuelle Datum/Uhrzeit wurde im Webinterface nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button im Webinterface&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface - ungetestet.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer - ungetestet.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Unterstützung des ESP8266 ESP-12F&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;&lt;br /&gt;
* Neues Piktogramm &amp;quot;Fireworks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auswahl der Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Verbesserungen bei der Kommunikation zwischen STM32 und ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0b ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - Umlaute in Wettertexten wurden nicht korrekt gezeigt. Konvertierung der Umlaute von openweathermap-Inhalten von UTF8 nach ISO8859 nachgeholt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0a ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - beim Wechseln in den AP-Modus wurde fälschlicherweise &amp;quot;0.0.0.0&amp;quot; als IP-Adresse statt 192.168.4.1 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Ausgabe des WLAN-Modus: WLAN-Client oder AP&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler im NTP-Client behoben: Bei vorherigen Timeouts kann eine alte Uhrzeit ausgegeben werden&lt;br /&gt;
&lt;br /&gt;
=== STM32 WordClock Software ===&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Abspielen von MP3-Tracks über Mini DFPlayer bei ausgewählten Ereignissen.&lt;br /&gt;
* Neu: Sprechende Uhr.&lt;br /&gt;
* Neu: Bis zu acht Weckzeiten konfigurierbar.&lt;br /&gt;
* Neu: Advent (1-4) Overlays.&lt;br /&gt;
* Bugfix Timer-Tabellen: Bei gleichem Wochentag wurde der Timer nicht erkannt.&lt;br /&gt;
* Bugfix: Schweizerdeutsch-Layouts (WC12h)&lt;br /&gt;
* Bugfix: Board-LED leuchtet nun wieder, wenn ESP8266 über STM32 geflasht wird.&lt;br /&gt;
* Takt des STM32F411RE von 84MHz auf 100MHz erhöht.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* ESP8266: Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
* Vorbereitung Unterstützung der Interpretersprache NIC.&lt;br /&gt;
* Neu: Unterstützung für Nucleo STM32F446RE eingebaut - ungetestet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs einheitlich auf 120 erhöht.&lt;br /&gt;
* Bugfix: Ermittlung der Hardware-Konfiguration für HEX-Datei-Vorschlag beim OTA-Update korrigiert.&lt;br /&gt;
* Maximal möglichen Wert für Ticker-Verögerung (&amp;quot;Deceleration&amp;quot;) auf 16 beschränkt.&lt;br /&gt;
* Bugfix I2C-Treiber (betrifft RTC &amp;amp; EEPROM): Busy-Condition nach StopBit-Generierung wurde bisher nicht beachtet.&lt;br /&gt;
* Plausibilitäts-Tests auf EEPROM-Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierung: Double-Buffering für SK6812-DMA-Transfer - analog zu WS2812 in Version 2.6.4.&lt;br /&gt;
* Bugfix: Update von undefinierten EEPROM-Inhalten, welche in 2.6.x zu Hangups führen konnten.&lt;br /&gt;
* Bugfix: Nach Spielen von Tetris wurde nicht immer die aktuelle Uhrzeit wieder eingeblendet&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Verlängerung der Pausen für WS2812 auf 300us.&lt;br /&gt;
* Verschäfte Plausibilitätsprüfungen für EEPROM-Inhalte, ggfls. RESET auf Standardwerte.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Flackern bzw. versetztes Ausgabe der Display-LEDs durch Double-Buffering behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Änderung: 5-Sekunden-Marker für Ambilight-Modus &amp;quot;Clock&amp;quot; ist nun ein-/abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ein-/Ausschalten des Ambilights inkl. Timer funktioniert nun.&lt;br /&gt;
* Bugfix: Anzeige von Datum und Uhrzeit im Webinterface.&lt;br /&gt;
* Änderung: Schweizerdeutsch 2: Unterdrückung der Anzeige von &amp;quot;UHR&amp;quot;.&lt;br /&gt;
* EmBitz: Compiler-Optimierung von -O2 auf -Os gesetzt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button, damit ESP8266 sich per WPS mit dem Router (AccessPoint) verbinden kann.&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer.&lt;br /&gt;
* Neu: Ambilight-Animation &amp;quot;Clock&amp;quot; jetzt mit 5-Sekunden-Marker.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
* Optimierung der DS18xx/OneWire/Delay-Funktionen, um die Prozessorlast zu minimieren.&lt;br /&gt;
* Bugfix: Falsche Berechnung von Überläufen in CLOCK2-Animation für Ambilight (Anzahl Ambilight-LEDs = 30) korrigiert.&lt;br /&gt;
* Bugfix: Diverse Korrekturen in Layout English2 für WC12h.&lt;br /&gt;
* Neu: Zusätzliches Layout für WC12h: &amp;quot;Schweizerdeutsch 2&amp;quot;.&lt;br /&gt;
* Neu: WCtris, noch ein Tetris-Clone ;-)&lt;br /&gt;
* Änderung Verbindung zwischen ESP-12F und STM32: GPIO4 (und nicht mehr GPIO16) muss nun mit BOOT0 des STM32 verbunden werden&lt;br /&gt;
* Umstellung der IDE von EmBlocks 2.3.0 auf EMBitz 1.11.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
* Optimierungen der LED-Treiber zwecks Minimierung des RAM-Speicherverbrauchs.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Hochauflösendes animiertes Piktogramm &amp;quot;Fireworks&amp;quot; für WC24h.&lt;br /&gt;
* Bugfix: Auftretendes Glimmen nach Anzeige eines Piktogramms eliminiert. &lt;br /&gt;
* Bugfix WC24h: Anzeige Ossi-Modus: ES IST EINE MINUTE(N) NACH NEUN.&lt;br /&gt;
* Bugfix WC24h: Nach Anzeige des Datums wurde die Uhrzeit nicht vollständig aktualisiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Date-Intervall wurde fälschlicherweise als Fireworks-Interval gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Variable Größen der Piktogramme.&lt;br /&gt;
* Sanftes Ein- und Ausblenden (Fading) der Piktogramme.&lt;br /&gt;
* Piktogramme können nun animiert werden.&lt;br /&gt;
* Neues animiertes Piktogramm &amp;quot;Feuerwerk&amp;quot; für Silvester.&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;.&lt;br /&gt;
* Anzeige des aktuellen Datums als Laufschrift.&lt;br /&gt;
* Optimiertes Auslesen des DS18xx, um Verzögerungen in der Sekundenanzeige (Ambilight Clock) zu vermeiden.&lt;br /&gt;
* UART-Ringbuffer vergrößert zwecks Stabilisierung des ESP8266-Flashvorgangs.&lt;br /&gt;
* Unterstützung von neuen Layouts für Schweizerdeutsch und Englisch (nur WC12h).&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.5 ====&lt;br /&gt;
&lt;br /&gt;
* Erkennung des (nicht existenten) externen Pullups verbessert durch Delay vor Messung.&lt;br /&gt;
* Piktogramme Heart und Xmas-Tree werden nun in einer höheren Auflösung (16x16) auf der WC24h angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Piktogrammanzeige bei automatischer Helligkeitsregelung korrigiert.&lt;br /&gt;
* Bugfix: Piktogramme werden bei Power-Off nicht mehr angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Compiler-Warnungen für SK6812-RGBW beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeigefehler von Piktogrammen auf WC24h behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeige von Piktogrammen bei gleichzeitiger Rainbow-Animation zu kurz.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ineinanderschieben von Buchstaben bei Ticker-Anzeige behoben.&lt;br /&gt;
* Bugfix: Änderungen von Weiß-Werten bei SK6812-RGBW wurden nicht mehr übernommen.&lt;br /&gt;
* Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot; eingebaut.&lt;br /&gt;
* Unterstützung für WS2812 mit Reihenfolge RGB statt GRB.&lt;br /&gt;
* Spezielle Compiler-Warnungen bei erhöhter Warnstufe beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Umschaltung auf Open-Drain-Betrieb des LED-Ausgangs bei Anbringung eines 4k7 Pullups am WS2812-Eingang zur Erhöhung des LED-Eingangspegels von 3,3V auf 5V.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Unbedingtes Aktivieren des AP-Modus durch User-Button, auch wenn der ESP wegen Hersteller-Einstellungen bereits im AP-Modus ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Regeln der weißen SK6812-RGBW-LED im Browser funktionierte in Version 2.2.1 nicht mehr.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Wenn ausschließlich das RTC-Modul zur Temperaturmessung dient, wurde auf dem Display immer fälschlicherweise 12°C ausgegeben.&lt;br /&gt;
* Bugfix: Korrekturwert für DS18XX geht nach Reboot verloren.&lt;br /&gt;
* SK6812 wird nun auch in der RGB-Variante unterstützt - nicht nur RGBW.&lt;br /&gt;
* Verbesserung der automatischen Helligkeitsregelung (Sprungverhalten bei Unterschreiten der Helligkeits-Mindestwerts).&lt;br /&gt;
* DCF77-Empfänger-Problem bei Sekunde = 50 (gleichzeitige DS18xx-Temperaturmessung) behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Die Anzeigedauer der Temperatur ist nun nicht mehr von der Dauer der Animation abhängig.&lt;br /&gt;
* Bugfix Ambilight: Nach &amp;quot;Test Display&amp;quot; wurde die ursprüngliche Helligkeit des Ambilight nicht wieder hergestellt.&lt;br /&gt;
* Bugfix AP-Mode: Durch einen Timeout bei der ESP8266-Kommmunikation wurden die Vorgabewerte fürs Web-Interface nicht übertragen.&lt;br /&gt;
* RX-Ringbuffer ESP8266 -&amp;gt; STM32 von 128 auf 256 vergrößert.&lt;br /&gt;
* Timeout-Behandlung bei der Kommunikation zwischen STM32 und ESP8266 verbessert. &lt;br /&gt;
* Web-Interface: Checkbox &amp;quot;Use display colors&amp;quot; wurde auf die Seite &amp;quot;Ambilight&amp;quot; verschoben.&lt;br /&gt;
* WC12h Bugfix: Umlaute werden in der Laufschrift immer als Großbuchstaben angezeigt.&lt;br /&gt;
* WC12h: Font zur Laufschriftanzeige durch besser lesbaren Font ersetzt.&lt;br /&gt;
* WC24h: Korrektur der Anzeige von &amp;quot;ES IST EINS UHR&amp;quot; nach &amp;quot;ES IST EIN UHR&amp;quot; in bestimmten Anzeigemodi.&lt;br /&gt;
* Bugfix SK6812: Rot und Grün vertauscht.&lt;br /&gt;
* Bugfix LDR: Nach dem Setzen eines neuen LDR-Max-Wertes wurde dieser nicht zurück an das Web-Interface übertragen und deshalb dort (bis zum nächsten Reboot) ein alter Max-Wert angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266, damit Code-Ersparnis auf dem STM32 von 14KB Flash.&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
* Optional: Laufschrift mit dem aktuellen Wetter (über openweathermap.org)&lt;br /&gt;
* Unterstützung SK6812 (optional, RGBW-LEDs)&lt;br /&gt;
* Verbesserungen bei der LDR-Umgebungshelligkeitsmessung&lt;br /&gt;
* Wegfall der Schaltfläche &amp;quot;Save all&amp;quot; im Web-Interface. Nun werden sämtliche geänderten Konfigurationsdaten sofort auch im EPROM neu gespeichert.&lt;br /&gt;
* Bugfix: DS18xx-Temperatur-Korrekturwert wurde bisher als RTC-Temperatur-Korrekturwert im EEPROM gespeichert.&lt;br /&gt;
* Bugfix: Bei der manuellen Eingabe des aktuellen Datums/Uhrzeit im Webinterface wurde das Jahr bisher als &amp;quot;Zufallszahl&amp;quot; gespeichert, wenn der ESP8266 im AP-Modus läuft, weil kein WLAN vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.7 ====&lt;br /&gt;
&lt;br /&gt;
* URL-Fehler im Web-Interface korrigiert für Rainbow-Geschwindigkeit und Temperatur-Anzeige-Intervall&lt;br /&gt;
* Fehlende Berücksichtigung der Animation-Geschwindigkeiten in &amp;quot;Random&amp;quot; eingebaut&lt;br /&gt;
* Default-Werte für einstellbare Verzögerungen der Animationen auf WC12h verdoppelt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Drop&amp;quot;&lt;br /&gt;
* Neue Animation &amp;quot;Squeeze&amp;quot;&lt;br /&gt;
* Geschwindigkeitsregler für sämtliche Animationen&lt;br /&gt;
* Angaben von Favoriten für die Animationen, die dann bei der Random-Animation ausgewählt werden sollen&lt;br /&gt;
* Geschwindigkeitsregler für Rainbow - sowohl für Display als auch für Ambilight&lt;br /&gt;
* Angabe von Temperaturkorrekturen für DS18xx als auch für RTC in Schritten von 0,5°C bei Selbsterwärmung&lt;br /&gt;
* LED-Kalibrierung durch Messen vom dunkelsten und hellsten Wert manuell im Web-Interface möglich - ungetestet!&lt;br /&gt;
* Clock und Clock2 auf dem Ambilight laufen nun je nach Einstellung in der Display-Farbe oder selbstständig in der Ambilight-Farbe&lt;br /&gt;
* Temperatur-Anzeige auf der WC12h nun nicht mehr als Laufschrift, sondern durch zwei große Ziffern auf dem Display. Wenn die Temperatur xx,5°C und nicht xx,0°C beträgt, wird das &amp;quot;standesgemäß&amp;quot; auf der WC12h durch zwei leuchtende Minuten-LEDs angezeigt. Die Anzeige der Minuten-LEDs ist ungetestet.&lt;br /&gt;
* Angabe eines Intervalls, wie oft die Temperatur automatisch eingeblendet werden soll. Bei &amp;quot;1&amp;quot; wird die Temperatur einmal pro Minute eingeblendet, nämlich immer um hh:mm:30. Bei Angabe von z.B. &amp;quot;5&amp;quot; passiert das dann halt nur noch alle 5 Minuten. Wird 0 oder nichts eingegeben, wird keine Temperatur automatisch eingeblendet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.5 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation: &amp;quot;Matrix&amp;quot;.&lt;br /&gt;
* Bugfix: Fehler in Timerfunktion am Wochenende behoben.&lt;br /&gt;
* Bugfix: Fehlerhafte Offset-Berechnung in Ambilight-Animation &amp;quot;Clock2&amp;quot; korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ambilight leuchtete im Synchronmodus in Rainbow-Animation nach Abschalten durch Timer weiter. Die LEDs werden nun komplett abgeschaltet.&lt;br /&gt;
* Bugfix: Getrennte Helligkeitssteuerung des Ambilights wurde durch Helligkeitssteuerung des Displays beeinträchtigt. Nun sind beide Helligkeiten komplett unabhängig.&lt;br /&gt;
* Bugfix: Wenn die Uhr gem. Timer aus ist, liefen einige Animationen teilweise trotzdem alle 5 Minuten. Ist nun behoben.&lt;br /&gt;
* Bugfix: Keine Webserver-Kommunikation möglich, wenn der ESP-01 im AP-Modus ist und in der RTC die Uhrzeit noch nicht initialisiert wurde. Ist nun behoben.&lt;br /&gt;
* Neu: Anzeige von Laufschriften&lt;br /&gt;
* Ambilight: Sekundenzeiger nun auch für 20 oder 30 LEDs, die Zahl der Ambilight-LEDs ist nun im Webinterface konfigurierbar.&lt;br /&gt;
* Ambilight: Neue Sekundenanzeige mit zunehmendem/abnehmendem Vollkreis.&lt;br /&gt;
* Ambilight: Sekundenzeiger-Animationen: Start-LED nun über Webinterface konfigurierbar&lt;br /&gt;
* Web-Konfiguration: Erweiterung der Schieberegler um numerische Anzeige (zwecks besserer Reproduzierfähigkeit von RGB-Werten)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: einminütiges Abschalten des Displays nach Cube-Animation behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* Um unnötige Animationen zur vollen Minute bei der WC12h zu vermeiden, wird die DCF77-Zeit nun um hh:mm:15 verzögert ausgeliefert. Timeserver-Zugriffe pendeln sich im Laufe der Zeit auf hh:mm:30 (alle 3780 Sekunden) ein, RTC-Zugriffe werden jede Minute um hh:mm:45 ausgeführt.&lt;br /&gt;
* Power-Taste auf der IR-Fernbedienung kann nun beim Anlernen als Skip-Taste verwendet werden.&lt;br /&gt;
* DCF77-Messung: Die Zeit der vorherigen Minute wird nun als zusätzliche Plausibilitätsprüfung herangezogen&lt;br /&gt;
* Snake-Animation: Es werden nun gezielt die Wörter der alten Uhrzeit &amp;quot;gefressen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.1 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration von &amp;quot;ES IST&amp;quot;-Anzeige korrigiert: nun auch jede halbe Stunde.&lt;br /&gt;
* Bugfix bei der &amp;quot;ES IST&amp;quot;-Anzeige auf WC12h: Die Anzeige wird nun 5 Minuten lang beibehalten - und nicht nur ein Minute.&lt;br /&gt;
* Bugfix: Farbanimationen bzw. Ambilight-Animationen verhinderten das Abschalten des Ambilights bei Power-Off.&lt;br /&gt;
* Umgebungs-Helligkeitsmessungen werden nun nur noch durchgeführt, wenn keine Übergangs-Animation läuft.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs nun bei Verwendung eines Nucleo-Board gleich 100, sonst 60.&lt;br /&gt;
* Power-Off-Signal, um LED-Spannungsversorgung abzuschalten, nun beim Mini-Board (STM32F103) auf Pin PB0.&lt;br /&gt;
* Fading-Effekt durch kleinere Farbänderungsschritte verstärkt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Abschalten des Ambilights bei Power-Off-Befehl funktionierte bisher nicht.&lt;br /&gt;
* Bugfix: Ein-/Ausschalten der Spannungsversorgung für LED-Stripe.&lt;br /&gt;
* Anzeige des Wortes &amp;quot;UHR&amp;quot; zur vollen Stunde hinzugefügt - dort, wo es bisher fehlte. Betrifft nur WC24h.&lt;br /&gt;
* Neue Einstellung, ob &amp;quot;ES IST&amp;quot; permanent leuchten soll oder nur zur vollen Stunde.&lt;br /&gt;
* Verbesserung der Rainbow-Animation (Dank an Ralf Hammeran).&lt;br /&gt;
* Dynamische Anpassung der automatischen Helligkeitssteuerung an die Umgebungshelligkeit (Dank an Ralf Hammeran).&lt;br /&gt;
* Neue Übergangs-Animationen: &amp;quot;Snake&amp;quot;, &amp;quot;Teletype&amp;quot; und &amp;quot;Cube&amp;quot;.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs auf 60 Stück begrenzt, siehe auch Ambilight-Modus &amp;quot;Clock&amp;quot; (umlaufende Sekundenanzeige).&lt;br /&gt;
* Neue Seite &amp;quot;Ambilight&amp;quot; in der Web-Konfiguration.&lt;br /&gt;
* Neue Einstellung, ob Ambilight-Farben synchron zu den Display-Farben angepasst werden sollen oder separat gesteuert werden sollen.&lt;br /&gt;
* Neue separate Farbauswahl und Helligkeitssteuerung für Ambilight.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Clock&amp;quot;: Umlaufende Sekundenanzeige.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Rainbow&amp;quot;: Regenbogenfarben-Animation jetzt auch im Ambilight möglich.&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Automatischer Farbwechselmodus: Rainbow&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.9 ====&lt;br /&gt;
&lt;br /&gt;
* Stellen der Uhrzeit über Web-Interface&lt;br /&gt;
* Konfiguration über Web-Interface, ob ESP8266 im AP- oder WLan-Client-Modus arbeiten soll&lt;br /&gt;
* Einstellung SSID und Key für AP-Modus&lt;br /&gt;
* Steuerung der LED-Stripe-Spannungsversorgung (ungetestet)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.8 ====&lt;br /&gt;
&lt;br /&gt;
* Für WC12h kleineren Font (5x8) für Laufschriften zwecks besserer Lesbarkeit integriert&lt;br /&gt;
* Auswertung des Temperatur-Anzeige-Kommandos per Android App (ab Version 1.7.0)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.7 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler in der Wochentagsberechnung korrigiert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.6 ====&lt;br /&gt;
&lt;br /&gt;
* Verzögerte Reaktion der Minuten-LEDs (WC12h) bei Farbwechsel behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.5 ====&lt;br /&gt;
&lt;br /&gt;
* STM32F103 Mini Development Board: Abschalten des JTAGS, um PB3 u.a. als GPIO für z.B. [[IRMP]] nutzen zu können (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.4 ====&lt;br /&gt;
&lt;br /&gt;
* Korrektur der ESP8266 Flash-Pin-Definition für das STM32F103 Mini Development Board (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix bei der Temperatur-Anzeige: Es wurde immer die DS3231-Temperatur statt der DS128xx-Temperatur gezeigt&lt;br /&gt;
* Falsche Temperatur-Anzeige im Modus &amp;quot;Temperatur&amp;quot;&lt;br /&gt;
* Bezeichnungen der Anzeigemodi für WC24 gekürzt&lt;br /&gt;
* Manuelle Aktivierung des LDRs aus Weboberfläche entfernt. LDR-Messung ist nun immer aktiv, egal ob angeschlossen oder nicht&lt;br /&gt;
* Unterstützung des DCF77-Moduls wieder eingebaut&lt;br /&gt;
* Anzahl der Nachtschaltzeiten auf 8 erhöht - unter Berücksichtigung der Wochentage&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.2 ====&lt;br /&gt;
&lt;br /&gt;
* Hangup-Problem bei Aktivieren des LDRs beseitigt&lt;br /&gt;
* Neu: Nachtschaltzeiten in der Weboberfläche&lt;br /&gt;
* Optimierung des HTML-Code-Generators&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.1 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler bei HTTP-Get-Parameter-Übergabe von Leerzeichen in SSID behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Spezielle Firmware für ESP8266-Modul, da die Espressif-Firmware zu instabil ist und zu viele Varianten existieren&lt;br /&gt;
* Kommunikationsprotokoll an neue ESP-Firmware angepasst&lt;br /&gt;
* Direktes Flashen des ESP8266 in der WordClock-Schaltung über das verwendete STM32-Board&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderung: Damit das ESP8266-Modul direkt über das STM32-Board geflasht werden kann, ist die Verbindung ESP8266-GPIO0 zu STM32 PA4 herzustellen, siehe auch: [[WordClock_mit_WS2812#Anschluss_ESP8266|Anschluss ESP8266]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* [[MCURSES]]-Monitor durch [[WordClock_mit_WS2812#Web-Interface|WEB-Server]] ersetzt&lt;br /&gt;
* Laufschriften-Ausgabe der aktuellen IP-Adresse&lt;br /&gt;
* Kleinere Änderungen/Optimierungen&lt;br /&gt;
* DCF77-Decoder mangels Interesse/Notwendigkeit entfernt&lt;br /&gt;
* Laufschriften-Ausgabe auf dem LED-Display beim Anlernen einer IR-Fernbedienung&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* WordClock12h: Anzeige der Temperatur durch Laufschrift&lt;br /&gt;
* Neue Anschlusspins für TSOP und DS18xxx am STM32F103&lt;br /&gt;
* Optimierung des WS2812-DMA-Transfers für STM32F103&lt;br /&gt;
* Temperaturmessung mit DS3231, wenn kein DS18xx angeschlossen&lt;br /&gt;
* Umstrukturierung der C-Sources&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Problem beim Verbindungsaufbau Android App -&amp;gt; WordClock behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Unterstützung der &amp;quot;klassischen&amp;quot; WordClock12h mit 10x11 LEDs&lt;br /&gt;
* Anpassung der [[MCURSES]]-Monitor-Oberfläche an WordClock12h-Variante&lt;br /&gt;
* Portierung auf STM32F103 abgeschlossen (IDE-Projekt folgt mit 1.6.2)&lt;br /&gt;
* Zusätzliche Unterstützung von neueren [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Firmware-Versionen 1.0.1, 1.4.0 und 1.5.0.&lt;br /&gt;
* Optionales [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Debugging auf zusätzlichem USART - nur für Entwickler&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.9 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0&lt;br /&gt;
* Vergrößerung der UART-FIFOs&lt;br /&gt;
* Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration&lt;br /&gt;
* Überarbeitung der [[MCURSES]]-Monitor-Oberfläche&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.8 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben&lt;br /&gt;
* Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.7 ====&lt;br /&gt;
&lt;br /&gt;
* Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx&lt;br /&gt;
* Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt&lt;br /&gt;
* Anzahl der möglichen [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.6 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#ESP8266|ESP8266]] mit neuerer Firmware, welche \r\n statt \r erwartet&lt;br /&gt;
* Unterstützung von verschiedenen Baudraten des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Automatische Umschaltung von 9600Bd auf 115200Bd beim [[WordClock_mit_WS2812#ESP8266|ESP8266]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierungen im LED-Display-Code&lt;br /&gt;
* Diverse Anpassungen an STM32F103&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart&lt;br /&gt;
* Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anzeige der Firmware-Version des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls im [[MCURSES]]-Monitor&lt;br /&gt;
* Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.1 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelle Helligkeitsregelung per [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] eingebaut&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] nun über [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] ein-/ausschaltbar&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Die geladenen aus dem [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Initialisierung des ADC korrigiert&lt;br /&gt;
* Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]]&lt;br /&gt;
* Helligkeitsstufen von 32 auf 64 erhöht&lt;br /&gt;
* LED-Testprogramm eingebaut (Taste &#039;T&#039; im [[MCURSES]]-Monitor)&lt;br /&gt;
* Anzeige des [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Typs im [[MCURSES]]-Monitor)&lt;br /&gt;
* Unterstützung für Status-LED &#039;&#039;&#039;(beachte geändertes LED-Anschluss-Schema!)&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] an 64 Helligkeitsstufen angepasst&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Sporadisches Hangup-Problem nach Auslesen der Temperatur behoben&lt;br /&gt;
* Fehler bei der Erkennung des Family-Codes für [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] beseitigt&lt;br /&gt;
* Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus&lt;br /&gt;
* Optimierung des [[WordClock_mit_WS2812#WS2812|WS2812]]-Codes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Temperatursensoren&lt;br /&gt;
* Temperatur-Anzeige innerhalb +10°C und 39,5°C&lt;br /&gt;
* Korrektur Sommerzeitumstellung&lt;br /&gt;
* Keine Unterstützung mehr von STM32F4-Discovery&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* IRMP-Konfigurationsfehler behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Animationen hinzugefügt&lt;br /&gt;
* Neue Tabellen für Uhrzeit und Temperatur&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Test auf verschiedene Adressen des I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Speicherplatzverbrauch minimiert&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]] DS3231-Routinen auf DS1307 verallgemeinert&lt;br /&gt;
* Network Listener (UDP) zum Fernsteuern der Uhr über WLAN&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9.1 ====&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Hexdump im [[MCURSES]]-Monitor eingebaut&lt;br /&gt;
* Zusätzliche Waitstates beim Beschreiben des [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzlicher Anschluss von RST und CH_PD des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Verbesserung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Konfiguration dank Hardware-Reset&lt;br /&gt;
* Nutzung des Stromsparmodus im [[WordClock_mit_WS2812#ESP8266|ESP8266]], wenn die Anzeige abgeschaltet wird&lt;br /&gt;
* Konfiguration der Zeitzone über [[MCURSES]]-Monitor&lt;br /&gt;
* Test und Überarbeitung der [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] und [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Funktionen&lt;br /&gt;
* Synchronisation der [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Zeit mit dem µC-Timer&lt;br /&gt;
* Speichern folgender Daten im [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]:&lt;br /&gt;
&lt;br /&gt;
     EEPROM-Version&lt;br /&gt;
     IRMP-Daten einer angelernten IR-Fernbedienung&lt;br /&gt;
     Aktuell eingestellte Farben und Anzeigemodus&lt;br /&gt;
     IP-Adresse des Timeservers&lt;br /&gt;
     Zeitzone&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.8 ====&lt;br /&gt;
&lt;br /&gt;
* Neue IR-Fernbedienungs-Tasten POWER und OK&lt;br /&gt;
* Einbau einer konfigurierbaren &amp;quot;Nachtzeit&amp;quot;, in der sich die Uhr selbstständig abschaltet&lt;br /&gt;
* Konfiguration des Timeservers über [[MCURSES]]-Monitor&lt;br /&gt;
* Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM&lt;br /&gt;
* Initialisierung des [[WordClock_mit_WS2812#ESP8266|ESP8266]] verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)&lt;br /&gt;
* Aufteilung der Anzeige-Logik und des [[MCURSES]]-Monitors auf dsp.c und monitor.c&lt;br /&gt;
* Aufteilung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)&lt;br /&gt;
* Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t&lt;br /&gt;
* Diverse Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7.1 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F401RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
* uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)&lt;br /&gt;
* Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)&lt;br /&gt;
* Anzeige der Online-Devices ([[WordClock_mit_WS2812#ESP8266|ESP8266]], DCF77, EEPROM, [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]) im Terminal&lt;br /&gt;
* Verschiedene Optimierungen&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration des WLAN-Moduls (SSID &amp;amp; Key) nun über Terminal statt fest im Code verdrahtet.&lt;br /&gt;
* Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.&lt;br /&gt;
* DCF77- und [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.&lt;br /&gt;
* I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:WordClock-NODEMCU-Flasher.png&amp;diff=97857</id>
		<title>Datei:WordClock-NODEMCU-Flasher.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:WordClock-NODEMCU-Flasher.png&amp;diff=97857"/>
		<updated>2017-11-29T22:15:10Z</updated>

		<summary type="html">&lt;p&gt;Mockup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97856</id>
		<title>WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97856"/>
		<updated>2017-11-29T22:13:39Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Konfiguration des WLAN-Moduls */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist der Nachfolger der beiden Projekte [[Word_Clock]] und [[WordClock24h]]. Diese Projekte werden hier zusammengefasst und mit ein- und derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.&lt;br /&gt;
&lt;br /&gt;
Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden &#039;&#039;&#039;WordClock12h&#039;&#039;&#039; und die 24-Stunden-Variante &#039;&#039;&#039;WordClock24h&#039;&#039;&#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Zugehöriger Thread im Forum: https://www.mikrocontroller.net/topic/385955&lt;br /&gt;
&lt;br /&gt;
Tutorial zum Aufbau der WordClock: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WordClock12h und WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:wordclock-frontplatte-v2.png|400px|left|WordClock12h]] &lt;br /&gt;
|| [[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] als auch auf einem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:&lt;br /&gt;
&lt;br /&gt;
* Lauffähig auf STM32F401 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]], STM32F411 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]] und [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
* Anbindung eines [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls mit speziell abgestimmter Firmware&lt;br /&gt;
* WPS-Button zum schnellen Anbinden des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls an das vorhandene Netzwerk&lt;br /&gt;
* Konfiguration über [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]]&lt;br /&gt;
* Holen der Uhrzeit per NTP-Protokoll aus dem Internet&lt;br /&gt;
* Fernsteuerung über IR-Fernbedienung mittels [[IRMP]]&lt;br /&gt;
* Fernsteuerung per [[WordClock_mit_WS2812#Android_App|Android App]]&lt;br /&gt;
* Einstellen des Anzeigemodus (&amp;quot;Sprache&amp;quot;), Helligkeit und der Farbe per IR-Fernbedienung/App/Web&lt;br /&gt;
* Konfigurierbare Nachtschaltzeiten - d.h. automatisches Abschalten zur Nachtzeit, separat auch für das Ambilight&lt;br /&gt;
* Einspielen von MP3-Dateien zu bestimmten Ereignissen oder zu Alarmzeiten (Wecker) über optionalen Mini-DFPlayer&lt;br /&gt;
* Anbindung von LED-Stripes des Typs [[WordClock_mit_WS2812#WS2812|WS2812]] und [[WordClock_mit_WS2812#WS2812|WS2812B]]&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs APA102&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs SK6812 (RGBW-LEDs)&lt;br /&gt;
* Sanftes Überblenden der Uhrzeiten oder verschiedene Animationen bei Uhrzeitwechsel, z.B. &amp;quot;Explode&amp;quot; oder &amp;quot;Matrix&amp;quot;&lt;br /&gt;
* Farbanimationen, z.B. Automatischer Farbverlauf durch alle Regenbogenfarben (&amp;quot;Rainbow&amp;quot;)&lt;br /&gt;
* Anzeigen von teilweise animierten Piktogrammen an bestimmten Tagen wie Geburtstag/Weihnachten/Silvester etc.&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]] (optional)&lt;br /&gt;
* Anbindung einer externen DS3231-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]&lt;br /&gt;
* Anbindung eines externen I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]&lt;br /&gt;
* Optionaler Anschluss eines [[WordClock_mit_WS2812#DCF77|DCF77]]-Moduls&lt;br /&gt;
* Manuelles Stellen der Uhrzeit per [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]] oder [[WordClock_mit_WS2812#Android_App|Android App]], wenn kein Internet/DCF77 verfügbar&lt;br /&gt;
* Optionale Temperaturmessung und -Anzeige mit [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx-Sensor]]&lt;br /&gt;
* Optionale Wetteranzeige über openweathermap.org&lt;br /&gt;
* Separate Farbauswahl für Display und Ambilight&lt;br /&gt;
* Separat einschaltbares Ambilight mit auswählbaren Animationen: Keine, &amp;quot;Clock&amp;quot; (Umlaufende Sekundenanzeige) und &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
* Konfiguration einer &amp;quot;Zeitschaltuhr&amp;quot; für das Ambilight, um dieses zum Beispiel generell nachts abzuschalten&lt;br /&gt;
* Laufschriften - eigene Texte und Wettermeldungen&lt;br /&gt;
* Optionale Steuerung der Stromversorgung für die LED-Stripes&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; Einspielen von [[WordClock_mit_WS2812#Update|Updates]] für ES8266 ESP-12F und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; WCtris - Tetris Clone zum Spielen auf der Uhranzeige&lt;br /&gt;
&lt;br /&gt;
=== Geplante Features für Version 2.7.x ===&lt;br /&gt;
&lt;br /&gt;
* Änderung Programmlogik: Display-Timer soll nicht das Ambilight einschalten. Dieses geht über den Ambilight-Timer.&lt;br /&gt;
* Anzeige von Wetterdaten über Piktogramme, Einblendung automatisch zu konfigurierbaren Zeiten.&lt;br /&gt;
* Ausblenden einzelner LEDs bei animierten Piktogrammen&lt;br /&gt;
* Konfiguration der Anzeigedauer von Piktogrammen&lt;br /&gt;
* Automatische Helligkeit separat auch für Ambilight (alle Modi) - mit Offset-Regler im Vergleich zum Display&lt;br /&gt;
* Ambilight Mode Clock: Sekundenzeiger mit Fading über mehrere LEDs&lt;br /&gt;
* Ambilight Mode Clock: Farbe der 5-Sekunden-Marker einstellbar&lt;br /&gt;
* FIR-Filter für automatische Helligkeitsregelung.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Einstellung: In aktueller Displayfarbe oder in grün.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Ausblenden der Buchstaben per Strahl, Einblenden der Buchstaben durch 2. Strahl&lt;br /&gt;
* Snake Animation frisst nicht nur die alte Uhrzeit, sondern baut die neue Uhrzeit gleichzeitig oder in 2. Durchlauf hinter sich auf&lt;br /&gt;
* Angabe eines Ausgabeformats für die Datumsanzeige&lt;br /&gt;
* Anzeige des On-/Off-Zustands im Webinterface&lt;br /&gt;
* Harlekin-Farbanimation (jeder Buchstabe hat eine eigene Farbe)&lt;br /&gt;
* Jester-Modus (1. April): Unorthodoxe Anzeige am 1. April.&lt;br /&gt;
&lt;br /&gt;
=== Weitere geplante Features ===&lt;br /&gt;
&lt;br /&gt;
* Optional: Umgekehrte Logik zur Helligkeitssteuerung des Ambilights: Bei viel Umgebungslicht Dimmen des Ambilights, bei wenig Umgebungslicht die Helligkeit des Ambilights erhöhen.&lt;br /&gt;
* Webinterface: zusätzliche Infos, z.B. Link auf Liste der Timeserver.&lt;br /&gt;
* STM32-Logbook im Web-Interface&lt;br /&gt;
* Geburtstagsreminder: An einem Geburtstag scrollt der Name und das Alter zu einer vordefinierten Uhrzeit durch.&lt;br /&gt;
* Farbe von Ambilight und Display gesteuert nach Uhrzeit (z.B. von morgens rot nach abends blau)&lt;br /&gt;
* Optimierung der Rainbow-Animation für SK6812 (Weiß)&lt;br /&gt;
* Feinere Unterscheidungen bei Änderung der Display-Helligkeit über Schieberegler (ist momentan nur bei jedem zweiten Schritt erkennbar).&lt;br /&gt;
* Neue Animation &amp;quot;Implode&amp;quot;&lt;br /&gt;
* Animation Flicker: Zunächst die alte Uhrzeit flackern lassen, dann erst die neue. Also nicht beide zusammen.&lt;br /&gt;
* Mood-Light-Funktion&lt;br /&gt;
* Hintergrundfarbe/Helligkeit für Display bzw. Ambilight&lt;br /&gt;
* Vereinfachtes Bedienkonzept für IR-Fernbedienung&lt;br /&gt;
* Spiele wie TRON, SNAKE und PONG&lt;br /&gt;
* Default LDR-Werte für MIN und MAX auf 0 und 4095 (oder angepasster) ändern, wenn im EEPROM-Speicher für die Werte 0 und 0 erkannt wird. So funktioniert der LDR von vorn herein auch ohne kalibrieren und es werden Missverständnisse vermieden.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist unbedingt erforderlich, dass die passende ESP8266-Firmware zur STM32-Firmware eingespielt wird! Ältere ESP8266-Firmware-Versionen führen auf jeden Fall zu Fehlverhalten!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Regel ist dabei: Die STM32-Version muss mit der ESP8266-Firmware in den ersten beiden Ziffern A.B übereinstimmen, die dritte Ziffer C darf unterschiedlich sein.&lt;br /&gt;
&lt;br /&gt;
Aktuelle STM32-Version: &#039;&#039;&#039;2.7.0 vom 29.11.2017&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Aktuelle ESP-Version: &#039;&#039;&#039;2.7.1 vom 29.11.2017&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Momentan kann das SVN nicht aktualisiert werden, daher sind die Sources noch auf Stand 2.6.6!&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EmBitz-Projekt:&#039;&#039;&#039; || [https://www.mikrocontroller.net/svnbrowser/wordclock24h/?view=tar Tarball]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SVN hier auf µc.net:&#039;&#039;&#039;|| svn://mikrocontroller.net/wordclock24h/&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repo-Browser&#039;&#039;&#039;:|| [http://www.mikrocontroller.net/svnbrowser/wordclock24h/ WordClock24h im SVN]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Hex- und Bin-Dateien, wenn man - ohne zu compilieren - direkt flashen will:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%&amp;quot; | Firmware !! style=&amp;quot;width:8%&amp;quot; | Version !! style=&amp;quot;width:10%&amp;quot; | Datum !! style=&amp;quot;width:30%&amp;quot; | Datei&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock STM32 Firmware&#039;&#039;&#039; alle Varianten          || [[WordClock_mit_WS2812#STM32_WordClock_Software|2.7.0]] || 03.06.2017 || [[Datei:Wordclock-hex.zip]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-01 Firmware&#039;&#039;&#039;                          || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.0]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-512K.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-12F Firmware&#039;&#039;&#039;                  || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.1]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-4M.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App|Android App]]&#039;&#039;&#039; || &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App_2|2.6.6]]&#039;&#039;&#039; || 15.06.2017 || [[Datei:WC24h.apk]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WCTris Windows-Console-Programm&#039;&#039;&#039;                  || 2.6.0 || 11.03.2017 || [[Datei:Wctris.zip]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, wird hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]&lt;br /&gt;
&lt;br /&gt;
Wie man die App unter Android installiert, kann man hier nachlesen:&lt;br /&gt;
&lt;br /&gt;
http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html&lt;br /&gt;
&lt;br /&gt;
Am einfachsten erlaubt man die Installation von Apps &amp;quot;aus unbekannten Quellen&amp;quot; und klickt anschließend direkt auf dem Android-Gerät auf den [[WordClock_mit_WS2812#Download|Download]]-Link. Dann kann man das Programm direkt nach dem Download installieren.&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Varianten ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Hardware-Varianten unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Uhrenanzeige WC24h und WC12h&lt;br /&gt;
* Mikrocontroller: STM32F103 (Mini-Development Board), STM32F401 (Nucleo) und STM32F411 (Nucleo)&lt;br /&gt;
* LED-Streifen: WS2812-GRB, WS2812-RGB, SK6812-RGB, SK6812-RGBW und APA102&lt;br /&gt;
&lt;br /&gt;
Für jede dieser Kombinationen gibt es eine spezielle Hex-Datei zum Flashen des STM32. Der Dateiname setzt sich aus den oben genannten drei Teilen zusammen.&lt;br /&gt;
&lt;br /&gt;
* 1. Teil: wc12h oder wc24h&lt;br /&gt;
* 2. Teil: stm32f103, stm32f401 oder stm32f411&lt;br /&gt;
* 3. Teil: ws2812-grb, ws2812-rgb, sk6812-rgb, sk6812-rgbw oder apa102&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich folgende Dateinamen:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Firmware Varianten&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | Controller || style=&amp;quot;width:30%&amp;quot; | Dateiname || style=&amp;quot;width:40%&amp;quot; | Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F103&#039;&#039;&#039; || wc12h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F401&#039;&#039;&#039; || wc12h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F411&#039;&#039;&#039; || wc12h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F103&#039;&#039;&#039; || wc24h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F401&#039;&#039;&#039; || wc24h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F411&#039;&#039;&#039; || wc24h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu beachten: Die normalen WS2812-LED-Streifen benutzen die Farbreihenfolge GRB (Grün-Rot-Blau)!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Software für Windows ===&lt;br /&gt;
&lt;br /&gt;
Die Software zum Flashen des Programms:&lt;br /&gt;
&lt;br /&gt;
* ST-Link/V2 , siehe: http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; (nicht Nucleo!) auch über UART geflashed werden. Dann braucht man keinen ST-Link und verwendet folgende Software: http://www.st.com/web/en/catalog/tools/PF257525&lt;br /&gt;
&lt;br /&gt;
Alternativer Link:&lt;br /&gt;
&lt;br /&gt;
http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html&lt;br /&gt;
&lt;br /&gt;
Zum Flashen des &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; über &#039;&#039;&#039;UART&#039;&#039;&#039; muss beim Einschalten des STM Boot0 über einen Jumper auf „1“ gesetzt sein. Bei Verwendung eines ESP8266-ESP12F-WLAN-Moduls ist aber der mittlere Anschluss von Boot0 schon durch eine Drahtverbindung für das OTA-Flashen belegt – deshalb wird für das Flashen ein &#039;&#039;&#039;ST-Link-Adapter&#039;&#039;&#039; über die SWD-Schnittstelle des STM32MiniBoard &#039;&#039;&#039;empfohlen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Software für das Flashen über UART wird auch zum Aufspielen der ESP8266 Firmware des WLAN-Moduls benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchte man die Sources selber übersetzen:&lt;br /&gt;
&lt;br /&gt;
* EmBitz IDE, siehe https://www.embitz.org/&lt;br /&gt;
&lt;br /&gt;
Möchte man die Debug- und Log-Meldungen als Entwickler oder zur Diagnose verfolgen, braucht man noch&lt;br /&gt;
&lt;br /&gt;
* STM32 Virtual COM Port Driver: http://www.st.com/web/en/catalog/tools/PF257938 für das Nucleo-Board&lt;br /&gt;
* oder einen zusätzlichen USB-UART Adapter nebst Treiber für das STM32F103 Mini Development Board&lt;br /&gt;
* PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder andere Terminal-Emulation&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Quellcode selbst übersetzen ===&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist nur notwendig, wenn man an den Quellen etwas ändern möchte. Im Normalfall braucht man lediglich eine der oben im [[WordClock_mit_WS2812#Download|Download]]-Kapitel angegebenen Hex-Dateien auszuwählen und diese auf den Prozessor flashen.&lt;br /&gt;
&lt;br /&gt;
Wenn man an dem Programm etwas ändern oder erweitern möchte, dann startet man die zuvor installierte EmBitz-IDE. Aus dem SVN lädt man sich den Tarball (Link siehe Kapitel [[WordClock_mit_WS2812#Download|Download]]) und entpackt diesen unter C:\EmBitzProjects.&lt;br /&gt;
&lt;br /&gt;
Nach dem Entpacken findet man dann im Unterverzeichnis wclock24h die Projekt-Datei &#039;&#039;&#039;wclock24h.ebp&#039;&#039;&#039;, um den Quellcode für ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zu compilieren. In der EmBitz-Ide kann man nun mit &#039;&#039;&#039;File -&amp;gt; Open&#039;&#039;&#039; die Projekt-Datei laden.&lt;br /&gt;
&lt;br /&gt;
Möchte man jedoch den Quellcode für das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Board]] übersetzen, dann lädt man die Projektdatei &#039;&#039;&#039;wclock24h-F103.ebp&#039;&#039;&#039; aus dem Unterverzeichnis &#039;&#039;&#039;wclock24h-F103&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Anschließend wählt man in der oberen Zeile in der Mitte das Ziel aus, wofür man den Quellcode übersetzen möchte.&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]]-Projekt werden folgende Alternativen angeboten:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo401-Debug&lt;br /&gt;
* WC24h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo411-Debug&lt;br /&gt;
* WC24h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo401-Debug&lt;br /&gt;
* WC12h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo411-Debug&lt;br /&gt;
* WC12h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
In der F103-Projektdatei können folgende Varianten ausgewählt werden:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-STM32F103-Debug&lt;br /&gt;
* WC24h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-STM32F103-Debug&lt;br /&gt;
* WC12h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
Die Debug-Varianten sind lediglich für die Bugsuche im Programm vonnöten. Es empfiehlt sich daher im Normalfall, die entsprechende Release-Variante auszuwählen.&lt;br /&gt;
&lt;br /&gt;
Nach der Auswahl kann man dann unter &#039;&#039;&#039;Build -&amp;gt; Rebuild all target files&#039;&#039;&#039; den Übersetzungsvorgang starten. Danach findet man im Unterverzeichnis bin\\Release die dazugehörige Hex-Datei mit dem ST-Link-Programm dann auf dem Ziel geflasht werden kann. Das wars!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== STM32F103C8T6 Mini-Development Board ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Dieses Board wird für die &amp;quot;klassische&amp;quot; 10x11 WordClock12h empfohlen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein kleines, platzsparendes Board mit ausreichendem 32Bit-Mikrocontroller. Der STM32F103C8T6 hat 64 KB Flash und 20KB RAM. Bei ebay ist er für kleines Geld (unter 4 EUR) zu haben: Einfach dort nach &amp;quot;STM32F103C8T6&amp;quot; suchen. Die Anbieter sind meist in China. Aber es gibt auch Anbieter aus Deutschland, wo das bestellte Board dann auch schon nach 2 Tagen im Briefkasten steckt. Meist sind die deutschen Anbieter aber etwas teurer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während die [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Boards]] bereits den &amp;quot;Programmer&amp;quot; ST-Link-V2 zum Programmieren des Flashs on-Board haben, ist dies hier nicht der Fall. Hier muss ein separates ST-Link-V2 zum einmaligen Programmieren verwendet werden. Hat man schon ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zuhause, kann der darauf befindliche ST-Link verwendet werden. Oder man beschafft sich einen eigenen Programmer. Bei eBay erhält man sie bereits im einstelligen Euro-Bereich, wenn man nach &amp;quot;ST-Link V2&amp;quot; sucht.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieses Boards gegenüber dem Nucleo ist der geringe Platzbedarf. Rechts sind der Anschluss eines ST-Link V2-Clones zum Flashen und die Anschluss-Skizze der WordClock an das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] zu sehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei den Shields ab V3 für das STM32-Mini-Development Board muss noch eine Drahtbrücke eingelötet werden: Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss über eine Drahtbrücke mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32F103C8T6.png|miniatur|STM32F103C8T6 Mini-Development Board]]&lt;br /&gt;
[[Datei:STM32F103C8T6 MiniDevBoard Schematic.png|mini|MiniDevBoard Schaltplan]]&lt;br /&gt;
[[Datei:STM32F103 MiniBoard STLink.jpg|mini|Flashen per ST-Link V2-Clone]]&lt;br /&gt;
[[Datei:WC_MiniDev_Shield_v4_Drahtbruecke.jpg|mini|Drahtbrücke zu BOOT0]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STM32F401RE Nucleo und STM32F411RE Nucleo ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Es kann sowohl das 401er als auch das 411er [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] verwendet werden. Beide werden identisch genutzt.&lt;br /&gt;
&lt;br /&gt;
Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte man die überstehenden Enden der Steckerleisten auf der &#039;&#039;&#039;Unterseite&#039;&#039;&#039; mit einer Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil) können dabei auf die Oberseite gesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile vier verschiedene Revisionen von den Nucleo-Boards:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;MB1136 C01&amp;quot;: Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator&lt;br /&gt;
* &amp;quot;MB1136 C02 bis C04&amp;quot;: Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Device&lt;br /&gt;
&lt;br /&gt;
Damit auch das Board mit der Revision &amp;quot;MB1136 C01&amp;quot; zuverlässig im HSE-Modus mit 84MHz läuft, sind folgende Hardware-Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
* Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)&lt;br /&gt;
* Lötbrücken SB16 und SB50 entfernen (dito)&lt;br /&gt;
* R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken&lt;br /&gt;
* Quarz X3 (8 MHz) einlöten&lt;br /&gt;
* C33 und C34 mit jeweils 22pF bestücken.&lt;br /&gt;
&lt;br /&gt;
C33 und C34 können auch normale THT-Bauteile sein, wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-Anschlüssen angebracht und mit einem Draht zu CN6, Pin7 (GND) die nötige Masseverbindung hergestellt, siehe Foto rechts. &lt;br /&gt;
&lt;br /&gt;
Es geht aber auch auf der Oberseite direkt an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren. In diesem Falle ist die Masseverbindung bereits im PCB Layout vorhanden und die Drahtbrücke nach CN6, Pin7 (GND) entfällt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 &amp;amp; R37 einlöten, bevor man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision &amp;quot;MB1136 C02&amp;quot; und höher durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.&lt;br /&gt;
&lt;br /&gt;
Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene stellt also den gewünschten Endzustand dar.&lt;br /&gt;
&lt;br /&gt;
Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das Board (nach dem Abtrennen des ST-Link) über die Stiftleiste mit Spannung versorgt werden kann (z.B. durch das Nucleo-Shield), muss &amp;quot;JP5&amp;quot; noch von &amp;quot;U5V&amp;quot; auf &amp;quot;E5V&amp;quot; umgesteckt werden.&lt;br /&gt;
(Zusätzlich auf dem ST-Link &amp;quot;JP1&amp;quot; entfernen, falls noch nicht abgetrennt.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bevor man den ST-Link-Teil abtrennt&#039;&#039;&#039;, sollte man den &#039;&#039;&#039;STM32F4xx und das ESP8266-Modul flashen&#039;&#039;&#039; und auch testen. Nach dem Abtrennen werden dann Updates über OTA geflasht.&lt;br /&gt;
|| [[Datei:WC24h-Nucleo-Oberseite.jpg|miniatur|Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Unterseite.jpg|miniatur|Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Shield.jpg|miniatur|Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für EEPROM/RTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TSOP31238 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zum optionalen Steuern per IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32F411_Nucleo_Board|Nucleo-Shield]]:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an GND, TSOP-Pin2 an 3V3, TSOP-Pin3 an Data&lt;br /&gt;
&lt;br /&gt;
Dabei wird zusätzlich ein Tiefpassfilter (C/R) - wie auch im Datenblatt angegeben - verwendet.&lt;br /&gt;
 &lt;br /&gt;
Es kann auch der kleinere Bruder TSOP4838 angeschlossen werden. Dieser hat den Vorteil, dass er besser hinter einem &amp;quot;Loch&amp;quot; im Zwischenboden untergebracht werden kann, weil er einfach vom Gehäuse her kleiner ist. Allerdings ist dann die Anschlussreihenfolge anders:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an DATA, TSOP-Pin2 an GND, TSOP-Pin3 an 3V3&lt;br /&gt;
&lt;br /&gt;
Der TSOP4838 kann also nicht direkt 1:1 an einem der beiden Shields angeschlossen werden. Da aber sowieso ein 3-poliges Kabel an die Pin-Header geführt wird, sollte das kein Problem sein.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP.png|miniatur|Schaltplan]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP.png|miniatur|Anschluß des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Wird kein IRMP-Empfänger benutzt, sollte R5 (siehe Schaltplan rechts) mit 100k Ohm statt 100 Ohm auf dem Shield bestückt werden. Der zum Tiefpass gehörende Kondensator C1 entfällt dann. Zwischen den Pins 3V3 und Data wird schlussendlich eine Drahtbrücke eingelötet, um einen stabilen Zustand am Daten-Pin des µCs zu gewährleisten.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Ab der Shield Version 4 wird ohne TSOP R5/C1 nicht bestückt und stattdessen R15 (NucleoShield) bzw R16 (MiniDevShield) mit 100k bestückt. Damit wir ein stabilen Zustand am Daten-Pin des µCs gewährleistet.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:TSOP_v4.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WS2812 ==&lt;br /&gt;
Bei der WordClock24h wird eine 16x18-Matrix verwendet plus eine Status LED, bei der WordClock12h eine 10x11-Matrix plus 4 Stück Minuten LED.&lt;br /&gt;
&lt;br /&gt;
Die [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs werden dabei folgendermaßen verdrahtet:&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock12h ====&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Spezialanfertigung von WS2812-Stripes eingesetzt - nämlich mit einem Rastermaß von 28,1mm. Damit ist die WordClock12h von den Maßen her kompatibel zum bisherigen [[Word_Clock]]-Projekt. Das hat den Vorteil, dass bisherige Frontplatten und Zwischenböden weiterverwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Bei der Wordclock12h steht jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;. Folgende Zeichnung ist von der Vorderseite der Uhr aus gesehen, beim Verkabeln von Hinten muss man es natürlich gedanklich umdrehen.&lt;br /&gt;
&lt;br /&gt;
          M4                                                    M1&lt;br /&gt;
           O---------+              µC Data --------------------O&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         1  2  3  4  ...              11            |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |                                          |         |&lt;br /&gt;
           |        22                            12  |         |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--          |&lt;br /&gt;
           |       23 24 ....                                   |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           O----------------------------------------------------O&lt;br /&gt;
          M3                                                    M2&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Dabei sind M1-M4 die 4 Minutenpunkte in den Ecken. Es wird keine Status-LED wie bei der WordClock24 verwendet. Tatsächlich werden hier dafür die Minutenpunkte zur zusätzlichen Statusausgabe mitbenutzt.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board und beim STM32-Mini-Board werden bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt (ab Software-Version 2.6.6). Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 114 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
|| [[Datei:LEDS-Datakabel.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock24h ====&lt;br /&gt;
Verwendet werden Standard-WS2812-Stripes mit &#039;&#039;&#039;60 LEDs pro Meter&#039;&#039;&#039;. Dabei steht - wie bei der WC12h - jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
               +-------------------------------------------------------+&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               1  2  3  4  ...                              18         |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
                                                               |       |&lt;br /&gt;
               36                                       20  19 |       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--        |&lt;br /&gt;
              37 38 ....                                               |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                  Status-LED                           |&lt;br /&gt;
  µC Data -----------------------------O-------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch für die WC24h gilt: Beim (für die WC24 primär empfohlenen) Nucleo-Board und beim (ebenfalls für die WC24h nutzbaren) STM32-Mini-Board werden ab Software-Version 2.6.6 bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 289 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== WS2812-Anschlüsse am Shield ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Der DI-Eingang des LED-Streifens wird per möglichst kurzem Kabel am WS2812-Pin des Shields verbunden, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
In seltenen Fällen kommen die WS2812-LEDs mit einem 3,3V-Pegel an ihrem Eingang nicht zurecht. Die Folge sind dann Falsch-Farben bzw. Ausfälle bei einzelnen LEDs. Für diesen Fall ist auf den Shields ab Version v3 zwischen DI und 5V ein 1k8 Pullup-Widerstand angebracht. Die STM32-Software erkennt beim Boot den Pullup-Widerstand automatisch und schaltet dann den Daten-Ausgang auf Open-Drain-Betrieb um. Damit ist dann der High-Pegel an der ersten angeschlossenen LED nahezu 5V statt 3,3V.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812.png|miniatur|Data Anschluss WS2812 auf Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Jede zweite Reihe (1., 3., 5. usw.) der Streifen wird per Flachbandkabel an die Spannungsversorgung der WS2812-Streifen angeschlossen. Dafür dient der Flachbandkabel-Stecker auf dem Shield. Hier werden 16 mal jeweils +5V und GND zur Verfügung gestellt, siehe nebenstehendes Bild.&lt;br /&gt;
Die 1 und damit die obere Reihe ist 5V, die 2 und damit untere Reihe GND.&lt;br /&gt;
Werden zusätzlich Ambilight LED verwendet, wird ebenfalls jede Seite separat an die Spannungsversorgung angeschlossen um den Spannungsabfall entgegenzuwirken.&lt;br /&gt;
&lt;br /&gt;
Bei der WC12 können dazu die 6 noch freien Pin Pärchen des Pfostensteckers genutzt werden. Bei der WC24h muss die Spannung anderweitig abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812-Power.png|miniatur|Spannungsversorgung der WS2812 auf dem Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DS18xx ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Optional:&#039;&#039;&#039; [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] als Temperatur-Sensor&lt;br /&gt;
&lt;br /&gt;
Es werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
* DS1820&lt;br /&gt;
* DS18S20&lt;br /&gt;
* DS1822&lt;br /&gt;
* DS18B20&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DS18xx-GND (Pin 1) an GND&lt;br /&gt;
* DS18xx-DQ  (Pin 2) an B5 (Mini) bzw. D2 (Nucleo)&lt;br /&gt;
* DS18xx-VDD (Pin 3) an 3V3&lt;br /&gt;
&lt;br /&gt;
Ein 4,7k Pullup-Widerstand ist zum sicheren Betrieb des One-Wire-Busses auf den Shields vorgesehen. &lt;br /&gt;
Der DS18xx sollte nicht in der Nähe von Wärmequellen angebracht werden, am besten also nicht direkt an das Shield löten, sondern in der unteren Tasche des Zwischenbodens anbringen. Die Litze am DS18XX dabei, z.B. mit Hilfe von Schrumpfschlauch, isolieren, damit es nicht zum Kurzschluss am Kühlkörper kommen kann.&lt;br /&gt;
Weiterhin wird aufgrund der geringen Eigenerwärmung der DS18XX Sensoren empfohlen, den Sensor mit Wärmeleitpad/-kleber auf ein kleines Kühlblech zu kleben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ist kein DS18xx Temperatur-Sensor angeschlossen, wird die Temperatur über die RTC (DS3231) ermittelt.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DS1820.png|miniatur|DS1820 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mini-DFPlayer ==&lt;br /&gt;
&lt;br /&gt;
Mit dem optionalen Mini-DFPlayer können als Reaktion auf bestimmte Ereignisse oder zu bestimmten Uhrzeiten MP3-Dateien abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nucleo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB6 (STM324xx TX ALT1)&lt;br /&gt;
* DFPlayer TX an PB7 (STM324xx RX ALT1)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mini-Shield:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB10 (STM32F103 TX)&lt;br /&gt;
* DFPlayer TX an PB11 (STM32F103 RX)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse Quellen im Internet, welche aussagen, dass eine Betriebsspannung von 4,3V wegen des Klangs sinnvoller wäre. Das kann man mit einer Si-Diode in der Zuleitung lösen.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: http://stonez56.blogspot.de/2015/03/arduino-dfplayer-mini-mp3-module.html&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: &#039;&#039;&#039;[[WordClock_mit_WS2812#DFPlayer|Konfiguration DFPlayer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LDR ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: Fotowiderstand (LDR) zur Lichtstärkenmessung, welche die Leuchtstärke der LEDs in Abhängigkeit des Umgebungslichtes automatisch steuert.&lt;br /&gt;
&lt;br /&gt;
Als LDR sollte der LDR07 von Reichelt, ggf. der Ersatz &amp;quot;A 906011&amp;quot; verwendet werden. Wird noch der zwischenzeitlich empfohlene &amp;quot;A 906032&amp;quot; von Reichelt eingesetzt, ist R1 = 10K besser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird kein [[WordClock_mit_WS2812#LDR|LDR]] benutzt, muss auf dem Shield der 10k-Pullup (R2) eingelötet werden, R1 wird dann nicht bestückt.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird der LDR benutzt, darf der Widerstand R2 nicht eingelötet werden!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-LDR.png|miniatur|Schaltplan LDR am Mini-Shield]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-LDR.png|miniatur|LDR-Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DCF77 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: DCF77 Modul&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DCF77 GND an GND&lt;br /&gt;
* DCF77 V+ an 3,3V&lt;br /&gt;
* DCF77 Out an Data&lt;br /&gt;
* DCF77 PON an PON&lt;br /&gt;
&lt;br /&gt;
Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein befriedigendes Empfangsverhalten hat. PON kann beim Reichelt-Modul offen bleiben, beim Pollin DFCF77-1 sollte man PON jedoch anschließen.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang verwendet, muss an Data noch ein 100k Pullup (zu 3,3V) angeschlossen werden.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DCF77.png|miniatur|DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Wird KEIN DCF-Modul verwendet, muss der 100k Widerstand R3 eingelötet werden, um den µC-Eingang auf stabilem Niveau zu halten - aber nur dann! Die sonstigen Komponenten auf dem nebenstehenden Schaltplan entfallen ersatzlos.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-DCF77.png|miniatur|Schaltplan DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ESP8266 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Ab der Software-Version 2.5.0 ist das Aktualisieren der ESP- und STM32-Firmware auch über OTA (&amp;quot;over the air&amp;quot;, also WLAN) möglich. Damit entfällt ein erneutes Anschließen der Uhr an entsprechende Programmiergeräte bei einem Update. Allerdings müssen dafür die bisher eingesetzten ESP8266 ESP-01 durch ein ESP-12F ersetzt werden. Deshalb wird generell ab der Version v3 der Nucleo- bzw. Mini-Shields das ESP8266 ESP-12F Modul statt ESP-01 verwendet. &lt;br /&gt;
&lt;br /&gt;
Es werden nun 2 USARTs vom STM32 benutzt: Das erste für die Kommunikation der beiden µCs zum Datenaustausch, das zweite zum Flashen des STM32 über OTA. Die Bedienung von 2 USARTs des STM32 geschieht durch eine Software-Umschaltung der ESP-UART-Pins.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Nucleo-Shield-ESP-12F.png|180x128px|miniatur|ESP-12F an Nucleo-Shield]]&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-ESP-12F.png|187x122px|miniatur|ESP-12F an Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Die User-Taste wird für mehrere Funktionen genutzt.&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist sie bereits vorhanden. Sie ist blau und mit &amp;quot;User&amp;quot; beschriftet. Wird das Mini-Development-Board benutzt, ist die Taste auf dem dazugehörenden Shield (ab v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] ist die Taste nicht vorhanden, sondern lediglich als Jumper-Pin mit der Bezeichnung &amp;quot;Flash&amp;quot; (PA6) vorhanden. Hier kann man entweder eine Taste anschließen oder mit einem Jumper den Flash-Pin mit dem danebenliegenden Pin &amp;quot;GND&amp;quot; kurzschließen, was derselben Funktion entspricht.&lt;br /&gt;
&lt;br /&gt;
Die User-Taste wird für zwei Fälle benutzt:&lt;br /&gt;
&lt;br /&gt;
* Im Reset-Zustand des STM32 zum Flashen des ESP8266 über UART&lt;br /&gt;
* Im Betriebszustand zum Versetzen des ESP8266 in den AP-Modus mit SSID &amp;quot;wordclock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Funktionen werden in den Kapiteln &#039;&#039;&#039;[[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Flash des WLAN-Moduls]]&#039;&#039;&#039; und &#039;&#039;&#039;[[WordClock_mit_WS2812#Start_als_Access-Point|Start als Access-Point]]&#039;&#039;&#039; näher erläutert.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WPS-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ab Software-Version 2.6.0 wird auch WPS unterstützt. Dann kann die Verbindung des ESP8266 über diese Taste vorgenommen werden. Ab der Shield-Version v3 ist dafür eine eigene Taste auf den Shields vorgesehen. Ältere Shields kann man aber auch nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Dazu schließt man an:&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|STM32F4xx Nucleo]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PC5&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103C8T6 Mini-Development Board]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PA7&lt;br /&gt;
&lt;br /&gt;
Wie dann die Verbindung zum WLAN-Gateway aufgebaut wird, ist hier beschrieben: [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]].&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RTC und EEPROM ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
I2C-Modul mit DS3231 als RTC und EEPROM&lt;br /&gt;
&lt;br /&gt;
Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als Suchbegriff &amp;quot;DS3231 EEPROM&amp;quot; eingibt. Es wird als Echtzeituhr und für die Speicherung der Konfigurationsparameter verwendet. Ist kein DS18xx als Temperatursensor angeschlossen, wird die RTC auch zur Temperaturmessung genutzt.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* 32K Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SQW Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SCL an SCL&lt;br /&gt;
* SDA an SDA&lt;br /&gt;
* VCC an 3V3&lt;br /&gt;
* GND an GND&lt;br /&gt;
&lt;br /&gt;
Von der Software werden auch ältere [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC/EEPROM]]-Module mit DS1307 erkannt, dennoch sollte man aus Kompatibilitätsgründen auf die Verwendung dieser älteren Module verzichten.&lt;br /&gt;
&lt;br /&gt;
Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich&lt;br /&gt;
genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.&lt;br /&gt;
      &lt;br /&gt;
Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-IC bestückt, dann kann man auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss das Modul aber mit +5V statt 3,3V betreiben, damit der Akku überhaupt geladen wird. Sonst ist er aufgrund der Selbstendladung irgendwann leer.&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollte man das Modul eher mit einer CR2032 Batterie betreiben. &#039;&#039;&#039;Dann sollte man aber sicherheitshalber die Diode oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild), damit keine Ladung (und Überhitzung) der Batterie passiert&#039;&#039;&#039;. Das ist zwar eigentlich erst ab einer Betriebsspannung von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht eine CR2032 Batterie für 5-10 Jahre.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h-DS3231-EEPROM.png|miniatur|DS3231 RTC + EEPROM]]&lt;br /&gt;
 [[Datei:WC-Mini-Shield-I2C.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMS1117-3,3V-Spannungsregler-Modul ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur 3,3V-Versorgung des ESP8266-WLAN- Moduls sowie weiterer Peripherie wird ein AMS1117-3,3V-Spannungsregler-Modul eingesetzt. Die Shields aus der Sammelbestellung sind für die Spannungsregler-Module wie in der Abbildung rechts ausgelegt. Beispiele für Bezugsquellen sind in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Die leuchtende rote LED (D1) zeigt an, das die Ausgangsspannung von 3,3V vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:AMS1117-Spannungsregler-Modul.jpg|miniatur|AMS1117-Spannungsregler-Modul]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-AMS1117.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Schalten der 5V-Versorgungsspannung für die LED-Stripes ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Beim Abschalten der LED-Stripes kann neben den Daten, wenn gewünscht, auch die 5V-Versorgungsspannung abgeschaltet werden. Je nach Zahl des LEDs sinkt der Verbrauch um 1 W bis 2 W (--&amp;gt; ca. 3 - 5 EUR im Jahr). Ansonsten wird dem Controller auf den WS2812 nur mitgeteilt, dass gerade alle Kanäle aus sein sollen.&lt;br /&gt;
&lt;br /&gt;
Die Abschaltung der Versorgungsspannung erfolgt dann mit Hilfe der im Schaltplanauszug rechts gezeigten Bauteile. Die Diode begrenzt die Spannung an D IN auf 0,3 V, falls bei abgeschalteter Versorgungsspannung Datenimpulse anliegen – das wird auch durch die Software verhindert. &lt;br /&gt;
&lt;br /&gt;
Ab V3 der Shields muss bei Nichtverwendung der Spannungsabschaltung eine Drahtbrücke eingelötet werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WS2818_Schalten_1.png|miniatur|Schaltplanauszug: Schalten Versorgungsspannung]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Netzteil ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur Spannungsversorgung der WordClock wird ein (Stecker-)Netzteil mit einer Ausgangsspannung von 5V und einer Belastbarkeit von 4A benötigt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt – vergleichbare Netzteile anderer Lieferanten wie eBay oder AliExpress usw. können ebenfalls verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, schon vor der Inbetriebnahme der WordClock die Ausgangsspannung des Netzteils zu messen, da in seltenen Fällen die Ausgangsspannung des Netzteils höher ist als die für die WS2812B-LEDs maximal zulässige Spannung von 5,3V.&lt;br /&gt;
&lt;br /&gt;
Für eine Wordclock12h ohne Ambilight reicht ein Netzteil mit einer Belastbarkeit von 2A.&lt;br /&gt;
&lt;br /&gt;
Der Querschnitt der Verkabelung vom Netzteil zur WordClock ist so zu wählen, dass an den Anschlussklemmen des Shields auch bei angeschalteten LEDs eine Spannung von mindestens 4,75V anliegt. &lt;br /&gt;
&lt;br /&gt;
Bei einer WordClock12h ohne Ambilight und einer Kabellänge 2m reicht ein Querschnitt von 2x0,5mm². &lt;br /&gt;
&lt;br /&gt;
Der für eine WordClock24h, ggf. mit Ambilight, notwendige Querschnitt kann mit einem Tool wie z. B.&lt;br /&gt;
 &lt;br /&gt;
https://www.opendcc.de/info/verdrahtung/wiring.html &lt;br /&gt;
&lt;br /&gt;
abgeschätzt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wer nicht über entsprechende Kenntnisse und Erfahrungen im Umgang mit 230V-Netzspannung verfügt, sollte unbedingt ein Stecker- oder Tischnetzteil verwenden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschluss USB-UART-Adapter ==&lt;br /&gt;
&lt;br /&gt;
Man benötigt in folgenden Fällen einen USB-UART-Adapter:&lt;br /&gt;
&lt;br /&gt;
* Logging der Meldungen auf dem PC&lt;br /&gt;
* Flashen des ESP8266 über das verwendete STM32-Board&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo ist ein USB-UART-Adapter bereits integriert - und zwar im oberen ST-Link-V2-Teil des Boards. Hier ist also kein weiterer Anschluss notwendig. Erst wenn das ST-Link-V2-Teil vom Rest des Boards abgetrennt wird, müssen RX und TX wieder verbunden werden, wenn man den UART-Adapter nutzen will. Also einfach das Board mit dem PC über USB verbinden - fertig. Eventuell muss man noch den STM32 Virtual COM Port Driver installieren. Der entsprechende Link zum Herunterladen steht unter [[WordClock_mit_WS2812#Download|Download]].&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board wird ein externer USB-UART-Adapter benötigt. Dabei schließt man ihn folgendermaßen an:&lt;br /&gt;
&lt;br /&gt;
* USB-UART TX an PA10 (RX)&lt;br /&gt;
* USB-UART RX an PA9 (TX)&lt;br /&gt;
* UAB-UART GND an GND&lt;br /&gt;
&lt;br /&gt;
Solche Adapter (am besten einen, der mit 3,3V-Pegeln arbeitet) gibt es bei eBay oder Amazon für unter 5 EUR. &amp;lt;br /&amp;gt;&lt;br /&gt;
Bei USB-UART-Adaptern mit FTDI-Chip oder Prolific PL2303-Chip sind Fakes im Handel, die von der Original-Treibersoftware nicht korrekt unterstützt werden. &#039;&#039;&#039;Besser sind Adapter mit CH340G- oder CP2102-Chip.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschlusstabelle ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Device || [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] || [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#TSOP31238|TSOP31238]] ([[IRMP]])  || GPIO:   PC10               || GPIO:   PB3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]       || GPIO:   PD2                || GPIO:   PB5&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#LDR|LDR]]                         || GPIO:   PC4                || GPIO:   PA5&lt;br /&gt;
|- &lt;br /&gt;
| WordClock-Logger (USB)                                   || USART2: TX=PA2  RX=PA3 (bereits integriert)    || USART1: TX=PA9  RX=PA10 (externer USB-UART-Adapter)&lt;br /&gt;
|- &lt;br /&gt;
| User Button  || GPIO: USER=PC13 (on-board)               || GPIO: USER=PA6 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| WPS Button  || GPIO: WPS=PC5  (auf dem Shield ab v3)     || GPIO: WPS=PA7 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] Rx/Tx       || USART6: TX=PA11 RX=PA12        || USART2: TX=PA2  RX=PA3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] RST/CH_PD   || GPIO:   RST=PA7 CH_PD=PA6      || GPIO:   RST=PA0 CH_PD=PA1&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO0       || GPIO:   GPIO0=PA4              || GPIO: GPIO0=PA4&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO13/15   || USART1: GPIO13=PA9 GPIO15=PA10 || USART1: GPIO13=PA9 GPIO15=PA10&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#DCF77|DCF77]]                 || GPIO:   DATA=PC11 PON=PC12     || GPIO:   DATA=PB8  PON=PB9 &lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC / EEPROM]] || I2C3:   SCL=PA8 SDA=PC9        || I2C1:   SCL=PB6 SDA=PB7&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#WS2812|WS2812]]               || DMA1:   PC6                    || DMA1:   PA8&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 Power On/Off                                  || PC8                            || PB0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist USART2 bereits fest mit dem auf dem ST-Link-V2-Teil des Boards integrierten UART-USB-Adapter verbunden. Hier sind also keine extra Verbindungen mehr notwendig - erst wenn das ST-Link-V2-Teil abgesägt wird. Und auch dann kann man den USB-UART-Adapter vom ST-Link-V2 weiterverwenden.&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board benötigt man allerdings einen externen USB-UART-Adapter - am besten einen, der mit 3,3V-Pegeln arbeitet. Diese findet man zuhauf bei Amazon oder eBay für ca. 5 EUR.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Teileliste für WC12h oder WC24h und Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:35%&amp;quot; | Bezeichnung || Bezugsquelle&lt;br /&gt;
|-&lt;br /&gt;
| Board&lt;br /&gt;
||  &lt;br /&gt;
STM32 MiniBoard (empfohlen für WC12h)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=STM32F103C8T6 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F103C8T6 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oder&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
STM32 Nucleo&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=nucleo AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F411%20Nucleo eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/Nucleo-STM32F411 Watterott]&lt;br /&gt;
|-&lt;br /&gt;
| USB-UART-Adapter - NUR für Logging und (erstmaliges) Flashen des ESP8266-Moduls am MiniDevBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://de.aliexpress.com/wholesale?SearchText=uart+CH340G AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=USB%20UART%20Adapter eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 ST-Link - NUR für MiniBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;&lt;br /&gt;
Prinzipiell reicht USB-UART-Adapter aus aber ein ST-Link wird zusätzlich empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=st-link+v2 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 MiniBoard Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für MiniBoard notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Das per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Shield enthält sämtliche Anschlüsse um alle benötigten Module mit einander zu verbinden. Der STM32F103 wird direkt in das Shield gesteckt und verlötet - er wird nicht gesockelt!&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321201 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| STM32 Nucleo Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für Nucleo-Board notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Diese per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Adapterplatine wird auf das Nucleo-Board aufgesteckt. Sie enthält sämtliche Anschlüsse für alle vorgesehen Module.&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321193 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 LED Stripes &lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Stripes mit einem Sonderformat über die [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h können Standard Stiles mit 60 LEDs / Meter verwendet werden.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ws2812+60+ip30 AliExpress]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=WS2812%2060%20ip30 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Frontplatte&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Frontplatten über eine Sammelbestellung aus [[WordClock_mit_WS2812#WC12h_Sammelbestellung_Frontplatten | Plexiglas ]] oder [[Word_Clock#Sammelbestellung_.28Edelstahl.29 | Edelstahl]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h gibt es eine Sammelbestellung von Frontplatten aus &lt;br /&gt;
[[WordClock_mit_WS2812#WC24h_Sammelbestellung_Frontplatten | Plexiglas]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird kein Rahmen (siehe unten) verwendet werden zusätzliche Teile (z.B. [[Word_Clock_Variante_1_-_getrennte_Steuerplatine#Befestigung_der_Frontplatte_.28.E2.80.9CPlexiglasvariante.E2.80.9D.29_an_der_Zwischenplatte| Magnete]]) zur Befestigung der Frontplatte benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| Zwischenboden&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h und WC24h sind Zwischenböden über eine [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alu-Platte&lt;br /&gt;
||&amp;lt;br&amp;gt;Aluminiumblech,  1 mm Stärke. Für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) und alle WC12h Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/(aluminium%2C+alu)+(blech%2C+platte) ebay]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DS3231 [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC und EEPROM]]&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ds3231 AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=DS3231 eBay]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Falls bei dem Modul keine Batterie mitgeliefert wird, wird zusätzlich folgende Knopfzelle benötigt:&lt;br /&gt;
[http://www.reichelt.de/directlink/CR2032/index.html?&amp;amp;ACTION=3&amp;amp;ARTICLE=26550&amp;amp;GROUPID=4241&amp;amp;ARTNR=CR+2032&amp;amp;&amp;amp;SHOW=1&amp;amp;SID=12UXp5iH8AAAIAAAE-gdod799e4cf62d5cd255e52464fe671b8ea Reichelt CR2032]&lt;br /&gt;
|-&lt;br /&gt;
| Netzteil&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/MDY0ODQ2OTk-/Stromversorgung/Netzgeraete/Steckernetzgeraete/Steckernetzteil_QUATPOWER_PSN5_4000H5_5_5_V_4_A_5_5_2_1_mm.html Pollin Netzteil 5V 4A]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-01 (WLAN-Modul) bis Shield V2&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-01 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-01 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-WiFi-Serial-Transceiver-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-01 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-12F (WLAN-Modul) ab Shield V3 (OTA)&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-12F AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-12F eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/WLAN-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-12 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Infrarot-Decoder (IRMP)&lt;br /&gt;
||&amp;lt;br&amp;gt;mit IRMP Fernbedienungsensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321194 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird noch eine [http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.V0CsuCFgfs0 IR-Fernbedienung] benötigt, die optional mit einer [[WordClock_mit_WS2812#IR-Fernbedienung|Folie]] versehen werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Rahmen&lt;br /&gt;
||&amp;lt;br&amp;gt;Innenmaße 450x450 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Funktioniert nicht zusammen mit Ambilight&amp;lt;br&amp;gt;&lt;br /&gt;
Z. B. [https://www.alutech.de/alu---zuschnitt-profil-18.html Alurahmen]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Ambilight&lt;br /&gt;
||&amp;lt;br&amp;gt;Mittels zusätzlicher WS2812 LED Stripes per &amp;lt;br&amp;gt;[[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]]&lt;br /&gt;
Funktioniert nicht zusammen mit einem Rahmen. Erfordert Zwischenboden mit entsprechender Ausfräsung (bisher nur für WC12 per Sammelbestellung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Fotowiderstand (LDR) zur Lichtmessung&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://www.reichelt.de/Fotodioden-etc-/LDR-07/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=10208&amp;amp;GROUPID=3045&amp;amp;artnr=LDR+07&amp;amp;SEARCH=ldr07 Reichelt LDR07]&amp;lt;br&amp;gt; Ggf. Ersatz: [https://www.reichelt.de/Fotodioden-etc-/A-906011/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=47506&amp;amp;GROUPID=3045&amp;amp;artnr=A+906011&amp;amp;SEARCH=fotowiderstand Reichelt A906011]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-1-0-k-Ohm-9-1-k-Ohm/1-4W-1-0K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1315&amp;amp;GROUPID=3065&amp;amp;artnr=1%2F4W+1%2C0K&amp;amp;SEARCH=%252A Reichelt Widerstand 1,0k] (bei Verwendung von LDR07 oder A906011)&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-10-k-Ohm-91-k-Ohm/1-4W-10K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1338&amp;amp;GROUPID=3066&amp;amp;artnr=1%2F4W+10K&amp;amp;SEARCH=%252A Reichelt Widerstand 10k] (bei Verwendung des zwischenzeitlich empfohlenen A906032 und auch bei Nicht-Anschluss des LDRs)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Temperatur-Sensor&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DS1820 Temperatur-Sensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321196 Reichelt Warenkorb]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: DCF77-Empfänger&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DCF werden folgende Teile benötigt:&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Pollin DCF77 Empfänger]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321191 Reichelt Warenkorb]&lt;br /&gt;
&amp;lt;br&amp;gt; ggf. IC-Sockel für den OP (Reichelt GS 8P)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: WS2812 Spannungsabschaltung&lt;br /&gt;
||&amp;lt;br&amp;gt;mit WS2812 Spannungsabschaltung werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321190 Reichelt Warenkorb]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Start =&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Geflasht wird mit dem ST-Link-Programm, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dient die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]]. Dazu nimmt man eine WLAN-Verbindung mit dem ESP8266-Modul auf. Für die erste Konfiguration wird das ESP8266 zunächst als eigener Access-Point gestartet. Anschließend kann man über das [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] die Zugangsdaten zu dem eigenen WLAN-Router einstellen. Im Folgenden läuft das ESP8266-Modul dann als WLAN-Client.&lt;br /&gt;
&lt;br /&gt;
Für Entwickler und zur Diagnose kann man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) verwenden, um über ein Mini-USB-Kabel Debug- und Log-Meldungen mitzuschneiden. Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die &amp;quot;blauen&amp;quot; USB3.0-Buchsen möglichst meiden.&lt;br /&gt;
&lt;br /&gt;
== Ablauf ==&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)&lt;br /&gt;
* Wenn man die EmBitz-IDE einsetzt: Nach [[WordClock_mit_WS2812#WordClock-Quellcode_selbst_.C3.BCbersetzen|Anleitung: WordClock-Quellcode selbst übersetzen]] vorgehen&lt;br /&gt;
* Die entsprechende Hex-Datei (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32 MiniDevBoards ==&lt;br /&gt;
&lt;br /&gt;
Hier eine ausführliche Schritt für Schritt Anleitung um die Software vom .HEX File aus dem Artikel in das STM32 MiniDevBoard zu bekommen:&lt;br /&gt;
&lt;br /&gt;
Benötigt werden neben dem STM32 MiniDevBoard:&lt;br /&gt;
* Hardware: ST-Link V2 (z. B. von [https://www.aliexpress.com/wholesale?ltype=wholesale&amp;amp;d=y&amp;amp;origin=y&amp;amp;isViewCP=y&amp;amp;SearchText=st-link+v2&amp;amp;blanktest=0&amp;amp;tc=af Aliexpress] oder [http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay])&lt;br /&gt;
* Software: STM32 ST-Link Utility, siehe: http://www.st.com/en/development-tools/st-link-v2.html&lt;br /&gt;
* Installation der Software &amp;quot;STM32 ST-Link Utility&amp;quot;: https://www.youtube.com/watch?v=ONzRL06Umfo&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Danach im Geräte-Manager von Windows unter „USB-Geräte“ kontrollieren, ob die Installation erfolgreich war.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 1.PNG|miniatur|Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ST-Link v2 mit STM32 MiniDevBoard verbinden (Achtung: Die Anschlussbelegung an ST-Link v2 und die Beschriftung am MiniDevBoard ist nicht immer einheitlich, daher bitte immer auf die Beschriftung achten!). Verbunden werden folgende Pins:&lt;br /&gt;
* St-Link v2 &amp;quot;VCC&amp;quot; mit &amp;quot;3.3&amp;quot; oder &amp;quot;3.3V&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWDIO&amp;quot; mit &amp;quot;DIO&amp;quot; oder &amp;quot;SWDIO&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWCLK&amp;quot; mit &amp;quot;CLK&amp;quot; oder &amp;quot;SWCLK&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;GND&amp;quot; mit &amp;quot;GND&amp;quot; des MiniDevBoard&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 2.PNG|miniatur|Anschluss des ST-Link v2 Adapters]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Das STM32 ST-Link Utility öffnen und im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 3.PNG|miniatur|Verbindung zum STM Board im STM32 ST-Link Utility herstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Im STM32 ST-Link Utility im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im STM32 MiniDevBoard konsistent zu den Informationen im .HEX File sind&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 4.PNG|miniatur|Reiter &amp;quot;Target&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Die gewünschte Hex-Datei passend zur Hardware auswählen (im Beispiel: WordClock 12h mit „Standard“-WS2812) und auf „Öffnen“ klicken&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 5.PNG|miniatur|Auswahl der Firmware / des .HEX Files]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Den Flashvorgang mit „Start“ beginnen. An den standardmäßig gesetzten Optionen muss nichts weiter verändert werden&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 6.PNG|miniatur|rechts|Start des Flashvorgangs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Erfolgreiches Flashen wird anschließend im Logbereich des STM32 ST-Link Utility (unten im Fenster) angezeigt. Sollten im Log Fehlermeldungen auftauchen ist beim Flashen etwas schiefgelaufen. Verkabelung prüfen (z.B. DIO und CLK vertauscht?) und wenn das Problem weiterhin besteht im Forum (https://www.mikrocontroller.net/topic/385955) nach Hilfe fragen.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 7.PNG|miniatur|Logbeispiel: Flashen erfolgreich!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Zum Abschluss noch in der Software unter „Target“ die Verbindung der Software zum ST-Link v2 mit „Disconnect“ trennen. Jetzt kannst du auch das ST-Link V2 USB Modul aus dem Port entfernen und die Verkabelung vom STM32 MiniDevBoard trennen. Im Speicher des Boards ist jetzt die zuvor ausgewählte Software und du hast dein Modul erfolgreich geflasht! &lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 8.PNG|miniatur|ST-Link v2 trennen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Upgrade der Firmware des ST-Link v2 - DFU mode ====&lt;br /&gt;
Wenn versucht wird die Firmware des ST-Link v2 zu aktualisieren und dies scheitert mit der Meldung &amp;quot;Not in DFU Mode&amp;quot;, so kann folgende Vorgehensweise helfen: &lt;br /&gt;
# ST-Link Utility schließen und ST-Link v2 vom USB Port entfernen. &lt;br /&gt;
# Miniboard vom ST-Link trennen. &lt;br /&gt;
# ST-Link Utility starten aber noch nichts anschließen. &lt;br /&gt;
# Firmware Upgrade Dialog öffnen. &lt;br /&gt;
# Nun ST-Link am USB Port anschließen. MiniBoard nicht anschließen. &lt;br /&gt;
# Update starten. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Ablauf ist nur notwendig, wenn man die Log-Meldungen aus Diagnose-Zwecken mitschneiden möchte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PuTTY starten&lt;br /&gt;
* PuTTY einstellen: Auswahl &amp;quot;Serial&amp;quot;, Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200&lt;br /&gt;
* Einen Session-Namen eingeben, z.B. &amp;quot;Nucleo&amp;quot;&lt;br /&gt;
* Auf SAVE klicken, dann kann man die Session später wieder auswählen&lt;br /&gt;
* Open anklicken&lt;br /&gt;
* RESET-Button am [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] drücken&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039; Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nicht die bereits ausgegebenen Log-Meldungen. Um den Ablauf des Programms von Anfang an zu verfolgen, drückt man auf dem Board einfach den Reset-Knopf. Dann beginnt die Ausgabe ganz von vorn.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039; Für das Logging sollten lediglich RX und GND des externen USB-UART-Adapters angeschlossen werden. TX vom Adapter bzw. RX auf dem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] sollten offen bleiben. Sonst kann es bei Verwendung des ESP8266 ESP-12F dazu kommen, dass dieser nicht mehr bootet.&lt;br /&gt;
&lt;br /&gt;
Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund im PuTTY ist normalerweise schwarz. Möchte man lieber eine Ausgabe in schwarz auf weiß, kann man das folgendermaßen umstellen:&lt;br /&gt;
&lt;br /&gt;
   Change Settings -&amp;gt; Window -&amp;gt; Colours:&lt;br /&gt;
&lt;br /&gt;
      Default Foreground: 2 2 2&lt;br /&gt;
      Default Bold Foreground: 0 0 0&lt;br /&gt;
      Default Background: 245 245 245&lt;br /&gt;
      Default Bold Background: 255 255 255&lt;br /&gt;
      Cursor Text: 0 0 0&lt;br /&gt;
      Cursor Color: 255 0 0&lt;br /&gt;
      (Rest kann man so lassen)&lt;br /&gt;
&lt;br /&gt;
Anschließend zurück über &amp;quot;Session&amp;quot; oben links und: &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des WLAN-Moduls ==&lt;br /&gt;
&lt;br /&gt;
=== Flash des WLAN-Moduls ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Für das ESP8266-Wlan-Modul wird aus Stabilitäts- und Geschwindigkeitsgründen eine spezielle auf die WordClock-Anwendung abgestimmte Firmware benutzt (siehe [[WordClock_mit_WS2812#Download|Download]]), die über das STM32-Board geflasht werden kann. Das ESP8266 kann also während des Flashens in der WordClock-Schaltung verbleiben.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo wird der integrierte USB-UART-Adapter verwendet. Beim Anschluss des Nucleo-Board per USB an den PC wird automatisch ein COM-Device angelegt, z.B. COM12. Dafür braucht man aber den entsprechenden Virtual COM Port Driver, siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|Software für Windows]].&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]] wird ein externer USB-UART-Adapter, welcher mit 3,3V-Pegeln arbeitet, verwendet. Wie er angeschlossen wird, sieht man in der [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|Anschluss-Skizze]] und auch in obiger [[WordClock_mit_WS2812#Anschlusstabelle|Anschlusstabelle]]. Das Shield muss außerdem extern mit +5V versorgt werden. Anderenfalls ist zumindest das ESP-Modul ohne Spannungsversorgung. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig: Handelt es sich hier um ein ESP8266 ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]], darf TX vom USB-UART-Wandler erst dann angeschlossen werden, wenn der ESP8266 sich bereits im Flash-Modus befindet - nicht früher. Siehe Beschreibung unten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zum eigentlichen Flashen lädt man am besten das sehr einfach gehaltene Programm &#039;&#039;&#039;[https://github.com/Stadslab/ESP8266_example/raw/master/ESP8266_flasher_V00170901_00_Cloud%20Update%20Ready/esp8266_flasher.exe esp8266_flasher.exe]&#039;&#039;&#039; herunter.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-ESP-Flasher.png|miniatur|esp8266_flasher.exe für das ESP8266-Modul]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativ dazu kann man auch  von der Espressif-Seite zunächst die ESP8266-Flash-Software &#039;&#039;&#039;FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar&#039;&#039;&#039; (http://bbs.espressif.com/download/file.php?id=856) herunterladen und das Archiv an geeigneter Stelle entpacken. Es müssen dann als Einstellungen die im Bild rechts markierten Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Dann ist das weitere Vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eventuell gestartetes PuTTY beenden, um COM-Schnittstelle freizugeben&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) abziehen!&lt;br /&gt;
* Reset-Taste drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3) drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;. Auf älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] gibt es diese Taste nicht, sondern ist lediglich als Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) bezeichnet. Hier muss man mittels eines Jumpers eine Verbindung zu GND daneben herstellen.&lt;br /&gt;
* Reset-Taste loslassen&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] nach 2 Sekunden loslassen bzw. Jumper ziehen&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) wieder anschließen.&lt;br /&gt;
&lt;br /&gt;
Das WordClock-Programm auf dem STM32 versetzt dann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul in den Flash-Modus und verbindet dann die beiden UARTs softwaremäßig 1:1, d.h. die Daten werden vom USB-Anschluss transparent an das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Nun startet man das Programm &#039;&#039;&#039;esp8266_flasher.exe&#039;&#039;&#039; (bzw. ESP_DOWNLOAD_TOOL_V2.4.exe) und wählt durch Klick auf die Schaltfläche &#039;&#039;&#039;Bin&#039;&#039;&#039; die Datei &#039;&#039;&#039;ESP-WordClock.bin&#039;&#039;&#039; aus - siehe [[WordClock_mit_WS2812#Download|Download]]. Außerdem muss der COM-Port an den tatsächlichen Anschluss angepasst werden. Beim ESP-01 stellt man die Flash-Size auf 4MBit (=512KB), beim ESP-12F auf 32MBit (=4MB).&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-ESP8266-FLASH.png|miniatur|Alternative: ESP FLASH DOWNLOAD TOOL]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach Drücken auf &#039;&#039;&#039;Download&#039;&#039;&#039; (bzw. &#039;&#039;&#039;Start&#039;&#039;&#039; beim Alternativprogramm) sollte nun das Flashen des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls beginnen. Eine eventuell am Ende auftretende Fehlermeldung &amp;quot;Failed to leave Flash mode&amp;quot; kann dabei getrost ignoriert werden. Anschließend startet man den STM32 (und damit auch das WLAN-Modul) neu durch kurzes Drücken der Reset-Taste.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativprogramm NODEMCU Firmware Flasher von (https://github.com/nodemcu/nodemcu-flasher) herunter laden. Es steht in den Unterordnern ein WIN32 oder Win64 Bit Programm zur Verfügung.&lt;br /&gt;
1. Zuerst sollte nach dem Start unter Advanced die Baudrate eingestellt werden.&lt;br /&gt;
2. Danach folgt die Auswahl der zu flashenden Firmware unter Config&lt;br /&gt;
3. Dann den COM-Port auswählen und&lt;br /&gt;
4. Flashen drücken.&lt;br /&gt;
Ist die Anzeige nicht wie im letzten Teiles des Bildes half bei mir (MockUp) nur das zurücksetzen der Einstellungen auf Default und wieder setzen der Parameter. Das Programm ist auf alle fälle nicht so stabil wie die anderen was den Verbindungsaufbau anbelangt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Genereller Hinweis: Es ist zu empfehlen das OTA Update auszuprobieren, auch wenn ihr schon die aktuelle Version geflasht habt! Es kommt vereinzelt vor, dass dieses nicht funktioniert. Mit der Version 2.7.1 wurde ein extra Button (Format ESP8266 SPIFFS) unter dem Menüpunkt Update hinzugefügt mit dem der interne Zwischenspeicher für die Updatedateien auf dem ESP gelöscht werden kann. Sollte es auch danach nicht funktionieren, sollte man die verschiedenen Flasher durchprobieren.&#039;&#039;&#039; &lt;br /&gt;
|| [[Datei:WordClock-NODEMCU-Flasher.png|miniatur|NODEMCU Firmware Programmer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Start als Access-Point ===&lt;br /&gt;
&lt;br /&gt;
Folgender Ablauf ist nur notwendig, wenn die Software-Version älter als 2.5.0 ist oder keine [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] (ab Shield v3) angeschlossen ist. Sonst kann direkt zu [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]] gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
Um für die Konfiguration der WLAN-Daten (Zugang zum WLAN-Router oder -Gateway) mit dem ESP8266 Kontakt aufzunehmen, muss man zunächst dafür sorgen, dass das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul als Access-Point arbeitet. Dafür drückt man die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board (blau) bzw. die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] verbindet man den Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) kurz mit dem danebenliegenden GND-Pin.&lt;br /&gt;
&lt;br /&gt;
Unmittelbar nach dem Drücken der Taste erscheint die IP-Adresse des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls als Laufschrift - und auch im Log. Nun sucht man auf dem PC oder Tablet nach dem WLAN-Netz mit dem Namen &amp;quot;wordclock&amp;quot; und verbindet das Gerät mit diesem Netz. Als Netzwerkschlüssel gibt man &amp;quot;1234567890&amp;quot; ein. Sobald die Verbindung hergestellt ist, startet man einen Browser und gibt als URL die ausgegebene IP-Adresse ein, z.B. http://192.168.4.1/ .&lt;br /&gt;
&lt;br /&gt;
Sobald die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] erscheint, wählt man den Menüpunkt &amp;quot;Network&amp;quot; aus, wählt &amp;quot;Wlan-Client&amp;quot; aus und gibt die SSID (&amp;quot;AP&amp;quot;) und den Key des WLAN-Routers ein und bestätigt die Eingabe mit &amp;quot;Save&amp;quot;. Das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul wird nun als WLAN-Client umkonfiguriert. War das erfolgreich, erscheint nun auf dem Display die neue IP-Adresse. Die Browser-Seite wird dann ungültig. Man kann seinen PC nun wieder mit dem bisherigen WLAN-Gateway verbinden und im Folgenden die neue IP-Adresse verwenden.&lt;br /&gt;
&lt;br /&gt;
Gibt es an dem Ort, wo die Uhr betrieben werden soll, kein WLAN, kann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul auch weiterhin als Accesspoint (&amp;quot;AP&amp;quot;) betrieben werden, damit man es über WLAN fernsteuern kann. In diesem Fall sollte nicht &amp;quot;WLAN-Client&amp;quot;, sondern &amp;quot;AP&amp;quot; ausgewählt werden, eine entsprechende SSID und einen mindestens 10 Zeichen langen Key einstellen. Anschließend kann man sich mit PC/Handy/Tablet in das neue WLAN einklinken, um die Uhr per Browser oder Android-App fernzusteuern. Ein Zugriff auf einen externen Timeserver ist dann selbstverständlich nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
=== Start per WPS-Button ===&lt;br /&gt;
&lt;br /&gt;
Ab Software-Version 2.6.0 wird WPS unterstützt. Dazu drückt man die auf dem Shield (ab Shield-Version v3) befindliche [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] für einen kurzen Moment und anschließend auf dem WLAN-Gateway (bzw. Router). Bei der Fritzbox muss man die Taste solange drücken, bis die WLAN-LED blinkt. Im Normalfall wird dann die Verbindung innerhalb weniger Sekunden aufgenommen - erkennbar daran, dass auf dem LED-Display die vergebene IP-Adresse als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Befindet der ESP8266 bereits im AP-Modus, kann WPS auch im Browser über den Klick auf die Schaltfläche &amp;quot;WPS&amp;quot; im Reiter [[WordClock_mit_WS2812#Network|Network]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Start als WLAN-Client ===&lt;br /&gt;
&lt;br /&gt;
Bei jedem folgenden Start wird nur noch die Einstellung &amp;quot;WLAN-Client&amp;quot; verwendet. Sobald sich das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul mit dem gewünschten Access-Point (&amp;quot;AP&amp;quot;) verbunden hat, wird auf dem LED-Display die neue IP-Adresse des Moduls in Laufschrift ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Viele WLAN-Router sorgen automatisch dafür, dass ein WLAN-Client auch noch nach Tagen dieselbe IP-Adresse hat. Wenn das nicht der Fall sein sollte, kann man meist in den Router-Einstellungen dafür sorgen, dass der Client mit der MAC-Adresse xx-xx-xx-xx-xx-xx immer dieselbe IP-Adresse vom WLAN-Router zugeteilt bekommt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Web-Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Neben der Ausgabe der installierten Firmware-Version sieht man hier unter anderem auch, ob das EEPROM erkannt wurde. Es wird entweder &amp;quot;online&amp;quot; oder &amp;quot;offline&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man keine Verbindung zum Internet, kann man auf der Hauptseite Datum und Uhrzeit auch manuell eingeben. Außerdem kann man hier einen Ticker-Text angeben, welcher dann auf dem Display als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Mit den Schaltflächen &amp;quot;Power on&amp;quot; bzw. &amp;quot;Power off&amp;quot; kann das LED-Display ein- und ausgeschaltet werden. Die Power-Buttons schalten erstmal generell auch das Ambilight ein bzw. aus. Es kann aber über die entsprechenden Schaltflächen separat ein- und ausgeschaltet werden. Diese wirken aber nur, wenn die Uhr selbst im eingeschalteten Zustand (&amp;quot;Power on&amp;quot;) ist. Sonst werden sie ignoriert.&lt;br /&gt;
&lt;br /&gt;
Mit dem Klick auf &amp;quot;Learn IR remote control&amp;quot; kann eine IR-Fernbedienung angelernt werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Main.png|miniatur|Web-Interface: Hauptmenü]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier werden die aktuelle IP-Adresse und die Firmware-Version des ESP8266-Moduls angezeigt. Auch kann man hier die Verbindung zu einem WLAN-Gateway oder -Router angeben. In diesem Fall wählt man in der Zeile &amp;quot;WLAN-Client&amp;quot; den gewünschten Accesspoint aus und gibt dann noch den korrekten Key ein. Wichtig: Enthält der Key internationale Sonderzeichen wie zum Beispiel Umlaute, kann die WLAN-Anwendung fehlschlagen, weil das Web-Interface einen anderen Zeichensatz als der Accesspoint verwendet. In diesem Fall sollte man den Key im Accesspoint ändern oder die Möglichkeit einer Verbindung per WPS wählen. Nach erfolgter Einstellung wird die gewünschte Verbindung aufgebaut und die evtl. neue IP-Adresse auf dem LED-Display als Laufschrift eingeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039; ist die alternative Möglichkeit, das ESP8266-Modul über WPS ins Netz einzubinden. Dafür drückt man zuerst die WPS-Taste am Router (bei der FritzBox solange, bis die WLAN-LED blinkt) und anschließend die [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] auf dem Shield - oder die WPS-Schaltfläche im Web-Interface.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man hier den [[WordClock_mit_WS2812#Timeserver|Timeserver]] und die [[WordClock_mit_WS2812#Timeserver|Zeitzone]] konfigurieren, siehe entsprechendes [[WordClock_mit_WS2812#Timeserver|Kapitel]].&lt;br /&gt;
&lt;br /&gt;
Mit der Schaltfläche &amp;quot;Get net time&amp;quot; kann die aktuelle Uhrzeit von dem konfigurierten Timeserver ad hoc abgerufen werden. Das ist aber im Normalfall nicht notwendig, da dies ohnehin alle 3800 Sekunden automatisch geschieht. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Network.png|miniatur|Web-Interface: Netzwerk-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hier wird die aktuelle Temperatur von RTC und DS18xx (sofern vorhanden) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Wegen der Selbsterwärmung der Sensoren werden meist zu hohe Werte gemessen. Dagegen hilft beim DS18xx zum Beispiel ein Kühlkörper. Sollte das nicht möglich oder nicht gewünscht sein, kann hier sowohl für RTC als auch für DS18xx eine Korrektur in 0,5°C Schritten angegeben werden. Bei Eingabe von beispielsweise &amp;quot;5&amp;quot; werden 2,5°C von der Messung abgezogen. Die Korrekturwerte sollte man frühestens nach einigen Minuten Betrieb wählen, damit RTC/DS18xx auch die endgültige Betriebstemperatur erreicht haben.&lt;br /&gt;
&lt;br /&gt;
Beim Betätigen der Schaltfläche &amp;quot;Display temperature&amp;quot; wird die aktuelle Temperatur auf dem LED-Display entweder als Laufschrift (WordClock12h) oder als Wort-Anzeige (Word-Clock24h) eingeblendet. Diese Anzeige kann in einem gewissen Zeitintervall auch automatisch erfolgen, siehe &#039;&#039;&#039;[[WordClock_mit_WS2812#Display|Display]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Temperature.png|miniatur|Web-Interface: Temperatur-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Um Wetterdaten auf der Uhr ausgeben zu können, braucht man eine sogenannte APPID (auch API-Id genannt), die man durch eine Registrierung bei http://openweathermap.org kostenlos beziehen kann. Am einfachsten findet man sie über den Menü-Eintrag &amp;quot;Price&amp;quot;. Dort kann man dann eine API-Id in der Free-Version generieren lassen.&lt;br /&gt;
&lt;br /&gt;
Diese APPID wird dann hier eingetragen. Des Weiteren ist notwendig:&lt;br /&gt;
&lt;br /&gt;
* entweder die Angabe eines Ortes&lt;br /&gt;
* oder die Angabe von Geo-Koordinaten (Longitude/Lattitude)&lt;br /&gt;
&lt;br /&gt;
Gerade bei Großstädten ist es sinnvoll, die genauen Koordinaten des eigenen Wohnorts anzugeben, da das Wetter bereits lokal unterschiedlich sein kann. Werden sowohl Ort als auch die Geo-Koordinaten angegeben, haben die Koordinaten Priorität. Auch kann es sein, dass bei kleineren Ortschaften der Ort selbst bei openweathermap.org unbekannt ist. Im Zweifel sollte man sich besser für die Koordinaten-Variante entscheiden. Wichtig bei der Angabe eines Ortes ist es, die Stadt in der eigenen Landessprache anzugeben, also z.B. &amp;quot;Koeln&amp;quot; oder &amp;quot;Muenchen&amp;quot;. Die Angabe von z.B. &amp;quot;Cologne&amp;quot; ist nicht zielführend, weil dies ein kleiner Ort in Italien ist ;-)&lt;br /&gt;
&lt;br /&gt;
Kennt man die Geo-Koordinaten vom gewünschten Standort nicht, kann man sie über Google-Earth ermitteln. Dafür muss man nicht unbedingt Google-Earth herunterladen, es reicht das Aufrufen von Google-Maps im Browser. Anschließend kann man dann unten links auf die Web-Version von Google-Earth wechseln. Ein Klick auf den eigenen Standort lässt dann die gewünschten Koordinaten erscheinen. Dabei ist die erste Zahl (irgendetwas um die 50) die Lattitude und die zweite Zahl (in der Größenordnung 7) die Longitude. Die Zahlen sollen mit Dezimalpunkt und nicht Dezimalkomma eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Ein abschließender Klick auf die Schaltfläche &amp;quot;Get weather&amp;quot; bezieht dann von openweathermap.org das aktuelle Wetter vom gewünschten Standort. Die Wetterdaten (Temperatur und Wetterlage) werden dann als Laufschrift auf dem Display ausgegeben. Diese Anzeige kann in einer kommenden Version über ein einstellbares Zeitintervall dann auch automatisch erfolgen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Weather.png|miniatur|Web-Interface: Wetterdaten-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDR ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Mittels Aktivierung von &amp;quot;Automatic Brightness&amp;quot; werden die automatische Helligkeitssteuerung scharf geschaltet und das erweiterte Menü sichtbar.&lt;br /&gt;
&lt;br /&gt;
Die Seite zeigt den aktuellen Wert an, den der ADC am LDR misst. Um den Helligkeitsbereich bei der automatischen Helligkeitssteuerung komplett auszunutzen, kann hier eine Kalibrierung vorgenommen werden. Dazu betätigt man einmal die Minimum-Schaltfläche bei verdunkeltem Raum, einmal die Maximum-Schaltfläche bei maximaler Raumhelligkeit und speichert alles durch Drücken der Save-Schaltfläche. Die automatische Helligkeitssteuerung verwendet dann bei einer Helligkeitsmessung diese Min-/Max-Werte zum Vergleich.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist nicht sinnvoll, bei der Max-Messung einfach eine Taschenlampe direkt vor den LDR zu halten. Da der LDR normalerweise hinter der Frontplatte sitzt, wird so eine Helligkeit in der Praxis niemals erreicht. Die Folge wäre, dass die LEDs der Uhr dann zu dunkel leuchten würden.&lt;br /&gt;
&lt;br /&gt;
Hinweis2: Der angezeigte LDR Wert wird auf die Min und Max-Werte begrenzt. Sind diese 0 wird auch der LDR-Wert als 0 angezeigt. Dann sollte wie beschrieben kalibriert werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-LDR.png|miniatur|Web-Interface: LDR-Kalibrierung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Brightness ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können die 16 vorhandenen Helligkeitsstufen an die Gegebenheiten angepasst werden. Je nach Transparenz der verwendeten Frontplatte bzw. des Diffusors kann man hier nachjustieren.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig sind die Helligkeitsstufen hier so gewählt, dass immer eine gewisse Grundhelligkeit eingestellt ist. Erscheinen die unteren Helligkeitsstufen zu hell, kann man das durch Verschieben der entsprechenden Regler nach links anpassen. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Brightness.png|miniatur|Web-Interface: Helligkeitskurve]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Unter &amp;quot;Display Mode&amp;quot; können unter anderem verschiedene Sprachvarianten, die regionale Unterschiede beim Gebrauch der Uhrzeit berücksichtigen, ausgewählt werden. Die Anzeige von &amp;quot;Es ist&amp;quot; kann hier generell ein- oder ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Schieberegler &amp;quot;Brightness&amp;quot; kann die Grundhelligkeit eingestellt werden. Dieser wird deaktiviert, wenn die automatische Helligkeitssteuerung aktiviert wurde. Die eigentlichen Farben des Displays stellt man dann mit den Schiebereglern &amp;quot;R&amp;quot;, &amp;quot;G&amp;quot; und &amp;quot;B&amp;quot; ein. Diese erscheinen jedoch nur dann, wenn nicht die Animation &amp;quot;Rainbow&amp;quot; eingestellt ist. Die Rainbow-Animation kontrolliert die Farben nämlich selbst.&lt;br /&gt;
&lt;br /&gt;
Durch Wahl einer Ticker-Verzögerung kann die Geschwindigkeit der &amp;quot;Ticker-Messages&amp;quot; (Laufschriftanzeige) kontrolliert werden. 3 ist hier der Standardwert. Niedrigere Werte ergeben eine höhere Geschwindigkeit (bis zur Unleserlichkeit), höhere Werte verzögern die Geschwindigkeit der Laufschriften.&lt;br /&gt;
&lt;br /&gt;
Stellt man für das Ambilight &amp;quot;Use Display Colors&amp;quot; ein, dann werden die Einstellungen für Helligkeit und Farben auch für das Ambilight verwendet, das heißt die Farben laufen synchron.&lt;br /&gt;
&lt;br /&gt;
Auch hier gibt es nochmal die Schaltflächen zum Ein- und Ausschalten des LED-Displays. Mit der Schaltfläche &amp;quot;Test Display&amp;quot; werden sämtliche LEDs bei halber (subjektiver) Helligkeit eingeschaltet (benötigt ca. 1/4 des theoretisch möglichen Maximalstroms) und einige Farben zur Kontrolle der Funktionsfähigkeit aller LEDs durchprobiert.&lt;br /&gt;
&lt;br /&gt;
Bei &amp;quot;Temp Display Interval&amp;quot; lässt sich ein Zeitintervall wählen, bei welchem die aktuell gemessene Temperatur eingeblendet werden soll. Bei Angabe von &amp;quot;1&amp;quot; passiert das jede Minute, nämlich immer bei hh:mm:30 Uhr. Bei Angabe von beispielsweise &amp;quot;5&amp;quot; wird die Temperatur dann nur noch alle 5 Minuten eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;Heart Display interval&amp;quot; gilt dasselbe. Hier wird ein Herz als Piktogramm eingeblendet - z.B. für Geburtstage. Ebenso kann man in der vorweihnachtlichen Zeit einen Weihnachtsbaum einblenden unter Angabe eines Wertes für &amp;quot;XMas tree display interval&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Intervalle ausgefüllt, gilt folgende Regel bei zeitgleicher Einblendung: Dasjenige Piktogramm, welches seltener erscheinen soll, hat eine höhere Priorität.&lt;br /&gt;
&lt;br /&gt;
Beispiel (siehe auch Bild rechts):&lt;br /&gt;
&lt;br /&gt;
* Temp display interval = 10&lt;br /&gt;
* Heart display interval = 1&lt;br /&gt;
* XMas tree display interval 5&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich:&lt;br /&gt;
&lt;br /&gt;
* 09:01 Uhr bis 09:04 Uhr: Herz&lt;br /&gt;
* 09:05 Uhr: Tannenbaum&lt;br /&gt;
* 09:06 Uhr bis 09:09 Uhr: Herz&lt;br /&gt;
* 09:10 Uhr: Temperatur&lt;br /&gt;
* 09:11 Uhr bis 09:14 Uhr: Herz&lt;br /&gt;
* 09:15 Uhr: Tannenbaum&lt;br /&gt;
&lt;br /&gt;
usw. Die Einblendungen geschehen grundsätzlich 30 Sekunden nach der vollen Minute. Intervalle gleicher Dauer sollte man vermeiden. Dann wird konsequent nur noch eins der beiden Piktogramme gezeigt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Display.png|miniatur|Web-Interface: Einstellungen des LED-Displays]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Animationen werden immer dann ausgeführt, wenn sich die Anzeige ändert, zum Beispiel bei einem Uhrzeitwechsel. Hier kann man sich die gewünschte Animation aussuchen und auch die dazugehörige Geschwindigkeit eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Animationen sind verfügbar:&lt;br /&gt;
&lt;br /&gt;
* None - Keine Animation&lt;br /&gt;
* Fade - Langsames Überblenden der Buchstaben&lt;br /&gt;
* Roll - Rollen der Wörter von links/rechts/oben/unten&lt;br /&gt;
* Explode - Die Wörter wandern schnell vom Mittelpunkt sternförmig auf ihren Platz&lt;br /&gt;
* Snake - Eine Schlange &amp;quot;frisst&amp;quot; die zuletzt angezeigten Wörter weg&lt;br /&gt;
* Teletype - Die Wörter werden in &amp;quot;Schreibmaschinen-Geschwindigkeit&amp;quot; ausgegeben&lt;br /&gt;
* Cube - Ein Rahmen &amp;quot;fällt&amp;quot; von außen nach innen, um die Anzeige zu löschen&lt;br /&gt;
* Matrix - Matrix-Animation aus dem gleichnamigen Film&lt;br /&gt;
* Drop - Buchstaben alter Wörter fallen aus der Anzeige, Buchstaben neuer Wörter fallen von oben in die Anzeige hinein&lt;br /&gt;
* Squeeze - Die Wörter werden einmal kurz &amp;quot;gequetscht&amp;quot;&lt;br /&gt;
* Flicker - Die Wörter &amp;quot;flackern&amp;quot;, danach erscheint die neue Anzeige&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die Animation &amp;quot;Random&amp;quot;. Hier wird mit Hilfe eines Zufallsgenerators jedes Mal eine andere Animation ausgewählt. Deklariert man eine Animation als Favoriten, dann wird diese von der Zufallsanimation &amp;quot;Random&amp;quot; genutzt. Anderenfalls wird sie von &amp;quot;Random&amp;quot; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Geschwindigkeit kann man in 15 Stufen einstellen. Bei Klick auf die Schaltfläche &amp;quot;Default&amp;quot; wird die Geschwindigkeit auf einen sinnvollen Standardwert gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als zusätzliche Farbanimation kann noch &amp;quot;Rainbow&amp;quot; ausgewählt und konfiguriert werden. Dann wechselt das Display fließend die Farben der LEDs.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Animations.png|miniatur|Web-Interface: Einstellungen der Animationen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier kann eine separate Animation für das Ambilight eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Clock&amp;quot; werden 20, 30 oder 60 Ambilight-LEDs als umlaufende Sekundenanzeige verwendet. Mit &amp;quot;#LEDs&amp;quot; kann man einstellen, wie viele Ambilight-LEDs sich im &amp;quot;Kreis&amp;quot; befinden. Sinnvoll sind hier 20, 30 oder 60. Ausserdem lässt sich mit &amp;quot;Offset of second = 0&amp;quot; diejenige LED einstellen, die mittig oben als Sekunde 0 angebracht ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Beginnt das Ambilight mit 60 LEDs links unten und ist im Uhrzeigersinn angebracht, dann wäre die LED mit Sekunde 0 die Nr. 22. Diese Zahl ist dann hier einzutragen.&lt;br /&gt;
&lt;br /&gt;
Der Ambilight-Modus &amp;quot;Clock2&amp;quot; entspricht dem Modus &amp;quot;Clock&amp;quot;. Jedoch wird hier ein zu-/abnehmender Vollkreis dargestellt.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Rainbow&amp;quot; durchlaufen die Ambilight-LEDs langsam (über mehrere Minuten hinweg) alle Farben des Regenbogens. Dieser läuft unabhängig von der Farbanimation &amp;quot;Rainbow&amp;quot; des Displays.&lt;br /&gt;
&lt;br /&gt;
Ist auf der Display-Webseite eingestellt, dass die Ambilight-Farben nicht synchronisiert werden sollen, dann kann man hier auch unabhängig von dem Display eine eigene Helligkeit und einen anderen RGB-Wert wählen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Ambilight.png|miniatur|Web-Interface: Ambilight]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Mit bis zu acht Timern kann man einstellen, wann die Uhr aus- bzw. eingeschaltet werden soll. Die Einstellung kann in Abhängigkeit der Wochentage eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel rechts wird in der Woche abends die Uhr um 22:30 Uhr abgeschaltet. Eingeschaltet wird dann morgens wieder um 07:00 Uhr. Nach dem Frühstück wird die Uhr dann um 08:00 Uhr wieder abgeschaltet, um dann abends um 17:00 Uhr wieder eingeschaltet zu werden.&lt;br /&gt;
&lt;br /&gt;
Am Wochenende sieht das dann anders aus: Hier ist die Uhr abends länger eingeschaltet, nämlich bis 23:30 Uhr. Morgens geht es erst dann um 09:00 Uhr wieder weiter.&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Timers.png|miniatur|Web-Interface: Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können Timer speziell für das Ambilight eingestellt werden, um zum Beispiel nachts das Ambilight separat abzuschalten. Umschaltzeiten, während die Uhr selbst abgeschaltet ist, werden ignoriert. Sonst gelten dieselben Bemerkungen wie im vorangehenden Kapitel.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Ambilight-Timers.png|miniatur|Web-Interface: Ambilight Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DFPlayer ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können MP3-Tracks konfiguriert werden, die zu bestimmten Zeiten oder Ereignissen von einem Mini-DFPlayer abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Auf der SD-Card müssen 3 Verzeichnisse angelegt werden:&lt;br /&gt;
&lt;br /&gt;
* Verzeichnis 01 - Bell-Mode: Hier werden MP3-Dateien abgelegt, die zu jeder vollen Stunde oder auch Viertelstunde abgespielt werden sollen.&lt;br /&gt;
* Verzeichnis 02 - Speak-Mode: Hier können MP3-Dateien abgelegt werden, welche die auf der Uhr angezeigten Wörter &amp;quot;vorlesen&amp;quot;.&lt;br /&gt;
* Verzeichnis 03 - Alarm: Die hier gespeicherten MP3-Dateien werden zu den eingetragenen Weckzeiten abgespielt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bell Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 000.mp3 - wird um 00:00 Uhr (Mitternacht) abgespielt&lt;br /&gt;
* 001.mp3 - wird um 01:00 und 13:00 Uhr abgespielt&lt;br /&gt;
* 002.mp3 - wird um 02:00 und 14:00 Uhr abgespielt&lt;br /&gt;
* ...&lt;br /&gt;
* 012.mp3 - wird um 12:00 Uhr mittags abgespielt&lt;br /&gt;
* 013.mp3 - wird jede Stunde um xx:15 Uhr abgespielt, falls xx:15 aktiviert wurde&lt;br /&gt;
* 014.mp3 - wird jede Stunde um xx:30 Uhr abgespielt, falls xx:30 aktiviert wurde&lt;br /&gt;
* 015.mp3 - wird jede Stunde um xx:45 Uhr abgespielt, falls xx:45 aktiviert wurde&lt;br /&gt;
&lt;br /&gt;
Beispielsweise können das Aufnahmen von BigBen oder auch Zeitansagen sein.&lt;br /&gt;
&lt;br /&gt;
Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 02&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Speak Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist der Speak Mode aktiviert, werden die Wörter auf dem Display einzeln vorgelesen. Wie oft, wird mit dem &amp;quot;Speak Cycle&amp;quot; eingestellt, z.B. 1 = jede Minute, 5 = alle 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Hier Beispiel-Dateien für das Verzeichnis 02 - sowohl für WC12h als auch WC24h: [[Datei:WordClock24-mp3.zip]].&lt;br /&gt;
&lt;br /&gt;
Der jeweils gewünschte Ordner muss auf die SD-Karte kopiert und dann das Verzeichnis 02-WC12h bzw. 02-WC24h in 02 umbenannt werden. Die MP3-Dateien wurden mit dem Programm &#039;&#039;&#039;[http://www.cross-plus-a.com/de/balabolka.htm Balabolka]&#039;&#039;&#039; erzeugt.&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt: Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wecker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unabhängig von den oben angegebenen Modi und Ruhezeiten können bis zu acht Alarm-Zeiten (Wecker) eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dabei wird die auf der Webseite in der aufgeführten Tabelle angegebene MP3-Datei abgespielt. Im nebenstehenden Beispiel wird die Datei 001.mp3 im Verzeichnis 03 Montags bis Freitags morgens um 06:30 Uhr abgespielt. Die darüber angegebenen Ruhezeiten spielen hier ausnahmsweise &#039;&#039;&#039;keine Rolle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-DFPlayer.png|miniatur|Web-Interface: DFPlayer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Updates für den ESP8266 als auch für den STM32 können über das WLAN eingespielt werden. Dazu ist eine Internet-Verbindung notwendig. Für OTA-Updates (&amp;quot;Over The Air&amp;quot;) ist zwingend ein ESP8266 ESP-12F notwendig. &#039;&#039;&#039;Mit den bisher eingesetzten ESP-01 kann kein OTA-Update eingespielt werden.&#039;&#039;&#039; Jedoch können alte Shields mit ESP-01 auf ESP-12F umgebaut werden: [[WordClock_mit_WS2812#Umbau_von_ESP-01_auf_ESP-12F|Umbau von ESP-01 auf ESP-12F]]&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils die benutzte und die verfügbare Firmware-Version angezeigt. Sind diese gleich, ist ein Update nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039;: Durch Klick auf die Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; kann der Flash-Speicherbereich, wo der ESP8266 die Update-Images sowohl für ESP8266 als auch für STM32 ablegt, neu formatiert werden. Das kann dann notwendig werden, wenn die Images nur unvollständig heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn sowohl die ESP- als auch die STM32-Firmware abweichen, sollte immer zunächst der ESP8266 aktualisiert werden und danach der STM32. Durch Klick auf die Schaltfläche &amp;quot;Update ESP Firmware&amp;quot; wird das Update gestartet. Dieses dauert ca. 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann der STM32 aktualisiert werden. Dazu muss zunächst die richtige Firmware-Variante (HEX-Datei) ausgewählt werden. Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, ist hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]. Ab installierter Version 2.6.0 ermittelt die Software selbst anhand der Hardware-Konfiguration den Namen der passenden HEX-Datei und schlägt diesen dann automatisch vor.&lt;br /&gt;
&lt;br /&gt;
Durch Klick auf die Schaltfläche &amp;quot;Flash STM32&amp;quot; wird der STM32 zunächst in den Bootloader-Modus gebracht, danach wird er neu programmiert. Der STM32 verbleibt solange im Bootloader-Modus, bis die Schaltfläche &amp;quot;Reset STM32&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler beim OTA Update:&#039;&#039;&#039; In Einzelfällen kam es beim OTA Update zu einem Fehler, der auf ein Problem mit dem im ESP enthaltenen Dateisystem hinweist. Dieses Dateisystem wird normalerweise beim Flash der Software in das ESP Modul automatisch erstellt und kann dann z.B. als Zwischenspeicher für OTA Updates von ESP und STM32 genutzt werden. Taucht im OTA-Log ein Fehler wie z.B. &#039;&#039;&#039;error: cannot open file&#039;&#039;&#039; auf, dann hilft es ggf. die Software mit einem anderen Programm in das ESP Modul zu schreiben oder das vorhandene Programm in einer aktuelleren Version zu testen. &#039;&#039;&#039;Alternativ dazu kann man den Flashspeicherbereich des ESP8266 durch Betätigen der Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; neu formatieren und das OTA-Update anschließend neu durchführen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte die aktuelle Version der ESP8266 Flash Download Tools (http://espressif.com/en/support/download/other-tools) Probleme bereiten, könnte man z.B. den NodeMCU Flasher (https://github.com/nodemcu/nodemcu-flasher) testen. Dort einfach unter &amp;quot;Config&amp;quot; das .BIN File laden und dann im Reiter &amp;quot;Operation&amp;quot; den entsprechenden COM Port auswählen und auf &amp;quot;Flash&amp;quot; klicken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Update.png|miniatur|Web-Interface: Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Update ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Während das normale Update über einen Host im Internet durchgeführt wird, kann man über das lokale Update den STM32 vom lokalen PC aus flashen. Das lokale Flashen des ESP8266 ist noch nicht möglich, ist aber für ein späteres Release geplant. Sonst gelten dieselben Bemerkungen wie zum vorhergehenden Kapitel &amp;quot;Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auch hier gilt: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Local-Update.png|miniatur|Web-Interface: Local Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeserver ==&lt;br /&gt;
&lt;br /&gt;
Der Timeserver muss ein RFC 958 konformer NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Alternative Timeserver sind zum Beispiel ntp1.ptb.de (192.53.103.108), ntp2.ptb.de (192.53.103.104) oder time.nist.gov (216.229.0.179).&lt;br /&gt;
&lt;br /&gt;
Eine Liste von europäischen Timeservern findet man u.a. hier: http://www.pool.ntp.org/zone/europe&lt;br /&gt;
&lt;br /&gt;
Den Timeserver konfiguriert man folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Im Browser gibt man als URL die ausgegebene IP-Adresse ein, also z.B. http://192.168.10.1/ . Anschließend wählt man den Menüpunkt &amp;quot;Network&amp;quot; an und gibt in der entsprechenden Zeile die IP-Adresse des Wunsch-Timeservers ein und bestätigt mit &amp;quot;Save&amp;quot;. Nun wird zunächst geprüft, ob der Timeserver das NTP-Protokoll unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Uhrzeit wird alle 3800 Sekunden vom Timeserver geholt. Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] kann man die Übertragung auch jederzeit per Mausklick starten. Das funktioniert auch mit einer angelernten IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
&lt;br /&gt;
Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] Menüpunkt &amp;quot;Network&amp;quot; auswählen, in der Zeile &amp;quot;Timezone&amp;quot; die Abweichung von GMT eingeben. Für die mitteleuropäische Zeitzone wäre das einfach eine 1. Dies entspricht dann GMT+1. Bei einer negativen Abweichung wie GMT-1 muss dann entsprechend -1 eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IR-Fernbedienung ==&lt;br /&gt;
&lt;br /&gt;
In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe Weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt. Die Anlernroutine kann auch über die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] (Menü &amp;quot;Main&amp;quot;) gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man wird nun über eine Laufschrift auf dem LED-Display aufgefordert, folgende FB-Tasten zu drücken:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Tasten für IR-Fernbedienung&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste || Funktion || Laufschrift&lt;br /&gt;
|-&lt;br /&gt;
| Power || Anzeige ein/aus                           || power off/on&lt;br /&gt;
|- &lt;br /&gt;
| OK    || Speichern der Einstellungen               || ok&lt;br /&gt;
|- &lt;br /&gt;
| MODE- || Anzeigemodus erniedrigen                  || decrement display mode&lt;br /&gt;
|- &lt;br /&gt;
| MODE+ || Anzeigemodus erhöhen                      || increment display mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM- || Animation erniedrigen                     || decrement animation mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM+ || Animation erhöhen                         || increment animation mode&lt;br /&gt;
|- &lt;br /&gt;
| HOUR- || Stunde erniedrigen                        || decrement hour&lt;br /&gt;
|- &lt;br /&gt;
| HOUR+ || Stunde erhöhen                            || increment hour&lt;br /&gt;
|- &lt;br /&gt;
| MIN-  || Minute erniedrigen                        || decrement minute&lt;br /&gt;
|- &lt;br /&gt;
| MIN+  || Minute erhöhen                            || increment minute&lt;br /&gt;
|- &lt;br /&gt;
| RED-  || Helligkeit der Farbe Rot erniedrigen      || decrement red brightness&lt;br /&gt;
|- &lt;br /&gt;
| RED+  || Helligkeit der Farbe Rot erhöhen          || increment red brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN- || Helligkeit der Farbe Grün erniedrigen    || decrement green brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN+ || Helligkeit der Farbe Grün erhöhen        || increment green brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE-  || Helligkeit der Farbe Blau erniedrigen    || decrement blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE+  || Helligkeit der Farbe Blau erhöhen        || increment blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT-  || Grundhelligkeit erniedrigen            || decrement global brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT+  || Grundhelligkeit erhöhen                || increment global brightness&lt;br /&gt;
|- &lt;br /&gt;
| AUTO+  || Automatische Helligkeitsregelung ein/aus || toggle auto brightness&lt;br /&gt;
|- &lt;br /&gt;
| TEMP   || Anzeige der Temperatur für 5 Sekunden    || get temperature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.&lt;br /&gt;
&lt;br /&gt;
Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:&lt;br /&gt;
&lt;br /&gt;
* SIRCS (Sony)&lt;br /&gt;
* NEC (Viele Hersteller, sehr verbreitet)&lt;br /&gt;
* SAMSUNG&lt;br /&gt;
* MATSUSHITA&lt;br /&gt;
* KASEIKYO&lt;br /&gt;
&lt;br /&gt;
[[IRMP]] &amp;quot;versteht&amp;quot; jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des [[IRMP]]-Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine passende Fernbedienung gibt es bei &#039;&#039; [http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019 DX] &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Passend beschriftet werden kann die Fernbedienung mit einem der folgenden Labels &amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Fernbedienung Folie ZW.pdf]] &amp;lt;br&amp;gt; &lt;br /&gt;
[[Datei:Fernbedienung Folie ZW2.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
(sie unterscheiden sich in der Anordnung des Power- und Save-Knopfes). Einfach auf eine selbstklebende Folie drucken, ausschneiden und aufkleben. Die unterste Reihe ist für weitere zusätzliche Optionen (z.B. Ambilight, usw.) noch offen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Android App ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Ist ein [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul angeschlossen und korrekt konfiguriert, kann die Uhr per [[WordClock_mit_WS2812#Android_App|Android App]] ferngesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Momentan können folgende Einstellungen vorgenommen werden:&lt;br /&gt;
&lt;br /&gt;
* Ein-/Ausschalten der Uhr&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Anzeige der WordClock-Temperatur&lt;br /&gt;
* Einstellen der Farben (&#039;&#039;&#039;Neu&#039;&#039;&#039;: nun auch RGBW)&lt;br /&gt;
* Manuelle Einstellung einer Grundhelligkeit&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] ein/aus&lt;br /&gt;
* Einstellung des Anzeigemodus&lt;br /&gt;
* Einstellung der Farbanimation, z.B. &amp;quot;Rainbow&amp;quot; (&#039;&#039;&#039;Neu&#039;&#039;&#039;)&lt;br /&gt;
* Einstellung der Animation (Überblenden, Rollen, Explosion etc.)&lt;br /&gt;
&lt;br /&gt;
Es können bis zu 4 Profile konfiguriert und damit auch bis zu 4 unterschiedliche WordClocks gesteuert werden. Den Wechsel der Profile nimmt man mit der Schaltfläche &amp;quot;Laden&amp;quot; vor, das Speichern der Profile mit dem Button &amp;quot;Speichern&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag &amp;quot;Einstellungen&amp;quot;. Bei älteren Android-Versionen ist dafür zunächst die spezielle Menü-Taste zu drücken, bei neueren Android-Versionen geht das auch über die Menüschaltfläche mit den drei übereinanderliegenden Punkten - siehe Bild rechts oben. Die IP-Adresse wird dann dem aktuell ausgewählten Profil zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Unter den Menüpunkten findet man nun auch einen mit dem Eintrag &amp;quot;Tetris&amp;quot;. Damit wird eine Art &amp;quot;Gamepad&amp;quot; eingeblendet, mit dem man auf der Uhr WCtris - einen Tetris-Clone - spielen kann. Viel Spaß!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wc24h-Android.png|miniatur|WC24h Android App]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tutorial zum Aufbau =&lt;br /&gt;
&lt;br /&gt;
Ein Tutorial zum Aufbau der WordClock findet man hier: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung.&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
== Anbringung der WS2812-Streifen ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine 1mm starke Alu-Platte (für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm). Darauf lassen sich nicht nur einfach die WS2812-LED-Streifen aufkleben, auch dient die Alu-Platte der Wärmeabfuhr. Die Alu-Platte kann man sich von einem der eBay-Händler entweder direkt erstehen oder für ca. 3,50 Euro zurechtschneiden lassen.&lt;br /&gt;
&lt;br /&gt;
Den LED-Streifen schneidet man 16 Streifen à 18 LEDs. Bevor man sie auf die LED-Platte klebt, sollte man senkrecht je einen Tesa-Streifen links und rechts auf die Alu-Platte kleben, da sich gezeigt hat, dass die Schnittkanten der Streifen gern einen Kurzschluss mit der Alu-Platte bilden.&lt;br /&gt;
&lt;br /&gt;
Die LED-Streifen werden dann im Ziehharmonika-Verfahren aufgeklebt. Dabei steht jeder 2. Streifen auf dem Kopf. Das hat den Vorteil, dass die Verbindungen zwischen den Streifen möglichst kurz sind. Auf der rechten Seite verbindet man dann die Anschlüsse +5V mit +5V, GND mit GND und DO mit DI - siehe Bild. Man verbindet also den ersten mit dem zweiten Streifen, den dritten mit dem vierten Streifen usw.&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite verbindet man lediglich DO mit DI, also den zweiten Streifen mit dem dritten, den vierten mit dem fünften usw. An den verbleibenden Lötpunkten +5V und GND lötet man an jedem *zweiten* Streifen (1, 3, 5 usw.) die Spannungsversorgung  an. Praktisch ist die Verwendung eines 16-poligen Flachbandkabels, welches man auf einen Flachbandkabel-Stecker aufquetscht. Pin 1 und 2 gehen dann an 5V/GND des ersten Streifens, 3 und 4 an 5V/GND des dritten Streifens usw. Mit ca. 2 m Flachbandkabel kann die komplette Uhr verkabelt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann man mittels 16-poligem Wannenstecker, den man auf eine Lochrasterplatine lötet, die Spannungsversorgung einfach verpolungssicher anstecken. Unter der Lochrasterplatine werden die geradzahligen Pins und die ungeraden Pins je mit einem Kupferdraht verbunden. Mit einer 2-poligen Schraubklemme auf der Lochrasterplatine kann dann das Netzteil angeschlossen werden - siehe Bild rechts. Bei Verwendung eines der Shields aus der Sammelbestellung wird die Lochrasterplatine &#039;&#039;&#039;nicht&#039;&#039;&#039; benötigt - die Spannungsversorgung für die Stripes ist auf den Shields mit eingeplant. &lt;br /&gt;
&lt;br /&gt;
Beim Anschluss des Datensignals sollte beachtet werden, dass zuerst die Status-LED angeschlossen wird und das Signal dann von dieser weiter zur Platte geht. Spannung für die Status-LED kann man sich bequem vom letzten Streifen der Platte holen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wclock24h-WS2812-auf-Alu-Platte.jpg|miniatur|16 WS2812-Streifen auf Alu-Platte]]&lt;br /&gt;
[[Datei:Wclock24h-16-pol-Wanne.png|miniatur|16pol Wanne zum Verbinden des Netzteils und der Streifen]]&lt;br /&gt;
[[Datei:Wclock24h-Spannungsvergung-Streifen.jpg|miniatur|Anschluss der Streifen an die Spannungsversorgung]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine Alu-Platte (1mmx310mmx310mm).&lt;br /&gt;
Der Aufbau ist analog zu der WordClock 24h zu betrachten. Der Unterschied liegt darin, dass bei der WC12h die LED Streifen mit dem Sonderabstand benutzt werden und dieser in 10 Streifen a 11 LEDs geteilt wird. Sowie in 4 Einzel LEDs für die Minutenanzeigen in den Ecken.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Verbindung der Streifen erfolgt dann analog zu der oben beschriebenen Weise.&lt;br /&gt;
|| &lt;br /&gt;
[[Datei:Aufbau WC12h WS2812.jpg|mini]]&lt;br /&gt;
Aufgebaute WC12h mit WS2812 Streifen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zwischenböden ==&lt;br /&gt;
Es gibt insgesamt 3 Varianten der Zwischenböden.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei Varianten für die WordClock 12h (mit und ohne Ambilight Aussparungen) und eine Variante für die WordClock 24h&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h OHNE Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden ohne Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden ohne Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h MIT Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden mit Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden mit Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 OHNE Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h Boden Rueckseite.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Vorderseite.jpeg|mini|Vorderseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Rueckseite schraeg.jpeg|mini|Rückseite schräg]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 mit Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h MIT Ambilight-innen.jpg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h MIT Ambilight-aussen.jpg|mini|Vorderseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
(in Arbeit)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Shields für STM32 MiniDev und Nucleo Board ==&lt;br /&gt;
Hier werden nur die aktuellen Versionen der Shields beschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
[[WordClock_mit_WS2812#Historie_der_Hardware-Versionen|Ältere HW Versionen sind im Anhang aufgeführt]]&amp;lt;br&amp;gt;&lt;br /&gt;
=== Shield für STM32 MiniDevBoard ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das MiniDevBoard in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R16 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP13 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) und JP12 (Prog/Run) wurde um 90° gedreht&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Ein Bild folgt noch.&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden. Bild zeigt die v4 mit RTC, TSOP, AMS1117, ESP12, Spannungsabschaltung, LDR&lt;br /&gt;
||[[Datei:MiniDev_v4_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zum Stromstecker (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V4:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32F411 Nucleo Board ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das Nucleo Board in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Aufdruck des v4 hat sich der Fehlerteufel eingeschlichen. Der Aufdruck spricht noch von der Version3. Version 4 ist aber gut an den vergoldeten Lötpads zu erkennen. V3 hat die Lötpäds versilbert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R15 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP11 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) wurde neu positioniert und liegt nun nicht mehr unter dem Nucleo Board&lt;br /&gt;
* JP8 (SWD) wurde neu hinzugefügt&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Bild folgt noch&amp;lt;br&amp;gt;&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board. Bild zeigt noch die v3&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V4:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tischversion der WC12h aus dem 3D Drucker ==&lt;br /&gt;
[[Datei:WC12h_desk_printed.JPG|mini]]&lt;br /&gt;
&lt;br /&gt;
Wer Zugriff auf einen 3D Drucker mit einem Druckbereich &amp;gt;= 180x190mm hat, der findet bei Thingiverse 3D Modelle für alle unterstützten Sprachversionen der Software. Die Modelle der WC12h sind recht einfach zu drucken und sollten sich eigentlich mit so ziemlich jedem Gerät realisieren lassen. Wenn eine Version mit eingebautem Diffusor gedruckt werden soll, steht und fällt das Vorhaben mit der Ausrichtung des Druckbetts. Schon ein Versatz von 0.1mm über die gesamte Fläche kann hier das Druckergebnis ziemlich negativ beeinträchtigen. Aber in der Regel kennen die Besitzer solcher Geräte ja die Stolpersteine. Falls euer Druckbett nicht wirklich gerade, oder nicht sauber ausgerichtet ist, könnt ihr zur Not einfach eine Version ohne Diffusor drucken und diesen dann in Eigenregie erstellen (Butterbrotpapier, Milchglasfolie, usw.).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WC12h_desk_beleuchtet.jpg|mini]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Displaymatrix der 3D Modelle ist wegen der kleinen Größe der Uhr für den Abstand eines 90LED/m Streifens (11.11mm) ausgelegt, die man z.B. bei eBay, Aliexpress und Konsorten kaufen kann. Ich habe Anfang des Jahres ca. 12 USD inkl. Versand für einen Meter WS2812B mit 90 LEDs pro Meter bei Aliexpress bezahlt, bei 2 Metern habt ihr also Kosten von etwas über 22 Euro für die Streifen.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Update 10/2017&#039;&#039;&#039;: Wegen der mittlerweile schlechten Verfügbarkeit der 90LED/m habe ich Modelle für 96LED/m Streifen ergänzt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In Sachen Ambilight gibt es hier 2 verschiedene Deckel zur Auswahl, mit denen ihr z.B. den Sekundenzeiger der Uhr oder das Ambilight als Gehäusebeleuchtung benutzen könnt. Im Deckel ist jeweils ein Kreis für die Anbringung der Streifen vorhanden. Der Umfang der Kreise ist berechnet für den Einsatz von 30 LEDs eines 60 LED pro Meter Streifens, bzw. 60 LEDs eines 144 LED pro Meter Streifens. Achtet darauf hier nicht unterschiedliche LED Typen zu mischen (z.B. SK6812 für die Matrix und WS2812 für das Ambilight)! Ich persönlich habe gute Erfahrungen mit den LEDs von &amp;quot;BTF Lighting&amp;quot; bei Aliexpress gemacht.&lt;br /&gt;
&lt;br /&gt;
Hier geht es zur [http://www.thingiverse.com/thing:2130830 WordClock 12h (desk clock edition) bei Thingiverse]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Sammelbestellungen =&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung LED Stripes, Zwischenböden, Shields ==&lt;br /&gt;
Für die WC12h Variante der WordClock werden WS2812 Stripes als Spezialanfertigung mit einem Rastermaß von 28,1mm eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;WS2812 Pakete&#039;&#039;&#039; angeboten (WC12h):&lt;br /&gt;
* Paket 5 (Uhr - STM32 Basis - WS2812) - 40,80Eur : 120 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
* Paket 6 (Ambilight - STM32 Basis - WS2812) - 20,40Eur : 60 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
(durch die Umstellung des Ambilight Paketes auf 60 LEDs, kann die umlaufende Sekundenanzeige realisiert werden)&lt;br /&gt;
&lt;br /&gt;
Für die WC24h werden die WS2812 Stripes nicht über eine Sammelbestellung bestellt, da hier das Standardformat genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Zwischenböden&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Zwischenboden (WC12h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC12h) mit Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) mit Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Shields&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Shield für STM32 MiniDevBoard - 3,50Eur&lt;br /&gt;
* Shield für STM32 NucleoBoard - 5,50Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der Shields&#039;&#039;&#039; erfolgt als Großbrief:&lt;br /&gt;
* innerhalb BRD – 4,00Eur&lt;br /&gt;
* Österreich – 6,00Eur&lt;br /&gt;
* Schweiz - 6,00Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der WS2812-Stripes&#039;&#039;&#039; erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) – 6,50Eur&lt;br /&gt;
* Österreich – 15,50Eur&lt;br /&gt;
* Schweiz – in die Schweiz kann nur als normales Paket versendet werden, Kosten hierzu siehe unten&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand mit Zwischenboden&#039;&#039;&#039; erfolgt als normales Paket:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 10,00Eur (bis 2 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 12,00Eur (bis 4 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 18,00Eur (ab 5 Böden)&lt;br /&gt;
* Österreich – 20,00Eur (bis 2 Böden)&lt;br /&gt;
* Österreich – 25,00Eur (bis 4 Böden)&lt;br /&gt;
* Schweiz - 31,00Eur (bis 2 Böden)&lt;br /&gt;
* Schweiz - 40,00Eur (bis 4 Böden)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&amp;lt;br&amp;gt;&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig und wird dann entsprechend mitgeteilt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 06.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;09.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~10.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~17.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-front-dia.jpg|miniatur|Frontplatte: Dia]]&lt;br /&gt;
[[Datei:Wordclock-front-full.jpg|miniatur|Frontplatte: Vollansicht]]&lt;br /&gt;
[[Datei:WordClock-gelb.jpg|miniatur|4-sprachige Frontplatte]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatten bleiben identisch zu denen aus dem früheren [[Word Clock|WordClock]]-Projekt. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version, die auch für die Sammelbestellung gilt:&lt;br /&gt;
&lt;br /&gt;
 E S K I S T L F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N Z W A N Z I G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN ZWANZIG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI|VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T G N A C H V O R J M    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B Q Z W Ö L F P    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB ZWÖLF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W E I N S I E B E N    &amp;lt;nowiki&amp;gt;==&amp;gt; ZW|EI|N|S|IEBEN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K D R E I R H F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W A C H T Z E H N R S    &amp;lt;nowiki&amp;gt;==&amp;gt; ACHT ZEHN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B S E C H S F M U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; SECHS UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist es möglich, vier regionale Sprechweisen darzustellen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wessi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rhein-Ruhr-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zwanzig nach eins&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ossi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schwaben-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zwanzig nach zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC12h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also bitte auch in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Minutenpunkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;WC12h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC12h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise pro Stück:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 42,- EUR.&lt;br /&gt;
   - weiß: 49,- EUR.&lt;br /&gt;
   - rot: 49,- EUR.&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Aus der letzten Sammelbestellung sind aufgrund einer Fehlproduktion der Druckerei von den schwarzen WC12h noch WC12h-Frontplatten übrig, welche 3,5mm kleiner sind, also lediglich 446,5mm x 446,5mm statt 450mm x 450mm groß sind. Diese lassen sich nur mit einem Rahmen - wie z.B. dem im Artikel empfohlenen Alu-Rahmen einsetzen. Für den rahmenlosen Einsatz eignen sie sich eher nicht, weil dann der Zwischenboden leicht übersteht. Auf diese Frontplatten gebe ich einen Preisnachlass von 10,- EUR.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet alle 4 Sprachversionen:&lt;br /&gt;
&lt;br /&gt;
* Wessi-Modus (viertel nach/vor)&lt;br /&gt;
* Ossi-Modus (viertel/dreiviertel)&lt;br /&gt;
* Rhein-Ruhr-Modus (viertel nach/vor, zwanzig nach/vor)&lt;br /&gt;
* Schwaben-Modus (viertel/dreiviertel, zwanzig nach/vor)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Edelstahl Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Edelstahl126.jpg|miniatur]][[Datei:Edelstahl139.jpg|miniatur]][[Datei:Edelstahl092.jpg|miniatur|Loch]][[Datei:Edelstahl116.jpg|miniatur|Buchstabe]]&lt;br /&gt;
Eckdaten der Edelstahlblende:&lt;br /&gt;
&lt;br /&gt;
  - Abmessungen: ca. 450x450x1 mm &lt;br /&gt;
  - gelasert gem. dxf Vorgabe, &lt;br /&gt;
  - Material 1.4301-2G, &lt;br /&gt;
  - eins. K320 geschliffen/gebürstet, &lt;br /&gt;
  - ohne weitere Nachbearbeitung, &lt;br /&gt;
  - Layout unterscheidet sich von der Originaluhr&lt;br /&gt;
&lt;br /&gt;
Verwendet wird hierbei die Schriftart Lucida Console allerdings erweitert. Die Schriftart hat Stege, so dass freie Inselteile (z.&amp;amp;nbsp;B. Innenteil O) nicht lose sind. Jeder Steg hat eine Breite von mind. 2mm.&lt;br /&gt;
[[Datei:Edelstahlfront_V2.png|miniatur|ohne]]&lt;br /&gt;
Die Buchstaben werden entsprechend ausgelasert und müssen von hinten noch mit einem Diffusor versehen werden. Der Diffusor ist nicht Bestandteil des Angebots. &lt;br /&gt;
&lt;br /&gt;
Hinweise zum Diffusor findet ihr hier: &amp;lt;br /&amp;gt;&lt;br /&gt;
http://christians-bastel-leben.blogspot.de/2012/04/diffusorfolien.html&lt;br /&gt;
&lt;br /&gt;
Er hat die Folien mit der schwarzen Platte getestet. Er sagt die besten Ergebnisse hatte er mit folgender Folie:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.plexiglas-shop.com/DE/de/plexiglas-folie-5m9m5apyxic/plexiglas-folie-weiss-99532-gt-1-0-mm-iqq6a1wurpd~p.html&lt;br /&gt;
&lt;br /&gt;
Eine Plexiglasplatte hatte ich auch getestet, doch war meine zu breit und sah dann nicht gut aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand: 26.11.2017: Sammelbestellung ist aufgegeben. Habe noch Blenden übrig. Bei Bedarf einfach melden.  (Benutzer [http://www.mikrocontroller.net/user/show/hansa hansa]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Preise der Blenden:&lt;br /&gt;
&lt;br /&gt;
  Frontblende:                  44 Euro (inkl.MwSt)&lt;br /&gt;
  Verpackung :                   5,-  Euro (2 x 3mm MDF, als Rückwand verwendbar)&lt;br /&gt;
  Versand per GLS: 5 Euro&lt;br /&gt;
  Versand in die Schweiz: 8 Euro (wird direkt in der Schweiz verschickt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Selbstnachbau hier die DXF-Datei [[Datei:EdelstahlFrontV2.dxf]]&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Diese Dateidaten müssen um Faktor 10 vergrössert werden!&lt;br /&gt;
Sonst kommt eine 45x45mm Platte an. 8-(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung LED Stripes ==&lt;br /&gt;
&lt;br /&gt;
Eine Sammelbestellung der LED-Stripes für die WC24h ist derzeit nicht geplant, da hier WS2812-Stripes mit dem Standard-Rastermaß von 60 LEDs/m benötigt werden. Diese sind sehr einfach bei eBay oder Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Zwischenböden ==&lt;br /&gt;
&lt;br /&gt;
Wir können nun auch die WC24h Zwischenböden über die Sammelbestellung anbieten.&lt;br /&gt;
&lt;br /&gt;
* Zwischenboden für Wordclock 24h (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Alle Details zu der Sammelbestellung ist weiter oben bei der [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|WC12h Sammelbestellung beschrieben]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-Frontplatte-rot.jpg||right|WordClock24h-rot]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet über ein Dutzend Sprachvarianten:&lt;br /&gt;
&lt;br /&gt;
* hh mm (12)&lt;br /&gt;
* hh mm (24)&lt;br /&gt;
* hh und mm (12)&lt;br /&gt;
* hh und mm (24)&lt;br /&gt;
* mm nach hh (12+)&lt;br /&gt;
* mm nach hh (24)&lt;br /&gt;
* Ossi/Berlin (12)&lt;br /&gt;
* Ossi/Berlin (12+)&lt;br /&gt;
* Oesi (12)&lt;br /&gt;
* Oesi (12+)&lt;br /&gt;
* Rhein/Ruhr (12)&lt;br /&gt;
* Rhein/Ruhr (12+)&lt;br /&gt;
* Schwaben (12)&lt;br /&gt;
* Schwaben (12+)&lt;br /&gt;
* Wessi (12)&lt;br /&gt;
* Wessi (12+)&lt;br /&gt;
* Countdown bis Mitternacht&lt;br /&gt;
* Temperatur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC24h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Punkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;W24h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC24h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 44,- EUR&lt;br /&gt;
   - weiß: 49,- EUR&lt;br /&gt;
   - rot: 49,- EUR&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR für Verpackungs- und Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Die ESP8266-Firmware bietet eine API, über welche die Uhr konfiguriert werden kann. Diese API wird zum Beispiel von der Android-App genutzt, um die wichtigsten Einstellungen vorzunehmen. Allerdings ist die Kommunikation über die API momentan nur &amp;quot;One-Way&amp;quot;, d.h. es können nur Befehle gesandt werden, aber keine momentanen Einstellungen abgerufen werden. Das wird zukünftig noch geändert, so dass auch sämtliche Konfigurationsparameter abgerufen und eingestellt werden können - analog zum Webinterface.&lt;br /&gt;
&lt;br /&gt;
Der ESP8266 horcht auf UDP-Port 2424, die UDP-Messages sind zwischen 1 und 7 Bytes lang. Das erste Zeichen ist immer ein Buchstabe, z.B. &#039;C&#039;. Die weiteren Parameter sind jeweils Bytes, welche binär codiert sind, also 1 Parameter = 1 Byte. Es wird KEIN Abschluss-Zeichen, etwa ein &#039;\n&#039; oder sonstiges gesandt.&lt;br /&gt;
&lt;br /&gt;
=== API Kommandotabelle ===&lt;br /&gt;
&lt;br /&gt;
 C r g b [w]    - Farben (Colors) setzen&lt;br /&gt;
                    r =  0 ... 63        Rot&lt;br /&gt;
                    g =  0 ... 63        Grün&lt;br /&gt;
                    b =  0 ... 63        Blau&lt;br /&gt;
                    w =  0 ... 63        Weiß (nur bei SK6812-RGBW)&lt;br /&gt;
&lt;br /&gt;
 D m            - Anzeigemodus (Display-Mode) setzen&lt;br /&gt;
                  WC12h:&lt;br /&gt;
                    m =  0               Wessi&lt;br /&gt;
                    m =  1               Ossi&lt;br /&gt;
                    m =  2               Rhein-Ruhr&lt;br /&gt;
                    m =  3               Schwaben&lt;br /&gt;
                    m =  4               Schweizerdeutsch 1&lt;br /&gt;
                    m =  5               Schweizerdeutsch 2&lt;br /&gt;
                    m =  4               Englisch 1&lt;br /&gt;
                    m =  5               Englisch 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  WC24h:&lt;br /&gt;
                    m =  0               hh mm (12)&lt;br /&gt;
                    m =  1               hh mm (24)&lt;br /&gt;
                    m =  2               hh und mm (12)&lt;br /&gt;
                    m =  3               hh und mm (24)&lt;br /&gt;
                    m =  4               mm nach hh (12+)&lt;br /&gt;
                    m =  5               mm nach hh (24)&lt;br /&gt;
                    m =  6               Ossi/Berlin (12)&lt;br /&gt;
                    m =  7               Ossi/Berlin (12+)&lt;br /&gt;
                    m =  8               Oesi (12)&lt;br /&gt;
                    m =  9               Oesi (12+)&lt;br /&gt;
                    m = 10               Rhein/Ruhr (12)&lt;br /&gt;
                    m = 11               Rhein/Ruhr (12+)&lt;br /&gt;
                    m = 12               Schwaben (12)&lt;br /&gt;
                    m = 13               Schwaben (12+)&lt;br /&gt;
                    m = 14               Wessi (12)&lt;br /&gt;
                    m = 15               Wessi (12+)&lt;br /&gt;
&lt;br /&gt;
 A a            - Animation setzen&lt;br /&gt;
                    a =  0               Keine Animation&lt;br /&gt;
                    a =  1               Keine&lt;br /&gt;
                    a =  2               Fade&lt;br /&gt;
                    a =  3               Roll&lt;br /&gt;
                    a =  4               Explode&lt;br /&gt;
                    a =  5               Random&lt;br /&gt;
                    a =  6               Snake&lt;br /&gt;
                    a =  7               Teletype&lt;br /&gt;
                    a =  8               Cube&lt;br /&gt;
                    a =  9               Matrix&lt;br /&gt;
                    a = 10               Drop&lt;br /&gt;
                    a = 11               Squeeze&lt;br /&gt;
                    a = 12               Flicker&lt;br /&gt;
&lt;br /&gt;
 F f            - Farbanimation setzen&lt;br /&gt;
                    f =  0               Farbanimation aus&lt;br /&gt;
                    f =  1               Farbanimation Rainbow&lt;br /&gt;
&lt;br /&gt;
 B b            - Helligkeit (Britghtness) setzen&lt;br /&gt;
                    b =  0 ... 15        Helligkeit&lt;br /&gt;
&lt;br /&gt;
 L l            - Automatische Helligkeitsregelung&lt;br /&gt;
                    l =  0               Regelung aus&lt;br /&gt;
                    l =  1               Regelung an&lt;br /&gt;
&lt;br /&gt;
 P p            - Power&lt;br /&gt;
                    p =  0               Power off&lt;br /&gt;
                    p =  1               Power on&lt;br /&gt;
&lt;br /&gt;
 W              - Temperaturanzeige aktivieren&lt;br /&gt;
&lt;br /&gt;
 T y m d h i s  - Datum/Zeit (Time) setzen:&lt;br /&gt;
                    y =  0 ... 99        Jahr seit 2000&lt;br /&gt;
                    m =  1 ... 12        Monat&lt;br /&gt;
                    d =  1 ... 31        Tag im Monat&lt;br /&gt;
                    h =  0 ... 23        Stunde&lt;br /&gt;
                    i =  0 ... 59        Minute&lt;br /&gt;
                    s =  0 ... 59        Sekunde&lt;br /&gt;
&lt;br /&gt;
 gT x           - Tetris&lt;br /&gt;
                    x = s                Tetris starten&lt;br /&gt;
                    x = l                Links&lt;br /&gt;
                    x = r                Rechts&lt;br /&gt;
                    x = d                Unten&lt;br /&gt;
                    x = u                Hoch (hier: Drehen)&lt;br /&gt;
                    x = m                Fallenlassen&lt;br /&gt;
                    x = q                Quit: Beenden&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Historie der Hardware-Versionen ==&lt;br /&gt;
=== Shield für STM32 MiniDevBoard (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des MiniDev Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board ist 38x110mm und verbindet alle Komponenten miteinander.&amp;lt;br&amp;gt;Dieses Board ist die optimale Variante für die klassische 10x11 WordClock. Es enthält alle Schnittstellen für die WordClock und ist für die WC12 als auch für die WC24 Variante geeignet.&lt;br /&gt;
&#039;&#039;&#039;Bei dieser Version (März 2016) sind die Anschlüsse für den UART auf dem Shield so beschriftet, dass (ausnahmsweise) TX -&amp;gt; TX und RX -&amp;gt; RX verbunden werden müssen.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:MiniShield Vorderseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite&lt;br /&gt;
||[[Datei:MiniShield Rueckseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board soweit bestückt - es fehlt hier noch das STM32. Das STM32 MiniDevBoard sollte direkt ohne weiteren Sockel auf das Shield gelötet werden.&lt;br /&gt;
||[[Datei:MiniShield Bestueckt.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Hier nun das vollbestückte Shield, incl STM32, ESP8266, RTC, DS1820, AMS1117&lt;br /&gt;
||[[Datei:MiniShield Bestueckt incl STM32.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards:&amp;lt;br&amp;gt;Einzige Abweichung: +5V ist an die UART Schnittstelle mit raus geführt.&lt;br /&gt;
||[[Datei:MiniShield Schaltplan.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v2 enthält folgende Anpassungen:&lt;br /&gt;
* am UART ist nun auch +5V ausgeführt&lt;br /&gt;
* Rastabstand bei DS3231, TSOP, LDR, Data sind nun einheitlich und können somit mit einem durchgehenden PinHeader bestückt werden&lt;br /&gt;
* die Pins für das DS3231 sind gespiegelt. Damit liegt die Batterie nun oben und steht nicht mehr nach unten über&lt;br /&gt;
* Es wurde die Abschaltschaltung für die 5V Versorgung der WS2812 Streifen eingebaut. Somit kann optional die Versorgungsspannung geschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:MiniDev v2 TOP.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Im Lieferzustand ist die Abschaltschaltung gebrückt. Wird die Abschaltschaltung eingebaut, muss auf der Unterseite eine Leiterbahn durchtrennt werden! Diese ist hier rot umrandet!&#039;&#039;&#039;&lt;br /&gt;
||[[Datei:MiniDev v2 BOTTOM.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bestückte Bilder folgen noch.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards als V2:&lt;br /&gt;
||[[Datei:MiniDev v2 Schematic.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurden zwei Taster (WPS / User) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:MiniDev_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bei bestückten STM32 kann man gut erkennen, dass leider der 4-Pin-Header für den UART Anschluss sowie der 3-Pin-Header für PROG/RUN jeweils mit einem Pin unter dem Shield liegen.&lt;br /&gt;
* Beim UART Anschluss wird einfach nur ein 3-Pin-Header verwendet und +5V nicht angeschlossen. Was keine Funktionsbeeinträchtigung bedeutet.&lt;br /&gt;
* Der 3-Pin-Header für PROG/RUN kann &#039;&#039;&#039;nicht direkt&#039;&#039;&#039; bestückt werden. Stattdessen muss hier mit einer 3-adrigen-Verlängerung gearbeitet werden.&lt;br /&gt;
Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
||[[Datei:MiniDev_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V3:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32 Nucleo-Board (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des Nucleo Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Shield ist 90mm*55mm klein und wird auf das nucleo-Board aufgesteckt. Es enthält alle bekannten Schnittstellen für die WordClock (egal ob 12h oder 24h) und ist zusammengebaut ca 19mm hoch.&lt;br /&gt;
Es passt somit problemlos in eine Aussparung des Zwischenbodens.&lt;br /&gt;
|| [[Datei:Ns-Bild1.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ebenfalls integriert sind Anschlüsse, um den abgesägten ST-Link zur Programmierung oder Kommunikation über UART mit dem PC zu verbinden. Dabei muss der abgesägte ST-Link von interner auf externe Programmierung umgestellt werden. Dazu zieht man beide Jumper an CN2 auf dem ST-Link (rechts neben dem SWD-Header) ab. Wichtig ist, auch noch eine Verbindung vom SWD-Header Pin1 (VDD ganz oben) zu 3V3 des Nucleo-Teils herzustellen. Das ST-Link misst über VDD -&amp;gt; 3V3 die Betriebsspannung des STM32.&lt;br /&gt;
&lt;br /&gt;
||[[Datei:STLink-to-Nucleo.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beschreibung der Schnittstellen:&lt;br /&gt;
Die Belegung der meisten Schnittstellen ergibt sich aus den nebenstehenden Bildern.&lt;br /&gt;
Um das RTC Modul, welches entweder ein DS3231 oder ein DS1307 sein kann, mit Spannung zu versorgen, gibt es die Stiftleiste St-07, welche mit einem Jumper die Spannung am RTC Modul auf 3,3V oder 5V einstellt.&lt;br /&gt;
Die Stiftleiste St-04 kann per Pfostenfeldbuchse und Flachbandkabel insgesamt 8 mal die Spannung in die WS2812 Streifen einspeisen (siehe Beispiel weiter oben im Artikel).&lt;br /&gt;
||[[Datei:Ns-sh2.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| In dem nebenstehenden Bild ist das bestückte Nucleo Board zu sehen. Die einzelnen Module werden hier rechts und links an den überstehenden Pins angebracht.&lt;br /&gt;
||[[Datei:Nucleo_bestueckt.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Seit Juli 2016 wird das Nucleo-Shield in der Version V2.1a ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Es enthält jetzt auch die Möglichkeit, die Abschaltung der WS2812 LEDs per Hardware vorzunehmen. Dazu wurden die entsprechenden Bauteile auf das Board gepackt.&lt;br /&gt;
Außer dem Leistungs MOSFET IRF9310 wurde alles in bedrahteter Technik ausgeführt.&lt;br /&gt;
Wer die Bauteile für die Abschaltung (T1, T2, D1, R7, R8 und R9) NICHT einbaut, muss, wie in nebenstehendem Bild gezeigt, vier Lötbrücken einbauen.&lt;br /&gt;
&lt;br /&gt;
Analog dazu muss derjenige, der die Abschaltung einbaut, die Lötbrücken offen lassen (siehe unteres Bild, roter Kreis).&lt;br /&gt;
|| [[Datei:IMG 0366mod.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der Anschluss der externen Komponenten erfolgt nach neben stehendem Schaltplan an das nucleo Board.&lt;br /&gt;
|| [[Datei:Nucleo-Shield.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Leider haben sich zwei Bugs in den Platinenentwurf eingeschlichen.&lt;br /&gt;
Zum einen gibt es Kurzschlüsse an den Pluspolen der Kondensatoren C1 und C3. Der Workaround besteht darin, das Bohrloch etwas aufzuweiten, um die ungewünschte Verbindung zu Masse zu trennen (siehe Bild)&lt;br /&gt;
|| [[Datei:NS Bug-1.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der zweite Bug betrifft nur diejenigen, die die hardwaremäßige Abschaltung der WS2812 LEDs einbauen.&lt;br /&gt;
Hier muss, wie im nebenstehenden Bild gezeigt, eine kleine Verbindung mit einem Stück Kabel hergestellt werden.&lt;br /&gt;
|| [[Datei:NS Bug-2.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Shield muss über St-08 mit 5V versorgt werden. Die für die Schnittstellen benötigten 3,3V wird auf dem Shield selbst mit einem LM3940-3.3 erzeugt.&lt;br /&gt;
&lt;br /&gt;
Hier findet ihr die Stückliste zum Nucleo-Board und den Link zum öffentlichen Reichelt Warenkorb (noch ohne T1, T2, D1, R7, R8 und R9).&lt;br /&gt;
 [[Datei:Wc24wk.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurde ein Taster (WPS) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
* Komplettes Redesign&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:Nucleo_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board.&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 befindet sich also bei &amp;quot;IRF&amp;quot; des Bestückungsdrucks).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V3:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss ESP8266 ESP-01 ==&lt;br /&gt;
&lt;br /&gt;
Das ESP-01 Modul wurde lediglich bei den älteren Shields verwendet. Mittlerweile (ab Shield v3) wird es nicht mehr verwendet, weil es durch das ESP-12F ersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#ESP8266|ESP8266]] ESP-01: WLAN Modul&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-ESP8266-ESP-01.png|miniatur|Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA6&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4 (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA1&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 GPIO2 via 10k an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ab der Software Version 2.1.0 sind der HTML-Codegenerator und die Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266 ausgelagert. Deshalb ist ein ESP-Modul für das Betreiben der WordClock unbedingt erforderlich.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Umbau von ESP-01 auf ESP-12F ==&lt;br /&gt;
&lt;br /&gt;
Die älteren Shields, welche noch den Anschluss für den ESP-01 haben, können auf das ESP-12F umgebaut werden. Dafür besorgt man sich zusätzlich zum ESP-12F einen Adapter wie diesen hier:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.de/itm/PCB-Adapter-ESP-07-12-Board-fuer-ESP8266-WIFI-Wlan-Serial-Modul-ESP-12E-E-/252713824790&lt;br /&gt;
&lt;br /&gt;
Dieser hat die Widerstände R2 und R3 auch schon direkt auf dem Adapter. Lediglich die Widerstände R1 und R4 (siehe Schaltbilder rechts) müssen beim STM32F103-Mini-Board zusätzlich angebracht werden, siehe unten. Beim Nucleo-Board ist der Pulldown an BOOT0 bereits auf der Nucleo-Platine integriert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Mini-Board&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an R (STM32F103-Mini-Development-Board RESET)&lt;br /&gt;
* ESP8266 GPIO4 an BOOT0-Jumper (Mittlerer Anschluss) und an Pulldown 10k&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Mini-Board-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-STM32F103-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an MiniBoard STM32F103]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Nucleo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an Nucleo RESET&lt;br /&gt;
* ESP8266 GPIO4 an Nucleo BOOT0&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Nucleo-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-Nucleo-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an Nucleo STM32F4xx]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beim Mini-Board findet man den Pin BOOT0 verborgen unter dem oberen Jumper - siehe Bild rechts. Dieser muss entfernt werden. Anschließend verbindet man den ESP-12F-Anschluss D16 (GPIO16, ab Version 2.6.0: D4, also GPIO4) mit dem mittleren Pin des Jumper-Anschlusses. Bei der Gelegenheit kann dann auch der Pulldown-Widerstand R1 zwischen B00T0 und dem Nachbar-Pin (&amp;quot;0&amp;quot;) angebracht werden.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board wird der Pin BOOT0 bereits per 10k Pulldown auf Low-Pegel gezogen. Hier kann der ESP-Pin GPIO16 (ab Version 2.6.0: GPIO4) direkt ohne zusätzlichen Pulldown an BOOT0 angeschlossen werden. Zu beachten ist hier lediglich, dass kein Jumper auf Pin5-7 von CN7 steckt. Dies ist aber standardmäßig sowieso nicht der Fall.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:STM32F103-Bootloader-2.6.0.png|miniatur|Anschluss ESP8266 ESP-12F an BOOT0 des STM32F103-MiniBoards]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historie der Software-Versionen ==&lt;br /&gt;
=== Android App ===&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
Behobene Fehler:&lt;br /&gt;
* Animations- und Anzeigelisten konnten nicht gescrollt werden&lt;br /&gt;
* Titel der Animations- und Modus-Dialoge war falsch (%d wählen)&lt;br /&gt;
* Display Ein und Aus zeigten als Meldung immer &amp;quot;Display Ein gesendet!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Änderungen:&lt;br /&gt;
* Farbregler automatisch verbergen, wenn Regenbogen-Farbanimation gewählt wurde&lt;br /&gt;
* Automatische IP-Suche&lt;br /&gt;
* Laden und Speichern der Profile in einem Dialog zusammengefasst&lt;br /&gt;
* Info anzeigen, wenn beim Starten keine Netzwerkverbindung besteht&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Beim Start (oder auf Knopfdruck) werden die aktuellen Einstellungen von der Uhr geladen.&lt;br /&gt;
* Neu: Es können bis zu vier Profile angelegt werden, um die Einstellungen für bis zu vier Uhren zu steuern.&lt;br /&gt;
* Neu: Gamepad für Spiele wie z.B. Tetris&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Alle aktuell vorgesehenen Animationen können nun vollständig über die App ausgewählt werden&lt;br /&gt;
* RGBW-LED-Unterstützung: Unter dem Menü &amp;quot;Einstellungen&amp;quot; kann nun eingestellt werden, dass RGBW-LEDs eingesetzt werden.&lt;br /&gt;
* Die Oberfläche ist nun &amp;quot;scrollable&amp;quot;, kann also bei kleineren Mobilgeräten, wo nicht alles draufpasst, gerollt werden.&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animationen Snake, Teletype und Cube nun auch über die App einstellbar&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Auswählen der Farbanimation &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Button für Temperaturanzeige eingebaut&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 Firmware ===&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Web-Seite: &amp;quot;DFPlayer&amp;quot; zum Abspielen von MP3-Tracks bei vordefinierten Ereignissen.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* OTA-Flash des STM32: Der Flash-Inhalt wird nun erst unmittelbar vor dem eigentlichen Flash-Vorgang gelöscht, d.h. nach allen Konsistenzprüfungen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix in Local Update über OTA: Es wurde in V2.6.3 immer diejenige Datei geflasht, die zuletzt über das Remote Update heruntergeladen wurde.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Korrekturen in den STM32-OTA-Flash-Routinen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anpassung des Bootloaders an Nucleo STM32F4xx.&lt;br /&gt;
* Ambilight-Mode Clock: 5 Sekunden Marker nun an- und abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Das aktuelle Datum/Uhrzeit wurde im Webinterface nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button im Webinterface&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface - ungetestet.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer - ungetestet.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Unterstützung des ESP8266 ESP-12F&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;&lt;br /&gt;
* Neues Piktogramm &amp;quot;Fireworks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auswahl der Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Verbesserungen bei der Kommunikation zwischen STM32 und ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0b ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - Umlaute in Wettertexten wurden nicht korrekt gezeigt. Konvertierung der Umlaute von openweathermap-Inhalten von UTF8 nach ISO8859 nachgeholt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0a ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - beim Wechseln in den AP-Modus wurde fälschlicherweise &amp;quot;0.0.0.0&amp;quot; als IP-Adresse statt 192.168.4.1 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Ausgabe des WLAN-Modus: WLAN-Client oder AP&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler im NTP-Client behoben: Bei vorherigen Timeouts kann eine alte Uhrzeit ausgegeben werden&lt;br /&gt;
&lt;br /&gt;
=== STM32 WordClock Software ===&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Abspielen von MP3-Tracks über Mini DFPlayer bei ausgewählten Ereignissen.&lt;br /&gt;
* Neu: Sprechende Uhr.&lt;br /&gt;
* Neu: Bis zu acht Weckzeiten konfigurierbar.&lt;br /&gt;
* Neu: Advent (1-4) Overlays.&lt;br /&gt;
* Bugfix Timer-Tabellen: Bei gleichem Wochentag wurde der Timer nicht erkannt.&lt;br /&gt;
* Bugfix: Schweizerdeutsch-Layouts (WC12h)&lt;br /&gt;
* Bugfix: Board-LED leuchtet nun wieder, wenn ESP8266 über STM32 geflasht wird.&lt;br /&gt;
* Takt des STM32F411RE von 84MHz auf 100MHz erhöht.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* ESP8266: Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
* Vorbereitung Unterstützung der Interpretersprache NIC.&lt;br /&gt;
* Neu: Unterstützung für Nucleo STM32F446RE eingebaut - ungetestet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs einheitlich auf 120 erhöht.&lt;br /&gt;
* Bugfix: Ermittlung der Hardware-Konfiguration für HEX-Datei-Vorschlag beim OTA-Update korrigiert.&lt;br /&gt;
* Maximal möglichen Wert für Ticker-Verögerung (&amp;quot;Deceleration&amp;quot;) auf 16 beschränkt.&lt;br /&gt;
* Bugfix I2C-Treiber (betrifft RTC &amp;amp; EEPROM): Busy-Condition nach StopBit-Generierung wurde bisher nicht beachtet.&lt;br /&gt;
* Plausibilitäts-Tests auf EEPROM-Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierung: Double-Buffering für SK6812-DMA-Transfer - analog zu WS2812 in Version 2.6.4.&lt;br /&gt;
* Bugfix: Update von undefinierten EEPROM-Inhalten, welche in 2.6.x zu Hangups führen konnten.&lt;br /&gt;
* Bugfix: Nach Spielen von Tetris wurde nicht immer die aktuelle Uhrzeit wieder eingeblendet&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Verlängerung der Pausen für WS2812 auf 300us.&lt;br /&gt;
* Verschäfte Plausibilitätsprüfungen für EEPROM-Inhalte, ggfls. RESET auf Standardwerte.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Flackern bzw. versetztes Ausgabe der Display-LEDs durch Double-Buffering behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Änderung: 5-Sekunden-Marker für Ambilight-Modus &amp;quot;Clock&amp;quot; ist nun ein-/abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ein-/Ausschalten des Ambilights inkl. Timer funktioniert nun.&lt;br /&gt;
* Bugfix: Anzeige von Datum und Uhrzeit im Webinterface.&lt;br /&gt;
* Änderung: Schweizerdeutsch 2: Unterdrückung der Anzeige von &amp;quot;UHR&amp;quot;.&lt;br /&gt;
* EmBitz: Compiler-Optimierung von -O2 auf -Os gesetzt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button, damit ESP8266 sich per WPS mit dem Router (AccessPoint) verbinden kann.&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer.&lt;br /&gt;
* Neu: Ambilight-Animation &amp;quot;Clock&amp;quot; jetzt mit 5-Sekunden-Marker.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
* Optimierung der DS18xx/OneWire/Delay-Funktionen, um die Prozessorlast zu minimieren.&lt;br /&gt;
* Bugfix: Falsche Berechnung von Überläufen in CLOCK2-Animation für Ambilight (Anzahl Ambilight-LEDs = 30) korrigiert.&lt;br /&gt;
* Bugfix: Diverse Korrekturen in Layout English2 für WC12h.&lt;br /&gt;
* Neu: Zusätzliches Layout für WC12h: &amp;quot;Schweizerdeutsch 2&amp;quot;.&lt;br /&gt;
* Neu: WCtris, noch ein Tetris-Clone ;-)&lt;br /&gt;
* Änderung Verbindung zwischen ESP-12F und STM32: GPIO4 (und nicht mehr GPIO16) muss nun mit BOOT0 des STM32 verbunden werden&lt;br /&gt;
* Umstellung der IDE von EmBlocks 2.3.0 auf EMBitz 1.11.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
* Optimierungen der LED-Treiber zwecks Minimierung des RAM-Speicherverbrauchs.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Hochauflösendes animiertes Piktogramm &amp;quot;Fireworks&amp;quot; für WC24h.&lt;br /&gt;
* Bugfix: Auftretendes Glimmen nach Anzeige eines Piktogramms eliminiert. &lt;br /&gt;
* Bugfix WC24h: Anzeige Ossi-Modus: ES IST EINE MINUTE(N) NACH NEUN.&lt;br /&gt;
* Bugfix WC24h: Nach Anzeige des Datums wurde die Uhrzeit nicht vollständig aktualisiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Date-Intervall wurde fälschlicherweise als Fireworks-Interval gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Variable Größen der Piktogramme.&lt;br /&gt;
* Sanftes Ein- und Ausblenden (Fading) der Piktogramme.&lt;br /&gt;
* Piktogramme können nun animiert werden.&lt;br /&gt;
* Neues animiertes Piktogramm &amp;quot;Feuerwerk&amp;quot; für Silvester.&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;.&lt;br /&gt;
* Anzeige des aktuellen Datums als Laufschrift.&lt;br /&gt;
* Optimiertes Auslesen des DS18xx, um Verzögerungen in der Sekundenanzeige (Ambilight Clock) zu vermeiden.&lt;br /&gt;
* UART-Ringbuffer vergrößert zwecks Stabilisierung des ESP8266-Flashvorgangs.&lt;br /&gt;
* Unterstützung von neuen Layouts für Schweizerdeutsch und Englisch (nur WC12h).&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.5 ====&lt;br /&gt;
&lt;br /&gt;
* Erkennung des (nicht existenten) externen Pullups verbessert durch Delay vor Messung.&lt;br /&gt;
* Piktogramme Heart und Xmas-Tree werden nun in einer höheren Auflösung (16x16) auf der WC24h angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Piktogrammanzeige bei automatischer Helligkeitsregelung korrigiert.&lt;br /&gt;
* Bugfix: Piktogramme werden bei Power-Off nicht mehr angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Compiler-Warnungen für SK6812-RGBW beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeigefehler von Piktogrammen auf WC24h behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeige von Piktogrammen bei gleichzeitiger Rainbow-Animation zu kurz.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ineinanderschieben von Buchstaben bei Ticker-Anzeige behoben.&lt;br /&gt;
* Bugfix: Änderungen von Weiß-Werten bei SK6812-RGBW wurden nicht mehr übernommen.&lt;br /&gt;
* Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot; eingebaut.&lt;br /&gt;
* Unterstützung für WS2812 mit Reihenfolge RGB statt GRB.&lt;br /&gt;
* Spezielle Compiler-Warnungen bei erhöhter Warnstufe beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Umschaltung auf Open-Drain-Betrieb des LED-Ausgangs bei Anbringung eines 4k7 Pullups am WS2812-Eingang zur Erhöhung des LED-Eingangspegels von 3,3V auf 5V.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Unbedingtes Aktivieren des AP-Modus durch User-Button, auch wenn der ESP wegen Hersteller-Einstellungen bereits im AP-Modus ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Regeln der weißen SK6812-RGBW-LED im Browser funktionierte in Version 2.2.1 nicht mehr.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Wenn ausschließlich das RTC-Modul zur Temperaturmessung dient, wurde auf dem Display immer fälschlicherweise 12°C ausgegeben.&lt;br /&gt;
* Bugfix: Korrekturwert für DS18XX geht nach Reboot verloren.&lt;br /&gt;
* SK6812 wird nun auch in der RGB-Variante unterstützt - nicht nur RGBW.&lt;br /&gt;
* Verbesserung der automatischen Helligkeitsregelung (Sprungverhalten bei Unterschreiten der Helligkeits-Mindestwerts).&lt;br /&gt;
* DCF77-Empfänger-Problem bei Sekunde = 50 (gleichzeitige DS18xx-Temperaturmessung) behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Die Anzeigedauer der Temperatur ist nun nicht mehr von der Dauer der Animation abhängig.&lt;br /&gt;
* Bugfix Ambilight: Nach &amp;quot;Test Display&amp;quot; wurde die ursprüngliche Helligkeit des Ambilight nicht wieder hergestellt.&lt;br /&gt;
* Bugfix AP-Mode: Durch einen Timeout bei der ESP8266-Kommmunikation wurden die Vorgabewerte fürs Web-Interface nicht übertragen.&lt;br /&gt;
* RX-Ringbuffer ESP8266 -&amp;gt; STM32 von 128 auf 256 vergrößert.&lt;br /&gt;
* Timeout-Behandlung bei der Kommunikation zwischen STM32 und ESP8266 verbessert. &lt;br /&gt;
* Web-Interface: Checkbox &amp;quot;Use display colors&amp;quot; wurde auf die Seite &amp;quot;Ambilight&amp;quot; verschoben.&lt;br /&gt;
* WC12h Bugfix: Umlaute werden in der Laufschrift immer als Großbuchstaben angezeigt.&lt;br /&gt;
* WC12h: Font zur Laufschriftanzeige durch besser lesbaren Font ersetzt.&lt;br /&gt;
* WC24h: Korrektur der Anzeige von &amp;quot;ES IST EINS UHR&amp;quot; nach &amp;quot;ES IST EIN UHR&amp;quot; in bestimmten Anzeigemodi.&lt;br /&gt;
* Bugfix SK6812: Rot und Grün vertauscht.&lt;br /&gt;
* Bugfix LDR: Nach dem Setzen eines neuen LDR-Max-Wertes wurde dieser nicht zurück an das Web-Interface übertragen und deshalb dort (bis zum nächsten Reboot) ein alter Max-Wert angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266, damit Code-Ersparnis auf dem STM32 von 14KB Flash.&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
* Optional: Laufschrift mit dem aktuellen Wetter (über openweathermap.org)&lt;br /&gt;
* Unterstützung SK6812 (optional, RGBW-LEDs)&lt;br /&gt;
* Verbesserungen bei der LDR-Umgebungshelligkeitsmessung&lt;br /&gt;
* Wegfall der Schaltfläche &amp;quot;Save all&amp;quot; im Web-Interface. Nun werden sämtliche geänderten Konfigurationsdaten sofort auch im EPROM neu gespeichert.&lt;br /&gt;
* Bugfix: DS18xx-Temperatur-Korrekturwert wurde bisher als RTC-Temperatur-Korrekturwert im EEPROM gespeichert.&lt;br /&gt;
* Bugfix: Bei der manuellen Eingabe des aktuellen Datums/Uhrzeit im Webinterface wurde das Jahr bisher als &amp;quot;Zufallszahl&amp;quot; gespeichert, wenn der ESP8266 im AP-Modus läuft, weil kein WLAN vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.7 ====&lt;br /&gt;
&lt;br /&gt;
* URL-Fehler im Web-Interface korrigiert für Rainbow-Geschwindigkeit und Temperatur-Anzeige-Intervall&lt;br /&gt;
* Fehlende Berücksichtigung der Animation-Geschwindigkeiten in &amp;quot;Random&amp;quot; eingebaut&lt;br /&gt;
* Default-Werte für einstellbare Verzögerungen der Animationen auf WC12h verdoppelt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Drop&amp;quot;&lt;br /&gt;
* Neue Animation &amp;quot;Squeeze&amp;quot;&lt;br /&gt;
* Geschwindigkeitsregler für sämtliche Animationen&lt;br /&gt;
* Angaben von Favoriten für die Animationen, die dann bei der Random-Animation ausgewählt werden sollen&lt;br /&gt;
* Geschwindigkeitsregler für Rainbow - sowohl für Display als auch für Ambilight&lt;br /&gt;
* Angabe von Temperaturkorrekturen für DS18xx als auch für RTC in Schritten von 0,5°C bei Selbsterwärmung&lt;br /&gt;
* LED-Kalibrierung durch Messen vom dunkelsten und hellsten Wert manuell im Web-Interface möglich - ungetestet!&lt;br /&gt;
* Clock und Clock2 auf dem Ambilight laufen nun je nach Einstellung in der Display-Farbe oder selbstständig in der Ambilight-Farbe&lt;br /&gt;
* Temperatur-Anzeige auf der WC12h nun nicht mehr als Laufschrift, sondern durch zwei große Ziffern auf dem Display. Wenn die Temperatur xx,5°C und nicht xx,0°C beträgt, wird das &amp;quot;standesgemäß&amp;quot; auf der WC12h durch zwei leuchtende Minuten-LEDs angezeigt. Die Anzeige der Minuten-LEDs ist ungetestet.&lt;br /&gt;
* Angabe eines Intervalls, wie oft die Temperatur automatisch eingeblendet werden soll. Bei &amp;quot;1&amp;quot; wird die Temperatur einmal pro Minute eingeblendet, nämlich immer um hh:mm:30. Bei Angabe von z.B. &amp;quot;5&amp;quot; passiert das dann halt nur noch alle 5 Minuten. Wird 0 oder nichts eingegeben, wird keine Temperatur automatisch eingeblendet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.5 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation: &amp;quot;Matrix&amp;quot;.&lt;br /&gt;
* Bugfix: Fehler in Timerfunktion am Wochenende behoben.&lt;br /&gt;
* Bugfix: Fehlerhafte Offset-Berechnung in Ambilight-Animation &amp;quot;Clock2&amp;quot; korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ambilight leuchtete im Synchronmodus in Rainbow-Animation nach Abschalten durch Timer weiter. Die LEDs werden nun komplett abgeschaltet.&lt;br /&gt;
* Bugfix: Getrennte Helligkeitssteuerung des Ambilights wurde durch Helligkeitssteuerung des Displays beeinträchtigt. Nun sind beide Helligkeiten komplett unabhängig.&lt;br /&gt;
* Bugfix: Wenn die Uhr gem. Timer aus ist, liefen einige Animationen teilweise trotzdem alle 5 Minuten. Ist nun behoben.&lt;br /&gt;
* Bugfix: Keine Webserver-Kommunikation möglich, wenn der ESP-01 im AP-Modus ist und in der RTC die Uhrzeit noch nicht initialisiert wurde. Ist nun behoben.&lt;br /&gt;
* Neu: Anzeige von Laufschriften&lt;br /&gt;
* Ambilight: Sekundenzeiger nun auch für 20 oder 30 LEDs, die Zahl der Ambilight-LEDs ist nun im Webinterface konfigurierbar.&lt;br /&gt;
* Ambilight: Neue Sekundenanzeige mit zunehmendem/abnehmendem Vollkreis.&lt;br /&gt;
* Ambilight: Sekundenzeiger-Animationen: Start-LED nun über Webinterface konfigurierbar&lt;br /&gt;
* Web-Konfiguration: Erweiterung der Schieberegler um numerische Anzeige (zwecks besserer Reproduzierfähigkeit von RGB-Werten)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: einminütiges Abschalten des Displays nach Cube-Animation behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* Um unnötige Animationen zur vollen Minute bei der WC12h zu vermeiden, wird die DCF77-Zeit nun um hh:mm:15 verzögert ausgeliefert. Timeserver-Zugriffe pendeln sich im Laufe der Zeit auf hh:mm:30 (alle 3780 Sekunden) ein, RTC-Zugriffe werden jede Minute um hh:mm:45 ausgeführt.&lt;br /&gt;
* Power-Taste auf der IR-Fernbedienung kann nun beim Anlernen als Skip-Taste verwendet werden.&lt;br /&gt;
* DCF77-Messung: Die Zeit der vorherigen Minute wird nun als zusätzliche Plausibilitätsprüfung herangezogen&lt;br /&gt;
* Snake-Animation: Es werden nun gezielt die Wörter der alten Uhrzeit &amp;quot;gefressen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.1 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration von &amp;quot;ES IST&amp;quot;-Anzeige korrigiert: nun auch jede halbe Stunde.&lt;br /&gt;
* Bugfix bei der &amp;quot;ES IST&amp;quot;-Anzeige auf WC12h: Die Anzeige wird nun 5 Minuten lang beibehalten - und nicht nur ein Minute.&lt;br /&gt;
* Bugfix: Farbanimationen bzw. Ambilight-Animationen verhinderten das Abschalten des Ambilights bei Power-Off.&lt;br /&gt;
* Umgebungs-Helligkeitsmessungen werden nun nur noch durchgeführt, wenn keine Übergangs-Animation läuft.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs nun bei Verwendung eines Nucleo-Board gleich 100, sonst 60.&lt;br /&gt;
* Power-Off-Signal, um LED-Spannungsversorgung abzuschalten, nun beim Mini-Board (STM32F103) auf Pin PB0.&lt;br /&gt;
* Fading-Effekt durch kleinere Farbänderungsschritte verstärkt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Abschalten des Ambilights bei Power-Off-Befehl funktionierte bisher nicht.&lt;br /&gt;
* Bugfix: Ein-/Ausschalten der Spannungsversorgung für LED-Stripe.&lt;br /&gt;
* Anzeige des Wortes &amp;quot;UHR&amp;quot; zur vollen Stunde hinzugefügt - dort, wo es bisher fehlte. Betrifft nur WC24h.&lt;br /&gt;
* Neue Einstellung, ob &amp;quot;ES IST&amp;quot; permanent leuchten soll oder nur zur vollen Stunde.&lt;br /&gt;
* Verbesserung der Rainbow-Animation (Dank an Ralf Hammeran).&lt;br /&gt;
* Dynamische Anpassung der automatischen Helligkeitssteuerung an die Umgebungshelligkeit (Dank an Ralf Hammeran).&lt;br /&gt;
* Neue Übergangs-Animationen: &amp;quot;Snake&amp;quot;, &amp;quot;Teletype&amp;quot; und &amp;quot;Cube&amp;quot;.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs auf 60 Stück begrenzt, siehe auch Ambilight-Modus &amp;quot;Clock&amp;quot; (umlaufende Sekundenanzeige).&lt;br /&gt;
* Neue Seite &amp;quot;Ambilight&amp;quot; in der Web-Konfiguration.&lt;br /&gt;
* Neue Einstellung, ob Ambilight-Farben synchron zu den Display-Farben angepasst werden sollen oder separat gesteuert werden sollen.&lt;br /&gt;
* Neue separate Farbauswahl und Helligkeitssteuerung für Ambilight.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Clock&amp;quot;: Umlaufende Sekundenanzeige.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Rainbow&amp;quot;: Regenbogenfarben-Animation jetzt auch im Ambilight möglich.&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Automatischer Farbwechselmodus: Rainbow&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.9 ====&lt;br /&gt;
&lt;br /&gt;
* Stellen der Uhrzeit über Web-Interface&lt;br /&gt;
* Konfiguration über Web-Interface, ob ESP8266 im AP- oder WLan-Client-Modus arbeiten soll&lt;br /&gt;
* Einstellung SSID und Key für AP-Modus&lt;br /&gt;
* Steuerung der LED-Stripe-Spannungsversorgung (ungetestet)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.8 ====&lt;br /&gt;
&lt;br /&gt;
* Für WC12h kleineren Font (5x8) für Laufschriften zwecks besserer Lesbarkeit integriert&lt;br /&gt;
* Auswertung des Temperatur-Anzeige-Kommandos per Android App (ab Version 1.7.0)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.7 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler in der Wochentagsberechnung korrigiert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.6 ====&lt;br /&gt;
&lt;br /&gt;
* Verzögerte Reaktion der Minuten-LEDs (WC12h) bei Farbwechsel behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.5 ====&lt;br /&gt;
&lt;br /&gt;
* STM32F103 Mini Development Board: Abschalten des JTAGS, um PB3 u.a. als GPIO für z.B. [[IRMP]] nutzen zu können (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.4 ====&lt;br /&gt;
&lt;br /&gt;
* Korrektur der ESP8266 Flash-Pin-Definition für das STM32F103 Mini Development Board (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix bei der Temperatur-Anzeige: Es wurde immer die DS3231-Temperatur statt der DS128xx-Temperatur gezeigt&lt;br /&gt;
* Falsche Temperatur-Anzeige im Modus &amp;quot;Temperatur&amp;quot;&lt;br /&gt;
* Bezeichnungen der Anzeigemodi für WC24 gekürzt&lt;br /&gt;
* Manuelle Aktivierung des LDRs aus Weboberfläche entfernt. LDR-Messung ist nun immer aktiv, egal ob angeschlossen oder nicht&lt;br /&gt;
* Unterstützung des DCF77-Moduls wieder eingebaut&lt;br /&gt;
* Anzahl der Nachtschaltzeiten auf 8 erhöht - unter Berücksichtigung der Wochentage&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.2 ====&lt;br /&gt;
&lt;br /&gt;
* Hangup-Problem bei Aktivieren des LDRs beseitigt&lt;br /&gt;
* Neu: Nachtschaltzeiten in der Weboberfläche&lt;br /&gt;
* Optimierung des HTML-Code-Generators&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.1 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler bei HTTP-Get-Parameter-Übergabe von Leerzeichen in SSID behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Spezielle Firmware für ESP8266-Modul, da die Espressif-Firmware zu instabil ist und zu viele Varianten existieren&lt;br /&gt;
* Kommunikationsprotokoll an neue ESP-Firmware angepasst&lt;br /&gt;
* Direktes Flashen des ESP8266 in der WordClock-Schaltung über das verwendete STM32-Board&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderung: Damit das ESP8266-Modul direkt über das STM32-Board geflasht werden kann, ist die Verbindung ESP8266-GPIO0 zu STM32 PA4 herzustellen, siehe auch: [[WordClock_mit_WS2812#Anschluss_ESP8266|Anschluss ESP8266]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* [[MCURSES]]-Monitor durch [[WordClock_mit_WS2812#Web-Interface|WEB-Server]] ersetzt&lt;br /&gt;
* Laufschriften-Ausgabe der aktuellen IP-Adresse&lt;br /&gt;
* Kleinere Änderungen/Optimierungen&lt;br /&gt;
* DCF77-Decoder mangels Interesse/Notwendigkeit entfernt&lt;br /&gt;
* Laufschriften-Ausgabe auf dem LED-Display beim Anlernen einer IR-Fernbedienung&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* WordClock12h: Anzeige der Temperatur durch Laufschrift&lt;br /&gt;
* Neue Anschlusspins für TSOP und DS18xxx am STM32F103&lt;br /&gt;
* Optimierung des WS2812-DMA-Transfers für STM32F103&lt;br /&gt;
* Temperaturmessung mit DS3231, wenn kein DS18xx angeschlossen&lt;br /&gt;
* Umstrukturierung der C-Sources&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Problem beim Verbindungsaufbau Android App -&amp;gt; WordClock behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Unterstützung der &amp;quot;klassischen&amp;quot; WordClock12h mit 10x11 LEDs&lt;br /&gt;
* Anpassung der [[MCURSES]]-Monitor-Oberfläche an WordClock12h-Variante&lt;br /&gt;
* Portierung auf STM32F103 abgeschlossen (IDE-Projekt folgt mit 1.6.2)&lt;br /&gt;
* Zusätzliche Unterstützung von neueren [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Firmware-Versionen 1.0.1, 1.4.0 und 1.5.0.&lt;br /&gt;
* Optionales [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Debugging auf zusätzlichem USART - nur für Entwickler&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.9 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0&lt;br /&gt;
* Vergrößerung der UART-FIFOs&lt;br /&gt;
* Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration&lt;br /&gt;
* Überarbeitung der [[MCURSES]]-Monitor-Oberfläche&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.8 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben&lt;br /&gt;
* Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.7 ====&lt;br /&gt;
&lt;br /&gt;
* Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx&lt;br /&gt;
* Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt&lt;br /&gt;
* Anzahl der möglichen [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.6 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#ESP8266|ESP8266]] mit neuerer Firmware, welche \r\n statt \r erwartet&lt;br /&gt;
* Unterstützung von verschiedenen Baudraten des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Automatische Umschaltung von 9600Bd auf 115200Bd beim [[WordClock_mit_WS2812#ESP8266|ESP8266]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierungen im LED-Display-Code&lt;br /&gt;
* Diverse Anpassungen an STM32F103&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart&lt;br /&gt;
* Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anzeige der Firmware-Version des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls im [[MCURSES]]-Monitor&lt;br /&gt;
* Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.1 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelle Helligkeitsregelung per [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] eingebaut&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] nun über [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] ein-/ausschaltbar&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Die geladenen aus dem [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Initialisierung des ADC korrigiert&lt;br /&gt;
* Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]]&lt;br /&gt;
* Helligkeitsstufen von 32 auf 64 erhöht&lt;br /&gt;
* LED-Testprogramm eingebaut (Taste &#039;T&#039; im [[MCURSES]]-Monitor)&lt;br /&gt;
* Anzeige des [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Typs im [[MCURSES]]-Monitor)&lt;br /&gt;
* Unterstützung für Status-LED &#039;&#039;&#039;(beachte geändertes LED-Anschluss-Schema!)&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] an 64 Helligkeitsstufen angepasst&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Sporadisches Hangup-Problem nach Auslesen der Temperatur behoben&lt;br /&gt;
* Fehler bei der Erkennung des Family-Codes für [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] beseitigt&lt;br /&gt;
* Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus&lt;br /&gt;
* Optimierung des [[WordClock_mit_WS2812#WS2812|WS2812]]-Codes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Temperatursensoren&lt;br /&gt;
* Temperatur-Anzeige innerhalb +10°C und 39,5°C&lt;br /&gt;
* Korrektur Sommerzeitumstellung&lt;br /&gt;
* Keine Unterstützung mehr von STM32F4-Discovery&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* IRMP-Konfigurationsfehler behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Animationen hinzugefügt&lt;br /&gt;
* Neue Tabellen für Uhrzeit und Temperatur&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Test auf verschiedene Adressen des I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Speicherplatzverbrauch minimiert&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]] DS3231-Routinen auf DS1307 verallgemeinert&lt;br /&gt;
* Network Listener (UDP) zum Fernsteuern der Uhr über WLAN&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9.1 ====&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Hexdump im [[MCURSES]]-Monitor eingebaut&lt;br /&gt;
* Zusätzliche Waitstates beim Beschreiben des [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzlicher Anschluss von RST und CH_PD des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Verbesserung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Konfiguration dank Hardware-Reset&lt;br /&gt;
* Nutzung des Stromsparmodus im [[WordClock_mit_WS2812#ESP8266|ESP8266]], wenn die Anzeige abgeschaltet wird&lt;br /&gt;
* Konfiguration der Zeitzone über [[MCURSES]]-Monitor&lt;br /&gt;
* Test und Überarbeitung der [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] und [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Funktionen&lt;br /&gt;
* Synchronisation der [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Zeit mit dem µC-Timer&lt;br /&gt;
* Speichern folgender Daten im [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]:&lt;br /&gt;
&lt;br /&gt;
     EEPROM-Version&lt;br /&gt;
     IRMP-Daten einer angelernten IR-Fernbedienung&lt;br /&gt;
     Aktuell eingestellte Farben und Anzeigemodus&lt;br /&gt;
     IP-Adresse des Timeservers&lt;br /&gt;
     Zeitzone&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.8 ====&lt;br /&gt;
&lt;br /&gt;
* Neue IR-Fernbedienungs-Tasten POWER und OK&lt;br /&gt;
* Einbau einer konfigurierbaren &amp;quot;Nachtzeit&amp;quot;, in der sich die Uhr selbstständig abschaltet&lt;br /&gt;
* Konfiguration des Timeservers über [[MCURSES]]-Monitor&lt;br /&gt;
* Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM&lt;br /&gt;
* Initialisierung des [[WordClock_mit_WS2812#ESP8266|ESP8266]] verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)&lt;br /&gt;
* Aufteilung der Anzeige-Logik und des [[MCURSES]]-Monitors auf dsp.c und monitor.c&lt;br /&gt;
* Aufteilung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)&lt;br /&gt;
* Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t&lt;br /&gt;
* Diverse Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7.1 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F401RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
* uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)&lt;br /&gt;
* Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)&lt;br /&gt;
* Anzeige der Online-Devices ([[WordClock_mit_WS2812#ESP8266|ESP8266]], DCF77, EEPROM, [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]) im Terminal&lt;br /&gt;
* Verschiedene Optimierungen&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration des WLAN-Moduls (SSID &amp;amp; Key) nun über Terminal statt fest im Code verdrahtet.&lt;br /&gt;
* Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.&lt;br /&gt;
* DCF77- und [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.&lt;br /&gt;
* I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97855</id>
		<title>Tutorial - Aufbau WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97855"/>
		<updated>2017-11-29T21:25:06Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Flashen des STM32F103 (Mini-Dev-Board) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses Tutorial soll Einsteigern und Fortgeschrittenen einen Leitfaden zum Zusammenbau der [[WordClock_mit_WS2812|WordClock mit WS2812]] geben. Das dazugehörige Projekt ist hier beschrieben: &#039;&#039;&#039;[[WordClock_mit_WS2812|WordClock mit WS2812]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Vorbemerkungen =&lt;br /&gt;
Das Projekt „WordClock mit WS2812“ ist so konzipiert, dass zum Nachbau keine besonderen Vorkenntnisse erforderlich sind. &lt;br /&gt;
Vorausgesetzt werden aber:&lt;br /&gt;
* Natürlich ein Lötkolben (ca. 25 W, an Schutzleiter angeschlossen) und Elektronik-Lötzinn mit max. 1 mm Durchmesser.&lt;br /&gt;
* Bei wenig Löterfahrung bitte nicht gleich am Shield löten „üben“, sondern an einem Stück Streifenrasterplatine (z. B.&amp;lt;br&amp;gt;[https://www.reichelt.de/Streifenraster/H25SR050/3/index.html?ACTION=3&amp;amp;GROUPID=7786&amp;amp;ARTICLE=8275 Reichelt Streifenrasterplatine]) und einigen Drahtstücken. Im Internet gibt es genügend Seiten, die das richtige Löten erklären.&lt;br /&gt;
* Ein einfaches Multimeter, um Gleichspannungen und Widerstände messen zu können. Gibt es ab 10 € bis 12 €.&lt;br /&gt;
* Sorgfalt und Geduld: Es ist nicht viel Aufwand, z. B. Widerstände vor dem Einlöten zu messen und somit Fehler bei der Bestückung zu vermeiden. &lt;br /&gt;
* Bei Unklarheiten mit Bauteil-Anschlüssen nicht einfach verschiedene Einbaumöglichkeiten „ausprobieren“ – das kann die Bauteile zerstören.&lt;br /&gt;
* Das komplette Lesen des Artikels kann helfen, Fehler zu vermeiden und aufwändige Fehlersuche unnötig zu machen.&lt;br /&gt;
&lt;br /&gt;
= Montage der LEDs =&lt;br /&gt;
&lt;br /&gt;
Die folgende Anleitung beschreibt den Aufbau der WS2812-LEDs für die WordClock24h. Bis auf die unten aufgeführten Maße gelten dieselben Ausführungen auch für die WordClock12h.&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock12h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 3,372 Meter WS2812-LED-Streifen mit 36 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 11 LEDs, bis man insgesamt 10 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 4,6 cm&lt;br /&gt;
* 7,7 cm&lt;br /&gt;
* 10,8 cm&lt;br /&gt;
* 13,9 cm&lt;br /&gt;
* 17,0 cm&lt;br /&gt;
* 20,1 cm&lt;br /&gt;
* 23,2 cm&lt;br /&gt;
* 26,3 cm&lt;br /&gt;
* 29,4 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wieder ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock24h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 5 Meter WS2812-LED-Streifen mit 60 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 18 LEDs, bis man insgesamt 16 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 3,4 cm&lt;br /&gt;
* 5,2 cm&lt;br /&gt;
* 7,1 cm&lt;br /&gt;
* 9,0 cm&lt;br /&gt;
* 10,9 cm&lt;br /&gt;
* 12,8 cm&lt;br /&gt;
* 14,7 cm&lt;br /&gt;
* 16,5 cm&lt;br /&gt;
* 18,4 cm&lt;br /&gt;
* 20,2 cm&lt;br /&gt;
* 22,1 cm&lt;br /&gt;
* 24,0 cm&lt;br /&gt;
* 25,9 cm&lt;br /&gt;
* 27,7 cm&lt;br /&gt;
* 29,6 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wider ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-Tesa.jpg|162x288px|miniatur|Markierungen und Klebeband]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Schritt 3: Isolierung ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschließend&#039;&#039;&#039; verklebt man jeweils den linken und rechten Rand senkrecht mit einem durchsichtigen TESA-Band mit einer Breite von 1,0 bis 1,5 cm. Sollte das Klebeband breiter sein, schlägt man es einfach nach hinten um. Das Klebeband dient dazu, Kurzschlüssen mit der Alu-Platte vorzubeugen, wenn nachher die LED-Streifen wieder an den Enden verlötet werden.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 4: Aufkleben der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun klebt man die abgeschnittenen Streifen auf die Alu-Platte, so dass jeweils der mittlere Kontakt der LED-Streifen links und rechts auf der Höhe des jeweiligen Bleistriftstrichs ist. Dabei ist zu beachten, dass &#039;&#039;&#039;jeder 2. Streifen auf dem &amp;quot;Kopf&amp;quot;&#039;&#039;&#039; verklebt wird. Das heisst:&lt;br /&gt;
&lt;br /&gt;
* Streifen 1: DIN links, DO rechts&lt;br /&gt;
* Streifen 2: DO links, DIN rechts&lt;br /&gt;
* Streifen 3: DIN links, DO rechts&lt;br /&gt;
* Streifen 4: DO links, DIN rechts&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
Bei der Positionierung kommt es nicht auf jeden Millimeter genau an. Es ist nicht so schlimm, wenn die LEDs dabei um einen Millimeter verschoben sind. Hilfreich bei der Orientierung, wo gerade DIN oder DO zu finden ist, waren bei meinem Streifen kleine Pfeile neben DIN, welche die Flussrichtung der Daten angeben, siehe Fotos rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-links.jpg|162x288px|miniatur|LED-Streifen - beachte DIN und DO!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Wichtig ist, dass die LEDs so gut wie möglich im Raster bleiben - nicht nur horizontal, sondern auch vertikal.&lt;br /&gt;
| [[Datei:WordClock24h-WS2812-komplett.jpg|319x314px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Schritt 5: Verlöten der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zunächst werden die Lötpunkte an den Enden der WS2812-Streifen verzinnt, siehe Bild links. Anschließend schneidet man vom Flachbandkabel ein paar 5cm lange Abschnitte, welche man dann als einzelne Litzen trennt, indem man sie einfach mit dem Fingernagel einklemmt und auseinanderzieht.&lt;br /&gt;
&lt;br /&gt;
Übrig bleiben 5cm lange Litzen, die dann einzeln verlötet werden. Zunächst verbindet man immer 2 Streifen paarweise auf der *rechten Seite*, indem man GND mit GND, DOUT mit DIN und 5V mit 5V verbindet, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Ist man auf der rechten Seite fertig, verbindet man &#039;&#039;&#039;ab der 2. Reihe&#039;&#039;&#039; lediglich mit je einer Litze DOUT mit DIN, GND und 5V lässt man zunächst frei, siehe Bild rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-verzinnen.jpg|110x240px|miniatur|Streifen an den Enden verzinnen]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-rechts.jpg|109x221px|miniatur|Streifen verlöten rechts]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-links.jpg|135x219px|miniatur|Streifen verlöten links]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Gut zu erkennen ist, dass links jeweils immer nur eine Litze (ab der 2. Reihe) DOUT mit dem nächsten DIN verbindet, während rechts (beginnend mit der 1. Reihe) immer alle drei Kontakte miteinander verbunden werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-komplett.jpg|362x316px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun lötet man auf der linken Seite das Flachbandkabel an, indem man immer zwei Litzen paarweise an GND und 5V heranführt. Dabei unbedingt die Reihenfolge beibehalten: Wenn man die linke Ader des Paares an GND anschließt, muss für alle Paare immer die linke Ader genutzt werden! Demzufolge wird die rechte Ader eines Paares immer an 5V angelötet. Das Ergebnis sieht man im Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Als letztes klappt man das Flachbandkabel auf die Rückseite der Platte und fixiert dieses dort mit Klebeband. Das Ergebnis sieht man auf dem Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Wie das Ende des 16-poligen Flachbandkabels nun mit der Platine verbunden wird, wird später erklärt. &#039;&#039;&#039;Dabei ist unbedingt auf die richtige Polung beim Anschluss zu achten!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Anloeten.jpg|149x266px|miniatur|Flachbandkabel anlöten]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Rueckseite.jpg|103x257px|miniatur|Flachbandkabel umklappen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alternativvorschlag&#039;&#039;&#039; Ich (Andreas/Alidi) finde es praktischer &#039;&#039;&#039;für die Montage des Flachbandkabels&#039;&#039;&#039; wie folgt vorzugehen:&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Komponenten Zwischenboden mit Alu Platte/LED Streifen und Nucleo Shield so platzieren wie im&lt;br /&gt;
Zusammenbau geplant. Nucleo Shield rechts unten im Zwischenboden der WC24h platzieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Graues Flachbandkabel mit rot markierter Ader so in des 16 poligen Pfostenbuchsensteckers plazieren,&lt;br /&gt;
dass rote Ader und Pin 1 des Steckers (Pfeilmarkierung am Stecker) übereinstimmen. Kabel und Codierung&lt;br /&gt;
des Pfostenbuchsensteckers zeigen nach links. Flachbandkabellänge ca. 50cm, Pfostenbuchsenstecker &lt;br /&gt;
zusammenpressen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_1.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
&lt;br /&gt;
Pfostenbuchsenstecker leicht auf den Pfostenstecker im Shield stecken. &lt;br /&gt;
Flachbandkabel insgesamt 3 mal um 90° Grad drehen (siehe Bild).&lt;br /&gt;
Flachbandkabel liegt jetzt an der rechten Seite der Aluplatte und &lt;br /&gt;
ragt über das obere Ende der Platte hinaus. Die rote Ader ist links.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flachbandkabel von Shield lösen und mit Aluplatte/LED Streifen um 180° Grad drehen. &lt;br /&gt;
LED Streifen sind jetzt oben/sichtbar und das Flachbandkabel liegt links der Platte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jeweils 2 Adern des Flachbandkabels beginnend mit der roten Ader vom Kabel abtrennen. &lt;br /&gt;
Die Paare sind immer ca. 4cm (doppelter LED Streifen Abstand) zu kürzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 6.&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Adern abisolieren (kurz, ca. 2mm), mit Lötzinn verzinnen (auch die Anschlußstellen auf dem LED Streifen).&lt;br /&gt;
Evt. die verzinnten Adern noch mal kürzen, da beim Verzinnen wahrscheinlich die Isolierung &lt;br /&gt;
geschrumpft ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die kurzen Verbindungsleitungen zwischen den Streifen hochklappen damit vermeidet man ungünstige&lt;br /&gt;
Drahtkreuzungen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 8&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Aderpaare an die LED Streifen anlöten. Rote Ader bzw. immer die linke Ader des Päarchens an +5V des&lt;br /&gt;
1, 3, 5, 7, 9, 11, 13, 15 LED Streifens anlöten. Die rechte Ader wird an GND angelötet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 9&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_2.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Kurze Verbindungsleitungen wieder zurückklappen, &lt;br /&gt;
Aluplatte wieder um 180° Grad zurückdrehen und &lt;br /&gt;
im Zwischenboden befestigen, &lt;br /&gt;
Flachbandkabel nach links auf die Aluplatte klappen, &lt;br /&gt;
Shield platzieren und prüfen, ob das Flachbandkabel &lt;br /&gt;
mit Buchsenstecker richtig passt. &lt;br /&gt;
&lt;br /&gt;
Mit einem Multimeter(Durchgangsprüfung/Widerstandsprüfung) &lt;br /&gt;
prüfen, ob der LED Anschluß +5V mit den Pins 1, 3, 5, 7, 9, &lt;br /&gt;
11, 13, 15 des Buchsensteckers verbunden sind. &lt;br /&gt;
GND muß mit den &amp;quot;geraden&amp;quot; Pins 2, 4, 6, 8, 10, 12, 14, 16 &lt;br /&gt;
verbunden sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Datenleitung.jpg|miniatur|WC24h LED Datenleitung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 10: Datenkabel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Ausgang WS2812 / Data auf dem Shield ist mit dem Eingang DI der Status-LED, und dann &lt;br /&gt;
mit dem ersten LED Streifen zu verbinden (gelbe Ader im Bild &amp;quot;WC24h_LED_Datenleitung.jpg&amp;quot;) &lt;br /&gt;
Shield -&amp;gt; DI-Status / DO-Status -&amp;gt; DI-Stripe (1.Reihe) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor.jpg|miniatur|WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 11: Status-LED &amp;amp; Sensoren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Helligkeitssensor habe ich in eine 5mm LED Fassung aus Gummi gesteckt (Conrad /184810).&lt;br /&gt;
Diese passt in das linke Loch unten im  Zwischenboden. Geschickt ist es Temp-Sensor, Helligkeits-&lt;br /&gt;
Sensor und Status-LED auf ein Alublech 40x50mm (mit den 3 Löchern an der richtigen Stelle) zu&lt;br /&gt;
befestigen. Das Blech klemmt dann genau in der Aussparung unten im Zwischenboden. Die Status LED &lt;br /&gt;
habe ich im mittleren Loch befestigt. Das rechte Loch bleibt frei.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Verdrahtung der LED Streifen und der Sensoren auf dem Zwischenboden komplett.&lt;br /&gt;
&lt;br /&gt;
= Bestückung des Mini-Dev-Board-Shields v3/v4 für STM32F103 =&lt;br /&gt;
Zunächst werden alle Widerstände, Kondensatoren und Stiftleisten von Seite mit den Bauteil-Bezeichnungen und -Werten aus eingesetzt und von der anderen Seite aus an das Shield gelötet. Dabei empfiehlt es sich, mit den Teilen mit niedriger Bauhöhe anzufangen (die Kondensatoren also zum Schluss). Je nach Ausstattung mit den optionalen Bauteilen müssen unterschiedliche Widerstände gesetzt werden. Im Folgenden eine Übersicht über die zu bestückenden Teile in Abhängigkeit von den optionalen Features, mit denen man die eigene Wordclock ausstatten möchte:&lt;br /&gt;
{| class=&amp;quot;wikitable centered&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil !! Bestücken V3 !! Bestücken V4&lt;br /&gt;
|-&lt;br /&gt;
| R1 || nur mit LDR || nur mit LDR&lt;br /&gt;
|-&lt;br /&gt;
| R2 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R3 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R4 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R5 || ohne TSOP 100k Ohm, mit TSOP 100 Ohm || ohne TSOP nein, mit TSOP 100 Ohm&lt;br /&gt;
|-&lt;br /&gt;
| R6 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R7 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R8 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R9 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R10 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R11 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R12 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R13 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R14 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R15 || nicht vorhanden || nur wenn DCF-Modul mit Open Collector verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R16 || nicht vorhanden || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C1 || nur wenn TSOP eingebaut || nur wenn TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C2 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C3 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C4 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D2 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| IC1 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| IC2 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| LED1 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| S1 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| S2 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| T1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut &lt;br /&gt;
|-&lt;br /&gt;
| Q1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
= Löten des Mini-Dev-Board-Shields v4 für STM32F103 =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 2a.jpg|miniatur|Mini Shield V4 für STM32F103+DS3231+AMS1117+LDR+DS1820]]&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
Rechts seht Ihr ein Mini Shield V4 &lt;br /&gt;
bestückt für STM32F103, DS3231/RTC Echtzeituhr, &lt;br /&gt;
AMS1117/Spannungsregler, LDR/Fotowiderstand &lt;br /&gt;
und DS1820/Temperatursensor.&lt;br /&gt;
&lt;br /&gt;
Die Anschlußleisten rechts und links habe ich &lt;br /&gt;
wie folgt ausgeführt&lt;br /&gt;
&lt;br /&gt;
Links-&amp;gt; &lt;br /&gt;
Buchsenleiste gewinkelt (BL 1x20W 2,54/Reichelt,&lt;br /&gt;
gekürzt) als Anschluß für RTC Echtzeituhr/DS3231. &lt;br /&gt;
Damit kann man das Uhr-Modul einfach stecken.&lt;br /&gt;
Printstecker PSS 254/3w/Reichelt mit entsprechender &lt;br /&gt;
Kuppling und Crimpkontakten für LDR/Fotowiderstand &lt;br /&gt;
und Anschluß WS2812. Damit sind die beiden Komponenten&lt;br /&gt;
steckbar ausgeführt&lt;br /&gt;
&lt;br /&gt;
Rechts-&amp;gt; &lt;br /&gt;
Buchsenleiste wie Links entsprechend gekürzt. &lt;br /&gt;
Damit kann man ebenfalls AMS1117/Spannungsregler&lt;br /&gt;
und DS1820/Temperatursensor (mit Stiftleiste 3pol)&lt;br /&gt;
stecken.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 ohne R2 R5.jpg|miniatur|Komplettes Mini Shield mit STM32F103+DS3231+AMS1117+(LDR+DS1820)]]&lt;br /&gt;
&lt;br /&gt;
Vereinzelt werden STM32-Mini-Development-Boards geliefert, bei denen die 3,3V- Spannungsversorgung auf dem Board nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
Als einfachen Schnelltest kann man vor dem Einlöten ein STM32-Mini-Development-Board an ein 5V-Ladegerät mit Micro-USB-Buchse anschließen: Die Power-LED muss leuchten, bei manchen der so &amp;quot;getesteten&amp;quot; &lt;br /&gt;
Boards blinkt auch die LED am Ausgang PC13.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Die beiden Elkos auf den Fotos rechts sind falsch herum eingelötet worden. Beim oberen Elko ist auf der Platine das Pluszeichen oben und bei dem unteren ist das Pluszeichen unten eingezeichnet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei den Elkos ist der graue Streifen normalerweise die Seite, auf der das Minuszeichen eingetragen ist. Daher sind hier beide falsch herum eingelötet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Löten des Nucleo-Shields v3 für STM32F401RE oder STM32F411RE =&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Vorbereiten/Löten des STM32F411 Nucleo-64 Boards&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie auf dem Bild rechts zu sehen: die SMD Brücken SB54/SB55 [1], die SMD Brücken SB50 [2] und SB16 [3] entfernen und aufheben.&lt;br /&gt;
|| [[Datei:STM32_nucleo_F411RE_Rückseite_Brücken.jpg|miniatur|Nucleo Rückseite mit Brücken]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
R35 und R37 [4] mit den vorher entfernten SMD Brücken bestücken (siehe Bild rechts) die Kondensatoren C33 und C34 [6] bestücken und dann den Quarz X3/8Mhz [5] einlöten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Wird für C33 und C34 statt der im nebenstehenden Foto gezeigten Bestückung der Platinenoberseite (hier mit 0603 SMD Kondensatoren) die Bestückung mit normalen THT-Bauteilen auf der Unterseite direkt an den Quarz-Anschlüssen gewählt muss die &#039;&#039;&#039;nötige Masseverbindung&#039;&#039;&#039;  mit einem zusätzlichen Draht zu CN6, Pin7 (GND)  hergestellt werden (siehe Foto &#039;Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren&#039; im Artikel [[WordClock_mit_WS2812]]!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32 nucleo F411RE Bestückungsseite.jpg|miniatur|Nucleo Bestückungsseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn das STM32F411 Nucleo-64 geflasht ist, muß der ST-Link Teil &lt;br /&gt;
des Nucleo Boards abgetrennt werden,damit die Shield / Nucleo Board Kombination &lt;br /&gt;
in den Zwischenrahmen der WC24h passt.&lt;br /&gt;
Folgendes ist dafür zu tun:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 nucleo F411RE Bestückungsseite ST-Link.jpg|miniatur|ST-Link]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; &lt;br /&gt;
ST Link absägen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B.&#039;&#039;&#039; &lt;br /&gt;
die Brücken SB62/SB63 auf dem Nucleo Board einlöten. Damit werden RX/D0 und TX/D1 auf der&lt;br /&gt;
einreihigen Arduino Pfostenbuchse C9 und die Pins 35 und 37 auf CN10 (Morpho Connector)&lt;br /&gt;
angebunden.   &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C.&#039;&#039;&#039; &lt;br /&gt;
Auf dem ST Link sind die beiden Jumper CN2 zu entfernen. Damit wird der ST Link von interner &lt;br /&gt;
auf externe Programmierung umgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 Nucleo F411RE Rückseite ST-Link.jpg|miniatur|ST-Link Rückseite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;D.&#039;&#039;&#039; &lt;br /&gt;
Die Brücken Brücken SB12-SB15 auf dem ST Link sind zu entfernen. Dies dient zum Schutz des ST Links&lt;br /&gt;
falls beim Absägen die Verbindungsleitungen ST Link - Nucleo Board kurzgeschlossen wurden.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie der ST Link wieder an die Shield/Nucleo Board Kombination angeschlossen wird, beschreibe ich später.&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
= Gesamtmontage =&lt;br /&gt;
&lt;br /&gt;
== Zwischenboden ==&lt;br /&gt;
Die Zwischenböden sind genauso groß wie die Frontplatte, womit sich die Frage der Holzoptik an den Seiten stellt. Die meisten Leute greifen zu einer der folgenden Lösungen:&lt;br /&gt;
&lt;br /&gt;
*Rahmen um die Uhr (siehe Teileliste)&lt;br /&gt;
*Zwischenboden anstreichen&lt;br /&gt;
*Zwischenboden mit Umleimer einfassen&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
Möglichkeiten der Anbringung der Frontplatte aufzählen und erläutern, u.a.&lt;br /&gt;
*Kleber&lt;br /&gt;
*Magnete&lt;br /&gt;
Man sollte die Magnete, die an der Frontplatte angeklebt werden, ca 3-4mm in den Zwischenboden rein ragen lassen, damit sich Frontplatte nicht verschiebt. Außerdem muß man abwarten, bis der Kleber völlig ausgehärtet ist.&lt;br /&gt;
&lt;br /&gt;
*Powerstrips&lt;br /&gt;
&lt;br /&gt;
== Aufhängen an der Wand ==&lt;br /&gt;
&lt;br /&gt;
= Inbetriebnahme =&lt;br /&gt;
== Flashen des Nucleo STM32F4xx ==&lt;br /&gt;
&lt;br /&gt;
== Flashen des Nucleo STM32F411 ==&lt;br /&gt;
(noch nicht komplett, Andreas/Alidi)&lt;br /&gt;
&lt;br /&gt;
1. die WWW Seite http://www.st.com/en/development-tools/st-link-v2.html aufrufen.&lt;br /&gt;
&lt;br /&gt;
2. unter &amp;quot;Tools and Software / Embedded Software&amp;quot; folgende SW runterladen (evt. vorher bei ST anmelden)&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004&lt;br /&gt;
&lt;br /&gt;
3. folgende Firmware von &amp;quot;WordClock mit WS2812&amp;quot; in einen Ordner abspeichern&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;Wordclock-hex.zip&#039;&#039;&#039;, WordClock STM32 Firmware alle Varianten, 2.6.6&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; entzippen z.b. in Unterordner &amp;quot;Wordclock-hex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;ESP-WordClock-4M.bin&#039;&#039;&#039; , ESP8266 ESP-12F Firmware - Neu! , 2.6.6&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;WC24h.apk&#039;&#039;&#039;, Android App , 2.6.1 (für WLAN Verbindung WCxyh und Smartphon)&lt;br /&gt;
&lt;br /&gt;
4. Datei von Pkt. 2 &amp;quot;STM32 ST-LINK Utility / STSW-LINK004&amp;quot; installieren&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004, installieren, Dateiordner wählen&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; auf dem Desktop erscheint das STM Link Icon &#039;&#039;&#039;&amp;quot;STM32 ST-Link Utility&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
5. Nucleo-Board mit Mini USB Kabel an ST Link mit PC verbinden&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf ST Link leuchtet&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf Nucleo-Board leuchtet, grüne LED auf Nucleo-Board blinkt&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Nucleo-Board ist als Laufwerk z.b. &#039;&#039;&#039;&amp;quot;f:\Node_F411RE&amp;quot;&#039;&#039;&#039; sichtbar&lt;br /&gt;
&lt;br /&gt;
6. das Icon STM32 ST-Link Utility  starten&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im Nucleo-Board konsistent zu den Informationen im .HEX File sind.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; die gewünschte Hex-Datei passend zur Hardware aus Unterordner auswählen z.B. &#039;&#039;&#039;&amp;quot;wc24h-stm32f411-ws2812-grb.hex&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; auf Öffnen drücken&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; grüne LED auf Nucleo-Board ist aus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; LED auf ST Link blinkt rot/grün&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; nach ca. 10min ist das Nucleo-Board geflasht, die LED auf dem ST Link leuchtet grün&lt;br /&gt;
&lt;br /&gt;
Der Rest folgt noch, Andreas/Alidi&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32F103 (Mini-Dev-Board) ==&lt;br /&gt;
Das Flashen des STM32 ist im [[WordClock_mit_WS2812#Flashen_des_STM32_MiniDevBoards|Hauptartikel]] erläutert. &lt;br /&gt;
Der STM32 kann einzeln geflasht werden, genauso aber auch, wenn er schon auf dem Shield verbaut ist.&lt;br /&gt;
&lt;br /&gt;
== Flashen des ESP ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
# Virtual COM Port Treiber installieren (siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|hier]])&lt;br /&gt;
# UART am PC einstecken, er sollte im Gerätemanager mit einem COM-Port auftauchen (welcher, ist egal). In den Eigenschaften (rechte Maustaste) die Bits pro Sekunde auf 115200 stellen (siehe Screenshot).&lt;br /&gt;
# Sicherstellen, dass der Jumper am Shield auf PROG steht, nicht auf RUN!&lt;br /&gt;
# UART mit dem Shield verbinden (GND an GND, TX an RX, RX an TX)&lt;br /&gt;
# Der [[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Anleitung im Hauptartikel]] folgen.&lt;br /&gt;
# UART vom Board abziehen, Jumper auf RUN stellen und den ESP ins eigene WLAN einbinden (entweder über WPS oder als Access Point)&lt;br /&gt;
||[[Datei:Geraetemanager COM.PNG|miniatur|UART im Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
Es gibt keine Rückmeldung, ob das Board im Flash-Modus ist. Falls es nicht klappt, sollte man das gleiche Prozedere bei mitlaufendem Putty ausprobieren (siehe [[WordClock_mit_WS2812#Logging|hier]]). Der Flash-Modus erzeugt ein paar kryptische Zeichen im Putty-Fenster. Wenn das geklappt hat, Putty schließen (damit der COM-Port freigegeben wird) und das gleiche Prozedere erneut probieren.&lt;br /&gt;
&lt;br /&gt;
== Erläuterung der Meldungen im Log ==&lt;br /&gt;
* time &amp;quot;192.53.103.103&amp;quot; -&amp;gt; Der STM32 hat ein Time Commando zum ESP geschickt&lt;br /&gt;
* (OK time) -&amp;gt; Der STM32 hat eine Antwort erhalten&lt;br /&gt;
* (TIME 3703484819) -&amp;gt; Die Zeit die Empfangen wurde &lt;br /&gt;
* (- new client) -&amp;gt; Ein neuer WLan client hat sich angemeldet&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehlermöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.mikrocontroller.net/topic/385955?page=14#5032451 FritzBox muss neu gestartet werden]&#039;&#039;&#039;&lt;br /&gt;
* Die Website der Uhr hakt oder hat Timeouts&lt;br /&gt;
* Ping auf die IP-Adresse des ESP8266 ist wesentlich größer als 10msec oder setzt für mehrere Sekunden aus&lt;br /&gt;
&lt;br /&gt;
=== STM32F103C8T6 Mini-Development Board ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falsche STM32 Software geflasht&#039;&#039;&#039;, mögliche Symptome:&lt;br /&gt;
* Die LED PC13 des STM32F103 Board leuchtet nach dem Start nicht&lt;br /&gt;
* Der WebServer ist erreichbar, allerdings wird das EEPROM als offline angezeigt&lt;br /&gt;
* Der WebServer ist erreichbar, aber Datum und Uhrzeit sind 01.01.1900&lt;br /&gt;
* Auf der Updateseite ist die WordClock Firmware Version leer, (Update kann durchgeführt werden, allerdings ändert sich das Problem nicht)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RTC/EEPROM defekt oder falsch angeschlossen&#039;&#039;&#039;&lt;br /&gt;
* Beim Startup steht im Log&lt;br /&gt;
    rtc is offline&lt;br /&gt;
    eeprom is offline&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die rote und grüne LED leuchtet nur schwach&#039;&#039;&#039;&lt;br /&gt;
* Auf dem STM32F103 Board leuchtet die rote und grüne LED recht schwach. &lt;br /&gt;
* Das Board besitzt einen eigenen 5V zu 3,3V Spannungsregler (U1). Bei einem um 180Grad gedrehtem IC kommt es zu diesem Phänomen.&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97854</id>
		<title>Tutorial - Aufbau WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97854"/>
		<updated>2017-11-29T21:22:55Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Bekannte Fehlermöglichkeiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses Tutorial soll Einsteigern und Fortgeschrittenen einen Leitfaden zum Zusammenbau der [[WordClock_mit_WS2812|WordClock mit WS2812]] geben. Das dazugehörige Projekt ist hier beschrieben: &#039;&#039;&#039;[[WordClock_mit_WS2812|WordClock mit WS2812]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Vorbemerkungen =&lt;br /&gt;
Das Projekt „WordClock mit WS2812“ ist so konzipiert, dass zum Nachbau keine besonderen Vorkenntnisse erforderlich sind. &lt;br /&gt;
Vorausgesetzt werden aber:&lt;br /&gt;
* Natürlich ein Lötkolben (ca. 25 W, an Schutzleiter angeschlossen) und Elektronik-Lötzinn mit max. 1 mm Durchmesser.&lt;br /&gt;
* Bei wenig Löterfahrung bitte nicht gleich am Shield löten „üben“, sondern an einem Stück Streifenrasterplatine (z. B.&amp;lt;br&amp;gt;[https://www.reichelt.de/Streifenraster/H25SR050/3/index.html?ACTION=3&amp;amp;GROUPID=7786&amp;amp;ARTICLE=8275 Reichelt Streifenrasterplatine]) und einigen Drahtstücken. Im Internet gibt es genügend Seiten, die das richtige Löten erklären.&lt;br /&gt;
* Ein einfaches Multimeter, um Gleichspannungen und Widerstände messen zu können. Gibt es ab 10 € bis 12 €.&lt;br /&gt;
* Sorgfalt und Geduld: Es ist nicht viel Aufwand, z. B. Widerstände vor dem Einlöten zu messen und somit Fehler bei der Bestückung zu vermeiden. &lt;br /&gt;
* Bei Unklarheiten mit Bauteil-Anschlüssen nicht einfach verschiedene Einbaumöglichkeiten „ausprobieren“ – das kann die Bauteile zerstören.&lt;br /&gt;
* Das komplette Lesen des Artikels kann helfen, Fehler zu vermeiden und aufwändige Fehlersuche unnötig zu machen.&lt;br /&gt;
&lt;br /&gt;
= Montage der LEDs =&lt;br /&gt;
&lt;br /&gt;
Die folgende Anleitung beschreibt den Aufbau der WS2812-LEDs für die WordClock24h. Bis auf die unten aufgeführten Maße gelten dieselben Ausführungen auch für die WordClock12h.&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock12h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 3,372 Meter WS2812-LED-Streifen mit 36 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 11 LEDs, bis man insgesamt 10 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 4,6 cm&lt;br /&gt;
* 7,7 cm&lt;br /&gt;
* 10,8 cm&lt;br /&gt;
* 13,9 cm&lt;br /&gt;
* 17,0 cm&lt;br /&gt;
* 20,1 cm&lt;br /&gt;
* 23,2 cm&lt;br /&gt;
* 26,3 cm&lt;br /&gt;
* 29,4 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wieder ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock24h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 5 Meter WS2812-LED-Streifen mit 60 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 18 LEDs, bis man insgesamt 16 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 3,4 cm&lt;br /&gt;
* 5,2 cm&lt;br /&gt;
* 7,1 cm&lt;br /&gt;
* 9,0 cm&lt;br /&gt;
* 10,9 cm&lt;br /&gt;
* 12,8 cm&lt;br /&gt;
* 14,7 cm&lt;br /&gt;
* 16,5 cm&lt;br /&gt;
* 18,4 cm&lt;br /&gt;
* 20,2 cm&lt;br /&gt;
* 22,1 cm&lt;br /&gt;
* 24,0 cm&lt;br /&gt;
* 25,9 cm&lt;br /&gt;
* 27,7 cm&lt;br /&gt;
* 29,6 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wider ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-Tesa.jpg|162x288px|miniatur|Markierungen und Klebeband]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Schritt 3: Isolierung ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschließend&#039;&#039;&#039; verklebt man jeweils den linken und rechten Rand senkrecht mit einem durchsichtigen TESA-Band mit einer Breite von 1,0 bis 1,5 cm. Sollte das Klebeband breiter sein, schlägt man es einfach nach hinten um. Das Klebeband dient dazu, Kurzschlüssen mit der Alu-Platte vorzubeugen, wenn nachher die LED-Streifen wieder an den Enden verlötet werden.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 4: Aufkleben der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun klebt man die abgeschnittenen Streifen auf die Alu-Platte, so dass jeweils der mittlere Kontakt der LED-Streifen links und rechts auf der Höhe des jeweiligen Bleistriftstrichs ist. Dabei ist zu beachten, dass &#039;&#039;&#039;jeder 2. Streifen auf dem &amp;quot;Kopf&amp;quot;&#039;&#039;&#039; verklebt wird. Das heisst:&lt;br /&gt;
&lt;br /&gt;
* Streifen 1: DIN links, DO rechts&lt;br /&gt;
* Streifen 2: DO links, DIN rechts&lt;br /&gt;
* Streifen 3: DIN links, DO rechts&lt;br /&gt;
* Streifen 4: DO links, DIN rechts&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
Bei der Positionierung kommt es nicht auf jeden Millimeter genau an. Es ist nicht so schlimm, wenn die LEDs dabei um einen Millimeter verschoben sind. Hilfreich bei der Orientierung, wo gerade DIN oder DO zu finden ist, waren bei meinem Streifen kleine Pfeile neben DIN, welche die Flussrichtung der Daten angeben, siehe Fotos rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-links.jpg|162x288px|miniatur|LED-Streifen - beachte DIN und DO!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Wichtig ist, dass die LEDs so gut wie möglich im Raster bleiben - nicht nur horizontal, sondern auch vertikal.&lt;br /&gt;
| [[Datei:WordClock24h-WS2812-komplett.jpg|319x314px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Schritt 5: Verlöten der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zunächst werden die Lötpunkte an den Enden der WS2812-Streifen verzinnt, siehe Bild links. Anschließend schneidet man vom Flachbandkabel ein paar 5cm lange Abschnitte, welche man dann als einzelne Litzen trennt, indem man sie einfach mit dem Fingernagel einklemmt und auseinanderzieht.&lt;br /&gt;
&lt;br /&gt;
Übrig bleiben 5cm lange Litzen, die dann einzeln verlötet werden. Zunächst verbindet man immer 2 Streifen paarweise auf der *rechten Seite*, indem man GND mit GND, DOUT mit DIN und 5V mit 5V verbindet, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Ist man auf der rechten Seite fertig, verbindet man &#039;&#039;&#039;ab der 2. Reihe&#039;&#039;&#039; lediglich mit je einer Litze DOUT mit DIN, GND und 5V lässt man zunächst frei, siehe Bild rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-verzinnen.jpg|110x240px|miniatur|Streifen an den Enden verzinnen]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-rechts.jpg|109x221px|miniatur|Streifen verlöten rechts]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-links.jpg|135x219px|miniatur|Streifen verlöten links]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Gut zu erkennen ist, dass links jeweils immer nur eine Litze (ab der 2. Reihe) DOUT mit dem nächsten DIN verbindet, während rechts (beginnend mit der 1. Reihe) immer alle drei Kontakte miteinander verbunden werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-komplett.jpg|362x316px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun lötet man auf der linken Seite das Flachbandkabel an, indem man immer zwei Litzen paarweise an GND und 5V heranführt. Dabei unbedingt die Reihenfolge beibehalten: Wenn man die linke Ader des Paares an GND anschließt, muss für alle Paare immer die linke Ader genutzt werden! Demzufolge wird die rechte Ader eines Paares immer an 5V angelötet. Das Ergebnis sieht man im Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Als letztes klappt man das Flachbandkabel auf die Rückseite der Platte und fixiert dieses dort mit Klebeband. Das Ergebnis sieht man auf dem Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Wie das Ende des 16-poligen Flachbandkabels nun mit der Platine verbunden wird, wird später erklärt. &#039;&#039;&#039;Dabei ist unbedingt auf die richtige Polung beim Anschluss zu achten!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Anloeten.jpg|149x266px|miniatur|Flachbandkabel anlöten]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Rueckseite.jpg|103x257px|miniatur|Flachbandkabel umklappen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alternativvorschlag&#039;&#039;&#039; Ich (Andreas/Alidi) finde es praktischer &#039;&#039;&#039;für die Montage des Flachbandkabels&#039;&#039;&#039; wie folgt vorzugehen:&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Komponenten Zwischenboden mit Alu Platte/LED Streifen und Nucleo Shield so platzieren wie im&lt;br /&gt;
Zusammenbau geplant. Nucleo Shield rechts unten im Zwischenboden der WC24h platzieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Graues Flachbandkabel mit rot markierter Ader so in des 16 poligen Pfostenbuchsensteckers plazieren,&lt;br /&gt;
dass rote Ader und Pin 1 des Steckers (Pfeilmarkierung am Stecker) übereinstimmen. Kabel und Codierung&lt;br /&gt;
des Pfostenbuchsensteckers zeigen nach links. Flachbandkabellänge ca. 50cm, Pfostenbuchsenstecker &lt;br /&gt;
zusammenpressen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_1.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
&lt;br /&gt;
Pfostenbuchsenstecker leicht auf den Pfostenstecker im Shield stecken. &lt;br /&gt;
Flachbandkabel insgesamt 3 mal um 90° Grad drehen (siehe Bild).&lt;br /&gt;
Flachbandkabel liegt jetzt an der rechten Seite der Aluplatte und &lt;br /&gt;
ragt über das obere Ende der Platte hinaus. Die rote Ader ist links.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flachbandkabel von Shield lösen und mit Aluplatte/LED Streifen um 180° Grad drehen. &lt;br /&gt;
LED Streifen sind jetzt oben/sichtbar und das Flachbandkabel liegt links der Platte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jeweils 2 Adern des Flachbandkabels beginnend mit der roten Ader vom Kabel abtrennen. &lt;br /&gt;
Die Paare sind immer ca. 4cm (doppelter LED Streifen Abstand) zu kürzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 6.&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Adern abisolieren (kurz, ca. 2mm), mit Lötzinn verzinnen (auch die Anschlußstellen auf dem LED Streifen).&lt;br /&gt;
Evt. die verzinnten Adern noch mal kürzen, da beim Verzinnen wahrscheinlich die Isolierung &lt;br /&gt;
geschrumpft ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die kurzen Verbindungsleitungen zwischen den Streifen hochklappen damit vermeidet man ungünstige&lt;br /&gt;
Drahtkreuzungen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 8&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Aderpaare an die LED Streifen anlöten. Rote Ader bzw. immer die linke Ader des Päarchens an +5V des&lt;br /&gt;
1, 3, 5, 7, 9, 11, 13, 15 LED Streifens anlöten. Die rechte Ader wird an GND angelötet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 9&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_2.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Kurze Verbindungsleitungen wieder zurückklappen, &lt;br /&gt;
Aluplatte wieder um 180° Grad zurückdrehen und &lt;br /&gt;
im Zwischenboden befestigen, &lt;br /&gt;
Flachbandkabel nach links auf die Aluplatte klappen, &lt;br /&gt;
Shield platzieren und prüfen, ob das Flachbandkabel &lt;br /&gt;
mit Buchsenstecker richtig passt. &lt;br /&gt;
&lt;br /&gt;
Mit einem Multimeter(Durchgangsprüfung/Widerstandsprüfung) &lt;br /&gt;
prüfen, ob der LED Anschluß +5V mit den Pins 1, 3, 5, 7, 9, &lt;br /&gt;
11, 13, 15 des Buchsensteckers verbunden sind. &lt;br /&gt;
GND muß mit den &amp;quot;geraden&amp;quot; Pins 2, 4, 6, 8, 10, 12, 14, 16 &lt;br /&gt;
verbunden sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Datenleitung.jpg|miniatur|WC24h LED Datenleitung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 10: Datenkabel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Ausgang WS2812 / Data auf dem Shield ist mit dem Eingang DI der Status-LED, und dann &lt;br /&gt;
mit dem ersten LED Streifen zu verbinden (gelbe Ader im Bild &amp;quot;WC24h_LED_Datenleitung.jpg&amp;quot;) &lt;br /&gt;
Shield -&amp;gt; DI-Status / DO-Status -&amp;gt; DI-Stripe (1.Reihe) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor.jpg|miniatur|WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 11: Status-LED &amp;amp; Sensoren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Helligkeitssensor habe ich in eine 5mm LED Fassung aus Gummi gesteckt (Conrad /184810).&lt;br /&gt;
Diese passt in das linke Loch unten im  Zwischenboden. Geschickt ist es Temp-Sensor, Helligkeits-&lt;br /&gt;
Sensor und Status-LED auf ein Alublech 40x50mm (mit den 3 Löchern an der richtigen Stelle) zu&lt;br /&gt;
befestigen. Das Blech klemmt dann genau in der Aussparung unten im Zwischenboden. Die Status LED &lt;br /&gt;
habe ich im mittleren Loch befestigt. Das rechte Loch bleibt frei.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Verdrahtung der LED Streifen und der Sensoren auf dem Zwischenboden komplett.&lt;br /&gt;
&lt;br /&gt;
= Bestückung des Mini-Dev-Board-Shields v3/v4 für STM32F103 =&lt;br /&gt;
Zunächst werden alle Widerstände, Kondensatoren und Stiftleisten von Seite mit den Bauteil-Bezeichnungen und -Werten aus eingesetzt und von der anderen Seite aus an das Shield gelötet. Dabei empfiehlt es sich, mit den Teilen mit niedriger Bauhöhe anzufangen (die Kondensatoren also zum Schluss). Je nach Ausstattung mit den optionalen Bauteilen müssen unterschiedliche Widerstände gesetzt werden. Im Folgenden eine Übersicht über die zu bestückenden Teile in Abhängigkeit von den optionalen Features, mit denen man die eigene Wordclock ausstatten möchte:&lt;br /&gt;
{| class=&amp;quot;wikitable centered&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil !! Bestücken V3 !! Bestücken V4&lt;br /&gt;
|-&lt;br /&gt;
| R1 || nur mit LDR || nur mit LDR&lt;br /&gt;
|-&lt;br /&gt;
| R2 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R3 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R4 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R5 || ohne TSOP 100k Ohm, mit TSOP 100 Ohm || ohne TSOP nein, mit TSOP 100 Ohm&lt;br /&gt;
|-&lt;br /&gt;
| R6 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R7 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R8 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R9 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R10 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R11 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R12 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R13 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R14 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R15 || nicht vorhanden || nur wenn DCF-Modul mit Open Collector verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R16 || nicht vorhanden || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C1 || nur wenn TSOP eingebaut || nur wenn TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C2 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C3 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C4 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D2 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| IC1 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| IC2 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| LED1 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| S1 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| S2 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| T1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut &lt;br /&gt;
|-&lt;br /&gt;
| Q1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
= Löten des Mini-Dev-Board-Shields v4 für STM32F103 =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 2a.jpg|miniatur|Mini Shield V4 für STM32F103+DS3231+AMS1117+LDR+DS1820]]&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
Rechts seht Ihr ein Mini Shield V4 &lt;br /&gt;
bestückt für STM32F103, DS3231/RTC Echtzeituhr, &lt;br /&gt;
AMS1117/Spannungsregler, LDR/Fotowiderstand &lt;br /&gt;
und DS1820/Temperatursensor.&lt;br /&gt;
&lt;br /&gt;
Die Anschlußleisten rechts und links habe ich &lt;br /&gt;
wie folgt ausgeführt&lt;br /&gt;
&lt;br /&gt;
Links-&amp;gt; &lt;br /&gt;
Buchsenleiste gewinkelt (BL 1x20W 2,54/Reichelt,&lt;br /&gt;
gekürzt) als Anschluß für RTC Echtzeituhr/DS3231. &lt;br /&gt;
Damit kann man das Uhr-Modul einfach stecken.&lt;br /&gt;
Printstecker PSS 254/3w/Reichelt mit entsprechender &lt;br /&gt;
Kuppling und Crimpkontakten für LDR/Fotowiderstand &lt;br /&gt;
und Anschluß WS2812. Damit sind die beiden Komponenten&lt;br /&gt;
steckbar ausgeführt&lt;br /&gt;
&lt;br /&gt;
Rechts-&amp;gt; &lt;br /&gt;
Buchsenleiste wie Links entsprechend gekürzt. &lt;br /&gt;
Damit kann man ebenfalls AMS1117/Spannungsregler&lt;br /&gt;
und DS1820/Temperatursensor (mit Stiftleiste 3pol)&lt;br /&gt;
stecken.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 ohne R2 R5.jpg|miniatur|Komplettes Mini Shield mit STM32F103+DS3231+AMS1117+(LDR+DS1820)]]&lt;br /&gt;
&lt;br /&gt;
Vereinzelt werden STM32-Mini-Development-Boards geliefert, bei denen die 3,3V- Spannungsversorgung auf dem Board nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
Als einfachen Schnelltest kann man vor dem Einlöten ein STM32-Mini-Development-Board an ein 5V-Ladegerät mit Micro-USB-Buchse anschließen: Die Power-LED muss leuchten, bei manchen der so &amp;quot;getesteten&amp;quot; &lt;br /&gt;
Boards blinkt auch die LED am Ausgang PC13.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Die beiden Elkos auf den Fotos rechts sind falsch herum eingelötet worden. Beim oberen Elko ist auf der Platine das Pluszeichen oben und bei dem unteren ist das Pluszeichen unten eingezeichnet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei den Elkos ist der graue Streifen normalerweise die Seite, auf der das Minuszeichen eingetragen ist. Daher sind hier beide falsch herum eingelötet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Löten des Nucleo-Shields v3 für STM32F401RE oder STM32F411RE =&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Vorbereiten/Löten des STM32F411 Nucleo-64 Boards&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie auf dem Bild rechts zu sehen: die SMD Brücken SB54/SB55 [1], die SMD Brücken SB50 [2] und SB16 [3] entfernen und aufheben.&lt;br /&gt;
|| [[Datei:STM32_nucleo_F411RE_Rückseite_Brücken.jpg|miniatur|Nucleo Rückseite mit Brücken]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
R35 und R37 [4] mit den vorher entfernten SMD Brücken bestücken (siehe Bild rechts) die Kondensatoren C33 und C34 [6] bestücken und dann den Quarz X3/8Mhz [5] einlöten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Wird für C33 und C34 statt der im nebenstehenden Foto gezeigten Bestückung der Platinenoberseite (hier mit 0603 SMD Kondensatoren) die Bestückung mit normalen THT-Bauteilen auf der Unterseite direkt an den Quarz-Anschlüssen gewählt muss die &#039;&#039;&#039;nötige Masseverbindung&#039;&#039;&#039;  mit einem zusätzlichen Draht zu CN6, Pin7 (GND)  hergestellt werden (siehe Foto &#039;Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren&#039; im Artikel [[WordClock_mit_WS2812]]!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32 nucleo F411RE Bestückungsseite.jpg|miniatur|Nucleo Bestückungsseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn das STM32F411 Nucleo-64 geflasht ist, muß der ST-Link Teil &lt;br /&gt;
des Nucleo Boards abgetrennt werden,damit die Shield / Nucleo Board Kombination &lt;br /&gt;
in den Zwischenrahmen der WC24h passt.&lt;br /&gt;
Folgendes ist dafür zu tun:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 nucleo F411RE Bestückungsseite ST-Link.jpg|miniatur|ST-Link]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; &lt;br /&gt;
ST Link absägen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B.&#039;&#039;&#039; &lt;br /&gt;
die Brücken SB62/SB63 auf dem Nucleo Board einlöten. Damit werden RX/D0 und TX/D1 auf der&lt;br /&gt;
einreihigen Arduino Pfostenbuchse C9 und die Pins 35 und 37 auf CN10 (Morpho Connector)&lt;br /&gt;
angebunden.   &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C.&#039;&#039;&#039; &lt;br /&gt;
Auf dem ST Link sind die beiden Jumper CN2 zu entfernen. Damit wird der ST Link von interner &lt;br /&gt;
auf externe Programmierung umgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 Nucleo F411RE Rückseite ST-Link.jpg|miniatur|ST-Link Rückseite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;D.&#039;&#039;&#039; &lt;br /&gt;
Die Brücken Brücken SB12-SB15 auf dem ST Link sind zu entfernen. Dies dient zum Schutz des ST Links&lt;br /&gt;
falls beim Absägen die Verbindungsleitungen ST Link - Nucleo Board kurzgeschlossen wurden.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie der ST Link wieder an die Shield/Nucleo Board Kombination angeschlossen wird, beschreibe ich später.&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
= Gesamtmontage =&lt;br /&gt;
&lt;br /&gt;
== Zwischenboden ==&lt;br /&gt;
Die Zwischenböden sind genauso groß wie die Frontplatte, womit sich die Frage der Holzoptik an den Seiten stellt. Die meisten Leute greifen zu einer der folgenden Lösungen:&lt;br /&gt;
&lt;br /&gt;
*Rahmen um die Uhr (siehe Teileliste)&lt;br /&gt;
*Zwischenboden anstreichen&lt;br /&gt;
*Zwischenboden mit Umleimer einfassen&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
Möglichkeiten der Anbringung der Frontplatte aufzählen und erläutern, u.a.&lt;br /&gt;
*Kleber&lt;br /&gt;
*Magnete&lt;br /&gt;
Man sollte die Magnete, die an der Frontplatte angeklebt werden, ca 3-4mm in den Zwischenboden rein ragen lassen, damit sich Frontplatte nicht verschiebt. Außerdem muß man abwarten, bis der Kleber völlig ausgehärtet ist.&lt;br /&gt;
&lt;br /&gt;
*Powerstrips&lt;br /&gt;
&lt;br /&gt;
== Aufhängen an der Wand ==&lt;br /&gt;
&lt;br /&gt;
= Inbetriebnahme =&lt;br /&gt;
== Flashen des Nucleo STM32F4xx ==&lt;br /&gt;
&lt;br /&gt;
== Flashen des Nucleo STM32F411 ==&lt;br /&gt;
(noch nicht komplett, Andreas/Alidi)&lt;br /&gt;
&lt;br /&gt;
1. die WWW Seite http://www.st.com/en/development-tools/st-link-v2.html aufrufen.&lt;br /&gt;
&lt;br /&gt;
2. unter &amp;quot;Tools and Software / Embedded Software&amp;quot; folgende SW runterladen (evt. vorher bei ST anmelden)&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004&lt;br /&gt;
&lt;br /&gt;
3. folgende Firmware von &amp;quot;WordClock mit WS2812&amp;quot; in einen Ordner abspeichern&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;Wordclock-hex.zip&#039;&#039;&#039;, WordClock STM32 Firmware alle Varianten, 2.6.6&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; entzippen z.b. in Unterordner &amp;quot;Wordclock-hex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;ESP-WordClock-4M.bin&#039;&#039;&#039; , ESP8266 ESP-12F Firmware - Neu! , 2.6.6&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;WC24h.apk&#039;&#039;&#039;, Android App , 2.6.1 (für WLAN Verbindung WCxyh und Smartphon)&lt;br /&gt;
&lt;br /&gt;
4. Datei von Pkt. 2 &amp;quot;STM32 ST-LINK Utility / STSW-LINK004&amp;quot; installieren&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004, installieren, Dateiordner wählen&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; auf dem Desktop erscheint das STM Link Icon &#039;&#039;&#039;&amp;quot;STM32 ST-Link Utility&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
5. Nucleo-Board mit Mini USB Kabel an ST Link mit PC verbinden&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf ST Link leuchtet&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf Nucleo-Board leuchtet, grüne LED auf Nucleo-Board blinkt&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Nucleo-Board ist als Laufwerk z.b. &#039;&#039;&#039;&amp;quot;f:\Node_F411RE&amp;quot;&#039;&#039;&#039; sichtbar&lt;br /&gt;
&lt;br /&gt;
6. das Icon STM32 ST-Link Utility  starten&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im Nucleo-Board konsistent zu den Informationen im .HEX File sind.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; die gewünschte Hex-Datei passend zur Hardware aus Unterordner auswählen z.B. &#039;&#039;&#039;&amp;quot;wc24h-stm32f411-ws2812-grb.hex&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; auf Öffnen drücken&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; grüne LED auf Nucleo-Board ist aus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; LED auf ST Link blinkt rot/grün&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; nach ca. 10min ist das Nucleo-Board geflasht, die LED auf dem ST Link leuchtet grün&lt;br /&gt;
&lt;br /&gt;
Der Rest folgt noch, Andreas/Alidi&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32F103 (Mini-Dev-Board) ==&lt;br /&gt;
Das Flashen des STM32 ist im [[WordClock_mit_WS2812#Flashen_des_STM32_MiniDevBoards|Hauptartikel]] erläutert. &lt;br /&gt;
Der STM32 kann kann einzeln geflasht werden, genauso aber auch, wenn er schon auf dem Shield verbaut ist.&lt;br /&gt;
&lt;br /&gt;
== Flashen des ESP ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
# Virtual COM Port Treiber installieren (siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|hier]])&lt;br /&gt;
# UART am PC einstecken, er sollte im Gerätemanager mit einem COM-Port auftauchen (welcher, ist egal). In den Eigenschaften (rechte Maustaste) die Bits pro Sekunde auf 115200 stellen (siehe Screenshot).&lt;br /&gt;
# Sicherstellen, dass der Jumper am Shield auf PROG steht, nicht auf RUN!&lt;br /&gt;
# UART mit dem Shield verbinden (GND an GND, TX an RX, RX an TX)&lt;br /&gt;
# Der [[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Anleitung im Hauptartikel]] folgen.&lt;br /&gt;
# UART vom Board abziehen, Jumper auf RUN stellen und den ESP ins eigene WLAN einbinden (entweder über WPS oder als Access Point)&lt;br /&gt;
||[[Datei:Geraetemanager COM.PNG|miniatur|UART im Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
Es gibt keine Rückmeldung, ob das Board im Flash-Modus ist. Falls es nicht klappt, sollte man das gleiche Prozedere bei mitlaufendem Putty ausprobieren (siehe [[WordClock_mit_WS2812#Logging|hier]]). Der Flash-Modus erzeugt ein paar kryptische Zeichen im Putty-Fenster. Wenn das geklappt hat, Putty schließen (damit der COM-Port freigegeben wird) und das gleiche Prozedere erneut probieren.&lt;br /&gt;
&lt;br /&gt;
== Erläuterung der Meldungen im Log ==&lt;br /&gt;
* time &amp;quot;192.53.103.103&amp;quot; -&amp;gt; Der STM32 hat ein Time Commando zum ESP geschickt&lt;br /&gt;
* (OK time) -&amp;gt; Der STM32 hat eine Antwort erhalten&lt;br /&gt;
* (TIME 3703484819) -&amp;gt; Die Zeit die Empfangen wurde &lt;br /&gt;
* (- new client) -&amp;gt; Ein neuer WLan client hat sich angemeldet&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehlermöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.mikrocontroller.net/topic/385955?page=14#5032451 FritzBox muss neu gestartet werden]&#039;&#039;&#039;&lt;br /&gt;
* Die Website der Uhr hakt oder hat Timeouts&lt;br /&gt;
* Ping auf die IP-Adresse des ESP8266 ist wesentlich größer als 10msec oder setzt für mehrere Sekunden aus&lt;br /&gt;
&lt;br /&gt;
=== STM32F103C8T6 Mini-Development Board ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falsche STM32 Software geflasht&#039;&#039;&#039;, mögliche Symptome:&lt;br /&gt;
* Die LED PC13 des STM32F103 Board leuchtet nach dem Start nicht&lt;br /&gt;
* Der WebServer ist erreichbar, allerdings wird das EEPROM als offline angezeigt&lt;br /&gt;
* Der WebServer ist erreichbar, aber Datum und Uhrzeit sind 01.01.1900&lt;br /&gt;
* Auf der Updateseite ist die WordClock Firmware Version leer, (Update kann durchgeführt werden, allerdings ändert sich das Problem nicht)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RTC/EEPROM defekt oder falsch angeschlossen&#039;&#039;&#039;&lt;br /&gt;
* Beim Startup steht im Log&lt;br /&gt;
    rtc is offline&lt;br /&gt;
    eeprom is offline&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die rote und grüne LED leuchtet nur schwach&#039;&#039;&#039;&lt;br /&gt;
* Auf dem STM32F103 Board leuchtet die rote und grüne LED recht schwach. &lt;br /&gt;
* Das Board besitzt einen eigenen 5V zu 3,3V Spannungsregler (U1). Bei einem um 180Grad gedrehtem IC kommt es zu diesem Phänomen.&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97853</id>
		<title>Tutorial - Aufbau WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=97853"/>
		<updated>2017-11-29T21:21:59Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* STM32F103C8T6 Mini-Development Board */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses Tutorial soll Einsteigern und Fortgeschrittenen einen Leitfaden zum Zusammenbau der [[WordClock_mit_WS2812|WordClock mit WS2812]] geben. Das dazugehörige Projekt ist hier beschrieben: &#039;&#039;&#039;[[WordClock_mit_WS2812|WordClock mit WS2812]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Vorbemerkungen =&lt;br /&gt;
Das Projekt „WordClock mit WS2812“ ist so konzipiert, dass zum Nachbau keine besonderen Vorkenntnisse erforderlich sind. &lt;br /&gt;
Vorausgesetzt werden aber:&lt;br /&gt;
* Natürlich ein Lötkolben (ca. 25 W, an Schutzleiter angeschlossen) und Elektronik-Lötzinn mit max. 1 mm Durchmesser.&lt;br /&gt;
* Bei wenig Löterfahrung bitte nicht gleich am Shield löten „üben“, sondern an einem Stück Streifenrasterplatine (z. B.&amp;lt;br&amp;gt;[https://www.reichelt.de/Streifenraster/H25SR050/3/index.html?ACTION=3&amp;amp;GROUPID=7786&amp;amp;ARTICLE=8275 Reichelt Streifenrasterplatine]) und einigen Drahtstücken. Im Internet gibt es genügend Seiten, die das richtige Löten erklären.&lt;br /&gt;
* Ein einfaches Multimeter, um Gleichspannungen und Widerstände messen zu können. Gibt es ab 10 € bis 12 €.&lt;br /&gt;
* Sorgfalt und Geduld: Es ist nicht viel Aufwand, z. B. Widerstände vor dem Einlöten zu messen und somit Fehler bei der Bestückung zu vermeiden. &lt;br /&gt;
* Bei Unklarheiten mit Bauteil-Anschlüssen nicht einfach verschiedene Einbaumöglichkeiten „ausprobieren“ – das kann die Bauteile zerstören.&lt;br /&gt;
* Das komplette Lesen des Artikels kann helfen, Fehler zu vermeiden und aufwändige Fehlersuche unnötig zu machen.&lt;br /&gt;
&lt;br /&gt;
= Montage der LEDs =&lt;br /&gt;
&lt;br /&gt;
Die folgende Anleitung beschreibt den Aufbau der WS2812-LEDs für die WordClock24h. Bis auf die unten aufgeführten Maße gelten dieselben Ausführungen auch für die WordClock12h.&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock12h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 3,372 Meter WS2812-LED-Streifen mit 36 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 11 LEDs, bis man insgesamt 10 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 4,6 cm&lt;br /&gt;
* 7,7 cm&lt;br /&gt;
* 10,8 cm&lt;br /&gt;
* 13,9 cm&lt;br /&gt;
* 17,0 cm&lt;br /&gt;
* 20,1 cm&lt;br /&gt;
* 23,2 cm&lt;br /&gt;
* 26,3 cm&lt;br /&gt;
* 29,4 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wieder ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock24h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 5 Meter WS2812-LED-Streifen mit 60 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 18 LEDs, bis man insgesamt 16 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 3,4 cm&lt;br /&gt;
* 5,2 cm&lt;br /&gt;
* 7,1 cm&lt;br /&gt;
* 9,0 cm&lt;br /&gt;
* 10,9 cm&lt;br /&gt;
* 12,8 cm&lt;br /&gt;
* 14,7 cm&lt;br /&gt;
* 16,5 cm&lt;br /&gt;
* 18,4 cm&lt;br /&gt;
* 20,2 cm&lt;br /&gt;
* 22,1 cm&lt;br /&gt;
* 24,0 cm&lt;br /&gt;
* 25,9 cm&lt;br /&gt;
* 27,7 cm&lt;br /&gt;
* 29,6 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wider ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-Tesa.jpg|162x288px|miniatur|Markierungen und Klebeband]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Schritt 3: Isolierung ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschließend&#039;&#039;&#039; verklebt man jeweils den linken und rechten Rand senkrecht mit einem durchsichtigen TESA-Band mit einer Breite von 1,0 bis 1,5 cm. Sollte das Klebeband breiter sein, schlägt man es einfach nach hinten um. Das Klebeband dient dazu, Kurzschlüssen mit der Alu-Platte vorzubeugen, wenn nachher die LED-Streifen wieder an den Enden verlötet werden.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 4: Aufkleben der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun klebt man die abgeschnittenen Streifen auf die Alu-Platte, so dass jeweils der mittlere Kontakt der LED-Streifen links und rechts auf der Höhe des jeweiligen Bleistriftstrichs ist. Dabei ist zu beachten, dass &#039;&#039;&#039;jeder 2. Streifen auf dem &amp;quot;Kopf&amp;quot;&#039;&#039;&#039; verklebt wird. Das heisst:&lt;br /&gt;
&lt;br /&gt;
* Streifen 1: DIN links, DO rechts&lt;br /&gt;
* Streifen 2: DO links, DIN rechts&lt;br /&gt;
* Streifen 3: DIN links, DO rechts&lt;br /&gt;
* Streifen 4: DO links, DIN rechts&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
Bei der Positionierung kommt es nicht auf jeden Millimeter genau an. Es ist nicht so schlimm, wenn die LEDs dabei um einen Millimeter verschoben sind. Hilfreich bei der Orientierung, wo gerade DIN oder DO zu finden ist, waren bei meinem Streifen kleine Pfeile neben DIN, welche die Flussrichtung der Daten angeben, siehe Fotos rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-links.jpg|162x288px|miniatur|LED-Streifen - beachte DIN und DO!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Wichtig ist, dass die LEDs so gut wie möglich im Raster bleiben - nicht nur horizontal, sondern auch vertikal.&lt;br /&gt;
| [[Datei:WordClock24h-WS2812-komplett.jpg|319x314px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Schritt 5: Verlöten der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zunächst werden die Lötpunkte an den Enden der WS2812-Streifen verzinnt, siehe Bild links. Anschließend schneidet man vom Flachbandkabel ein paar 5cm lange Abschnitte, welche man dann als einzelne Litzen trennt, indem man sie einfach mit dem Fingernagel einklemmt und auseinanderzieht.&lt;br /&gt;
&lt;br /&gt;
Übrig bleiben 5cm lange Litzen, die dann einzeln verlötet werden. Zunächst verbindet man immer 2 Streifen paarweise auf der *rechten Seite*, indem man GND mit GND, DOUT mit DIN und 5V mit 5V verbindet, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Ist man auf der rechten Seite fertig, verbindet man &#039;&#039;&#039;ab der 2. Reihe&#039;&#039;&#039; lediglich mit je einer Litze DOUT mit DIN, GND und 5V lässt man zunächst frei, siehe Bild rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-verzinnen.jpg|110x240px|miniatur|Streifen an den Enden verzinnen]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-rechts.jpg|109x221px|miniatur|Streifen verlöten rechts]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-links.jpg|135x219px|miniatur|Streifen verlöten links]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Gut zu erkennen ist, dass links jeweils immer nur eine Litze (ab der 2. Reihe) DOUT mit dem nächsten DIN verbindet, während rechts (beginnend mit der 1. Reihe) immer alle drei Kontakte miteinander verbunden werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-komplett.jpg|362x316px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun lötet man auf der linken Seite das Flachbandkabel an, indem man immer zwei Litzen paarweise an GND und 5V heranführt. Dabei unbedingt die Reihenfolge beibehalten: Wenn man die linke Ader des Paares an GND anschließt, muss für alle Paare immer die linke Ader genutzt werden! Demzufolge wird die rechte Ader eines Paares immer an 5V angelötet. Das Ergebnis sieht man im Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Als letztes klappt man das Flachbandkabel auf die Rückseite der Platte und fixiert dieses dort mit Klebeband. Das Ergebnis sieht man auf dem Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Wie das Ende des 16-poligen Flachbandkabels nun mit der Platine verbunden wird, wird später erklärt. &#039;&#039;&#039;Dabei ist unbedingt auf die richtige Polung beim Anschluss zu achten!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Anloeten.jpg|149x266px|miniatur|Flachbandkabel anlöten]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Rueckseite.jpg|103x257px|miniatur|Flachbandkabel umklappen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alternativvorschlag&#039;&#039;&#039; Ich (Andreas/Alidi) finde es praktischer &#039;&#039;&#039;für die Montage des Flachbandkabels&#039;&#039;&#039; wie folgt vorzugehen:&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Komponenten Zwischenboden mit Alu Platte/LED Streifen und Nucleo Shield so platzieren wie im&lt;br /&gt;
Zusammenbau geplant. Nucleo Shield rechts unten im Zwischenboden der WC24h platzieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Graues Flachbandkabel mit rot markierter Ader so in des 16 poligen Pfostenbuchsensteckers plazieren,&lt;br /&gt;
dass rote Ader und Pin 1 des Steckers (Pfeilmarkierung am Stecker) übereinstimmen. Kabel und Codierung&lt;br /&gt;
des Pfostenbuchsensteckers zeigen nach links. Flachbandkabellänge ca. 50cm, Pfostenbuchsenstecker &lt;br /&gt;
zusammenpressen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_1.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
&lt;br /&gt;
Pfostenbuchsenstecker leicht auf den Pfostenstecker im Shield stecken. &lt;br /&gt;
Flachbandkabel insgesamt 3 mal um 90° Grad drehen (siehe Bild).&lt;br /&gt;
Flachbandkabel liegt jetzt an der rechten Seite der Aluplatte und &lt;br /&gt;
ragt über das obere Ende der Platte hinaus. Die rote Ader ist links.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flachbandkabel von Shield lösen und mit Aluplatte/LED Streifen um 180° Grad drehen. &lt;br /&gt;
LED Streifen sind jetzt oben/sichtbar und das Flachbandkabel liegt links der Platte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jeweils 2 Adern des Flachbandkabels beginnend mit der roten Ader vom Kabel abtrennen. &lt;br /&gt;
Die Paare sind immer ca. 4cm (doppelter LED Streifen Abstand) zu kürzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 6.&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Adern abisolieren (kurz, ca. 2mm), mit Lötzinn verzinnen (auch die Anschlußstellen auf dem LED Streifen).&lt;br /&gt;
Evt. die verzinnten Adern noch mal kürzen, da beim Verzinnen wahrscheinlich die Isolierung &lt;br /&gt;
geschrumpft ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die kurzen Verbindungsleitungen zwischen den Streifen hochklappen damit vermeidet man ungünstige&lt;br /&gt;
Drahtkreuzungen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 8&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Aderpaare an die LED Streifen anlöten. Rote Ader bzw. immer die linke Ader des Päarchens an +5V des&lt;br /&gt;
1, 3, 5, 7, 9, 11, 13, 15 LED Streifens anlöten. Die rechte Ader wird an GND angelötet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 9&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_2.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Kurze Verbindungsleitungen wieder zurückklappen, &lt;br /&gt;
Aluplatte wieder um 180° Grad zurückdrehen und &lt;br /&gt;
im Zwischenboden befestigen, &lt;br /&gt;
Flachbandkabel nach links auf die Aluplatte klappen, &lt;br /&gt;
Shield platzieren und prüfen, ob das Flachbandkabel &lt;br /&gt;
mit Buchsenstecker richtig passt. &lt;br /&gt;
&lt;br /&gt;
Mit einem Multimeter(Durchgangsprüfung/Widerstandsprüfung) &lt;br /&gt;
prüfen, ob der LED Anschluß +5V mit den Pins 1, 3, 5, 7, 9, &lt;br /&gt;
11, 13, 15 des Buchsensteckers verbunden sind. &lt;br /&gt;
GND muß mit den &amp;quot;geraden&amp;quot; Pins 2, 4, 6, 8, 10, 12, 14, 16 &lt;br /&gt;
verbunden sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Datenleitung.jpg|miniatur|WC24h LED Datenleitung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 10: Datenkabel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Ausgang WS2812 / Data auf dem Shield ist mit dem Eingang DI der Status-LED, und dann &lt;br /&gt;
mit dem ersten LED Streifen zu verbinden (gelbe Ader im Bild &amp;quot;WC24h_LED_Datenleitung.jpg&amp;quot;) &lt;br /&gt;
Shield -&amp;gt; DI-Status / DO-Status -&amp;gt; DI-Stripe (1.Reihe) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor.jpg|miniatur|WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 11: Status-LED &amp;amp; Sensoren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Helligkeitssensor habe ich in eine 5mm LED Fassung aus Gummi gesteckt (Conrad /184810).&lt;br /&gt;
Diese passt in das linke Loch unten im  Zwischenboden. Geschickt ist es Temp-Sensor, Helligkeits-&lt;br /&gt;
Sensor und Status-LED auf ein Alublech 40x50mm (mit den 3 Löchern an der richtigen Stelle) zu&lt;br /&gt;
befestigen. Das Blech klemmt dann genau in der Aussparung unten im Zwischenboden. Die Status LED &lt;br /&gt;
habe ich im mittleren Loch befestigt. Das rechte Loch bleibt frei.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Verdrahtung der LED Streifen und der Sensoren auf dem Zwischenboden komplett.&lt;br /&gt;
&lt;br /&gt;
= Bestückung des Mini-Dev-Board-Shields v3/v4 für STM32F103 =&lt;br /&gt;
Zunächst werden alle Widerstände, Kondensatoren und Stiftleisten von Seite mit den Bauteil-Bezeichnungen und -Werten aus eingesetzt und von der anderen Seite aus an das Shield gelötet. Dabei empfiehlt es sich, mit den Teilen mit niedriger Bauhöhe anzufangen (die Kondensatoren also zum Schluss). Je nach Ausstattung mit den optionalen Bauteilen müssen unterschiedliche Widerstände gesetzt werden. Im Folgenden eine Übersicht über die zu bestückenden Teile in Abhängigkeit von den optionalen Features, mit denen man die eigene Wordclock ausstatten möchte:&lt;br /&gt;
{| class=&amp;quot;wikitable centered&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil !! Bestücken V3 !! Bestücken V4&lt;br /&gt;
|-&lt;br /&gt;
| R1 || nur mit LDR || nur mit LDR&lt;br /&gt;
|-&lt;br /&gt;
| R2 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R3 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R4 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R5 || ohne TSOP 100k Ohm, mit TSOP 100 Ohm || ohne TSOP nein, mit TSOP 100 Ohm&lt;br /&gt;
|-&lt;br /&gt;
| R6 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R7 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R8 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R9 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R10 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R11 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R12 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R13 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R14 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R15 || nicht vorhanden || nur wenn DCF-Modul mit Open Collector verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R16 || nicht vorhanden || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C1 || nur wenn TSOP eingebaut || nur wenn TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C2 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C3 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C4 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D2 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| IC1 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| IC2 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| LED1 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| S1 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| S2 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| T1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut &lt;br /&gt;
|-&lt;br /&gt;
| Q1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
= Löten des Mini-Dev-Board-Shields v4 für STM32F103 =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 2a.jpg|miniatur|Mini Shield V4 für STM32F103+DS3231+AMS1117+LDR+DS1820]]&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
Rechts seht Ihr ein Mini Shield V4 &lt;br /&gt;
bestückt für STM32F103, DS3231/RTC Echtzeituhr, &lt;br /&gt;
AMS1117/Spannungsregler, LDR/Fotowiderstand &lt;br /&gt;
und DS1820/Temperatursensor.&lt;br /&gt;
&lt;br /&gt;
Die Anschlußleisten rechts und links habe ich &lt;br /&gt;
wie folgt ausgeführt&lt;br /&gt;
&lt;br /&gt;
Links-&amp;gt; &lt;br /&gt;
Buchsenleiste gewinkelt (BL 1x20W 2,54/Reichelt,&lt;br /&gt;
gekürzt) als Anschluß für RTC Echtzeituhr/DS3231. &lt;br /&gt;
Damit kann man das Uhr-Modul einfach stecken.&lt;br /&gt;
Printstecker PSS 254/3w/Reichelt mit entsprechender &lt;br /&gt;
Kuppling und Crimpkontakten für LDR/Fotowiderstand &lt;br /&gt;
und Anschluß WS2812. Damit sind die beiden Komponenten&lt;br /&gt;
steckbar ausgeführt&lt;br /&gt;
&lt;br /&gt;
Rechts-&amp;gt; &lt;br /&gt;
Buchsenleiste wie Links entsprechend gekürzt. &lt;br /&gt;
Damit kann man ebenfalls AMS1117/Spannungsregler&lt;br /&gt;
und DS1820/Temperatursensor (mit Stiftleiste 3pol)&lt;br /&gt;
stecken.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 ohne R2 R5.jpg|miniatur|Komplettes Mini Shield mit STM32F103+DS3231+AMS1117+(LDR+DS1820)]]&lt;br /&gt;
&lt;br /&gt;
Vereinzelt werden STM32-Mini-Development-Boards geliefert, bei denen die 3,3V- Spannungsversorgung auf dem Board nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
Als einfachen Schnelltest kann man vor dem Einlöten ein STM32-Mini-Development-Board an ein 5V-Ladegerät mit Micro-USB-Buchse anschließen: Die Power-LED muss leuchten, bei manchen der so &amp;quot;getesteten&amp;quot; &lt;br /&gt;
Boards blinkt auch die LED am Ausgang PC13.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Achtung: Die beiden Elkos auf den Fotos rechts sind falsch herum eingelötet worden. Beim oberen Elko ist auf der Platine das Pluszeichen oben und bei dem unteren ist das Pluszeichen unten eingezeichnet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bei den Elkos ist der graue Streifen normalerweise die Seite, auf der das Minuszeichen eingetragen ist. Daher sind hier beide falsch herum eingelötet.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Löten des Nucleo-Shields v3 für STM32F401RE oder STM32F411RE =&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Vorbereiten/Löten des STM32F411 Nucleo-64 Boards&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie auf dem Bild rechts zu sehen: die SMD Brücken SB54/SB55 [1], die SMD Brücken SB50 [2] und SB16 [3] entfernen und aufheben.&lt;br /&gt;
|| [[Datei:STM32_nucleo_F411RE_Rückseite_Brücken.jpg|miniatur|Nucleo Rückseite mit Brücken]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
R35 und R37 [4] mit den vorher entfernten SMD Brücken bestücken (siehe Bild rechts) die Kondensatoren C33 und C34 [6] bestücken und dann den Quarz X3/8Mhz [5] einlöten.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG:&#039;&#039;&#039; Wird für C33 und C34 statt der im nebenstehenden Foto gezeigten Bestückung der Platinenoberseite (hier mit 0603 SMD Kondensatoren) die Bestückung mit normalen THT-Bauteilen auf der Unterseite direkt an den Quarz-Anschlüssen gewählt muss die &#039;&#039;&#039;nötige Masseverbindung&#039;&#039;&#039;  mit einem zusätzlichen Draht zu CN6, Pin7 (GND)  hergestellt werden (siehe Foto &#039;Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren&#039; im Artikel [[WordClock_mit_WS2812]]!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32 nucleo F411RE Bestückungsseite.jpg|miniatur|Nucleo Bestückungsseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn das STM32F411 Nucleo-64 geflasht ist, muß der ST-Link Teil &lt;br /&gt;
des Nucleo Boards abgetrennt werden,damit die Shield / Nucleo Board Kombination &lt;br /&gt;
in den Zwischenrahmen der WC24h passt.&lt;br /&gt;
Folgendes ist dafür zu tun:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 nucleo F411RE Bestückungsseite ST-Link.jpg|miniatur|ST-Link]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; &lt;br /&gt;
ST Link absägen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B.&#039;&#039;&#039; &lt;br /&gt;
die Brücken SB62/SB63 auf dem Nucleo Board einlöten. Damit werden RX/D0 und TX/D1 auf der&lt;br /&gt;
einreihigen Arduino Pfostenbuchse C9 und die Pins 35 und 37 auf CN10 (Morpho Connector)&lt;br /&gt;
angebunden.   &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C.&#039;&#039;&#039; &lt;br /&gt;
Auf dem ST Link sind die beiden Jumper CN2 zu entfernen. Damit wird der ST Link von interner &lt;br /&gt;
auf externe Programmierung umgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 Nucleo F411RE Rückseite ST-Link.jpg|miniatur|ST-Link Rückseite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;D.&#039;&#039;&#039; &lt;br /&gt;
Die Brücken Brücken SB12-SB15 auf dem ST Link sind zu entfernen. Dies dient zum Schutz des ST Links&lt;br /&gt;
falls beim Absägen die Verbindungsleitungen ST Link - Nucleo Board kurzgeschlossen wurden.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie der ST Link wieder an die Shield/Nucleo Board Kombination angeschlossen wird, beschreibe ich später.&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
= Gesamtmontage =&lt;br /&gt;
&lt;br /&gt;
== Zwischenboden ==&lt;br /&gt;
Die Zwischenböden sind genauso groß wie die Frontplatte, womit sich die Frage der Holzoptik an den Seiten stellt. Die meisten Leute greifen zu einer der folgenden Lösungen:&lt;br /&gt;
&lt;br /&gt;
*Rahmen um die Uhr (siehe Teileliste)&lt;br /&gt;
*Zwischenboden anstreichen&lt;br /&gt;
*Zwischenboden mit Umleimer einfassen&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
Möglichkeiten der Anbringung der Frontplatte aufzählen und erläutern, u.a.&lt;br /&gt;
*Kleber&lt;br /&gt;
*Magnete&lt;br /&gt;
Man sollte die Magnete, die an der Frontplatte angeklebt werden, ca 3-4mm in den Zwischenboden rein ragen lassen, damit sich Frontplatte nicht verschiebt. Außerdem muß man abwarten, bis der Kleber völlig ausgehärtet ist.&lt;br /&gt;
&lt;br /&gt;
*Powerstrips&lt;br /&gt;
&lt;br /&gt;
== Aufhängen an der Wand ==&lt;br /&gt;
&lt;br /&gt;
= Inbetriebnahme =&lt;br /&gt;
== Flashen des Nucleo STM32F4xx ==&lt;br /&gt;
&lt;br /&gt;
== Flashen des Nucleo STM32F411 ==&lt;br /&gt;
(noch nicht komplett, Andreas/Alidi)&lt;br /&gt;
&lt;br /&gt;
1. die WWW Seite http://www.st.com/en/development-tools/st-link-v2.html aufrufen.&lt;br /&gt;
&lt;br /&gt;
2. unter &amp;quot;Tools and Software / Embedded Software&amp;quot; folgende SW runterladen (evt. vorher bei ST anmelden)&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004&lt;br /&gt;
&lt;br /&gt;
3. folgende Firmware von &amp;quot;WordClock mit WS2812&amp;quot; in einen Ordner abspeichern&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;Wordclock-hex.zip&#039;&#039;&#039;, WordClock STM32 Firmware alle Varianten, 2.6.6&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; entzippen z.b. in Unterordner &amp;quot;Wordclock-hex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;ESP-WordClock-4M.bin&#039;&#039;&#039; , ESP8266 ESP-12F Firmware - Neu! , 2.6.6&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;WC24h.apk&#039;&#039;&#039;, Android App , 2.6.1 (für WLAN Verbindung WCxyh und Smartphon)&lt;br /&gt;
&lt;br /&gt;
4. Datei von Pkt. 2 &amp;quot;STM32 ST-LINK Utility / STSW-LINK004&amp;quot; installieren&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004, installieren, Dateiordner wählen&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; auf dem Desktop erscheint das STM Link Icon &#039;&#039;&#039;&amp;quot;STM32 ST-Link Utility&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
5. Nucleo-Board mit Mini USB Kabel an ST Link mit PC verbinden&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf ST Link leuchtet&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf Nucleo-Board leuchtet, grüne LED auf Nucleo-Board blinkt&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Nucleo-Board ist als Laufwerk z.b. &#039;&#039;&#039;&amp;quot;f:\Node_F411RE&amp;quot;&#039;&#039;&#039; sichtbar&lt;br /&gt;
&lt;br /&gt;
6. das Icon STM32 ST-Link Utility  starten&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im Nucleo-Board konsistent zu den Informationen im .HEX File sind.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; die gewünschte Hex-Datei passend zur Hardware aus Unterordner auswählen z.B. &#039;&#039;&#039;&amp;quot;wc24h-stm32f411-ws2812-grb.hex&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; auf Öffnen drücken&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; grüne LED auf Nucleo-Board ist aus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; LED auf ST Link blinkt rot/grün&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; nach ca. 10min ist das Nucleo-Board geflasht, die LED auf dem ST Link leuchtet grün&lt;br /&gt;
&lt;br /&gt;
Der Rest folgt noch, Andreas/Alidi&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32F103 (Mini-Dev-Board) ==&lt;br /&gt;
Das Flashen des STM32 ist im [[WordClock_mit_WS2812#Flashen_des_STM32_MiniDevBoards|Hauptartikel]] erläutert. &lt;br /&gt;
Der STM32 kann kann einzeln geflasht werden, genauso aber auch, wenn er schon auf dem Shield verbaut ist.&lt;br /&gt;
&lt;br /&gt;
== Flashen des ESP ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
# Virtual COM Port Treiber installieren (siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|hier]])&lt;br /&gt;
# UART am PC einstecken, er sollte im Gerätemanager mit einem COM-Port auftauchen (welcher, ist egal). In den Eigenschaften (rechte Maustaste) die Bits pro Sekunde auf 115200 stellen (siehe Screenshot).&lt;br /&gt;
# Sicherstellen, dass der Jumper am Shield auf PROG steht, nicht auf RUN!&lt;br /&gt;
# UART mit dem Shield verbinden (GND an GND, TX an RX, RX an TX)&lt;br /&gt;
# Der [[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Anleitung im Hauptartikel]] folgen.&lt;br /&gt;
# UART vom Board abziehen, Jumper auf RUN stellen und den ESP ins eigene WLAN einbinden (entweder über WPS oder als Access Point)&lt;br /&gt;
||[[Datei:Geraetemanager COM.PNG|miniatur|UART im Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
Es gibt keine Rückmeldung, ob das Board im Flash-Modus ist. Falls es nicht klappt, sollte man das gleiche Prozedere bei mitlaufendem Putty ausprobieren (siehe [[WordClock_mit_WS2812#Logging|hier]]). Der Flash-Modus erzeugt ein paar kryptische Zeichen im Putty-Fenster. Wenn das geklappt hat, Putty schließen (damit der COM-Port freigegeben wird) und das gleiche Prozedere erneut probieren.&lt;br /&gt;
&lt;br /&gt;
== Erläuterung der Meldungen im Log ==&lt;br /&gt;
* time &amp;quot;192.53.103.103&amp;quot; -&amp;gt; Der STM32 hat ein Time Commando zum ESP geschickt&lt;br /&gt;
* (OK time) -&amp;gt; Der STM32 hat eine Antwort erhalten&lt;br /&gt;
* (TIME 3703484819) -&amp;gt; Die Zeit die Empfangen wurde &lt;br /&gt;
* (- new client) -&amp;gt; Ein neuer WLan client hat sich angemeldet&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehlermöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.mikrocontroller.net/topic/385955?page=14#5032451 FritzBox muss neu gestartet werden]&#039;&#039;&#039;&lt;br /&gt;
* Die Website der Uhr hakt oder hat Timeouts&lt;br /&gt;
* Ping auf die IP-Adresse des ESP8266 ist wesentlich größer als 10msec oder setzt für mehrere Sekunden aus&lt;br /&gt;
&lt;br /&gt;
=== STM32F103C8T6 Mini-Development Board ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falsche STM32 Software geflasht&#039;&#039;&#039;, mögliche Symptome:&lt;br /&gt;
* Die LED PC13 des STM32F103 Board leuchtet nach dem Start nicht&lt;br /&gt;
* Der WebServer ist erreichbar, allerdings wird das EEPROM als offline angezeigt&lt;br /&gt;
* Der WebServer ist erreichbar, aber Datum und Uhrzeit sind 01.01.1900&lt;br /&gt;
* Auf der Updateseite ist die WordClock Firmware Version leer, (Update kann durchgeführt werden, allerdings ändert sich das Problem nicht)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RTC/EEPROM defekt oder falsch angeschlossen&#039;&#039;&#039;&lt;br /&gt;
* Beim Startup steht im Log&lt;br /&gt;
    rtc is offline&lt;br /&gt;
    eeprom is offline&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die rote und grüne LED leuchtet nur schwach&#039;&#039;&#039;&lt;br /&gt;
* Auf dem STM32F103 Board leuchtet die rote und grüne LED recht schwach. &lt;br /&gt;
* Das Board besitzt einen eigenen 5V zu 3,3V Spannungsregler. Bei einem um 180Grad gedrehtem IC kommt es zu diesem Phänomen.&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97851</id>
		<title>WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97851"/>
		<updated>2017-11-29T21:14:47Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Weitere geplante Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist der Nachfolger der beiden Projekte [[Word_Clock]] und [[WordClock24h]]. Diese Projekte werden hier zusammengefasst und mit ein- und derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.&lt;br /&gt;
&lt;br /&gt;
Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden &#039;&#039;&#039;WordClock12h&#039;&#039;&#039; und die 24-Stunden-Variante &#039;&#039;&#039;WordClock24h&#039;&#039;&#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Zugehöriger Thread im Forum: https://www.mikrocontroller.net/topic/385955&lt;br /&gt;
&lt;br /&gt;
Tutorial zum Aufbau der WordClock: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WordClock12h und WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:wordclock-frontplatte-v2.png|400px|left|WordClock12h]] &lt;br /&gt;
|| [[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] als auch auf einem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:&lt;br /&gt;
&lt;br /&gt;
* Lauffähig auf STM32F401 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]], STM32F411 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]] und [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
* Anbindung eines [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls mit speziell abgestimmter Firmware&lt;br /&gt;
* WPS-Button zum schnellen Anbinden des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls an das vorhandene Netzwerk&lt;br /&gt;
* Konfiguration über [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]]&lt;br /&gt;
* Holen der Uhrzeit per NTP-Protokoll aus dem Internet&lt;br /&gt;
* Fernsteuerung über IR-Fernbedienung mittels [[IRMP]]&lt;br /&gt;
* Fernsteuerung per [[WordClock_mit_WS2812#Android_App|Android App]]&lt;br /&gt;
* Einstellen des Anzeigemodus (&amp;quot;Sprache&amp;quot;), Helligkeit und der Farbe per IR-Fernbedienung/App/Web&lt;br /&gt;
* Konfigurierbare Nachtschaltzeiten - d.h. automatisches Abschalten zur Nachtzeit, separat auch für das Ambilight&lt;br /&gt;
* Einspielen von MP3-Dateien zu bestimmten Ereignissen oder zu Alarmzeiten (Wecker) über optionalen Mini-DFPlayer&lt;br /&gt;
* Anbindung von LED-Stripes des Typs [[WordClock_mit_WS2812#WS2812|WS2812]] und [[WordClock_mit_WS2812#WS2812|WS2812B]]&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs APA102&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs SK6812 (RGBW-LEDs)&lt;br /&gt;
* Sanftes Überblenden der Uhrzeiten oder verschiedene Animationen bei Uhrzeitwechsel, z.B. &amp;quot;Explode&amp;quot; oder &amp;quot;Matrix&amp;quot;&lt;br /&gt;
* Farbanimationen, z.B. Automatischer Farbverlauf durch alle Regenbogenfarben (&amp;quot;Rainbow&amp;quot;)&lt;br /&gt;
* Anzeigen von teilweise animierten Piktogrammen an bestimmten Tagen wie Geburtstag/Weihnachten/Silvester etc.&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]] (optional)&lt;br /&gt;
* Anbindung einer externen DS3231-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]&lt;br /&gt;
* Anbindung eines externen I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]&lt;br /&gt;
* Optionaler Anschluss eines [[WordClock_mit_WS2812#DCF77|DCF77]]-Moduls&lt;br /&gt;
* Manuelles Stellen der Uhrzeit per [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]] oder [[WordClock_mit_WS2812#Android_App|Android App]], wenn kein Internet/DCF77 verfügbar&lt;br /&gt;
* Optionale Temperaturmessung und -Anzeige mit [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx-Sensor]]&lt;br /&gt;
* Optionale Wetteranzeige über openweathermap.org&lt;br /&gt;
* Separate Farbauswahl für Display und Ambilight&lt;br /&gt;
* Separat einschaltbares Ambilight mit auswählbaren Animationen: Keine, &amp;quot;Clock&amp;quot; (Umlaufende Sekundenanzeige) und &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
* Konfiguration einer &amp;quot;Zeitschaltuhr&amp;quot; für das Ambilight, um dieses zum Beispiel generell nachts abzuschalten&lt;br /&gt;
* Laufschriften - eigene Texte und Wettermeldungen&lt;br /&gt;
* Optionale Steuerung der Stromversorgung für die LED-Stripes&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; Einspielen von [[WordClock_mit_WS2812#Update|Updates]] für ES8266 ESP-12F und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; WCtris - Tetris Clone zum Spielen auf der Uhranzeige&lt;br /&gt;
&lt;br /&gt;
=== Geplante Features für Version 2.7.x ===&lt;br /&gt;
&lt;br /&gt;
* Änderung Programmlogik: Display-Timer soll nicht das Ambilight einschalten. Dieses geht über den Ambilight-Timer.&lt;br /&gt;
* Anzeige von Wetterdaten über Piktogramme, Einblendung automatisch zu konfigurierbaren Zeiten.&lt;br /&gt;
* Ausblenden einzelner LEDs bei animierten Piktogrammen&lt;br /&gt;
* Konfiguration der Anzeigedauer von Piktogrammen&lt;br /&gt;
* Automatische Helligkeit separat auch für Ambilight (alle Modi) - mit Offset-Regler im Vergleich zum Display&lt;br /&gt;
* Ambilight Mode Clock: Sekundenzeiger mit Fading über mehrere LEDs&lt;br /&gt;
* Ambilight Mode Clock: Farbe der 5-Sekunden-Marker einstellbar&lt;br /&gt;
* FIR-Filter für automatische Helligkeitsregelung.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Einstellung: In aktueller Displayfarbe oder in grün.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Ausblenden der Buchstaben per Strahl, Einblenden der Buchstaben durch 2. Strahl&lt;br /&gt;
* Snake Animation frisst nicht nur die alte Uhrzeit, sondern baut die neue Uhrzeit gleichzeitig oder in 2. Durchlauf hinter sich auf&lt;br /&gt;
* Angabe eines Ausgabeformats für die Datumsanzeige&lt;br /&gt;
* Anzeige des On-/Off-Zustands im Webinterface&lt;br /&gt;
* Harlekin-Farbanimation (jeder Buchstabe hat eine eigene Farbe)&lt;br /&gt;
* Jester-Modus (1. April): Unorthodoxe Anzeige am 1. April.&lt;br /&gt;
&lt;br /&gt;
=== Weitere geplante Features ===&lt;br /&gt;
&lt;br /&gt;
* Optional: Umgekehrte Logik zur Helligkeitssteuerung des Ambilights: Bei viel Umgebungslicht Dimmen des Ambilights, bei wenig Umgebungslicht die Helligkeit des Ambilights erhöhen.&lt;br /&gt;
* Webinterface: zusätzliche Infos, z.B. Link auf Liste der Timeserver.&lt;br /&gt;
* STM32-Logbook im Web-Interface&lt;br /&gt;
* Geburtstagsreminder: An einem Geburtstag scrollt der Name und das Alter zu einer vordefinierten Uhrzeit durch.&lt;br /&gt;
* Farbe von Ambilight und Display gesteuert nach Uhrzeit (z.B. von morgens rot nach abends blau)&lt;br /&gt;
* Optimierung der Rainbow-Animation für SK6812 (Weiß)&lt;br /&gt;
* Feinere Unterscheidungen bei Änderung der Display-Helligkeit über Schieberegler (ist momentan nur bei jedem zweiten Schritt erkennbar).&lt;br /&gt;
* Neue Animation &amp;quot;Implode&amp;quot;&lt;br /&gt;
* Animation Flicker: Zunächst die alte Uhrzeit flackern lassen, dann erst die neue. Also nicht beide zusammen.&lt;br /&gt;
* Mood-Light-Funktion&lt;br /&gt;
* Hintergrundfarbe/Helligkeit für Display bzw. Ambilight&lt;br /&gt;
* Vereinfachtes Bedienkonzept für IR-Fernbedienung&lt;br /&gt;
* Spiele wie TRON, SNAKE und PONG&lt;br /&gt;
* Default LDR-Werte für MIN und MAX auf 0 und 4095 (oder angepasster) ändern, wenn im EEPROM-Speicher für die Werte 0 und 0 erkannt wird. So funktioniert der LDR von vorn herein auch ohne kalibrieren und es werden Missverständnisse vermieden.&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist unbedingt erforderlich, dass die passende ESP8266-Firmware zur STM32-Firmware eingespielt wird! Ältere ESP8266-Firmware-Versionen führen auf jeden Fall zu Fehlverhalten!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Regel ist dabei: Die STM32-Version muss mit der ESP8266-Firmware in den ersten beiden Ziffern A.B übereinstimmen, die dritte Ziffer C darf unterschiedlich sein.&lt;br /&gt;
&lt;br /&gt;
Aktuelle STM32-Version: &#039;&#039;&#039;2.7.0 vom 29.11.2017&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Aktuelle ESP-Version: &#039;&#039;&#039;2.7.1 vom 29.11.2017&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Momentan kann das SVN nicht aktualisiert werden, daher sind die Sources noch auf Stand 2.6.6!&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EmBitz-Projekt:&#039;&#039;&#039; || [https://www.mikrocontroller.net/svnbrowser/wordclock24h/?view=tar Tarball]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SVN hier auf µc.net:&#039;&#039;&#039;|| svn://mikrocontroller.net/wordclock24h/&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repo-Browser&#039;&#039;&#039;:|| [http://www.mikrocontroller.net/svnbrowser/wordclock24h/ WordClock24h im SVN]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Hex- und Bin-Dateien, wenn man - ohne zu compilieren - direkt flashen will:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%&amp;quot; | Firmware !! style=&amp;quot;width:8%&amp;quot; | Version !! style=&amp;quot;width:10%&amp;quot; | Datum !! style=&amp;quot;width:30%&amp;quot; | Datei&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock STM32 Firmware&#039;&#039;&#039; alle Varianten          || [[WordClock_mit_WS2812#STM32_WordClock_Software|2.7.0]] || 03.06.2017 || [[Datei:Wordclock-hex.zip]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-01 Firmware&#039;&#039;&#039;                          || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.0]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-512K.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-12F Firmware&#039;&#039;&#039;                  || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.1]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-4M.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App|Android App]]&#039;&#039;&#039; || &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App_2|2.6.6]]&#039;&#039;&#039; || 15.06.2017 || [[Datei:WC24h.apk]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WCTris Windows-Console-Programm&#039;&#039;&#039;                  || 2.6.0 || 11.03.2017 || [[Datei:Wctris.zip]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, wird hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]&lt;br /&gt;
&lt;br /&gt;
Wie man die App unter Android installiert, kann man hier nachlesen:&lt;br /&gt;
&lt;br /&gt;
http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html&lt;br /&gt;
&lt;br /&gt;
Am einfachsten erlaubt man die Installation von Apps &amp;quot;aus unbekannten Quellen&amp;quot; und klickt anschließend direkt auf dem Android-Gerät auf den [[WordClock_mit_WS2812#Download|Download]]-Link. Dann kann man das Programm direkt nach dem Download installieren.&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Varianten ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Hardware-Varianten unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Uhrenanzeige WC24h und WC12h&lt;br /&gt;
* Mikrocontroller: STM32F103 (Mini-Development Board), STM32F401 (Nucleo) und STM32F411 (Nucleo)&lt;br /&gt;
* LED-Streifen: WS2812-GRB, WS2812-RGB, SK6812-RGB, SK6812-RGBW und APA102&lt;br /&gt;
&lt;br /&gt;
Für jede dieser Kombinationen gibt es eine spezielle Hex-Datei zum Flashen des STM32. Der Dateiname setzt sich aus den oben genannten drei Teilen zusammen.&lt;br /&gt;
&lt;br /&gt;
* 1. Teil: wc12h oder wc24h&lt;br /&gt;
* 2. Teil: stm32f103, stm32f401 oder stm32f411&lt;br /&gt;
* 3. Teil: ws2812-grb, ws2812-rgb, sk6812-rgb, sk6812-rgbw oder apa102&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich folgende Dateinamen:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Firmware Varianten&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | Controller || style=&amp;quot;width:30%&amp;quot; | Dateiname || style=&amp;quot;width:40%&amp;quot; | Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F103&#039;&#039;&#039; || wc12h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F401&#039;&#039;&#039; || wc12h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F411&#039;&#039;&#039; || wc12h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F103&#039;&#039;&#039; || wc24h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F401&#039;&#039;&#039; || wc24h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F411&#039;&#039;&#039; || wc24h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu beachten: Die normalen WS2812-LED-Streifen benutzen die Farbreihenfolge GRB (Grün-Rot-Blau)!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Software für Windows ===&lt;br /&gt;
&lt;br /&gt;
Die Software zum Flashen des Programms:&lt;br /&gt;
&lt;br /&gt;
* ST-Link/V2 , siehe: http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; (nicht Nucleo!) auch über UART geflashed werden. Dann braucht man keinen ST-Link und verwendet folgende Software: http://www.st.com/web/en/catalog/tools/PF257525&lt;br /&gt;
&lt;br /&gt;
Alternativer Link:&lt;br /&gt;
&lt;br /&gt;
http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html&lt;br /&gt;
&lt;br /&gt;
Zum Flashen des &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; über &#039;&#039;&#039;UART&#039;&#039;&#039; muss beim Einschalten des STM Boot0 über einen Jumper auf „1“ gesetzt sein. Bei Verwendung eines ESP8266-ESP12F-WLAN-Moduls ist aber der mittlere Anschluss von Boot0 schon durch eine Drahtverbindung für das OTA-Flashen belegt – deshalb wird für das Flashen ein &#039;&#039;&#039;ST-Link-Adapter&#039;&#039;&#039; über die SWD-Schnittstelle des STM32MiniBoard &#039;&#039;&#039;empfohlen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Software für das Flashen über UART wird auch zum Aufspielen der ESP8266 Firmware des WLAN-Moduls benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchte man die Sources selber übersetzen:&lt;br /&gt;
&lt;br /&gt;
* EmBitz IDE, siehe https://www.embitz.org/&lt;br /&gt;
&lt;br /&gt;
Möchte man die Debug- und Log-Meldungen als Entwickler oder zur Diagnose verfolgen, braucht man noch&lt;br /&gt;
&lt;br /&gt;
* STM32 Virtual COM Port Driver: http://www.st.com/web/en/catalog/tools/PF257938 für das Nucleo-Board&lt;br /&gt;
* oder einen zusätzlichen USB-UART Adapter nebst Treiber für das STM32F103 Mini Development Board&lt;br /&gt;
* PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder andere Terminal-Emulation&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Quellcode selbst übersetzen ===&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist nur notwendig, wenn man an den Quellen etwas ändern möchte. Im Normalfall braucht man lediglich eine der oben im [[WordClock_mit_WS2812#Download|Download]]-Kapitel angegebenen Hex-Dateien auszuwählen und diese auf den Prozessor flashen.&lt;br /&gt;
&lt;br /&gt;
Wenn man an dem Programm etwas ändern oder erweitern möchte, dann startet man die zuvor installierte EmBitz-IDE. Aus dem SVN lädt man sich den Tarball (Link siehe Kapitel [[WordClock_mit_WS2812#Download|Download]]) und entpackt diesen unter C:\EmBitzProjects.&lt;br /&gt;
&lt;br /&gt;
Nach dem Entpacken findet man dann im Unterverzeichnis wclock24h die Projekt-Datei &#039;&#039;&#039;wclock24h.ebp&#039;&#039;&#039;, um den Quellcode für ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zu compilieren. In der EmBitz-Ide kann man nun mit &#039;&#039;&#039;File -&amp;gt; Open&#039;&#039;&#039; die Projekt-Datei laden.&lt;br /&gt;
&lt;br /&gt;
Möchte man jedoch den Quellcode für das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Board]] übersetzen, dann lädt man die Projektdatei &#039;&#039;&#039;wclock24h-F103.ebp&#039;&#039;&#039; aus dem Unterverzeichnis &#039;&#039;&#039;wclock24h-F103&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Anschließend wählt man in der oberen Zeile in der Mitte das Ziel aus, wofür man den Quellcode übersetzen möchte.&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]]-Projekt werden folgende Alternativen angeboten:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo401-Debug&lt;br /&gt;
* WC24h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo411-Debug&lt;br /&gt;
* WC24h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo401-Debug&lt;br /&gt;
* WC12h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo411-Debug&lt;br /&gt;
* WC12h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
In der F103-Projektdatei können folgende Varianten ausgewählt werden:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-STM32F103-Debug&lt;br /&gt;
* WC24h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-STM32F103-Debug&lt;br /&gt;
* WC12h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
Die Debug-Varianten sind lediglich für die Bugsuche im Programm vonnöten. Es empfiehlt sich daher im Normalfall, die entsprechende Release-Variante auszuwählen.&lt;br /&gt;
&lt;br /&gt;
Nach der Auswahl kann man dann unter &#039;&#039;&#039;Build -&amp;gt; Rebuild all target files&#039;&#039;&#039; den Übersetzungsvorgang starten. Danach findet man im Unterverzeichnis bin\\Release die dazugehörige Hex-Datei mit dem ST-Link-Programm dann auf dem Ziel geflasht werden kann. Das wars!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== STM32F103C8T6 Mini-Development Board ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Dieses Board wird für die &amp;quot;klassische&amp;quot; 10x11 WordClock12h empfohlen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein kleines, platzsparendes Board mit ausreichendem 32Bit-Mikrocontroller. Der STM32F103C8T6 hat 64 KB Flash und 20KB RAM. Bei ebay ist er für kleines Geld (unter 4 EUR) zu haben: Einfach dort nach &amp;quot;STM32F103C8T6&amp;quot; suchen. Die Anbieter sind meist in China. Aber es gibt auch Anbieter aus Deutschland, wo das bestellte Board dann auch schon nach 2 Tagen im Briefkasten steckt. Meist sind die deutschen Anbieter aber etwas teurer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während die [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Boards]] bereits den &amp;quot;Programmer&amp;quot; ST-Link-V2 zum Programmieren des Flashs on-Board haben, ist dies hier nicht der Fall. Hier muss ein separates ST-Link-V2 zum einmaligen Programmieren verwendet werden. Hat man schon ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zuhause, kann der darauf befindliche ST-Link verwendet werden. Oder man beschafft sich einen eigenen Programmer. Bei eBay erhält man sie bereits im einstelligen Euro-Bereich, wenn man nach &amp;quot;ST-Link V2&amp;quot; sucht.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieses Boards gegenüber dem Nucleo ist der geringe Platzbedarf. Rechts sind der Anschluss eines ST-Link V2-Clones zum Flashen und die Anschluss-Skizze der WordClock an das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] zu sehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei den Shields ab V3 für das STM32-Mini-Development Board muss noch eine Drahtbrücke eingelötet werden: Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss über eine Drahtbrücke mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32F103C8T6.png|miniatur|STM32F103C8T6 Mini-Development Board]]&lt;br /&gt;
[[Datei:STM32F103C8T6 MiniDevBoard Schematic.png|mini|MiniDevBoard Schaltplan]]&lt;br /&gt;
[[Datei:STM32F103 MiniBoard STLink.jpg|mini|Flashen per ST-Link V2-Clone]]&lt;br /&gt;
[[Datei:WC_MiniDev_Shield_v4_Drahtbruecke.jpg|mini|Drahtbrücke zu BOOT0]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STM32F401RE Nucleo und STM32F411RE Nucleo ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Es kann sowohl das 401er als auch das 411er [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] verwendet werden. Beide werden identisch genutzt.&lt;br /&gt;
&lt;br /&gt;
Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte man die überstehenden Enden der Steckerleisten auf der &#039;&#039;&#039;Unterseite&#039;&#039;&#039; mit einer Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil) können dabei auf die Oberseite gesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile vier verschiedene Revisionen von den Nucleo-Boards:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;MB1136 C01&amp;quot;: Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator&lt;br /&gt;
* &amp;quot;MB1136 C02 bis C04&amp;quot;: Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Device&lt;br /&gt;
&lt;br /&gt;
Damit auch das Board mit der Revision &amp;quot;MB1136 C01&amp;quot; zuverlässig im HSE-Modus mit 84MHz läuft, sind folgende Hardware-Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
* Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)&lt;br /&gt;
* Lötbrücken SB16 und SB50 entfernen (dito)&lt;br /&gt;
* R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken&lt;br /&gt;
* Quarz X3 (8 MHz) einlöten&lt;br /&gt;
* C33 und C34 mit jeweils 22pF bestücken.&lt;br /&gt;
&lt;br /&gt;
C33 und C34 können auch normale THT-Bauteile sein, wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-Anschlüssen angebracht und mit einem Draht zu CN6, Pin7 (GND) die nötige Masseverbindung hergestellt, siehe Foto rechts. &lt;br /&gt;
&lt;br /&gt;
Es geht aber auch auf der Oberseite direkt an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren. In diesem Falle ist die Masseverbindung bereits im PCB Layout vorhanden und die Drahtbrücke nach CN6, Pin7 (GND) entfällt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 &amp;amp; R37 einlöten, bevor man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision &amp;quot;MB1136 C02&amp;quot; und höher durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.&lt;br /&gt;
&lt;br /&gt;
Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene stellt also den gewünschten Endzustand dar.&lt;br /&gt;
&lt;br /&gt;
Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das Board (nach dem Abtrennen des ST-Link) über die Stiftleiste mit Spannung versorgt werden kann (z.B. durch das Nucleo-Shield), muss &amp;quot;JP5&amp;quot; noch von &amp;quot;U5V&amp;quot; auf &amp;quot;E5V&amp;quot; umgesteckt werden.&lt;br /&gt;
(Zusätzlich auf dem ST-Link &amp;quot;JP1&amp;quot; entfernen, falls noch nicht abgetrennt.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bevor man den ST-Link-Teil abtrennt&#039;&#039;&#039;, sollte man den &#039;&#039;&#039;STM32F4xx und das ESP8266-Modul flashen&#039;&#039;&#039; und auch testen. Nach dem Abtrennen werden dann Updates über OTA geflasht.&lt;br /&gt;
|| [[Datei:WC24h-Nucleo-Oberseite.jpg|miniatur|Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Unterseite.jpg|miniatur|Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Shield.jpg|miniatur|Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für EEPROM/RTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TSOP31238 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zum optionalen Steuern per IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32F411_Nucleo_Board|Nucleo-Shield]]:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an GND, TSOP-Pin2 an 3V3, TSOP-Pin3 an Data&lt;br /&gt;
&lt;br /&gt;
Dabei wird zusätzlich ein Tiefpassfilter (C/R) - wie auch im Datenblatt angegeben - verwendet.&lt;br /&gt;
 &lt;br /&gt;
Es kann auch der kleinere Bruder TSOP4838 angeschlossen werden. Dieser hat den Vorteil, dass er besser hinter einem &amp;quot;Loch&amp;quot; im Zwischenboden untergebracht werden kann, weil er einfach vom Gehäuse her kleiner ist. Allerdings ist dann die Anschlussreihenfolge anders:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an DATA, TSOP-Pin2 an GND, TSOP-Pin3 an 3V3&lt;br /&gt;
&lt;br /&gt;
Der TSOP4838 kann also nicht direkt 1:1 an einem der beiden Shields angeschlossen werden. Da aber sowieso ein 3-poliges Kabel an die Pin-Header geführt wird, sollte das kein Problem sein.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP.png|miniatur|Schaltplan]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP.png|miniatur|Anschluß des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Wird kein IRMP-Empfänger benutzt, sollte R5 (siehe Schaltplan rechts) mit 100k Ohm statt 100 Ohm auf dem Shield bestückt werden. Der zum Tiefpass gehörende Kondensator C1 entfällt dann. Zwischen den Pins 3V3 und Data wird schlussendlich eine Drahtbrücke eingelötet, um einen stabilen Zustand am Daten-Pin des µCs zu gewährleisten.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Ab der Shield Version 4 wird ohne TSOP R5/C1 nicht bestückt und stattdessen R15 (NucleoShield) bzw R16 (MiniDevShield) mit 100k bestückt. Damit wir ein stabilen Zustand am Daten-Pin des µCs gewährleistet.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:TSOP_v4.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WS2812 ==&lt;br /&gt;
Bei der WordClock24h wird eine 16x18-Matrix verwendet plus eine Status LED, bei der WordClock12h eine 10x11-Matrix plus 4 Stück Minuten LED.&lt;br /&gt;
&lt;br /&gt;
Die [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs werden dabei folgendermaßen verdrahtet:&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock12h ====&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Spezialanfertigung von WS2812-Stripes eingesetzt - nämlich mit einem Rastermaß von 28,1mm. Damit ist die WordClock12h von den Maßen her kompatibel zum bisherigen [[Word_Clock]]-Projekt. Das hat den Vorteil, dass bisherige Frontplatten und Zwischenböden weiterverwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Bei der Wordclock12h steht jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;. Folgende Zeichnung ist von der Vorderseite der Uhr aus gesehen, beim Verkabeln von Hinten muss man es natürlich gedanklich umdrehen.&lt;br /&gt;
&lt;br /&gt;
          M4                                                    M1&lt;br /&gt;
           O---------+              µC Data --------------------O&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         1  2  3  4  ...              11            |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |                                          |         |&lt;br /&gt;
           |        22                            12  |         |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--          |&lt;br /&gt;
           |       23 24 ....                                   |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           O----------------------------------------------------O&lt;br /&gt;
          M3                                                    M2&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Dabei sind M1-M4 die 4 Minutenpunkte in den Ecken. Es wird keine Status-LED wie bei der WordClock24 verwendet. Tatsächlich werden hier dafür die Minutenpunkte zur zusätzlichen Statusausgabe mitbenutzt.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board und beim STM32-Mini-Board werden bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt (ab Software-Version 2.6.6). Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 114 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
|| [[Datei:LEDS-Datakabel.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock24h ====&lt;br /&gt;
Verwendet werden Standard-WS2812-Stripes mit &#039;&#039;&#039;60 LEDs pro Meter&#039;&#039;&#039;. Dabei steht - wie bei der WC12h - jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
               +-------------------------------------------------------+&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               1  2  3  4  ...                              18         |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
                                                               |       |&lt;br /&gt;
               36                                       20  19 |       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--        |&lt;br /&gt;
              37 38 ....                                               |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                  Status-LED                           |&lt;br /&gt;
  µC Data -----------------------------O-------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch für die WC24h gilt: Beim (für die WC24 primär empfohlenen) Nucleo-Board und beim (ebenfalls für die WC24h nutzbaren) STM32-Mini-Board werden ab Software-Version 2.6.6 bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 289 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== WS2812-Anschlüsse am Shield ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Der DI-Eingang des LED-Streifens wird per möglichst kurzem Kabel am WS2812-Pin des Shields verbunden, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
In seltenen Fällen kommen die WS2812-LEDs mit einem 3,3V-Pegel an ihrem Eingang nicht zurecht. Die Folge sind dann Falsch-Farben bzw. Ausfälle bei einzelnen LEDs. Für diesen Fall ist auf den Shields ab Version v3 zwischen DI und 5V ein 1k8 Pullup-Widerstand angebracht. Die STM32-Software erkennt beim Boot den Pullup-Widerstand automatisch und schaltet dann den Daten-Ausgang auf Open-Drain-Betrieb um. Damit ist dann der High-Pegel an der ersten angeschlossenen LED nahezu 5V statt 3,3V.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812.png|miniatur|Data Anschluss WS2812 auf Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Jede zweite Reihe (1., 3., 5. usw.) der Streifen wird per Flachbandkabel an die Spannungsversorgung der WS2812-Streifen angeschlossen. Dafür dient der Flachbandkabel-Stecker auf dem Shield. Hier werden 16 mal jeweils +5V und GND zur Verfügung gestellt, siehe nebenstehendes Bild.&lt;br /&gt;
Die 1 und damit die obere Reihe ist 5V, die 2 und damit untere Reihe GND.&lt;br /&gt;
Werden zusätzlich Ambilight LED verwendet, wird ebenfalls jede Seite separat an die Spannungsversorgung angeschlossen um den Spannungsabfall entgegenzuwirken.&lt;br /&gt;
&lt;br /&gt;
Bei der WC12 können dazu die 6 noch freien Pin Pärchen des Pfostensteckers genutzt werden. Bei der WC24h muss die Spannung anderweitig abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812-Power.png|miniatur|Spannungsversorgung der WS2812 auf dem Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DS18xx ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Optional:&#039;&#039;&#039; [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] als Temperatur-Sensor&lt;br /&gt;
&lt;br /&gt;
Es werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
* DS1820&lt;br /&gt;
* DS18S20&lt;br /&gt;
* DS1822&lt;br /&gt;
* DS18B20&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DS18xx-GND (Pin 1) an GND&lt;br /&gt;
* DS18xx-DQ  (Pin 2) an B5 (Mini) bzw. D2 (Nucleo)&lt;br /&gt;
* DS18xx-VDD (Pin 3) an 3V3&lt;br /&gt;
&lt;br /&gt;
Ein 4,7k Pullup-Widerstand ist zum sicheren Betrieb des One-Wire-Busses auf den Shields vorgesehen. &lt;br /&gt;
Der DS18xx sollte nicht in der Nähe von Wärmequellen angebracht werden, am besten also nicht direkt an das Shield löten, sondern in der unteren Tasche des Zwischenbodens anbringen. Die Litze am DS18XX dabei, z.B. mit Hilfe von Schrumpfschlauch, isolieren, damit es nicht zum Kurzschluss am Kühlkörper kommen kann.&lt;br /&gt;
Weiterhin wird aufgrund der geringen Eigenerwärmung der DS18XX Sensoren empfohlen, den Sensor mit Wärmeleitpad/-kleber auf ein kleines Kühlblech zu kleben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ist kein DS18xx Temperatur-Sensor angeschlossen, wird die Temperatur über die RTC (DS3231) ermittelt.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DS1820.png|miniatur|DS1820 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mini-DFPlayer ==&lt;br /&gt;
&lt;br /&gt;
Mit dem optionalen Mini-DFPlayer können als Reaktion auf bestimmte Ereignisse oder zu bestimmten Uhrzeiten MP3-Dateien abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nucleo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB6 (STM324xx TX ALT1)&lt;br /&gt;
* DFPlayer TX an PB7 (STM324xx RX ALT1)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mini-Shield:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB10 (STM32F103 TX)&lt;br /&gt;
* DFPlayer TX an PB11 (STM32F103 RX)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse Quellen im Internet, welche aussagen, dass eine Betriebsspannung von 4,3V wegen des Klangs sinnvoller wäre. Das kann man mit einer Si-Diode in der Zuleitung lösen.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: http://stonez56.blogspot.de/2015/03/arduino-dfplayer-mini-mp3-module.html&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: &#039;&#039;&#039;[[WordClock_mit_WS2812#DFPlayer|Konfiguration DFPlayer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LDR ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: Fotowiderstand (LDR) zur Lichtstärkenmessung, welche die Leuchtstärke der LEDs in Abhängigkeit des Umgebungslichtes automatisch steuert.&lt;br /&gt;
&lt;br /&gt;
Als LDR sollte der LDR07 von Reichelt, ggf. der Ersatz &amp;quot;A 906011&amp;quot; verwendet werden. Wird noch der zwischenzeitlich empfohlene &amp;quot;A 906032&amp;quot; von Reichelt eingesetzt, ist R1 = 10K besser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird kein [[WordClock_mit_WS2812#LDR|LDR]] benutzt, muss auf dem Shield der 10k-Pullup (R2) eingelötet werden, R1 wird dann nicht bestückt.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird der LDR benutzt, darf der Widerstand R2 nicht eingelötet werden!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-LDR.png|miniatur|Schaltplan LDR am Mini-Shield]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-LDR.png|miniatur|LDR-Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DCF77 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: DCF77 Modul&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DCF77 GND an GND&lt;br /&gt;
* DCF77 V+ an 3,3V&lt;br /&gt;
* DCF77 Out an Data&lt;br /&gt;
* DCF77 PON an PON&lt;br /&gt;
&lt;br /&gt;
Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein befriedigendes Empfangsverhalten hat. PON kann beim Reichelt-Modul offen bleiben, beim Pollin DFCF77-1 sollte man PON jedoch anschließen.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang verwendet, muss an Data noch ein 100k Pullup (zu 3,3V) angeschlossen werden.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DCF77.png|miniatur|DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Wird KEIN DCF-Modul verwendet, muss der 100k Widerstand R3 eingelötet werden, um den µC-Eingang auf stabilem Niveau zu halten - aber nur dann! Die sonstigen Komponenten auf dem nebenstehenden Schaltplan entfallen ersatzlos.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-DCF77.png|miniatur|Schaltplan DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ESP8266 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Ab der Software-Version 2.5.0 ist das Aktualisieren der ESP- und STM32-Firmware auch über OTA (&amp;quot;over the air&amp;quot;, also WLAN) möglich. Damit entfällt ein erneutes Anschließen der Uhr an entsprechende Programmiergeräte bei einem Update. Allerdings müssen dafür die bisher eingesetzten ESP8266 ESP-01 durch ein ESP-12F ersetzt werden. Deshalb wird generell ab der Version v3 der Nucleo- bzw. Mini-Shields das ESP8266 ESP-12F Modul statt ESP-01 verwendet. &lt;br /&gt;
&lt;br /&gt;
Es werden nun 2 USARTs vom STM32 benutzt: Das erste für die Kommunikation der beiden µCs zum Datenaustausch, das zweite zum Flashen des STM32 über OTA. Die Bedienung von 2 USARTs des STM32 geschieht durch eine Software-Umschaltung der ESP-UART-Pins.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Nucleo-Shield-ESP-12F.png|180x128px|miniatur|ESP-12F an Nucleo-Shield]]&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-ESP-12F.png|187x122px|miniatur|ESP-12F an Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Die User-Taste wird für mehrere Funktionen genutzt.&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist sie bereits vorhanden. Sie ist blau und mit &amp;quot;User&amp;quot; beschriftet. Wird das Mini-Development-Board benutzt, ist die Taste auf dem dazugehörenden Shield (ab v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] ist die Taste nicht vorhanden, sondern lediglich als Jumper-Pin mit der Bezeichnung &amp;quot;Flash&amp;quot; (PA6) vorhanden. Hier kann man entweder eine Taste anschließen oder mit einem Jumper den Flash-Pin mit dem danebenliegenden Pin &amp;quot;GND&amp;quot; kurzschließen, was derselben Funktion entspricht.&lt;br /&gt;
&lt;br /&gt;
Die User-Taste wird für zwei Fälle benutzt:&lt;br /&gt;
&lt;br /&gt;
* Im Reset-Zustand des STM32 zum Flashen des ESP8266 über UART&lt;br /&gt;
* Im Betriebszustand zum Versetzen des ESP8266 in den AP-Modus mit SSID &amp;quot;wordclock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Funktionen werden in den Kapiteln &#039;&#039;&#039;[[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Flash des WLAN-Moduls]]&#039;&#039;&#039; und &#039;&#039;&#039;[[WordClock_mit_WS2812#Start_als_Access-Point|Start als Access-Point]]&#039;&#039;&#039; näher erläutert.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WPS-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ab Software-Version 2.6.0 wird auch WPS unterstützt. Dann kann die Verbindung des ESP8266 über diese Taste vorgenommen werden. Ab der Shield-Version v3 ist dafür eine eigene Taste auf den Shields vorgesehen. Ältere Shields kann man aber auch nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Dazu schließt man an:&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|STM32F4xx Nucleo]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PC5&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103C8T6 Mini-Development Board]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PA7&lt;br /&gt;
&lt;br /&gt;
Wie dann die Verbindung zum WLAN-Gateway aufgebaut wird, ist hier beschrieben: [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]].&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RTC und EEPROM ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
I2C-Modul mit DS3231 als RTC und EEPROM&lt;br /&gt;
&lt;br /&gt;
Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als Suchbegriff &amp;quot;DS3231 EEPROM&amp;quot; eingibt. Es wird als Echtzeituhr und für die Speicherung der Konfigurationsparameter verwendet. Ist kein DS18xx als Temperatursensor angeschlossen, wird die RTC auch zur Temperaturmessung genutzt.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* 32K Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SQW Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SCL an SCL&lt;br /&gt;
* SDA an SDA&lt;br /&gt;
* VCC an 3V3&lt;br /&gt;
* GND an GND&lt;br /&gt;
&lt;br /&gt;
Von der Software werden auch ältere [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC/EEPROM]]-Module mit DS1307 erkannt, dennoch sollte man aus Kompatibilitätsgründen auf die Verwendung dieser älteren Module verzichten.&lt;br /&gt;
&lt;br /&gt;
Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich&lt;br /&gt;
genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.&lt;br /&gt;
      &lt;br /&gt;
Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-IC bestückt, dann kann man auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss das Modul aber mit +5V statt 3,3V betreiben, damit der Akku überhaupt geladen wird. Sonst ist er aufgrund der Selbstendladung irgendwann leer.&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollte man das Modul eher mit einer CR2032 Batterie betreiben. &#039;&#039;&#039;Dann sollte man aber sicherheitshalber die Diode oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild), damit keine Ladung (und Überhitzung) der Batterie passiert&#039;&#039;&#039;. Das ist zwar eigentlich erst ab einer Betriebsspannung von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht eine CR2032 Batterie für 5-10 Jahre.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h-DS3231-EEPROM.png|miniatur|DS3231 RTC + EEPROM]]&lt;br /&gt;
 [[Datei:WC-Mini-Shield-I2C.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMS1117-3,3V-Spannungsregler-Modul ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur 3,3V-Versorgung des ESP8266-WLAN- Moduls sowie weiterer Peripherie wird ein AMS1117-3,3V-Spannungsregler-Modul eingesetzt. Die Shields aus der Sammelbestellung sind für die Spannungsregler-Module wie in der Abbildung rechts ausgelegt. Beispiele für Bezugsquellen sind in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Die leuchtende rote LED (D1) zeigt an, das die Ausgangsspannung von 3,3V vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:AMS1117-Spannungsregler-Modul.jpg|miniatur|AMS1117-Spannungsregler-Modul]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-AMS1117.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Schalten der 5V-Versorgungsspannung für die LED-Stripes ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Beim Abschalten der LED-Stripes kann neben den Daten, wenn gewünscht, auch die 5V-Versorgungsspannung abgeschaltet werden. Je nach Zahl des LEDs sinkt der Verbrauch um 1 W bis 2 W (--&amp;gt; ca. 3 - 5 EUR im Jahr). Ansonsten wird dem Controller auf den WS2812 nur mitgeteilt, dass gerade alle Kanäle aus sein sollen.&lt;br /&gt;
&lt;br /&gt;
Die Abschaltung der Versorgungsspannung erfolgt dann mit Hilfe der im Schaltplanauszug rechts gezeigten Bauteile. Die Diode begrenzt die Spannung an D IN auf 0,3 V, falls bei abgeschalteter Versorgungsspannung Datenimpulse anliegen – das wird auch durch die Software verhindert. &lt;br /&gt;
&lt;br /&gt;
Ab V3 der Shields muss bei Nichtverwendung der Spannungsabschaltung eine Drahtbrücke eingelötet werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WS2818_Schalten_1.png|miniatur|Schaltplanauszug: Schalten Versorgungsspannung]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Netzteil ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur Spannungsversorgung der WordClock wird ein (Stecker-)Netzteil mit einer Ausgangsspannung von 5V und einer Belastbarkeit von 4A benötigt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt – vergleichbare Netzteile anderer Lieferanten wie eBay oder AliExpress usw. können ebenfalls verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, schon vor der Inbetriebnahme der WordClock die Ausgangsspannung des Netzteils zu messen, da in seltenen Fällen die Ausgangsspannung des Netzteils höher ist als die für die WS2812B-LEDs maximal zulässige Spannung von 5,3V.&lt;br /&gt;
&lt;br /&gt;
Für eine Wordclock12h ohne Ambilight reicht ein Netzteil mit einer Belastbarkeit von 2A.&lt;br /&gt;
&lt;br /&gt;
Der Querschnitt der Verkabelung vom Netzteil zur WordClock ist so zu wählen, dass an den Anschlussklemmen des Shields auch bei angeschalteten LEDs eine Spannung von mindestens 4,75V anliegt. &lt;br /&gt;
&lt;br /&gt;
Bei einer WordClock12h ohne Ambilight und einer Kabellänge 2m reicht ein Querschnitt von 2x0,5mm². &lt;br /&gt;
&lt;br /&gt;
Der für eine WordClock24h, ggf. mit Ambilight, notwendige Querschnitt kann mit einem Tool wie z. B.&lt;br /&gt;
 &lt;br /&gt;
https://www.opendcc.de/info/verdrahtung/wiring.html &lt;br /&gt;
&lt;br /&gt;
abgeschätzt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wer nicht über entsprechende Kenntnisse und Erfahrungen im Umgang mit 230V-Netzspannung verfügt, sollte unbedingt ein Stecker- oder Tischnetzteil verwenden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschluss USB-UART-Adapter ==&lt;br /&gt;
&lt;br /&gt;
Man benötigt in folgenden Fällen einen USB-UART-Adapter:&lt;br /&gt;
&lt;br /&gt;
* Logging der Meldungen auf dem PC&lt;br /&gt;
* Flashen des ESP8266 über das verwendete STM32-Board&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo ist ein USB-UART-Adapter bereits integriert - und zwar im oberen ST-Link-V2-Teil des Boards. Hier ist also kein weiterer Anschluss notwendig. Erst wenn das ST-Link-V2-Teil vom Rest des Boards abgetrennt wird, müssen RX und TX wieder verbunden werden, wenn man den UART-Adapter nutzen will. Also einfach das Board mit dem PC über USB verbinden - fertig. Eventuell muss man noch den STM32 Virtual COM Port Driver installieren. Der entsprechende Link zum Herunterladen steht unter [[WordClock_mit_WS2812#Download|Download]].&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board wird ein externer USB-UART-Adapter benötigt. Dabei schließt man ihn folgendermaßen an:&lt;br /&gt;
&lt;br /&gt;
* USB-UART TX an PA10 (RX)&lt;br /&gt;
* USB-UART RX an PA9 (TX)&lt;br /&gt;
* UAB-UART GND an GND&lt;br /&gt;
&lt;br /&gt;
Solche Adapter (am besten einen, der mit 3,3V-Pegeln arbeitet) gibt es bei eBay oder Amazon für unter 5 EUR. &amp;lt;br /&amp;gt;&lt;br /&gt;
Bei USB-UART-Adaptern mit FTDI-Chip oder Prolific PL2303-Chip sind Fakes im Handel, die von der Original-Treibersoftware nicht korrekt unterstützt werden. &#039;&#039;&#039;Besser sind Adapter mit CH340G- oder CP2102-Chip.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschlusstabelle ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Device || [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] || [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#TSOP31238|TSOP31238]] ([[IRMP]])  || GPIO:   PC10               || GPIO:   PB3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]       || GPIO:   PD2                || GPIO:   PB5&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#LDR|LDR]]                         || GPIO:   PC4                || GPIO:   PA5&lt;br /&gt;
|- &lt;br /&gt;
| WordClock-Logger (USB)                                   || USART2: TX=PA2  RX=PA3 (bereits integriert)    || USART1: TX=PA9  RX=PA10 (externer USB-UART-Adapter)&lt;br /&gt;
|- &lt;br /&gt;
| User Button  || GPIO: USER=PC13 (on-board)               || GPIO: USER=PA6 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| WPS Button  || GPIO: WPS=PC5  (auf dem Shield ab v3)     || GPIO: WPS=PA7 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] Rx/Tx       || USART6: TX=PA11 RX=PA12        || USART2: TX=PA2  RX=PA3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] RST/CH_PD   || GPIO:   RST=PA7 CH_PD=PA6      || GPIO:   RST=PA0 CH_PD=PA1&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO0       || GPIO:   GPIO0=PA4              || GPIO: GPIO0=PA4&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO13/15   || USART1: GPIO13=PA9 GPIO15=PA10 || USART1: GPIO13=PA9 GPIO15=PA10&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#DCF77|DCF77]]                 || GPIO:   DATA=PC11 PON=PC12     || GPIO:   DATA=PB8  PON=PB9 &lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC / EEPROM]] || I2C3:   SCL=PA8 SDA=PC9        || I2C1:   SCL=PB6 SDA=PB7&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#WS2812|WS2812]]               || DMA1:   PC6                    || DMA1:   PA8&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 Power On/Off                                  || PC8                            || PB0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist USART2 bereits fest mit dem auf dem ST-Link-V2-Teil des Boards integrierten UART-USB-Adapter verbunden. Hier sind also keine extra Verbindungen mehr notwendig - erst wenn das ST-Link-V2-Teil abgesägt wird. Und auch dann kann man den USB-UART-Adapter vom ST-Link-V2 weiterverwenden.&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board benötigt man allerdings einen externen USB-UART-Adapter - am besten einen, der mit 3,3V-Pegeln arbeitet. Diese findet man zuhauf bei Amazon oder eBay für ca. 5 EUR.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Teileliste für WC12h oder WC24h und Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:35%&amp;quot; | Bezeichnung || Bezugsquelle&lt;br /&gt;
|-&lt;br /&gt;
| Board&lt;br /&gt;
||  &lt;br /&gt;
STM32 MiniBoard (empfohlen für WC12h)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=STM32F103C8T6 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F103C8T6 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oder&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
STM32 Nucleo&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=nucleo AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F411%20Nucleo eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/Nucleo-STM32F411 Watterott]&lt;br /&gt;
|-&lt;br /&gt;
| USB-UART-Adapter - NUR für Logging und (erstmaliges) Flashen des ESP8266-Moduls am MiniDevBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://de.aliexpress.com/wholesale?SearchText=uart+CH340G AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=USB%20UART%20Adapter eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 ST-Link - NUR für MiniBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;&lt;br /&gt;
Prinzipiell reicht USB-UART-Adapter aus aber ein ST-Link wird zusätzlich empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=st-link+v2 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 MiniBoard Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für MiniBoard notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Das per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Shield enthält sämtliche Anschlüsse um alle benötigten Module mit einander zu verbinden. Der STM32F103 wird direkt in das Shield gesteckt und verlötet - er wird nicht gesockelt!&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321201 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| STM32 Nucleo Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für Nucleo-Board notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Diese per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Adapterplatine wird auf das Nucleo-Board aufgesteckt. Sie enthält sämtliche Anschlüsse für alle vorgesehen Module.&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321193 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 LED Stripes &lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Stripes mit einem Sonderformat über die [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h können Standard Stiles mit 60 LEDs / Meter verwendet werden.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ws2812+60+ip30 AliExpress]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=WS2812%2060%20ip30 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Frontplatte&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Frontplatten über eine Sammelbestellung aus [[WordClock_mit_WS2812#WC12h_Sammelbestellung_Frontplatten | Plexiglas ]] oder [[Word_Clock#Sammelbestellung_.28Edelstahl.29 | Edelstahl]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h gibt es eine Sammelbestellung von Frontplatten aus &lt;br /&gt;
[[WordClock_mit_WS2812#WC24h_Sammelbestellung_Frontplatten | Plexiglas]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird kein Rahmen (siehe unten) verwendet werden zusätzliche Teile (z.B. [[Word_Clock_Variante_1_-_getrennte_Steuerplatine#Befestigung_der_Frontplatte_.28.E2.80.9CPlexiglasvariante.E2.80.9D.29_an_der_Zwischenplatte| Magnete]]) zur Befestigung der Frontplatte benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| Zwischenboden&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h und WC24h sind Zwischenböden über eine [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alu-Platte&lt;br /&gt;
||&amp;lt;br&amp;gt;Aluminiumblech,  1 mm Stärke. Für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) und alle WC12h Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/(aluminium%2C+alu)+(blech%2C+platte) ebay]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DS3231 [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC und EEPROM]]&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ds3231 AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=DS3231 eBay]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Falls bei dem Modul keine Batterie mitgeliefert wird, wird zusätzlich folgende Knopfzelle benötigt:&lt;br /&gt;
[http://www.reichelt.de/directlink/CR2032/index.html?&amp;amp;ACTION=3&amp;amp;ARTICLE=26550&amp;amp;GROUPID=4241&amp;amp;ARTNR=CR+2032&amp;amp;&amp;amp;SHOW=1&amp;amp;SID=12UXp5iH8AAAIAAAE-gdod799e4cf62d5cd255e52464fe671b8ea Reichelt CR2032]&lt;br /&gt;
|-&lt;br /&gt;
| Netzteil&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/MDY0ODQ2OTk-/Stromversorgung/Netzgeraete/Steckernetzgeraete/Steckernetzteil_QUATPOWER_PSN5_4000H5_5_5_V_4_A_5_5_2_1_mm.html Pollin Netzteil 5V 4A]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-01 (WLAN-Modul) bis Shield V2&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-01 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-01 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-WiFi-Serial-Transceiver-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-01 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-12F (WLAN-Modul) ab Shield V3 (OTA)&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-12F AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-12F eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/WLAN-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-12 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Infrarot-Decoder (IRMP)&lt;br /&gt;
||&amp;lt;br&amp;gt;mit IRMP Fernbedienungsensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321194 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird noch eine [http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.V0CsuCFgfs0 IR-Fernbedienung] benötigt, die optional mit einer [[WordClock_mit_WS2812#IR-Fernbedienung|Folie]] versehen werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Rahmen&lt;br /&gt;
||&amp;lt;br&amp;gt;Innenmaße 450x450 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Funktioniert nicht zusammen mit Ambilight&amp;lt;br&amp;gt;&lt;br /&gt;
Z. B. [https://www.alutech.de/alu---zuschnitt-profil-18.html Alurahmen]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Ambilight&lt;br /&gt;
||&amp;lt;br&amp;gt;Mittels zusätzlicher WS2812 LED Stripes per &amp;lt;br&amp;gt;[[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]]&lt;br /&gt;
Funktioniert nicht zusammen mit einem Rahmen. Erfordert Zwischenboden mit entsprechender Ausfräsung (bisher nur für WC12 per Sammelbestellung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Fotowiderstand (LDR) zur Lichtmessung&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://www.reichelt.de/Fotodioden-etc-/LDR-07/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=10208&amp;amp;GROUPID=3045&amp;amp;artnr=LDR+07&amp;amp;SEARCH=ldr07 Reichelt LDR07]&amp;lt;br&amp;gt; Ggf. Ersatz: [https://www.reichelt.de/Fotodioden-etc-/A-906011/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=47506&amp;amp;GROUPID=3045&amp;amp;artnr=A+906011&amp;amp;SEARCH=fotowiderstand Reichelt A906011]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-1-0-k-Ohm-9-1-k-Ohm/1-4W-1-0K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1315&amp;amp;GROUPID=3065&amp;amp;artnr=1%2F4W+1%2C0K&amp;amp;SEARCH=%252A Reichelt Widerstand 1,0k] (bei Verwendung von LDR07 oder A906011)&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-10-k-Ohm-91-k-Ohm/1-4W-10K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1338&amp;amp;GROUPID=3066&amp;amp;artnr=1%2F4W+10K&amp;amp;SEARCH=%252A Reichelt Widerstand 10k] (bei Verwendung des zwischenzeitlich empfohlenen A906032 und auch bei Nicht-Anschluss des LDRs)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Temperatur-Sensor&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DS1820 Temperatur-Sensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321196 Reichelt Warenkorb]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: DCF77-Empfänger&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DCF werden folgende Teile benötigt:&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Pollin DCF77 Empfänger]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321191 Reichelt Warenkorb]&lt;br /&gt;
&amp;lt;br&amp;gt; ggf. IC-Sockel für den OP (Reichelt GS 8P)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: WS2812 Spannungsabschaltung&lt;br /&gt;
||&amp;lt;br&amp;gt;mit WS2812 Spannungsabschaltung werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321190 Reichelt Warenkorb]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Start =&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Geflasht wird mit dem ST-Link-Programm, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dient die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]]. Dazu nimmt man eine WLAN-Verbindung mit dem ESP8266-Modul auf. Für die erste Konfiguration wird das ESP8266 zunächst als eigener Access-Point gestartet. Anschließend kann man über das [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] die Zugangsdaten zu dem eigenen WLAN-Router einstellen. Im Folgenden läuft das ESP8266-Modul dann als WLAN-Client.&lt;br /&gt;
&lt;br /&gt;
Für Entwickler und zur Diagnose kann man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) verwenden, um über ein Mini-USB-Kabel Debug- und Log-Meldungen mitzuschneiden. Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die &amp;quot;blauen&amp;quot; USB3.0-Buchsen möglichst meiden.&lt;br /&gt;
&lt;br /&gt;
== Ablauf ==&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)&lt;br /&gt;
* Wenn man die EmBitz-IDE einsetzt: Nach [[WordClock_mit_WS2812#WordClock-Quellcode_selbst_.C3.BCbersetzen|Anleitung: WordClock-Quellcode selbst übersetzen]] vorgehen&lt;br /&gt;
* Die entsprechende Hex-Datei (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32 MiniDevBoards ==&lt;br /&gt;
&lt;br /&gt;
Hier eine ausführliche Schritt für Schritt Anleitung um die Software vom .HEX File aus dem Artikel in das STM32 MiniDevBoard zu bekommen:&lt;br /&gt;
&lt;br /&gt;
Benötigt werden neben dem STM32 MiniDevBoard:&lt;br /&gt;
* Hardware: ST-Link V2 (z. B. von [https://www.aliexpress.com/wholesale?ltype=wholesale&amp;amp;d=y&amp;amp;origin=y&amp;amp;isViewCP=y&amp;amp;SearchText=st-link+v2&amp;amp;blanktest=0&amp;amp;tc=af Aliexpress] oder [http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay])&lt;br /&gt;
* Software: STM32 ST-Link Utility, siehe: http://www.st.com/en/development-tools/st-link-v2.html&lt;br /&gt;
* Installation der Software &amp;quot;STM32 ST-Link Utility&amp;quot;: https://www.youtube.com/watch?v=ONzRL06Umfo&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Danach im Geräte-Manager von Windows unter „USB-Geräte“ kontrollieren, ob die Installation erfolgreich war.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 1.PNG|miniatur|Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ST-Link v2 mit STM32 MiniDevBoard verbinden (Achtung: Die Anschlussbelegung an ST-Link v2 und die Beschriftung am MiniDevBoard ist nicht immer einheitlich, daher bitte immer auf die Beschriftung achten!). Verbunden werden folgende Pins:&lt;br /&gt;
* St-Link v2 &amp;quot;VCC&amp;quot; mit &amp;quot;3.3&amp;quot; oder &amp;quot;3.3V&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWDIO&amp;quot; mit &amp;quot;DIO&amp;quot; oder &amp;quot;SWDIO&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWCLK&amp;quot; mit &amp;quot;CLK&amp;quot; oder &amp;quot;SWCLK&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;GND&amp;quot; mit &amp;quot;GND&amp;quot; des MiniDevBoard&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 2.PNG|miniatur|Anschluss des ST-Link v2 Adapters]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Das STM32 ST-Link Utility öffnen und im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 3.PNG|miniatur|Verbindung zum STM Board im STM32 ST-Link Utility herstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Im STM32 ST-Link Utility im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im STM32 MiniDevBoard konsistent zu den Informationen im .HEX File sind&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 4.PNG|miniatur|Reiter &amp;quot;Target&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Die gewünschte Hex-Datei passend zur Hardware auswählen (im Beispiel: WordClock 12h mit „Standard“-WS2812) und auf „Öffnen“ klicken&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 5.PNG|miniatur|Auswahl der Firmware / des .HEX Files]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Den Flashvorgang mit „Start“ beginnen. An den standardmäßig gesetzten Optionen muss nichts weiter verändert werden&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 6.PNG|miniatur|rechts|Start des Flashvorgangs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Erfolgreiches Flashen wird anschließend im Logbereich des STM32 ST-Link Utility (unten im Fenster) angezeigt. Sollten im Log Fehlermeldungen auftauchen ist beim Flashen etwas schiefgelaufen. Verkabelung prüfen (z.B. DIO und CLK vertauscht?) und wenn das Problem weiterhin besteht im Forum (https://www.mikrocontroller.net/topic/385955) nach Hilfe fragen.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 7.PNG|miniatur|Logbeispiel: Flashen erfolgreich!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Zum Abschluss noch in der Software unter „Target“ die Verbindung der Software zum ST-Link v2 mit „Disconnect“ trennen. Jetzt kannst du auch das ST-Link V2 USB Modul aus dem Port entfernen und die Verkabelung vom STM32 MiniDevBoard trennen. Im Speicher des Boards ist jetzt die zuvor ausgewählte Software und du hast dein Modul erfolgreich geflasht! &lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 8.PNG|miniatur|ST-Link v2 trennen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Upgrade der Firmware des ST-Link v2 - DFU mode ====&lt;br /&gt;
Wenn versucht wird die Firmware des ST-Link v2 zu aktualisieren und dies scheitert mit der Meldung &amp;quot;Not in DFU Mode&amp;quot;, so kann folgende Vorgehensweise helfen: &lt;br /&gt;
# ST-Link Utility schließen und ST-Link v2 vom USB Port entfernen. &lt;br /&gt;
# Miniboard vom ST-Link trennen. &lt;br /&gt;
# ST-Link Utility starten aber noch nichts anschließen. &lt;br /&gt;
# Firmware Upgrade Dialog öffnen. &lt;br /&gt;
# Nun ST-Link am USB Port anschließen. MiniBoard nicht anschließen. &lt;br /&gt;
# Update starten. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Ablauf ist nur notwendig, wenn man die Log-Meldungen aus Diagnose-Zwecken mitschneiden möchte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PuTTY starten&lt;br /&gt;
* PuTTY einstellen: Auswahl &amp;quot;Serial&amp;quot;, Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200&lt;br /&gt;
* Einen Session-Namen eingeben, z.B. &amp;quot;Nucleo&amp;quot;&lt;br /&gt;
* Auf SAVE klicken, dann kann man die Session später wieder auswählen&lt;br /&gt;
* Open anklicken&lt;br /&gt;
* RESET-Button am [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] drücken&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039; Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nicht die bereits ausgegebenen Log-Meldungen. Um den Ablauf des Programms von Anfang an zu verfolgen, drückt man auf dem Board einfach den Reset-Knopf. Dann beginnt die Ausgabe ganz von vorn.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039; Für das Logging sollten lediglich RX und GND des externen USB-UART-Adapters angeschlossen werden. TX vom Adapter bzw. RX auf dem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] sollten offen bleiben. Sonst kann es bei Verwendung des ESP8266 ESP-12F dazu kommen, dass dieser nicht mehr bootet.&lt;br /&gt;
&lt;br /&gt;
Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund im PuTTY ist normalerweise schwarz. Möchte man lieber eine Ausgabe in schwarz auf weiß, kann man das folgendermaßen umstellen:&lt;br /&gt;
&lt;br /&gt;
   Change Settings -&amp;gt; Window -&amp;gt; Colours:&lt;br /&gt;
&lt;br /&gt;
      Default Foreground: 2 2 2&lt;br /&gt;
      Default Bold Foreground: 0 0 0&lt;br /&gt;
      Default Background: 245 245 245&lt;br /&gt;
      Default Bold Background: 255 255 255&lt;br /&gt;
      Cursor Text: 0 0 0&lt;br /&gt;
      Cursor Color: 255 0 0&lt;br /&gt;
      (Rest kann man so lassen)&lt;br /&gt;
&lt;br /&gt;
Anschließend zurück über &amp;quot;Session&amp;quot; oben links und: &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des WLAN-Moduls ==&lt;br /&gt;
&lt;br /&gt;
=== Flash des WLAN-Moduls ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Für das ESP8266-Wlan-Modul wird aus Stabilitäts- und Geschwindigkeitsgründen eine spezielle auf die WordClock-Anwendung abgestimmte Firmware benutzt (siehe [[WordClock_mit_WS2812#Download|Download]]), die über das STM32-Board geflasht werden kann. Das ESP8266 kann also während des Flashens in der WordClock-Schaltung verbleiben.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo wird der integrierte USB-UART-Adapter verwendet. Beim Anschluss des Nucleo-Board per USB an den PC wird automatisch ein COM-Device angelegt, z.B. COM12. Dafür braucht man aber den entsprechenden Virtual COM Port Driver, siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|Software für Windows]].&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]] wird ein externer USB-UART-Adapter, welcher mit 3,3V-Pegeln arbeitet, verwendet. Wie er angeschlossen wird, sieht man in der [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|Anschluss-Skizze]] und auch in obiger [[WordClock_mit_WS2812#Anschlusstabelle|Anschlusstabelle]]. Das Shield muss außerdem extern mit +5V versorgt werden. Anderenfalls ist zumindest das ESP-Modul ohne Spannungsversorgung. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig: Handelt es sich hier um ein ESP8266 ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]], darf TX vom USB-UART-Wandler erst dann angeschlossen werden, wenn der ESP8266 sich bereits im Flash-Modus befindet - nicht früher. Siehe Beschreibung unten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zum eigentlichen Flashen lädt man am besten das sehr einfach gehaltene Programm &#039;&#039;&#039;[https://github.com/Stadslab/ESP8266_example/raw/master/ESP8266_flasher_V00170901_00_Cloud%20Update%20Ready/esp8266_flasher.exe esp8266_flasher.exe]&#039;&#039;&#039; herunter.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-ESP-Flasher.png|miniatur|esp8266_flasher.exe für das ESP8266-Modul]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativ dazu kann man auch  von der Espressif-Seite zunächst die ESP8266-Flash-Software &#039;&#039;&#039;FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar&#039;&#039;&#039; (http://bbs.espressif.com/download/file.php?id=856) herunterladen und das Archiv an geeigneter Stelle entpacken. Es müssen dann als Einstellungen die im Bild rechts markierten Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Dann ist das weitere Vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eventuell gestartetes PuTTY beenden, um COM-Schnittstelle freizugeben&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) abziehen!&lt;br /&gt;
* Reset-Taste drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3) drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;. Auf älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] gibt es diese Taste nicht, sondern ist lediglich als Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) bezeichnet. Hier muss man mittels eines Jumpers eine Verbindung zu GND daneben herstellen.&lt;br /&gt;
* Reset-Taste loslassen&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] nach 2 Sekunden loslassen bzw. Jumper ziehen&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) wieder anschließen.&lt;br /&gt;
&lt;br /&gt;
Das WordClock-Programm auf dem STM32 versetzt dann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul in den Flash-Modus und verbindet dann die beiden UARTs softwaremäßig 1:1, d.h. die Daten werden vom USB-Anschluss transparent an das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Nun startet man das Programm &#039;&#039;&#039;esp8266_flasher.exe&#039;&#039;&#039; (bzw. ESP_DOWNLOAD_TOOL_V2.4.exe) und wählt durch Klick auf die Schaltfläche &#039;&#039;&#039;Bin&#039;&#039;&#039; die Datei &#039;&#039;&#039;ESP-WordClock.bin&#039;&#039;&#039; aus - siehe [[WordClock_mit_WS2812#Download|Download]]. Außerdem muss der COM-Port an den tatsächlichen Anschluss angepasst werden. Beim ESP-01 stellt man die Flash-Size auf 4MBit (=512KB), beim ESP-12F auf 32MBit (=4MB).&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-ESP8266-FLASH.png|miniatur|Alternative: ESP FLASH DOWNLOAD TOOL]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach Drücken auf &#039;&#039;&#039;Download&#039;&#039;&#039; (bzw. &#039;&#039;&#039;Start&#039;&#039;&#039; beim Alternativprogramm) sollte nun das Flashen des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls beginnen. Eine eventuell am Ende auftretende Fehlermeldung &amp;quot;Failed to leave Flash mode&amp;quot; kann dabei getrost ignoriert werden. Anschließend startet man den STM32 (und damit auch das WLAN-Modul) neu durch kurzes Drücken der Reset-Taste.&lt;br /&gt;
&lt;br /&gt;
=== Start als Access-Point ===&lt;br /&gt;
&lt;br /&gt;
Folgender Ablauf ist nur notwendig, wenn die Software-Version älter als 2.5.0 ist oder keine [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] (ab Shield v3) angeschlossen ist. Sonst kann direkt zu [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]] gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
Um für die Konfiguration der WLAN-Daten (Zugang zum WLAN-Router oder -Gateway) mit dem ESP8266 Kontakt aufzunehmen, muss man zunächst dafür sorgen, dass das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul als Access-Point arbeitet. Dafür drückt man die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board (blau) bzw. die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] verbindet man den Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) kurz mit dem danebenliegenden GND-Pin.&lt;br /&gt;
&lt;br /&gt;
Unmittelbar nach dem Drücken der Taste erscheint die IP-Adresse des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls als Laufschrift - und auch im Log. Nun sucht man auf dem PC oder Tablet nach dem WLAN-Netz mit dem Namen &amp;quot;wordclock&amp;quot; und verbindet das Gerät mit diesem Netz. Als Netzwerkschlüssel gibt man &amp;quot;1234567890&amp;quot; ein. Sobald die Verbindung hergestellt ist, startet man einen Browser und gibt als URL die ausgegebene IP-Adresse ein, z.B. http://192.168.4.1/ .&lt;br /&gt;
&lt;br /&gt;
Sobald die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] erscheint, wählt man den Menüpunkt &amp;quot;Network&amp;quot; aus, wählt &amp;quot;Wlan-Client&amp;quot; aus und gibt die SSID (&amp;quot;AP&amp;quot;) und den Key des WLAN-Routers ein und bestätigt die Eingabe mit &amp;quot;Save&amp;quot;. Das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul wird nun als WLAN-Client umkonfiguriert. War das erfolgreich, erscheint nun auf dem Display die neue IP-Adresse. Die Browser-Seite wird dann ungültig. Man kann seinen PC nun wieder mit dem bisherigen WLAN-Gateway verbinden und im Folgenden die neue IP-Adresse verwenden.&lt;br /&gt;
&lt;br /&gt;
Gibt es an dem Ort, wo die Uhr betrieben werden soll, kein WLAN, kann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul auch weiterhin als Accesspoint (&amp;quot;AP&amp;quot;) betrieben werden, damit man es über WLAN fernsteuern kann. In diesem Fall sollte nicht &amp;quot;WLAN-Client&amp;quot;, sondern &amp;quot;AP&amp;quot; ausgewählt werden, eine entsprechende SSID und einen mindestens 10 Zeichen langen Key einstellen. Anschließend kann man sich mit PC/Handy/Tablet in das neue WLAN einklinken, um die Uhr per Browser oder Android-App fernzusteuern. Ein Zugriff auf einen externen Timeserver ist dann selbstverständlich nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
=== Start per WPS-Button ===&lt;br /&gt;
&lt;br /&gt;
Ab Software-Version 2.6.0 wird WPS unterstützt. Dazu drückt man die auf dem Shield (ab Shield-Version v3) befindliche [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] für einen kurzen Moment und anschließend auf dem WLAN-Gateway (bzw. Router). Bei der Fritzbox muss man die Taste solange drücken, bis die WLAN-LED blinkt. Im Normalfall wird dann die Verbindung innerhalb weniger Sekunden aufgenommen - erkennbar daran, dass auf dem LED-Display die vergebene IP-Adresse als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Befindet der ESP8266 bereits im AP-Modus, kann WPS auch im Browser über den Klick auf die Schaltfläche &amp;quot;WPS&amp;quot; im Reiter [[WordClock_mit_WS2812#Network|Network]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Start als WLAN-Client ===&lt;br /&gt;
&lt;br /&gt;
Bei jedem folgenden Start wird nur noch die Einstellung &amp;quot;WLAN-Client&amp;quot; verwendet. Sobald sich das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul mit dem gewünschten Access-Point (&amp;quot;AP&amp;quot;) verbunden hat, wird auf dem LED-Display die neue IP-Adresse des Moduls in Laufschrift ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Viele WLAN-Router sorgen automatisch dafür, dass ein WLAN-Client auch noch nach Tagen dieselbe IP-Adresse hat. Wenn das nicht der Fall sein sollte, kann man meist in den Router-Einstellungen dafür sorgen, dass der Client mit der MAC-Adresse xx-xx-xx-xx-xx-xx immer dieselbe IP-Adresse vom WLAN-Router zugeteilt bekommt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Web-Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Neben der Ausgabe der installierten Firmware-Version sieht man hier unter anderem auch, ob das EEPROM erkannt wurde. Es wird entweder &amp;quot;online&amp;quot; oder &amp;quot;offline&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man keine Verbindung zum Internet, kann man auf der Hauptseite Datum und Uhrzeit auch manuell eingeben. Außerdem kann man hier einen Ticker-Text angeben, welcher dann auf dem Display als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Mit den Schaltflächen &amp;quot;Power on&amp;quot; bzw. &amp;quot;Power off&amp;quot; kann das LED-Display ein- und ausgeschaltet werden. Die Power-Buttons schalten erstmal generell auch das Ambilight ein bzw. aus. Es kann aber über die entsprechenden Schaltflächen separat ein- und ausgeschaltet werden. Diese wirken aber nur, wenn die Uhr selbst im eingeschalteten Zustand (&amp;quot;Power on&amp;quot;) ist. Sonst werden sie ignoriert.&lt;br /&gt;
&lt;br /&gt;
Mit dem Klick auf &amp;quot;Learn IR remote control&amp;quot; kann eine IR-Fernbedienung angelernt werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Main.png|miniatur|Web-Interface: Hauptmenü]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier werden die aktuelle IP-Adresse und die Firmware-Version des ESP8266-Moduls angezeigt. Auch kann man hier die Verbindung zu einem WLAN-Gateway oder -Router angeben. In diesem Fall wählt man in der Zeile &amp;quot;WLAN-Client&amp;quot; den gewünschten Accesspoint aus und gibt dann noch den korrekten Key ein. Wichtig: Enthält der Key internationale Sonderzeichen wie zum Beispiel Umlaute, kann die WLAN-Anwendung fehlschlagen, weil das Web-Interface einen anderen Zeichensatz als der Accesspoint verwendet. In diesem Fall sollte man den Key im Accesspoint ändern oder die Möglichkeit einer Verbindung per WPS wählen. Nach erfolgter Einstellung wird die gewünschte Verbindung aufgebaut und die evtl. neue IP-Adresse auf dem LED-Display als Laufschrift eingeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039; ist die alternative Möglichkeit, das ESP8266-Modul über WPS ins Netz einzubinden. Dafür drückt man zuerst die WPS-Taste am Router (bei der FritzBox solange, bis die WLAN-LED blinkt) und anschließend die [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] auf dem Shield - oder die WPS-Schaltfläche im Web-Interface.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man hier den [[WordClock_mit_WS2812#Timeserver|Timeserver]] und die [[WordClock_mit_WS2812#Timeserver|Zeitzone]] konfigurieren, siehe entsprechendes [[WordClock_mit_WS2812#Timeserver|Kapitel]].&lt;br /&gt;
&lt;br /&gt;
Mit der Schaltfläche &amp;quot;Get net time&amp;quot; kann die aktuelle Uhrzeit von dem konfigurierten Timeserver ad hoc abgerufen werden. Das ist aber im Normalfall nicht notwendig, da dies ohnehin alle 3800 Sekunden automatisch geschieht. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Network.png|miniatur|Web-Interface: Netzwerk-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hier wird die aktuelle Temperatur von RTC und DS18xx (sofern vorhanden) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Wegen der Selbsterwärmung der Sensoren werden meist zu hohe Werte gemessen. Dagegen hilft beim DS18xx zum Beispiel ein Kühlkörper. Sollte das nicht möglich oder nicht gewünscht sein, kann hier sowohl für RTC als auch für DS18xx eine Korrektur in 0,5°C Schritten angegeben werden. Bei Eingabe von beispielsweise &amp;quot;5&amp;quot; werden 2,5°C von der Messung abgezogen. Die Korrekturwerte sollte man frühestens nach einigen Minuten Betrieb wählen, damit RTC/DS18xx auch die endgültige Betriebstemperatur erreicht haben.&lt;br /&gt;
&lt;br /&gt;
Beim Betätigen der Schaltfläche &amp;quot;Display temperature&amp;quot; wird die aktuelle Temperatur auf dem LED-Display entweder als Laufschrift (WordClock12h) oder als Wort-Anzeige (Word-Clock24h) eingeblendet. Diese Anzeige kann in einem gewissen Zeitintervall auch automatisch erfolgen, siehe &#039;&#039;&#039;[[WordClock_mit_WS2812#Display|Display]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Temperature.png|miniatur|Web-Interface: Temperatur-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Um Wetterdaten auf der Uhr ausgeben zu können, braucht man eine sogenannte APPID (auch API-Id genannt), die man durch eine Registrierung bei http://openweathermap.org kostenlos beziehen kann. Am einfachsten findet man sie über den Menü-Eintrag &amp;quot;Price&amp;quot;. Dort kann man dann eine API-Id in der Free-Version generieren lassen.&lt;br /&gt;
&lt;br /&gt;
Diese APPID wird dann hier eingetragen. Des Weiteren ist notwendig:&lt;br /&gt;
&lt;br /&gt;
* entweder die Angabe eines Ortes&lt;br /&gt;
* oder die Angabe von Geo-Koordinaten (Longitude/Lattitude)&lt;br /&gt;
&lt;br /&gt;
Gerade bei Großstädten ist es sinnvoll, die genauen Koordinaten des eigenen Wohnorts anzugeben, da das Wetter bereits lokal unterschiedlich sein kann. Werden sowohl Ort als auch die Geo-Koordinaten angegeben, haben die Koordinaten Priorität. Auch kann es sein, dass bei kleineren Ortschaften der Ort selbst bei openweathermap.org unbekannt ist. Im Zweifel sollte man sich besser für die Koordinaten-Variante entscheiden. Wichtig bei der Angabe eines Ortes ist es, die Stadt in der eigenen Landessprache anzugeben, also z.B. &amp;quot;Koeln&amp;quot; oder &amp;quot;Muenchen&amp;quot;. Die Angabe von z.B. &amp;quot;Cologne&amp;quot; ist nicht zielführend, weil dies ein kleiner Ort in Italien ist ;-)&lt;br /&gt;
&lt;br /&gt;
Kennt man die Geo-Koordinaten vom gewünschten Standort nicht, kann man sie über Google-Earth ermitteln. Dafür muss man nicht unbedingt Google-Earth herunterladen, es reicht das Aufrufen von Google-Maps im Browser. Anschließend kann man dann unten links auf die Web-Version von Google-Earth wechseln. Ein Klick auf den eigenen Standort lässt dann die gewünschten Koordinaten erscheinen. Dabei ist die erste Zahl (irgendetwas um die 50) die Lattitude und die zweite Zahl (in der Größenordnung 7) die Longitude. Die Zahlen sollen mit Dezimalpunkt und nicht Dezimalkomma eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Ein abschließender Klick auf die Schaltfläche &amp;quot;Get weather&amp;quot; bezieht dann von openweathermap.org das aktuelle Wetter vom gewünschten Standort. Die Wetterdaten (Temperatur und Wetterlage) werden dann als Laufschrift auf dem Display ausgegeben. Diese Anzeige kann in einer kommenden Version über ein einstellbares Zeitintervall dann auch automatisch erfolgen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Weather.png|miniatur|Web-Interface: Wetterdaten-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDR ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Mittels Aktivierung von &amp;quot;Automatic Brightness&amp;quot; werden die automatische Helligkeitssteuerung scharf geschaltet und das erweiterte Menü sichtbar.&lt;br /&gt;
&lt;br /&gt;
Die Seite zeigt den aktuellen Wert an, den der ADC am LDR misst. Um den Helligkeitsbereich bei der automatischen Helligkeitssteuerung komplett auszunutzen, kann hier eine Kalibrierung vorgenommen werden. Dazu betätigt man einmal die Minimum-Schaltfläche bei verdunkeltem Raum, einmal die Maximum-Schaltfläche bei maximaler Raumhelligkeit und speichert alles durch Drücken der Save-Schaltfläche. Die automatische Helligkeitssteuerung verwendet dann bei einer Helligkeitsmessung diese Min-/Max-Werte zum Vergleich.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist nicht sinnvoll, bei der Max-Messung einfach eine Taschenlampe direkt vor den LDR zu halten. Da der LDR normalerweise hinter der Frontplatte sitzt, wird so eine Helligkeit in der Praxis niemals erreicht. Die Folge wäre, dass die LEDs der Uhr dann zu dunkel leuchten würden.&lt;br /&gt;
&lt;br /&gt;
Hinweis2: Der angezeigte LDR Wert wird auf die Min und Max-Werte begrenzt. Sind diese 0 wird auch der LDR-Wert als 0 angezeigt. Dann sollte wie beschrieben kalibriert werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-LDR.png|miniatur|Web-Interface: LDR-Kalibrierung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Brightness ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können die 16 vorhandenen Helligkeitsstufen an die Gegebenheiten angepasst werden. Je nach Transparenz der verwendeten Frontplatte bzw. des Diffusors kann man hier nachjustieren.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig sind die Helligkeitsstufen hier so gewählt, dass immer eine gewisse Grundhelligkeit eingestellt ist. Erscheinen die unteren Helligkeitsstufen zu hell, kann man das durch Verschieben der entsprechenden Regler nach links anpassen. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Brightness.png|miniatur|Web-Interface: Helligkeitskurve]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Unter &amp;quot;Display Mode&amp;quot; können unter anderem verschiedene Sprachvarianten, die regionale Unterschiede beim Gebrauch der Uhrzeit berücksichtigen, ausgewählt werden. Die Anzeige von &amp;quot;Es ist&amp;quot; kann hier generell ein- oder ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Schieberegler &amp;quot;Brightness&amp;quot; kann die Grundhelligkeit eingestellt werden. Dieser wird deaktiviert, wenn die automatische Helligkeitssteuerung aktiviert wurde. Die eigentlichen Farben des Displays stellt man dann mit den Schiebereglern &amp;quot;R&amp;quot;, &amp;quot;G&amp;quot; und &amp;quot;B&amp;quot; ein. Diese erscheinen jedoch nur dann, wenn nicht die Animation &amp;quot;Rainbow&amp;quot; eingestellt ist. Die Rainbow-Animation kontrolliert die Farben nämlich selbst.&lt;br /&gt;
&lt;br /&gt;
Durch Wahl einer Ticker-Verzögerung kann die Geschwindigkeit der &amp;quot;Ticker-Messages&amp;quot; (Laufschriftanzeige) kontrolliert werden. 3 ist hier der Standardwert. Niedrigere Werte ergeben eine höhere Geschwindigkeit (bis zur Unleserlichkeit), höhere Werte verzögern die Geschwindigkeit der Laufschriften.&lt;br /&gt;
&lt;br /&gt;
Stellt man für das Ambilight &amp;quot;Use Display Colors&amp;quot; ein, dann werden die Einstellungen für Helligkeit und Farben auch für das Ambilight verwendet, das heißt die Farben laufen synchron.&lt;br /&gt;
&lt;br /&gt;
Auch hier gibt es nochmal die Schaltflächen zum Ein- und Ausschalten des LED-Displays. Mit der Schaltfläche &amp;quot;Test Display&amp;quot; werden sämtliche LEDs bei halber (subjektiver) Helligkeit eingeschaltet (benötigt ca. 1/4 des theoretisch möglichen Maximalstroms) und einige Farben zur Kontrolle der Funktionsfähigkeit aller LEDs durchprobiert.&lt;br /&gt;
&lt;br /&gt;
Bei &amp;quot;Temp Display Interval&amp;quot; lässt sich ein Zeitintervall wählen, bei welchem die aktuell gemessene Temperatur eingeblendet werden soll. Bei Angabe von &amp;quot;1&amp;quot; passiert das jede Minute, nämlich immer bei hh:mm:30 Uhr. Bei Angabe von beispielsweise &amp;quot;5&amp;quot; wird die Temperatur dann nur noch alle 5 Minuten eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;Heart Display interval&amp;quot; gilt dasselbe. Hier wird ein Herz als Piktogramm eingeblendet - z.B. für Geburtstage. Ebenso kann man in der vorweihnachtlichen Zeit einen Weihnachtsbaum einblenden unter Angabe eines Wertes für &amp;quot;XMas tree display interval&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Intervalle ausgefüllt, gilt folgende Regel bei zeitgleicher Einblendung: Dasjenige Piktogramm, welches seltener erscheinen soll, hat eine höhere Priorität.&lt;br /&gt;
&lt;br /&gt;
Beispiel (siehe auch Bild rechts):&lt;br /&gt;
&lt;br /&gt;
* Temp display interval = 10&lt;br /&gt;
* Heart display interval = 1&lt;br /&gt;
* XMas tree display interval 5&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich:&lt;br /&gt;
&lt;br /&gt;
* 09:01 Uhr bis 09:04 Uhr: Herz&lt;br /&gt;
* 09:05 Uhr: Tannenbaum&lt;br /&gt;
* 09:06 Uhr bis 09:09 Uhr: Herz&lt;br /&gt;
* 09:10 Uhr: Temperatur&lt;br /&gt;
* 09:11 Uhr bis 09:14 Uhr: Herz&lt;br /&gt;
* 09:15 Uhr: Tannenbaum&lt;br /&gt;
&lt;br /&gt;
usw. Die Einblendungen geschehen grundsätzlich 30 Sekunden nach der vollen Minute. Intervalle gleicher Dauer sollte man vermeiden. Dann wird konsequent nur noch eins der beiden Piktogramme gezeigt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Display.png|miniatur|Web-Interface: Einstellungen des LED-Displays]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Animationen werden immer dann ausgeführt, wenn sich die Anzeige ändert, zum Beispiel bei einem Uhrzeitwechsel. Hier kann man sich die gewünschte Animation aussuchen und auch die dazugehörige Geschwindigkeit eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Animationen sind verfügbar:&lt;br /&gt;
&lt;br /&gt;
* None - Keine Animation&lt;br /&gt;
* Fade - Langsames Überblenden der Buchstaben&lt;br /&gt;
* Roll - Rollen der Wörter von links/rechts/oben/unten&lt;br /&gt;
* Explode - Die Wörter wandern schnell vom Mittelpunkt sternförmig auf ihren Platz&lt;br /&gt;
* Snake - Eine Schlange &amp;quot;frisst&amp;quot; die zuletzt angezeigten Wörter weg&lt;br /&gt;
* Teletype - Die Wörter werden in &amp;quot;Schreibmaschinen-Geschwindigkeit&amp;quot; ausgegeben&lt;br /&gt;
* Cube - Ein Rahmen &amp;quot;fällt&amp;quot; von außen nach innen, um die Anzeige zu löschen&lt;br /&gt;
* Matrix - Matrix-Animation aus dem gleichnamigen Film&lt;br /&gt;
* Drop - Buchstaben alter Wörter fallen aus der Anzeige, Buchstaben neuer Wörter fallen von oben in die Anzeige hinein&lt;br /&gt;
* Squeeze - Die Wörter werden einmal kurz &amp;quot;gequetscht&amp;quot;&lt;br /&gt;
* Flicker - Die Wörter &amp;quot;flackern&amp;quot;, danach erscheint die neue Anzeige&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die Animation &amp;quot;Random&amp;quot;. Hier wird mit Hilfe eines Zufallsgenerators jedes Mal eine andere Animation ausgewählt. Deklariert man eine Animation als Favoriten, dann wird diese von der Zufallsanimation &amp;quot;Random&amp;quot; genutzt. Anderenfalls wird sie von &amp;quot;Random&amp;quot; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Geschwindigkeit kann man in 15 Stufen einstellen. Bei Klick auf die Schaltfläche &amp;quot;Default&amp;quot; wird die Geschwindigkeit auf einen sinnvollen Standardwert gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als zusätzliche Farbanimation kann noch &amp;quot;Rainbow&amp;quot; ausgewählt und konfiguriert werden. Dann wechselt das Display fließend die Farben der LEDs.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Animations.png|miniatur|Web-Interface: Einstellungen der Animationen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier kann eine separate Animation für das Ambilight eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Clock&amp;quot; werden 20, 30 oder 60 Ambilight-LEDs als umlaufende Sekundenanzeige verwendet. Mit &amp;quot;#LEDs&amp;quot; kann man einstellen, wie viele Ambilight-LEDs sich im &amp;quot;Kreis&amp;quot; befinden. Sinnvoll sind hier 20, 30 oder 60. Ausserdem lässt sich mit &amp;quot;Offset of second = 0&amp;quot; diejenige LED einstellen, die mittig oben als Sekunde 0 angebracht ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Beginnt das Ambilight mit 60 LEDs links unten und ist im Uhrzeigersinn angebracht, dann wäre die LED mit Sekunde 0 die Nr. 22. Diese Zahl ist dann hier einzutragen.&lt;br /&gt;
&lt;br /&gt;
Der Ambilight-Modus &amp;quot;Clock2&amp;quot; entspricht dem Modus &amp;quot;Clock&amp;quot;. Jedoch wird hier ein zu-/abnehmender Vollkreis dargestellt.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Rainbow&amp;quot; durchlaufen die Ambilight-LEDs langsam (über mehrere Minuten hinweg) alle Farben des Regenbogens. Dieser läuft unabhängig von der Farbanimation &amp;quot;Rainbow&amp;quot; des Displays.&lt;br /&gt;
&lt;br /&gt;
Ist auf der Display-Webseite eingestellt, dass die Ambilight-Farben nicht synchronisiert werden sollen, dann kann man hier auch unabhängig von dem Display eine eigene Helligkeit und einen anderen RGB-Wert wählen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Ambilight.png|miniatur|Web-Interface: Ambilight]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Mit bis zu acht Timern kann man einstellen, wann die Uhr aus- bzw. eingeschaltet werden soll. Die Einstellung kann in Abhängigkeit der Wochentage eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel rechts wird in der Woche abends die Uhr um 22:30 Uhr abgeschaltet. Eingeschaltet wird dann morgens wieder um 07:00 Uhr. Nach dem Frühstück wird die Uhr dann um 08:00 Uhr wieder abgeschaltet, um dann abends um 17:00 Uhr wieder eingeschaltet zu werden.&lt;br /&gt;
&lt;br /&gt;
Am Wochenende sieht das dann anders aus: Hier ist die Uhr abends länger eingeschaltet, nämlich bis 23:30 Uhr. Morgens geht es erst dann um 09:00 Uhr wieder weiter.&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Timers.png|miniatur|Web-Interface: Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können Timer speziell für das Ambilight eingestellt werden, um zum Beispiel nachts das Ambilight separat abzuschalten. Umschaltzeiten, während die Uhr selbst abgeschaltet ist, werden ignoriert. Sonst gelten dieselben Bemerkungen wie im vorangehenden Kapitel.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Ambilight-Timers.png|miniatur|Web-Interface: Ambilight Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DFPlayer ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können MP3-Tracks konfiguriert werden, die zu bestimmten Zeiten oder Ereignissen von einem Mini-DFPlayer abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Auf der SD-Card müssen 3 Verzeichnisse angelegt werden:&lt;br /&gt;
&lt;br /&gt;
* Verzeichnis 01 - Bell-Mode: Hier werden MP3-Dateien abgelegt, die zu jeder vollen Stunde oder auch Viertelstunde abgespielt werden sollen.&lt;br /&gt;
* Verzeichnis 02 - Speak-Mode: Hier können MP3-Dateien abgelegt werden, welche die auf der Uhr angezeigten Wörter &amp;quot;vorlesen&amp;quot;.&lt;br /&gt;
* Verzeichnis 03 - Alarm: Die hier gespeicherten MP3-Dateien werden zu den eingetragenen Weckzeiten abgespielt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bell Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 000.mp3 - wird um 00:00 Uhr (Mitternacht) abgespielt&lt;br /&gt;
* 001.mp3 - wird um 01:00 und 13:00 Uhr abgespielt&lt;br /&gt;
* 002.mp3 - wird um 02:00 und 14:00 Uhr abgespielt&lt;br /&gt;
* ...&lt;br /&gt;
* 012.mp3 - wird um 12:00 Uhr mittags abgespielt&lt;br /&gt;
* 013.mp3 - wird jede Stunde um xx:15 Uhr abgespielt, falls xx:15 aktiviert wurde&lt;br /&gt;
* 014.mp3 - wird jede Stunde um xx:30 Uhr abgespielt, falls xx:30 aktiviert wurde&lt;br /&gt;
* 015.mp3 - wird jede Stunde um xx:45 Uhr abgespielt, falls xx:45 aktiviert wurde&lt;br /&gt;
&lt;br /&gt;
Beispielsweise können das Aufnahmen von BigBen oder auch Zeitansagen sein.&lt;br /&gt;
&lt;br /&gt;
Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop Time) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 02&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Speak Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist der Speak Mode aktiviert, werden die Wörter auf dem Display einzeln vorgelesen. Wie oft, wird mit dem &amp;quot;Speak Cycle&amp;quot; eingestellt, z.B. 1 = jede Minute, 5 = alle 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Die Liste der dafür notwendigen MP3-Datei folgt in Kürze.&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt: Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop Time) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wecker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unabhängig von den oben angegebenen Modi und Ruhezeiten können bis zu acht Alarm-Zeiten (Wecker) eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dabei wird die auf der Webseite in der aufgeführten Tabelle angegebene MP3-Datei abgespielt. Im nebenstehenden Beispiel wird die Datei 001.mp3 im Verzeichnis 03 Montags bis Freitags morgens um 06:30 Uhr abgespielt. Die darüber angegebenen Ruhezeiten spielen hier ausnahmsweise &#039;&#039;&#039;keine Rolle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-DFPlayer.png|miniatur|Web-Interface: DFPlayer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Updates für den ESP8266 als auch für den STM32 können über das WLAN eingespielt werden. Dazu ist eine Internet-Verbindung notwendig. Für OTA-Updates (&amp;quot;Over The Air&amp;quot;) ist zwingend ein ESP8266 ESP-12F notwendig. &#039;&#039;&#039;Mit den bisher eingesetzten ESP-01 kann kein OTA-Update eingespielt werden.&#039;&#039;&#039; Jedoch können alte Shields mit ESP-01 auf ESP-12F umgebaut werden: [[WordClock_mit_WS2812#Umbau_von_ESP-01_auf_ESP-12F|Umbau von ESP-01 auf ESP-12F]]&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils die benutzte und die verfügbare Firmware-Version angezeigt. Sind diese gleich, ist ein Update nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039;: Durch Klick auf die Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; kann der Flash-Speicherbereich, wo der ESP8266 die Update-Images sowohl für ESP8266 als auch für STM32 ablegt, neu formatiert werden. Das kann dann notwendig werden, wenn die Images nur unvollständig heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn sowohl die ESP- als auch die STM32-Firmware abweichen, sollte immer zunächst der ESP8266 aktualisiert werden und danach der STM32. Durch Klick auf die Schaltfläche &amp;quot;Update ESP Firmware&amp;quot; wird das Update gestartet. Dieses dauert ca. 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann der STM32 aktualisiert werden. Dazu muss zunächst die richtige Firmware-Variante (HEX-Datei) ausgewählt werden. Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, ist hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]. Ab installierter Version 2.6.0 ermittelt die Software selbst anhand der Hardware-Konfiguration den Namen der passenden HEX-Datei und schlägt diesen dann automatisch vor.&lt;br /&gt;
&lt;br /&gt;
Durch Klick auf die Schaltfläche &amp;quot;Flash STM32&amp;quot; wird der STM32 zunächst in den Bootloader-Modus gebracht, danach wird er neu programmiert. Der STM32 verbleibt solange im Bootloader-Modus, bis die Schaltfläche &amp;quot;Reset STM32&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler beim OTA Update:&#039;&#039;&#039; In Einzelfällen kam es beim OTA Update zu einem Fehler, der auf ein Problem mit dem im ESP enthaltenen Dateisystem hinweist. Dieses Dateisystem wird normalerweise beim Flash der Software in das ESP Modul automatisch erstellt und kann dann z.B. als Zwischenspeicher für OTA Updates von ESP und STM32 genutzt werden. Taucht im OTA-Log ein Fehler wie z.B. &#039;&#039;&#039;error: cannot open file&#039;&#039;&#039; auf, dann hilft es ggf. die Software mit einem anderen Programm in das ESP Modul zu schreiben oder das vorhandene Programm in einer aktuelleren Version zu testen. &#039;&#039;&#039;Alternativ dazu kann man den Flashspeicherbereich des ESP8266 durch Betätigen der Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; neu formatieren und das OTA-Update anschließend neu durchführen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte die aktuelle Version der ESP8266 Flash Download Tools (http://espressif.com/en/support/download/other-tools) Probleme bereiten, könnte man z.B. den NodeMCU Flasher (https://github.com/nodemcu/nodemcu-flasher) testen. Dort einfach unter &amp;quot;Config&amp;quot; das .BIN File laden und dann im Reiter &amp;quot;Operation&amp;quot; den entsprechenden COM Port auswählen und auf &amp;quot;Flash&amp;quot; klicken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Update.png|miniatur|Web-Interface: Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Update ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Während das normale Update über einen Host im Internet durchgeführt wird, kann man über das lokale Update den STM32 vom lokalen PC aus flashen. Das lokale Flashen des ESP8266 ist noch nicht möglich, ist aber für ein späteres Release geplant. Sonst gelten dieselben Bemerkungen wie zum vorhergehenden Kapitel &amp;quot;Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auch hier gilt: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Local-Update.png|miniatur|Web-Interface: Local Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeserver ==&lt;br /&gt;
&lt;br /&gt;
Der Timeserver muss ein RFC 958 konformer NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Alternative Timeserver sind zum Beispiel ntp1.ptb.de (192.53.103.108), ntp2.ptb.de (192.53.103.104) oder time.nist.gov (216.229.0.179).&lt;br /&gt;
&lt;br /&gt;
Eine Liste von europäischen Timeservern findet man u.a. hier: http://www.pool.ntp.org/zone/europe&lt;br /&gt;
&lt;br /&gt;
Den Timeserver konfiguriert man folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Im Browser gibt man als URL die ausgegebene IP-Adresse ein, also z.B. http://192.168.10.1/ . Anschließend wählt man den Menüpunkt &amp;quot;Network&amp;quot; an und gibt in der entsprechenden Zeile die IP-Adresse des Wunsch-Timeservers ein und bestätigt mit &amp;quot;Save&amp;quot;. Nun wird zunächst geprüft, ob der Timeserver das NTP-Protokoll unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Uhrzeit wird alle 3800 Sekunden vom Timeserver geholt. Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] kann man die Übertragung auch jederzeit per Mausklick starten. Das funktioniert auch mit einer angelernten IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
&lt;br /&gt;
Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] Menüpunkt &amp;quot;Network&amp;quot; auswählen, in der Zeile &amp;quot;Timezone&amp;quot; die Abweichung von GMT eingeben. Für die mitteleuropäische Zeitzone wäre das einfach eine 1. Dies entspricht dann GMT+1. Bei einer negativen Abweichung wie GMT-1 muss dann entsprechend -1 eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IR-Fernbedienung ==&lt;br /&gt;
&lt;br /&gt;
In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe Weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt. Die Anlernroutine kann auch über die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] (Menü &amp;quot;Main&amp;quot;) gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man wird nun über eine Laufschrift auf dem LED-Display aufgefordert, folgende FB-Tasten zu drücken:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Tasten für IR-Fernbedienung&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste || Funktion || Laufschrift&lt;br /&gt;
|-&lt;br /&gt;
| Power || Anzeige ein/aus                           || power off/on&lt;br /&gt;
|- &lt;br /&gt;
| OK    || Speichern der Einstellungen               || ok&lt;br /&gt;
|- &lt;br /&gt;
| MODE- || Anzeigemodus erniedrigen                  || decrement display mode&lt;br /&gt;
|- &lt;br /&gt;
| MODE+ || Anzeigemodus erhöhen                      || increment display mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM- || Animation erniedrigen                     || decrement animation mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM+ || Animation erhöhen                         || increment animation mode&lt;br /&gt;
|- &lt;br /&gt;
| HOUR- || Stunde erniedrigen                        || decrement hour&lt;br /&gt;
|- &lt;br /&gt;
| HOUR+ || Stunde erhöhen                            || increment hour&lt;br /&gt;
|- &lt;br /&gt;
| MIN-  || Minute erniedrigen                        || decrement minute&lt;br /&gt;
|- &lt;br /&gt;
| MIN+  || Minute erhöhen                            || increment minute&lt;br /&gt;
|- &lt;br /&gt;
| RED-  || Helligkeit der Farbe Rot erniedrigen      || decrement red brightness&lt;br /&gt;
|- &lt;br /&gt;
| RED+  || Helligkeit der Farbe Rot erhöhen          || increment red brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN- || Helligkeit der Farbe Grün erniedrigen    || decrement green brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN+ || Helligkeit der Farbe Grün erhöhen        || increment green brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE-  || Helligkeit der Farbe Blau erniedrigen    || decrement blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE+  || Helligkeit der Farbe Blau erhöhen        || increment blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT-  || Grundhelligkeit erniedrigen            || decrement global brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT+  || Grundhelligkeit erhöhen                || increment global brightness&lt;br /&gt;
|- &lt;br /&gt;
| AUTO+  || Automatische Helligkeitsregelung ein/aus || toggle auto brightness&lt;br /&gt;
|- &lt;br /&gt;
| TEMP   || Anzeige der Temperatur für 5 Sekunden    || get temperature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.&lt;br /&gt;
&lt;br /&gt;
Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:&lt;br /&gt;
&lt;br /&gt;
* SIRCS (Sony)&lt;br /&gt;
* NEC (Viele Hersteller, sehr verbreitet)&lt;br /&gt;
* SAMSUNG&lt;br /&gt;
* MATSUSHITA&lt;br /&gt;
* KASEIKYO&lt;br /&gt;
&lt;br /&gt;
[[IRMP]] &amp;quot;versteht&amp;quot; jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des [[IRMP]]-Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine passende Fernbedienung gibt es bei &#039;&#039; [http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019 DX] &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Passend beschriftet werden kann die Fernbedienung mit einem der folgenden Labels &amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Fernbedienung Folie ZW.pdf]] &amp;lt;br&amp;gt; &lt;br /&gt;
[[Datei:Fernbedienung Folie ZW2.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
(sie unterscheiden sich in der Anordnung des Power- und Save-Knopfes). Einfach auf eine selbstklebende Folie drucken, ausschneiden und aufkleben. Die unterste Reihe ist für weitere zusätzliche Optionen (z.B. Ambilight, usw.) noch offen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Android App ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Ist ein [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul angeschlossen und korrekt konfiguriert, kann die Uhr per [[WordClock_mit_WS2812#Android_App|Android App]] ferngesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Momentan können folgende Einstellungen vorgenommen werden:&lt;br /&gt;
&lt;br /&gt;
* Ein-/Ausschalten der Uhr&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Anzeige der WordClock-Temperatur&lt;br /&gt;
* Einstellen der Farben (&#039;&#039;&#039;Neu&#039;&#039;&#039;: nun auch RGBW)&lt;br /&gt;
* Manuelle Einstellung einer Grundhelligkeit&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] ein/aus&lt;br /&gt;
* Einstellung des Anzeigemodus&lt;br /&gt;
* Einstellung der Farbanimation, z.B. &amp;quot;Rainbow&amp;quot; (&#039;&#039;&#039;Neu&#039;&#039;&#039;)&lt;br /&gt;
* Einstellung der Animation (Überblenden, Rollen, Explosion etc.)&lt;br /&gt;
&lt;br /&gt;
Es können bis zu 4 Profile konfiguriert und damit auch bis zu 4 unterschiedliche WordClocks gesteuert werden. Den Wechsel der Profile nimmt man mit der Schaltfläche &amp;quot;Laden&amp;quot; vor, das Speichern der Profile mit dem Button &amp;quot;Speichern&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag &amp;quot;Einstellungen&amp;quot;. Bei älteren Android-Versionen ist dafür zunächst die spezielle Menü-Taste zu drücken, bei neueren Android-Versionen geht das auch über die Menüschaltfläche mit den drei übereinanderliegenden Punkten - siehe Bild rechts oben. Die IP-Adresse wird dann dem aktuell ausgewählten Profil zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Unter den Menüpunkten findet man nun auch einen mit dem Eintrag &amp;quot;Tetris&amp;quot;. Damit wird eine Art &amp;quot;Gamepad&amp;quot; eingeblendet, mit dem man auf der Uhr WCtris - einen Tetris-Clone - spielen kann. Viel Spaß!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wc24h-Android.png|miniatur|WC24h Android App]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tutorial zum Aufbau =&lt;br /&gt;
&lt;br /&gt;
Ein Tutorial zum Aufbau der WordClock findet man hier: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung.&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
== Anbringung der WS2812-Streifen ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine 1mm starke Alu-Platte (für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm). Darauf lassen sich nicht nur einfach die WS2812-LED-Streifen aufkleben, auch dient die Alu-Platte der Wärmeabfuhr. Die Alu-Platte kann man sich von einem der eBay-Händler entweder direkt erstehen oder für ca. 3,50 Euro zurechtschneiden lassen.&lt;br /&gt;
&lt;br /&gt;
Den LED-Streifen schneidet man 16 Streifen à 18 LEDs. Bevor man sie auf die LED-Platte klebt, sollte man senkrecht je einen Tesa-Streifen links und rechts auf die Alu-Platte kleben, da sich gezeigt hat, dass die Schnittkanten der Streifen gern einen Kurzschluss mit der Alu-Platte bilden.&lt;br /&gt;
&lt;br /&gt;
Die LED-Streifen werden dann im Ziehharmonika-Verfahren aufgeklebt. Dabei steht jeder 2. Streifen auf dem Kopf. Das hat den Vorteil, dass die Verbindungen zwischen den Streifen möglichst kurz sind. Auf der rechten Seite verbindet man dann die Anschlüsse +5V mit +5V, GND mit GND und DO mit DI - siehe Bild. Man verbindet also den ersten mit dem zweiten Streifen, den dritten mit dem vierten Streifen usw.&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite verbindet man lediglich DO mit DI, also den zweiten Streifen mit dem dritten, den vierten mit dem fünften usw. An den verbleibenden Lötpunkten +5V und GND lötet man an jedem *zweiten* Streifen (1, 3, 5 usw.) die Spannungsversorgung  an. Praktisch ist die Verwendung eines 16-poligen Flachbandkabels, welches man auf einen Flachbandkabel-Stecker aufquetscht. Pin 1 und 2 gehen dann an 5V/GND des ersten Streifens, 3 und 4 an 5V/GND des dritten Streifens usw. Mit ca. 2 m Flachbandkabel kann die komplette Uhr verkabelt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann man mittels 16-poligem Wannenstecker, den man auf eine Lochrasterplatine lötet, die Spannungsversorgung einfach verpolungssicher anstecken. Unter der Lochrasterplatine werden die geradzahligen Pins und die ungeraden Pins je mit einem Kupferdraht verbunden. Mit einer 2-poligen Schraubklemme auf der Lochrasterplatine kann dann das Netzteil angeschlossen werden - siehe Bild rechts. Bei Verwendung eines der Shields aus der Sammelbestellung wird die Lochrasterplatine &#039;&#039;&#039;nicht&#039;&#039;&#039; benötigt - die Spannungsversorgung für die Stripes ist auf den Shields mit eingeplant. &lt;br /&gt;
&lt;br /&gt;
Beim Anschluss des Datensignals sollte beachtet werden, dass zuerst die Status-LED angeschlossen wird und das Signal dann von dieser weiter zur Platte geht. Spannung für die Status-LED kann man sich bequem vom letzten Streifen der Platte holen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wclock24h-WS2812-auf-Alu-Platte.jpg|miniatur|16 WS2812-Streifen auf Alu-Platte]]&lt;br /&gt;
[[Datei:Wclock24h-16-pol-Wanne.png|miniatur|16pol Wanne zum Verbinden des Netzteils und der Streifen]]&lt;br /&gt;
[[Datei:Wclock24h-Spannungsvergung-Streifen.jpg|miniatur|Anschluss der Streifen an die Spannungsversorgung]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine Alu-Platte (1mmx310mmx310mm).&lt;br /&gt;
Der Aufbau ist analog zu der WordClock 24h zu betrachten. Der Unterschied liegt darin, dass bei der WC12h die LED Streifen mit dem Sonderabstand benutzt werden und dieser in 10 Streifen a 11 LEDs geteilt wird. Sowie in 4 Einzel LEDs für die Minutenanzeigen in den Ecken.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Verbindung der Streifen erfolgt dann analog zu der oben beschriebenen Weise.&lt;br /&gt;
|| &lt;br /&gt;
[[Datei:Aufbau WC12h WS2812.jpg|mini]]&lt;br /&gt;
Aufgebaute WC12h mit WS2812 Streifen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zwischenböden ==&lt;br /&gt;
Es gibt insgesamt 3 Varianten der Zwischenböden.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei Varianten für die WordClock 12h (mit und ohne Ambilight Aussparungen) und eine Variante für die WordClock 24h&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h OHNE Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden ohne Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden ohne Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h MIT Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden mit Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden mit Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 OHNE Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h Boden Rueckseite.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Vorderseite.jpeg|mini|Vorderseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Rueckseite schraeg.jpeg|mini|Rückseite schräg]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 mit Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h MIT Ambilight-innen.jpg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h MIT Ambilight-aussen.jpg|mini|Vorderseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
(in Arbeit)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Shields für STM32 MiniDev und Nucleo Board ==&lt;br /&gt;
Hier werden nur die aktuellen Versionen der Shields beschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
[[WordClock_mit_WS2812#Historie_der_Hardware-Versionen|Ältere HW Versionen sind im Anhang aufgeführt]]&amp;lt;br&amp;gt;&lt;br /&gt;
=== Shield für STM32 MiniDevBoard ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das MiniDevBoard in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R16 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP13 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) und JP12 (Prog/Run) wurde um 90° gedreht&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Ein Bild folgt noch.&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden. Bild zeigt die v4 mit RTC, TSOP, AMS1117, ESP12, Spannungsabschaltung, LDR&lt;br /&gt;
||[[Datei:MiniDev_v4_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zum Stromstecker (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V4:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32F411 Nucleo Board ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das Nucleo Board in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Aufdruck des v4 hat sich der Fehlerteufel eingeschlichen. Der Aufdruck spricht noch von der Version3. Version 4 ist aber gut an den vergoldeten Lötpads zu erkennen. V3 hat die Lötpäds versilbert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R15 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP11 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) wurde neu positioniert und liegt nun nicht mehr unter dem Nucleo Board&lt;br /&gt;
* JP8 (SWD) wurde neu hinzugefügt&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Bild folgt noch&amp;lt;br&amp;gt;&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board. Bild zeigt noch die v3&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V4:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tischversion der WC12h aus dem 3D Drucker ==&lt;br /&gt;
[[Datei:WC12h_desk_printed.JPG|mini]]&lt;br /&gt;
&lt;br /&gt;
Wer Zugriff auf einen 3D Drucker mit einem Druckbereich &amp;gt;= 180x190mm hat, der findet bei Thingiverse 3D Modelle für alle unterstützten Sprachversionen der Software. Die Modelle der WC12h sind recht einfach zu drucken und sollten sich eigentlich mit so ziemlich jedem Gerät realisieren lassen. Wenn eine Version mit eingebautem Diffusor gedruckt werden soll, steht und fällt das Vorhaben mit der Ausrichtung des Druckbetts. Schon ein Versatz von 0.1mm über die gesamte Fläche kann hier das Druckergebnis ziemlich negativ beeinträchtigen. Aber in der Regel kennen die Besitzer solcher Geräte ja die Stolpersteine. Falls euer Druckbett nicht wirklich gerade, oder nicht sauber ausgerichtet ist, könnt ihr zur Not einfach eine Version ohne Diffusor drucken und diesen dann in Eigenregie erstellen (Butterbrotpapier, Milchglasfolie, usw.).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WC12h_desk_beleuchtet.jpg|mini]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Displaymatrix der 3D Modelle ist wegen der kleinen Größe der Uhr für den Abstand eines 90LED/m Streifens (11.11mm) ausgelegt, die man z.B. bei eBay, Aliexpress und Konsorten kaufen kann. Ich habe Anfang des Jahres ca. 12 USD inkl. Versand für einen Meter WS2812B mit 90 LEDs pro Meter bei Aliexpress bezahlt, bei 2 Metern habt ihr also Kosten von etwas über 22 Euro für die Streifen.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Update 10/2017&#039;&#039;&#039;: Wegen der mittlerweile schlechten Verfügbarkeit der 90LED/m habe ich Modelle für 96LED/m Streifen ergänzt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In Sachen Ambilight gibt es hier 2 verschiedene Deckel zur Auswahl, mit denen ihr z.B. den Sekundenzeiger der Uhr oder das Ambilight als Gehäusebeleuchtung benutzen könnt. Im Deckel ist jeweils ein Kreis für die Anbringung der Streifen vorhanden. Der Umfang der Kreise ist berechnet für den Einsatz von 30 LEDs eines 60 LED pro Meter Streifens, bzw. 60 LEDs eines 144 LED pro Meter Streifens. Achtet darauf hier nicht unterschiedliche LED Typen zu mischen (z.B. SK6812 für die Matrix und WS2812 für das Ambilight)! Ich persönlich habe gute Erfahrungen mit den LEDs von &amp;quot;BTF Lighting&amp;quot; bei Aliexpress gemacht.&lt;br /&gt;
&lt;br /&gt;
Hier geht es zur [http://www.thingiverse.com/thing:2130830 WordClock 12h (desk clock edition) bei Thingiverse]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Sammelbestellungen =&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung LED Stripes, Zwischenböden, Shields ==&lt;br /&gt;
Für die WC12h Variante der WordClock werden WS2812 Stripes als Spezialanfertigung mit einem Rastermaß von 28,1mm eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;WS2812 Pakete&#039;&#039;&#039; angeboten (WC12h):&lt;br /&gt;
* Paket 5 (Uhr - STM32 Basis - WS2812) - 40,80Eur : 120 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
* Paket 6 (Ambilight - STM32 Basis - WS2812) - 20,40Eur : 60 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
(durch die Umstellung des Ambilight Paketes auf 60 LEDs, kann die umlaufende Sekundenanzeige realisiert werden)&lt;br /&gt;
&lt;br /&gt;
Für die WC24h werden die WS2812 Stripes nicht über eine Sammelbestellung bestellt, da hier das Standardformat genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Zwischenböden&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Zwischenboden (WC12h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC12h) mit Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) mit Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Shields&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Shield für STM32 MiniDevBoard - 3,50Eur&lt;br /&gt;
* Shield für STM32 NucleoBoard - 5,50Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der Shields&#039;&#039;&#039; erfolgt als Großbrief:&lt;br /&gt;
* innerhalb BRD – 4,00Eur&lt;br /&gt;
* Österreich – 6,00Eur&lt;br /&gt;
* Schweiz - 6,00Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der WS2812-Stripes&#039;&#039;&#039; erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) – 6,50Eur&lt;br /&gt;
* Österreich – 15,50Eur&lt;br /&gt;
* Schweiz – in die Schweiz kann nur als normales Paket versendet werden, Kosten hierzu siehe unten&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand mit Zwischenboden&#039;&#039;&#039; erfolgt als normales Paket:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 10,00Eur (bis 2 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 12,00Eur (bis 4 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 18,00Eur (ab 5 Böden)&lt;br /&gt;
* Österreich – 20,00Eur (bis 2 Böden)&lt;br /&gt;
* Österreich – 25,00Eur (bis 4 Böden)&lt;br /&gt;
* Schweiz - 31,00Eur (bis 2 Böden)&lt;br /&gt;
* Schweiz - 40,00Eur (bis 4 Böden)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&amp;lt;br&amp;gt;&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig und wird dann entsprechend mitgeteilt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 06.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;09.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~10.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~17.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-front-dia.jpg|miniatur|Frontplatte: Dia]]&lt;br /&gt;
[[Datei:Wordclock-front-full.jpg|miniatur|Frontplatte: Vollansicht]]&lt;br /&gt;
[[Datei:WordClock-gelb.jpg|miniatur|4-sprachige Frontplatte]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatten bleiben identisch zu denen aus dem früheren [[Word Clock|WordClock]]-Projekt. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version, die auch für die Sammelbestellung gilt:&lt;br /&gt;
&lt;br /&gt;
 E S K I S T L F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N Z W A N Z I G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN ZWANZIG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI|VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T G N A C H V O R J M    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B Q Z W Ö L F P    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB ZWÖLF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W E I N S I E B E N    &amp;lt;nowiki&amp;gt;==&amp;gt; ZW|EI|N|S|IEBEN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K D R E I R H F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W A C H T Z E H N R S    &amp;lt;nowiki&amp;gt;==&amp;gt; ACHT ZEHN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B S E C H S F M U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; SECHS UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist es möglich, vier regionale Sprechweisen darzustellen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wessi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rhein-Ruhr-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zwanzig nach eins&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ossi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schwaben-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zwanzig nach zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC12h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also bitte auch in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Minutenpunkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;WC12h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC12h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise pro Stück:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 42,- EUR.&lt;br /&gt;
   - weiß: 49,- EUR.&lt;br /&gt;
   - rot: 49,- EUR.&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Aus der letzten Sammelbestellung sind aufgrund einer Fehlproduktion der Druckerei von den schwarzen WC12h noch WC12h-Frontplatten übrig, welche 3,5mm kleiner sind, also lediglich 446,5mm x 446,5mm statt 450mm x 450mm groß sind. Diese lassen sich nur mit einem Rahmen - wie z.B. dem im Artikel empfohlenen Alu-Rahmen einsetzen. Für den rahmenlosen Einsatz eignen sie sich eher nicht, weil dann der Zwischenboden leicht übersteht. Auf diese Frontplatten gebe ich einen Preisnachlass von 10,- EUR.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet alle 4 Sprachversionen:&lt;br /&gt;
&lt;br /&gt;
* Wessi-Modus (viertel nach/vor)&lt;br /&gt;
* Ossi-Modus (viertel/dreiviertel)&lt;br /&gt;
* Rhein-Ruhr-Modus (viertel nach/vor, zwanzig nach/vor)&lt;br /&gt;
* Schwaben-Modus (viertel/dreiviertel, zwanzig nach/vor)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Edelstahl Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Edelstahl126.jpg|miniatur]][[Datei:Edelstahl139.jpg|miniatur]][[Datei:Edelstahl092.jpg|miniatur|Loch]][[Datei:Edelstahl116.jpg|miniatur|Buchstabe]]&lt;br /&gt;
Eckdaten der Edelstahlblende:&lt;br /&gt;
&lt;br /&gt;
  - Abmessungen: ca. 450x450x1 mm &lt;br /&gt;
  - gelasert gem. dxf Vorgabe, &lt;br /&gt;
  - Material 1.4301-2G, &lt;br /&gt;
  - eins. K320 geschliffen/gebürstet, &lt;br /&gt;
  - ohne weitere Nachbearbeitung, &lt;br /&gt;
  - Layout unterscheidet sich von der Originaluhr&lt;br /&gt;
&lt;br /&gt;
Verwendet wird hierbei die Schriftart Lucida Console allerdings erweitert. Die Schriftart hat Stege, so dass freie Inselteile (z.&amp;amp;nbsp;B. Innenteil O) nicht lose sind. Jeder Steg hat eine Breite von mind. 2mm.&lt;br /&gt;
[[Datei:Edelstahlfront_V2.png|miniatur|ohne]]&lt;br /&gt;
Die Buchstaben werden entsprechend ausgelasert und müssen von hinten noch mit einem Diffusor versehen werden. Der Diffusor ist nicht Bestandteil des Angebots. &lt;br /&gt;
&lt;br /&gt;
Hinweise zum Diffusor findet ihr hier: &amp;lt;br /&amp;gt;&lt;br /&gt;
http://christians-bastel-leben.blogspot.de/2012/04/diffusorfolien.html&lt;br /&gt;
&lt;br /&gt;
Er hat die Folien mit der schwarzen Platte getestet. Er sagt die besten Ergebnisse hatte er mit folgender Folie:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.plexiglas-shop.com/DE/de/plexiglas-folie-5m9m5apyxic/plexiglas-folie-weiss-99532-gt-1-0-mm-iqq6a1wurpd~p.html&lt;br /&gt;
&lt;br /&gt;
Eine Plexiglasplatte hatte ich auch getestet, doch war meine zu breit und sah dann nicht gut aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand: 26.11.2017: Sammelbestellung ist aufgegeben. Habe noch Blenden übrig. Bei Bedarf einfach melden.  (Benutzer [http://www.mikrocontroller.net/user/show/hansa hansa]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Preise der Blenden:&lt;br /&gt;
&lt;br /&gt;
  Frontblende:                  44 Euro (inkl.MwSt)&lt;br /&gt;
  Verpackung :                   5,-  Euro (2 x 3mm MDF, als Rückwand verwendbar)&lt;br /&gt;
  Versand per GLS: 5 Euro&lt;br /&gt;
  Versand in die Schweiz: 8 Euro (wird direkt in der Schweiz verschickt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Selbstnachbau hier die DXF-Datei [[Datei:EdelstahlFrontV2.dxf]]&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Diese Dateidaten müssen um Faktor 10 vergrössert werden!&lt;br /&gt;
Sonst kommt eine 45x45mm Platte an. 8-(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung LED Stripes ==&lt;br /&gt;
&lt;br /&gt;
Eine Sammelbestellung der LED-Stripes für die WC24h ist derzeit nicht geplant, da hier WS2812-Stripes mit dem Standard-Rastermaß von 60 LEDs/m benötigt werden. Diese sind sehr einfach bei eBay oder Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Zwischenböden ==&lt;br /&gt;
&lt;br /&gt;
Wir können nun auch die WC24h Zwischenböden über die Sammelbestellung anbieten.&lt;br /&gt;
&lt;br /&gt;
* Zwischenboden für Wordclock 24h (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Alle Details zu der Sammelbestellung ist weiter oben bei der [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|WC12h Sammelbestellung beschrieben]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-Frontplatte-rot.jpg||right|WordClock24h-rot]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet über ein Dutzend Sprachvarianten:&lt;br /&gt;
&lt;br /&gt;
* hh mm (12)&lt;br /&gt;
* hh mm (24)&lt;br /&gt;
* hh und mm (12)&lt;br /&gt;
* hh und mm (24)&lt;br /&gt;
* mm nach hh (12+)&lt;br /&gt;
* mm nach hh (24)&lt;br /&gt;
* Ossi/Berlin (12)&lt;br /&gt;
* Ossi/Berlin (12+)&lt;br /&gt;
* Oesi (12)&lt;br /&gt;
* Oesi (12+)&lt;br /&gt;
* Rhein/Ruhr (12)&lt;br /&gt;
* Rhein/Ruhr (12+)&lt;br /&gt;
* Schwaben (12)&lt;br /&gt;
* Schwaben (12+)&lt;br /&gt;
* Wessi (12)&lt;br /&gt;
* Wessi (12+)&lt;br /&gt;
* Countdown bis Mitternacht&lt;br /&gt;
* Temperatur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC24h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Punkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;W24h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC24h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 44,- EUR&lt;br /&gt;
   - weiß: 49,- EUR&lt;br /&gt;
   - rot: 49,- EUR&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR für Verpackungs- und Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Die ESP8266-Firmware bietet eine API, über welche die Uhr konfiguriert werden kann. Diese API wird zum Beispiel von der Android-App genutzt, um die wichtigsten Einstellungen vorzunehmen. Allerdings ist die Kommunikation über die API momentan nur &amp;quot;One-Way&amp;quot;, d.h. es können nur Befehle gesandt werden, aber keine momentanen Einstellungen abgerufen werden. Das wird zukünftig noch geändert, so dass auch sämtliche Konfigurationsparameter abgerufen und eingestellt werden können - analog zum Webinterface.&lt;br /&gt;
&lt;br /&gt;
Der ESP8266 horcht auf UDP-Port 2424, die UDP-Messages sind zwischen 1 und 7 Bytes lang. Das erste Zeichen ist immer ein Buchstabe, z.B. &#039;C&#039;. Die weiteren Parameter sind jeweils Bytes, welche binär codiert sind, also 1 Parameter = 1 Byte. Es wird KEIN Abschluss-Zeichen, etwa ein &#039;\n&#039; oder sonstiges gesandt.&lt;br /&gt;
&lt;br /&gt;
=== API Kommandotabelle ===&lt;br /&gt;
&lt;br /&gt;
 C r g b [w]    - Farben (Colors) setzen&lt;br /&gt;
                    r =  0 ... 63        Rot&lt;br /&gt;
                    g =  0 ... 63        Grün&lt;br /&gt;
                    b =  0 ... 63        Blau&lt;br /&gt;
                    w =  0 ... 63        Weiß (nur bei SK6812-RGBW)&lt;br /&gt;
&lt;br /&gt;
 D m            - Anzeigemodus (Display-Mode) setzen&lt;br /&gt;
                  WC12h:&lt;br /&gt;
                    m =  0               Wessi&lt;br /&gt;
                    m =  1               Ossi&lt;br /&gt;
                    m =  2               Rhein-Ruhr&lt;br /&gt;
                    m =  3               Schwaben&lt;br /&gt;
                    m =  4               Schweizerdeutsch 1&lt;br /&gt;
                    m =  5               Schweizerdeutsch 2&lt;br /&gt;
                    m =  4               Englisch 1&lt;br /&gt;
                    m =  5               Englisch 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  WC24h:&lt;br /&gt;
                    m =  0               hh mm (12)&lt;br /&gt;
                    m =  1               hh mm (24)&lt;br /&gt;
                    m =  2               hh und mm (12)&lt;br /&gt;
                    m =  3               hh und mm (24)&lt;br /&gt;
                    m =  4               mm nach hh (12+)&lt;br /&gt;
                    m =  5               mm nach hh (24)&lt;br /&gt;
                    m =  6               Ossi/Berlin (12)&lt;br /&gt;
                    m =  7               Ossi/Berlin (12+)&lt;br /&gt;
                    m =  8               Oesi (12)&lt;br /&gt;
                    m =  9               Oesi (12+)&lt;br /&gt;
                    m = 10               Rhein/Ruhr (12)&lt;br /&gt;
                    m = 11               Rhein/Ruhr (12+)&lt;br /&gt;
                    m = 12               Schwaben (12)&lt;br /&gt;
                    m = 13               Schwaben (12+)&lt;br /&gt;
                    m = 14               Wessi (12)&lt;br /&gt;
                    m = 15               Wessi (12+)&lt;br /&gt;
&lt;br /&gt;
 A a            - Animation setzen&lt;br /&gt;
                    a =  0               Keine Animation&lt;br /&gt;
                    a =  1               Keine&lt;br /&gt;
                    a =  2               Fade&lt;br /&gt;
                    a =  3               Roll&lt;br /&gt;
                    a =  4               Explode&lt;br /&gt;
                    a =  5               Random&lt;br /&gt;
                    a =  6               Snake&lt;br /&gt;
                    a =  7               Teletype&lt;br /&gt;
                    a =  8               Cube&lt;br /&gt;
                    a =  9               Matrix&lt;br /&gt;
                    a = 10               Drop&lt;br /&gt;
                    a = 11               Squeeze&lt;br /&gt;
                    a = 12               Flicker&lt;br /&gt;
&lt;br /&gt;
 F f            - Farbanimation setzen&lt;br /&gt;
                    f =  0               Farbanimation aus&lt;br /&gt;
                    f =  1               Farbanimation Rainbow&lt;br /&gt;
&lt;br /&gt;
 B b            - Helligkeit (Britghtness) setzen&lt;br /&gt;
                    b =  0 ... 15        Helligkeit&lt;br /&gt;
&lt;br /&gt;
 L l            - Automatische Helligkeitsregelung&lt;br /&gt;
                    l =  0               Regelung aus&lt;br /&gt;
                    l =  1               Regelung an&lt;br /&gt;
&lt;br /&gt;
 P p            - Power&lt;br /&gt;
                    p =  0               Power off&lt;br /&gt;
                    p =  1               Power on&lt;br /&gt;
&lt;br /&gt;
 W              - Temperaturanzeige aktivieren&lt;br /&gt;
&lt;br /&gt;
 T y m d h i s  - Datum/Zeit (Time) setzen:&lt;br /&gt;
                    y =  0 ... 99        Jahr seit 2000&lt;br /&gt;
                    m =  1 ... 12        Monat&lt;br /&gt;
                    d =  1 ... 31        Tag im Monat&lt;br /&gt;
                    h =  0 ... 23        Stunde&lt;br /&gt;
                    i =  0 ... 59        Minute&lt;br /&gt;
                    s =  0 ... 59        Sekunde&lt;br /&gt;
&lt;br /&gt;
 gT x           - Tetris&lt;br /&gt;
                    x = s                Tetris starten&lt;br /&gt;
                    x = l                Links&lt;br /&gt;
                    x = r                Rechts&lt;br /&gt;
                    x = d                Unten&lt;br /&gt;
                    x = u                Hoch (hier: Drehen)&lt;br /&gt;
                    x = m                Fallenlassen&lt;br /&gt;
                    x = q                Quit: Beenden&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Historie der Hardware-Versionen ==&lt;br /&gt;
=== Shield für STM32 MiniDevBoard (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des MiniDev Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board ist 38x110mm und verbindet alle Komponenten miteinander.&amp;lt;br&amp;gt;Dieses Board ist die optimale Variante für die klassische 10x11 WordClock. Es enthält alle Schnittstellen für die WordClock und ist für die WC12 als auch für die WC24 Variante geeignet.&lt;br /&gt;
&#039;&#039;&#039;Bei dieser Version (März 2016) sind die Anschlüsse für den UART auf dem Shield so beschriftet, dass (ausnahmsweise) TX -&amp;gt; TX und RX -&amp;gt; RX verbunden werden müssen.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:MiniShield Vorderseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite&lt;br /&gt;
||[[Datei:MiniShield Rueckseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board soweit bestückt - es fehlt hier noch das STM32. Das STM32 MiniDevBoard sollte direkt ohne weiteren Sockel auf das Shield gelötet werden.&lt;br /&gt;
||[[Datei:MiniShield Bestueckt.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Hier nun das vollbestückte Shield, incl STM32, ESP8266, RTC, DS1820, AMS1117&lt;br /&gt;
||[[Datei:MiniShield Bestueckt incl STM32.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards:&amp;lt;br&amp;gt;Einzige Abweichung: +5V ist an die UART Schnittstelle mit raus geführt.&lt;br /&gt;
||[[Datei:MiniShield Schaltplan.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v2 enthält folgende Anpassungen:&lt;br /&gt;
* am UART ist nun auch +5V ausgeführt&lt;br /&gt;
* Rastabstand bei DS3231, TSOP, LDR, Data sind nun einheitlich und können somit mit einem durchgehenden PinHeader bestückt werden&lt;br /&gt;
* die Pins für das DS3231 sind gespiegelt. Damit liegt die Batterie nun oben und steht nicht mehr nach unten über&lt;br /&gt;
* Es wurde die Abschaltschaltung für die 5V Versorgung der WS2812 Streifen eingebaut. Somit kann optional die Versorgungsspannung geschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:MiniDev v2 TOP.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Im Lieferzustand ist die Abschaltschaltung gebrückt. Wird die Abschaltschaltung eingebaut, muss auf der Unterseite eine Leiterbahn durchtrennt werden! Diese ist hier rot umrandet!&#039;&#039;&#039;&lt;br /&gt;
||[[Datei:MiniDev v2 BOTTOM.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bestückte Bilder folgen noch.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards als V2:&lt;br /&gt;
||[[Datei:MiniDev v2 Schematic.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurden zwei Taster (WPS / User) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:MiniDev_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bei bestückten STM32 kann man gut erkennen, dass leider der 4-Pin-Header für den UART Anschluss sowie der 3-Pin-Header für PROG/RUN jeweils mit einem Pin unter dem Shield liegen.&lt;br /&gt;
* Beim UART Anschluss wird einfach nur ein 3-Pin-Header verwendet und +5V nicht angeschlossen. Was keine Funktionsbeeinträchtigung bedeutet.&lt;br /&gt;
* Der 3-Pin-Header für PROG/RUN kann &#039;&#039;&#039;nicht direkt&#039;&#039;&#039; bestückt werden. Stattdessen muss hier mit einer 3-adrigen-Verlängerung gearbeitet werden.&lt;br /&gt;
Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
||[[Datei:MiniDev_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V3:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32 Nucleo-Board (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des Nucleo Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Shield ist 90mm*55mm klein und wird auf das nucleo-Board aufgesteckt. Es enthält alle bekannten Schnittstellen für die WordClock (egal ob 12h oder 24h) und ist zusammengebaut ca 19mm hoch.&lt;br /&gt;
Es passt somit problemlos in eine Aussparung des Zwischenbodens.&lt;br /&gt;
|| [[Datei:Ns-Bild1.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ebenfalls integriert sind Anschlüsse, um den abgesägten ST-Link zur Programmierung oder Kommunikation über UART mit dem PC zu verbinden. Dabei muss der abgesägte ST-Link von interner auf externe Programmierung umgestellt werden. Dazu zieht man beide Jumper an CN2 auf dem ST-Link (rechts neben dem SWD-Header) ab. Wichtig ist, auch noch eine Verbindung vom SWD-Header Pin1 (VDD ganz oben) zu 3V3 des Nucleo-Teils herzustellen. Das ST-Link misst über VDD -&amp;gt; 3V3 die Betriebsspannung des STM32.&lt;br /&gt;
&lt;br /&gt;
||[[Datei:STLink-to-Nucleo.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beschreibung der Schnittstellen:&lt;br /&gt;
Die Belegung der meisten Schnittstellen ergibt sich aus den nebenstehenden Bildern.&lt;br /&gt;
Um das RTC Modul, welches entweder ein DS3231 oder ein DS1307 sein kann, mit Spannung zu versorgen, gibt es die Stiftleiste St-07, welche mit einem Jumper die Spannung am RTC Modul auf 3,3V oder 5V einstellt.&lt;br /&gt;
Die Stiftleiste St-04 kann per Pfostenfeldbuchse und Flachbandkabel insgesamt 8 mal die Spannung in die WS2812 Streifen einspeisen (siehe Beispiel weiter oben im Artikel).&lt;br /&gt;
||[[Datei:Ns-sh2.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| In dem nebenstehenden Bild ist das bestückte Nucleo Board zu sehen. Die einzelnen Module werden hier rechts und links an den überstehenden Pins angebracht.&lt;br /&gt;
||[[Datei:Nucleo_bestueckt.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Seit Juli 2016 wird das Nucleo-Shield in der Version V2.1a ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Es enthält jetzt auch die Möglichkeit, die Abschaltung der WS2812 LEDs per Hardware vorzunehmen. Dazu wurden die entsprechenden Bauteile auf das Board gepackt.&lt;br /&gt;
Außer dem Leistungs MOSFET IRF9310 wurde alles in bedrahteter Technik ausgeführt.&lt;br /&gt;
Wer die Bauteile für die Abschaltung (T1, T2, D1, R7, R8 und R9) NICHT einbaut, muss, wie in nebenstehendem Bild gezeigt, vier Lötbrücken einbauen.&lt;br /&gt;
&lt;br /&gt;
Analog dazu muss derjenige, der die Abschaltung einbaut, die Lötbrücken offen lassen (siehe unteres Bild, roter Kreis).&lt;br /&gt;
|| [[Datei:IMG 0366mod.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der Anschluss der externen Komponenten erfolgt nach neben stehendem Schaltplan an das nucleo Board.&lt;br /&gt;
|| [[Datei:Nucleo-Shield.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Leider haben sich zwei Bugs in den Platinenentwurf eingeschlichen.&lt;br /&gt;
Zum einen gibt es Kurzschlüsse an den Pluspolen der Kondensatoren C1 und C3. Der Workaround besteht darin, das Bohrloch etwas aufzuweiten, um die ungewünschte Verbindung zu Masse zu trennen (siehe Bild)&lt;br /&gt;
|| [[Datei:NS Bug-1.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der zweite Bug betrifft nur diejenigen, die die hardwaremäßige Abschaltung der WS2812 LEDs einbauen.&lt;br /&gt;
Hier muss, wie im nebenstehenden Bild gezeigt, eine kleine Verbindung mit einem Stück Kabel hergestellt werden.&lt;br /&gt;
|| [[Datei:NS Bug-2.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Shield muss über St-08 mit 5V versorgt werden. Die für die Schnittstellen benötigten 3,3V wird auf dem Shield selbst mit einem LM3940-3.3 erzeugt.&lt;br /&gt;
&lt;br /&gt;
Hier findet ihr die Stückliste zum Nucleo-Board und den Link zum öffentlichen Reichelt Warenkorb (noch ohne T1, T2, D1, R7, R8 und R9).&lt;br /&gt;
 [[Datei:Wc24wk.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurde ein Taster (WPS) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
* Komplettes Redesign&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:Nucleo_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board.&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 befindet sich also bei &amp;quot;IRF&amp;quot; des Bestückungsdrucks).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V3:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss ESP8266 ESP-01 ==&lt;br /&gt;
&lt;br /&gt;
Das ESP-01 Modul wurde lediglich bei den älteren Shields verwendet. Mittlerweile (ab Shield v3) wird es nicht mehr verwendet, weil es durch das ESP-12F ersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#ESP8266|ESP8266]] ESP-01: WLAN Modul&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-ESP8266-ESP-01.png|miniatur|Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA6&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4 (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA1&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 GPIO2 via 10k an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ab der Software Version 2.1.0 sind der HTML-Codegenerator und die Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266 ausgelagert. Deshalb ist ein ESP-Modul für das Betreiben der WordClock unbedingt erforderlich.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Umbau von ESP-01 auf ESP-12F ==&lt;br /&gt;
&lt;br /&gt;
Die älteren Shields, welche noch den Anschluss für den ESP-01 haben, können auf das ESP-12F umgebaut werden. Dafür besorgt man sich zusätzlich zum ESP-12F einen Adapter wie diesen hier:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.de/itm/PCB-Adapter-ESP-07-12-Board-fuer-ESP8266-WIFI-Wlan-Serial-Modul-ESP-12E-E-/252713824790&lt;br /&gt;
&lt;br /&gt;
Dieser hat die Widerstände R2 und R3 auch schon direkt auf dem Adapter. Lediglich die Widerstände R1 und R4 (siehe Schaltbilder rechts) müssen beim STM32F103-Mini-Board zusätzlich angebracht werden, siehe unten. Beim Nucleo-Board ist der Pulldown an BOOT0 bereits auf der Nucleo-Platine integriert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Mini-Board&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an R (STM32F103-Mini-Development-Board RESET)&lt;br /&gt;
* ESP8266 GPIO4 an BOOT0-Jumper (Mittlerer Anschluss) und an Pulldown 10k&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Mini-Board-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-STM32F103-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an MiniBoard STM32F103]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Nucleo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an Nucleo RESET&lt;br /&gt;
* ESP8266 GPIO4 an Nucleo BOOT0&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Nucleo-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-Nucleo-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an Nucleo STM32F4xx]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beim Mini-Board findet man den Pin BOOT0 verborgen unter dem oberen Jumper - siehe Bild rechts. Dieser muss entfernt werden. Anschließend verbindet man den ESP-12F-Anschluss D16 (GPIO16, ab Version 2.6.0: D4, also GPIO4) mit dem mittleren Pin des Jumper-Anschlusses. Bei der Gelegenheit kann dann auch der Pulldown-Widerstand R1 zwischen B00T0 und dem Nachbar-Pin (&amp;quot;0&amp;quot;) angebracht werden.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board wird der Pin BOOT0 bereits per 10k Pulldown auf Low-Pegel gezogen. Hier kann der ESP-Pin GPIO16 (ab Version 2.6.0: GPIO4) direkt ohne zusätzlichen Pulldown an BOOT0 angeschlossen werden. Zu beachten ist hier lediglich, dass kein Jumper auf Pin5-7 von CN7 steckt. Dies ist aber standardmäßig sowieso nicht der Fall.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:STM32F103-Bootloader-2.6.0.png|miniatur|Anschluss ESP8266 ESP-12F an BOOT0 des STM32F103-MiniBoards]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historie der Software-Versionen ==&lt;br /&gt;
=== Android App ===&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
Behobene Fehler:&lt;br /&gt;
* Animations- und Anzeigelisten konnten nicht gescrollt werden&lt;br /&gt;
* Titel der Animations- und Modus-Dialoge war falsch (%d wählen)&lt;br /&gt;
* Display Ein und Aus zeigten als Meldung immer &amp;quot;Display Ein gesendet!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Änderungen:&lt;br /&gt;
* Farbregler automatisch verbergen, wenn Regenbogen-Farbanimation gewählt wurde&lt;br /&gt;
* Automatische IP-Suche&lt;br /&gt;
* Laden und Speichern der Profile in einem Dialog zusammengefasst&lt;br /&gt;
* Info anzeigen, wenn beim Starten keine Netzwerkverbindung besteht&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Beim Start (oder auf Knopfdruck) werden die aktuellen Einstellungen von der Uhr geladen.&lt;br /&gt;
* Neu: Es können bis zu vier Profile angelegt werden, um die Einstellungen für bis zu vier Uhren zu steuern.&lt;br /&gt;
* Neu: Gamepad für Spiele wie z.B. Tetris&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Alle aktuell vorgesehenen Animationen können nun vollständig über die App ausgewählt werden&lt;br /&gt;
* RGBW-LED-Unterstützung: Unter dem Menü &amp;quot;Einstellungen&amp;quot; kann nun eingestellt werden, dass RGBW-LEDs eingesetzt werden.&lt;br /&gt;
* Die Oberfläche ist nun &amp;quot;scrollable&amp;quot;, kann also bei kleineren Mobilgeräten, wo nicht alles draufpasst, gerollt werden.&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animationen Snake, Teletype und Cube nun auch über die App einstellbar&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Auswählen der Farbanimation &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Button für Temperaturanzeige eingebaut&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 Firmware ===&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Web-Seite: &amp;quot;DFPlayer&amp;quot; zum Abspielen von MP3-Tracks bei vordefinierten Ereignissen.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* OTA-Flash des STM32: Der Flash-Inhalt wird nun erst unmittelbar vor dem eigentlichen Flash-Vorgang gelöscht, d.h. nach allen Konsistenzprüfungen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix in Local Update über OTA: Es wurde in V2.6.3 immer diejenige Datei geflasht, die zuletzt über das Remote Update heruntergeladen wurde.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Korrekturen in den STM32-OTA-Flash-Routinen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anpassung des Bootloaders an Nucleo STM32F4xx.&lt;br /&gt;
* Ambilight-Mode Clock: 5 Sekunden Marker nun an- und abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Das aktuelle Datum/Uhrzeit wurde im Webinterface nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button im Webinterface&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface - ungetestet.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer - ungetestet.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Unterstützung des ESP8266 ESP-12F&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;&lt;br /&gt;
* Neues Piktogramm &amp;quot;Fireworks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auswahl der Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Verbesserungen bei der Kommunikation zwischen STM32 und ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0b ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - Umlaute in Wettertexten wurden nicht korrekt gezeigt. Konvertierung der Umlaute von openweathermap-Inhalten von UTF8 nach ISO8859 nachgeholt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0a ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - beim Wechseln in den AP-Modus wurde fälschlicherweise &amp;quot;0.0.0.0&amp;quot; als IP-Adresse statt 192.168.4.1 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Ausgabe des WLAN-Modus: WLAN-Client oder AP&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler im NTP-Client behoben: Bei vorherigen Timeouts kann eine alte Uhrzeit ausgegeben werden&lt;br /&gt;
&lt;br /&gt;
=== STM32 WordClock Software ===&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Abspielen von MP3-Tracks über Mini DFPlayer bei ausgewählten Ereignissen.&lt;br /&gt;
* Neu: Sprechende Uhr.&lt;br /&gt;
* Neu: Bis zu acht Weckzeiten konfigurierbar.&lt;br /&gt;
* Neu: Advent (1-4) Overlays.&lt;br /&gt;
* Bugfix Timer-Tabellen: Bei gleichem Wochentag wurde der Timer nicht erkannt.&lt;br /&gt;
* Bugfix: Schweizerdeutsch-Layouts (WC12h)&lt;br /&gt;
* Bugfix: Board-LED leuchtet nun wieder, wenn ESP8266 über STM32 geflasht wird.&lt;br /&gt;
* Takt des STM32F411RE von 84MHz auf 100MHz erhöht.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* ESP8266: Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
* Vorbereitung Unterstützung der Interpretersprache NIC.&lt;br /&gt;
* Neu: Unterstützung für Nucleo STM32F446RE eingebaut - ungetestet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs einheitlich auf 120 erhöht.&lt;br /&gt;
* Bugfix: Ermittlung der Hardware-Konfiguration für HEX-Datei-Vorschlag beim OTA-Update korrigiert.&lt;br /&gt;
* Maximal möglichen Wert für Ticker-Verögerung (&amp;quot;Deceleration&amp;quot;) auf 16 beschränkt.&lt;br /&gt;
* Bugfix I2C-Treiber (betrifft RTC &amp;amp; EEPROM): Busy-Condition nach StopBit-Generierung wurde bisher nicht beachtet.&lt;br /&gt;
* Plausibilitäts-Tests auf EEPROM-Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierung: Double-Buffering für SK6812-DMA-Transfer - analog zu WS2812 in Version 2.6.4.&lt;br /&gt;
* Bugfix: Update von undefinierten EEPROM-Inhalten, welche in 2.6.x zu Hangups führen konnten.&lt;br /&gt;
* Bugfix: Nach Spielen von Tetris wurde nicht immer die aktuelle Uhrzeit wieder eingeblendet&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Verlängerung der Pausen für WS2812 auf 300us.&lt;br /&gt;
* Verschäfte Plausibilitätsprüfungen für EEPROM-Inhalte, ggfls. RESET auf Standardwerte.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Flackern bzw. versetztes Ausgabe der Display-LEDs durch Double-Buffering behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Änderung: 5-Sekunden-Marker für Ambilight-Modus &amp;quot;Clock&amp;quot; ist nun ein-/abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ein-/Ausschalten des Ambilights inkl. Timer funktioniert nun.&lt;br /&gt;
* Bugfix: Anzeige von Datum und Uhrzeit im Webinterface.&lt;br /&gt;
* Änderung: Schweizerdeutsch 2: Unterdrückung der Anzeige von &amp;quot;UHR&amp;quot;.&lt;br /&gt;
* EmBitz: Compiler-Optimierung von -O2 auf -Os gesetzt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button, damit ESP8266 sich per WPS mit dem Router (AccessPoint) verbinden kann.&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer.&lt;br /&gt;
* Neu: Ambilight-Animation &amp;quot;Clock&amp;quot; jetzt mit 5-Sekunden-Marker.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
* Optimierung der DS18xx/OneWire/Delay-Funktionen, um die Prozessorlast zu minimieren.&lt;br /&gt;
* Bugfix: Falsche Berechnung von Überläufen in CLOCK2-Animation für Ambilight (Anzahl Ambilight-LEDs = 30) korrigiert.&lt;br /&gt;
* Bugfix: Diverse Korrekturen in Layout English2 für WC12h.&lt;br /&gt;
* Neu: Zusätzliches Layout für WC12h: &amp;quot;Schweizerdeutsch 2&amp;quot;.&lt;br /&gt;
* Neu: WCtris, noch ein Tetris-Clone ;-)&lt;br /&gt;
* Änderung Verbindung zwischen ESP-12F und STM32: GPIO4 (und nicht mehr GPIO16) muss nun mit BOOT0 des STM32 verbunden werden&lt;br /&gt;
* Umstellung der IDE von EmBlocks 2.3.0 auf EMBitz 1.11.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
* Optimierungen der LED-Treiber zwecks Minimierung des RAM-Speicherverbrauchs.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Hochauflösendes animiertes Piktogramm &amp;quot;Fireworks&amp;quot; für WC24h.&lt;br /&gt;
* Bugfix: Auftretendes Glimmen nach Anzeige eines Piktogramms eliminiert. &lt;br /&gt;
* Bugfix WC24h: Anzeige Ossi-Modus: ES IST EINE MINUTE(N) NACH NEUN.&lt;br /&gt;
* Bugfix WC24h: Nach Anzeige des Datums wurde die Uhrzeit nicht vollständig aktualisiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Date-Intervall wurde fälschlicherweise als Fireworks-Interval gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Variable Größen der Piktogramme.&lt;br /&gt;
* Sanftes Ein- und Ausblenden (Fading) der Piktogramme.&lt;br /&gt;
* Piktogramme können nun animiert werden.&lt;br /&gt;
* Neues animiertes Piktogramm &amp;quot;Feuerwerk&amp;quot; für Silvester.&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;.&lt;br /&gt;
* Anzeige des aktuellen Datums als Laufschrift.&lt;br /&gt;
* Optimiertes Auslesen des DS18xx, um Verzögerungen in der Sekundenanzeige (Ambilight Clock) zu vermeiden.&lt;br /&gt;
* UART-Ringbuffer vergrößert zwecks Stabilisierung des ESP8266-Flashvorgangs.&lt;br /&gt;
* Unterstützung von neuen Layouts für Schweizerdeutsch und Englisch (nur WC12h).&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.5 ====&lt;br /&gt;
&lt;br /&gt;
* Erkennung des (nicht existenten) externen Pullups verbessert durch Delay vor Messung.&lt;br /&gt;
* Piktogramme Heart und Xmas-Tree werden nun in einer höheren Auflösung (16x16) auf der WC24h angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Piktogrammanzeige bei automatischer Helligkeitsregelung korrigiert.&lt;br /&gt;
* Bugfix: Piktogramme werden bei Power-Off nicht mehr angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Compiler-Warnungen für SK6812-RGBW beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeigefehler von Piktogrammen auf WC24h behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeige von Piktogrammen bei gleichzeitiger Rainbow-Animation zu kurz.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ineinanderschieben von Buchstaben bei Ticker-Anzeige behoben.&lt;br /&gt;
* Bugfix: Änderungen von Weiß-Werten bei SK6812-RGBW wurden nicht mehr übernommen.&lt;br /&gt;
* Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot; eingebaut.&lt;br /&gt;
* Unterstützung für WS2812 mit Reihenfolge RGB statt GRB.&lt;br /&gt;
* Spezielle Compiler-Warnungen bei erhöhter Warnstufe beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Umschaltung auf Open-Drain-Betrieb des LED-Ausgangs bei Anbringung eines 4k7 Pullups am WS2812-Eingang zur Erhöhung des LED-Eingangspegels von 3,3V auf 5V.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Unbedingtes Aktivieren des AP-Modus durch User-Button, auch wenn der ESP wegen Hersteller-Einstellungen bereits im AP-Modus ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Regeln der weißen SK6812-RGBW-LED im Browser funktionierte in Version 2.2.1 nicht mehr.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Wenn ausschließlich das RTC-Modul zur Temperaturmessung dient, wurde auf dem Display immer fälschlicherweise 12°C ausgegeben.&lt;br /&gt;
* Bugfix: Korrekturwert für DS18XX geht nach Reboot verloren.&lt;br /&gt;
* SK6812 wird nun auch in der RGB-Variante unterstützt - nicht nur RGBW.&lt;br /&gt;
* Verbesserung der automatischen Helligkeitsregelung (Sprungverhalten bei Unterschreiten der Helligkeits-Mindestwerts).&lt;br /&gt;
* DCF77-Empfänger-Problem bei Sekunde = 50 (gleichzeitige DS18xx-Temperaturmessung) behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Die Anzeigedauer der Temperatur ist nun nicht mehr von der Dauer der Animation abhängig.&lt;br /&gt;
* Bugfix Ambilight: Nach &amp;quot;Test Display&amp;quot; wurde die ursprüngliche Helligkeit des Ambilight nicht wieder hergestellt.&lt;br /&gt;
* Bugfix AP-Mode: Durch einen Timeout bei der ESP8266-Kommmunikation wurden die Vorgabewerte fürs Web-Interface nicht übertragen.&lt;br /&gt;
* RX-Ringbuffer ESP8266 -&amp;gt; STM32 von 128 auf 256 vergrößert.&lt;br /&gt;
* Timeout-Behandlung bei der Kommunikation zwischen STM32 und ESP8266 verbessert. &lt;br /&gt;
* Web-Interface: Checkbox &amp;quot;Use display colors&amp;quot; wurde auf die Seite &amp;quot;Ambilight&amp;quot; verschoben.&lt;br /&gt;
* WC12h Bugfix: Umlaute werden in der Laufschrift immer als Großbuchstaben angezeigt.&lt;br /&gt;
* WC12h: Font zur Laufschriftanzeige durch besser lesbaren Font ersetzt.&lt;br /&gt;
* WC24h: Korrektur der Anzeige von &amp;quot;ES IST EINS UHR&amp;quot; nach &amp;quot;ES IST EIN UHR&amp;quot; in bestimmten Anzeigemodi.&lt;br /&gt;
* Bugfix SK6812: Rot und Grün vertauscht.&lt;br /&gt;
* Bugfix LDR: Nach dem Setzen eines neuen LDR-Max-Wertes wurde dieser nicht zurück an das Web-Interface übertragen und deshalb dort (bis zum nächsten Reboot) ein alter Max-Wert angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266, damit Code-Ersparnis auf dem STM32 von 14KB Flash.&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
* Optional: Laufschrift mit dem aktuellen Wetter (über openweathermap.org)&lt;br /&gt;
* Unterstützung SK6812 (optional, RGBW-LEDs)&lt;br /&gt;
* Verbesserungen bei der LDR-Umgebungshelligkeitsmessung&lt;br /&gt;
* Wegfall der Schaltfläche &amp;quot;Save all&amp;quot; im Web-Interface. Nun werden sämtliche geänderten Konfigurationsdaten sofort auch im EPROM neu gespeichert.&lt;br /&gt;
* Bugfix: DS18xx-Temperatur-Korrekturwert wurde bisher als RTC-Temperatur-Korrekturwert im EEPROM gespeichert.&lt;br /&gt;
* Bugfix: Bei der manuellen Eingabe des aktuellen Datums/Uhrzeit im Webinterface wurde das Jahr bisher als &amp;quot;Zufallszahl&amp;quot; gespeichert, wenn der ESP8266 im AP-Modus läuft, weil kein WLAN vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.7 ====&lt;br /&gt;
&lt;br /&gt;
* URL-Fehler im Web-Interface korrigiert für Rainbow-Geschwindigkeit und Temperatur-Anzeige-Intervall&lt;br /&gt;
* Fehlende Berücksichtigung der Animation-Geschwindigkeiten in &amp;quot;Random&amp;quot; eingebaut&lt;br /&gt;
* Default-Werte für einstellbare Verzögerungen der Animationen auf WC12h verdoppelt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Drop&amp;quot;&lt;br /&gt;
* Neue Animation &amp;quot;Squeeze&amp;quot;&lt;br /&gt;
* Geschwindigkeitsregler für sämtliche Animationen&lt;br /&gt;
* Angaben von Favoriten für die Animationen, die dann bei der Random-Animation ausgewählt werden sollen&lt;br /&gt;
* Geschwindigkeitsregler für Rainbow - sowohl für Display als auch für Ambilight&lt;br /&gt;
* Angabe von Temperaturkorrekturen für DS18xx als auch für RTC in Schritten von 0,5°C bei Selbsterwärmung&lt;br /&gt;
* LED-Kalibrierung durch Messen vom dunkelsten und hellsten Wert manuell im Web-Interface möglich - ungetestet!&lt;br /&gt;
* Clock und Clock2 auf dem Ambilight laufen nun je nach Einstellung in der Display-Farbe oder selbstständig in der Ambilight-Farbe&lt;br /&gt;
* Temperatur-Anzeige auf der WC12h nun nicht mehr als Laufschrift, sondern durch zwei große Ziffern auf dem Display. Wenn die Temperatur xx,5°C und nicht xx,0°C beträgt, wird das &amp;quot;standesgemäß&amp;quot; auf der WC12h durch zwei leuchtende Minuten-LEDs angezeigt. Die Anzeige der Minuten-LEDs ist ungetestet.&lt;br /&gt;
* Angabe eines Intervalls, wie oft die Temperatur automatisch eingeblendet werden soll. Bei &amp;quot;1&amp;quot; wird die Temperatur einmal pro Minute eingeblendet, nämlich immer um hh:mm:30. Bei Angabe von z.B. &amp;quot;5&amp;quot; passiert das dann halt nur noch alle 5 Minuten. Wird 0 oder nichts eingegeben, wird keine Temperatur automatisch eingeblendet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.5 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation: &amp;quot;Matrix&amp;quot;.&lt;br /&gt;
* Bugfix: Fehler in Timerfunktion am Wochenende behoben.&lt;br /&gt;
* Bugfix: Fehlerhafte Offset-Berechnung in Ambilight-Animation &amp;quot;Clock2&amp;quot; korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ambilight leuchtete im Synchronmodus in Rainbow-Animation nach Abschalten durch Timer weiter. Die LEDs werden nun komplett abgeschaltet.&lt;br /&gt;
* Bugfix: Getrennte Helligkeitssteuerung des Ambilights wurde durch Helligkeitssteuerung des Displays beeinträchtigt. Nun sind beide Helligkeiten komplett unabhängig.&lt;br /&gt;
* Bugfix: Wenn die Uhr gem. Timer aus ist, liefen einige Animationen teilweise trotzdem alle 5 Minuten. Ist nun behoben.&lt;br /&gt;
* Bugfix: Keine Webserver-Kommunikation möglich, wenn der ESP-01 im AP-Modus ist und in der RTC die Uhrzeit noch nicht initialisiert wurde. Ist nun behoben.&lt;br /&gt;
* Neu: Anzeige von Laufschriften&lt;br /&gt;
* Ambilight: Sekundenzeiger nun auch für 20 oder 30 LEDs, die Zahl der Ambilight-LEDs ist nun im Webinterface konfigurierbar.&lt;br /&gt;
* Ambilight: Neue Sekundenanzeige mit zunehmendem/abnehmendem Vollkreis.&lt;br /&gt;
* Ambilight: Sekundenzeiger-Animationen: Start-LED nun über Webinterface konfigurierbar&lt;br /&gt;
* Web-Konfiguration: Erweiterung der Schieberegler um numerische Anzeige (zwecks besserer Reproduzierfähigkeit von RGB-Werten)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: einminütiges Abschalten des Displays nach Cube-Animation behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* Um unnötige Animationen zur vollen Minute bei der WC12h zu vermeiden, wird die DCF77-Zeit nun um hh:mm:15 verzögert ausgeliefert. Timeserver-Zugriffe pendeln sich im Laufe der Zeit auf hh:mm:30 (alle 3780 Sekunden) ein, RTC-Zugriffe werden jede Minute um hh:mm:45 ausgeführt.&lt;br /&gt;
* Power-Taste auf der IR-Fernbedienung kann nun beim Anlernen als Skip-Taste verwendet werden.&lt;br /&gt;
* DCF77-Messung: Die Zeit der vorherigen Minute wird nun als zusätzliche Plausibilitätsprüfung herangezogen&lt;br /&gt;
* Snake-Animation: Es werden nun gezielt die Wörter der alten Uhrzeit &amp;quot;gefressen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.1 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration von &amp;quot;ES IST&amp;quot;-Anzeige korrigiert: nun auch jede halbe Stunde.&lt;br /&gt;
* Bugfix bei der &amp;quot;ES IST&amp;quot;-Anzeige auf WC12h: Die Anzeige wird nun 5 Minuten lang beibehalten - und nicht nur ein Minute.&lt;br /&gt;
* Bugfix: Farbanimationen bzw. Ambilight-Animationen verhinderten das Abschalten des Ambilights bei Power-Off.&lt;br /&gt;
* Umgebungs-Helligkeitsmessungen werden nun nur noch durchgeführt, wenn keine Übergangs-Animation läuft.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs nun bei Verwendung eines Nucleo-Board gleich 100, sonst 60.&lt;br /&gt;
* Power-Off-Signal, um LED-Spannungsversorgung abzuschalten, nun beim Mini-Board (STM32F103) auf Pin PB0.&lt;br /&gt;
* Fading-Effekt durch kleinere Farbänderungsschritte verstärkt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Abschalten des Ambilights bei Power-Off-Befehl funktionierte bisher nicht.&lt;br /&gt;
* Bugfix: Ein-/Ausschalten der Spannungsversorgung für LED-Stripe.&lt;br /&gt;
* Anzeige des Wortes &amp;quot;UHR&amp;quot; zur vollen Stunde hinzugefügt - dort, wo es bisher fehlte. Betrifft nur WC24h.&lt;br /&gt;
* Neue Einstellung, ob &amp;quot;ES IST&amp;quot; permanent leuchten soll oder nur zur vollen Stunde.&lt;br /&gt;
* Verbesserung der Rainbow-Animation (Dank an Ralf Hammeran).&lt;br /&gt;
* Dynamische Anpassung der automatischen Helligkeitssteuerung an die Umgebungshelligkeit (Dank an Ralf Hammeran).&lt;br /&gt;
* Neue Übergangs-Animationen: &amp;quot;Snake&amp;quot;, &amp;quot;Teletype&amp;quot; und &amp;quot;Cube&amp;quot;.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs auf 60 Stück begrenzt, siehe auch Ambilight-Modus &amp;quot;Clock&amp;quot; (umlaufende Sekundenanzeige).&lt;br /&gt;
* Neue Seite &amp;quot;Ambilight&amp;quot; in der Web-Konfiguration.&lt;br /&gt;
* Neue Einstellung, ob Ambilight-Farben synchron zu den Display-Farben angepasst werden sollen oder separat gesteuert werden sollen.&lt;br /&gt;
* Neue separate Farbauswahl und Helligkeitssteuerung für Ambilight.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Clock&amp;quot;: Umlaufende Sekundenanzeige.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Rainbow&amp;quot;: Regenbogenfarben-Animation jetzt auch im Ambilight möglich.&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Automatischer Farbwechselmodus: Rainbow&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.9 ====&lt;br /&gt;
&lt;br /&gt;
* Stellen der Uhrzeit über Web-Interface&lt;br /&gt;
* Konfiguration über Web-Interface, ob ESP8266 im AP- oder WLan-Client-Modus arbeiten soll&lt;br /&gt;
* Einstellung SSID und Key für AP-Modus&lt;br /&gt;
* Steuerung der LED-Stripe-Spannungsversorgung (ungetestet)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.8 ====&lt;br /&gt;
&lt;br /&gt;
* Für WC12h kleineren Font (5x8) für Laufschriften zwecks besserer Lesbarkeit integriert&lt;br /&gt;
* Auswertung des Temperatur-Anzeige-Kommandos per Android App (ab Version 1.7.0)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.7 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler in der Wochentagsberechnung korrigiert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.6 ====&lt;br /&gt;
&lt;br /&gt;
* Verzögerte Reaktion der Minuten-LEDs (WC12h) bei Farbwechsel behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.5 ====&lt;br /&gt;
&lt;br /&gt;
* STM32F103 Mini Development Board: Abschalten des JTAGS, um PB3 u.a. als GPIO für z.B. [[IRMP]] nutzen zu können (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.4 ====&lt;br /&gt;
&lt;br /&gt;
* Korrektur der ESP8266 Flash-Pin-Definition für das STM32F103 Mini Development Board (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix bei der Temperatur-Anzeige: Es wurde immer die DS3231-Temperatur statt der DS128xx-Temperatur gezeigt&lt;br /&gt;
* Falsche Temperatur-Anzeige im Modus &amp;quot;Temperatur&amp;quot;&lt;br /&gt;
* Bezeichnungen der Anzeigemodi für WC24 gekürzt&lt;br /&gt;
* Manuelle Aktivierung des LDRs aus Weboberfläche entfernt. LDR-Messung ist nun immer aktiv, egal ob angeschlossen oder nicht&lt;br /&gt;
* Unterstützung des DCF77-Moduls wieder eingebaut&lt;br /&gt;
* Anzahl der Nachtschaltzeiten auf 8 erhöht - unter Berücksichtigung der Wochentage&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.2 ====&lt;br /&gt;
&lt;br /&gt;
* Hangup-Problem bei Aktivieren des LDRs beseitigt&lt;br /&gt;
* Neu: Nachtschaltzeiten in der Weboberfläche&lt;br /&gt;
* Optimierung des HTML-Code-Generators&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.1 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler bei HTTP-Get-Parameter-Übergabe von Leerzeichen in SSID behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Spezielle Firmware für ESP8266-Modul, da die Espressif-Firmware zu instabil ist und zu viele Varianten existieren&lt;br /&gt;
* Kommunikationsprotokoll an neue ESP-Firmware angepasst&lt;br /&gt;
* Direktes Flashen des ESP8266 in der WordClock-Schaltung über das verwendete STM32-Board&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderung: Damit das ESP8266-Modul direkt über das STM32-Board geflasht werden kann, ist die Verbindung ESP8266-GPIO0 zu STM32 PA4 herzustellen, siehe auch: [[WordClock_mit_WS2812#Anschluss_ESP8266|Anschluss ESP8266]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* [[MCURSES]]-Monitor durch [[WordClock_mit_WS2812#Web-Interface|WEB-Server]] ersetzt&lt;br /&gt;
* Laufschriften-Ausgabe der aktuellen IP-Adresse&lt;br /&gt;
* Kleinere Änderungen/Optimierungen&lt;br /&gt;
* DCF77-Decoder mangels Interesse/Notwendigkeit entfernt&lt;br /&gt;
* Laufschriften-Ausgabe auf dem LED-Display beim Anlernen einer IR-Fernbedienung&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* WordClock12h: Anzeige der Temperatur durch Laufschrift&lt;br /&gt;
* Neue Anschlusspins für TSOP und DS18xxx am STM32F103&lt;br /&gt;
* Optimierung des WS2812-DMA-Transfers für STM32F103&lt;br /&gt;
* Temperaturmessung mit DS3231, wenn kein DS18xx angeschlossen&lt;br /&gt;
* Umstrukturierung der C-Sources&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Problem beim Verbindungsaufbau Android App -&amp;gt; WordClock behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Unterstützung der &amp;quot;klassischen&amp;quot; WordClock12h mit 10x11 LEDs&lt;br /&gt;
* Anpassung der [[MCURSES]]-Monitor-Oberfläche an WordClock12h-Variante&lt;br /&gt;
* Portierung auf STM32F103 abgeschlossen (IDE-Projekt folgt mit 1.6.2)&lt;br /&gt;
* Zusätzliche Unterstützung von neueren [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Firmware-Versionen 1.0.1, 1.4.0 und 1.5.0.&lt;br /&gt;
* Optionales [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Debugging auf zusätzlichem USART - nur für Entwickler&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.9 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0&lt;br /&gt;
* Vergrößerung der UART-FIFOs&lt;br /&gt;
* Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration&lt;br /&gt;
* Überarbeitung der [[MCURSES]]-Monitor-Oberfläche&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.8 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben&lt;br /&gt;
* Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.7 ====&lt;br /&gt;
&lt;br /&gt;
* Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx&lt;br /&gt;
* Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt&lt;br /&gt;
* Anzahl der möglichen [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.6 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#ESP8266|ESP8266]] mit neuerer Firmware, welche \r\n statt \r erwartet&lt;br /&gt;
* Unterstützung von verschiedenen Baudraten des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Automatische Umschaltung von 9600Bd auf 115200Bd beim [[WordClock_mit_WS2812#ESP8266|ESP8266]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierungen im LED-Display-Code&lt;br /&gt;
* Diverse Anpassungen an STM32F103&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart&lt;br /&gt;
* Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anzeige der Firmware-Version des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls im [[MCURSES]]-Monitor&lt;br /&gt;
* Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.1 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelle Helligkeitsregelung per [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] eingebaut&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] nun über [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] ein-/ausschaltbar&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Die geladenen aus dem [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Initialisierung des ADC korrigiert&lt;br /&gt;
* Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]]&lt;br /&gt;
* Helligkeitsstufen von 32 auf 64 erhöht&lt;br /&gt;
* LED-Testprogramm eingebaut (Taste &#039;T&#039; im [[MCURSES]]-Monitor)&lt;br /&gt;
* Anzeige des [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Typs im [[MCURSES]]-Monitor)&lt;br /&gt;
* Unterstützung für Status-LED &#039;&#039;&#039;(beachte geändertes LED-Anschluss-Schema!)&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] an 64 Helligkeitsstufen angepasst&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Sporadisches Hangup-Problem nach Auslesen der Temperatur behoben&lt;br /&gt;
* Fehler bei der Erkennung des Family-Codes für [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] beseitigt&lt;br /&gt;
* Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus&lt;br /&gt;
* Optimierung des [[WordClock_mit_WS2812#WS2812|WS2812]]-Codes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Temperatursensoren&lt;br /&gt;
* Temperatur-Anzeige innerhalb +10°C und 39,5°C&lt;br /&gt;
* Korrektur Sommerzeitumstellung&lt;br /&gt;
* Keine Unterstützung mehr von STM32F4-Discovery&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* IRMP-Konfigurationsfehler behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Animationen hinzugefügt&lt;br /&gt;
* Neue Tabellen für Uhrzeit und Temperatur&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Test auf verschiedene Adressen des I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Speicherplatzverbrauch minimiert&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]] DS3231-Routinen auf DS1307 verallgemeinert&lt;br /&gt;
* Network Listener (UDP) zum Fernsteuern der Uhr über WLAN&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9.1 ====&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Hexdump im [[MCURSES]]-Monitor eingebaut&lt;br /&gt;
* Zusätzliche Waitstates beim Beschreiben des [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzlicher Anschluss von RST und CH_PD des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Verbesserung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Konfiguration dank Hardware-Reset&lt;br /&gt;
* Nutzung des Stromsparmodus im [[WordClock_mit_WS2812#ESP8266|ESP8266]], wenn die Anzeige abgeschaltet wird&lt;br /&gt;
* Konfiguration der Zeitzone über [[MCURSES]]-Monitor&lt;br /&gt;
* Test und Überarbeitung der [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] und [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Funktionen&lt;br /&gt;
* Synchronisation der [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Zeit mit dem µC-Timer&lt;br /&gt;
* Speichern folgender Daten im [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]:&lt;br /&gt;
&lt;br /&gt;
     EEPROM-Version&lt;br /&gt;
     IRMP-Daten einer angelernten IR-Fernbedienung&lt;br /&gt;
     Aktuell eingestellte Farben und Anzeigemodus&lt;br /&gt;
     IP-Adresse des Timeservers&lt;br /&gt;
     Zeitzone&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.8 ====&lt;br /&gt;
&lt;br /&gt;
* Neue IR-Fernbedienungs-Tasten POWER und OK&lt;br /&gt;
* Einbau einer konfigurierbaren &amp;quot;Nachtzeit&amp;quot;, in der sich die Uhr selbstständig abschaltet&lt;br /&gt;
* Konfiguration des Timeservers über [[MCURSES]]-Monitor&lt;br /&gt;
* Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM&lt;br /&gt;
* Initialisierung des [[WordClock_mit_WS2812#ESP8266|ESP8266]] verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)&lt;br /&gt;
* Aufteilung der Anzeige-Logik und des [[MCURSES]]-Monitors auf dsp.c und monitor.c&lt;br /&gt;
* Aufteilung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)&lt;br /&gt;
* Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t&lt;br /&gt;
* Diverse Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7.1 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F401RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
* uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)&lt;br /&gt;
* Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)&lt;br /&gt;
* Anzeige der Online-Devices ([[WordClock_mit_WS2812#ESP8266|ESP8266]], DCF77, EEPROM, [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]) im Terminal&lt;br /&gt;
* Verschiedene Optimierungen&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration des WLAN-Moduls (SSID &amp;amp; Key) nun über Terminal statt fest im Code verdrahtet.&lt;br /&gt;
* Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.&lt;br /&gt;
* DCF77- und [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.&lt;br /&gt;
* I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97850</id>
		<title>WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WordClock_mit_WS2812&amp;diff=97850"/>
		<updated>2017-11-29T21:11:04Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* LDR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieser Artikel ist der Nachfolger der beiden Projekte [[Word_Clock]] und [[WordClock24h]]. Diese Projekte werden hier zusammengefasst und mit ein- und derselben Hard- und Software realisiert. Es ist damit der Bau einer 12-Stunden WordClock und einer minutengenauen 24-Stunden WordClock möglich.&lt;br /&gt;
&lt;br /&gt;
Um die beiden Varianten zu unterscheiden, wird die 12-Stunden-Variante im folgenden &#039;&#039;&#039;WordClock12h&#039;&#039;&#039; und die 24-Stunden-Variante &#039;&#039;&#039;WordClock24h&#039;&#039;&#039; genannt.&lt;br /&gt;
&lt;br /&gt;
Zugehöriger Thread im Forum: https://www.mikrocontroller.net/topic/385955&lt;br /&gt;
&lt;br /&gt;
Tutorial zum Aufbau der WordClock: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WordClock12h und WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Datei:wordclock-frontplatte-v2.png|400px|left|WordClock12h]] &lt;br /&gt;
|| [[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
Die Software ist sowohl auf dem STM32F401RE oder STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] als auch auf einem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] lauffähig.&lt;br /&gt;
&lt;br /&gt;
=== Features ===&lt;br /&gt;
&lt;br /&gt;
Die Software wird ständig weiterentwickelt. Folgende Punkte wurden bereits umgesetzt:&lt;br /&gt;
&lt;br /&gt;
* Lauffähig auf STM32F401 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]], STM32F411 [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]] und [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
* Anbindung eines [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls mit speziell abgestimmter Firmware&lt;br /&gt;
* WPS-Button zum schnellen Anbinden des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Moduls an das vorhandene Netzwerk&lt;br /&gt;
* Konfiguration über [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]]&lt;br /&gt;
* Holen der Uhrzeit per NTP-Protokoll aus dem Internet&lt;br /&gt;
* Fernsteuerung über IR-Fernbedienung mittels [[IRMP]]&lt;br /&gt;
* Fernsteuerung per [[WordClock_mit_WS2812#Android_App|Android App]]&lt;br /&gt;
* Einstellen des Anzeigemodus (&amp;quot;Sprache&amp;quot;), Helligkeit und der Farbe per IR-Fernbedienung/App/Web&lt;br /&gt;
* Konfigurierbare Nachtschaltzeiten - d.h. automatisches Abschalten zur Nachtzeit, separat auch für das Ambilight&lt;br /&gt;
* Einspielen von MP3-Dateien zu bestimmten Ereignissen oder zu Alarmzeiten (Wecker) über optionalen Mini-DFPlayer&lt;br /&gt;
* Anbindung von LED-Stripes des Typs [[WordClock_mit_WS2812#WS2812|WS2812]] und [[WordClock_mit_WS2812#WS2812|WS2812B]]&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs APA102&lt;br /&gt;
* Optionale Unterstützung von LED-Stripes des Typs SK6812 (RGBW-LEDs)&lt;br /&gt;
* Sanftes Überblenden der Uhrzeiten oder verschiedene Animationen bei Uhrzeitwechsel, z.B. &amp;quot;Explode&amp;quot; oder &amp;quot;Matrix&amp;quot;&lt;br /&gt;
* Farbanimationen, z.B. Automatischer Farbverlauf durch alle Regenbogenfarben (&amp;quot;Rainbow&amp;quot;)&lt;br /&gt;
* Anzeigen von teilweise animierten Piktogrammen an bestimmten Tagen wie Geburtstag/Weihnachten/Silvester etc.&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]] (optional)&lt;br /&gt;
* Anbindung einer externen DS3231-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]&lt;br /&gt;
* Anbindung eines externen I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]&lt;br /&gt;
* Optionaler Anschluss eines [[WordClock_mit_WS2812#DCF77|DCF77]]-Moduls&lt;br /&gt;
* Manuelles Stellen der Uhrzeit per [[WordClock_mit_WS2812#Web-Interface|Webserver-Interface]] oder [[WordClock_mit_WS2812#Android_App|Android App]], wenn kein Internet/DCF77 verfügbar&lt;br /&gt;
* Optionale Temperaturmessung und -Anzeige mit [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx-Sensor]]&lt;br /&gt;
* Optionale Wetteranzeige über openweathermap.org&lt;br /&gt;
* Separate Farbauswahl für Display und Ambilight&lt;br /&gt;
* Separat einschaltbares Ambilight mit auswählbaren Animationen: Keine, &amp;quot;Clock&amp;quot; (Umlaufende Sekundenanzeige) und &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
* Konfiguration einer &amp;quot;Zeitschaltuhr&amp;quot; für das Ambilight, um dieses zum Beispiel generell nachts abzuschalten&lt;br /&gt;
* Laufschriften - eigene Texte und Wettermeldungen&lt;br /&gt;
* Optionale Steuerung der Stromversorgung für die LED-Stripes&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; Einspielen von [[WordClock_mit_WS2812#Update|Updates]] für ES8266 ESP-12F und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;NEU:&#039;&#039;&#039; WCtris - Tetris Clone zum Spielen auf der Uhranzeige&lt;br /&gt;
&lt;br /&gt;
=== Geplante Features für Version 2.7.x ===&lt;br /&gt;
&lt;br /&gt;
* Änderung Programmlogik: Display-Timer soll nicht das Ambilight einschalten. Dieses geht über den Ambilight-Timer.&lt;br /&gt;
* Anzeige von Wetterdaten über Piktogramme, Einblendung automatisch zu konfigurierbaren Zeiten.&lt;br /&gt;
* Ausblenden einzelner LEDs bei animierten Piktogrammen&lt;br /&gt;
* Konfiguration der Anzeigedauer von Piktogrammen&lt;br /&gt;
* Automatische Helligkeit separat auch für Ambilight (alle Modi) - mit Offset-Regler im Vergleich zum Display&lt;br /&gt;
* Ambilight Mode Clock: Sekundenzeiger mit Fading über mehrere LEDs&lt;br /&gt;
* Ambilight Mode Clock: Farbe der 5-Sekunden-Marker einstellbar&lt;br /&gt;
* FIR-Filter für automatische Helligkeitsregelung.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Einstellung: In aktueller Displayfarbe oder in grün.&lt;br /&gt;
* Animation &amp;quot;Matrix&amp;quot;: Ausblenden der Buchstaben per Strahl, Einblenden der Buchstaben durch 2. Strahl&lt;br /&gt;
* Snake Animation frisst nicht nur die alte Uhrzeit, sondern baut die neue Uhrzeit gleichzeitig oder in 2. Durchlauf hinter sich auf&lt;br /&gt;
* Angabe eines Ausgabeformats für die Datumsanzeige&lt;br /&gt;
* Anzeige des On-/Off-Zustands im Webinterface&lt;br /&gt;
* Harlekin-Farbanimation (jeder Buchstabe hat eine eigene Farbe)&lt;br /&gt;
* Jester-Modus (1. April): Unorthodoxe Anzeige am 1. April.&lt;br /&gt;
&lt;br /&gt;
=== Weitere geplante Features ===&lt;br /&gt;
&lt;br /&gt;
* Optional: Umgekehrte Logik zur Helligkeitssteuerung des Ambilights: Bei viel Umgebungslicht Dimmen des Ambilights, bei wenig Umgebungslicht die Helligkeit des Ambilights erhöhen.&lt;br /&gt;
* Webinterface: zusätzliche Infos, z.B. Link auf Liste der Timeserver.&lt;br /&gt;
* STM32-Logbook im Web-Interface&lt;br /&gt;
* Geburtstagsreminder: An einem Geburtstag scrollt der Name und das Alter zu einer vordefinierten Uhrzeit durch.&lt;br /&gt;
* Farbe von Ambilight und Display gesteuert nach Uhrzeit (z.B. von morgens rot nach abends blau)&lt;br /&gt;
* Optimierung der Rainbow-Animation für SK6812 (Weiß)&lt;br /&gt;
* Feinere Unterscheidungen bei Änderung der Display-Helligkeit über Schieberegler (ist momentan nur bei jedem zweiten Schritt erkennbar).&lt;br /&gt;
* Neue Animation &amp;quot;Implode&amp;quot;&lt;br /&gt;
* Animation Flicker: Zunächst die alte Uhrzeit flackern lassen, dann erst die neue. Also nicht beide zusammen.&lt;br /&gt;
* Mood-Light-Funktion&lt;br /&gt;
* Hintergrundfarbe/Helligkeit für Display bzw. Ambilight&lt;br /&gt;
* Vereinfachtes Bedienkonzept für IR-Fernbedienung&lt;br /&gt;
* Spiele wie TRON, SNAKE und PONG&lt;br /&gt;
&lt;br /&gt;
=== Download ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Es ist unbedingt erforderlich, dass die passende ESP8266-Firmware zur STM32-Firmware eingespielt wird! Ältere ESP8266-Firmware-Versionen führen auf jeden Fall zu Fehlverhalten!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Regel ist dabei: Die STM32-Version muss mit der ESP8266-Firmware in den ersten beiden Ziffern A.B übereinstimmen, die dritte Ziffer C darf unterschiedlich sein.&lt;br /&gt;
&lt;br /&gt;
Aktuelle STM32-Version: &#039;&#039;&#039;2.7.0 vom 29.11.2017&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
Aktuelle ESP-Version: &#039;&#039;&#039;2.7.1 vom 29.11.2017&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ACHTUNG: Momentan kann das SVN nicht aktualisiert werden, daher sind die Sources noch auf Stand 2.6.6!&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;EmBitz-Projekt:&#039;&#039;&#039; || [https://www.mikrocontroller.net/svnbrowser/wordclock24h/?view=tar Tarball]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;SVN hier auf µc.net:&#039;&#039;&#039;|| svn://mikrocontroller.net/wordclock24h/&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Repo-Browser&#039;&#039;&#039;:|| [http://www.mikrocontroller.net/svnbrowser/wordclock24h/ WordClock24h im SVN]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Hex- und Bin-Dateien, wenn man - ohne zu compilieren - direkt flashen will:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:40%&amp;quot; | Firmware !! style=&amp;quot;width:8%&amp;quot; | Version !! style=&amp;quot;width:10%&amp;quot; | Datum !! style=&amp;quot;width:30%&amp;quot; | Datei&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock STM32 Firmware&#039;&#039;&#039; alle Varianten          || [[WordClock_mit_WS2812#STM32_WordClock_Software|2.7.0]] || 03.06.2017 || [[Datei:Wordclock-hex.zip]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-01 Firmware&#039;&#039;&#039;                          || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.0]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-512K.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;ESP8266 ESP-12F Firmware&#039;&#039;&#039;                  || &#039;&#039;&#039;[[WordClock_mit_WS2812#ESP8266_Firmware|2.7.1]]&#039;&#039;&#039; || 29.11.2017 || [[Datei:ESP-WordClock-4M.bin]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App|Android App]]&#039;&#039;&#039; || &#039;&#039;&#039;[[WordClock_mit_WS2812#Android_App_2|2.6.6]]&#039;&#039;&#039; || 15.06.2017 || [[Datei:WC24h.apk]]&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WCTris Windows-Console-Programm&#039;&#039;&#039;                  || 2.6.0 || 11.03.2017 || [[Datei:Wctris.zip]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, wird hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]&lt;br /&gt;
&lt;br /&gt;
Wie man die App unter Android installiert, kann man hier nachlesen:&lt;br /&gt;
&lt;br /&gt;
http://www.pcwelt.de/ratgeber/Android-Smartphones-Apps-ausserhalb-des-Android-Market-installieren-1929591.html&lt;br /&gt;
&lt;br /&gt;
Am einfachsten erlaubt man die Installation von Apps &amp;quot;aus unbekannten Quellen&amp;quot; und klickt anschließend direkt auf dem Android-Gerät auf den [[WordClock_mit_WS2812#Download|Download]]-Link. Dann kann man das Programm direkt nach dem Download installieren.&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Varianten ===&lt;br /&gt;
&lt;br /&gt;
Es werden folgende Hardware-Varianten unterstützt:&lt;br /&gt;
&lt;br /&gt;
* Uhrenanzeige WC24h und WC12h&lt;br /&gt;
* Mikrocontroller: STM32F103 (Mini-Development Board), STM32F401 (Nucleo) und STM32F411 (Nucleo)&lt;br /&gt;
* LED-Streifen: WS2812-GRB, WS2812-RGB, SK6812-RGB, SK6812-RGBW und APA102&lt;br /&gt;
&lt;br /&gt;
Für jede dieser Kombinationen gibt es eine spezielle Hex-Datei zum Flashen des STM32. Der Dateiname setzt sich aus den oben genannten drei Teilen zusammen.&lt;br /&gt;
&lt;br /&gt;
* 1. Teil: wc12h oder wc24h&lt;br /&gt;
* 2. Teil: stm32f103, stm32f401 oder stm32f411&lt;br /&gt;
* 3. Teil: ws2812-grb, ws2812-rgb, sk6812-rgb, sk6812-rgbw oder apa102&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich folgende Dateinamen:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Firmware Varianten&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:20%&amp;quot; | Controller || style=&amp;quot;width:30%&amp;quot; | Dateiname || style=&amp;quot;width:40%&amp;quot; | Eigenschaften&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F103&#039;&#039;&#039; || wc12h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F401&#039;&#039;&#039; || wc12h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h STM32F411&#039;&#039;&#039; || wc12h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc12h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F103&#039;&#039;&#039; || wc24h-stm32f103-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f103-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F401&#039;&#039;&#039; || wc24h-stm32f401-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f401-apa102.hex || APA RGB LEDs&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h STM32F411&#039;&#039;&#039; || wc24h-stm32f411-ws2812-grb.hex || WS2812 mit Farb-Reihenfolge GRB (&#039;&#039;&#039;Standard&#039;&#039;&#039;)&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-ws2812-rgb.hex || WS2812 mit abweichender Farb-Reihenfolge RGB&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgb.hex || SK6812 RGB ohne weiße LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-sk6812-rgbw.hex || SK6812 RGBW mit zusätzlicher weißer LED&lt;br /&gt;
|-&lt;br /&gt;
|  || wc24h-stm32f411-apa102.hex || APA RGB LEDs&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zu beachten: Die normalen WS2812-LED-Streifen benutzen die Farbreihenfolge GRB (Grün-Rot-Blau)!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Software für Windows ===&lt;br /&gt;
&lt;br /&gt;
Die Software zum Flashen des Programms:&lt;br /&gt;
&lt;br /&gt;
* ST-Link/V2 , siehe: http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168&lt;br /&gt;
&lt;br /&gt;
Alternativ kann das &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; (nicht Nucleo!) auch über UART geflashed werden. Dann braucht man keinen ST-Link und verwendet folgende Software: http://www.st.com/web/en/catalog/tools/PF257525&lt;br /&gt;
&lt;br /&gt;
Alternativer Link:&lt;br /&gt;
&lt;br /&gt;
http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html&lt;br /&gt;
&lt;br /&gt;
Zum Flashen des &#039;&#039;&#039;STM32MiniBoard&#039;&#039;&#039; über &#039;&#039;&#039;UART&#039;&#039;&#039; muss beim Einschalten des STM Boot0 über einen Jumper auf „1“ gesetzt sein. Bei Verwendung eines ESP8266-ESP12F-WLAN-Moduls ist aber der mittlere Anschluss von Boot0 schon durch eine Drahtverbindung für das OTA-Flashen belegt – deshalb wird für das Flashen ein &#039;&#039;&#039;ST-Link-Adapter&#039;&#039;&#039; über die SWD-Schnittstelle des STM32MiniBoard &#039;&#039;&#039;empfohlen&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Software für das Flashen über UART wird auch zum Aufspielen der ESP8266 Firmware des WLAN-Moduls benötigt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Möchte man die Sources selber übersetzen:&lt;br /&gt;
&lt;br /&gt;
* EmBitz IDE, siehe https://www.embitz.org/&lt;br /&gt;
&lt;br /&gt;
Möchte man die Debug- und Log-Meldungen als Entwickler oder zur Diagnose verfolgen, braucht man noch&lt;br /&gt;
&lt;br /&gt;
* STM32 Virtual COM Port Driver: http://www.st.com/web/en/catalog/tools/PF257938 für das Nucleo-Board&lt;br /&gt;
* oder einen zusätzlichen USB-UART Adapter nebst Treiber für das STM32F103 Mini Development Board&lt;br /&gt;
* PuTTY (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder andere Terminal-Emulation&lt;br /&gt;
&lt;br /&gt;
=== WordClock-Quellcode selbst übersetzen ===&lt;br /&gt;
&lt;br /&gt;
Dieser Vorgang ist nur notwendig, wenn man an den Quellen etwas ändern möchte. Im Normalfall braucht man lediglich eine der oben im [[WordClock_mit_WS2812#Download|Download]]-Kapitel angegebenen Hex-Dateien auszuwählen und diese auf den Prozessor flashen.&lt;br /&gt;
&lt;br /&gt;
Wenn man an dem Programm etwas ändern oder erweitern möchte, dann startet man die zuvor installierte EmBitz-IDE. Aus dem SVN lädt man sich den Tarball (Link siehe Kapitel [[WordClock_mit_WS2812#Download|Download]]) und entpackt diesen unter C:\EmBitzProjects.&lt;br /&gt;
&lt;br /&gt;
Nach dem Entpacken findet man dann im Unterverzeichnis wclock24h die Projekt-Datei &#039;&#039;&#039;wclock24h.ebp&#039;&#039;&#039;, um den Quellcode für ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zu compilieren. In der EmBitz-Ide kann man nun mit &#039;&#039;&#039;File -&amp;gt; Open&#039;&#039;&#039; die Projekt-Datei laden.&lt;br /&gt;
&lt;br /&gt;
Möchte man jedoch den Quellcode für das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Board]] übersetzen, dann lädt man die Projektdatei &#039;&#039;&#039;wclock24h-F103.ebp&#039;&#039;&#039; aus dem Unterverzeichnis &#039;&#039;&#039;wclock24h-F103&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Anschließend wählt man in der oberen Zeile in der Mitte das Ziel aus, wofür man den Quellcode übersetzen möchte.&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo]]-Projekt werden folgende Alternativen angeboten:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo401-Debug&lt;br /&gt;
* WC24h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC24h-Nucleo411-Debug&lt;br /&gt;
* WC24h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo401-Debug&lt;br /&gt;
* WC12h-Nucleo401-Release&lt;br /&gt;
&lt;br /&gt;
* WC12h-Nucleo411-Debug&lt;br /&gt;
* WC12h-Nucleo411-Release&lt;br /&gt;
&lt;br /&gt;
In der F103-Projektdatei können folgende Varianten ausgewählt werden:&lt;br /&gt;
&lt;br /&gt;
WC24h:&lt;br /&gt;
&lt;br /&gt;
* WC24h-STM32F103-Debug&lt;br /&gt;
* WC24h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
WC12h:&lt;br /&gt;
&lt;br /&gt;
* WC12h-STM32F103-Debug&lt;br /&gt;
* WC12h-STM32F103-Release&lt;br /&gt;
&lt;br /&gt;
Die Debug-Varianten sind lediglich für die Bugsuche im Programm vonnöten. Es empfiehlt sich daher im Normalfall, die entsprechende Release-Variante auszuwählen.&lt;br /&gt;
&lt;br /&gt;
Nach der Auswahl kann man dann unter &#039;&#039;&#039;Build -&amp;gt; Rebuild all target files&#039;&#039;&#039; den Übersetzungsvorgang starten. Danach findet man im Unterverzeichnis bin\\Release die dazugehörige Hex-Datei mit dem ST-Link-Programm dann auf dem Ziel geflasht werden kann. Das wars!&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== STM32F103C8T6 Mini-Development Board ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Dieses Board wird für die &amp;quot;klassische&amp;quot; 10x11 WordClock12h empfohlen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dies ist ein kleines, platzsparendes Board mit ausreichendem 32Bit-Mikrocontroller. Der STM32F103C8T6 hat 64 KB Flash und 20KB RAM. Bei ebay ist er für kleines Geld (unter 4 EUR) zu haben: Einfach dort nach &amp;quot;STM32F103C8T6&amp;quot; suchen. Die Anbieter sind meist in China. Aber es gibt auch Anbieter aus Deutschland, wo das bestellte Board dann auch schon nach 2 Tagen im Briefkasten steckt. Meist sind die deutschen Anbieter aber etwas teurer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Während die [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Boards]] bereits den &amp;quot;Programmer&amp;quot; ST-Link-V2 zum Programmieren des Flashs on-Board haben, ist dies hier nicht der Fall. Hier muss ein separates ST-Link-V2 zum einmaligen Programmieren verwendet werden. Hat man schon ein [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] zuhause, kann der darauf befindliche ST-Link verwendet werden. Oder man beschafft sich einen eigenen Programmer. Bei eBay erhält man sie bereits im einstelligen Euro-Bereich, wenn man nach &amp;quot;ST-Link V2&amp;quot; sucht.&lt;br /&gt;
&lt;br /&gt;
Der Vorteil dieses Boards gegenüber dem Nucleo ist der geringe Platzbedarf. Rechts sind der Anschluss eines ST-Link V2-Clones zum Flashen und die Anschluss-Skizze der WordClock an das [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] zu sehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei den Shields ab V3 für das STM32-Mini-Development Board muss noch eine Drahtbrücke eingelötet werden: Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss über eine Drahtbrücke mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:STM32F103C8T6.png|miniatur|STM32F103C8T6 Mini-Development Board]]&lt;br /&gt;
[[Datei:STM32F103C8T6 MiniDevBoard Schematic.png|mini|MiniDevBoard Schaltplan]]&lt;br /&gt;
[[Datei:STM32F103 MiniBoard STLink.jpg|mini|Flashen per ST-Link V2-Clone]]&lt;br /&gt;
[[Datei:WC_MiniDev_Shield_v4_Drahtbruecke.jpg|mini|Drahtbrücke zu BOOT0]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== STM32F401RE Nucleo und STM32F411RE Nucleo ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Es kann sowohl das 401er als auch das 411er [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] verwendet werden. Beide werden identisch genutzt.&lt;br /&gt;
&lt;br /&gt;
Damit das Board später für den Einbau nur noch (incl. Shield) 2cm hoch ist, sollte man die überstehenden Enden der Steckerleisten auf der &#039;&#039;&#039;Unterseite&#039;&#039;&#039; mit einer Kneifzange kürzen. Die beiden Jumper auf der Unterseite (beim ST-Link-Device-Teil) können dabei auf die Oberseite gesteckt werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt mittlerweile vier verschiedene Revisionen von den Nucleo-Boards:&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;MB1136 C01&amp;quot;: Der STM32F4x1 läuft nur mit dem ungenauen internen Oszillator&lt;br /&gt;
* &amp;quot;MB1136 C02 bis C04&amp;quot;: Der STM32F4x1 erhält seinen 8MHz Takt vom ST-Link-Device&lt;br /&gt;
&lt;br /&gt;
Damit auch das Board mit der Revision &amp;quot;MB1136 C01&amp;quot; zuverlässig im HSE-Modus mit 84MHz läuft, sind folgende Hardware-Änderungen notwendig:&lt;br /&gt;
&lt;br /&gt;
* Lötbrücken SB54 und SB55 entfernen (mit Lötkolben erhitzen und wegschnippen)&lt;br /&gt;
* Lötbrücken SB16 und SB50 entfernen (dito)&lt;br /&gt;
* R35 und R37 jeweils mit einem Stück Draht oder 0R-Widerstand bestücken&lt;br /&gt;
* Quarz X3 (8 MHz) einlöten&lt;br /&gt;
* C33 und C34 mit jeweils 22pF bestücken.&lt;br /&gt;
&lt;br /&gt;
C33 und C34 können auch normale THT-Bauteile sein, wenn man die Drähte vorher kürzt. Ich habe sie auf der Unterseite direkt an den Quarz-Anschlüssen angebracht und mit einem Draht zu CN6, Pin7 (GND) die nötige Masseverbindung hergestellt, siehe Foto rechts. &lt;br /&gt;
&lt;br /&gt;
Es geht aber auch auf der Oberseite direkt an den dafür vorgesehenen Lötstellen - dann aber vorzugsweise mit 0603 SMD-Kondensatoren. In diesem Falle ist die Masseverbindung bereits im PCB Layout vorhanden und die Drahtbrücke nach CN6, Pin7 (GND) entfällt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Man sollte auf jeden Fall erst die beiden Drahtbrücken R35 &amp;amp; R37 einlöten, bevor man den Quarz bestückt. Dann hat man wesentlich mehr Platz für den Lötkolben ;-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es empfiehlt sich jedoch, diese Änderungen auch mit dem Board der Revision &amp;quot;MB1136 C02&amp;quot; und höher durchzuführen, da wir später für die endgültige Uhr den ST-Link-Teil der Platine absägen werden. Dafür ist extra eine Bruchstelle vorgesehen. Nur so ist das Board dann schmal genug, damit es hinter den 7,5cm schmalen Rand der Frontplatte passt.&lt;br /&gt;
&lt;br /&gt;
Nicht wundern: Je nach Revision des Boards sind einige der oben genannten Lötbrücken erst gar nicht bestückt. Dann braucht da auch nichts entfernt zu werden. Das hier beschriebene stellt also den gewünschten Endzustand dar.&lt;br /&gt;
&lt;br /&gt;
Diese Arbeit ist in ca. 10 Minuten erledigt. Besondere SMD-Lötkenntnisse benötigt man dafür nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das Board (nach dem Abtrennen des ST-Link) über die Stiftleiste mit Spannung versorgt werden kann (z.B. durch das Nucleo-Shield), muss &amp;quot;JP5&amp;quot; noch von &amp;quot;U5V&amp;quot; auf &amp;quot;E5V&amp;quot; umgesteckt werden.&lt;br /&gt;
(Zusätzlich auf dem ST-Link &amp;quot;JP1&amp;quot; entfernen, falls noch nicht abgetrennt.)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bevor man den ST-Link-Teil abtrennt&#039;&#039;&#039;, sollte man den &#039;&#039;&#039;STM32F4xx und das ESP8266-Modul flashen&#039;&#039;&#039; und auch testen. Nach dem Abtrennen werden dann Updates über OTA geflasht.&lt;br /&gt;
|| [[Datei:WC24h-Nucleo-Oberseite.jpg|miniatur|Nucleo: Zusätzliche Drahtbrücken R35 + R37 + 8MHz Quarz]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Unterseite.jpg|miniatur|Nucleo: Zu entfernende Lötbrücken + anzulötende 22pf Kondensatoren]]&lt;br /&gt;
[[Datei:WC24h-Nucleo-Shield.jpg|miniatur|Prototyp-Shield für das Nucleo-Board mit TSOP, ESP8266 und 3,3V Spannungsregler, später noch Anschluss für EEPROM/RTC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TSOP31238 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zum optionalen Steuern per IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32F411_Nucleo_Board|Nucleo-Shield]]:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an GND, TSOP-Pin2 an 3V3, TSOP-Pin3 an Data&lt;br /&gt;
&lt;br /&gt;
Dabei wird zusätzlich ein Tiefpassfilter (C/R) - wie auch im Datenblatt angegeben - verwendet.&lt;br /&gt;
 &lt;br /&gt;
Es kann auch der kleinere Bruder TSOP4838 angeschlossen werden. Dieser hat den Vorteil, dass er besser hinter einem &amp;quot;Loch&amp;quot; im Zwischenboden untergebracht werden kann, weil er einfach vom Gehäuse her kleiner ist. Allerdings ist dann die Anschlussreihenfolge anders:&lt;br /&gt;
&lt;br /&gt;
   TSOP-Pin1 an DATA, TSOP-Pin2 an GND, TSOP-Pin3 an 3V3&lt;br /&gt;
&lt;br /&gt;
Der TSOP4838 kann also nicht direkt 1:1 an einem der beiden Shields angeschlossen werden. Da aber sowieso ein 3-poliges Kabel an die Pin-Header geführt wird, sollte das kein Problem sein.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP.png|miniatur|Schaltplan]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP.png|miniatur|Anschluß des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Wird kein IRMP-Empfänger benutzt, sollte R5 (siehe Schaltplan rechts) mit 100k Ohm statt 100 Ohm auf dem Shield bestückt werden. Der zum Tiefpass gehörende Kondensator C1 entfällt dann. Zwischen den Pins 3V3 und Data wird schlussendlich eine Drahtbrücke eingelötet, um einen stabilen Zustand am Daten-Pin des µCs zu gewährleisten.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-TSOP-Ersatz.png|miniatur|Ersatz des TSOP31238 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Ab der Shield Version 4 wird ohne TSOP R5/C1 nicht bestückt und stattdessen R15 (NucleoShield) bzw R16 (MiniDevShield) mit 100k bestückt. Damit wir ein stabilen Zustand am Daten-Pin des µCs gewährleistet.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:TSOP_v4.png|miniatur|Ersatz TSOP]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WS2812 ==&lt;br /&gt;
Bei der WordClock24h wird eine 16x18-Matrix verwendet plus eine Status LED, bei der WordClock12h eine 10x11-Matrix plus 4 Stück Minuten LED.&lt;br /&gt;
&lt;br /&gt;
Die [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs werden dabei folgendermaßen verdrahtet:&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock12h ====&lt;br /&gt;
&lt;br /&gt;
Hier wird eine Spezialanfertigung von WS2812-Stripes eingesetzt - nämlich mit einem Rastermaß von 28,1mm. Damit ist die WordClock12h von den Maßen her kompatibel zum bisherigen [[Word_Clock]]-Projekt. Das hat den Vorteil, dass bisherige Frontplatten und Zwischenböden weiterverwendet werden können.&lt;br /&gt;
&lt;br /&gt;
Bei der Wordclock12h steht jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;. Folgende Zeichnung ist von der Vorderseite der Uhr aus gesehen, beim Verkabeln von Hinten muss man es natürlich gedanklich umdrehen.&lt;br /&gt;
&lt;br /&gt;
          M4                                                    M1&lt;br /&gt;
           O---------+              µC Data --------------------O&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         1  2  3  4  ...              11            |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |                                          |         |&lt;br /&gt;
           |        22                            12  |         |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--+         |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         |                                          |&lt;br /&gt;
           |         O--O--O--O--O--O--O--O--O--O--O--          |&lt;br /&gt;
           |       23 24 ....                                   |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           |                                                    |&lt;br /&gt;
           O----------------------------------------------------O&lt;br /&gt;
          M3                                                    M2&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Dabei sind M1-M4 die 4 Minutenpunkte in den Ecken. Es wird keine Status-LED wie bei der WordClock24 verwendet. Tatsächlich werden hier dafür die Minutenpunkte zur zusätzlichen Statusausgabe mitbenutzt.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board und beim STM32-Mini-Board werden bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt (ab Software-Version 2.6.6). Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 114 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
|| [[Datei:LEDS-Datakabel.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Anschluss WS2812-Streifen für WordClock24h ====&lt;br /&gt;
Verwendet werden Standard-WS2812-Stripes mit &#039;&#039;&#039;60 LEDs pro Meter&#039;&#039;&#039;. Dabei steht - wie bei der WC12h - jeder zweite Streifen &amp;quot;auf dem Kopf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
               +-------------------------------------------------------+&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               1  2  3  4  ...                              18         |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
                                                               |       |&lt;br /&gt;
               36                                       20  19 |       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               |                                                       |&lt;br /&gt;
               O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--        |&lt;br /&gt;
              37 38 ....                                               |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                                                       |&lt;br /&gt;
                                  Status-LED                           |&lt;br /&gt;
  µC Data -----------------------------O-------------------------------+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch für die WC24h gilt: Beim (für die WC24 primär empfohlenen) Nucleo-Board und beim (ebenfalls für die WC24h nutzbaren) STM32-Mini-Board werden ab Software-Version 2.6.6 bis zu 120 weitere LEDs als Ambilight hinter der Buchstabenkette unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Am besten unten links beginnend (da ist man mit LED 289 ja eh) und dann im Uhrzeigersinn. Die Anzahl der Ambilight-LEDs ist variabel, maximal 120 sind möglich. Wegen des Ambilight-Modus&#039; &amp;quot;Clock&amp;quot; (ab Software-Version 2.0.0) sind exakt 60 LEDs als Ambilight sinnvoll - auf jeder Seite 15. Dann können diese nämlich zur Sekunden-Anzeige verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Die zusätzlichen Ambilight LED müssen bei der Dimensionierung des Netzteils berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
==== WS2812-Anschlüsse am Shield ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Der DI-Eingang des LED-Streifens wird per möglichst kurzem Kabel am WS2812-Pin des Shields verbunden, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
In seltenen Fällen kommen die WS2812-LEDs mit einem 3,3V-Pegel an ihrem Eingang nicht zurecht. Die Folge sind dann Falsch-Farben bzw. Ausfälle bei einzelnen LEDs. Für diesen Fall ist auf den Shields ab Version v3 zwischen DI und 5V ein 1k8 Pullup-Widerstand angebracht. Die STM32-Software erkennt beim Boot den Pullup-Widerstand automatisch und schaltet dann den Daten-Ausgang auf Open-Drain-Betrieb um. Damit ist dann der High-Pegel an der ersten angeschlossenen LED nahezu 5V statt 3,3V.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812.png|miniatur|Data Anschluss WS2812 auf Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Jede zweite Reihe (1., 3., 5. usw.) der Streifen wird per Flachbandkabel an die Spannungsversorgung der WS2812-Streifen angeschlossen. Dafür dient der Flachbandkabel-Stecker auf dem Shield. Hier werden 16 mal jeweils +5V und GND zur Verfügung gestellt, siehe nebenstehendes Bild.&lt;br /&gt;
Die 1 und damit die obere Reihe ist 5V, die 2 und damit untere Reihe GND.&lt;br /&gt;
Werden zusätzlich Ambilight LED verwendet, wird ebenfalls jede Seite separat an die Spannungsversorgung angeschlossen um den Spannungsabfall entgegenzuwirken.&lt;br /&gt;
&lt;br /&gt;
Bei der WC12 können dazu die 6 noch freien Pin Pärchen des Pfostensteckers genutzt werden. Bei der WC24h muss die Spannung anderweitig abgegriffen werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-WS2812-Power.png|miniatur|Spannungsversorgung der WS2812 auf dem Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DS18xx ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Optional:&#039;&#039;&#039; [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] als Temperatur-Sensor&lt;br /&gt;
&lt;br /&gt;
Es werden unterstützt:&lt;br /&gt;
&lt;br /&gt;
* DS1820&lt;br /&gt;
* DS18S20&lt;br /&gt;
* DS1822&lt;br /&gt;
* DS18B20&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DS18xx-GND (Pin 1) an GND&lt;br /&gt;
* DS18xx-DQ  (Pin 2) an B5 (Mini) bzw. D2 (Nucleo)&lt;br /&gt;
* DS18xx-VDD (Pin 3) an 3V3&lt;br /&gt;
&lt;br /&gt;
Ein 4,7k Pullup-Widerstand ist zum sicheren Betrieb des One-Wire-Busses auf den Shields vorgesehen. &lt;br /&gt;
Der DS18xx sollte nicht in der Nähe von Wärmequellen angebracht werden, am besten also nicht direkt an das Shield löten, sondern in der unteren Tasche des Zwischenbodens anbringen. Die Litze am DS18XX dabei, z.B. mit Hilfe von Schrumpfschlauch, isolieren, damit es nicht zum Kurzschluss am Kühlkörper kommen kann.&lt;br /&gt;
Weiterhin wird aufgrund der geringen Eigenerwärmung der DS18XX Sensoren empfohlen, den Sensor mit Wärmeleitpad/-kleber auf ein kleines Kühlblech zu kleben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ist kein DS18xx Temperatur-Sensor angeschlossen, wird die Temperatur über die RTC (DS3231) ermittelt.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DS1820.png|miniatur|DS1820 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Mini-DFPlayer ==&lt;br /&gt;
&lt;br /&gt;
Mit dem optionalen Mini-DFPlayer können als Reaktion auf bestimmte Ereignisse oder zu bestimmten Uhrzeiten MP3-Dateien abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nucleo:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB6 (STM324xx TX ALT1)&lt;br /&gt;
* DFPlayer TX an PB7 (STM324xx RX ALT1)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mini-Shield:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* DFPlayer RX an PB10 (STM32F103 TX)&lt;br /&gt;
* DFPlayer TX an PB11 (STM32F103 RX)&lt;br /&gt;
* DFPlayer Vcc an 5V&lt;br /&gt;
* DFPlayer GND an GND&lt;br /&gt;
&lt;br /&gt;
Es gibt diverse Quellen im Internet, welche aussagen, dass eine Betriebsspannung von 4,3V wegen des Klangs sinnvoller wäre. Das kann man mit einer Si-Diode in der Zuleitung lösen.&lt;br /&gt;
&lt;br /&gt;
Siehe dazu auch: http://stonez56.blogspot.de/2015/03/arduino-dfplayer-mini-mp3-module.html&lt;br /&gt;
&lt;br /&gt;
Weitere Infos: &#039;&#039;&#039;[[WordClock_mit_WS2812#DFPlayer|Konfiguration DFPlayer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== LDR ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: Fotowiderstand (LDR) zur Lichtstärkenmessung, welche die Leuchtstärke der LEDs in Abhängigkeit des Umgebungslichtes automatisch steuert.&lt;br /&gt;
&lt;br /&gt;
Als LDR sollte der LDR07 von Reichelt, ggf. der Ersatz &amp;quot;A 906011&amp;quot; verwendet werden. Wird noch der zwischenzeitlich empfohlene &amp;quot;A 906032&amp;quot; von Reichelt eingesetzt, ist R1 = 10K besser.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird kein [[WordClock_mit_WS2812#LDR|LDR]] benutzt, muss auf dem Shield der 10k-Pullup (R2) eingelötet werden, R1 wird dann nicht bestückt.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wird der LDR benutzt, darf der Widerstand R2 nicht eingelötet werden!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-LDR.png|miniatur|Schaltplan LDR am Mini-Shield]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-LDR.png|miniatur|LDR-Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== DCF77 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Optional&#039;&#039;&#039;: DCF77 Modul&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* DCF77 GND an GND&lt;br /&gt;
* DCF77 V+ an 3,3V&lt;br /&gt;
* DCF77 Out an Data&lt;br /&gt;
* DCF77 PON an PON&lt;br /&gt;
&lt;br /&gt;
Getestet wurde die Software mit dem Reichelt-DCF77-Modul, das aber lediglich ein befriedigendes Empfangsverhalten hat. PON kann beim Reichelt-Modul offen bleiben, beim Pollin DFCF77-1 sollte man PON jedoch anschließen.&lt;br /&gt;
&lt;br /&gt;
Wird ein DCF77-Modul benutzt, welches einen Open-Collector-Ausgang verwendet, muss an Data noch ein 100k Pullup (zu 3,3V) angeschlossen werden.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-DCF77.png|miniatur|DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Wird KEIN DCF-Modul verwendet, muss der 100k Widerstand R3 eingelötet werden, um den µC-Eingang auf stabilem Niveau zu halten - aber nur dann! Die sonstigen Komponenten auf dem nebenstehenden Schaltplan entfallen ersatzlos.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-DCF77.png|miniatur|Schaltplan DCF77 am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ESP8266 ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Ab der Software-Version 2.5.0 ist das Aktualisieren der ESP- und STM32-Firmware auch über OTA (&amp;quot;over the air&amp;quot;, also WLAN) möglich. Damit entfällt ein erneutes Anschließen der Uhr an entsprechende Programmiergeräte bei einem Update. Allerdings müssen dafür die bisher eingesetzten ESP8266 ESP-01 durch ein ESP-12F ersetzt werden. Deshalb wird generell ab der Version v3 der Nucleo- bzw. Mini-Shields das ESP8266 ESP-12F Modul statt ESP-01 verwendet. &lt;br /&gt;
&lt;br /&gt;
Es werden nun 2 USARTs vom STM32 benutzt: Das erste für die Kommunikation der beiden µCs zum Datenaustausch, das zweite zum Flashen des STM32 über OTA. Die Bedienung von 2 USARTs des STM32 geschieht durch eine Software-Umschaltung der ESP-UART-Pins.&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Nucleo-Shield-ESP-12F.png|180x128px|miniatur|ESP-12F an Nucleo-Shield]]&lt;br /&gt;
|| [[Datei:WC-Schaltplan-Mini-Shield-ESP-12F.png|187x122px|miniatur|ESP-12F an Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== User-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Die User-Taste wird für mehrere Funktionen genutzt.&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist sie bereits vorhanden. Sie ist blau und mit &amp;quot;User&amp;quot; beschriftet. Wird das Mini-Development-Board benutzt, ist die Taste auf dem dazugehörenden Shield (ab v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] ist die Taste nicht vorhanden, sondern lediglich als Jumper-Pin mit der Bezeichnung &amp;quot;Flash&amp;quot; (PA6) vorhanden. Hier kann man entweder eine Taste anschließen oder mit einem Jumper den Flash-Pin mit dem danebenliegenden Pin &amp;quot;GND&amp;quot; kurzschließen, was derselben Funktion entspricht.&lt;br /&gt;
&lt;br /&gt;
Die User-Taste wird für zwei Fälle benutzt:&lt;br /&gt;
&lt;br /&gt;
* Im Reset-Zustand des STM32 zum Flashen des ESP8266 über UART&lt;br /&gt;
* Im Betriebszustand zum Versetzen des ESP8266 in den AP-Modus mit SSID &amp;quot;wordclock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Diese beiden Funktionen werden in den Kapiteln &#039;&#039;&#039;[[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Flash des WLAN-Moduls]]&#039;&#039;&#039; und &#039;&#039;&#039;[[WordClock_mit_WS2812#Start_als_Access-Point|Start als Access-Point]]&#039;&#039;&#039; näher erläutert.&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== WPS-Taste ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ab Software-Version 2.6.0 wird auch WPS unterstützt. Dann kann die Verbindung des ESP8266 über diese Taste vorgenommen werden. Ab der Shield-Version v3 ist dafür eine eigene Taste auf den Shields vorgesehen. Ältere Shields kann man aber auch nachrüsten.&lt;br /&gt;
&lt;br /&gt;
Dazu schließt man an:&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|STM32F4xx Nucleo]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PC5&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103C8T6 Mini-Development Board]]:&lt;br /&gt;
&lt;br /&gt;
* Taste Pin1 an GND&lt;br /&gt;
* Taste Pin2 an PA7&lt;br /&gt;
&lt;br /&gt;
Wie dann die Verbindung zum WLAN-Gateway aufgebaut wird, ist hier beschrieben: [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]].&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-User-WPS.png|miniatur|User- und WPS-Taste]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== RTC und EEPROM ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
I2C-Modul mit DS3231 als RTC und EEPROM&lt;br /&gt;
&lt;br /&gt;
Dieses Modul (siehe auch Foto rechts) findet man bei eBay oder Amazon ab ca. 2 EUR, wenn man als Suchbegriff &amp;quot;DS3231 EEPROM&amp;quot; eingibt. Es wird als Echtzeituhr und für die Speicherung der Konfigurationsparameter verwendet. Ist kein DS18xx als Temperatursensor angeschlossen, wird die RTC auch zur Temperaturmessung genutzt.&lt;br /&gt;
&lt;br /&gt;
Anschlüsse am Shield:&lt;br /&gt;
&lt;br /&gt;
* 32K Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SQW Anschluss auf Pin-Header, z. Z. nicht beschaltet&lt;br /&gt;
* SCL an SCL&lt;br /&gt;
* SDA an SDA&lt;br /&gt;
* VCC an 3V3&lt;br /&gt;
* GND an GND&lt;br /&gt;
&lt;br /&gt;
Von der Software werden auch ältere [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC/EEPROM]]-Module mit DS1307 erkannt, dennoch sollte man aus Kompatibilitätsgründen auf die Verwendung dieser älteren Module verzichten.&lt;br /&gt;
&lt;br /&gt;
Da die Module aus China teilweise auch ohne bestückte Batterien gesendet werden, sollte man sich&lt;br /&gt;
genau überlegen, ob man die Batterie CR2032 oder den Akku LiR2032 einbaut.&lt;br /&gt;
      &lt;br /&gt;
Sind sowohl die Diode 1N4148 als auch der Widerstand neben dem [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-IC bestückt, dann kann man auch den Akku (relativ teuren) LiR2032 einsetzen. In diesem Fall muss das Modul aber mit +5V statt 3,3V betreiben, damit der Akku überhaupt geladen wird. Sonst ist er aufgrund der Selbstendladung irgendwann leer.&lt;br /&gt;
&lt;br /&gt;
Sinnvollerweise sollte man das Modul eher mit einer CR2032 Batterie betreiben. &#039;&#039;&#039;Dann sollte man aber sicherheitshalber die Diode oder den Widerstand (neben der Diode) auf dem Modul entfernen (falls vorhanden, siehe Bild), damit keine Ladung (und Überhitzung) der Batterie passiert&#039;&#039;&#039;. Das ist zwar eigentlich erst ab einer Betriebsspannung von ca. 3,7V möglich, aber sicher ist sicher. Im Normalfall reicht eine CR2032 Batterie für 5-10 Jahre.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h-DS3231-EEPROM.png|miniatur|DS3231 RTC + EEPROM]]&lt;br /&gt;
 [[Datei:WC-Mini-Shield-I2C.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AMS1117-3,3V-Spannungsregler-Modul ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur 3,3V-Versorgung des ESP8266-WLAN- Moduls sowie weiterer Peripherie wird ein AMS1117-3,3V-Spannungsregler-Modul eingesetzt. Die Shields aus der Sammelbestellung sind für die Spannungsregler-Module wie in der Abbildung rechts ausgelegt. Beispiele für Bezugsquellen sind in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt.&lt;br /&gt;
&lt;br /&gt;
Die leuchtende rote LED (D1) zeigt an, das die Ausgangsspannung von 3,3V vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:AMS1117-Spannungsregler-Modul.jpg|miniatur|AMS1117-Spannungsregler-Modul]]&lt;br /&gt;
|| [[Datei:WC-Mini-Shield-AMS1117.png|miniatur|Anschluss am Mini-Shield]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Schalten der 5V-Versorgungsspannung für die LED-Stripes ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Beim Abschalten der LED-Stripes kann neben den Daten, wenn gewünscht, auch die 5V-Versorgungsspannung abgeschaltet werden. Je nach Zahl des LEDs sinkt der Verbrauch um 1 W bis 2 W (--&amp;gt; ca. 3 - 5 EUR im Jahr). Ansonsten wird dem Controller auf den WS2812 nur mitgeteilt, dass gerade alle Kanäle aus sein sollen.&lt;br /&gt;
&lt;br /&gt;
Die Abschaltung der Versorgungsspannung erfolgt dann mit Hilfe der im Schaltplanauszug rechts gezeigten Bauteile. Die Diode begrenzt die Spannung an D IN auf 0,3 V, falls bei abgeschalteter Versorgungsspannung Datenimpulse anliegen – das wird auch durch die Software verhindert. &lt;br /&gt;
&lt;br /&gt;
Ab V3 der Shields muss bei Nichtverwendung der Spannungsabschaltung eine Drahtbrücke eingelötet werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WS2818_Schalten_1.png|miniatur|Schaltplanauszug: Schalten Versorgungsspannung]]&lt;br /&gt;
 |}&lt;br /&gt;
&lt;br /&gt;
== Netzteil ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Zur Spannungsversorgung der WordClock wird ein (Stecker-)Netzteil mit einer Ausgangsspannung von 5V und einer Belastbarkeit von 4A benötigt. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel ist in der [[WordClock_mit_WS2812#Teileliste_f.C3.BCr_WC12h_oder_WC24h_und_Bezugsquellen|Teileliste]] aufgeführt – vergleichbare Netzteile anderer Lieferanten wie eBay oder AliExpress usw. können ebenfalls verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Wichtig ist, schon vor der Inbetriebnahme der WordClock die Ausgangsspannung des Netzteils zu messen, da in seltenen Fällen die Ausgangsspannung des Netzteils höher ist als die für die WS2812B-LEDs maximal zulässige Spannung von 5,3V.&lt;br /&gt;
&lt;br /&gt;
Für eine Wordclock12h ohne Ambilight reicht ein Netzteil mit einer Belastbarkeit von 2A.&lt;br /&gt;
&lt;br /&gt;
Der Querschnitt der Verkabelung vom Netzteil zur WordClock ist so zu wählen, dass an den Anschlussklemmen des Shields auch bei angeschalteten LEDs eine Spannung von mindestens 4,75V anliegt. &lt;br /&gt;
&lt;br /&gt;
Bei einer WordClock12h ohne Ambilight und einer Kabellänge 2m reicht ein Querschnitt von 2x0,5mm². &lt;br /&gt;
&lt;br /&gt;
Der für eine WordClock24h, ggf. mit Ambilight, notwendige Querschnitt kann mit einem Tool wie z. B.&lt;br /&gt;
 &lt;br /&gt;
https://www.opendcc.de/info/verdrahtung/wiring.html &lt;br /&gt;
&lt;br /&gt;
abgeschätzt werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wer nicht über entsprechende Kenntnisse und Erfahrungen im Umgang mit 230V-Netzspannung verfügt, sollte unbedingt ein Stecker- oder Tischnetzteil verwenden.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschluss USB-UART-Adapter ==&lt;br /&gt;
&lt;br /&gt;
Man benötigt in folgenden Fällen einen USB-UART-Adapter:&lt;br /&gt;
&lt;br /&gt;
* Logging der Meldungen auf dem PC&lt;br /&gt;
* Flashen des ESP8266 über das verwendete STM32-Board&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo ist ein USB-UART-Adapter bereits integriert - und zwar im oberen ST-Link-V2-Teil des Boards. Hier ist also kein weiterer Anschluss notwendig. Erst wenn das ST-Link-V2-Teil vom Rest des Boards abgetrennt wird, müssen RX und TX wieder verbunden werden, wenn man den UART-Adapter nutzen will. Also einfach das Board mit dem PC über USB verbinden - fertig. Eventuell muss man noch den STM32 Virtual COM Port Driver installieren. Der entsprechende Link zum Herunterladen steht unter [[WordClock_mit_WS2812#Download|Download]].&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board wird ein externer USB-UART-Adapter benötigt. Dabei schließt man ihn folgendermaßen an:&lt;br /&gt;
&lt;br /&gt;
* USB-UART TX an PA10 (RX)&lt;br /&gt;
* USB-UART RX an PA9 (TX)&lt;br /&gt;
* UAB-UART GND an GND&lt;br /&gt;
&lt;br /&gt;
Solche Adapter (am besten einen, der mit 3,3V-Pegeln arbeitet) gibt es bei eBay oder Amazon für unter 5 EUR. &amp;lt;br /&amp;gt;&lt;br /&gt;
Bei USB-UART-Adaptern mit FTDI-Chip oder Prolific PL2303-Chip sind Fakes im Handel, die von der Original-Treibersoftware nicht korrekt unterstützt werden. &#039;&#039;&#039;Besser sind Adapter mit CH340G- oder CP2102-Chip.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Anschlusstabelle ==&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Anschlüsse&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Device || [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] || [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#TSOP31238|TSOP31238]] ([[IRMP]])  || GPIO:   PC10               || GPIO:   PB3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]       || GPIO:   PD2                || GPIO:   PB5&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#LDR|LDR]]                         || GPIO:   PC4                || GPIO:   PA5&lt;br /&gt;
|- &lt;br /&gt;
| WordClock-Logger (USB)                                   || USART2: TX=PA2  RX=PA3 (bereits integriert)    || USART1: TX=PA9  RX=PA10 (externer USB-UART-Adapter)&lt;br /&gt;
|- &lt;br /&gt;
| User Button  || GPIO: USER=PC13 (on-board)               || GPIO: USER=PA6 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| WPS Button  || GPIO: WPS=PC5  (auf dem Shield ab v3)     || GPIO: WPS=PA7 (auf dem Shield ab v3)&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] Rx/Tx       || USART6: TX=PA11 RX=PA12        || USART2: TX=PA2  RX=PA3&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] RST/CH_PD   || GPIO:   RST=PA7 CH_PD=PA6      || GPIO:   RST=PA0 CH_PD=PA1&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO0       || GPIO:   GPIO0=PA4              || GPIO: GPIO0=PA4&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#ESP8266|ESP8266]] GPIO13/15   || USART1: GPIO13=PA9 GPIO15=PA10 || USART1: GPIO13=PA9 GPIO15=PA10&lt;br /&gt;
|- &lt;br /&gt;
| [[WordClock_mit_WS2812#DCF77|DCF77]]                 || GPIO:   DATA=PC11 PON=PC12     || GPIO:   DATA=PB8  PON=PB9 &lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC / EEPROM]] || I2C3:   SCL=PA8 SDA=PC9        || I2C1:   SCL=PB6 SDA=PB7&lt;br /&gt;
|-&lt;br /&gt;
| [[WordClock_mit_WS2812#WS2812|WS2812]]               || DMA1:   PC6                    || DMA1:   PA8&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 Power On/Off                                  || PC8                            || PB0&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Auf dem Nucleo-Board ist USART2 bereits fest mit dem auf dem ST-Link-V2-Teil des Boards integrierten UART-USB-Adapter verbunden. Hier sind also keine extra Verbindungen mehr notwendig - erst wenn das ST-Link-V2-Teil abgesägt wird. Und auch dann kann man den USB-UART-Adapter vom ST-Link-V2 weiterverwenden.&lt;br /&gt;
&lt;br /&gt;
Beim Mini-Development Board benötigt man allerdings einen externen USB-UART-Adapter - am besten einen, der mit 3,3V-Pegeln arbeitet. Diese findet man zuhauf bei Amazon oder eBay für ca. 5 EUR.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Teileliste für WC12h oder WC24h und Bezugsquellen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:35%&amp;quot; | Bezeichnung || Bezugsquelle&lt;br /&gt;
|-&lt;br /&gt;
| Board&lt;br /&gt;
||  &lt;br /&gt;
STM32 MiniBoard (empfohlen für WC12h)&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=STM32F103C8T6 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F103C8T6 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/STM32F103C8T6-Minimum-System-Board Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;oder&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
STM32 Nucleo&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=nucleo AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=STM32F411%20Nucleo eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/Nucleo-STM32F411 Watterott]&lt;br /&gt;
|-&lt;br /&gt;
| USB-UART-Adapter - NUR für Logging und (erstmaliges) Flashen des ESP8266-Moduls am MiniDevBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://de.aliexpress.com/wholesale?SearchText=uart+CH340G AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=USB%20UART%20Adapter eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 ST-Link - NUR für MiniBoard notwendig&lt;br /&gt;
||&amp;lt;br&amp;gt;&lt;br /&gt;
Prinzipiell reicht USB-UART-Adapter aus aber ein ST-Link wird zusätzlich empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=st-link+v2 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| STM32 MiniBoard Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für MiniBoard notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Das per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Shield enthält sämtliche Anschlüsse um alle benötigten Module mit einander zu verbinden. Der STM32F103 wird direkt in das Shield gesteckt und verlötet - er wird nicht gesockelt!&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321201 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| STM32 Nucleo Shield v3 OTA&amp;lt;br&amp;gt;&#039;&#039;&#039;NUR für Nucleo-Board notwendig&#039;&#039;&#039;&lt;br /&gt;
||&amp;lt;br&amp;gt;Diese per [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältliche Adapterplatine wird auf das Nucleo-Board aufgesteckt. Sie enthält sämtliche Anschlüsse für alle vorgesehen Module.&amp;lt;br&amp;gt;&lt;br /&gt;
Die zusätzlich für den Aufbau des Shield benötigten Komponenten sind in einem Reichelt Warenkorb zusammengefasst:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321193 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne IRMP (TSOP31238) wird folgender Widerstand als PullUp empfohlen:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne DCF wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1337;SEARCH=1/4w%20100k Reichelt Widerstand 100 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;ohne LDR wird folgender Widerstand als PullUp benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/?ACTION=3;ARTICLE=1338;SEARCH=1/4w%2010k Reichelt Widerstand 10 kOhm]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&#039;&#039;&#039;Bitte auch die optionalen Warenkörbe / Teileliste am Ende dieser Tabelle beachten!&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| WS2812 LED Stripes &lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Stripes mit einem Sonderformat über die [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h können Standard Stiles mit 60 LEDs / Meter verwendet werden.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ws2812+60+ip30 AliExpress]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=WS2812%2060%20ip30 eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Frontplatte&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h sind Frontplatten über eine Sammelbestellung aus [[WordClock_mit_WS2812#WC12h_Sammelbestellung_Frontplatten | Plexiglas ]] oder [[Word_Clock#Sammelbestellung_.28Edelstahl.29 | Edelstahl]] erhältlich.&amp;lt;br&amp;gt;&lt;br /&gt;
Für die WC24h gibt es eine Sammelbestellung von Frontplatten aus &lt;br /&gt;
[[WordClock_mit_WS2812#WC24h_Sammelbestellung_Frontplatten | Plexiglas]].&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wird kein Rahmen (siehe unten) verwendet werden zusätzliche Teile (z.B. [[Word_Clock_Variante_1_-_getrennte_Steuerplatine#Befestigung_der_Frontplatte_.28.E2.80.9CPlexiglasvariante.E2.80.9D.29_an_der_Zwischenplatte| Magnete]]) zur Befestigung der Frontplatte benötigt.&lt;br /&gt;
|-&lt;br /&gt;
| Zwischenboden&lt;br /&gt;
||&amp;lt;br&amp;gt;Für die WC12h und WC24h sind Zwischenböden über eine [[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]] erhältlich.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alu-Platte&lt;br /&gt;
||&amp;lt;br&amp;gt;Aluminiumblech,  1 mm Stärke. Für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) und alle WC12h Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm &amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/(aluminium%2C+alu)+(blech%2C+platte) ebay]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| DS3231 [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC und EEPROM]]&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ds3231 AliExpress]&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=DS3231 eBay]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Falls bei dem Modul keine Batterie mitgeliefert wird, wird zusätzlich folgende Knopfzelle benötigt:&lt;br /&gt;
[http://www.reichelt.de/directlink/CR2032/index.html?&amp;amp;ACTION=3&amp;amp;ARTICLE=26550&amp;amp;GROUPID=4241&amp;amp;ARTNR=CR+2032&amp;amp;&amp;amp;SHOW=1&amp;amp;SID=12UXp5iH8AAAIAAAE-gdod799e4cf62d5cd255e52464fe671b8ea Reichelt CR2032]&lt;br /&gt;
|-&lt;br /&gt;
| Netzteil&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/MDY0ODQ2OTk-/Stromversorgung/Netzgeraete/Steckernetzgeraete/Steckernetzteil_QUATPOWER_PSN5_4000H5_5_5_V_4_A_5_5_2_1_mm.html Pollin Netzteil 5V 4A]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-01 (WLAN-Modul) bis Shield V2&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-01 AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-01 eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-WiFi-Serial-Transceiver-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-01 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| ESP8266 ESP-12F (WLAN-Modul) ab Shield V3 (OTA)&lt;br /&gt;
||&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=esp8266%20esp-12F AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=esp8266%20ESP-12F eBay]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.watterott.com/de/ESP8266-ESP-12F-WiFi/WLAN-Modul Watterott]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zum Anschließen des ESP8266 ESP-12 wird zusätzlich ein AMS1117 3,3 V Drop Down Spannungsregler benötigt:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.aliexpress.com/wholesale?&amp;amp;SearchText=ams1117%203.3V AliExpress]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.ebay.de/sch/i.html?&amp;amp;_nkw=AMS1117%203.3V eBay]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Infrarot-Decoder (IRMP)&lt;br /&gt;
||&amp;lt;br&amp;gt;mit IRMP Fernbedienungsensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321194 Reichelt Warenkorb]&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich wird noch eine [http://www.dx.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019#.V0CsuCFgfs0 IR-Fernbedienung] benötigt, die optional mit einer [[WordClock_mit_WS2812#IR-Fernbedienung|Folie]] versehen werden kann.&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Rahmen&lt;br /&gt;
||&amp;lt;br&amp;gt;Innenmaße 450x450 mm&amp;lt;br&amp;gt;&lt;br /&gt;
Funktioniert nicht zusammen mit Ambilight&amp;lt;br&amp;gt;&lt;br /&gt;
Z. B. [https://www.alutech.de/alu---zuschnitt-profil-18.html Alurahmen]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Ambilight&lt;br /&gt;
||&amp;lt;br&amp;gt;Mittels zusätzlicher WS2812 LED Stripes per &amp;lt;br&amp;gt;[[WordClock_mit_WS2812#Sammelbestellung_LED_Stripes.2C_Zwischenb.C3.B6den.2C_Shields | Sammelbestellung]]&lt;br /&gt;
Funktioniert nicht zusammen mit einem Rahmen. Erfordert Zwischenboden mit entsprechender Ausfräsung (bisher nur für WC12 per Sammelbestellung verfügbar)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Fotowiderstand (LDR) zur Lichtmessung&lt;br /&gt;
||&amp;lt;br&amp;gt;[https://www.reichelt.de/Fotodioden-etc-/LDR-07/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=10208&amp;amp;GROUPID=3045&amp;amp;artnr=LDR+07&amp;amp;SEARCH=ldr07 Reichelt LDR07]&amp;lt;br&amp;gt; Ggf. Ersatz: [https://www.reichelt.de/Fotodioden-etc-/A-906011/3/index.html?ACTION=3&amp;amp;LA=446&amp;amp;ARTICLE=47506&amp;amp;GROUPID=3045&amp;amp;artnr=A+906011&amp;amp;SEARCH=fotowiderstand Reichelt A906011]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-1-0-k-Ohm-9-1-k-Ohm/1-4W-1-0K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1315&amp;amp;GROUPID=3065&amp;amp;artnr=1%2F4W+1%2C0K&amp;amp;SEARCH=%252A Reichelt Widerstand 1,0k] (bei Verwendung von LDR07 oder A906011)&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/1-4W-5-10-k-Ohm-91-k-Ohm/1-4W-10K/3/index.html?ACTION=3&amp;amp;LA=2&amp;amp;ARTICLE=1338&amp;amp;GROUPID=3066&amp;amp;artnr=1%2F4W+10K&amp;amp;SEARCH=%252A Reichelt Widerstand 10k] (bei Verwendung des zwischenzeitlich empfohlenen A906032 und auch bei Nicht-Anschluss des LDRs)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: Temperatur-Sensor&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DS1820 Temperatur-Sensor werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321196 Reichelt Warenkorb]&lt;br /&gt;
|-&lt;br /&gt;
| Optional: DCF77-Empfänger&lt;br /&gt;
||&amp;lt;br&amp;gt;mit DCF werden folgende Teile benötigt:&amp;lt;br&amp;gt;[http://www.pollin.de/shop/dt/NTQ5OTgxOTk-/Bausaetze_Module/Module/DCF_Empfangsmodul_DCF1.html Pollin DCF77 Empfänger]&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321191 Reichelt Warenkorb]&lt;br /&gt;
&amp;lt;br&amp;gt; ggf. IC-Sockel für den OP (Reichelt GS 8P)&lt;br /&gt;
|-&lt;br /&gt;
| Optional: WS2812 Spannungsabschaltung&lt;br /&gt;
||&amp;lt;br&amp;gt;mit WS2812 Spannungsabschaltung werden folgende Teile benötigt:&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.reichelt.de/my/1321190 Reichelt Warenkorb]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Start =&lt;br /&gt;
&lt;br /&gt;
Dieses Kapitel beschreibt den Download der Software auf das verwendete Board und die erstmalige Prüfung und Konfiguration.&lt;br /&gt;
&lt;br /&gt;
Geflasht wird mit dem ST-Link-Programm, siehe oben.&lt;br /&gt;
&lt;br /&gt;
Zur Überprüfung sämtlicher Funktionen und zur Konfiguration dient die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]]. Dazu nimmt man eine WLAN-Verbindung mit dem ESP8266-Modul auf. Für die erste Konfiguration wird das ESP8266 zunächst als eigener Access-Point gestartet. Anschließend kann man über das [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] die Zugangsdaten zu dem eigenen WLAN-Router einstellen. Im Folgenden läuft das ESP8266-Modul dann als WLAN-Client.&lt;br /&gt;
&lt;br /&gt;
Für Entwickler und zur Diagnose kann man ein Terminal-Emulationsprogramm (wie zum Beispiel PuTTY) verwenden, um über ein Mini-USB-Kabel Debug- und Log-Meldungen mitzuschneiden. Laut http://www.mikrocontroller.net/topic/356203#3979181 sollte man dabei die &amp;quot;blauen&amp;quot; USB3.0-Buchsen möglichst meiden.&lt;br /&gt;
&lt;br /&gt;
== Ablauf ==&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] und PC mit Mini-USB-Kabel verbinden (zum Flashen, Debuggen und als COM-Schnittstelle)&lt;br /&gt;
* Wenn man die EmBitz-IDE einsetzt: Nach [[WordClock_mit_WS2812#WordClock-Quellcode_selbst_.C3.BCbersetzen|Anleitung: WordClock-Quellcode selbst übersetzen]] vorgehen&lt;br /&gt;
* Die entsprechende Hex-Datei (aus dem Ordner wclock24h\bin\Release oder direkt hier herunterladen) flashen&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32 MiniDevBoards ==&lt;br /&gt;
&lt;br /&gt;
Hier eine ausführliche Schritt für Schritt Anleitung um die Software vom .HEX File aus dem Artikel in das STM32 MiniDevBoard zu bekommen:&lt;br /&gt;
&lt;br /&gt;
Benötigt werden neben dem STM32 MiniDevBoard:&lt;br /&gt;
* Hardware: ST-Link V2 (z. B. von [https://www.aliexpress.com/wholesale?ltype=wholesale&amp;amp;d=y&amp;amp;origin=y&amp;amp;isViewCP=y&amp;amp;SearchText=st-link+v2&amp;amp;blanktest=0&amp;amp;tc=af Aliexpress] oder [http://www.ebay.de/sch/i.html?&amp;amp;_nkw=ST-Link%20v2 eBay])&lt;br /&gt;
* Software: STM32 ST-Link Utility, siehe: http://www.st.com/en/development-tools/st-link-v2.html&lt;br /&gt;
* Installation der Software &amp;quot;STM32 ST-Link Utility&amp;quot;: https://www.youtube.com/watch?v=ONzRL06Umfo&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Danach im Geräte-Manager von Windows unter „USB-Geräte“ kontrollieren, ob die Installation erfolgreich war.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 1.PNG|miniatur|Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
ST-Link v2 mit STM32 MiniDevBoard verbinden (Achtung: Die Anschlussbelegung an ST-Link v2 und die Beschriftung am MiniDevBoard ist nicht immer einheitlich, daher bitte immer auf die Beschriftung achten!). Verbunden werden folgende Pins:&lt;br /&gt;
* St-Link v2 &amp;quot;VCC&amp;quot; mit &amp;quot;3.3&amp;quot; oder &amp;quot;3.3V&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWDIO&amp;quot; mit &amp;quot;DIO&amp;quot; oder &amp;quot;SWDIO&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;SWCLK&amp;quot; mit &amp;quot;CLK&amp;quot; oder &amp;quot;SWCLK&amp;quot; des MiniDevBoard&lt;br /&gt;
* St-Link v2 &amp;quot;GND&amp;quot; mit &amp;quot;GND&amp;quot; des MiniDevBoard&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 2.PNG|miniatur|Anschluss des ST-Link v2 Adapters]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Das STM32 ST-Link Utility öffnen und im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 3.PNG|miniatur|Verbindung zum STM Board im STM32 ST-Link Utility herstellen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Im STM32 ST-Link Utility im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im STM32 MiniDevBoard konsistent zu den Informationen im .HEX File sind&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 4.PNG|miniatur|Reiter &amp;quot;Target&amp;quot;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Die gewünschte Hex-Datei passend zur Hardware auswählen (im Beispiel: WordClock 12h mit „Standard“-WS2812) und auf „Öffnen“ klicken&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 5.PNG|miniatur|Auswahl der Firmware / des .HEX Files]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Den Flashvorgang mit „Start“ beginnen. An den standardmäßig gesetzten Optionen muss nichts weiter verändert werden&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 6.PNG|miniatur|rechts|Start des Flashvorgangs]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Erfolgreiches Flashen wird anschließend im Logbereich des STM32 ST-Link Utility (unten im Fenster) angezeigt. Sollten im Log Fehlermeldungen auftauchen ist beim Flashen etwas schiefgelaufen. Verkabelung prüfen (z.B. DIO und CLK vertauscht?) und wenn das Problem weiterhin besteht im Forum (https://www.mikrocontroller.net/topic/385955) nach Hilfe fragen.&lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 7.PNG|miniatur|Logbeispiel: Flashen erfolgreich!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &lt;br /&gt;
Zum Abschluss noch in der Software unter „Target“ die Verbindung der Software zum ST-Link v2 mit „Disconnect“ trennen. Jetzt kannst du auch das ST-Link V2 USB Modul aus dem Port entfernen und die Verkabelung vom STM32 MiniDevBoard trennen. Im Speicher des Boards ist jetzt die zuvor ausgewählte Software und du hast dein Modul erfolgreich geflasht! &lt;br /&gt;
|[[Datei:STM32 MiniDevBoard Flashen Anleitung 8.PNG|miniatur|ST-Link v2 trennen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Upgrade der Firmware des ST-Link v2 - DFU mode ====&lt;br /&gt;
Wenn versucht wird die Firmware des ST-Link v2 zu aktualisieren und dies scheitert mit der Meldung &amp;quot;Not in DFU Mode&amp;quot;, so kann folgende Vorgehensweise helfen: &lt;br /&gt;
# ST-Link Utility schließen und ST-Link v2 vom USB Port entfernen. &lt;br /&gt;
# Miniboard vom ST-Link trennen. &lt;br /&gt;
# ST-Link Utility starten aber noch nichts anschließen. &lt;br /&gt;
# Firmware Upgrade Dialog öffnen. &lt;br /&gt;
# Nun ST-Link am USB Port anschließen. MiniBoard nicht anschließen. &lt;br /&gt;
# Update starten. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Logging ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dieser Ablauf ist nur notwendig, wenn man die Log-Meldungen aus Diagnose-Zwecken mitschneiden möchte.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PuTTY starten&lt;br /&gt;
* PuTTY einstellen: Auswahl &amp;quot;Serial&amp;quot;, Serial Line: COM11 (kann abweichen, s.u.), Speed: 115200&lt;br /&gt;
* Einen Session-Namen eingeben, z.B. &amp;quot;Nucleo&amp;quot;&lt;br /&gt;
* Auf SAVE klicken, dann kann man die Session später wieder auswählen&lt;br /&gt;
* Open anklicken&lt;br /&gt;
* RESET-Button am [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]] drücken&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039; Die COM-Schnittstelle ist immer aktiv, egal, ob das Programm gerade läuft oder nicht. Wird PuTTY erst nach dem Programmstart gestartet, sieht man im Terminal nicht die bereits ausgegebenen Log-Meldungen. Um den Ablauf des Programms von Anfang an zu verfolgen, drückt man auf dem Board einfach den Reset-Knopf. Dann beginnt die Ausgabe ganz von vorn.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig für [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039; Für das Logging sollten lediglich RX und GND des externen USB-UART-Adapters angeschlossen werden. TX vom Adapter bzw. RX auf dem [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]] sollten offen bleiben. Sonst kann es bei Verwendung des ESP8266 ESP-12F dazu kommen, dass dieser nicht mehr bootet.&lt;br /&gt;
&lt;br /&gt;
Sollte man Probleme mit dem Finden der richtigen COM-Schnittstelle haben, hilft der Geräte-Manager aus der Systemsteuerung weiter.&lt;br /&gt;
&lt;br /&gt;
Der Hintergrund im PuTTY ist normalerweise schwarz. Möchte man lieber eine Ausgabe in schwarz auf weiß, kann man das folgendermaßen umstellen:&lt;br /&gt;
&lt;br /&gt;
   Change Settings -&amp;gt; Window -&amp;gt; Colours:&lt;br /&gt;
&lt;br /&gt;
      Default Foreground: 2 2 2&lt;br /&gt;
      Default Bold Foreground: 0 0 0&lt;br /&gt;
      Default Background: 245 245 245&lt;br /&gt;
      Default Bold Background: 255 255 255&lt;br /&gt;
      Cursor Text: 0 0 0&lt;br /&gt;
      Cursor Color: 255 0 0&lt;br /&gt;
      (Rest kann man so lassen)&lt;br /&gt;
&lt;br /&gt;
Anschließend zurück über &amp;quot;Session&amp;quot; oben links und: &amp;quot;Save&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Konfiguration des WLAN-Moduls ==&lt;br /&gt;
&lt;br /&gt;
=== Flash des WLAN-Moduls ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Für das ESP8266-Wlan-Modul wird aus Stabilitäts- und Geschwindigkeitsgründen eine spezielle auf die WordClock-Anwendung abgestimmte Firmware benutzt (siehe [[WordClock_mit_WS2812#Download|Download]]), die über das STM32-Board geflasht werden kann. Das ESP8266 kann also während des Flashens in der WordClock-Schaltung verbleiben.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo wird der integrierte USB-UART-Adapter verwendet. Beim Anschluss des Nucleo-Board per USB an den PC wird automatisch ein COM-Device angelegt, z.B. COM12. Dafür braucht man aber den entsprechenden Virtual COM Port Driver, siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|Software für Windows]].&lt;br /&gt;
&lt;br /&gt;
Beim [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]] wird ein externer USB-UART-Adapter, welcher mit 3,3V-Pegeln arbeitet, verwendet. Wie er angeschlossen wird, sieht man in der [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|Anschluss-Skizze]] und auch in obiger [[WordClock_mit_WS2812#Anschlusstabelle|Anschlusstabelle]]. Das Shield muss außerdem extern mit +5V versorgt werden. Anderenfalls ist zumindest das ESP-Modul ohne Spannungsversorgung. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig: Handelt es sich hier um ein ESP8266 ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]], darf TX vom USB-UART-Wandler erst dann angeschlossen werden, wenn der ESP8266 sich bereits im Flash-Modus befindet - nicht früher. Siehe Beschreibung unten.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Zum eigentlichen Flashen lädt man am besten das sehr einfach gehaltene Programm &#039;&#039;&#039;[https://github.com/Stadslab/ESP8266_example/raw/master/ESP8266_flasher_V00170901_00_Cloud%20Update%20Ready/esp8266_flasher.exe esp8266_flasher.exe]&#039;&#039;&#039; herunter.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WordClock-ESP-Flasher.png|miniatur|esp8266_flasher.exe für das ESP8266-Modul]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Alternativ dazu kann man auch  von der Espressif-Seite zunächst die ESP8266-Flash-Software &#039;&#039;&#039;FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar&#039;&#039;&#039; (http://bbs.espressif.com/download/file.php?id=856) herunterladen und das Archiv an geeigneter Stelle entpacken. Es müssen dann als Einstellungen die im Bild rechts markierten Einstellungen vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Dann ist das weitere Vorgehen:&lt;br /&gt;
&lt;br /&gt;
* Eventuell gestartetes PuTTY beenden, um COM-Schnittstelle freizugeben&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) abziehen!&lt;br /&gt;
* Reset-Taste drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board bzw. [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3) drücken und &#039;&#039;&#039;festhalten&#039;&#039;&#039;. Auf älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] gibt es diese Taste nicht, sondern ist lediglich als Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) bezeichnet. Hier muss man mittels eines Jumpers eine Verbindung zu GND daneben herstellen.&lt;br /&gt;
* Reset-Taste loslassen&lt;br /&gt;
* [[WordClock_mit_WS2812#User-Taste|User-Taste]] nach 2 Sekunden loslassen bzw. Jumper ziehen&lt;br /&gt;
* Speziell beim ESP-12F am [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103 Mini Development Board]]: TX vom USB-USART-Adapter (geht an PA10) wieder anschließen.&lt;br /&gt;
&lt;br /&gt;
Das WordClock-Programm auf dem STM32 versetzt dann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul in den Flash-Modus und verbindet dann die beiden UARTs softwaremäßig 1:1, d.h. die Daten werden vom USB-Anschluss transparent an das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Nun startet man das Programm &#039;&#039;&#039;esp8266_flasher.exe&#039;&#039;&#039; (bzw. ESP_DOWNLOAD_TOOL_V2.4.exe) und wählt durch Klick auf die Schaltfläche &#039;&#039;&#039;Bin&#039;&#039;&#039; die Datei &#039;&#039;&#039;ESP-WordClock.bin&#039;&#039;&#039; aus - siehe [[WordClock_mit_WS2812#Download|Download]]. Außerdem muss der COM-Port an den tatsächlichen Anschluss angepasst werden. Beim ESP-01 stellt man die Flash-Size auf 4MBit (=512KB), beim ESP-12F auf 32MBit (=4MB).&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC-ESP8266-FLASH.png|miniatur|Alternative: ESP FLASH DOWNLOAD TOOL]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Nach Drücken auf &#039;&#039;&#039;Download&#039;&#039;&#039; (bzw. &#039;&#039;&#039;Start&#039;&#039;&#039; beim Alternativprogramm) sollte nun das Flashen des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls beginnen. Eine eventuell am Ende auftretende Fehlermeldung &amp;quot;Failed to leave Flash mode&amp;quot; kann dabei getrost ignoriert werden. Anschließend startet man den STM32 (und damit auch das WLAN-Modul) neu durch kurzes Drücken der Reset-Taste.&lt;br /&gt;
&lt;br /&gt;
=== Start als Access-Point ===&lt;br /&gt;
&lt;br /&gt;
Folgender Ablauf ist nur notwendig, wenn die Software-Version älter als 2.5.0 ist oder keine [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] (ab Shield v3) angeschlossen ist. Sonst kann direkt zu [[WordClock_mit_WS2812#Start_per_WPS-Button|Start per WPS-Button]] gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
Um für die Konfiguration der WLAN-Daten (Zugang zum WLAN-Router oder -Gateway) mit dem ESP8266 Kontakt aufzunehmen, muss man zunächst dafür sorgen, dass das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul als Access-Point arbeitet. Dafür drückt man die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem Nucleo-Board (blau) bzw. die [[WordClock_mit_WS2812#User-Taste|User-Taste]] auf dem [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shield]] (v3). Bei älteren [[WordClock_mit_WS2812#Shield_f.C3.BCr_STM32_MiniDevBoard|Mini-Shields]] verbindet man den Jumper-Pin &amp;quot;Flash&amp;quot; (PA6) kurz mit dem danebenliegenden GND-Pin.&lt;br /&gt;
&lt;br /&gt;
Unmittelbar nach dem Drücken der Taste erscheint die IP-Adresse des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls als Laufschrift - und auch im Log. Nun sucht man auf dem PC oder Tablet nach dem WLAN-Netz mit dem Namen &amp;quot;wordclock&amp;quot; und verbindet das Gerät mit diesem Netz. Als Netzwerkschlüssel gibt man &amp;quot;1234567890&amp;quot; ein. Sobald die Verbindung hergestellt ist, startet man einen Browser und gibt als URL die ausgegebene IP-Adresse ein, z.B. http://192.168.4.1/ .&lt;br /&gt;
&lt;br /&gt;
Sobald die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] erscheint, wählt man den Menüpunkt &amp;quot;Network&amp;quot; aus, wählt &amp;quot;Wlan-Client&amp;quot; aus und gibt die SSID (&amp;quot;AP&amp;quot;) und den Key des WLAN-Routers ein und bestätigt die Eingabe mit &amp;quot;Save&amp;quot;. Das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul wird nun als WLAN-Client umkonfiguriert. War das erfolgreich, erscheint nun auf dem Display die neue IP-Adresse. Die Browser-Seite wird dann ungültig. Man kann seinen PC nun wieder mit dem bisherigen WLAN-Gateway verbinden und im Folgenden die neue IP-Adresse verwenden.&lt;br /&gt;
&lt;br /&gt;
Gibt es an dem Ort, wo die Uhr betrieben werden soll, kein WLAN, kann das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul auch weiterhin als Accesspoint (&amp;quot;AP&amp;quot;) betrieben werden, damit man es über WLAN fernsteuern kann. In diesem Fall sollte nicht &amp;quot;WLAN-Client&amp;quot;, sondern &amp;quot;AP&amp;quot; ausgewählt werden, eine entsprechende SSID und einen mindestens 10 Zeichen langen Key einstellen. Anschließend kann man sich mit PC/Handy/Tablet in das neue WLAN einklinken, um die Uhr per Browser oder Android-App fernzusteuern. Ein Zugriff auf einen externen Timeserver ist dann selbstverständlich nicht mehr möglich.&lt;br /&gt;
&lt;br /&gt;
=== Start per WPS-Button ===&lt;br /&gt;
&lt;br /&gt;
Ab Software-Version 2.6.0 wird WPS unterstützt. Dazu drückt man die auf dem Shield (ab Shield-Version v3) befindliche [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] für einen kurzen Moment und anschließend auf dem WLAN-Gateway (bzw. Router). Bei der Fritzbox muss man die Taste solange drücken, bis die WLAN-LED blinkt. Im Normalfall wird dann die Verbindung innerhalb weniger Sekunden aufgenommen - erkennbar daran, dass auf dem LED-Display die vergebene IP-Adresse als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Befindet der ESP8266 bereits im AP-Modus, kann WPS auch im Browser über den Klick auf die Schaltfläche &amp;quot;WPS&amp;quot; im Reiter [[WordClock_mit_WS2812#Network|Network]] gestartet werden.&lt;br /&gt;
&lt;br /&gt;
=== Start als WLAN-Client ===&lt;br /&gt;
&lt;br /&gt;
Bei jedem folgenden Start wird nur noch die Einstellung &amp;quot;WLAN-Client&amp;quot; verwendet. Sobald sich das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-WLAN-Modul mit dem gewünschten Access-Point (&amp;quot;AP&amp;quot;) verbunden hat, wird auf dem LED-Display die neue IP-Adresse des Moduls in Laufschrift ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tipp&#039;&#039;&#039;: Viele WLAN-Router sorgen automatisch dafür, dass ein WLAN-Client auch noch nach Tagen dieselbe IP-Adresse hat. Wenn das nicht der Fall sein sollte, kann man meist in den Router-Einstellungen dafür sorgen, dass der Client mit der MAC-Adresse xx-xx-xx-xx-xx-xx immer dieselbe IP-Adresse vom WLAN-Router zugeteilt bekommt.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Web-Interface ==&lt;br /&gt;
&lt;br /&gt;
=== Main ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Neben der Ausgabe der installierten Firmware-Version sieht man hier unter anderem auch, ob das EEPROM erkannt wurde. Es wird entweder &amp;quot;online&amp;quot; oder &amp;quot;offline&amp;quot; ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Hat man keine Verbindung zum Internet, kann man auf der Hauptseite Datum und Uhrzeit auch manuell eingeben. Außerdem kann man hier einen Ticker-Text angeben, welcher dann auf dem Display als Laufschrift ausgegeben wird.&lt;br /&gt;
&lt;br /&gt;
Mit den Schaltflächen &amp;quot;Power on&amp;quot; bzw. &amp;quot;Power off&amp;quot; kann das LED-Display ein- und ausgeschaltet werden. Die Power-Buttons schalten erstmal generell auch das Ambilight ein bzw. aus. Es kann aber über die entsprechenden Schaltflächen separat ein- und ausgeschaltet werden. Diese wirken aber nur, wenn die Uhr selbst im eingeschalteten Zustand (&amp;quot;Power on&amp;quot;) ist. Sonst werden sie ignoriert.&lt;br /&gt;
&lt;br /&gt;
Mit dem Klick auf &amp;quot;Learn IR remote control&amp;quot; kann eine IR-Fernbedienung angelernt werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Main.png|miniatur|Web-Interface: Hauptmenü]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier werden die aktuelle IP-Adresse und die Firmware-Version des ESP8266-Moduls angezeigt. Auch kann man hier die Verbindung zu einem WLAN-Gateway oder -Router angeben. In diesem Fall wählt man in der Zeile &amp;quot;WLAN-Client&amp;quot; den gewünschten Accesspoint aus und gibt dann noch den korrekten Key ein. Wichtig: Enthält der Key internationale Sonderzeichen wie zum Beispiel Umlaute, kann die WLAN-Anwendung fehlschlagen, weil das Web-Interface einen anderen Zeichensatz als der Accesspoint verwendet. In diesem Fall sollte man den Key im Accesspoint ändern oder die Möglichkeit einer Verbindung per WPS wählen. Nach erfolgter Einstellung wird die gewünschte Verbindung aufgebaut und die evtl. neue IP-Adresse auf dem LED-Display als Laufschrift eingeblendet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039; ist die alternative Möglichkeit, das ESP8266-Modul über WPS ins Netz einzubinden. Dafür drückt man zuerst die WPS-Taste am Router (bei der FritzBox solange, bis die WLAN-LED blinkt) und anschließend die [[WordClock_mit_WS2812#WPS-Taste|WPS-Taste]] auf dem Shield - oder die WPS-Schaltfläche im Web-Interface.&lt;br /&gt;
&lt;br /&gt;
Ebenso kann man hier den [[WordClock_mit_WS2812#Timeserver|Timeserver]] und die [[WordClock_mit_WS2812#Timeserver|Zeitzone]] konfigurieren, siehe entsprechendes [[WordClock_mit_WS2812#Timeserver|Kapitel]].&lt;br /&gt;
&lt;br /&gt;
Mit der Schaltfläche &amp;quot;Get net time&amp;quot; kann die aktuelle Uhrzeit von dem konfigurierten Timeserver ad hoc abgerufen werden. Das ist aber im Normalfall nicht notwendig, da dies ohnehin alle 3800 Sekunden automatisch geschieht. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Network.png|miniatur|Web-Interface: Netzwerk-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Temperature ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Hier wird die aktuelle Temperatur von RTC und DS18xx (sofern vorhanden) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
Wegen der Selbsterwärmung der Sensoren werden meist zu hohe Werte gemessen. Dagegen hilft beim DS18xx zum Beispiel ein Kühlkörper. Sollte das nicht möglich oder nicht gewünscht sein, kann hier sowohl für RTC als auch für DS18xx eine Korrektur in 0,5°C Schritten angegeben werden. Bei Eingabe von beispielsweise &amp;quot;5&amp;quot; werden 2,5°C von der Messung abgezogen. Die Korrekturwerte sollte man frühestens nach einigen Minuten Betrieb wählen, damit RTC/DS18xx auch die endgültige Betriebstemperatur erreicht haben.&lt;br /&gt;
&lt;br /&gt;
Beim Betätigen der Schaltfläche &amp;quot;Display temperature&amp;quot; wird die aktuelle Temperatur auf dem LED-Display entweder als Laufschrift (WordClock12h) oder als Wort-Anzeige (Word-Clock24h) eingeblendet. Diese Anzeige kann in einem gewissen Zeitintervall auch automatisch erfolgen, siehe &#039;&#039;&#039;[[WordClock_mit_WS2812#Display|Display]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Temperature.png|miniatur|Web-Interface: Temperatur-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Weather ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Um Wetterdaten auf der Uhr ausgeben zu können, braucht man eine sogenannte APPID (auch API-Id genannt), die man durch eine Registrierung bei http://openweathermap.org kostenlos beziehen kann. Am einfachsten findet man sie über den Menü-Eintrag &amp;quot;Price&amp;quot;. Dort kann man dann eine API-Id in der Free-Version generieren lassen.&lt;br /&gt;
&lt;br /&gt;
Diese APPID wird dann hier eingetragen. Des Weiteren ist notwendig:&lt;br /&gt;
&lt;br /&gt;
* entweder die Angabe eines Ortes&lt;br /&gt;
* oder die Angabe von Geo-Koordinaten (Longitude/Lattitude)&lt;br /&gt;
&lt;br /&gt;
Gerade bei Großstädten ist es sinnvoll, die genauen Koordinaten des eigenen Wohnorts anzugeben, da das Wetter bereits lokal unterschiedlich sein kann. Werden sowohl Ort als auch die Geo-Koordinaten angegeben, haben die Koordinaten Priorität. Auch kann es sein, dass bei kleineren Ortschaften der Ort selbst bei openweathermap.org unbekannt ist. Im Zweifel sollte man sich besser für die Koordinaten-Variante entscheiden. Wichtig bei der Angabe eines Ortes ist es, die Stadt in der eigenen Landessprache anzugeben, also z.B. &amp;quot;Koeln&amp;quot; oder &amp;quot;Muenchen&amp;quot;. Die Angabe von z.B. &amp;quot;Cologne&amp;quot; ist nicht zielführend, weil dies ein kleiner Ort in Italien ist ;-)&lt;br /&gt;
&lt;br /&gt;
Kennt man die Geo-Koordinaten vom gewünschten Standort nicht, kann man sie über Google-Earth ermitteln. Dafür muss man nicht unbedingt Google-Earth herunterladen, es reicht das Aufrufen von Google-Maps im Browser. Anschließend kann man dann unten links auf die Web-Version von Google-Earth wechseln. Ein Klick auf den eigenen Standort lässt dann die gewünschten Koordinaten erscheinen. Dabei ist die erste Zahl (irgendetwas um die 50) die Lattitude und die zweite Zahl (in der Größenordnung 7) die Longitude. Die Zahlen sollen mit Dezimalpunkt und nicht Dezimalkomma eingetragen werden.&lt;br /&gt;
&lt;br /&gt;
Ein abschließender Klick auf die Schaltfläche &amp;quot;Get weather&amp;quot; bezieht dann von openweathermap.org das aktuelle Wetter vom gewünschten Standort. Die Wetterdaten (Temperatur und Wetterlage) werden dann als Laufschrift auf dem Display ausgegeben. Diese Anzeige kann in einer kommenden Version über ein einstellbares Zeitintervall dann auch automatisch erfolgen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Weather.png|miniatur|Web-Interface: Wetterdaten-Konfiguration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LDR ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
Mittels Aktivierung von &amp;quot;Automatic Brightness&amp;quot; werden die automatische Helligkeitssteuerung scharf geschaltet und das erweiterte Menü sichtbar.&lt;br /&gt;
&lt;br /&gt;
Die Seite zeigt den aktuellen Wert an, den der ADC am LDR misst. Um den Helligkeitsbereich bei der automatischen Helligkeitssteuerung komplett auszunutzen, kann hier eine Kalibrierung vorgenommen werden. Dazu betätigt man einmal die Minimum-Schaltfläche bei verdunkeltem Raum, einmal die Maximum-Schaltfläche bei maximaler Raumhelligkeit und speichert alles durch Drücken der Save-Schaltfläche. Die automatische Helligkeitssteuerung verwendet dann bei einer Helligkeitsmessung diese Min-/Max-Werte zum Vergleich.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Es ist nicht sinnvoll, bei der Max-Messung einfach eine Taschenlampe direkt vor den LDR zu halten. Da der LDR normalerweise hinter der Frontplatte sitzt, wird so eine Helligkeit in der Praxis niemals erreicht. Die Folge wäre, dass die LEDs der Uhr dann zu dunkel leuchten würden.&lt;br /&gt;
&lt;br /&gt;
Hinweis2: Der angezeigte LDR Wert wird auf die Min und Max-Werte begrenzt. Sind diese 0 wird auch der LDR-Wert als 0 angezeigt. Dann sollte wie beschrieben kalibriert werden.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-LDR.png|miniatur|Web-Interface: LDR-Kalibrierung]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Brightness ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können die 16 vorhandenen Helligkeitsstufen an die Gegebenheiten angepasst werden. Je nach Transparenz der verwendeten Frontplatte bzw. des Diffusors kann man hier nachjustieren.&lt;br /&gt;
&lt;br /&gt;
Standardmäßig sind die Helligkeitsstufen hier so gewählt, dass immer eine gewisse Grundhelligkeit eingestellt ist. Erscheinen die unteren Helligkeitsstufen zu hell, kann man das durch Verschieben der entsprechenden Regler nach links anpassen. &lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Brightness.png|miniatur|Web-Interface: Helligkeitskurve]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Unter &amp;quot;Display Mode&amp;quot; können unter anderem verschiedene Sprachvarianten, die regionale Unterschiede beim Gebrauch der Uhrzeit berücksichtigen, ausgewählt werden. Die Anzeige von &amp;quot;Es ist&amp;quot; kann hier generell ein- oder ausgeschaltet werden.&lt;br /&gt;
&lt;br /&gt;
Mit dem Schieberegler &amp;quot;Brightness&amp;quot; kann die Grundhelligkeit eingestellt werden. Dieser wird deaktiviert, wenn die automatische Helligkeitssteuerung aktiviert wurde. Die eigentlichen Farben des Displays stellt man dann mit den Schiebereglern &amp;quot;R&amp;quot;, &amp;quot;G&amp;quot; und &amp;quot;B&amp;quot; ein. Diese erscheinen jedoch nur dann, wenn nicht die Animation &amp;quot;Rainbow&amp;quot; eingestellt ist. Die Rainbow-Animation kontrolliert die Farben nämlich selbst.&lt;br /&gt;
&lt;br /&gt;
Durch Wahl einer Ticker-Verzögerung kann die Geschwindigkeit der &amp;quot;Ticker-Messages&amp;quot; (Laufschriftanzeige) kontrolliert werden. 3 ist hier der Standardwert. Niedrigere Werte ergeben eine höhere Geschwindigkeit (bis zur Unleserlichkeit), höhere Werte verzögern die Geschwindigkeit der Laufschriften.&lt;br /&gt;
&lt;br /&gt;
Stellt man für das Ambilight &amp;quot;Use Display Colors&amp;quot; ein, dann werden die Einstellungen für Helligkeit und Farben auch für das Ambilight verwendet, das heißt die Farben laufen synchron.&lt;br /&gt;
&lt;br /&gt;
Auch hier gibt es nochmal die Schaltflächen zum Ein- und Ausschalten des LED-Displays. Mit der Schaltfläche &amp;quot;Test Display&amp;quot; werden sämtliche LEDs bei halber (subjektiver) Helligkeit eingeschaltet (benötigt ca. 1/4 des theoretisch möglichen Maximalstroms) und einige Farben zur Kontrolle der Funktionsfähigkeit aller LEDs durchprobiert.&lt;br /&gt;
&lt;br /&gt;
Bei &amp;quot;Temp Display Interval&amp;quot; lässt sich ein Zeitintervall wählen, bei welchem die aktuell gemessene Temperatur eingeblendet werden soll. Bei Angabe von &amp;quot;1&amp;quot; passiert das jede Minute, nämlich immer bei hh:mm:30 Uhr. Bei Angabe von beispielsweise &amp;quot;5&amp;quot; wird die Temperatur dann nur noch alle 5 Minuten eingeblendet.&lt;br /&gt;
&lt;br /&gt;
Für &amp;quot;Heart Display interval&amp;quot; gilt dasselbe. Hier wird ein Herz als Piktogramm eingeblendet - z.B. für Geburtstage. Ebenso kann man in der vorweihnachtlichen Zeit einen Weihnachtsbaum einblenden unter Angabe eines Wertes für &amp;quot;XMas tree display interval&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Werden mehrere Intervalle ausgefüllt, gilt folgende Regel bei zeitgleicher Einblendung: Dasjenige Piktogramm, welches seltener erscheinen soll, hat eine höhere Priorität.&lt;br /&gt;
&lt;br /&gt;
Beispiel (siehe auch Bild rechts):&lt;br /&gt;
&lt;br /&gt;
* Temp display interval = 10&lt;br /&gt;
* Heart display interval = 1&lt;br /&gt;
* XMas tree display interval 5&lt;br /&gt;
&lt;br /&gt;
Dann ergibt sich:&lt;br /&gt;
&lt;br /&gt;
* 09:01 Uhr bis 09:04 Uhr: Herz&lt;br /&gt;
* 09:05 Uhr: Tannenbaum&lt;br /&gt;
* 09:06 Uhr bis 09:09 Uhr: Herz&lt;br /&gt;
* 09:10 Uhr: Temperatur&lt;br /&gt;
* 09:11 Uhr bis 09:14 Uhr: Herz&lt;br /&gt;
* 09:15 Uhr: Tannenbaum&lt;br /&gt;
&lt;br /&gt;
usw. Die Einblendungen geschehen grundsätzlich 30 Sekunden nach der vollen Minute. Intervalle gleicher Dauer sollte man vermeiden. Dann wird konsequent nur noch eins der beiden Piktogramme gezeigt.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Display.png|miniatur|Web-Interface: Einstellungen des LED-Displays]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Animations ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Animationen werden immer dann ausgeführt, wenn sich die Anzeige ändert, zum Beispiel bei einem Uhrzeitwechsel. Hier kann man sich die gewünschte Animation aussuchen und auch die dazugehörige Geschwindigkeit eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Folgende Animationen sind verfügbar:&lt;br /&gt;
&lt;br /&gt;
* None - Keine Animation&lt;br /&gt;
* Fade - Langsames Überblenden der Buchstaben&lt;br /&gt;
* Roll - Rollen der Wörter von links/rechts/oben/unten&lt;br /&gt;
* Explode - Die Wörter wandern schnell vom Mittelpunkt sternförmig auf ihren Platz&lt;br /&gt;
* Snake - Eine Schlange &amp;quot;frisst&amp;quot; die zuletzt angezeigten Wörter weg&lt;br /&gt;
* Teletype - Die Wörter werden in &amp;quot;Schreibmaschinen-Geschwindigkeit&amp;quot; ausgegeben&lt;br /&gt;
* Cube - Ein Rahmen &amp;quot;fällt&amp;quot; von außen nach innen, um die Anzeige zu löschen&lt;br /&gt;
* Matrix - Matrix-Animation aus dem gleichnamigen Film&lt;br /&gt;
* Drop - Buchstaben alter Wörter fallen aus der Anzeige, Buchstaben neuer Wörter fallen von oben in die Anzeige hinein&lt;br /&gt;
* Squeeze - Die Wörter werden einmal kurz &amp;quot;gequetscht&amp;quot;&lt;br /&gt;
* Flicker - Die Wörter &amp;quot;flackern&amp;quot;, danach erscheint die neue Anzeige&lt;br /&gt;
&lt;br /&gt;
Eine Besonderheit ist die Animation &amp;quot;Random&amp;quot;. Hier wird mit Hilfe eines Zufallsgenerators jedes Mal eine andere Animation ausgewählt. Deklariert man eine Animation als Favoriten, dann wird diese von der Zufallsanimation &amp;quot;Random&amp;quot; genutzt. Anderenfalls wird sie von &amp;quot;Random&amp;quot; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Geschwindigkeit kann man in 15 Stufen einstellen. Bei Klick auf die Schaltfläche &amp;quot;Default&amp;quot; wird die Geschwindigkeit auf einen sinnvollen Standardwert gesetzt.&lt;br /&gt;
&lt;br /&gt;
Als zusätzliche Farbanimation kann noch &amp;quot;Rainbow&amp;quot; ausgewählt und konfiguriert werden. Dann wechselt das Display fließend die Farben der LEDs.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Animations.png|miniatur|Web-Interface: Einstellungen der Animationen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier kann eine separate Animation für das Ambilight eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Clock&amp;quot; werden 20, 30 oder 60 Ambilight-LEDs als umlaufende Sekundenanzeige verwendet. Mit &amp;quot;#LEDs&amp;quot; kann man einstellen, wie viele Ambilight-LEDs sich im &amp;quot;Kreis&amp;quot; befinden. Sinnvoll sind hier 20, 30 oder 60. Ausserdem lässt sich mit &amp;quot;Offset of second = 0&amp;quot; diejenige LED einstellen, die mittig oben als Sekunde 0 angebracht ist.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Beginnt das Ambilight mit 60 LEDs links unten und ist im Uhrzeigersinn angebracht, dann wäre die LED mit Sekunde 0 die Nr. 22. Diese Zahl ist dann hier einzutragen.&lt;br /&gt;
&lt;br /&gt;
Der Ambilight-Modus &amp;quot;Clock2&amp;quot; entspricht dem Modus &amp;quot;Clock&amp;quot;. Jedoch wird hier ein zu-/abnehmender Vollkreis dargestellt.&lt;br /&gt;
&lt;br /&gt;
Bei dem Ambilight-Modus &amp;quot;Rainbow&amp;quot; durchlaufen die Ambilight-LEDs langsam (über mehrere Minuten hinweg) alle Farben des Regenbogens. Dieser läuft unabhängig von der Farbanimation &amp;quot;Rainbow&amp;quot; des Displays.&lt;br /&gt;
&lt;br /&gt;
Ist auf der Display-Webseite eingestellt, dass die Ambilight-Farben nicht synchronisiert werden sollen, dann kann man hier auch unabhängig von dem Display eine eigene Helligkeit und einen anderen RGB-Wert wählen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wordclock24h-Web-Ambilight.png|miniatur|Web-Interface: Ambilight]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Mit bis zu acht Timern kann man einstellen, wann die Uhr aus- bzw. eingeschaltet werden soll. Die Einstellung kann in Abhängigkeit der Wochentage eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Im Beispiel rechts wird in der Woche abends die Uhr um 22:30 Uhr abgeschaltet. Eingeschaltet wird dann morgens wieder um 07:00 Uhr. Nach dem Frühstück wird die Uhr dann um 08:00 Uhr wieder abgeschaltet, um dann abends um 17:00 Uhr wieder eingeschaltet zu werden.&lt;br /&gt;
&lt;br /&gt;
Am Wochenende sieht das dann anders aus: Hier ist die Uhr abends länger eingeschaltet, nämlich bis 23:30 Uhr. Morgens geht es erst dann um 09:00 Uhr wieder weiter.&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Timers.png|miniatur|Web-Interface: Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Ambilight Timers ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können Timer speziell für das Ambilight eingestellt werden, um zum Beispiel nachts das Ambilight separat abzuschalten. Umschaltzeiten, während die Uhr selbst abgeschaltet ist, werden ignoriert. Sonst gelten dieselben Bemerkungen wie im vorangehenden Kapitel.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Ambilight-Timers.png|miniatur|Web-Interface: Ambilight Timer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== DFPlayer ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Hier können MP3-Tracks konfiguriert werden, die zu bestimmten Zeiten oder Ereignissen von einem Mini-DFPlayer abgespielt werden.&lt;br /&gt;
&lt;br /&gt;
Auf der SD-Card müssen 3 Verzeichnisse angelegt werden:&lt;br /&gt;
&lt;br /&gt;
* Verzeichnis 01 - Bell-Mode: Hier werden MP3-Dateien abgelegt, die zu jeder vollen Stunde oder auch Viertelstunde abgespielt werden sollen.&lt;br /&gt;
* Verzeichnis 02 - Speak-Mode: Hier können MP3-Dateien abgelegt werden, welche die auf der Uhr angezeigten Wörter &amp;quot;vorlesen&amp;quot;.&lt;br /&gt;
* Verzeichnis 03 - Alarm: Die hier gespeicherten MP3-Dateien werden zu den eingetragenen Weckzeiten abgespielt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 01&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Bell Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 000.mp3 - wird um 00:00 Uhr (Mitternacht) abgespielt&lt;br /&gt;
* 001.mp3 - wird um 01:00 und 13:00 Uhr abgespielt&lt;br /&gt;
* 002.mp3 - wird um 02:00 und 14:00 Uhr abgespielt&lt;br /&gt;
* ...&lt;br /&gt;
* 012.mp3 - wird um 12:00 Uhr mittags abgespielt&lt;br /&gt;
* 013.mp3 - wird jede Stunde um xx:15 Uhr abgespielt, falls xx:15 aktiviert wurde&lt;br /&gt;
* 014.mp3 - wird jede Stunde um xx:30 Uhr abgespielt, falls xx:30 aktiviert wurde&lt;br /&gt;
* 015.mp3 - wird jede Stunde um xx:45 Uhr abgespielt, falls xx:45 aktiviert wurde&lt;br /&gt;
&lt;br /&gt;
Beispielsweise können das Aufnahmen von BigBen oder auch Zeitansagen sein.&lt;br /&gt;
&lt;br /&gt;
Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop Time) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 02&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Speak Mode&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ist der Speak Mode aktiviert, werden die Wörter auf dem Display einzeln vorgelesen. Wie oft, wird mit dem &amp;quot;Speak Cycle&amp;quot; eingestellt, z.B. 1 = jede Minute, 5 = alle 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Die Liste der dafür notwendigen MP3-Datei folgt in Kürze.&lt;br /&gt;
&lt;br /&gt;
Auch hier gilt: Zu den abgebenenen Ruhezeiten (von Silence Start bis Silence Stop Time) wird das Abspielen der MP3-Dateien unterdrückt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Verzeichnis 03&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wecker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Unabhängig von den oben angegebenen Modi und Ruhezeiten können bis zu acht Alarm-Zeiten (Wecker) eingestellt werden.&lt;br /&gt;
&lt;br /&gt;
Dabei wird die auf der Webseite in der aufgeführten Tabelle angegebene MP3-Datei abgespielt. Im nebenstehenden Beispiel wird die Datei 001.mp3 im Verzeichnis 03 Montags bis Freitags morgens um 06:30 Uhr abgespielt. Die darüber angegebenen Ruhezeiten spielen hier ausnahmsweise &#039;&#039;&#039;keine Rolle&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-DFPlayer.png|miniatur|Web-Interface: DFPlayer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Update ===&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Updates für den ESP8266 als auch für den STM32 können über das WLAN eingespielt werden. Dazu ist eine Internet-Verbindung notwendig. Für OTA-Updates (&amp;quot;Over The Air&amp;quot;) ist zwingend ein ESP8266 ESP-12F notwendig. &#039;&#039;&#039;Mit den bisher eingesetzten ESP-01 kann kein OTA-Update eingespielt werden.&#039;&#039;&#039; Jedoch können alte Shields mit ESP-01 auf ESP-12F umgebaut werden: [[WordClock_mit_WS2812#Umbau_von_ESP-01_auf_ESP-12F|Umbau von ESP-01 auf ESP-12F]]&lt;br /&gt;
&lt;br /&gt;
Es wird jeweils die benutzte und die verfügbare Firmware-Version angezeigt. Sind diese gleich, ist ein Update nicht notwendig.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Neu&#039;&#039;&#039;: Durch Klick auf die Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; kann der Flash-Speicherbereich, wo der ESP8266 die Update-Images sowohl für ESP8266 als auch für STM32 ablegt, neu formatiert werden. Das kann dann notwendig werden, wenn die Images nur unvollständig heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Wenn sowohl die ESP- als auch die STM32-Firmware abweichen, sollte immer zunächst der ESP8266 aktualisiert werden und danach der STM32. Durch Klick auf die Schaltfläche &amp;quot;Update ESP Firmware&amp;quot; wird das Update gestartet. Dieses dauert ca. 30 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Anschließend kann der STM32 aktualisiert werden. Dazu muss zunächst die richtige Firmware-Variante (HEX-Datei) ausgewählt werden. Welche WordClock STM32 Firmware für die jeweilige Hardware zu verwenden ist, ist hier erklärt: [[WordClock_mit_WS2812#WordClock-Varianten|WordClock-Varianten]]. Ab installierter Version 2.6.0 ermittelt die Software selbst anhand der Hardware-Konfiguration den Namen der passenden HEX-Datei und schlägt diesen dann automatisch vor.&lt;br /&gt;
&lt;br /&gt;
Durch Klick auf die Schaltfläche &amp;quot;Flash STM32&amp;quot; wird der STM32 zunächst in den Bootloader-Modus gebracht, danach wird er neu programmiert. Der STM32 verbleibt solange im Bootloader-Modus, bis die Schaltfläche &amp;quot;Reset STM32&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fehler beim OTA Update:&#039;&#039;&#039; In Einzelfällen kam es beim OTA Update zu einem Fehler, der auf ein Problem mit dem im ESP enthaltenen Dateisystem hinweist. Dieses Dateisystem wird normalerweise beim Flash der Software in das ESP Modul automatisch erstellt und kann dann z.B. als Zwischenspeicher für OTA Updates von ESP und STM32 genutzt werden. Taucht im OTA-Log ein Fehler wie z.B. &#039;&#039;&#039;error: cannot open file&#039;&#039;&#039; auf, dann hilft es ggf. die Software mit einem anderen Programm in das ESP Modul zu schreiben oder das vorhandene Programm in einer aktuelleren Version zu testen. &#039;&#039;&#039;Alternativ dazu kann man den Flashspeicherbereich des ESP8266 durch Betätigen der Schaltfläche &amp;quot;Format ESP8266 SPIFFS&amp;quot; neu formatieren und das OTA-Update anschließend neu durchführen.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sollte die aktuelle Version der ESP8266 Flash Download Tools (http://espressif.com/en/support/download/other-tools) Probleme bereiten, könnte man z.B. den NodeMCU Flasher (https://github.com/nodemcu/nodemcu-flasher) testen. Dort einfach unter &amp;quot;Config&amp;quot; das .BIN File laden und dann im Reiter &amp;quot;Operation&amp;quot; den entsprechenden COM Port auswählen und auf &amp;quot;Flash&amp;quot; klicken.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Update.png|miniatur|Web-Interface: Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Local Update ===&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Während das normale Update über einen Host im Internet durchgeführt wird, kann man über das lokale Update den STM32 vom lokalen PC aus flashen. Das lokale Flashen des ESP8266 ist noch nicht möglich, ist aber für ein späteres Release geplant. Sonst gelten dieselben Bemerkungen wie zum vorhergehenden Kapitel &amp;quot;Update&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auch hier gilt: Beim STM32F103-Mini-Board darf während des OTA-Updates der STM32-Firmware KEIN USB-UART-Adapter, welcher sonst zum Logging benutzt werden kann, angeschlossen sein!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 || [[Datei:Wordclock24h-Web-Local-Update.png|miniatur|Web-Interface: Local Update]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Timeserver ==&lt;br /&gt;
&lt;br /&gt;
Der Timeserver muss ein RFC 958 konformer NTP-Server sein. Voreingestellt ist ntp3.ptb.de (192.53.103.103). Alternative Timeserver sind zum Beispiel ntp1.ptb.de (192.53.103.108), ntp2.ptb.de (192.53.103.104) oder time.nist.gov (216.229.0.179).&lt;br /&gt;
&lt;br /&gt;
Eine Liste von europäischen Timeservern findet man u.a. hier: http://www.pool.ntp.org/zone/europe&lt;br /&gt;
&lt;br /&gt;
Den Timeserver konfiguriert man folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
Im Browser gibt man als URL die ausgegebene IP-Adresse ein, also z.B. http://192.168.10.1/ . Anschließend wählt man den Menüpunkt &amp;quot;Network&amp;quot; an und gibt in der entsprechenden Zeile die IP-Adresse des Wunsch-Timeservers ein und bestätigt mit &amp;quot;Save&amp;quot;. Nun wird zunächst geprüft, ob der Timeserver das NTP-Protokoll unterstützt.&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Uhrzeit wird alle 3800 Sekunden vom Timeserver geholt. Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] kann man die Übertragung auch jederzeit per Mausklick starten. Das funktioniert auch mit einer angelernten IR-Fernbedienung.&lt;br /&gt;
&lt;br /&gt;
=== Zeitzone ===&lt;br /&gt;
&lt;br /&gt;
Im [[WordClock_mit_WS2812#Web-Interface|Web-Interface]] Menüpunkt &amp;quot;Network&amp;quot; auswählen, in der Zeile &amp;quot;Timezone&amp;quot; die Abweichung von GMT eingeben. Für die mitteleuropäische Zeitzone wäre das einfach eine 1. Dies entspricht dann GMT+1. Bei einer negativen Abweichung wie GMT-1 muss dann entsprechend -1 eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== IR-Fernbedienung ==&lt;br /&gt;
&lt;br /&gt;
In den ersten 3 Sekunden leuchtet die Status-LED mit der Farbe Weiß, um zu signalisieren, dass nun eine IR-Fernbedienung angelernt werden kann. Wird währenddessen irgendein gültiger IR-Code empfangen, wechselt die Status-LED für eine Sekunde auf rot (FB-Knopf loslassen!) und es wird in die Anlernroutine gesprungen. Wird kein IR-Signal empfangen, startet das Programm wie gewohnt. Die Anlernroutine kann auch über die [[WordClock_mit_WS2812#Web-Interface|Web-Oberfläche]] (Menü &amp;quot;Main&amp;quot;) gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Man wird nun über eine Laufschrift auf dem LED-Display aufgefordert, folgende FB-Tasten zu drücken:&lt;br /&gt;
&lt;br /&gt;
{| {{Tabelle}}&lt;br /&gt;
|+ &#039;&#039;&#039;Tasten für IR-Fernbedienung&#039;&#039;&#039;&lt;br /&gt;
|-  style=&amp;quot;background-color:#eeeeee&amp;quot;&lt;br /&gt;
! Taste || Funktion || Laufschrift&lt;br /&gt;
|-&lt;br /&gt;
| Power || Anzeige ein/aus                           || power off/on&lt;br /&gt;
|- &lt;br /&gt;
| OK    || Speichern der Einstellungen               || ok&lt;br /&gt;
|- &lt;br /&gt;
| MODE- || Anzeigemodus erniedrigen                  || decrement display mode&lt;br /&gt;
|- &lt;br /&gt;
| MODE+ || Anzeigemodus erhöhen                      || increment display mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM- || Animation erniedrigen                     || decrement animation mode&lt;br /&gt;
|- &lt;br /&gt;
| ANIM+ || Animation erhöhen                         || increment animation mode&lt;br /&gt;
|- &lt;br /&gt;
| HOUR- || Stunde erniedrigen                        || decrement hour&lt;br /&gt;
|- &lt;br /&gt;
| HOUR+ || Stunde erhöhen                            || increment hour&lt;br /&gt;
|- &lt;br /&gt;
| MIN-  || Minute erniedrigen                        || decrement minute&lt;br /&gt;
|- &lt;br /&gt;
| MIN+  || Minute erhöhen                            || increment minute&lt;br /&gt;
|- &lt;br /&gt;
| RED-  || Helligkeit der Farbe Rot erniedrigen      || decrement red brightness&lt;br /&gt;
|- &lt;br /&gt;
| RED+  || Helligkeit der Farbe Rot erhöhen          || increment red brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN- || Helligkeit der Farbe Grün erniedrigen    || decrement green brightness&lt;br /&gt;
|- &lt;br /&gt;
| GREEN+ || Helligkeit der Farbe Grün erhöhen        || increment green brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE-  || Helligkeit der Farbe Blau erniedrigen    || decrement blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BLUE+  || Helligkeit der Farbe Blau erhöhen        || increment blue brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT-  || Grundhelligkeit erniedrigen            || decrement global brightness&lt;br /&gt;
|- &lt;br /&gt;
| BRIGHT+  || Grundhelligkeit erhöhen                || increment global brightness&lt;br /&gt;
|- &lt;br /&gt;
| AUTO+  || Automatische Helligkeitsregelung ein/aus || toggle auto brightness&lt;br /&gt;
|- &lt;br /&gt;
| TEMP   || Anzeige der Temperatur für 5 Sekunden    || get temperature&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Sind die FB-Tasten angelernt, kann man die Uhrzeit, den Anzeigemodus und auch die Farben mittels IR-Fernbedienung einstellen.&lt;br /&gt;
&lt;br /&gt;
Es sind nur die gebräuchlichsten IR-Protokolle aktiviert, nämlich:&lt;br /&gt;
&lt;br /&gt;
* SIRCS (Sony)&lt;br /&gt;
* NEC (Viele Hersteller, sehr verbreitet)&lt;br /&gt;
* SAMSUNG&lt;br /&gt;
* MATSUSHITA&lt;br /&gt;
* KASEIKYO&lt;br /&gt;
&lt;br /&gt;
[[IRMP]] &amp;quot;versteht&amp;quot; jedoch bis zu 40 Protokolle. Braucht man weitere - wie RC5 oder RC6 - kann man sie in irmp/irmp-config.h freischalten. Bei Problemen empfiehlt sich die Lektüre des [[IRMP]]-Artikels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eine passende Fernbedienung gibt es bei &#039;&#039; [http://www.dealextreme.com/p/24-key-wireless-infrared-ir-remote-controller-for-rgb-led-light-bulb-1-cr2025-47019 DX] &#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Passend beschriftet werden kann die Fernbedienung mit einem der folgenden Labels &amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:Fernbedienung Folie ZW.pdf]] &amp;lt;br&amp;gt; &lt;br /&gt;
[[Datei:Fernbedienung Folie ZW2.pdf]] &amp;lt;br&amp;gt;&lt;br /&gt;
(sie unterscheiden sich in der Anordnung des Power- und Save-Knopfes). Einfach auf eine selbstklebende Folie drucken, ausschneiden und aufkleben. Die unterste Reihe ist für weitere zusätzliche Optionen (z.B. Ambilight, usw.) noch offen.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Android App ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
Ist ein [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul angeschlossen und korrekt konfiguriert, kann die Uhr per [[WordClock_mit_WS2812#Android_App|Android App]] ferngesteuert werden.&lt;br /&gt;
&lt;br /&gt;
Momentan können folgende Einstellungen vorgenommen werden:&lt;br /&gt;
&lt;br /&gt;
* Ein-/Ausschalten der Uhr&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Anzeige der WordClock-Temperatur&lt;br /&gt;
* Einstellen der Farben (&#039;&#039;&#039;Neu&#039;&#039;&#039;: nun auch RGBW)&lt;br /&gt;
* Manuelle Einstellung einer Grundhelligkeit&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] ein/aus&lt;br /&gt;
* Einstellung des Anzeigemodus&lt;br /&gt;
* Einstellung der Farbanimation, z.B. &amp;quot;Rainbow&amp;quot; (&#039;&#039;&#039;Neu&#039;&#039;&#039;)&lt;br /&gt;
* Einstellung der Animation (Überblenden, Rollen, Explosion etc.)&lt;br /&gt;
&lt;br /&gt;
Es können bis zu 4 Profile konfiguriert und damit auch bis zu 4 unterschiedliche WordClocks gesteuert werden. Den Wechsel der Profile nimmt man mit der Schaltfläche &amp;quot;Laden&amp;quot; vor, das Speichern der Profile mit dem Button &amp;quot;Speichern&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor man mit der App Daten senden kann, muss man die IP-Adresse, die das [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul bekommen hat, in der App einstellen. Dies geht über den Menü-Eintrag &amp;quot;Einstellungen&amp;quot;. Bei älteren Android-Versionen ist dafür zunächst die spezielle Menü-Taste zu drücken, bei neueren Android-Versionen geht das auch über die Menüschaltfläche mit den drei übereinanderliegenden Punkten - siehe Bild rechts oben. Die IP-Adresse wird dann dem aktuell ausgewählten Profil zugeordnet.&lt;br /&gt;
&lt;br /&gt;
Unter den Menüpunkten findet man nun auch einen mit dem Eintrag &amp;quot;Tetris&amp;quot;. Damit wird eine Art &amp;quot;Gamepad&amp;quot; eingeblendet, mit dem man auf der Uhr WCtris - einen Tetris-Clone - spielen kann. Viel Spaß!&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wc24h-Android.png|miniatur|WC24h Android App]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Tutorial zum Aufbau =&lt;br /&gt;
&lt;br /&gt;
Ein Tutorial zum Aufbau der WordClock findet man hier: &#039;&#039;&#039;[[Tutorial_-_Aufbau_WordClock_mit_WS2812|Tutorial - Aufbau WordClock mit WS2812]]&#039;&#039;&#039; - im Moment noch in der Entstehung.&lt;br /&gt;
&lt;br /&gt;
= Mechanik =&lt;br /&gt;
&lt;br /&gt;
== Anbringung der WS2812-Streifen ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock24h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine 1mm starke Alu-Platte (für WC24h mit neuem Zwischenbodens (&amp;quot;V2&amp;quot;) Maße 310mmx310mm, für WC24h mit &amp;quot;altem&amp;quot; Zwischenboden 300mmx300mm). Darauf lassen sich nicht nur einfach die WS2812-LED-Streifen aufkleben, auch dient die Alu-Platte der Wärmeabfuhr. Die Alu-Platte kann man sich von einem der eBay-Händler entweder direkt erstehen oder für ca. 3,50 Euro zurechtschneiden lassen.&lt;br /&gt;
&lt;br /&gt;
Den LED-Streifen schneidet man 16 Streifen à 18 LEDs. Bevor man sie auf die LED-Platte klebt, sollte man senkrecht je einen Tesa-Streifen links und rechts auf die Alu-Platte kleben, da sich gezeigt hat, dass die Schnittkanten der Streifen gern einen Kurzschluss mit der Alu-Platte bilden.&lt;br /&gt;
&lt;br /&gt;
Die LED-Streifen werden dann im Ziehharmonika-Verfahren aufgeklebt. Dabei steht jeder 2. Streifen auf dem Kopf. Das hat den Vorteil, dass die Verbindungen zwischen den Streifen möglichst kurz sind. Auf der rechten Seite verbindet man dann die Anschlüsse +5V mit +5V, GND mit GND und DO mit DI - siehe Bild. Man verbindet also den ersten mit dem zweiten Streifen, den dritten mit dem vierten Streifen usw.&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite verbindet man lediglich DO mit DI, also den zweiten Streifen mit dem dritten, den vierten mit dem fünften usw. An den verbleibenden Lötpunkten +5V und GND lötet man an jedem *zweiten* Streifen (1, 3, 5 usw.) die Spannungsversorgung  an. Praktisch ist die Verwendung eines 16-poligen Flachbandkabels, welches man auf einen Flachbandkabel-Stecker aufquetscht. Pin 1 und 2 gehen dann an 5V/GND des ersten Streifens, 3 und 4 an 5V/GND des dritten Streifens usw. Mit ca. 2 m Flachbandkabel kann die komplette Uhr verkabelt werden.&lt;br /&gt;
&lt;br /&gt;
Dann kann man mittels 16-poligem Wannenstecker, den man auf eine Lochrasterplatine lötet, die Spannungsversorgung einfach verpolungssicher anstecken. Unter der Lochrasterplatine werden die geradzahligen Pins und die ungeraden Pins je mit einem Kupferdraht verbunden. Mit einer 2-poligen Schraubklemme auf der Lochrasterplatine kann dann das Netzteil angeschlossen werden - siehe Bild rechts. Bei Verwendung eines der Shields aus der Sammelbestellung wird die Lochrasterplatine &#039;&#039;&#039;nicht&#039;&#039;&#039; benötigt - die Spannungsversorgung für die Stripes ist auf den Shields mit eingeplant. &lt;br /&gt;
&lt;br /&gt;
Beim Anschluss des Datensignals sollte beachtet werden, dass zuerst die Status-LED angeschlossen wird und das Signal dann von dieser weiter zur Platte geht. Spannung für die Status-LED kann man sich bequem vom letzten Streifen der Platte holen.&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:Wclock24h-WS2812-auf-Alu-Platte.jpg|miniatur|16 WS2812-Streifen auf Alu-Platte]]&lt;br /&gt;
[[Datei:Wclock24h-16-pol-Wanne.png|miniatur|16pol Wanne zum Verbinden des Netzteils und der Streifen]]&lt;br /&gt;
[[Datei:Wclock24h-Spannungsvergung-Streifen.jpg|miniatur|Anschluss der Streifen an die Spannungsversorgung]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;WordClock12h:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Am besten verwendet man eine Alu-Platte (1mmx310mmx310mm).&lt;br /&gt;
Der Aufbau ist analog zu der WordClock 24h zu betrachten. Der Unterschied liegt darin, dass bei der WC12h die LED Streifen mit dem Sonderabstand benutzt werden und dieser in 10 Streifen a 11 LEDs geteilt wird. Sowie in 4 Einzel LEDs für die Minutenanzeigen in den Ecken.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Verbindung der Streifen erfolgt dann analog zu der oben beschriebenen Weise.&lt;br /&gt;
|| &lt;br /&gt;
[[Datei:Aufbau WC12h WS2812.jpg|mini]]&lt;br /&gt;
Aufgebaute WC12h mit WS2812 Streifen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Zwischenböden ==&lt;br /&gt;
Es gibt insgesamt 3 Varianten der Zwischenböden.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwei Varianten für die WordClock 12h (mit und ohne Ambilight Aussparungen) und eine Variante für die WordClock 24h&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h OHNE Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden ohne Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden ohne Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 12h MIT Ambilight Aussparungen&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC12h Boden mit Hinten.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC12h Boden mit Vorne.jpeg|mini|Vorderseite]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 OHNE Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h Boden Rueckseite.jpeg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Vorderseite.jpeg|mini|Vorderseite]]&lt;br /&gt;
||[[Datei:WC24h Boden Rueckseite schraeg.jpeg|mini|Rückseite schräg]]&lt;br /&gt;
||&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| WordClock 24h v2 mit Ambilight&lt;br /&gt;
|-&lt;br /&gt;
|[[Datei:WC24h MIT Ambilight-innen.jpg|mini|Rückseite]]&lt;br /&gt;
||[[Datei:WC24h MIT Ambilight-aussen.jpg|mini|Vorderseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
(in Arbeit)&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Shields für STM32 MiniDev und Nucleo Board ==&lt;br /&gt;
Hier werden nur die aktuellen Versionen der Shields beschrieben.&amp;lt;br&amp;gt;&lt;br /&gt;
[[WordClock_mit_WS2812#Historie_der_Hardware-Versionen|Ältere HW Versionen sind im Anhang aufgeführt]]&amp;lt;br&amp;gt;&lt;br /&gt;
=== Shield für STM32 MiniDevBoard ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das MiniDevBoard in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R16 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP13 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) und JP12 (Prog/Run) wurde um 90° gedreht&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Ein Bild folgt noch.&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden. Bild zeigt die v4 mit RTC, TSOP, AMS1117, ESP12, Spannungsabschaltung, LDR&lt;br /&gt;
||[[Datei:MiniDev_v4_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zum Stromstecker (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V4:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32F411 Nucleo Board ===&lt;br /&gt;
Vorgestellt wird hier das Shield für das Nucleo Board in der aktuellen Version 4 - OTA.&amp;lt;br&amp;gt;&lt;br /&gt;
Im Aufdruck des v4 hat sich der Fehlerteufel eingeschlichen. Der Aufdruck spricht noch von der Version3. Version 4 ist aber gut an den vergoldeten Lötpads zu erkennen. V3 hat die Lötpäds versilbert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v4 enthält folgende Anpassungen:&lt;br /&gt;
* R15 wurde neu hinzugefügt - Pull-Up Widerstand wenn kein TSOP verbaut wird&lt;br /&gt;
* JP11 wurde neu hinzugefügt - Damit sind vom DS3231 die Pins 32K und SQW auf einen Pin-Header geführt und können so für ggf spätere Erweiterungen genutzt werden. Derzeit ohne Funktion und braucht nicht bestückt zu werden.&lt;br /&gt;
* JP6 (UART) wurde neu positioniert und liegt nun nicht mehr unter dem Nucleo Board&lt;br /&gt;
* JP8 (SWD) wurde neu hinzugefügt&lt;br /&gt;
* ENIG Ausführung&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Bild folgt noch&amp;lt;br&amp;gt;&lt;br /&gt;
||BILD FOLGT&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board. Bild zeigt noch die v3&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 ist durch den Punkt markiert im Bestückungsdruck).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V4:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v4_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Tischversion der WC12h aus dem 3D Drucker ==&lt;br /&gt;
[[Datei:WC12h_desk_printed.JPG|mini]]&lt;br /&gt;
&lt;br /&gt;
Wer Zugriff auf einen 3D Drucker mit einem Druckbereich &amp;gt;= 180x190mm hat, der findet bei Thingiverse 3D Modelle für alle unterstützten Sprachversionen der Software. Die Modelle der WC12h sind recht einfach zu drucken und sollten sich eigentlich mit so ziemlich jedem Gerät realisieren lassen. Wenn eine Version mit eingebautem Diffusor gedruckt werden soll, steht und fällt das Vorhaben mit der Ausrichtung des Druckbetts. Schon ein Versatz von 0.1mm über die gesamte Fläche kann hier das Druckergebnis ziemlich negativ beeinträchtigen. Aber in der Regel kennen die Besitzer solcher Geräte ja die Stolpersteine. Falls euer Druckbett nicht wirklich gerade, oder nicht sauber ausgerichtet ist, könnt ihr zur Not einfach eine Version ohne Diffusor drucken und diesen dann in Eigenregie erstellen (Butterbrotpapier, Milchglasfolie, usw.).&amp;lt;br&amp;gt;&lt;br /&gt;
[[Datei:WC12h_desk_beleuchtet.jpg|mini]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Die Displaymatrix der 3D Modelle ist wegen der kleinen Größe der Uhr für den Abstand eines 90LED/m Streifens (11.11mm) ausgelegt, die man z.B. bei eBay, Aliexpress und Konsorten kaufen kann. Ich habe Anfang des Jahres ca. 12 USD inkl. Versand für einen Meter WS2812B mit 90 LEDs pro Meter bei Aliexpress bezahlt, bei 2 Metern habt ihr also Kosten von etwas über 22 Euro für die Streifen.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Update 10/2017&#039;&#039;&#039;: Wegen der mittlerweile schlechten Verfügbarkeit der 90LED/m habe ich Modelle für 96LED/m Streifen ergänzt.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In Sachen Ambilight gibt es hier 2 verschiedene Deckel zur Auswahl, mit denen ihr z.B. den Sekundenzeiger der Uhr oder das Ambilight als Gehäusebeleuchtung benutzen könnt. Im Deckel ist jeweils ein Kreis für die Anbringung der Streifen vorhanden. Der Umfang der Kreise ist berechnet für den Einsatz von 30 LEDs eines 60 LED pro Meter Streifens, bzw. 60 LEDs eines 144 LED pro Meter Streifens. Achtet darauf hier nicht unterschiedliche LED Typen zu mischen (z.B. SK6812 für die Matrix und WS2812 für das Ambilight)! Ich persönlich habe gute Erfahrungen mit den LEDs von &amp;quot;BTF Lighting&amp;quot; bei Aliexpress gemacht.&lt;br /&gt;
&lt;br /&gt;
Hier geht es zur [http://www.thingiverse.com/thing:2130830 WordClock 12h (desk clock edition) bei Thingiverse]&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Sammelbestellungen =&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung LED Stripes, Zwischenböden, Shields ==&lt;br /&gt;
Für die WC12h Variante der WordClock werden WS2812 Stripes als Spezialanfertigung mit einem Rastermaß von 28,1mm eingesetzt.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;WS2812 Pakete&#039;&#039;&#039; angeboten (WC12h):&lt;br /&gt;
* Paket 5 (Uhr - STM32 Basis - WS2812) - 40,80Eur : 120 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
* Paket 6 (Ambilight - STM32 Basis - WS2812) - 20,40Eur : 60 WS2812-LEDs als Stripe im Sonderabstand&lt;br /&gt;
(durch die Umstellung des Ambilight Paketes auf 60 LEDs, kann die umlaufende Sekundenanzeige realisiert werden)&lt;br /&gt;
&lt;br /&gt;
Für die WC24h werden die WS2812 Stripes nicht über eine Sammelbestellung bestellt, da hier das Standardformat genutzt wird.&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Zwischenböden&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Zwischenboden (WC12h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC12h) mit Ambilightausfräsung (MDF 19mm gefräst) - 39,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) ohne Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
* Zwischenboden (WC24h) mit Ambilightausfräsung (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Es werden folgende &#039;&#039;&#039;Shields&#039;&#039;&#039; angeboten:&lt;br /&gt;
* Shield für STM32 MiniDevBoard - 3,50Eur&lt;br /&gt;
* Shield für STM32 NucleoBoard - 5,50Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der Shields&#039;&#039;&#039; erfolgt als Großbrief:&lt;br /&gt;
* innerhalb BRD – 4,00Eur&lt;br /&gt;
* Österreich – 6,00Eur&lt;br /&gt;
* Schweiz - 6,00Eur&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand der WS2812-Stripes&#039;&#039;&#039; erfolgt als kleines Paket:&lt;br /&gt;
* innerhalb BRD (ohne Inseln) – 6,50Eur&lt;br /&gt;
* Österreich – 15,50Eur&lt;br /&gt;
* Schweiz – in die Schweiz kann nur als normales Paket versendet werden, Kosten hierzu siehe unten&lt;br /&gt;
&lt;br /&gt;
Der &#039;&#039;&#039;Versand mit Zwischenboden&#039;&#039;&#039; erfolgt als normales Paket:&amp;lt;br&amp;gt;&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 10,00Eur (bis 2 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 12,00Eur (bis 4 Böden)&lt;br /&gt;
* innerhalb BRD (ohne Inseln) - 18,00Eur (ab 5 Böden)&lt;br /&gt;
* Österreich – 20,00Eur (bis 2 Böden)&lt;br /&gt;
* Österreich – 25,00Eur (bis 4 Böden)&lt;br /&gt;
* Schweiz - 31,00Eur (bis 2 Böden)&lt;br /&gt;
* Schweiz - 40,00Eur (bis 4 Böden)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Es fallen jeweils nur die höheren Versandkosten an.&amp;lt;br&amp;gt;&lt;br /&gt;
Werden mehrere Pakete bestellt, können die tatsächlichen Versandkosten von den hier gezeigten Versandkosten abweichen. Diese ist dann von der bestellten Menge und dem Gewicht abhängig und wird dann entsprechend mitgeteilt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei Interesse bitte per PN melden (Benutzer [http://www.mikrocontroller.net/user/show/wawibu wawibu])&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Zeitplanung&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=1&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Datum&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Aktion&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;bis 06.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Sammeln der Bestellungen&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;09.Oktober 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Bestellung geht raus&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~10.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Anlieferung bei mir&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;~17.November 2017&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;Versand&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Wordclock-front-dia.jpg|miniatur|Frontplatte: Dia]]&lt;br /&gt;
[[Datei:Wordclock-front-full.jpg|miniatur|Frontplatte: Vollansicht]]&lt;br /&gt;
[[Datei:WordClock-gelb.jpg|miniatur|4-sprachige Frontplatte]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatten bleiben identisch zu denen aus dem früheren [[Word Clock|WordClock]]-Projekt. &lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version, die auch für die Sammelbestellung gilt:&lt;br /&gt;
&lt;br /&gt;
 E S K I S T L F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; ES IST FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z E H N Z W A N Z I G    &amp;lt;nowiki&amp;gt;==&amp;gt; ZEHN ZWANZIG&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 D R E I V I E R T E L    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI|VIERTEL&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 T G N A C H V O R J M    &amp;lt;nowiki&amp;gt;==&amp;gt; NACH VOR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 H A L B Q Z W Ö L F P    &amp;lt;nowiki&amp;gt;==&amp;gt; HALB ZWÖLF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 Z W E I N S I E B E N    &amp;lt;nowiki&amp;gt;==&amp;gt; ZW|EI|N|S|IEBEN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 K D R E I R H F Ü N F    &amp;lt;nowiki&amp;gt;==&amp;gt; DREI FÜNF&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 E L F N E U N V I E R    &amp;lt;nowiki&amp;gt;==&amp;gt; ELF NEUN VIER&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 W A C H T Z E H N R S    &amp;lt;nowiki&amp;gt;==&amp;gt; ACHT ZEHN&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 B S E C H S F M U H R    &amp;lt;nowiki&amp;gt;==&amp;gt; SECHS UHR&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Damit ist es möglich, vier regionale Sprechweisen darzustellen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wessi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rhein-Ruhr-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel nach eins&lt;br /&gt;
  es ist zwanzig nach eins&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor zwei&lt;br /&gt;
  es ist viertel vor zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ossi-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zehn vor halb zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zehn nach halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schwaben-Modus:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  es ist ein uhr&lt;br /&gt;
  es ist fünf nach eins&lt;br /&gt;
  es ist zehn nach eins&lt;br /&gt;
  es ist viertel zwei&lt;br /&gt;
  es ist zwanzig nach zwei&lt;br /&gt;
  es ist fünf vor halb zwei&lt;br /&gt;
  es ist halb zwei&lt;br /&gt;
  es ist fünf nach halb zwei&lt;br /&gt;
  es ist zwanzig vor halb zwei&lt;br /&gt;
  es ist dreiviertel zwei&lt;br /&gt;
  es ist zehn vor zwei&lt;br /&gt;
  es ist fünf vor zwei&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC12h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also bitte auch in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Minutenpunkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;WC12h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC12h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC12h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise pro Stück:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 42,- EUR.&lt;br /&gt;
   - weiß: 49,- EUR.&lt;br /&gt;
   - rot: 49,- EUR.&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Aus der letzten Sammelbestellung sind aufgrund einer Fehlproduktion der Druckerei von den schwarzen WC12h noch WC12h-Frontplatten übrig, welche 3,5mm kleiner sind, also lediglich 446,5mm x 446,5mm statt 450mm x 450mm groß sind. Diese lassen sich nur mit einem Rahmen - wie z.B. dem im Artikel empfohlenen Alu-Rahmen einsetzen. Für den rahmenlosen Einsatz eignen sie sich eher nicht, weil dann der Zwischenboden leicht übersteht. Auf diese Frontplatten gebe ich einen Preisnachlass von 10,- EUR.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet alle 4 Sprachversionen:&lt;br /&gt;
&lt;br /&gt;
* Wessi-Modus (viertel nach/vor)&lt;br /&gt;
* Ossi-Modus (viertel/dreiviertel)&lt;br /&gt;
* Rhein-Ruhr-Modus (viertel nach/vor, zwanzig nach/vor)&lt;br /&gt;
* Schwaben-Modus (viertel/dreiviertel, zwanzig nach/vor)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC12h Sammelbestellung Edelstahl Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:Edelstahl126.jpg|miniatur]][[Datei:Edelstahl139.jpg|miniatur]][[Datei:Edelstahl092.jpg|miniatur|Loch]][[Datei:Edelstahl116.jpg|miniatur|Buchstabe]]&lt;br /&gt;
Eckdaten der Edelstahlblende:&lt;br /&gt;
&lt;br /&gt;
  - Abmessungen: ca. 450x450x1 mm &lt;br /&gt;
  - gelasert gem. dxf Vorgabe, &lt;br /&gt;
  - Material 1.4301-2G, &lt;br /&gt;
  - eins. K320 geschliffen/gebürstet, &lt;br /&gt;
  - ohne weitere Nachbearbeitung, &lt;br /&gt;
  - Layout unterscheidet sich von der Originaluhr&lt;br /&gt;
&lt;br /&gt;
Verwendet wird hierbei die Schriftart Lucida Console allerdings erweitert. Die Schriftart hat Stege, so dass freie Inselteile (z.&amp;amp;nbsp;B. Innenteil O) nicht lose sind. Jeder Steg hat eine Breite von mind. 2mm.&lt;br /&gt;
[[Datei:Edelstahlfront_V2.png|miniatur|ohne]]&lt;br /&gt;
Die Buchstaben werden entsprechend ausgelasert und müssen von hinten noch mit einem Diffusor versehen werden. Der Diffusor ist nicht Bestandteil des Angebots. &lt;br /&gt;
&lt;br /&gt;
Hinweise zum Diffusor findet ihr hier: &amp;lt;br /&amp;gt;&lt;br /&gt;
http://christians-bastel-leben.blogspot.de/2012/04/diffusorfolien.html&lt;br /&gt;
&lt;br /&gt;
Er hat die Folien mit der schwarzen Platte getestet. Er sagt die besten Ergebnisse hatte er mit folgender Folie:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.plexiglas-shop.com/DE/de/plexiglas-folie-5m9m5apyxic/plexiglas-folie-weiss-99532-gt-1-0-mm-iqq6a1wurpd~p.html&lt;br /&gt;
&lt;br /&gt;
Eine Plexiglasplatte hatte ich auch getestet, doch war meine zu breit und sah dann nicht gut aus.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aktueller Stand: 26.11.2017: Sammelbestellung ist aufgegeben. Habe noch Blenden übrig. Bei Bedarf einfach melden.  (Benutzer [http://www.mikrocontroller.net/user/show/hansa hansa]). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Preise der Blenden:&lt;br /&gt;
&lt;br /&gt;
  Frontblende:                  44 Euro (inkl.MwSt)&lt;br /&gt;
  Verpackung :                   5,-  Euro (2 x 3mm MDF, als Rückwand verwendbar)&lt;br /&gt;
  Versand per GLS: 5 Euro&lt;br /&gt;
  Versand in die Schweiz: 8 Euro (wird direkt in der Schweiz verschickt)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Für den Selbstnachbau hier die DXF-Datei [[Datei:EdelstahlFrontV2.dxf]]&lt;br /&gt;
&lt;br /&gt;
ACHTUNG: Diese Dateidaten müssen um Faktor 10 vergrössert werden!&lt;br /&gt;
Sonst kommt eine 45x45mm Platte an. 8-(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung LED Stripes ==&lt;br /&gt;
&lt;br /&gt;
Eine Sammelbestellung der LED-Stripes für die WC24h ist derzeit nicht geplant, da hier WS2812-Stripes mit dem Standard-Rastermaß von 60 LEDs/m benötigt werden. Diese sind sehr einfach bei eBay oder Amazon erhältlich.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Zwischenböden ==&lt;br /&gt;
&lt;br /&gt;
Wir können nun auch die WC24h Zwischenböden über die Sammelbestellung anbieten.&lt;br /&gt;
&lt;br /&gt;
* Zwischenboden für Wordclock 24h (MDF 19mm gefräst) - 62,50Eur&lt;br /&gt;
&lt;br /&gt;
Alle Details zu der Sammelbestellung ist weiter oben bei der [[WordClock_mit_WS2812#WC12h_Sammelbestellung_LED_Stripes_und_Zwischenb.C3.B6den|WC12h Sammelbestellung beschrieben]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== WC24h Sammelbestellung Frontplatten ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:WordClock24h-Frontplatte-800x800.png|400px|right|WordClock24h]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-Frontplatte-rot.jpg||right|WordClock24h-rot]]&lt;br /&gt;
&lt;br /&gt;
Die Frontplatte beinhaltet über ein Dutzend Sprachvarianten:&lt;br /&gt;
&lt;br /&gt;
* hh mm (12)&lt;br /&gt;
* hh mm (24)&lt;br /&gt;
* hh und mm (12)&lt;br /&gt;
* hh und mm (24)&lt;br /&gt;
* mm nach hh (12+)&lt;br /&gt;
* mm nach hh (24)&lt;br /&gt;
* Ossi/Berlin (12)&lt;br /&gt;
* Ossi/Berlin (12+)&lt;br /&gt;
* Oesi (12)&lt;br /&gt;
* Oesi (12+)&lt;br /&gt;
* Rhein/Ruhr (12)&lt;br /&gt;
* Rhein/Ruhr (12+)&lt;br /&gt;
* Schwaben (12)&lt;br /&gt;
* Schwaben (12+)&lt;br /&gt;
* Wessi (12)&lt;br /&gt;
* Wessi (12+)&lt;br /&gt;
* Countdown bis Mitternacht&lt;br /&gt;
* Temperatur&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sammelbestellung Stand November 2017:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es sind noch WC24h-Frontplatten in schwarz, weiß und rot aus der letzten Sammelbestellung übrig. Interessenten können sich bei mir (Benutzer [http://www.mikrocontroller.net/user/show/ukw &#039;&#039;&#039;ukw&#039;&#039;&#039;]) melden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;An Google-Mail-Benutzer:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
gmail scheint in letzter Zeit Antwort-Mails mit µc.net im Betreff gerne in den Spam-Ordner zu schieben. Schaut also ab und zu in Euren Spam-Ordner, wenn Ihr auf eine Antwort wartet.&lt;br /&gt;
&lt;br /&gt;
Die Platten bestehen aus einer Plexi-Scheibe (3mm) in der Größe 45cm x 45cm und werden im Siebdruckverfahren (schwarz) bzw. im Digitaldruck (rot bzw. weiß) bedruckt. Die Lichtdichtigkeit wird durch das Auftragen mehrerer Farbschichten hergestellt. Für die Buchstaben und Punkte wird eine dünne weiße Schicht als Diffusor (Milchglaseffekt) verwendet.&lt;br /&gt;
&lt;br /&gt;
Während bei den schwarzen Frontplatten die Buchstaben sehr gut optisch isoliert voneinander sind, bildet sich bei den weißen Platten prinzipbedingt um die leuchtenden Buchstaben herum eine Art &amp;quot;Halo&amp;quot;. Das liegt daran, dass das Licht sich beim Eintritt in die Acrylglasplatte nach allen Seiten ausbreitet. Bei den schwarzen sieht man das wegen des schwarzen &amp;quot;Hintergrundes&amp;quot; nicht, bei den weißen jedoch schon. Dieser Effekt kann aber auch als Vorteil angesehen werden. Das ist eher Geschmackssache. Bei den roten Platten ist dieser Halo-Effekt weit weniger zu sehen, aber vorhanden.&lt;br /&gt;
&lt;br /&gt;
Diese Variante heisst &#039;W24h&#039;:&lt;br /&gt;
&lt;br /&gt;
  - WC24h: 45cm x 45cm schwarze Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-R: 45cm x 45cm rote Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
  - WC24h-W: 45cm x 45cm weiße Grundfarbe mit weißer Schicht als Diffusor&lt;br /&gt;
&lt;br /&gt;
Preise:&lt;br /&gt;
&lt;br /&gt;
   - schwarz: 44,- EUR&lt;br /&gt;
   - weiß: 49,- EUR&lt;br /&gt;
   - rot: 49,- EUR&lt;br /&gt;
&lt;br /&gt;
Der höhere Preis für die roten und weißen Frontplatten kommt durch die geringere Auflage zustande.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommen noch 10 EUR für Verpackungs- und Versandkosten für bis zu 4 Stück in einem Paket. Bei Versand in ein EU-Land kommen weitere 10 EUR hinzu, also insgesamt 20 EUR.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Frontplatte wird mit einer kaum wahrnehmbaren Schutzfolie auf der Vorder- &#039;&#039;&#039;und&#039;&#039;&#039; Rückseite geliefert. Wenn man das nicht weiß, kann es so aussehen, als ob die Frontplatte &amp;quot;verkratzt&amp;quot; sei. Diese &amp;quot;Kratzer&amp;quot; sind aber nur auf der Schutzfolie, nicht auf der Platte selbst. Daher hier nochmal der ausdrückliche Hinweis: Bitte die Schutzfolie unmittelbar vor der Montage abziehen und sich dann freuen :-)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kleber welcher den Aufdruck nicht beschädigt:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- UHU plus endfest 300 2K-Epoxidkleber&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Anhang =&lt;br /&gt;
&lt;br /&gt;
== API ==&lt;br /&gt;
&lt;br /&gt;
Die ESP8266-Firmware bietet eine API, über welche die Uhr konfiguriert werden kann. Diese API wird zum Beispiel von der Android-App genutzt, um die wichtigsten Einstellungen vorzunehmen. Allerdings ist die Kommunikation über die API momentan nur &amp;quot;One-Way&amp;quot;, d.h. es können nur Befehle gesandt werden, aber keine momentanen Einstellungen abgerufen werden. Das wird zukünftig noch geändert, so dass auch sämtliche Konfigurationsparameter abgerufen und eingestellt werden können - analog zum Webinterface.&lt;br /&gt;
&lt;br /&gt;
Der ESP8266 horcht auf UDP-Port 2424, die UDP-Messages sind zwischen 1 und 7 Bytes lang. Das erste Zeichen ist immer ein Buchstabe, z.B. &#039;C&#039;. Die weiteren Parameter sind jeweils Bytes, welche binär codiert sind, also 1 Parameter = 1 Byte. Es wird KEIN Abschluss-Zeichen, etwa ein &#039;\n&#039; oder sonstiges gesandt.&lt;br /&gt;
&lt;br /&gt;
=== API Kommandotabelle ===&lt;br /&gt;
&lt;br /&gt;
 C r g b [w]    - Farben (Colors) setzen&lt;br /&gt;
                    r =  0 ... 63        Rot&lt;br /&gt;
                    g =  0 ... 63        Grün&lt;br /&gt;
                    b =  0 ... 63        Blau&lt;br /&gt;
                    w =  0 ... 63        Weiß (nur bei SK6812-RGBW)&lt;br /&gt;
&lt;br /&gt;
 D m            - Anzeigemodus (Display-Mode) setzen&lt;br /&gt;
                  WC12h:&lt;br /&gt;
                    m =  0               Wessi&lt;br /&gt;
                    m =  1               Ossi&lt;br /&gt;
                    m =  2               Rhein-Ruhr&lt;br /&gt;
                    m =  3               Schwaben&lt;br /&gt;
                    m =  4               Schweizerdeutsch 1&lt;br /&gt;
                    m =  5               Schweizerdeutsch 2&lt;br /&gt;
                    m =  4               Englisch 1&lt;br /&gt;
                    m =  5               Englisch 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  WC24h:&lt;br /&gt;
                    m =  0               hh mm (12)&lt;br /&gt;
                    m =  1               hh mm (24)&lt;br /&gt;
                    m =  2               hh und mm (12)&lt;br /&gt;
                    m =  3               hh und mm (24)&lt;br /&gt;
                    m =  4               mm nach hh (12+)&lt;br /&gt;
                    m =  5               mm nach hh (24)&lt;br /&gt;
                    m =  6               Ossi/Berlin (12)&lt;br /&gt;
                    m =  7               Ossi/Berlin (12+)&lt;br /&gt;
                    m =  8               Oesi (12)&lt;br /&gt;
                    m =  9               Oesi (12+)&lt;br /&gt;
                    m = 10               Rhein/Ruhr (12)&lt;br /&gt;
                    m = 11               Rhein/Ruhr (12+)&lt;br /&gt;
                    m = 12               Schwaben (12)&lt;br /&gt;
                    m = 13               Schwaben (12+)&lt;br /&gt;
                    m = 14               Wessi (12)&lt;br /&gt;
                    m = 15               Wessi (12+)&lt;br /&gt;
&lt;br /&gt;
 A a            - Animation setzen&lt;br /&gt;
                    a =  0               Keine Animation&lt;br /&gt;
                    a =  1               Keine&lt;br /&gt;
                    a =  2               Fade&lt;br /&gt;
                    a =  3               Roll&lt;br /&gt;
                    a =  4               Explode&lt;br /&gt;
                    a =  5               Random&lt;br /&gt;
                    a =  6               Snake&lt;br /&gt;
                    a =  7               Teletype&lt;br /&gt;
                    a =  8               Cube&lt;br /&gt;
                    a =  9               Matrix&lt;br /&gt;
                    a = 10               Drop&lt;br /&gt;
                    a = 11               Squeeze&lt;br /&gt;
                    a = 12               Flicker&lt;br /&gt;
&lt;br /&gt;
 F f            - Farbanimation setzen&lt;br /&gt;
                    f =  0               Farbanimation aus&lt;br /&gt;
                    f =  1               Farbanimation Rainbow&lt;br /&gt;
&lt;br /&gt;
 B b            - Helligkeit (Britghtness) setzen&lt;br /&gt;
                    b =  0 ... 15        Helligkeit&lt;br /&gt;
&lt;br /&gt;
 L l            - Automatische Helligkeitsregelung&lt;br /&gt;
                    l =  0               Regelung aus&lt;br /&gt;
                    l =  1               Regelung an&lt;br /&gt;
&lt;br /&gt;
 P p            - Power&lt;br /&gt;
                    p =  0               Power off&lt;br /&gt;
                    p =  1               Power on&lt;br /&gt;
&lt;br /&gt;
 W              - Temperaturanzeige aktivieren&lt;br /&gt;
&lt;br /&gt;
 T y m d h i s  - Datum/Zeit (Time) setzen:&lt;br /&gt;
                    y =  0 ... 99        Jahr seit 2000&lt;br /&gt;
                    m =  1 ... 12        Monat&lt;br /&gt;
                    d =  1 ... 31        Tag im Monat&lt;br /&gt;
                    h =  0 ... 23        Stunde&lt;br /&gt;
                    i =  0 ... 59        Minute&lt;br /&gt;
                    s =  0 ... 59        Sekunde&lt;br /&gt;
&lt;br /&gt;
 gT x           - Tetris&lt;br /&gt;
                    x = s                Tetris starten&lt;br /&gt;
                    x = l                Links&lt;br /&gt;
                    x = r                Rechts&lt;br /&gt;
                    x = d                Unten&lt;br /&gt;
                    x = u                Hoch (hier: Drehen)&lt;br /&gt;
                    x = m                Fallenlassen&lt;br /&gt;
                    x = q                Quit: Beenden&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Historie der Hardware-Versionen ==&lt;br /&gt;
=== Shield für STM32 MiniDevBoard (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des MiniDev Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board ist 38x110mm und verbindet alle Komponenten miteinander.&amp;lt;br&amp;gt;Dieses Board ist die optimale Variante für die klassische 10x11 WordClock. Es enthält alle Schnittstellen für die WordClock und ist für die WC12 als auch für die WC24 Variante geeignet.&lt;br /&gt;
&#039;&#039;&#039;Bei dieser Version (März 2016) sind die Anschlüsse für den UART auf dem Shield so beschriftet, dass (ausnahmsweise) TX -&amp;gt; TX und RX -&amp;gt; RX verbunden werden müssen.&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:MiniShield Vorderseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite&lt;br /&gt;
||[[Datei:MiniShield Rueckseite.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board soweit bestückt - es fehlt hier noch das STM32. Das STM32 MiniDevBoard sollte direkt ohne weiteren Sockel auf das Shield gelötet werden.&lt;br /&gt;
||[[Datei:MiniShield Bestueckt.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Hier nun das vollbestückte Shield, incl STM32, ESP8266, RTC, DS1820, AMS1117&lt;br /&gt;
||[[Datei:MiniShield Bestueckt incl STM32.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards:&amp;lt;br&amp;gt;Einzige Abweichung: +5V ist an die UART Schnittstelle mit raus geführt.&lt;br /&gt;
||[[Datei:MiniShield Schaltplan.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v2 enthält folgende Anpassungen:&lt;br /&gt;
* am UART ist nun auch +5V ausgeführt&lt;br /&gt;
* Rastabstand bei DS3231, TSOP, LDR, Data sind nun einheitlich und können somit mit einem durchgehenden PinHeader bestückt werden&lt;br /&gt;
* die Pins für das DS3231 sind gespiegelt. Damit liegt die Batterie nun oben und steht nicht mehr nach unten über&lt;br /&gt;
* Es wurde die Abschaltschaltung für die 5V Versorgung der WS2812 Streifen eingebaut. Somit kann optional die Versorgungsspannung geschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|| [[Datei:MiniDev v2 TOP.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Board von der Rückseite.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Im Lieferzustand ist die Abschaltschaltung gebrückt. Wird die Abschaltschaltung eingebaut, muss auf der Unterseite eine Leiterbahn durchtrennt werden! Diese ist hier rot umrandet!&#039;&#039;&#039;&lt;br /&gt;
||[[Datei:MiniDev v2 BOTTOM.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bestückte Bilder folgen noch.&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDevBoards als V2:&lt;br /&gt;
||[[Datei:MiniDev v2 Schematic.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurden zwei Taster (WPS / User) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte MiniDev Shield:&amp;lt;br&amp;gt;&lt;br /&gt;
Das MiniDev Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:MiniDev_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Bei bestückten STM32 kann man gut erkennen, dass leider der 4-Pin-Header für den UART Anschluss sowie der 3-Pin-Header für PROG/RUN jeweils mit einem Pin unter dem Shield liegen.&lt;br /&gt;
* Beim UART Anschluss wird einfach nur ein 3-Pin-Header verwendet und +5V nicht angeschlossen. Was keine Funktionsbeeinträchtigung bedeutet.&lt;br /&gt;
* Der 3-Pin-Header für PROG/RUN kann &#039;&#039;&#039;nicht direkt&#039;&#039;&#039; bestückt werden. Stattdessen muss hier mit einer 3-adrigen-Verlängerung gearbeitet werden.&lt;br /&gt;
Vom STM32 wird der obere Jumper abgezogen und der mittlere Anschluss mit dem BOOT0 Pin auf dem Shield verbunden.&lt;br /&gt;
||[[Datei:MiniDev_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, muss nur die zusätzlich notwendigen Bauteile bestückt werden&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden (als Draht kann z.B. das abgeknipste Ende eines Widerstandes genutzt werden, für die WC24h dann ggf. zwei Drähte nutzen).&lt;br /&gt;
||[[Datei:MiniDev_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des MiniDev Shields als V3:&lt;br /&gt;
||[[Datei:WC_MiniDev_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Shield für STM32 Nucleo-Board (ältere Versionen) ===&lt;br /&gt;
Vorgestellt werden hier ältere Versionen des Nucleo Shields.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 1:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Shield ist 90mm*55mm klein und wird auf das nucleo-Board aufgesteckt. Es enthält alle bekannten Schnittstellen für die WordClock (egal ob 12h oder 24h) und ist zusammengebaut ca 19mm hoch.&lt;br /&gt;
Es passt somit problemlos in eine Aussparung des Zwischenbodens.&lt;br /&gt;
|| [[Datei:Ns-Bild1.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Ebenfalls integriert sind Anschlüsse, um den abgesägten ST-Link zur Programmierung oder Kommunikation über UART mit dem PC zu verbinden. Dabei muss der abgesägte ST-Link von interner auf externe Programmierung umgestellt werden. Dazu zieht man beide Jumper an CN2 auf dem ST-Link (rechts neben dem SWD-Header) ab. Wichtig ist, auch noch eine Verbindung vom SWD-Header Pin1 (VDD ganz oben) zu 3V3 des Nucleo-Teils herzustellen. Das ST-Link misst über VDD -&amp;gt; 3V3 die Betriebsspannung des STM32.&lt;br /&gt;
&lt;br /&gt;
||[[Datei:STLink-to-Nucleo.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beschreibung der Schnittstellen:&lt;br /&gt;
Die Belegung der meisten Schnittstellen ergibt sich aus den nebenstehenden Bildern.&lt;br /&gt;
Um das RTC Modul, welches entweder ein DS3231 oder ein DS1307 sein kann, mit Spannung zu versorgen, gibt es die Stiftleiste St-07, welche mit einem Jumper die Spannung am RTC Modul auf 3,3V oder 5V einstellt.&lt;br /&gt;
Die Stiftleiste St-04 kann per Pfostenfeldbuchse und Flachbandkabel insgesamt 8 mal die Spannung in die WS2812 Streifen einspeisen (siehe Beispiel weiter oben im Artikel).&lt;br /&gt;
||[[Datei:Ns-sh2.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| In dem nebenstehenden Bild ist das bestückte Nucleo Board zu sehen. Die einzelnen Module werden hier rechts und links an den überstehenden Pins angebracht.&lt;br /&gt;
||[[Datei:Nucleo_bestueckt.JPG|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 2:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Seit Juli 2016 wird das Nucleo-Shield in der Version V2.1a ausgeliefert.&lt;br /&gt;
&lt;br /&gt;
Es enthält jetzt auch die Möglichkeit, die Abschaltung der WS2812 LEDs per Hardware vorzunehmen. Dazu wurden die entsprechenden Bauteile auf das Board gepackt.&lt;br /&gt;
Außer dem Leistungs MOSFET IRF9310 wurde alles in bedrahteter Technik ausgeführt.&lt;br /&gt;
Wer die Bauteile für die Abschaltung (T1, T2, D1, R7, R8 und R9) NICHT einbaut, muss, wie in nebenstehendem Bild gezeigt, vier Lötbrücken einbauen.&lt;br /&gt;
&lt;br /&gt;
Analog dazu muss derjenige, der die Abschaltung einbaut, die Lötbrücken offen lassen (siehe unteres Bild, roter Kreis).&lt;br /&gt;
|| [[Datei:IMG 0366mod.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der Anschluss der externen Komponenten erfolgt nach neben stehendem Schaltplan an das nucleo Board.&lt;br /&gt;
|| [[Datei:Nucleo-Shield.jpg|miniatur]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Leider haben sich zwei Bugs in den Platinenentwurf eingeschlichen.&lt;br /&gt;
Zum einen gibt es Kurzschlüsse an den Pluspolen der Kondensatoren C1 und C3. Der Workaround besteht darin, das Bohrloch etwas aufzuweiten, um die ungewünschte Verbindung zu Masse zu trennen (siehe Bild)&lt;br /&gt;
|| [[Datei:NS Bug-1.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Der zweite Bug betrifft nur diejenigen, die die hardwaremäßige Abschaltung der WS2812 LEDs einbauen.&lt;br /&gt;
Hier muss, wie im nebenstehenden Bild gezeigt, eine kleine Verbindung mit einem Stück Kabel hergestellt werden.&lt;br /&gt;
|| [[Datei:NS Bug-2.jpg|mini]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Das Shield muss über St-08 mit 5V versorgt werden. Die für die Schnittstellen benötigten 3,3V wird auf dem Shield selbst mit einem LM3940-3.3 erzeugt.&lt;br /&gt;
&lt;br /&gt;
Hier findet ihr die Stückliste zum Nucleo-Board und den Link zum öffentlichen Reichelt Warenkorb (noch ohne T1, T2, D1, R7, R8 und R9).&lt;br /&gt;
 [[Datei:Wc24wk.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;hr&amp;gt;&#039;&#039;&#039;Version 3:&#039;&#039;&#039;&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Die v3 enthält folgende Anpassungen:&lt;br /&gt;
* Es wurden CI / DI für APA102 Stripes rausgeführt&lt;br /&gt;
* Es wurde ein Taster (WPS) hinzugefügt&lt;br /&gt;
* Im Bestückungsdruck sind nun auch die Bauteilbezeichnungen aufgeführt&lt;br /&gt;
* Wechsel auf ESP12-F&lt;br /&gt;
* Komplettes Redesign&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Bestueckung.png|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das bestückte Board:&amp;lt;br&amp;gt;&lt;br /&gt;
Das Nucleo Shield ohne bestückten STM. Auf dem Bild sind die Bauteile für folgenden Ausbau bestückt:&amp;lt;br&amp;gt;&lt;br /&gt;
* ohne TSOP&lt;br /&gt;
* ohne LDR&lt;br /&gt;
* ohne DCF&lt;br /&gt;
||[[Datei:Nucleo_v3_01.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Das Nucleo Shield mit bestücktem Nucleo-Board.&lt;br /&gt;
||[[Datei:Nucleo_v3_02.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Im Lieferzustand ist die Abschaltschaltung &#039;&#039;&#039;nicht mehr&#039;&#039;&#039; gebrückt. Daher ist nun folgendes zu beachten:&amp;lt;br&amp;gt;&lt;br /&gt;
* Wird die Abschaltschaltung eingebaut, müssen nur die zusätzlich notwendigen Bauteile bestückt werden. Hierbei zeigt die abgeflachte Kante des IRF9310 zur Platinenkante (Pin 1 befindet sich also bei &amp;quot;IRF&amp;quot; des Bestückungsdrucks).&lt;br /&gt;
* Wird die Abschaltschaltung nicht eingebaut, muss eine Drahtbrücke gesetzt werden.&lt;br /&gt;
||[[Datei:Nucleo_v3_03.jpg|mini]]&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|Der Schaltplan des Nucleo Shields als V3:&lt;br /&gt;
||[[Datei:WC_Nucleo_Shield_v3_Schaltplan.png|mini]]&lt;br /&gt;
|}&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Anschluss ESP8266 ESP-01 ==&lt;br /&gt;
&lt;br /&gt;
Das ESP-01 Modul wurde lediglich bei den älteren Shields verwendet. Mittlerweile (ab Shield v3) wird es nicht mehr verwendet, weil es durch das ESP-12F ersetzt wurde.&lt;br /&gt;
&lt;br /&gt;
[[WordClock_mit_WS2812#ESP8266|ESP8266]] ESP-01: WLAN Modul&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h-ESP8266-ESP-01.png|miniatur|Anschlussbelegung ESP8266 ESP-01 - Bauteilseite!]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA6&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4 (&#039;&#039;&#039;NEU!&#039;&#039;&#039;)&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschlüsse [[WordClock_mit_WS2812#STM32F103C8T6_Mini-Development_Board|STM32F103-Mini-Development-Board]]:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD an PA1&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 GPIO2 via 10k an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ab der Software Version 2.1.0 sind der HTML-Codegenerator und die Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266 ausgelagert. Deshalb ist ein ESP-Modul für das Betreiben der WordClock unbedingt erforderlich.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Umbau von ESP-01 auf ESP-12F ==&lt;br /&gt;
&lt;br /&gt;
Die älteren Shields, welche noch den Anschluss für den ESP-01 haben, können auf das ESP-12F umgebaut werden. Dafür besorgt man sich zusätzlich zum ESP-12F einen Adapter wie diesen hier:&lt;br /&gt;
&lt;br /&gt;
http://www.ebay.de/itm/PCB-Adapter-ESP-07-12-Board-fuer-ESP8266-WIFI-Wlan-Serial-Modul-ESP-12E-E-/252713824790&lt;br /&gt;
&lt;br /&gt;
Dieser hat die Widerstände R2 und R3 auch schon direkt auf dem Adapter. Lediglich die Widerstände R1 und R4 (siehe Schaltbilder rechts) müssen beim STM32F103-Mini-Board zusätzlich angebracht werden, siehe unten. Beim Nucleo-Board ist der Pulldown an BOOT0 bereits auf der Nucleo-Platine integriert.&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Mini-Board&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA0&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART2 RX (PA3)&lt;br /&gt;
* ESP8266 RXD   an USART2 TX (PA2)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an R (STM32F103-Mini-Development-Board RESET)&lt;br /&gt;
* ESP8266 GPIO4 an BOOT0-Jumper (Mittlerer Anschluss) und an Pulldown 10k&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Mini-Board-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-STM32F103-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an MiniBoard STM32F103]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Prinzipschaltbild für Nucleo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K1 - Dieser entspricht dem bisherigen ESP-01-Steckverbinder:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GND an GND&lt;br /&gt;
* ESP8266 VCC   an &#039;&#039;&#039;externe&#039;&#039;&#039; 3,3V (Vorsicht: Modul zieht bis zu 200mA!)&lt;br /&gt;
* ESP8266 CH_PD über 10k Pullup an 3,3V&lt;br /&gt;
* ESP8266 RST   an PA7&lt;br /&gt;
* ESP8266 GPIO0 an PA4&lt;br /&gt;
* ESP8266 TXD   an USART6 RX (PA12)&lt;br /&gt;
* ESP8266 RXD   an USART6 TX (PA11)&lt;br /&gt;
&lt;br /&gt;
Steckverbinder K2 - Zusätzliche Verbindungen:&lt;br /&gt;
&lt;br /&gt;
* ESP8266 GPIO13 an USART1 TX (Pa9)&lt;br /&gt;
* ESP8266 GPIO15 an USART1 RX (Pa10) und an Pulldown 10k&lt;br /&gt;
* ESP8266 GPIO14 an Nucleo RESET&lt;br /&gt;
* ESP8266 GPIO4 an Nucleo BOOT0&lt;br /&gt;
&lt;br /&gt;
Die Anschlüsse, die zu K1 im Prinzipschaltbild führen, können per Kabel an die 8-pol. Buchse, welche für den ESP-01 vorgesehen ist, herangeführt werden. Die Anschlüsse, die zu K2 im Schaltplan führen, müssen direkt an die entsprechenden Pins des Nucleo-Shields per zusätzlichem Kabel gelötet werden.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:ESP-12F-an-WC-Nucleo-2.6.0.png|miniatur|Prinzipschaltbild ESP8266 ESP-12F an Nucleo STM32F4xx]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Beim Mini-Board findet man den Pin BOOT0 verborgen unter dem oberen Jumper - siehe Bild rechts. Dieser muss entfernt werden. Anschließend verbindet man den ESP-12F-Anschluss D16 (GPIO16, ab Version 2.6.0: D4, also GPIO4) mit dem mittleren Pin des Jumper-Anschlusses. Bei der Gelegenheit kann dann auch der Pulldown-Widerstand R1 zwischen B00T0 und dem Nachbar-Pin (&amp;quot;0&amp;quot;) angebracht werden.&lt;br /&gt;
&lt;br /&gt;
Beim Nucleo-Board wird der Pin BOOT0 bereits per 10k Pulldown auf Low-Pegel gezogen. Hier kann der ESP-Pin GPIO16 (ab Version 2.6.0: GPIO4) direkt ohne zusätzlichen Pulldown an BOOT0 angeschlossen werden. Zu beachten ist hier lediglich, dass kein Jumper auf Pin5-7 von CN7 steckt. Dies ist aber standardmäßig sowieso nicht der Fall.&lt;br /&gt;
||&lt;br /&gt;
[[Datei:STM32F103-Bootloader-2.6.0.png|miniatur|Anschluss ESP8266 ESP-12F an BOOT0 des STM32F103-MiniBoards]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historie der Software-Versionen ==&lt;br /&gt;
=== Android App ===&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
Behobene Fehler:&lt;br /&gt;
* Animations- und Anzeigelisten konnten nicht gescrollt werden&lt;br /&gt;
* Titel der Animations- und Modus-Dialoge war falsch (%d wählen)&lt;br /&gt;
* Display Ein und Aus zeigten als Meldung immer &amp;quot;Display Ein gesendet!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Änderungen:&lt;br /&gt;
* Farbregler automatisch verbergen, wenn Regenbogen-Farbanimation gewählt wurde&lt;br /&gt;
* Automatische IP-Suche&lt;br /&gt;
* Laden und Speichern der Profile in einem Dialog zusammengefasst&lt;br /&gt;
* Info anzeigen, wenn beim Starten keine Netzwerkverbindung besteht&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Beim Start (oder auf Knopfdruck) werden die aktuellen Einstellungen von der Uhr geladen.&lt;br /&gt;
* Neu: Es können bis zu vier Profile angelegt werden, um die Einstellungen für bis zu vier Uhren zu steuern.&lt;br /&gt;
* Neu: Gamepad für Spiele wie z.B. Tetris&lt;br /&gt;
&lt;br /&gt;
==== APP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Alle aktuell vorgesehenen Animationen können nun vollständig über die App ausgewählt werden&lt;br /&gt;
* RGBW-LED-Unterstützung: Unter dem Menü &amp;quot;Einstellungen&amp;quot; kann nun eingestellt werden, dass RGBW-LEDs eingesetzt werden.&lt;br /&gt;
* Die Oberfläche ist nun &amp;quot;scrollable&amp;quot;, kann also bei kleineren Mobilgeräten, wo nicht alles draufpasst, gerollt werden.&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animationen Snake, Teletype und Cube nun auch über die App einstellbar&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelles Stellen von Datum/Uhrzeit über Menü -&amp;gt; Synchronisieren&lt;br /&gt;
* Auswählen der Farbanimation &amp;quot;Rainbow&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== APP Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Button für Temperaturanzeige eingebaut&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 Firmware ===&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Web-Seite: &amp;quot;DFPlayer&amp;quot; zum Abspielen von MP3-Tracks bei vordefinierten Ereignissen.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* OTA-Flash des STM32: Der Flash-Inhalt wird nun erst unmittelbar vor dem eigentlichen Flash-Vorgang gelöscht, d.h. nach allen Konsistenzprüfungen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix in Local Update über OTA: Es wurde in V2.6.3 immer diejenige Datei geflasht, die zuletzt über das Remote Update heruntergeladen wurde.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Korrekturen in den STM32-OTA-Flash-Routinen.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anpassung des Bootloaders an Nucleo STM32F4xx.&lt;br /&gt;
* Ambilight-Mode Clock: 5 Sekunden Marker nun an- und abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Das aktuelle Datum/Uhrzeit wurde im Webinterface nicht angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button im Webinterface&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface - ungetestet.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer - ungetestet.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Unterstützung des ESP8266 ESP-12F&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;&lt;br /&gt;
* Neues Piktogramm &amp;quot;Fireworks&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auswahl der Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Diverse Verbesserungen bei der Kommunikation zwischen STM32 und ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0b ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - Umlaute in Wettertexten wurden nicht korrekt gezeigt. Konvertierung der Umlaute von openweathermap-Inhalten von UTF8 nach ISO8859 nachgeholt.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0a ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix - beim Wechseln in den AP-Modus wurde fälschlicherweise &amp;quot;0.0.0.0&amp;quot; als IP-Adresse statt 192.168.4.1 ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Ausgabe des WLAN-Modus: WLAN-Client oder AP&lt;br /&gt;
&lt;br /&gt;
==== ESP Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler im NTP-Client behoben: Bei vorherigen Timeouts kann eine alte Uhrzeit ausgegeben werden&lt;br /&gt;
&lt;br /&gt;
=== STM32 WordClock Software ===&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Abspielen von MP3-Tracks über Mini DFPlayer bei ausgewählten Ereignissen.&lt;br /&gt;
* Neu: Sprechende Uhr.&lt;br /&gt;
* Neu: Bis zu acht Weckzeiten konfigurierbar.&lt;br /&gt;
* Neu: Advent (1-4) Overlays.&lt;br /&gt;
* Bugfix Timer-Tabellen: Bei gleichem Wochentag wurde der Timer nicht erkannt.&lt;br /&gt;
* Bugfix: Schweizerdeutsch-Layouts (WC12h)&lt;br /&gt;
* Bugfix: Board-LED leuchtet nun wieder, wenn ESP8266 über STM32 geflasht wird.&lt;br /&gt;
* Takt des STM32F411RE von 84MHz auf 100MHz erhöht.&lt;br /&gt;
* Webinterface: Neu: Power-Status Anzeige&lt;br /&gt;
* Webinterface: Neu: DFPlayer-Status-Anzeige&lt;br /&gt;
* Webinterface: Neu: Formatieren des ESP8266-SPIFFS Dateisystems&lt;br /&gt;
* ESP8266: Mehrere Bugfixes und mehr Fehlerbehandlungen im Source-Code.&lt;br /&gt;
* Vorbereitung Unterstützung der Interpretersprache NIC.&lt;br /&gt;
* Neu: Unterstützung für Nucleo STM32F446RE eingebaut - ungetestet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.6 ====&lt;br /&gt;
&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs einheitlich auf 120 erhöht.&lt;br /&gt;
* Bugfix: Ermittlung der Hardware-Konfiguration für HEX-Datei-Vorschlag beim OTA-Update korrigiert.&lt;br /&gt;
* Maximal möglichen Wert für Ticker-Verögerung (&amp;quot;Deceleration&amp;quot;) auf 16 beschränkt.&lt;br /&gt;
* Bugfix I2C-Treiber (betrifft RTC &amp;amp; EEPROM): Busy-Condition nach StopBit-Generierung wurde bisher nicht beachtet.&lt;br /&gt;
* Plausibilitäts-Tests auf EEPROM-Werte verbessert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierung: Double-Buffering für SK6812-DMA-Transfer - analog zu WS2812 in Version 2.6.4.&lt;br /&gt;
* Bugfix: Update von undefinierten EEPROM-Inhalten, welche in 2.6.x zu Hangups führen konnten.&lt;br /&gt;
* Bugfix: Nach Spielen von Tetris wurde nicht immer die aktuelle Uhrzeit wieder eingeblendet&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.4 ====&lt;br /&gt;
&lt;br /&gt;
* Verlängerung der Pausen für WS2812 auf 300us.&lt;br /&gt;
* Verschäfte Plausibilitätsprüfungen für EEPROM-Inhalte, ggfls. RESET auf Standardwerte.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Flackern bzw. versetztes Ausgabe der Display-LEDs durch Double-Buffering behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Änderung: 5-Sekunden-Marker für Ambilight-Modus &amp;quot;Clock&amp;quot; ist nun ein-/abschaltbar.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ein-/Ausschalten des Ambilights inkl. Timer funktioniert nun.&lt;br /&gt;
* Bugfix: Anzeige von Datum und Uhrzeit im Webinterface.&lt;br /&gt;
* Änderung: Schweizerdeutsch 2: Unterdrückung der Anzeige von &amp;quot;UHR&amp;quot;.&lt;br /&gt;
* EmBitz: Compiler-Optimierung von -O2 auf -Os gesetzt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: WPS Button, damit ESP8266 sich per WPS mit dem Router (AccessPoint) verbinden kann.&lt;br /&gt;
* Neu: Liste der verfügbaren Access-Points im Webinterface.&lt;br /&gt;
* Neu: Abschaltbares Ambilight per WebInterface.&lt;br /&gt;
* Neu: Ein-/Ausschalten des Ambilights über Timer.&lt;br /&gt;
* Neu: Ambilight-Animation &amp;quot;Clock&amp;quot; jetzt mit 5-Sekunden-Marker.&lt;br /&gt;
* Neu: Konfigurierbare Helligkeitskurve bei automatischer oder manueller Regelung.&lt;br /&gt;
* Neu: Geschwindigkeitsregelung der Ticker-Texte&lt;br /&gt;
* Neu: OTA-Update des STM32 nun auch mit Upload vom lokalen PC aus möglich.&lt;br /&gt;
* Neu: Konfigurierbarer Host und Pfad für OTA-Updates - geplant für die zukünftige Herausgabe von Pre-Testversionen im neuen Pfad &amp;quot;test&amp;quot;.&lt;br /&gt;
* Optimierung der DS18xx/OneWire/Delay-Funktionen, um die Prozessorlast zu minimieren.&lt;br /&gt;
* Bugfix: Falsche Berechnung von Überläufen in CLOCK2-Animation für Ambilight (Anzahl Ambilight-LEDs = 30) korrigiert.&lt;br /&gt;
* Bugfix: Diverse Korrekturen in Layout English2 für WC12h.&lt;br /&gt;
* Neu: Zusätzliches Layout für WC12h: &amp;quot;Schweizerdeutsch 2&amp;quot;.&lt;br /&gt;
* Neu: WCtris, noch ein Tetris-Clone ;-)&lt;br /&gt;
* Änderung Verbindung zwischen ESP-12F und STM32: GPIO4 (und nicht mehr GPIO16) muss nun mit BOOT0 des STM32 verbunden werden&lt;br /&gt;
* Umstellung der IDE von EmBlocks 2.3.0 auf EMBitz 1.11.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.5.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Einspielen von Updates für ES8266 und STM32 über OTA (&amp;quot;over the air&amp;quot;).&lt;br /&gt;
* Bugfix: Eingabe einer negativen Temperatur-Korrektur wird in einen positiven Wert geändert.&lt;br /&gt;
* Optimierungen der LED-Treiber zwecks Minimierung des RAM-Speicherverbrauchs.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Hochauflösendes animiertes Piktogramm &amp;quot;Fireworks&amp;quot; für WC24h.&lt;br /&gt;
* Bugfix: Auftretendes Glimmen nach Anzeige eines Piktogramms eliminiert. &lt;br /&gt;
* Bugfix WC24h: Anzeige Ossi-Modus: ES IST EINE MINUTE(N) NACH NEUN.&lt;br /&gt;
* Bugfix WC24h: Nach Anzeige des Datums wurde die Uhrzeit nicht vollständig aktualisiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Date-Intervall wurde fälschlicherweise als Fireworks-Interval gespeichert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Variable Größen der Piktogramme.&lt;br /&gt;
* Sanftes Ein- und Ausblenden (Fading) der Piktogramme.&lt;br /&gt;
* Piktogramme können nun animiert werden.&lt;br /&gt;
* Neues animiertes Piktogramm &amp;quot;Feuerwerk&amp;quot; für Silvester.&lt;br /&gt;
* Neue Animation &amp;quot;Flicker&amp;quot;.&lt;br /&gt;
* Anzeige des aktuellen Datums als Laufschrift.&lt;br /&gt;
* Optimiertes Auslesen des DS18xx, um Verzögerungen in der Sekundenanzeige (Ambilight Clock) zu vermeiden.&lt;br /&gt;
* UART-Ringbuffer vergrößert zwecks Stabilisierung des ESP8266-Flashvorgangs.&lt;br /&gt;
* Unterstützung von neuen Layouts für Schweizerdeutsch und Englisch (nur WC12h).&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.5 ====&lt;br /&gt;
&lt;br /&gt;
* Erkennung des (nicht existenten) externen Pullups verbessert durch Delay vor Messung.&lt;br /&gt;
* Piktogramme Heart und Xmas-Tree werden nun in einer höheren Auflösung (16x16) auf der WC24h angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Piktogrammanzeige bei automatischer Helligkeitsregelung korrigiert.&lt;br /&gt;
* Bugfix: Piktogramme werden bei Power-Off nicht mehr angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Compiler-Warnungen für SK6812-RGBW beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeigefehler von Piktogrammen auf WC24h behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Anzeige von Piktogrammen bei gleichzeitiger Rainbow-Animation zu kurz.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ineinanderschieben von Buchstaben bei Ticker-Anzeige behoben.&lt;br /&gt;
* Bugfix: Änderungen von Weiß-Werten bei SK6812-RGBW wurden nicht mehr übernommen.&lt;br /&gt;
* Piktogramme &amp;quot;Heart&amp;quot; und &amp;quot;Xmas Tree&amp;quot; eingebaut.&lt;br /&gt;
* Unterstützung für WS2812 mit Reihenfolge RGB statt GRB.&lt;br /&gt;
* Spezielle Compiler-Warnungen bei erhöhter Warnstufe beseitigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Umschaltung auf Open-Drain-Betrieb des LED-Ausgangs bei Anbringung eines 4k7 Pullups am WS2812-Eingang zur Erhöhung des LED-Eingangspegels von 3,3V auf 5V.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Unbedingtes Aktivieren des AP-Modus durch User-Button, auch wenn der ESP wegen Hersteller-Einstellungen bereits im AP-Modus ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.2 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Regeln der weißen SK6812-RGBW-LED im Browser funktionierte in Version 2.2.1 nicht mehr.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.1 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Wenn ausschließlich das RTC-Modul zur Temperaturmessung dient, wurde auf dem Display immer fälschlicherweise 12°C ausgegeben.&lt;br /&gt;
* Bugfix: Korrekturwert für DS18XX geht nach Reboot verloren.&lt;br /&gt;
* SK6812 wird nun auch in der RGB-Variante unterstützt - nicht nur RGBW.&lt;br /&gt;
* Verbesserung der automatischen Helligkeitsregelung (Sprungverhalten bei Unterschreiten der Helligkeits-Mindestwerts).&lt;br /&gt;
* DCF77-Empfänger-Problem bei Sekunde = 50 (gleichzeitige DS18xx-Temperaturmessung) behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Die Anzeigedauer der Temperatur ist nun nicht mehr von der Dauer der Animation abhängig.&lt;br /&gt;
* Bugfix Ambilight: Nach &amp;quot;Test Display&amp;quot; wurde die ursprüngliche Helligkeit des Ambilight nicht wieder hergestellt.&lt;br /&gt;
* Bugfix AP-Mode: Durch einen Timeout bei der ESP8266-Kommmunikation wurden die Vorgabewerte fürs Web-Interface nicht übertragen.&lt;br /&gt;
* RX-Ringbuffer ESP8266 -&amp;gt; STM32 von 128 auf 256 vergrößert.&lt;br /&gt;
* Timeout-Behandlung bei der Kommunikation zwischen STM32 und ESP8266 verbessert. &lt;br /&gt;
* Web-Interface: Checkbox &amp;quot;Use display colors&amp;quot; wurde auf die Seite &amp;quot;Ambilight&amp;quot; verschoben.&lt;br /&gt;
* WC12h Bugfix: Umlaute werden in der Laufschrift immer als Großbuchstaben angezeigt.&lt;br /&gt;
* WC12h: Font zur Laufschriftanzeige durch besser lesbaren Font ersetzt.&lt;br /&gt;
* WC24h: Korrektur der Anzeige von &amp;quot;ES IST EINS UHR&amp;quot; nach &amp;quot;ES IST EIN UHR&amp;quot; in bestimmten Anzeigemodi.&lt;br /&gt;
* Bugfix SK6812: Rot und Grün vertauscht.&lt;br /&gt;
* Bugfix LDR: Nach dem Setzen eines neuen LDR-Max-Wertes wurde dieser nicht zurück an das Web-Interface übertragen und deshalb dort (bis zum nächsten Reboot) ein alter Max-Wert angezeigt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Auslagerung des HTML-Codegenerators auf den ESP8266, damit Code-Ersparnis auf dem STM32 von 14KB Flash.&lt;br /&gt;
* Auslagerung der Schnittstelle zu Android-Geräten (Kommando-Interpreter) auf den ESP8266&lt;br /&gt;
* Optional: Laufschrift mit dem aktuellen Wetter (über openweathermap.org)&lt;br /&gt;
* Unterstützung SK6812 (optional, RGBW-LEDs)&lt;br /&gt;
* Verbesserungen bei der LDR-Umgebungshelligkeitsmessung&lt;br /&gt;
* Wegfall der Schaltfläche &amp;quot;Save all&amp;quot; im Web-Interface. Nun werden sämtliche geänderten Konfigurationsdaten sofort auch im EPROM neu gespeichert.&lt;br /&gt;
* Bugfix: DS18xx-Temperatur-Korrekturwert wurde bisher als RTC-Temperatur-Korrekturwert im EEPROM gespeichert.&lt;br /&gt;
* Bugfix: Bei der manuellen Eingabe des aktuellen Datums/Uhrzeit im Webinterface wurde das Jahr bisher als &amp;quot;Zufallszahl&amp;quot; gespeichert, wenn der ESP8266 im AP-Modus läuft, weil kein WLAN vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.7 ====&lt;br /&gt;
&lt;br /&gt;
* URL-Fehler im Web-Interface korrigiert für Rainbow-Geschwindigkeit und Temperatur-Anzeige-Intervall&lt;br /&gt;
* Fehlende Berücksichtigung der Animation-Geschwindigkeiten in &amp;quot;Random&amp;quot; eingebaut&lt;br /&gt;
* Default-Werte für einstellbare Verzögerungen der Animationen auf WC12h verdoppelt&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation &amp;quot;Drop&amp;quot;&lt;br /&gt;
* Neue Animation &amp;quot;Squeeze&amp;quot;&lt;br /&gt;
* Geschwindigkeitsregler für sämtliche Animationen&lt;br /&gt;
* Angaben von Favoriten für die Animationen, die dann bei der Random-Animation ausgewählt werden sollen&lt;br /&gt;
* Geschwindigkeitsregler für Rainbow - sowohl für Display als auch für Ambilight&lt;br /&gt;
* Angabe von Temperaturkorrekturen für DS18xx als auch für RTC in Schritten von 0,5°C bei Selbsterwärmung&lt;br /&gt;
* LED-Kalibrierung durch Messen vom dunkelsten und hellsten Wert manuell im Web-Interface möglich - ungetestet!&lt;br /&gt;
* Clock und Clock2 auf dem Ambilight laufen nun je nach Einstellung in der Display-Farbe oder selbstständig in der Ambilight-Farbe&lt;br /&gt;
* Temperatur-Anzeige auf der WC12h nun nicht mehr als Laufschrift, sondern durch zwei große Ziffern auf dem Display. Wenn die Temperatur xx,5°C und nicht xx,0°C beträgt, wird das &amp;quot;standesgemäß&amp;quot; auf der WC12h durch zwei leuchtende Minuten-LEDs angezeigt. Die Anzeige der Minuten-LEDs ist ungetestet.&lt;br /&gt;
* Angabe eines Intervalls, wie oft die Temperatur automatisch eingeblendet werden soll. Bei &amp;quot;1&amp;quot; wird die Temperatur einmal pro Minute eingeblendet, nämlich immer um hh:mm:30. Bei Angabe von z.B. &amp;quot;5&amp;quot; passiert das dann halt nur noch alle 5 Minuten. Wird 0 oder nichts eingegeben, wird keine Temperatur automatisch eingeblendet.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.5 ====&lt;br /&gt;
&lt;br /&gt;
* Neue Animation: &amp;quot;Matrix&amp;quot;.&lt;br /&gt;
* Bugfix: Fehler in Timerfunktion am Wochenende behoben.&lt;br /&gt;
* Bugfix: Fehlerhafte Offset-Berechnung in Ambilight-Animation &amp;quot;Clock2&amp;quot; korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.4 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Ambilight leuchtete im Synchronmodus in Rainbow-Animation nach Abschalten durch Timer weiter. Die LEDs werden nun komplett abgeschaltet.&lt;br /&gt;
* Bugfix: Getrennte Helligkeitssteuerung des Ambilights wurde durch Helligkeitssteuerung des Displays beeinträchtigt. Nun sind beide Helligkeiten komplett unabhängig.&lt;br /&gt;
* Bugfix: Wenn die Uhr gem. Timer aus ist, liefen einige Animationen teilweise trotzdem alle 5 Minuten. Ist nun behoben.&lt;br /&gt;
* Bugfix: Keine Webserver-Kommunikation möglich, wenn der ESP-01 im AP-Modus ist und in der RTC die Uhrzeit noch nicht initialisiert wurde. Ist nun behoben.&lt;br /&gt;
* Neu: Anzeige von Laufschriften&lt;br /&gt;
* Ambilight: Sekundenzeiger nun auch für 20 oder 30 LEDs, die Zahl der Ambilight-LEDs ist nun im Webinterface konfigurierbar.&lt;br /&gt;
* Ambilight: Neue Sekundenanzeige mit zunehmendem/abnehmendem Vollkreis.&lt;br /&gt;
* Ambilight: Sekundenzeiger-Animationen: Start-LED nun über Webinterface konfigurierbar&lt;br /&gt;
* Web-Konfiguration: Erweiterung der Schieberegler um numerische Anzeige (zwecks besserer Reproduzierfähigkeit von RGB-Werten)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: einminütiges Abschalten des Displays nach Cube-Animation behoben.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.2 ====&lt;br /&gt;
&lt;br /&gt;
* Um unnötige Animationen zur vollen Minute bei der WC12h zu vermeiden, wird die DCF77-Zeit nun um hh:mm:15 verzögert ausgeliefert. Timeserver-Zugriffe pendeln sich im Laufe der Zeit auf hh:mm:30 (alle 3780 Sekunden) ein, RTC-Zugriffe werden jede Minute um hh:mm:45 ausgeführt.&lt;br /&gt;
* Power-Taste auf der IR-Fernbedienung kann nun beim Anlernen als Skip-Taste verwendet werden.&lt;br /&gt;
* DCF77-Messung: Die Zeit der vorherigen Minute wird nun als zusätzliche Plausibilitätsprüfung herangezogen&lt;br /&gt;
* Snake-Animation: Es werden nun gezielt die Wörter der alten Uhrzeit &amp;quot;gefressen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.1 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration von &amp;quot;ES IST&amp;quot;-Anzeige korrigiert: nun auch jede halbe Stunde.&lt;br /&gt;
* Bugfix bei der &amp;quot;ES IST&amp;quot;-Anzeige auf WC12h: Die Anzeige wird nun 5 Minuten lang beibehalten - und nicht nur ein Minute.&lt;br /&gt;
* Bugfix: Farbanimationen bzw. Ambilight-Animationen verhinderten das Abschalten des Ambilights bei Power-Off.&lt;br /&gt;
* Umgebungs-Helligkeitsmessungen werden nun nur noch durchgeführt, wenn keine Übergangs-Animation läuft.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs nun bei Verwendung eines Nucleo-Board gleich 100, sonst 60.&lt;br /&gt;
* Power-Off-Signal, um LED-Spannungsversorgung abzuschalten, nun beim Mini-Board (STM32F103) auf Pin PB0.&lt;br /&gt;
* Fading-Effekt durch kleinere Farbänderungsschritte verstärkt.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 2.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Abschalten des Ambilights bei Power-Off-Befehl funktionierte bisher nicht.&lt;br /&gt;
* Bugfix: Ein-/Ausschalten der Spannungsversorgung für LED-Stripe.&lt;br /&gt;
* Anzeige des Wortes &amp;quot;UHR&amp;quot; zur vollen Stunde hinzugefügt - dort, wo es bisher fehlte. Betrifft nur WC24h.&lt;br /&gt;
* Neue Einstellung, ob &amp;quot;ES IST&amp;quot; permanent leuchten soll oder nur zur vollen Stunde.&lt;br /&gt;
* Verbesserung der Rainbow-Animation (Dank an Ralf Hammeran).&lt;br /&gt;
* Dynamische Anpassung der automatischen Helligkeitssteuerung an die Umgebungshelligkeit (Dank an Ralf Hammeran).&lt;br /&gt;
* Neue Übergangs-Animationen: &amp;quot;Snake&amp;quot;, &amp;quot;Teletype&amp;quot; und &amp;quot;Cube&amp;quot;.&lt;br /&gt;
* Anzahl der möglichen Ambilight-LEDs auf 60 Stück begrenzt, siehe auch Ambilight-Modus &amp;quot;Clock&amp;quot; (umlaufende Sekundenanzeige).&lt;br /&gt;
* Neue Seite &amp;quot;Ambilight&amp;quot; in der Web-Konfiguration.&lt;br /&gt;
* Neue Einstellung, ob Ambilight-Farben synchron zu den Display-Farben angepasst werden sollen oder separat gesteuert werden sollen.&lt;br /&gt;
* Neue separate Farbauswahl und Helligkeitssteuerung für Ambilight.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Clock&amp;quot;: Umlaufende Sekundenanzeige.&lt;br /&gt;
* Neuer Ambilight-Modus &amp;quot;Rainbow&amp;quot;: Regenbogenfarben-Animation jetzt auch im Ambilight möglich.&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.9.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neu: Automatischer Farbwechselmodus: Rainbow&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.9 ====&lt;br /&gt;
&lt;br /&gt;
* Stellen der Uhrzeit über Web-Interface&lt;br /&gt;
* Konfiguration über Web-Interface, ob ESP8266 im AP- oder WLan-Client-Modus arbeiten soll&lt;br /&gt;
* Einstellung SSID und Key für AP-Modus&lt;br /&gt;
* Steuerung der LED-Stripe-Spannungsversorgung (ungetestet)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.8 ====&lt;br /&gt;
&lt;br /&gt;
* Für WC12h kleineren Font (5x8) für Laufschriften zwecks besserer Lesbarkeit integriert&lt;br /&gt;
* Auswertung des Temperatur-Anzeige-Kommandos per Android App (ab Version 1.7.0)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.7 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler in der Wochentagsberechnung korrigiert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.6 ====&lt;br /&gt;
&lt;br /&gt;
* Verzögerte Reaktion der Minuten-LEDs (WC12h) bei Farbwechsel behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.5 ====&lt;br /&gt;
&lt;br /&gt;
* STM32F103 Mini Development Board: Abschalten des JTAGS, um PB3 u.a. als GPIO für z.B. [[IRMP]] nutzen zu können (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.4 ====&lt;br /&gt;
&lt;br /&gt;
* Korrektur der ESP8266 Flash-Pin-Definition für das STM32F103 Mini Development Board (nicht relevant für Nucleo-Variante)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.3 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix bei der Temperatur-Anzeige: Es wurde immer die DS3231-Temperatur statt der DS128xx-Temperatur gezeigt&lt;br /&gt;
* Falsche Temperatur-Anzeige im Modus &amp;quot;Temperatur&amp;quot;&lt;br /&gt;
* Bezeichnungen der Anzeigemodi für WC24 gekürzt&lt;br /&gt;
* Manuelle Aktivierung des LDRs aus Weboberfläche entfernt. LDR-Messung ist nun immer aktiv, egal ob angeschlossen oder nicht&lt;br /&gt;
* Unterstützung des DCF77-Moduls wieder eingebaut&lt;br /&gt;
* Anzahl der Nachtschaltzeiten auf 8 erhöht - unter Berücksichtigung der Wochentage&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.2 ====&lt;br /&gt;
&lt;br /&gt;
* Hangup-Problem bei Aktivieren des LDRs beseitigt&lt;br /&gt;
* Neu: Nachtschaltzeiten in der Weboberfläche&lt;br /&gt;
* Optimierung des HTML-Code-Generators&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.1 ====&lt;br /&gt;
&lt;br /&gt;
* Fehler bei HTTP-Get-Parameter-Übergabe von Leerzeichen in SSID behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.8.0 ====&lt;br /&gt;
&lt;br /&gt;
* Spezielle Firmware für ESP8266-Modul, da die Espressif-Firmware zu instabil ist und zu viele Varianten existieren&lt;br /&gt;
* Kommunikationsprotokoll an neue ESP-Firmware angepasst&lt;br /&gt;
* Direktes Flashen des ESP8266 in der WordClock-Schaltung über das verwendete STM32-Board&lt;br /&gt;
* Diverse kleinere Bugfixes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Änderung: Damit das ESP8266-Modul direkt über das STM32-Board geflasht werden kann, ist die Verbindung ESP8266-GPIO0 zu STM32 PA4 herzustellen, siehe auch: [[WordClock_mit_WS2812#Anschluss_ESP8266|Anschluss ESP8266]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.7.0 ====&lt;br /&gt;
&lt;br /&gt;
* [[MCURSES]]-Monitor durch [[WordClock_mit_WS2812#Web-Interface|WEB-Server]] ersetzt&lt;br /&gt;
* Laufschriften-Ausgabe der aktuellen IP-Adresse&lt;br /&gt;
* Kleinere Änderungen/Optimierungen&lt;br /&gt;
* DCF77-Decoder mangels Interesse/Notwendigkeit entfernt&lt;br /&gt;
* Laufschriften-Ausgabe auf dem LED-Display beim Anlernen einer IR-Fernbedienung&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.3 ====&lt;br /&gt;
&lt;br /&gt;
* WordClock12h: Anzeige der Temperatur durch Laufschrift&lt;br /&gt;
* Neue Anschlusspins für TSOP und DS18xxx am STM32F103&lt;br /&gt;
* Optimierung des WS2812-DMA-Transfers für STM32F103&lt;br /&gt;
* Temperaturmessung mit DS3231, wenn kein DS18xx angeschlossen&lt;br /&gt;
* Umstrukturierung der C-Sources&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.2 ====&lt;br /&gt;
&lt;br /&gt;
* Problem beim Verbindungsaufbau Android App -&amp;gt; WordClock behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.1 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzliche Unterstützung der &amp;quot;klassischen&amp;quot; WordClock12h mit 10x11 LEDs&lt;br /&gt;
* Anpassung der [[MCURSES]]-Monitor-Oberfläche an WordClock12h-Variante&lt;br /&gt;
* Portierung auf STM32F103 abgeschlossen (IDE-Projekt folgt mit 1.6.2)&lt;br /&gt;
* Zusätzliche Unterstützung von neueren [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Firmware-Versionen 1.0.1, 1.4.0 und 1.5.0.&lt;br /&gt;
* Optionales [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Debugging auf zusätzlichem USART - nur für Entwickler&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.6.0 ====&lt;br /&gt;
&lt;br /&gt;
* Neben dem TIME-Protokoll (TCP) wird nun auch NTP (UDP) unterstützt - für ESP-Firmware-Versionen ab 0018000902.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.9 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung der neueren ESP Versionen 0020000903 und AT 0.21.0.0&lt;br /&gt;
* Vergrößerung der UART-FIFOs&lt;br /&gt;
* Verallgemeinerung der UART-Funktionen zwecks besserer Konfiguration&lt;br /&gt;
* Überarbeitung der [[MCURSES]]-Monitor-Oberfläche&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.8 ====&lt;br /&gt;
&lt;br /&gt;
* Bugfix: Fehler in 1.5.7 (Falsche Behandlung des DMA-Buffers) wurde behoben&lt;br /&gt;
* Neu: Bis zu 100 weitere LEDs hinter der Buchstabenkette werden als Ambilight angesteuert&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.7 ====&lt;br /&gt;
&lt;br /&gt;
* Bug in uart-Code für STM32F103 beseitigt - irrelevant für Nucleo STM324xx&lt;br /&gt;
* Timing für WS2812B angepasst, es werden nun WS2812 und WS2812B unterstützt&lt;br /&gt;
* Anzahl der möglichen [[WordClock_mit_WS2812#WS2812|WS2812]]-LEDs ist nun variabel gehalten. Das ist Voraussetzung für das demnächst verfügbare Ambilight.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.6 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#ESP8266|ESP8266]] mit neuerer Firmware, welche \r\n statt \r erwartet&lt;br /&gt;
* Unterstützung von verschiedenen Baudraten des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Automatische Umschaltung von 9600Bd auf 115200Bd beim [[WordClock_mit_WS2812#ESP8266|ESP8266]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.5 ====&lt;br /&gt;
&lt;br /&gt;
* Optimierungen im LED-Display-Code&lt;br /&gt;
* Diverse Anpassungen an STM32F103&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.4 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische IR-Anlernroutine in den ersten 3 Sekunden ab Programmstart&lt;br /&gt;
* Kleiner Bugfix bei den möglichen Helligkeitsstufen (Dimmer)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.2 ====&lt;br /&gt;
&lt;br /&gt;
* Anzeige der Firmware-Version des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls im [[MCURSES]]-Monitor&lt;br /&gt;
* Korrektur in den Worttabellen für die Wörter ACHT und VIER in der zehnten Reihe&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.5.1 ====&lt;br /&gt;
&lt;br /&gt;
* Manuelle Helligkeitsregelung per [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] eingebaut&lt;br /&gt;
* Automatische Helligkeitsregelung per [[WordClock_mit_WS2812#LDR|LDR]] nun über [[MCURSES]]-Monitor / IR-Fernbedienung / [[WordClock_mit_WS2812#Android_App|Android App]] ein-/ausschaltbar&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.2 ====&lt;br /&gt;
&lt;br /&gt;
* Die geladenen aus dem [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] RGB-Werte wurden nach dem Boot nicht mehr sofort übernommen. Ist korrigiert.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.1 ====&lt;br /&gt;
&lt;br /&gt;
* Initialisierung des ADC korrigiert&lt;br /&gt;
* Automatische Helligkeitsregelung dunkelt nicht mehr so stark ab.&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.4.0 ====&lt;br /&gt;
&lt;br /&gt;
* Automatische Helligkeitsregelung mittels [[WordClock_mit_WS2812#LDR|LDR]]&lt;br /&gt;
* Helligkeitsstufen von 32 auf 64 erhöht&lt;br /&gt;
* LED-Testprogramm eingebaut (Taste &#039;T&#039; im [[MCURSES]]-Monitor)&lt;br /&gt;
* Anzeige des [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Typs im [[MCURSES]]-Monitor)&lt;br /&gt;
* Unterstützung für Status-LED &#039;&#039;&#039;(beachte geändertes LED-Anschluss-Schema!)&#039;&#039;&#039;&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] an 64 Helligkeitsstufen angepasst&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.1 ====&lt;br /&gt;
&lt;br /&gt;
* Sporadisches Hangup-Problem nach Auslesen der Temperatur behoben&lt;br /&gt;
* Fehler bei der Erkennung des Family-Codes für [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]] beseitigt&lt;br /&gt;
* Optimierung des Zeitverhaltens beim Zugriff auf OneWire-Bus&lt;br /&gt;
* Optimierung des [[WordClock_mit_WS2812#WS2812|WS2812]]-Codes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.3.0 ====&lt;br /&gt;
&lt;br /&gt;
* Unterstützung von [[WordClock_mit_WS2812#Temperatur-Sensor|DS18xxx]]-Temperatursensoren&lt;br /&gt;
* Temperatur-Anzeige innerhalb +10°C und 39,5°C&lt;br /&gt;
* Korrektur Sommerzeitumstellung&lt;br /&gt;
* Keine Unterstützung mehr von STM32F4-Discovery&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.2.0 ====&lt;br /&gt;
&lt;br /&gt;
* IRMP-Konfigurationsfehler behoben&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.1.0 ====&lt;br /&gt;
&lt;br /&gt;
* Animationen hinzugefügt&lt;br /&gt;
* Neue Tabellen für Uhrzeit und Temperatur&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 1.0.0 ====&lt;br /&gt;
&lt;br /&gt;
* Test auf verschiedene Adressen des I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Speicherplatzverbrauch minimiert&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]] DS3231-Routinen auf DS1307 verallgemeinert&lt;br /&gt;
* Network Listener (UDP) zum Fernsteuern der Uhr über WLAN&lt;br /&gt;
* [[WordClock_mit_WS2812#Android_App|Android App]] zum Fernsteuern der Uhr (Ein/Aus, Farben, Anzeigemodus)&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9.1 ====&lt;br /&gt;
&lt;br /&gt;
* [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Hexdump im [[MCURSES]]-Monitor eingebaut&lt;br /&gt;
* Zusätzliche Waitstates beim Beschreiben des [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROMs]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.9 ====&lt;br /&gt;
&lt;br /&gt;
* Zusätzlicher Anschluss von RST und CH_PD des [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Moduls&lt;br /&gt;
* Verbesserung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Konfiguration dank Hardware-Reset&lt;br /&gt;
* Nutzung des Stromsparmodus im [[WordClock_mit_WS2812#ESP8266|ESP8266]], wenn die Anzeige abgeschaltet wird&lt;br /&gt;
* Konfiguration der Zeitzone über [[MCURSES]]-Monitor&lt;br /&gt;
* Test und Überarbeitung der [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]] und [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Funktionen&lt;br /&gt;
* Synchronisation der [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Zeit mit dem µC-Timer&lt;br /&gt;
* Speichern folgender Daten im [[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]:&lt;br /&gt;
&lt;br /&gt;
     EEPROM-Version&lt;br /&gt;
     IRMP-Daten einer angelernten IR-Fernbedienung&lt;br /&gt;
     Aktuell eingestellte Farben und Anzeigemodus&lt;br /&gt;
     IP-Adresse des Timeservers&lt;br /&gt;
     Zeitzone&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.8 ====&lt;br /&gt;
&lt;br /&gt;
* Neue IR-Fernbedienungs-Tasten POWER und OK&lt;br /&gt;
* Einbau einer konfigurierbaren &amp;quot;Nachtzeit&amp;quot;, in der sich die Uhr selbstständig abschaltet&lt;br /&gt;
* Konfiguration des Timeservers über [[MCURSES]]-Monitor&lt;br /&gt;
* Speichern/Laden sämtlicher Konfigurations-Daten in externem EEPROM&lt;br /&gt;
* Initialisierung des [[WordClock_mit_WS2812#ESP8266|ESP8266]] verbessert (warten, bis nach PowerOn eine WLAN-Verbindung besteht)&lt;br /&gt;
* Aufteilung der Anzeige-Logik und des [[MCURSES]]-Monitors auf dsp.c und monitor.c&lt;br /&gt;
* Aufteilung der [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Routinen auf esp8266.c (low-level) und timeserver.c (high-level)&lt;br /&gt;
* Diverse Optimierungen - u.a. durch Einsatz von uint_fast8_t&lt;br /&gt;
* Diverse Bugfixes&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7.1 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F411RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.7 ====&lt;br /&gt;
&lt;br /&gt;
* Portierung der Software auf STM32F401RE [[WordClock_mit_WS2812#STM32F401RE_Nucleo_und_STM32F411RE_Nucleo|Nucleo-Board]]&lt;br /&gt;
* uart2.c generalisiert auf uart.c (verschiedene UARTs möglich)&lt;br /&gt;
* Bugfix im UART-Ringbuffer-Code (Interrupt-Sperre)&lt;br /&gt;
* Anzeige der Online-Devices ([[WordClock_mit_WS2812#ESP8266|ESP8266]], DCF77, EEPROM, [[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]) im Terminal&lt;br /&gt;
* Verschiedene Optimierungen&lt;br /&gt;
&lt;br /&gt;
==== STM32 Version 0.6 ====&lt;br /&gt;
&lt;br /&gt;
* Konfiguration des WLAN-Moduls (SSID &amp;amp; Key) nun über Terminal statt fest im Code verdrahtet.&lt;br /&gt;
* Einstellung der Zeitzone möglich. Standard ist GMT+1, also mitteleuropäische Zeit.&lt;br /&gt;
* DCF77- und [[WordClock_mit_WS2812#ESP8266|ESP8266]]-Modul-Aktivierung automatisch - keine Einstellung mehr im Code notwendig.&lt;br /&gt;
* I2C-Lib hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|EEPROM]]-Modul hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;br /&gt;
* I2C-[[WordClock_mit_WS2812#RTC_und_EEPROM|RTC]]-Modul (DS3231) hinzugefügt (noch ungetestet und daher noch nicht verwendet).&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:Wordclock24h-Web-Display.png&amp;diff=97845</id>
		<title>Datei:Wordclock24h-Web-Display.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:Wordclock24h-Web-Display.png&amp;diff=97845"/>
		<updated>2017-11-29T20:44:06Z</updated>

		<summary type="html">&lt;p&gt;Mockup: Mockup lud eine neue Version von Datei:Wordclock24h-Web-Display.png hoch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Version 1.7.0&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=96878</id>
		<title>Tutorial - Aufbau WordClock mit WS2812</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Tutorial_-_Aufbau_WordClock_mit_WS2812&amp;diff=96878"/>
		<updated>2017-07-27T16:51:31Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Montage der LEDs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dieses Tutorial soll Einsteigern und Fortgeschrittenen einen Leitfaden zum Zusammenbau der [[WordClock_mit_WS2812|WordClock mit WS2812]] geben. Das dazugehörige Projekt ist hier beschrieben: &#039;&#039;&#039;[[WordClock_mit_WS2812|WordClock mit WS2812]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
= Vorbemerkungen =&lt;br /&gt;
Das Projekt „WordClock mit WS2812“ ist so konzipiert, dass zum Nachbau keine besonderen Vorkenntnisse erforderlich sind. &lt;br /&gt;
Vorausgesetzt werden aber:&lt;br /&gt;
* Natürlich ein Lötkolben (ca. 25 W, an Schutzleiter angeschlossen) und Elektronik-Lötzinn mit max. 1 mm Durchmesser.&lt;br /&gt;
* Bei wenig Löterfahrung bitte nicht gleich am Shield löten „üben“, sondern an einem Stück Streifenrasterplatine (z. B.&amp;lt;br&amp;gt;[https://www.reichelt.de/Streifenraster/H25SR050/3/index.html?ACTION=3&amp;amp;GROUPID=7786&amp;amp;ARTICLE=8275 Reichelt Streifenrasterplatine]) und einigen Drahtstücken. Im Internet gibt es genügend Seiten, die das richtige Löten erklären.&lt;br /&gt;
* Ein einfaches Multimeter, um Gleichspannungen und Widerstände messen zu können. Gibt es ab 10 € bis 12 €.&lt;br /&gt;
* Sorgfalt und Geduld: Es ist nicht viel Aufwand, z. B. Widerstände vor dem Einlöten zu messen und somit Fehler bei der Bestückung zu vermeiden. &lt;br /&gt;
* Bei Unklarheiten mit Bauteil-Anschlüssen nicht einfach verschiedene Einbaumöglichkeiten „ausprobieren“ – das kann die Bauteile zerstören.&lt;br /&gt;
* Das komplette Lesen des Artikels kann helfen, Fehler zu vermeiden und aufwändige Fehlersuche unnötig zu machen.&lt;br /&gt;
&lt;br /&gt;
= Montage der LEDs =&lt;br /&gt;
&lt;br /&gt;
Die folgende Anleitung beschreibt den Aufbau der WS2812-LEDs für die WordClock24h. Bis auf die unten aufgeführten Maße gelten dieselben Ausführungen auch für die WordClock12h.&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock12h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 3,372 Meter WS2812-LED-Streifen mit 36 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 11 LEDs, bis man insgesamt 10 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 4,6 cm&lt;br /&gt;
* 7,7 cm&lt;br /&gt;
* 10,8 cm&lt;br /&gt;
* 13,9 cm&lt;br /&gt;
* 17,0 cm&lt;br /&gt;
* 20,1 cm&lt;br /&gt;
* 23,2 cm&lt;br /&gt;
* 26,3 cm&lt;br /&gt;
* 29,4 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wider ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== LED-Display für WordClock24h ===&lt;br /&gt;
&lt;br /&gt;
Für die Montage des LED-Displays benötigt man:&lt;br /&gt;
&lt;br /&gt;
* Alu-Platte 310x310x1 mm&lt;br /&gt;
* 5 Meter WS2812-LED-Streifen mit 60 LEDs/m&lt;br /&gt;
* Bleistift - weich&lt;br /&gt;
* Zollstock oder Lineal&lt;br /&gt;
* Tesa-Band&lt;br /&gt;
* Schere&lt;br /&gt;
&lt;br /&gt;
==== Schritt 1: Streifen schneiden ====&lt;br /&gt;
&lt;br /&gt;
Den langen LED-Streifen zerschneidet man mit einer Schere nach jeweils 18 LEDs, bis man insgesamt 16 kurze Streifen erhält.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 2: Markierungen setzen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Auf der Alu-Platte zeichnet man jeweils links und rechts mit dem Bleistift kurze Striche auf den Höhen:&lt;br /&gt;
&lt;br /&gt;
* 1,5 cm&lt;br /&gt;
* 3,4 cm&lt;br /&gt;
* 5,2 cm&lt;br /&gt;
* 7,1 cm&lt;br /&gt;
* 9,0 cm&lt;br /&gt;
* 10,9 cm&lt;br /&gt;
* 12,8 cm&lt;br /&gt;
* 14,7 cm&lt;br /&gt;
* 16,5 cm&lt;br /&gt;
* 18,4 cm&lt;br /&gt;
* 20,2 cm&lt;br /&gt;
* 22,1 cm&lt;br /&gt;
* 24,0 cm&lt;br /&gt;
* 25,9 cm&lt;br /&gt;
* 27,7 cm&lt;br /&gt;
* 29,6 cm&lt;br /&gt;
&lt;br /&gt;
Eine Alternative ist, die Alu-Platte an den Zwischenboden anzuschrauben und mit einem Stift von vorne auf der Aluplatte in der Mitte der Löcher Punkte einzuzeichen. Alu-Platte dann wider ab, und wenn man nun die LED-Streifen dann auf Höhe dieser Punkte anbringt, ist sichergestellt dass sie genau hinter den Löchern sitzen.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-Tesa.jpg|162x288px|miniatur|Markierungen und Klebeband]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Schritt 3: Isolierung ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Anschließend&#039;&#039;&#039; verklebt man jeweils den linken und rechten Rand senkrecht mit einem durchsichtigen TESA-Band mit einer Breite von 1,0 bis 1,5 cm. Sollte das Klebeband breiter sein, schlägt man es einfach nach hinten um. Das Klebeband dient dazu, Kurzschlüssen mit der Alu-Platte vorzubeugen, wenn nachher die LED-Streifen wieder an den Enden verlötet werden.&lt;br /&gt;
&lt;br /&gt;
==== Schritt 4: Aufkleben der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun klebt man die abgeschnittenen Streifen auf die Alu-Platte, so dass jeweils der mittlere Kontakt der LED-Streifen links und rechts auf der Höhe des jeweiligen Bleistriftstrichs ist. Dabei ist zu beachten, dass &#039;&#039;&#039;jeder 2. Streifen auf dem &amp;quot;Kopf&amp;quot;&#039;&#039;&#039; verklebt wird. Das heisst:&lt;br /&gt;
&lt;br /&gt;
* Streifen 1: DIN links, DO rechts&lt;br /&gt;
* Streifen 2: DO links, DIN rechts&lt;br /&gt;
* Streifen 3: DIN links, DO rechts&lt;br /&gt;
* Streifen 4: DO links, DIN rechts&lt;br /&gt;
* usw.&lt;br /&gt;
&lt;br /&gt;
Bei der Positionierung kommt es nicht auf jeden Millimeter genau an. Es ist nicht so schlimm, wenn die LEDs dabei um einen Millimeter verschoben sind. Hilfreich bei der Orientierung, wo gerade DIN oder DO zu finden ist, waren bei meinem Streifen kleine Pfeile neben DIN, welche die Flussrichtung der Daten angeben, siehe Fotos rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-links.jpg|162x288px|miniatur|LED-Streifen - beachte DIN und DO!]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Wichtig ist, dass die LEDs so gut wie möglich im Raster bleiben - nicht nur horizontal, sondern auch vertikal.&lt;br /&gt;
| [[Datei:WordClock24h-WS2812-komplett.jpg|319x314px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Schritt 5: Verlöten der Streifen ====&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Zunächst werden die Lötpunkte an den Enden der WS2812-Streifen verzinnt, siehe Bild links. Anschließend schneidet man vom Flachbandkabel ein paar 5cm lange Abschnitte, welche man dann als einzelne Litzen trennt, indem man sie einfach mit dem Fingernagel einklemmt und auseinanderzieht.&lt;br /&gt;
&lt;br /&gt;
Übrig bleiben 5cm lange Litzen, die dann einzeln verlötet werden. Zunächst verbindet man immer 2 Streifen paarweise auf der *rechten Seite*, indem man GND mit GND, DOUT mit DIN und 5V mit 5V verbindet, siehe Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Ist man auf der rechten Seite fertig, verbindet man &#039;&#039;&#039;ab der 2. Reihe&#039;&#039;&#039; lediglich mit je einer Litze DOUT mit DIN, GND und 5V lässt man zunächst frei, siehe Bild rechts.&lt;br /&gt;
|| [[Datei:WordClock24h-WS2812-verzinnen.jpg|110x240px|miniatur|Streifen an den Enden verzinnen]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-rechts.jpg|109x221px|miniatur|Streifen verlöten rechts]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-links.jpg|135x219px|miniatur|Streifen verlöten links]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Das Zwischenergebnis ist rechts zu sehen. Gut zu erkennen ist, dass links jeweils immer nur eine Litze (ab der 2. Reihe) DOUT mit dem nächsten DIN verbindet, während rechts (beginnend mit der 1. Reihe) immer alle drei Kontakte miteinander verbunden werden.&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-verloeten-komplett.jpg|362x316px|miniatur|Zwischenergebnis]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Nun lötet man auf der linken Seite das Flachbandkabel an, indem man immer zwei Litzen paarweise an GND und 5V heranführt. Dabei unbedingt die Reihenfolge beibehalten: Wenn man die linke Ader des Paares an GND anschließt, muss für alle Paare immer die linke Ader genutzt werden! Demzufolge wird die rechte Ader eines Paares immer an 5V angelötet. Das Ergebnis sieht man im Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Als letztes klappt man das Flachbandkabel auf die Rückseite der Platte und fixiert dieses dort mit Klebeband. Das Ergebnis sieht man auf dem Bild rechts.&lt;br /&gt;
&lt;br /&gt;
Wie das Ende des 16-poligen Flachbandkabels nun mit der Platine verbunden wird, wird später erklärt. &#039;&#039;&#039;Dabei ist unbedingt auf die richtige Polung beim Anschluss zu achten!&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Anloeten.jpg|149x266px|miniatur|Flachbandkabel anlöten]]&lt;br /&gt;
|| [[Datei:Wordclock24h-WS2812-Flachbandkabel-Rueckseite.jpg|103x257px|miniatur|Flachbandkabel umklappen]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Alternativvorschlag&#039;&#039;&#039; Ich (Andreas/Alidi) finde es praktischer &#039;&#039;&#039;für die Montage des Flachbandkabels&#039;&#039;&#039; wie folgt vorzugehen:&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Komponenten Zwischenboden mit Alu Platte/LED Streifen und Nucleo Shield so platzieren wie im&lt;br /&gt;
Zusammenbau geplant. Nucleo Shield rechts unten im Zwischenboden der WC24h platzieren.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Graues Flachbandkabel mit rot markierter Ader so in des 16 poligen Pfostenbuchsensteckers plazieren,&lt;br /&gt;
dass rote Ader und Pin 1 des Steckers (Pfeilmarkierung am Stecker) übereinstimmen. Kabel und Codierung&lt;br /&gt;
des Pfostenbuchsensteckers zeigen nach links. Flachbandkabellänge ca. 50cm, Pfostenbuchsenstecker &lt;br /&gt;
zusammenpressen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_1.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
&lt;br /&gt;
Pfostenbuchsenstecker leicht auf den Pfostenstecker im Shield stecken. &lt;br /&gt;
Flachbandkabel insgesamt 3 mal um 90° Grad drehen (siehe Bild).&lt;br /&gt;
Flachbandkabel liegt jetzt an der rechten Seite der Aluplatte und &lt;br /&gt;
ragt über das obere Ende der Platte hinaus. Die rote Ader ist links.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 4&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Flachbandkabel von Shield lösen und mit Aluplatte/LED Streifen um 180° Grad drehen. &lt;br /&gt;
LED Streifen sind jetzt oben/sichtbar und das Flachbandkabel liegt links der Platte.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 5&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Jeweils 2 Adern des Flachbandkabels beginnend mit der roten Ader vom Kabel abtrennen. &lt;br /&gt;
Die Paare sind immer ca. 4cm (doppelter LED Streifen Abstand) zu kürzen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 6.&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Adern abisolieren (kurz, ca. 2mm), mit Lötzinn verzinnen (auch die Anschlußstellen auf dem LED Streifen).&lt;br /&gt;
Evt. die verzinnten Adern noch mal kürzen, da beim Verzinnen wahrscheinlich die Isolierung &lt;br /&gt;
geschrumpft ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 7&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die kurzen Verbindungsleitungen zwischen den Streifen hochklappen damit vermeidet man ungünstige&lt;br /&gt;
Drahtkreuzungen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 8&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
Aderpaare an die LED Streifen anlöten. Rote Ader bzw. immer die linke Ader des Päarchens an +5V des&lt;br /&gt;
1, 3, 5, 7, 9, 11, 13, 15 LED Streifens anlöten. Die rechte Ader wird an GND angelötet. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 9&#039;&#039;&#039;&lt;br /&gt;
|| [[Datei:WC24h_LED_Flachbandkabel_2.JPG|270x438px|miniatur|Anschluß Flachbandkabel]]&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
Kurze Verbindungsleitungen wieder zurückklappen, &lt;br /&gt;
Aluplatte wieder um 180° Grad zurückdrehen und &lt;br /&gt;
im Zwischenboden befestigen, &lt;br /&gt;
Flachbandkabel nach links auf die Aluplatte klappen, &lt;br /&gt;
Shield platzieren und prüfen, ob das Flachbandkabel &lt;br /&gt;
mit Buchsenstecker richtig passt. &lt;br /&gt;
&lt;br /&gt;
Mit einem Multimeter(Durchgangsprüfung/Widerstandsprüfung) &lt;br /&gt;
prüfen, ob der LED Anschluß +5V mit den Pins 1, 3, 5, 7, 9, &lt;br /&gt;
11, 13, 15 des Buchsensteckers verbunden sind. &lt;br /&gt;
GND muß mit den &amp;quot;geraden&amp;quot; Pins 2, 4, 6, 8, 10, 12, 14, 16 &lt;br /&gt;
verbunden sein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Datenleitung.jpg|miniatur|WC24h LED Datenleitung]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 10: Datenkabel&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Der Ausgang WS2812 / Data auf dem Shield ist mit dem Eingang DI der Status-LED, und dann &lt;br /&gt;
mit dem ersten LED Streifen zu verbinden (gelbe Ader im Bild &amp;quot;WC24h_LED_Datenleitung.jpg&amp;quot;) &lt;br /&gt;
Shield -&amp;gt; DI-Status / DO-Status -&amp;gt; DI-Stripe (1.Reihe) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor.jpg|miniatur|WC24h LED Verdrahtung Status LED Temp+Helligkeitssensor]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 11: Status-LED &amp;amp; Sensoren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Den Helligkeitssensor habe ich in eine 5mm LED Fassung aus Gummi gesteckt (Conrad /184810).&lt;br /&gt;
Diese passt in das linke Loch unten im  Zwischenboden. Geschickt ist es Temp-Sensor, Helligkeits-&lt;br /&gt;
Sensor und Status-LED auf ein Alublech 40x50mm (mit den 3 Löchern an der richtigen Stelle) zu&lt;br /&gt;
befestigen. Das Blech klemmt dann genau in der Aussparung unten im Zwischenboden. Die Status LED &lt;br /&gt;
habe ich im mittleren Loch befestigt. Das rechte Loch bleibt frei.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Verdrahtung der LED Streifen und der Sensoren auf dem Zwischenboden komplett.&lt;br /&gt;
&lt;br /&gt;
= Bestückung des Mini-Dev-Board-Shields v3/v4 für STM32F103 =&lt;br /&gt;
Zunächst werden alle Widerstände, Kondensatoren und Stiftleisten von Seite mit den Bauteil-Bezeichnungen und -Werten aus eingesetzt und von der anderen Seite aus an das Shield gelötet. Dabei empfiehlt es sich, mit den Teilen mit niedriger Bauhöhe anzufangen (die Kondensatoren also zum Schluss). Je nach Ausstattung mit den optionalen Bauteilen müssen unterschiedliche Widerstände gesetzt werden. Im Folgenden eine Übersicht über die zu bestückenden Teile in Abhängigkeit von den optionalen Features, mit denen man die eigene Wordclock ausstatten möchte:&lt;br /&gt;
{| class=&amp;quot;wikitable centered&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Bauteil !! Bestücken V3 !! Bestücken V4&lt;br /&gt;
|-&lt;br /&gt;
| R1 || nur mit LDR || nur mit LDR&lt;br /&gt;
|-&lt;br /&gt;
| R2 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; LDR verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R3 || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; DCF verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R4 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R5 || ohne TSOP 100k Ohm, mit TSOP 100 Ohm || ohne TSOP nein, mit TSOP 100 Ohm&lt;br /&gt;
|-&lt;br /&gt;
| R6 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R7 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R8 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R9 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R10 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R11 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| R12 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R13 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R14 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| R15 || nicht vorhanden || nur wenn DCF-Modul mit Open Collector verwendet wird&lt;br /&gt;
|-&lt;br /&gt;
| R16 || nicht vorhanden || nur wenn &#039;&#039;&#039;kein&#039;&#039;&#039; TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C1 || nur wenn TSOP eingebaut || nur wenn TSOP eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| C2 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C3 || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| C4 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| D2 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| IC1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| IC2 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| LED1 || nur wenn DCF eingebaut || nur wenn DCF eingebaut&lt;br /&gt;
|-&lt;br /&gt;
| S1 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| S2 || ja  || ja &lt;br /&gt;
|-&lt;br /&gt;
| T1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut &lt;br /&gt;
|-&lt;br /&gt;
| Q1 || nur wenn Spannungsabschaltung eingebaut || nur wenn Spannungsabschaltung eingebaut&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
= Löten des Mini-Dev-Board-Shields v4 für STM32F103 =&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 2a.jpg|miniatur|Mini Shield V4 für STM32F103+DS3231+AMS1117+LDR+DS1820]]&lt;br /&gt;
[[miniatur]]&lt;br /&gt;
&lt;br /&gt;
Rechts seht Ihr ein Mini Shield V4 &lt;br /&gt;
bestückt für STM32F103, DS3231/RTC Echtzeituhr, &lt;br /&gt;
AMS1117/Spannungsregler, LDR/Fotowiderstand &lt;br /&gt;
und DS1820/Temperatursensor.&lt;br /&gt;
&lt;br /&gt;
Die Anschlußleisten rechts und links habe ich &lt;br /&gt;
wie folgt ausgeführt&lt;br /&gt;
&lt;br /&gt;
Links-&amp;gt; &lt;br /&gt;
Buchsenleiste gewinkelt (BL 1x20W 2,54/Reichelt,&lt;br /&gt;
gekürzt) als Anschluß für RTC Echtzeituhr/DS3231. &lt;br /&gt;
Damit kann man das Uhr-Modul einfach stecken.&lt;br /&gt;
Printstecker PSS 254/3w/Reichelt mit entsprechender &lt;br /&gt;
Kuppling und Crimpkontakten für LDR/Fotowiderstand &lt;br /&gt;
und Anschluß WS2812. Damit sind die beiden Komponenten&lt;br /&gt;
steckbar ausgeführt&lt;br /&gt;
&lt;br /&gt;
Rechts-&amp;gt; &lt;br /&gt;
Buchsenleiste wie Links entsprechend gekürzt. &lt;br /&gt;
Damit kann man ebenfalls AMS1117/Spannungsregler&lt;br /&gt;
und DS1820/Temperatursensor (mit Stiftleiste 3pol)&lt;br /&gt;
stecken.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Mini Shield V4 STM32F103 DS3231 AMS1117 ohne R2 R5.jpg|miniatur|Komplettes Mini Shield mit STM32F103+DS3231+AMS1117+(LDR+DS1820)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hier seht Ihr das Mini Shield V4 komplett bestückt. &lt;br /&gt;
Den STM32 habe ich allerdings noch nicht festgelötet.&lt;br /&gt;
&lt;br /&gt;
= Löten des Nucleo-Shields v3 für STM32F401RE oder STM32F411RE =&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| Vorbereiten/Löten des STM32F411 Nucleo-64 Boards&lt;br /&gt;
&#039;&#039;&#039;Schritt 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wie auf dem Bild rechts zu sehen: die SMD Brücken SB54/SB55 [1], die SMD Brücken SB50 [2] und SB16 [3] entfernen und aufheben.&lt;br /&gt;
|| [[Datei:STM32_nucleo_F411RE_Rückseite_Brücken.jpg|miniatur|Nucleo Rückseite mit Brücken]]&lt;br /&gt;
|}&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Schritt 2&#039;&#039;&#039;&lt;br /&gt;
R35 und R37 [4] mit den vorher entfernten SMD Brücken bestücken (siehe Bild rechts) die Kondensatoren C33 und C34 [6] bestücken und dann den Quarz X3/8Mhz [5] einlöten.&lt;br /&gt;
|| [[Datei:STM32 nucleo F411RE Bestückungsseite.jpg|miniatur|Nucleo Bestückungsseite]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Wenn das STM32F411 Nucleo-64 geflasht ist, muß der ST-Link Teil &lt;br /&gt;
des Nucleo Boards abgetrennt werden,damit die Shield / Nucleo Board Kombination &lt;br /&gt;
in den Zwischenrahmen der WC24h passt.&lt;br /&gt;
Folgendes ist dafür zu tun:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 nucleo F411RE Bestückungsseite ST-Link.jpg|miniatur|ST-Link]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;A.&#039;&#039;&#039; &lt;br /&gt;
ST Link absägen &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;B.&#039;&#039;&#039; &lt;br /&gt;
die Brücken SB62/SB63 auf dem Nucleo Board einlöten. Damit werden RX/D0 und TX/D1 auf der&lt;br /&gt;
einreihigen Arduino Pfostenbuchse C9 und die Pins 35 und 37 auf CN10 (Morpho Connector)&lt;br /&gt;
angebunden.   &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C.&#039;&#039;&#039; &lt;br /&gt;
Auf dem ST Link sind die beiden Jumper CN2 zu entfernen. Damit wird der ST Link von interner &lt;br /&gt;
auf externe Programmierung umgestellt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:STM32 Nucleo F411RE Rückseite ST-Link.jpg|miniatur|ST-Link Rückseite]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;D.&#039;&#039;&#039; &lt;br /&gt;
Die Brücken Brücken SB12-SB15 auf dem ST Link sind zu entfernen. Dies dient zum Schutz des ST Links&lt;br /&gt;
falls beim Absägen die Verbindungsleitungen ST Link - Nucleo Board kurzgeschlossen wurden.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wie der ST Link wieder an die Shield/Nucleo Board Kombination angeschlossen wird, beschreibe ich später.&lt;br /&gt;
&lt;br /&gt;
= Verkabelung =&lt;br /&gt;
&lt;br /&gt;
= Gesamtmontage =&lt;br /&gt;
&lt;br /&gt;
== Zwischenboden ==&lt;br /&gt;
Die Zwischenböden sind genauso groß wie die Frontplatte, womit sich die Frage der Holzoptik an den Seiten stellt. Die meisten Leute greifen zu einer der folgenden Lösungen:&lt;br /&gt;
&lt;br /&gt;
*Rahmen um die Uhr (siehe Teileliste)&lt;br /&gt;
*Zwischenboden anstreichen&lt;br /&gt;
*Zwischenboden mit Umleimer einfassen&lt;br /&gt;
&lt;br /&gt;
== Frontplatte ==&lt;br /&gt;
Möglichkeiten der Anbringung der Frontplatte aufzählen und erläutern, u.a.&lt;br /&gt;
*Kleber&lt;br /&gt;
*Magnete&lt;br /&gt;
Man sollte die Magnete, die an der Frontplatte angeklebt werden, ca 3-4mm in den Zwischenboden rein ragen lassen, damit sich Frontplatte nicht verschiebt. Außerdem muß man abwarten, bis der Kleber völlig ausgehärtet ist.&lt;br /&gt;
&lt;br /&gt;
*Powerstrips&lt;br /&gt;
&lt;br /&gt;
== Aufhängen an der Wand ==&lt;br /&gt;
&lt;br /&gt;
= Inbetriebnahme =&lt;br /&gt;
== Flashen des Nucleo STM32F4xx ==&lt;br /&gt;
&lt;br /&gt;
== Flashen des Nucleo STM32F411 ==&lt;br /&gt;
(noch nicht komplett, Andreas/Alidi)&lt;br /&gt;
&lt;br /&gt;
1. die WWW Seite http://www.st.com/en/development-tools/st-link-v2.html aufrufen.&lt;br /&gt;
&lt;br /&gt;
2. unter &amp;quot;Tools and Software / Embedded Software&amp;quot; folgende SW runterladen (evt. vorher bei ST anmelden)&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004&lt;br /&gt;
&lt;br /&gt;
3. folgende Firmware von &amp;quot;WordClock mit WS2812&amp;quot; in einen Ordner abspeichern&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;Wordclock-hex.zip&#039;&#039;&#039;, WordClock STM32 Firmware alle Varianten, 2.6.6&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; entzippen z.b. in Unterordner &amp;quot;Wordclock-hex&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;ESP-WordClock-4M.bin&#039;&#039;&#039; , ESP8266 ESP-12F Firmware - Neu! , 2.6.6&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Datei:&#039;&#039;&#039;WC24h.apk&#039;&#039;&#039;, Android App , 2.6.1 (für WLAN Verbindung WCxyh und Smartphon)&lt;br /&gt;
&lt;br /&gt;
4. Datei von Pkt. 2 &amp;quot;STM32 ST-LINK Utility / STSW-LINK004&amp;quot; installieren&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; STM32 ST-LINK Utility / STSW-LINK004, installieren, Dateiordner wählen&lt;br /&gt;
&lt;br /&gt;
     -&amp;gt; auf dem Desktop erscheint das STM Link Icon &#039;&#039;&#039;&amp;quot;STM32 ST-Link Utility&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
5. Nucleo-Board mit Mini USB Kabel an ST Link mit PC verbinden&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf ST Link leuchtet&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; rote LED auf Nucleo-Board leuchtet, grüne LED auf Nucleo-Board blinkt&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Nucleo-Board ist als Laufwerk z.b. &#039;&#039;&#039;&amp;quot;f:\Node_F411RE&amp;quot;&#039;&#039;&#039; sichtbar&lt;br /&gt;
&lt;br /&gt;
6. das Icon STM32 ST-Link Utility  starten&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Connect“ anklicken, damit die Software eine Verbindung zum ST-Link v2 USB Modul herstellen kann.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; im Reiter „Target“ den Punkt „Program &amp;amp; Verify“ anklicken. Dadurch wird automatisch kontrolliert, ob die Daten im Nucleo-Board konsistent zu den Informationen im .HEX File sind.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; die gewünschte Hex-Datei passend zur Hardware aus Unterordner auswählen z.B. &#039;&#039;&#039;&amp;quot;wc24h-stm32f411-ws2812-grb.hex&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; auf Öffnen drücken&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; grüne LED auf Nucleo-Board ist aus&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; LED auf ST Link blinkt rot/grün&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; nach ca. 10min ist das Nucleo-Board geflasht, die LED auf dem ST Link leuchtet grün&lt;br /&gt;
&lt;br /&gt;
Der Rest folgt noch, Andreas/Alidi&lt;br /&gt;
&lt;br /&gt;
== Flashen des STM32F103 (Mini-Dev-Board) ==&lt;br /&gt;
Das Flashen des STM32 ist im [[WordClock_mit_WS2812#Flashen_des_STM32_MiniDevBoards|Hauptartikel]] erläutert. &lt;br /&gt;
Der STM32 kann kann einzeln geflasht werden, genauso aber auch, wenn er schon auf dem Shield verbaut ist.&lt;br /&gt;
&lt;br /&gt;
== Flashen des ESP ==&lt;br /&gt;
{|&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
# Virtual COM Port Treiber installieren (siehe [[WordClock_mit_WS2812#Software_f.C3.BCr_Windows|hier]])&lt;br /&gt;
# UART am PC einstecken, er sollte im Gerätemanager mit einem COM-Port auftauchen (welcher, ist egal). In den Eigenschaften (rechte Maustaste) die Bits pro Sekunde auf 115200 stellen (siehe Screenshot).&lt;br /&gt;
# Sicherstellen, dass der Jumper am Shield auf PROG steht, nicht auf RUN!&lt;br /&gt;
# UART mit dem Shield verbinden (GND an GND, TX an RX, RX an TX)&lt;br /&gt;
# Der [[WordClock_mit_WS2812#Flash_des_WLAN-Moduls|Anleitung im Hauptartikel]] folgen.&lt;br /&gt;
# UART vom Board abziehen, Jumper auf RUN stellen und den ESP ins eigene WLAN einbinden (entweder über WPS oder als Access Point)&lt;br /&gt;
||[[Datei:Geraetemanager COM.PNG|miniatur|UART im Gerätemanager]]&lt;br /&gt;
|}&lt;br /&gt;
Es gibt keine Rückmeldung, ob das Board im Flash-Modus ist. Falls es nicht klappt, sollte man das gleiche Prozedere bei mitlaufendem Putty ausprobieren (siehe [[WordClock_mit_WS2812#Logging|hier]]). Der Flash-Modus erzeugt ein paar kryptische Zeichen im Putty-Fenster. Wenn das geklappt hat, Putty schließen (damit der COM-Port freigegeben wird) und das gleiche Prozedere erneut probieren.&lt;br /&gt;
&lt;br /&gt;
== Erläuterung der Meldungen im Log ==&lt;br /&gt;
* time &amp;quot;192.53.103.103&amp;quot; -&amp;gt; Der STM32 hat ein Time Commando zum ESP geschickt&lt;br /&gt;
* (OK time) -&amp;gt; Der STM32 hat eine Antwort erhalten&lt;br /&gt;
* (TIME 3703484819) -&amp;gt; Die Zeit die Empfangen wurde &lt;br /&gt;
* (- new client) -&amp;gt; Ein neuer WLan client hat sich angemeldet&lt;br /&gt;
&lt;br /&gt;
== Bekannte Fehlermöglichkeiten ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[https://www.mikrocontroller.net/topic/385955?page=14#5032451 FritzBox muss neu gestartet werden]&#039;&#039;&#039;&lt;br /&gt;
* Die Website der Uhr hakt oder hat Timeouts&lt;br /&gt;
* Ping auf die IP-Adresse des ESP8266 ist wesentlich größer als 10msec oder setzt für mehrere Sekunden aus&lt;br /&gt;
&lt;br /&gt;
=== STM32F103C8T6 Mini-Development Board ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Falsche STM32 Software geflasht&#039;&#039;&#039;, mögliche Symptome:&lt;br /&gt;
* Die LED PC13 des STM32F103 Board leuchtet nach dem Start nicht&lt;br /&gt;
* Der WebServer ist erreichbar, allerdings wird das EEPROM als offline angezeigt&lt;br /&gt;
* Der WebServer ist erreichbar, aber Datum und Uhrzeit sind 01.01.1900&lt;br /&gt;
* Auf der Updateseite ist die WordClock Firmware Version leer, (Update kann durchgeführt werden, allerdings ändert sich das Problem nicht)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RTC/EEPROM defekt oder falsch angeschlossen&#039;&#039;&#039;&lt;br /&gt;
* Beim Startup steht im Log&lt;br /&gt;
    rtc is offline&lt;br /&gt;
    eeprom is offline&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&amp;diff=77757</id>
		<title>PHILIPS VP5500 VoIP Telefon</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=PHILIPS_VP5500_VoIP_Telefon&amp;diff=77757"/>
		<updated>2013-07-28T18:31:07Z</updated>

		<summary type="html">&lt;p&gt;Mockup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Verwandte Artikel =&lt;br /&gt;
* Konfiguration: http://www.mikrocontroller.net/topic/170483#new&lt;br /&gt;
* Kernel/GUI Entwicklung: http://www.mikrocontroller.net/topic/172616#new&lt;br /&gt;
* http://das-labor.org/wiki/VP5500&lt;br /&gt;
* (Hack) http://spritesmods.com/?art=vpx500&lt;br /&gt;
* http://vp6500.bd8.nl/&lt;br /&gt;
&lt;br /&gt;
= Allgemeines =&lt;br /&gt;
&lt;br /&gt;
Bei den diesem Text zugrundeliegenden Geräten handelt es sich um videofähige VoIP-Phones des Herstellers Philips, die vom früheren holländischen Anbieter KPN vertrieben wurden und nach dessen Ausscheiden aus dem Markt nun günstig erhältlich sind.&lt;br /&gt;
Ihr geringer Preis, die SoC-Architektur und das darauf laufende OS macht sie dabei für all jene interessant, die ihre eigenen Ideen und Projekte auf der Basis eines solchen Gerätes verwirklichen wollen, und gibt den oft fabrikneuen Exemplaren eine Art zweite Chance.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
=== VP5500 ===&lt;br /&gt;
* Kamera-Auflösung 640x480 Pixel&lt;br /&gt;
* 30 Bilder pro Sekunde&lt;br /&gt;
* Kamera um 240° drehbar&lt;br /&gt;
* 5,6 cm (2,2&amp;quot;) TFT-Display, 176x220 Pixel, 65000 Farben&lt;br /&gt;
* Audio-/Video-Ausgang - 4fach 2,5mm Klinke-Cinch&lt;br /&gt;
* integrierter Li-Ion Akku, 3,7 V-/1100 mAh&lt;br /&gt;
* englische und niederländische Menüsprache&lt;br /&gt;
* Software Qtopia Version 2.1.0&lt;br /&gt;
* Maße (LxBxH): 134x49x24 mm.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Philips_VP5500.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== VP6500 ===&lt;br /&gt;
&lt;br /&gt;
* Kamera-Auflösung 640x480 Pixel&lt;br /&gt;
* 30 Bilder pro Sekunde&lt;br /&gt;
* Kamera um 240° drehbar&lt;br /&gt;
* 5,6 cm (2,2&amp;quot;) TFT-Display, 176x220 Pixel, 65000 Farben&lt;br /&gt;
* Audio-/Video-Ausgang - 4fach 3,5mm Klinke-Cinch&lt;br /&gt;
* 2x Philips Multilife AA/R6NM 1800mAh NiMH-Akkus, je 1,2V, Ladeempfehlung: 15h mit 180mAh&lt;br /&gt;
* englische, deutsche und niederländische Menüsprache&lt;br /&gt;
* Software Qtopia Version 2.1.0&lt;br /&gt;
* Maße (LxBxH): 134x49x24 mm.&lt;br /&gt;
* Gewicht Mobilteil: 170 g (inkl. 2 NiMH-Akkus AA)&lt;br /&gt;
[[Bild:VP6500_kl.jpg]]&lt;br /&gt;
&lt;br /&gt;
= Das VPx500 &#039;rooten&#039; =&lt;br /&gt;
&lt;br /&gt;
Um vollen Zugang zum System auf dem Gerät zu erhalten gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
== per telnet ==&lt;br /&gt;
Sobald das Telefon im Netzwerk angemeldet ist (egal ob DHCP oder statisch) kann über irgendein Terminal vom Netzwerk aus via telnet und der Telefon-IP auf das Gerät zugegriffen werden.&lt;br /&gt;
User: root / PW: toor&lt;br /&gt;
&lt;br /&gt;
== per serieller Schnittstelle ==&lt;br /&gt;
Dazu muß der [[#UART]] angeschlossen werden. Während des Bootvorgangs drückt man immer wieder ziellos irgendwelche Tasten bis man am Prompt des [http://www.lartmaker.nl/lartware/blob/ blob-Bootloaders] ist.&lt;br /&gt;
Dann kann man &lt;br /&gt;
 boot root=/dev/mtdblock2 init=/bin/sh&lt;br /&gt;
eingeben, um an eine minimale Shell zu kommen.&lt;br /&gt;
&lt;br /&gt;
In dieser setzt man dann mit &lt;br /&gt;
 passwd&lt;br /&gt;
das Passwort für &#039;&#039;root&#039;&#039;. Danach kann man sich als &#039;&#039;root&#039;&#039; mit dem gesetzten Passwort einloggen.&lt;br /&gt;
&lt;br /&gt;
== per DNS-Hack ==&lt;br /&gt;
Um den Rootzugriff zu aktivieren, wird dem Telefon ein Softwareupdate vorgegaukelt. Es versucht, auf den Updateserver von KPN zuzugreifen (den es nicht mehr gibt). Glücklicherweise geschieht dies nicht über eine feste IP, sondern über einen Hostnamen, so dass man an dieser Stelle sich durch einen eigenen DNS den Domainname auf einen eigenen Server umleiten kann. Daher ist im eigenen Netzwerk eine Umleitung des DNS erforderlich (oder ein DHCP-Server, der die Adresse des DNS bekanntgibt. Stichworte &#039;Static DNS&#039;, ..).&lt;br /&gt;
Das Gerät holt sich dann ein Updatepaket, das den Telnet-Zugang aktiviert.&lt;br /&gt;
&lt;br /&gt;
Dann lässt sich per Terminal (Linux. Windows: ....) die Kommandozeile des Geräts aufrufen:&lt;br /&gt;
&lt;br /&gt;
 telnet 123.456.789.012&lt;br /&gt;
&lt;br /&gt;
Passwort ist &amp;quot;toor&amp;quot;.&lt;br /&gt;
Das Ändern des root-Passwortes erfolgt mit dem Befehl passwd.&lt;br /&gt;
&lt;br /&gt;
Unter Applications&amp;gt;Registration sind Netzwerk- und VoIP-Einstellungen zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung für Fritz-Box-Benutzer ===&lt;br /&gt;
Die Fritzboxen bieten bisher leider keine Möglichkeit, den verwendeten DNS&lt;br /&gt;
direkt im Webinterface zu ändern, über Umwege geht es aber doch:&lt;br /&gt;
* Über das Webinterface der Fritzbox die Einstellungen sichern&lt;br /&gt;
* Exportdatei im Texteditor öffnen (am besten nicht Notepad, da der die Unix-Zeilenumbrüche nicht versteht - zur Not geht auch Wordpad)&lt;br /&gt;
* nach overwrite_dns1 suchen (gibt es zwei mal) und da den DNS 84.38.68.30 (von blooza http://www.mikrocontroller.net/topic/170483#1651124 bereitgestellt) oder 188.40.123.50 (von sprites http://spritesmods.com/?art=vpx500 bereitgestellt) eintragen&lt;br /&gt;
* am Anfang der Exportdatei VOR &amp;quot;**** CFGFILE:ar7.cfg&amp;quot; eine Zeile &#039;NoChecks = yes&#039; einfügen, damit die Fritzbox die nun nicht mehr passende Checksumme ignoriert.&lt;br /&gt;
* Einstellungen zurück in die Fritzbox übertragen.&lt;br /&gt;
&lt;br /&gt;
Wenn die Telefone entsperrt sind, den DNS wieder entfernen (Es ist&lt;br /&gt;
vielleicht eine ganz gute Idee, wenn man da zwei unabhängige DNS-Server&lt;br /&gt;
einträgt, so umgeht man auch gleich providerseitige DNS-Sperren)&lt;br /&gt;
&lt;br /&gt;
==== Alternative ====&lt;br /&gt;
Wer sich den nicht ganz ungefährlichen Weg mit den anpassungen an der Fritzbox erspahren will, wechselt seine Fritzbox in den Expertenmodus. Danach kann man unter System - Netzwerk bei dem Punkt &amp;quot;IP adresse der Fritzbox ändern&amp;quot; bei vielen modellen den internen DHCP abschalten. Dann unter windows z.B. tftpd32 (http://tftpd32.jounin.net/) starten, in dessen DHCP-Server die Fritzbox als Gateway und den entsprechenden &amp;quot;modding-dns&amp;quot; eintragen und das Telefon neustarten.&lt;br /&gt;
&lt;br /&gt;
War das Telefon schonmal angemeldet, versucht es die selbe IP vom neuen DHCP zu erzwingen, was tftpd32 nicht wirklich mag. Daher im tftpd32 die lease-ip bei 2 beginnen lassen und eine range von 250 eintragen, damit die vom Telefon verlangte IP auch im Adresspool des dhcp servers vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
=== Anleitung fli4l ===&lt;br /&gt;
Mit dem [http://www.fli4l.de fli4l] ist das ganze ganz einfach.&lt;br /&gt;
&lt;br /&gt;
In der Datei config/dns_dhcp.txt den DNS  Redirect für die zwei DNS-Name Konfigurieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;file&amp;gt;&lt;br /&gt;
    DNS_REDIRECT_N=&#039;2&#039;                # number of redirected domains&lt;br /&gt;
    DNS_REDIRECT_1=&#039;ntp.xs4all.nl&#039;    # 1st redirected domain&lt;br /&gt;
    DNS_REDIRECT_1_IP=&#039;188.40.123.50&#039; # IP of redirected domain&lt;br /&gt;
&lt;br /&gt;
    DNS_REDIRECT_2=&#039;vpcm-001.cust.kpn.net&#039; &lt;br /&gt;
    DNS_REDIRECT_2_IP=&#039;188.40.123.50&#039; &lt;br /&gt;
&amp;lt;/file&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Hardware =&lt;br /&gt;
&lt;br /&gt;
== verwendete Komponenten ==&lt;br /&gt;
&lt;br /&gt;
* MCU: [http://www.mikrocontroller.net/attachment/72258/datasheet.pdf Freescale MC9328MX21] (ARM9) @ 266MHz ([http://en.wikipedia.org/wiki/I.MX21 Wikipedia_englisch]) &lt;br /&gt;
** gehört zur ARM9E-Familie: ARMv5TEJ -&amp;quot;IntructionSet&amp;quot; (ARM926EJ-S)&lt;br /&gt;
** [http://www.freescale.com/files/32bit/doc/ref_manual/MC9328MX21RM.pdf MC9328MX21 Applications Processor Reference Manual]&lt;br /&gt;
* PC-to-TV-Konverter-Chip: [http://www.mikrocontroller.net/attachment/73579/Data_Sheets.zip FS455LF]&lt;br /&gt;
* WLAN: Marvell 88w8385, als Modul von [http://www.mikrocontroller.net/attachment/72802/WM-G-MR-01-v27__01192006.pdf WM-G-MR-01] (VP5500) / Philips [http://www.mikrocontroller.net/attachment/73812/BGW211_Preliminary_Datasheet_v1.1.pdf BGW211], on-board (VP6500)&lt;br /&gt;
* SDRAM: 2 x [http://www.mikrocontroller.net/attachment/72461/K4S56163LF.pdf K4S56163LF] - 4M x 16Bit x 4 Banks im VP5500&lt;br /&gt;
* SDRAM: 1 x [http://www.mikrocontroller.net/attachment/73520/Samsung_64MB_K4M51323PC_1_8V.pdf K4M51323PC_1_8V] - 4M x 32Bit x 4 Banks im VP6500&lt;br /&gt;
* Flash: 2 x ws128j0pbfw00 [http://www.mikrocontroller.net/attachment/72462/S29WS064J.pdf S29WS128J/064J] 128/64 Megabit (8/4 M x 16-Bit) CMOS 1.8 Volt-only Simultaneous Read/Write, Burst Mode Flash Memory im VP5500&lt;br /&gt;
* Flash: 1 x [http://www.mikrocontroller.net/attachment/73521/S29GL512N.pdf S29GL512N] - 512 Megabit, 3.0 Volt-only Page Mode Flash Memory im VP6500&lt;br /&gt;
* Kamera: dc-4626.a5 by chicony&lt;br /&gt;
* Display: Samsung LTS220QC (HD66772 Controller)&lt;br /&gt;
&lt;br /&gt;
== Messungen ==&lt;br /&gt;
&lt;br /&gt;
=== Stromaufnahme ===&lt;br /&gt;
&lt;br /&gt;
==== VP5500 ====&lt;br /&gt;
FIXME &lt;br /&gt;
&lt;br /&gt;
==== VP6500 ====&lt;br /&gt;
 &lt;br /&gt;
Konfiguration: VP6500 mit aktivierter serieller Konsole an Labornetzteil, Spannung 3.67V (Bei weniger bootet es anscheinend aufgrund von Stromspitzen nicht richtig und vermeldet auf der seriellen Konsole ein &#039;battery low&#039; und schaltet sich danach selbst ab. Diese Spannung sollte noch so gerade &#039;safe&#039; sein, geht man davon aus, daß da ein Step-Up im Innern am werkeln ist und noch ein geringer Abfall über die Schottky-Diode einzurechnen ist). &lt;br /&gt;
&lt;br /&gt;
===== Telefon =====&lt;br /&gt;
* Booten: bis zu 420mA&lt;br /&gt;
* Einbuchen: ca. 400mA&lt;br /&gt;
* mit abgeschaltetem Display, aber eingebucht und laufend (idle): ca. 80mA&lt;br /&gt;
* mit angeschaltetem Display, eingebucht und idle: ca. 190mA&lt;br /&gt;
* mit 100% Prozessor-Last (von serieller Konsole ausgeführt: &amp;quot;while true; do true; done&amp;quot;): ca. 60mA mehr als idle (Scheint aber auch größere Sprünge für andere CPU-Last zu geben)&lt;br /&gt;
* im &#039;Deep Sleep&#039; (wird ein paar Minuten nach Einschalten erreicht): &amp;lt;10mA (!), mit kurzen Wachphasen mit erheblichem Stromverbrauch (&amp;gt;100mA). Beachte: Die serielle Konsole ist in diesem Modus auch nicht mehr aktiv, das Telefon ist aber nicht abgestürzt (Tastendruck aktiviert die Konsole wieder).&lt;br /&gt;
* Telefonieren ca 500mA&lt;br /&gt;
* Telefonieren mit Webcam ca 550mA&lt;br /&gt;
&lt;br /&gt;
===== Ladegerät =====&lt;br /&gt;
* Phone nicht in der Ladeschale: &amp;lt; 0.2W&lt;br /&gt;
* Phone wird geladen: ca 4W&lt;br /&gt;
&lt;br /&gt;
== System-Takte ==&lt;br /&gt;
 # cat /proc/systclk&lt;br /&gt;
 System clocks state:&lt;br /&gt;
     Ref clock :      32768Hz  (int, premult by 512)&lt;br /&gt;
     MPLL clock:  263999905Hz  (computed: 264000000Hz)&lt;br /&gt;
     SPLL clock:  163840000Hz  (computed: 163840000Hz)&lt;br /&gt;
     CPU clock :  263999905Hz  (PERSC   = 0)&lt;br /&gt;
     Bus clock :  132000000Hz  (BCLKDIV = 1, computed: 131999952Hz)&lt;br /&gt;
     CSI clock :  unknown      (cannot read register CSICR1)&lt;br /&gt;
     USB clock :   20480000Hz  (USB_DIV = 7)&lt;br /&gt;
     Wait State:  CS0U[WSC] = 10, CS0U[WSC] = 48&lt;br /&gt;
     loops_per_jiffy = 665058&lt;br /&gt;
&lt;br /&gt;
== Innenleben ==&lt;br /&gt;
&lt;br /&gt;
=== Zerlegen des VP5500 ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:01_offen_von_Hinten.JPG|1. Geöffnetes Akkufach&lt;br /&gt;
Datei:02_Blende_entfernt.JPG|2. hintere Schwarze Blende entfernt&lt;br /&gt;
Datei:03_Rückseite_entfernt.JPG|3. Schalenrückteil entfernt&lt;br /&gt;
Datei:04_aufhebeln_Vorderteil.JPG|4. Druck nach außen&lt;br /&gt;
Datei:05_vorderteil_entfernt.JPG|5. entferntes Vorderteil&lt;br /&gt;
Datei:06_Elektronik_entfernt.JPG|6. entfernte Elektronik&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# das Akkufach muss geöffnet und die Schrauben entfernt werden&lt;br /&gt;
# hinter der rückseitigen schwarzen Blende befinden sich zwei Schrauben, die entfernt werden müssen&lt;br /&gt;
#* Hierzu am besten mit einem schmalen kleinen Schraubendreher von der Stirnseite aus zwischen die Plastikteile fahren und vorsichtig aufhebeln und den Schraubendreher dabei weiter unter die Blende bewegen.&lt;br /&gt;
# Nun kann einfach das rückseitige Schalenteil abgeschaubt werden&lt;br /&gt;
# das Entfernen des Frontschalenteils ist etwas tricky:&lt;br /&gt;
#* von oben und unten lässt sich ganz gut ein Spalt zur Seite aufweiten&lt;br /&gt;
#* etwas unter der Mitte hängt es aber auf beiden Seiten. Dort befinden sich kleine Plastikbügel, die recht leicht zerbrechen.&lt;br /&gt;
#* Mit einem sehr schmalen Schraubendreher in eine der Lücken fahren (anfangen auf der Seite ohne Tasten) und den Schraubendreher nach innen drücken, so das der Druck in der Seite nach außen wirkt.&lt;br /&gt;
#* Mit etwas Geschick bekommt man das so ohne Bruch ab, es ist aber auch nicht kritisch, wenn der Bügel ein wenig anbricht)&lt;br /&gt;
# Die Platine zu entfernen ist nicht ganz so schwierig.&lt;br /&gt;
#* Zuerst die Seite auf der keine Knöpfe sind:&lt;br /&gt;
#* vorsichtig diese Seite leicht anheben. Am unteren Ende ist auf die Kontakte zu achten &lt;br /&gt;
#* dann versuchen die Platine seitlich nach oben aus dem Gehäuse zu ziehen&lt;br /&gt;
#* dabei auf das Lautsprecherkabel und den Kamerakonnektor achten&lt;br /&gt;
# Zusammenbau genauso, nur umgedreht ;)&lt;br /&gt;
#* nicht die Lautsprecher- und Kamera-Stecker vergessen&lt;br /&gt;
&lt;br /&gt;
=== Bilder vom VP5500 Innenleben ===&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;240&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
Datei:Oberseite.jpg | Ansicht der Oberseite&lt;br /&gt;
Datei:Oberseite_beschriftet.jpg | Oberseite mit Beschriftung der Bauteile&lt;br /&gt;
Datei:Drumherum.jpg | Übersicht über die Komponenten&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;240&amp;quot; &amp;gt;&lt;br /&gt;
Datei:Kontakte_Oberseite.jpg | UART-Schnittstelle Oberseite&lt;br /&gt;
Datei:Kontakte_Unterseite.jpg | JTAG-Schnittstelle Unterseite&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Testpins am VP5500 ===&lt;br /&gt;
Original Liste von [http://www.mikrocontroller.net/topic/170483#1646514 Tino] [[Media:Philips vp5500 Liste Testpins.pdf|herrunterladen]].&lt;br /&gt;
&lt;br /&gt;
[[Bild:Philips vp5500 testpins 1.jpg|thumb| Testpins auf der Rückseite]]&lt;br /&gt;
[[Bild:Philips vp5500 testpins 2.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Testpin Nr.  !!    verbunden zu !! Funktion&lt;br /&gt;
|-&lt;br /&gt;
|   1       ||                  LED || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
|    2     ||            Kamera Pin 8 an CN1 || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
|    3     ||                  Pin 4 an IC1 || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
|    4    ||                z.B. IC5 Pin V 18 || VDDA&lt;br /&gt;
|-&lt;br /&gt;
|    5    ||                       GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|    6     ||                       NC || NC&lt;br /&gt;
|-&lt;br /&gt;
|    7     ||                Pin E 16 an IC5 || SAP_CLK&lt;br /&gt;
|-&lt;br /&gt;
|    8     ||                 Pin 1 an CN 3 || Lautsprecher&lt;br /&gt;
|-&lt;br /&gt;
|    9     ||                 Pin 2 an CN 3 || Lautsprecher&lt;br /&gt;
|-&lt;br /&gt;
|    10    ||                  Pin an CN 4 || ?&lt;br /&gt;
|-&lt;br /&gt;
|    11     ||                 Pin an CN 4 || ?&lt;br /&gt;
|-&lt;br /&gt;
|    12    ||                  Pin an CN 4 || ?&lt;br /&gt;
|-&lt;br /&gt;
|    13    ||                Pin L 16 an IC5 || UART2_TXD&lt;br /&gt;
|-&lt;br /&gt;
|    14     ||               Pin C 12 an IC5 || USBH1_RXDM&lt;br /&gt;
|-&lt;br /&gt;
|    15   ||                 Pin H 12 an IC5 || USBH1_TXDP&lt;br /&gt;
|-&lt;br /&gt;
|    16     ||               Pin B 19 an IC5 || CSPI2_SS2&lt;br /&gt;
|-&lt;br /&gt;
|    17   ||                 Pin B16 an IC5 || SSI2_FS&lt;br /&gt;
|-&lt;br /&gt;
|    18     ||               Pin F 18 an IC5 || KP_ROW0&lt;br /&gt;
|-&lt;br /&gt;
|    19    ||                Pin K 18 an IC5 || KP_COL4&lt;br /&gt;
|-&lt;br /&gt;
|    20    ||                Pin L 19 an IC5 || UART3_TXD&lt;br /&gt;
|-&lt;br /&gt;
|    21     ||               Pin T 14 an IC5 || RESET_IN&lt;br /&gt;
|-&lt;br /&gt;
|    22    ||    geht an + des Kondensators neben IC6 || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
|    23   ||                Pin D 13 an IC 9 || CLKOUT&lt;br /&gt;
|-&lt;br /&gt;
|    24      ||             Pin E 13 an IC 9 || CLKIN_P&lt;br /&gt;
|-&lt;br /&gt;
|    25    ||                Pin A 9 an IC 9 || DAC_D&lt;br /&gt;
|-&lt;br /&gt;
|    26    ||                Pin A 8 an IC 9 || DAC_A&lt;br /&gt;
|-&lt;br /&gt;
|    27    ||                Pin A 7 an IC 9 || DAC_B&lt;br /&gt;
|-&lt;br /&gt;
|    28     ||               Pin A 6 an IC 9 || DAC_C&lt;br /&gt;
|-&lt;br /&gt;
|    29      ||             Pin L 13 an IC 5 || UART1_TXD&lt;br /&gt;
|-&lt;br /&gt;
|    30     ||              Pin T 16 an IC 5 || BOOT1&lt;br /&gt;
|-&lt;br /&gt;
|    31  ||                 Pin K 10 an IC 5 || UART1_RXD&lt;br /&gt;
|-&lt;br /&gt;
|    32    ||               Pin U 17 an IC 5 || BOOT2&lt;br /&gt;
|-&lt;br /&gt;
|    33    ||                 Pin 9 an IC 23 || unbekannt&lt;br /&gt;
|-&lt;br /&gt;
|    34    ||                Pin D 19 an IC5 || CSPI2_SCLK&lt;br /&gt;
|-&lt;br /&gt;
|    35     ||              Pin C 14 an IC5 || TIN&lt;br /&gt;
|-&lt;br /&gt;
|    36    ||                Pin C 19 an IC5 || CSPI2_SS1&lt;br /&gt;
|-&lt;br /&gt;
|    37   ||                 Pin D 18 an IC5 || CSPI2_SS0&lt;br /&gt;
|-&lt;br /&gt;
|    38     ||               Pin E 19 an IC5 || CSPI2_MOSI&lt;br /&gt;
|-&lt;br /&gt;
|    39     ||               Pin H 19 an IC5 || PWMO&lt;br /&gt;
|-&lt;br /&gt;
|    40   ||            Pin J 9 an IC 7 und IC 8 || VDD&lt;br /&gt;
|-&lt;br /&gt;
|    41   ||                 Pin J 19 an IC 5 || KP_COL2&lt;br /&gt;
|-&lt;br /&gt;
|    42   ||                Pin K 16 an IC 5 || KP_COL3&lt;br /&gt;
|-&lt;br /&gt;
|    43   ||                 Pin J 11 an IC 5 || KP_ROW2&lt;br /&gt;
|-&lt;br /&gt;
|44      ||     Pin J 17 an IC 5 || KP_COL1&lt;br /&gt;
|-&lt;br /&gt;
|45  ||         Pin G 19 an IC 5 || KP_ROW4&lt;br /&gt;
|-&lt;br /&gt;
|46  ||         Pin G 17 an IC 5 || KP_ROW3&lt;br /&gt;
|-&lt;br /&gt;
|47  ||    Pin D 5 an IC 10 und IC 11 || ACC&lt;br /&gt;
|-&lt;br /&gt;
|48 ||          Pin G 16 an IC 5 || KP_ROW1&lt;br /&gt;
|-&lt;br /&gt;
|49   ||        Pin J 18 an IC 5 || KP_COL0&lt;br /&gt;
|-&lt;br /&gt;
|50  ||         Pin V 18 an IC 5 || VDDA&lt;br /&gt;
|-&lt;br /&gt;
|51 ||      Pin 2 an CN KB-Stecker || ?&lt;br /&gt;
|-&lt;br /&gt;
|52 ||           Pin 2 an IC 15 ||  ?&lt;br /&gt;
|-&lt;br /&gt;
|53  ||      Pin 4 am LCD Stecker || ?&lt;br /&gt;
|-&lt;br /&gt;
|54  ||         Pin E 17 an IC 5 || CSPI2_MISO&lt;br /&gt;
|-&lt;br /&gt;
|55 ||  Pin 1,2,3,10,13 am LCD Stecker || ?&lt;br /&gt;
|-&lt;br /&gt;
|56  ||          Pin 3 an IC 16 ||  ?&lt;br /&gt;
|-&lt;br /&gt;
|57  ||         Pin U 10 an IC 5 || PC_PWRON&lt;br /&gt;
|-&lt;br /&gt;
|58  ||            Pin 1 IC 18 || ?&lt;br /&gt;
|-&lt;br /&gt;
|59  ||       an Diode über IC 16 || ?&lt;br /&gt;
|-&lt;br /&gt;
|60  ||          Pin 3 an IC 25 || ?&lt;br /&gt;
|-&lt;br /&gt;
|61 ||         Ladekontakt positiv || Ladegerät +&lt;br /&gt;
|-&lt;br /&gt;
|62  ||               GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|63  ||        Akku Mittelkontakt || Akkustand? Temperatur?&lt;br /&gt;
|-&lt;br /&gt;
|64 ||       Transistor unter IC 16 || ?&lt;br /&gt;
|-&lt;br /&gt;
|65  ||          Pin 2 an IC 22 || ?&lt;br /&gt;
|-&lt;br /&gt;
|66   ||      Pin 1,12,30 an IC 24 || VSS&lt;br /&gt;
|-&lt;br /&gt;
|67  ||    Kondensator + unter IC 20 || ?&lt;br /&gt;
|-&lt;br /&gt;
|68   ||         Pin 5 an IC 21 || ?&lt;br /&gt;
|-&lt;br /&gt;
|69  ||           Pin 2 an IC 4 || ?&lt;br /&gt;
|-&lt;br /&gt;
|70    ||        Pin 25 an IC24 || MCLK&lt;br /&gt;
|-&lt;br /&gt;
|71  ||       Prozessor Pin W 14 || QVDD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Testpins am VP6500 ===&lt;br /&gt;
Original Listen von [http://www.mikrocontroller.net/topic/170483#1658720 Tino] herunterladen. [[Media:V6500_Back.xls|Rückseite]], [[Media:V6500_Front.xls|Vorderseite]].&lt;br /&gt;
&lt;br /&gt;
[[Bild:V6500_Back.jpg|thumb| Testpins auf der Rückseite]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Testpin Nr.  !!    verbunden zu !! Funktion&lt;br /&gt;
|-		&lt;br /&gt;
| 1 || Pin 21 an BGW211EG || POR_N&lt;br /&gt;
|-		&lt;br /&gt;
| 2 || Pin A 14 an i.MX21 || TOUT&lt;br /&gt;
|-		&lt;br /&gt;
| 3 || Pin 46 an BGW211EG || JTAG_TDI&lt;br /&gt;
|-		&lt;br /&gt;
| 4 || Pin 44 an BGW211EG || JTAG_TCLK&lt;br /&gt;
|-		&lt;br /&gt;
| 5 || Pin 42 an BGW211EG || JTAG_TDO&lt;br /&gt;
|-		&lt;br /&gt;
| 6 || Pin 47 an BGW211EG || JTAG_TRST_N&lt;br /&gt;
|-		&lt;br /&gt;
| 7 || PIN 45 an BGW211EG || JTAG_TMS&lt;br /&gt;
|-		&lt;br /&gt;
| 8 || Pin 43 an BGW211EG || JTAG_RTCLK&lt;br /&gt;
|-		&lt;br /&gt;
| 9 || Pin C 14 an i.MX21 || TIN&lt;br /&gt;
|-		&lt;br /&gt;
| 10 || VDD || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 11 || Pin K 10 an i.MX21 || UART1_RXD&lt;br /&gt;
|-		&lt;br /&gt;
| 12 || Pin L 13 an i.MX21 || UART1_TXD&lt;br /&gt;
|-		&lt;br /&gt;
| 13 || GND || GND&lt;br /&gt;
|-		&lt;br /&gt;
| 14 || Pin U 17 an i.MX21 || BOOT2&lt;br /&gt;
|-		&lt;br /&gt;
| 15 || Pin V 16 an i.MX21 || BOOT0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Bild:V6500_Front.jpg|thumb| Frontseite: Die ICs wurden zum Messen ausgelötet.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Testpin Nr.  !!    verbunden zu !! Funktion&lt;br /&gt;
|-		&lt;br /&gt;
| 1 || 	Pin 29 von BGW211EG &amp;amp; F 16 an i.MX21 || RESET_N / CSPI1_SS1&lt;br /&gt;
|-		&lt;br /&gt;
| 2 || 	Pin 28 an BGW211EG &amp;amp; J 12 an i.MX21 || SPI_DAT_MOSI / CSPI1_MOSI&lt;br /&gt;
|-		&lt;br /&gt;
| 3 || 	Pin 27 an BGW211EG &amp;amp; F 19 an i.MX21 || SPI_SS_N / CSPI1_SS0&lt;br /&gt;
|-		&lt;br /&gt;
| 4 || 	Pin 26 an BGW21EG &amp;amp; F 17 an i.MX21 || SPI_DAT_MISO / CSPI1_MISO&lt;br /&gt;
|-		&lt;br /&gt;
| 5 || 	Pin 25 an BGW211EG &amp;amp; H 10 an i.MX21 || SPI_CLK / CSPI1_SCLK&lt;br /&gt;
|-		&lt;br /&gt;
| 6 || 	Pin 24 an BGW211EG &amp;amp; H 11 an i.MX21 || SPI_EXT_INT / CSPI1_RDY&lt;br /&gt;
|-		&lt;br /&gt;
| 7 || 	Pin 41 an BGW211EG || UART_TX&lt;br /&gt;
|-		&lt;br /&gt;
| 8 || 	Pin 40 an BGW211EG || UART_RX&lt;br /&gt;
|-		&lt;br /&gt;
| 9 || 	Transistor unter Testpunkt || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 10 || 	GND || GND&lt;br /&gt;
|-		&lt;br /&gt;
| 11 || 	LED || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 12 || 	Pin 8 am Kamerastecker || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 13 || 	Pin 18 am Kamerastecker || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 14 || 	Pin E 13 &amp;amp; H12 an FS455 || CLKIN / PREF&lt;br /&gt;
|-		&lt;br /&gt;
| 15 || 	Pin D 13 an FS455 || CLKOUT&lt;br /&gt;
|-		&lt;br /&gt;
| 16 || 	Pin A 11 an FS455 || XTAL_OUT&lt;br /&gt;
|-		&lt;br /&gt;
| 17 || 	VDD von FS455 || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 18 || 	Pin 15 &amp;amp; 16 am Displayconnector || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 19 || 	geht an 2 Dioden links daneben || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 20 || 	Pin M 19 an i.MX21 || UART1_CTS&lt;br /&gt;
|-		&lt;br /&gt;
| 21 || 	Pin M 18 an i.MX21 || UART1_RTS &amp;amp; GND ??&lt;br /&gt;
|-		&lt;br /&gt;
| 22 || 	VDDan i,MX21 || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 23 || 	Pin G 10 an i.MX21 || USB_BYP&lt;br /&gt;
|-		&lt;br /&gt;
| 24 || 	Pin A 19 an i.MX21 || SSI3_FS&lt;br /&gt;
|-		&lt;br /&gt;
| 25 || 	Pin D 17 an i.MX21 || SSI2_CLK&lt;br /&gt;
|-		&lt;br /&gt;
| 26 || 	VDD an i.MX21 || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 27 || 	Pin T 17 an i.MX21 || SD1_D3&lt;br /&gt;
|-		&lt;br /&gt;
| 28 || 	Pin A 15 an i.MX21 || SAP_TXDAT&lt;br /&gt;
|-		&lt;br /&gt;
| 29 || 	GND || GND&lt;br /&gt;
|-		&lt;br /&gt;
| 30 || 	Pin T 14 an i.MX21 || RESET_IN&lt;br /&gt;
|-		&lt;br /&gt;
| 31 || 	Pin R 19 an i.MX21 || TRST&lt;br /&gt;
|-		&lt;br /&gt;
| 32 || 	Pin P 19 an i.MX21 || TMS&lt;br /&gt;
|-		&lt;br /&gt;
| 33 || 	Pin N 17 an i.MX21 || TCK&lt;br /&gt;
|-		&lt;br /&gt;
| 34 || 	Pin K 11 an i.MX21 || TDO&lt;br /&gt;
|-		&lt;br /&gt;
| 35 || 	Pin P 18 an i.MX21 || TDI&lt;br /&gt;
|-		&lt;br /&gt;
| 36 || 	Pin 13 an TLV320 || OUTP2&lt;br /&gt;
|-		&lt;br /&gt;
| 37 || 	Pin 14 an TLV320 || OUTMV&lt;br /&gt;
|-		&lt;br /&gt;
| 38 || 	Pin 15 an BGW211EG || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 39 || 	Pin an Klinkenbuchse || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 40 || 	Pin an Klinkenbuchse || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 41 || 	? || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 42 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 43 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 44 || 	Pin 1,8 an 20XN2512 &amp;amp; Key ON || PowerON&lt;br /&gt;
|-		&lt;br /&gt;
| 45 || 	Pin 7 an BDR72K || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 46 || 	Pin 2 an BDR72K || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 47 || 	Pin 6 an MRRBGB3 || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 48 || 	LED Tastatur ||  ?&lt;br /&gt;
|-		&lt;br /&gt;
| 49 || 	Pin 10 an MRRBG3 || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 50 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 51 || 	geht an Widerstand auf Rückseite ? || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 52 || 	Pin L 13 an i.MX21 || UART1_TXD&lt;br /&gt;
|-		&lt;br /&gt;
| 53 || 	geht an Diode und Kondensator auf der Rückseite || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 54 || 	Pin C 14 an i.MX21 || TIN&lt;br /&gt;
|-		&lt;br /&gt;
| 55 || 	geht an Widerstand auf der Rückseite || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 56 || 	Pin 7 an BDR72K || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 57 || 	Pin K 10 an i.MX21 || UART1_RDX&lt;br /&gt;
|-		&lt;br /&gt;
| 58 || 	Pin U 17 an i.MX21 || BOOT2&lt;br /&gt;
|-		&lt;br /&gt;
| 59 || 	Pin T 16 an i.MX21 || BOOT1&lt;br /&gt;
|-		&lt;br /&gt;
| 60 || 	geht an Widerstand auf der Rückseite || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 61 || 	Pin V 16 an i.MX21 || BOOT0&lt;br /&gt;
|-		&lt;br /&gt;
| 62 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 63 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 64 || 	Pin 25 an TLV320 || MLCK&lt;br /&gt;
|-		&lt;br /&gt;
| 65 || 	Pin4 an 69W2440D || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 66 || 	VDD von TLV320 || VDD&lt;br /&gt;
|-		&lt;br /&gt;
| 67 || 	geht an Widerstand auf der Rückseite ||  ?&lt;br /&gt;
|-		&lt;br /&gt;
| 68 || 	geht an Widerstand auf der Rückseite || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 69 || 	Pin 65 an MRRBG3 || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 70 || 	GND || GND&lt;br /&gt;
|-		&lt;br /&gt;
| 71 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 72 || 	LED Tastatur || ?&lt;br /&gt;
|-		&lt;br /&gt;
| 73 || 	Akku positiv || Plus Akku&lt;br /&gt;
|-		&lt;br /&gt;
| 74 || 	Ladekontakt positiv || Ladekontakt positiv&lt;br /&gt;
|-		&lt;br /&gt;
| 75 || 	Akku positiv || Plus Akku&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== UART ==&lt;br /&gt;
TIN muss auf low gezogen werden, um die Schnittstelle zu aktivieren.&lt;br /&gt;
Jedoch startet dann das Telefon nicht vollständig (Fix siehe [[#Betrieb mit aktivierter serieller Schnittstelle]], zum rooten langt es jedoch, siehe [[#per serieller Schnittstelle]])&lt;br /&gt;
&lt;br /&gt;
* Spannungs-Pegel: 3.3V&lt;br /&gt;
* Baudrate: 115200 bps&lt;br /&gt;
* Stopbits: 1&lt;br /&gt;
* Flussteuerung: keine&lt;br /&gt;
=== VP5500 ===&lt;br /&gt;
[[Bild:VP5500_seriell_highlight.svg|100px|UART-Pins VP5500(Frontseite der Platine)]]&lt;br /&gt;
&lt;br /&gt;
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.&lt;br /&gt;
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.&lt;br /&gt;
&lt;br /&gt;
=== VP6500 ===&lt;br /&gt;
[[Bild:VP5600-Serialport-Preliminary.jpg|100px|UART-Pins VP6500]]&lt;br /&gt;
&lt;br /&gt;
Die serielle Schnittstelle ist unten vom Akkufach aus zugänglich.&lt;br /&gt;
Obiges Bild kennzeichnet die für die serielle Kommunikation benötigten Pins.&amp;lt;br&amp;gt;&lt;br /&gt;
VCC liefert anscheinend die ungeregelte Akkuspannung, Boot-Pins nicht verifiziert.&lt;br /&gt;
&lt;br /&gt;
== JTAG ==&lt;br /&gt;
[[Bild:jtag.jpg Belegung der JTAG-Pins (Rückseite der Platine)]]&lt;br /&gt;
&lt;br /&gt;
== Hardware Modifikationen ==&lt;br /&gt;
&lt;br /&gt;
Nachdem wir ja bereits wissen wie das [[#Zerlegen_des_Telefons]] geht, steht der Nachrüstung von Bauelementen und Schnittstellen generell nichts mehr im Wege.&lt;br /&gt;
&lt;br /&gt;
=== Buchse für UART ins VP5500 einbauen ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:10_Pins.JPG|1. unbearbeitete Pinreihe&lt;br /&gt;
Datei:11_Pins_bearbeitet.JPG|2. präperierte Pinreihe&lt;br /&gt;
Datei:09_Pads.JPG|3. präperierte Pads&lt;br /&gt;
Datei:12_Pins_ausrichten.JPG|4. Pinreiheausrichten&lt;br /&gt;
Datei:13_Pins_angelötet_1.JPG|5. angelötete Pinreihe&lt;br /&gt;
Datei:14_Pins_angelötet_2.JPG|6. angelötete Pinreihen&lt;br /&gt;
Datei:08_Mittelteil.JPG|7. Mittelteil mit ausgefeiltem Loch&lt;br /&gt;
Datei:15_Mittelteil_zusammengebaut.JPG|8. wieder zusammengesteckt&lt;br /&gt;
Datei:16_in_Aktion.JPG|9.verbundene serielle Schnittstelle&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst muss das Telefon zerlegt werden ([[#Zerlegen des Telefons]])&lt;br /&gt;
Um das Gehäuse nicht zu beeinträchtigen, habe ich mich dazu entschieden, alles so zu lassen wie es ist und nur kleine Buchsen einzubauen. &lt;br /&gt;
&lt;br /&gt;
# Hierfür habe ich einreihige gedrehte IC-Sockel genutzt &lt;br /&gt;
# deren Beine abgezwickt, und etwas Lötzinn aufgetragen (mit der langen Reihe kann man die kurzen, schmalen Teile super handhaben)&lt;br /&gt;
# ebendso auf die Pads ein wenig eingezinnt&lt;br /&gt;
# ausrichten und festlöten&lt;br /&gt;
# eine Reihe&lt;br /&gt;
# die zweite Reihe&lt;br /&gt;
# bei der Gehäuseöffnung über den Pins habe ich mit einer feinen Schlüsselfeile den Rand wenig aufgeweitet. An der Gummimatte hab ich nix geändert.&lt;br /&gt;
# fertig&lt;br /&gt;
# und im Einsatz&lt;br /&gt;
&lt;br /&gt;
=== Anschluss für UART des VP6500 zugänglich machen ===&lt;br /&gt;
Vorteil beim VP6500: es muss dazu nicht zerlegt werden, da sich die Kupferpads unter den Akkus im Akkufach verstecken. Dies ermöglicht eine lötfreie Variante des seriellen Anschlusses. Die Pinbelegung ist unter [[#VP6500_2|UART]] beschrieben.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:01_Kuli-Molex.jpg|1. Benötigte Teile: Stück Plastik + Molex Stecker&lt;br /&gt;
Datei:02_gefeiltes_Plastik_18_mm.jpg|2. Länge der Aussparung im Batteriefach: 18 mm&lt;br /&gt;
Datei:03_gefeiltes_Plastik_4_mm.jpg|3. Breite der Aussparung im Batteriefach: 4 mm&lt;br /&gt;
Datei:04_gefeiltes_Plastik_passt.jpg|4. Solange feilen bis es passt&lt;br /&gt;
Datei:05_gefeiltes_Plastik_Kerben.jpg|5. Padabstand markiert&lt;br /&gt;
Datei:06_gekerbtes_Plastik_Molex.jpg|6. So bekommt man die Federn aus den Steckern&lt;br /&gt;
Datei:07_Federelement_roh.jpg|7. Frisch aus dem Stecker&lt;br /&gt;
Datei:08_Federelement_offen.jpg|8. Aufgebogen&lt;br /&gt;
Datei:10_Federelement_unter_Plastik.jpg|9. In Plastikführung&lt;br /&gt;
Datei:09_Federelement_umgebogen.jpg|10. Umgebogen&lt;br /&gt;
Datei:11_halbfertig_passt.jpg|11. Kerbung angepasst?&lt;br /&gt;
Datei:12_ganz_fertig1.jpg|12. Mit Heißkleber sichern&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
*1. Da wir 4 Pole anschließen wollen, benötigen wir 4 federnde Teile aus &amp;quot;Molex&amp;quot;-Steckern, wie man sie aus CPU-Lüftern kennt. (Entweder hat man einen 4-poligen für die modernen PWM geregeltn zur Hand den man ausschlachten kann, oder man nimmt zwei dreipolige alte auseinander.)&lt;br /&gt;
*2./3. Ferner braucht man ein Stück Plastik mit den Maßen 4 mm mal 18 mm, welches als Träger für die Federkontakte dienen soll. Die Höhe ist nicht so entscheidend. Man kann z.B. den Clip eines Kugelschreibes passend zuschneiden und feilen.&lt;br /&gt;
*4. Plastikträger so weit zufeilen, dass er in die Aussparung passt (Tip: Bindfaden darum knoten um ihn wieder entfernen zu können)&lt;br /&gt;
*5. Abstände zwischen den Kontakten die kontaktiert werden müssen (TIN, GND, RX, TX : siehe [[#UART|UART]]) markieren und in die Unterseite des Trägers Führungskerben für die Federn sägen. Ebenso braucht man kleine Aussparungen um die Metallzungen von der Platine in das Batteriefach zu führen. &lt;br /&gt;
*6./7. Aus den Molex-Steckern bekommt man die Federn sehr einfach raus, indem man mit einem kleinen flachen Schraubenzieher vorsichtig in die Aussparungen sticht und hinten am Kabel zieht.&lt;br /&gt;
*8. Die einzelnen Metallzungen nun noch auf 90° aufbiegen.&lt;br /&gt;
*9. In die Führungskerbe einschieben.&lt;br /&gt;
*10. Metallzunge umbiegen. (Zange)&lt;br /&gt;
*11. Sind alle Kerbungen und Aussparungen richtig abgemessen und gut zugefeilt, dann passt alles in die Lücke im Batteriefach, ohne dass sich die verschiedenen Metallteile berühren.&lt;br /&gt;
*12. Mit etwas Schrumpfschlauch und Heißkleiber kann man dem Verrutschen der Metallzungen vorbeugen und die Kurzschlußwahrscheinlichkeit senken. Ferner dient der Heißkleber als Kraftüberträger, damit die Batterien die leicht federnden Metallzungen fest auf die Kontakte auf der Platine drücken können.&lt;br /&gt;
*13. Batterien einsetzen. Ohne diese wird das ganze irgendwann doch wieder rausfallen und die Verbindung von Anfang an unzuverlässig sein.&lt;br /&gt;
&lt;br /&gt;
Problembehandlung:&lt;br /&gt;
* Kein Kontakt: (Man kann z.B. die Masse auf Durchgang prüfen.)&lt;br /&gt;
** Träger nicht tief genug in die Lücke gedrückt: Mit schmalem Schraubenzieher nachdrücken. Meistens auf der Seite notwendig wo die Metallzungen nach oben kommen.&lt;br /&gt;
** Träger wird nach aussen gedrückt (Metallzungen federn ja): Mehr Heißkleber um mehr Druck durch die Batterien zu bekommen.&lt;br /&gt;
** Träger tief drin, aber trotzdem keine oder unzuverlässige Verbindung: Die Metallzungen auf der Unterseite haben verschiedene &amp;quot;Dicken&amp;quot;, oder die Kerben sind unterschiedlich tief. Ein Tropfen Lötzinn auf die zu niedrigen Metallzungen erledigt dies. (Anmerkung: Der Autor musste überall ein wenig Lötzinn auftragen um die notwendige Dicke und sichere Verbindung zu erreichen.)&lt;br /&gt;
&lt;br /&gt;
= Nutzung für Voice over IP (VoIP, SIP) =&lt;br /&gt;
&lt;br /&gt;
== weiterführende Links ==&lt;br /&gt;
&lt;br /&gt;
*http://de.wikipedia.org/wiki/IP-Telefonie&lt;br /&gt;
*http://de.wikipedia.org/wiki/Session_Initiation_Protocol&lt;br /&gt;
*http://de.wikipedia.org/wiki/H.323&lt;br /&gt;
*http://de.wikipedia.org/wiki/Softphone&lt;br /&gt;
&lt;br /&gt;
Benutzer ist 103&lt;br /&gt;
&lt;br /&gt;
Mit [http://ekiga.org Ekiga] konnte so per 103@xxx.xxx.xxx.xxx bei ersten Tests eine Sprachverbindung zum Telefon aufgebaut werden.&lt;br /&gt;
&lt;br /&gt;
== SIP Einstellungen ==&lt;br /&gt;
&lt;br /&gt;
Die SIP Einstellungen können alternativ auch direkt in der Datei&lt;br /&gt;
 /user_data/data/hpr0userparam.cfg&lt;br /&gt;
vorgenommen werden.&lt;br /&gt;
&lt;br /&gt;
=== Einstellung für 1und1 ===&lt;br /&gt;
&lt;br /&gt;
* SIP1:&lt;br /&gt;
** Display Name: ...&lt;br /&gt;
** Username: 49#VORWAHLOHNE0#NUMMER#&lt;br /&gt;
** Telephone Number: 0#VORWAHLOHNE0#NUMMER#&lt;br /&gt;
* Auth:&lt;br /&gt;
** Auth Username: 49#VORWAHLOHNE0#NUMMER#&lt;br /&gt;
** Password: *********&lt;br /&gt;
* Server:&lt;br /&gt;
** sip.1und1.de:5060&lt;br /&gt;
* Proxy:&lt;br /&gt;
** sip.1und1.de:5060&lt;br /&gt;
* RTP:&lt;br /&gt;
** 30000 und 30019&lt;br /&gt;
* STUN:&lt;br /&gt;
** stun.1und1.de&lt;br /&gt;
* STUN Server Port:&lt;br /&gt;
** 3478&lt;br /&gt;
* SIP2:&lt;br /&gt;
** UDP: 5060&lt;br /&gt;
** TCP: 5060&lt;br /&gt;
&lt;br /&gt;
=== Einstellung für Vodafone NGN (Arcor NGN) ===&lt;br /&gt;
&lt;br /&gt;
* SIP1:&lt;br /&gt;
** Display Name: ...&lt;br /&gt;
** Username: VORWAHLUNDRUFNUMMER&lt;br /&gt;
** Telephone Number: (leer lassen)&lt;br /&gt;
* Auth:&lt;br /&gt;
** Auth Username: VORWAHLUNDRUFNUMMER&lt;br /&gt;
** Password: *********&lt;br /&gt;
* Server:&lt;br /&gt;
** arcor.de:5060&lt;br /&gt;
* Proxy:&lt;br /&gt;
** VORWAHL.sip.arcor.de:5060&lt;br /&gt;
* RTP:&lt;br /&gt;
** 10000 und 10001&lt;br /&gt;
* STUN:&lt;br /&gt;
** (X) use rport&lt;br /&gt;
* SIP2:&lt;br /&gt;
** UDP: 5060&lt;br /&gt;
** TCP: 5060&lt;br /&gt;
(getestet von Micha mit EasyBox 802; an EasyBox n-WLAN ausschalten)&lt;br /&gt;
&lt;br /&gt;
=== Einstellung für Sipgate ===&lt;br /&gt;
&lt;br /&gt;
*SIP1&lt;br /&gt;
**Display Name: Sipgate Username&lt;br /&gt;
**User Name: your SIPgate-ID&lt;br /&gt;
**Telephone Number:  Sipgate-Telefonnummer&lt;br /&gt;
*Auth&lt;br /&gt;
**Authentification UserName: your SIPgate-ID&lt;br /&gt;
**Password: Sipgate Passwort&lt;br /&gt;
*Server&lt;br /&gt;
**SIP register address:port: sipgate.de:5060&lt;br /&gt;
*Proxy&lt;br /&gt;
**SIP proxy1 address:port: sipgate.de:5060&lt;br /&gt;
*RTP Audio Channel&lt;br /&gt;
**RTP: 22800&lt;br /&gt;
**RTCP: 22801&lt;br /&gt;
*RTP Video Channel&lt;br /&gt;
**RTP: 22804&lt;br /&gt;
**RTCP: 22805&lt;br /&gt;
*STUN: [X] use rport&lt;br /&gt;
*SIP2&lt;br /&gt;
**SIP Port Listen&lt;br /&gt;
**for UDP: 5062&lt;br /&gt;
**for TCP: 5062&lt;br /&gt;
**for TCP TLS: 5053&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SIP Outbound muss leer sein.&lt;br /&gt;
&lt;br /&gt;
=== Alternative Einstellung für Sipgate ===&lt;br /&gt;
&lt;br /&gt;
Hinter meiner Freetzbox hat die obige Einstellung nix gebracht - incoming calls wurden nicht signalisiert. Folgendes tut dagegen:&lt;br /&gt;
&lt;br /&gt;
*SIP1&lt;br /&gt;
**Display Name: Sipgate Username&lt;br /&gt;
**User Name: your SIPgate-ID&lt;br /&gt;
**Telephone Number:  Sipgate-Telefonnummer&lt;br /&gt;
*Auth&lt;br /&gt;
**Authentification UserName: your SIPgate-ID&lt;br /&gt;
**Password: Sipgate Passwort&lt;br /&gt;
*Server&lt;br /&gt;
**SIP register address:port: sipgate.de:5060&lt;br /&gt;
*Proxy&lt;br /&gt;
** leer&lt;br /&gt;
*SIP2&lt;br /&gt;
**Symmetric Mode [X]&lt;br /&gt;
**SIP Port Listen&lt;br /&gt;
**for UDP: 5062&lt;br /&gt;
**for TCP: 5062&lt;br /&gt;
**for TCP TLS: 5053&lt;br /&gt;
*STUN: [x] use rport&lt;br /&gt;
&lt;br /&gt;
SIP Outbound muss leer sein.&lt;br /&gt;
&lt;br /&gt;
Ein Videotelefonat von Sipgate zu Sipgate zwischen zwei VP6500 wurde erfolgreich getestet. Gegebenenfalls muss die eigene Videoübertragung noch durch Drücken der Taste &#039;&#039;&#039;Video&#039;&#039;&#039; gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Bei mir hat es nur per UDP funktioniert, aber mit starken Delays (&amp;gt;1s)&lt;br /&gt;
&lt;br /&gt;
=== Einstellung für Ekiga.net ===&lt;br /&gt;
&lt;br /&gt;
*SIP1&lt;br /&gt;
**Display Name: Irgendwas&lt;br /&gt;
**User Name: username&lt;br /&gt;
**Telephone Number: leer&lt;br /&gt;
*Auth&lt;br /&gt;
**Authentication User Name: username&lt;br /&gt;
**Password: password&lt;br /&gt;
*Server&lt;br /&gt;
**SIP register: ekiga.net:5060&lt;br /&gt;
**Protocol: ( ) TCP (*) UDP&lt;br /&gt;
**Expire Timer: 3600&lt;br /&gt;
**Keep Alive: 0&lt;br /&gt;
*Proxy&lt;br /&gt;
**alle leer&lt;br /&gt;
*STUN&lt;br /&gt;
**( ) use rport&lt;br /&gt;
**STUN Server IP address: stun.ekiga.net&lt;br /&gt;
**STUN Server port: 3478&lt;br /&gt;
*SIP2&lt;br /&gt;
**(*) Symmetric Mode&lt;br /&gt;
**UDP: 5060&lt;br /&gt;
**TCP: 5060&lt;br /&gt;
**TCP TLS: 5061&lt;br /&gt;
*OBproxy&lt;br /&gt;
**alle leer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nach der (kostenlosen) Registrierung bei ekiga.net und der Anmeldung des Telefons kann man unter der 500 einen Audio und Video(!) Test machen.&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere features: https://www.ekiga.net/index.php?page=services&amp;lt;br&amp;gt;&lt;br /&gt;
Ekiga teilt keine Festnetz Rufnummern zu, daher ist ein Anruf von/zu Festnetz Telefonen nicht möglich.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;p&amp;gt;Bei Ekiga.net angemeldete Geräte können aber problemlos untereinander telefonieren, sogar mit Video. Da man vom Mainscreen des VP5500/6500 aus direkt nur numerische Kontakte (herkömmliche Telefonnumern) wählen kann, Ekiga.net Telefonnummern aber aus [Benutzername]@ekiga.net bestehen, legt man über das Menü des VP5500/6500 einfach &amp;lt;b&amp;gt;einen neuen Kontakt&amp;lt;/b&amp;gt; (Telefonbuch) an. Als Video-Rufnummer trägt man einfach [Benutzername]@ekiga.net ein, wobei [Benutzername] der Name des Ekiga-Accounts ist, den man erreichen will. Zwischen der Eingabe von Buchstaben, Zahlen und Sonderzeichen kann man dabei mit der &amp;lt;b&amp;gt;[#]&amp;lt;/b&amp;gt;-Taste des VP5500/6500 umschalten.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Sollte bei einem Telefonat über Ekiga Video einmal nicht funktionieren, hilft eventuell die manuelle Aktivierung der Videofunktion mittels der &amp;lt;b&amp;gt;Video-Taste&amp;lt;/b&amp;gt; auf der Tastatur des VP6500&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Einstellung für Fritzbox 7170/7270 und andere mit SIP-Registrar ===&lt;br /&gt;
Die Anmeldung eines Telefons auf der Fritzbox starten (System/Ansicht/&amp;quot;Expertenansicht aktivieren&amp;quot;, dann Telefonie/Telefoniegeräte/&amp;quot;Neues Gerät einrichten&amp;quot;, &amp;quot;Telefon&amp;quot;, &amp;quot;Bitte auswählen&amp;quot;/&amp;quot;LAN/WLAN (IP-Telefon)&amp;quot;) und sich eine Nummer geben lassen,&amp;lt;br&amp;gt; dann in Registration auf dem VPx500 wechseln und die Einstellungen wie unten vornehmen.&amp;lt;br&amp;gt; Anschließend will das Telefon diese Einstellungen aktivieren, vorher noch auf der FB die Anmeldung starten.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Beispiel will die FB die Nummer 621 vergeben:&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reiter SIP1&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Display Name: egal &amp;lt;leer lassen&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
User Name: 621&amp;lt;br&amp;gt;&lt;br /&gt;
Telephone Number: 621&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reiter Auth&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Authentication UserName: 621&amp;lt;br&amp;gt;&lt;br /&gt;
Password: [hier das gleiche, wie auf der FB eingeben]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reiter Server&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
SIP register address:port&amp;lt;br&amp;gt;&lt;br /&gt;
192.168.2.1:5060 (IP Bitte auf Euer Netz anpassen) oder alternativ: fritz.box:5060&amp;lt;br&amp;gt;&lt;br /&gt;
Protocol: UDP&amp;lt;br&amp;gt;&lt;br /&gt;
ExpireTime: 3600&amp;lt;br&amp;gt;&lt;br /&gt;
Keep Alive: 300&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Reiter SIP2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[ ] Symmetric Mode&amp;lt;br&amp;gt;&lt;br /&gt;
SIP Port Listen&amp;lt;br&amp;gt;&lt;br /&gt;
for UDP: 5060&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Anmerkungen dazu:&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Protokoll: UDP&amp;lt;br&amp;gt;&lt;br /&gt;
Bei TCP hat das VP6500 nach Minuten oder Stunden immer wieder die Verbindung zur FB verloren.&amp;lt;br&amp;gt; &lt;br /&gt;
Keep Alive: 300&amp;lt;br&amp;gt;&lt;br /&gt;
Die Keep Alive Time habe ich eingestellt, weil ich die TCP Probleme umgehen &amp;lt;br&amp;gt;wollte. Ich denke nicht, dass es zu Problemen bzgl. Akku kommt. Da es so &amp;lt;br&amp;gt;aber perfekt funktioniert, habe ich es gelassen. Das UDP Protokoll kommt zudem mit weniger Netzwerk-Traffic aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Anmeldung:&amp;lt;br&amp;gt;&lt;br /&gt;
Die Anmeldung wurde von der Fritz!Box nicht immer erfolgreich bestätigt. Einfach Weiter klicken und die restlichen Einstellungen vornehmen.&amp;lt;br&amp;gt; Spätestens nach einem Reboot des VPx500 funktioniert alles einwandfrei.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls eure Fritz!Box keine Möglichkeit bietet, ein IP-Telefon anzumelden, empfehle ich euch mal in das http://wiki.ip-phone-forum.de/skript:speedport2fritz einzulesen.&amp;lt;br&amp;gt;&lt;br /&gt;
Bzw. mal im IP-Phone-Forum nach SIP-Registrar suchen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der SIP Listen Port 5060 hat mich viel Zeit gekostet - stand noch von sipgate direkt auf 5062 und das VP5500 hat sich dann zwar an der fritzbox registriert aber keine eingehenden Anrufe empfangen...&lt;br /&gt;
&lt;br /&gt;
=== Fritz!Box Hinweis ===&lt;br /&gt;
Hinter meiner Fritz!Box konnte ich auf dem Port 5060 keine Incoming Calls bekommen, da die Box auf diesen Port für ihre eigenes System hört.&lt;br /&gt;
Geholfen hat mit dann ein Wechsel auf Port 5061 im Reiter SIP2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Eigener VoIP Server mit Asterisk ==&lt;br /&gt;
&lt;br /&gt;
*http://www.das-asterisk-buch.de&lt;br /&gt;
&lt;br /&gt;
===Asterisk auf einer Fritz!Box===&lt;br /&gt;
&lt;br /&gt;
*http://www.asterisk-kompakt.de/artikel/45-asterisk-auf-fritzbox-phone.html&lt;br /&gt;
&lt;br /&gt;
== Videogespräche zu anderen Clients / Softphones ==&lt;br /&gt;
=== Ekiga Softphone ===&lt;br /&gt;
&lt;br /&gt;
Damit Videos klappen, müssen Ekiga und VP6500 über mindestens einen übereinstimmenden Videocodec verfügen, klar. Im Falle des VP6500 ist es wohl so, daß ausschließlich H.263 in verschiedenen Ausprägungen zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Ekiga kommt jedoch zunächst unter Ubuntu 9.10 nur mit H.261 und Theora Codec. Wir müssen daher den H.263-Codec in Ekiga zusätzlich einhängen.&lt;br /&gt;
&lt;br /&gt;
Leider ist der H.263-Codec nicht ganz frei zugänglich, sodaß wir eine Fremdquelle benötigen, um den Codec mit dem Paketmanager installieren zu können. Daher muß Bojos Ekiga-Plugin-PPA wie in&lt;br /&gt;
&lt;br /&gt;
https://launchpad.net/~bojo42/+archive/ekiga&lt;br /&gt;
&lt;br /&gt;
beschrieben als Paketquelle hinzugefügt werden. Den zugehörigen Schlüssel nicht vergessen!&lt;br /&gt;
Wenn die neue Quelle bekannt gemacht ist, können im Paketmanager nun die&lt;br /&gt;
&lt;br /&gt;
; Pakete&lt;br /&gt;
: libopal3.6.1-plugins-h263-1998&lt;br /&gt;
: libopal3.6.1-plugins-ilbc&lt;br /&gt;
: libavcodec-dev&lt;br /&gt;
&lt;br /&gt;
installiert werden. Darauf achten, daß alle Abhängigkeiten sauber erfüllt sind.&lt;br /&gt;
Das H.263-Plugin läßt sich nur installieren, wenn libstdc++6 &amp;gt;= 4.4.0 vorhanden ist, was meines Wissens erst ab Ubuntu 9.10 der Fall ist.&lt;br /&gt;
Nach der Installation dieser Komponenten kann Ekiga neu gestartet werden. Es sollte nun unter Bearbeiten-&amp;gt;Einstellungen-&amp;gt;Video-&amp;gt;Codecs zusätzlich den H.263-Codec anbieten. Durch Verschieben nach oben kann man diesen beim Handshake priorisieren.&lt;br /&gt;
Nach Integration des H.263-Codecs in Ekiga konnte ich mit zwei Sipgate-Accounts störungsfrei, sogar über den gleichen DSL-Anschluß, videofonieren.&lt;br /&gt;
&lt;br /&gt;
== DEMO MODE ==&lt;br /&gt;
&lt;br /&gt;
Um den DEMO MODE zwischen einem VP55 und VP65 herzustellen muss man die Dateien&lt;br /&gt;
mit den Einstellungen vom VP55 auf das VP65 übertragen. Diese liegen in&lt;br /&gt;
/usr/local/data/demo/ und es sind vier Dateien. Danach ist die SSID und der KEY&lt;br /&gt;
bei beiden gleich eingerichtet und die beiden Geräte verbinden sich miteinander.&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
&lt;br /&gt;
== Vorsicht Fallen! ==&lt;br /&gt;
Es ist nicht schwer, sich den Zugang zum Telefon abzuschneiden, wenn man nicht aufpasst.&lt;br /&gt;
&lt;br /&gt;
== Betrieb mit aktivierter serieller Schnittstelle ==&lt;br /&gt;
&lt;br /&gt;
Das 5500 und das 6500 scheint nicht komplett zu starten wenn man TIN auf low hat&lt;br /&gt;
und die serielle Schnittstelle benutzt. Man kann das Gerät dann nicht normal bedienen. Dies lässt sich ändern indem man in der Datei&lt;br /&gt;
&lt;br /&gt;
 /usr/local/startup/daemon.sh&lt;br /&gt;
&lt;br /&gt;
ziemlich am Anfang das TINDETECT=&amp;quot;TRUE&amp;quot; ändert auf TINDETECT=&amp;quot;FALSE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Danach startet er auch mit aktiver serieller Verbindung komplett durch&lt;br /&gt;
und das Gerät ist ganz normal bedienbar.&lt;br /&gt;
&lt;br /&gt;
== Grundlagen ==&lt;br /&gt;
Bestimmte Aktionen werden immer wieder benötigt.&lt;br /&gt;
Diese sollen hier kurz beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Es werden dennoch grundlegende Kenntnisse von Kommandozeilen vorausgesetzt.&lt;br /&gt;
&lt;br /&gt;
==== Dateien bearbeiten mit vi ====&lt;br /&gt;
Auf dem Telefon ist der minimalistische Editor vi installiert mit dem Dateien über Telnet bearbeitet werden können.&lt;br /&gt;
Für eine genaue Bedienung bitte Google benutzen.&lt;br /&gt;
Die wichtigsten Bedienelemente werden hier kurz erläutert.&lt;br /&gt;
&lt;br /&gt;
Datei Öffnen mit &#039;vi Dateipfad&#039;&lt;br /&gt;
vi kennt zwei Modi: Kommando- und Einfüge-Modus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;i&#039;&#039;&#039; - wechselt in den Einfüge-Modus, in dem geschrieben werden kann&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;a&#039;&#039;&#039; - anhängen (hinter dem aktuellem Zeichen in den Einfüge-Modus)&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;[Esc]&#039;&#039;&#039; wechselt zurück in den Kommandomodus. &lt;br /&gt;
In diesem kann mittels Pfeil- und Bildlauftasten navigiert werden.&lt;br /&gt;
:x - löscht das Zeichen an Cursor position&lt;br /&gt;
:d&#039;&#039;n&#039;&#039;d - löscht &#039;&#039;n&#039;&#039; Zeile(n) in den Zeilenbuffer (ohne &#039;&#039;n&#039;&#039; = eine Zeile)&lt;br /&gt;
:y&#039;&#039;n&#039;&#039;y - kopiert &#039;&#039;n&#039;&#039; Zeile(n) in den Zeilenbuffer (ohne &#039;&#039;n&#039;&#039; = eine Zeile)&lt;br /&gt;
:p - fügt Inhalt des Zeilenbuffer &#039;&#039;&#039;unter&#039;&#039;&#039; der aktuellen Zeile ein&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;q! - schließt ohne zu speichern&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;w - speichert&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;:&amp;lt;/nowiki&amp;gt;wq - speichert und beenden&lt;br /&gt;
&lt;br /&gt;
==== Dateien auf das Telefon laden ====&lt;br /&gt;
Um Daten von einem http-Server zu laden, benutzt man &lt;br /&gt;
 wget url&lt;br /&gt;
Die Datei wird dann in das aktuelle Verzeichnis geladen, weswegen vorher in das Zielverzeichnis wechseln.&lt;br /&gt;
&lt;br /&gt;
Um Daten von einem ftp-Server zu laden, benutzt man ftp.&lt;br /&gt;
Auch hier muss vorher in das zielverzeichnis gewechselt werden.&lt;br /&gt;
 ftp hostname&lt;br /&gt;
dann gegebenenfalls die Zugangsdaten eingeben und mittels &#039;cd&#039; und &#039;ls&#039; in das Entsprechende Verzeichnis auf dem FTP-Server wechseln&lt;br /&gt;
und anschließend mittels &lt;br /&gt;
 get dateiname&lt;br /&gt;
die Datei herunterladen.&lt;br /&gt;
 &lt;br /&gt;
==== Dateien vom Telefon herunterladen ====&lt;br /&gt;
Auch hier bietet sich ein FTP an.&lt;br /&gt;
Mittels &#039;ftp hostname&#039; verbinden, Benutzerdaten eingeben, in das entsprechende FTP-Server-Verzeischnis wechseln und mittels&lt;br /&gt;
 put localeDatei&lt;br /&gt;
eine Lokale Datei hochladen.&lt;br /&gt;
&lt;br /&gt;
==== Alternative: Dropbear ====&lt;br /&gt;
&lt;br /&gt;
Wurde der dropbear-ssh server installiert [[#Dropbear (SSH-Server) installieren]] können mittels eines Programms mit SCP-Unterstützung (zB. [http://winscp.net/eng/docs/lang:de WinSCP] für Windows) sehr komfortabel Dateien ausgetauscht werden.&lt;br /&gt;
&lt;br /&gt;
Mit WinSCP können auch Dateien direkt bearbeitet werden.&lt;br /&gt;
Der Client lädt die Datei herunter, öffnet einen Editor und lädt die Datei wieder herauf, wenn diese geändert wurde.&lt;br /&gt;
&lt;br /&gt;
== Grundkonfiguration, die das Leben erleichtert ==&lt;br /&gt;
=== .bashrc ===&lt;br /&gt;
Die installierte Shell ist die bash. Einstellungen bezieht sie aus der (versteckten) Datei &amp;quot;.bashrc&amp;quot;. Hier kann man sinnvolle Ergänzungen vornehmen, damit sich das Telefon ein bißchen mehr wie ein gewohntes Linux-System verhält:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
alias vim=vi&lt;br /&gt;
PS1=&amp;quot;[\u@\h] \w $ &amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backup ==&lt;br /&gt;
=== Backup des Flash ===&lt;br /&gt;
If you want to make a backup of your root partition, you can do as&lt;br /&gt;
follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;#!/bin/sh&#039; &amp;gt; /tmp/backup.sh&lt;br /&gt;
echo &#039;cat /dev/mtdb2 2&amp;gt;/dev/null&#039; &amp;gt;&amp;gt; /tmp/backup.sh&lt;br /&gt;
chmod 700 /tmp/backup.sh&lt;br /&gt;
micro_inetd 31337 /tmp/backup.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This&#039;ll make your device listen for incoming connections on port 31337.&lt;br /&gt;
On your host system you may then simply run &lt;br /&gt;
 nc ip.of.your.phone 31337 &amp;gt; fon_rootfs&lt;br /&gt;
et voilà, you got your rootfs packed into a file.&lt;br /&gt;
&lt;br /&gt;
Note that the backed up file is not ext2, but a jffs2 formatted&lt;br /&gt;
filesystem. These can&#039;t be handled by a simple &amp;quot;mount -o loop&amp;quot; as you&#039;d&lt;br /&gt;
have thought... so here&#039;s how you mount it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
modprobe jffs2&lt;br /&gt;
modprobe mtdram total_size=65536 erase_size=128&lt;br /&gt;
modprobe mtdblock&lt;br /&gt;
mkdir /tmp/phone-root&lt;br /&gt;
mknod /tmp/phone-mtdb2 b 31 0&lt;br /&gt;
dd if=/your/backup/file of=/tmp/phone-mtdb2&lt;br /&gt;
mount -t jffs2 /tmp/phone-mtdb2 /tmp/phone-root&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[#Dateisystem herunterladen]] describes another way to dump the filesystem for closer examination.&lt;br /&gt;
&lt;br /&gt;
=== Komplettes Backup ===&lt;br /&gt;
Die Datei http://www.mikrocontroller.net/attachment/73323/S91backup_pipe auf das Gerät laden und als ausführbar markieren.&lt;br /&gt;
&lt;br /&gt;
 cd /etc/rc.d/init.d&lt;br /&gt;
 wget http://www.mikrocontroller.net/attachment/73323/S91backup_pipe&lt;br /&gt;
 chmod +x /etc/rc.d/init.d/S91backup_pipe&lt;br /&gt;
&lt;br /&gt;
Damit wird eine Art Backup-Server mit dem Boot gestartet.&lt;br /&gt;
wenn man dies nicht möchte kann man das Skript natürlich auch an jeden beliebigen anderen Ort legen und per Hand starten.&lt;br /&gt;
&lt;br /&gt;
Nun kann man von einem Rechner aus mittels nc (netcat) die Bereiche sichern:&lt;br /&gt;
&lt;br /&gt;
 nc 192.168.1.3 31337 &amp;gt; fon_rootfs&lt;br /&gt;
 nc 192.168.1.3 31338 &amp;gt; fon_udata&lt;br /&gt;
 nc 192.168.1.3 31339 &amp;gt; fon_usettings&lt;br /&gt;
 nc 192.168.1.3 31340 &amp;gt; fon_bootld&lt;br /&gt;
 nc 192.168.1.3 31341 &amp;gt; fon_kernel&lt;br /&gt;
&lt;br /&gt;
Die 192.168.1.3 natürlich mit der IP des Gerätes austauschen, die fon_*&lt;br /&gt;
Dateinamen könnt ihr natürlich auch frei vergeben.&lt;br /&gt;
&lt;br /&gt;
fon_udata ist die /user_data Partition, fon_usertings dementsprechend&lt;br /&gt;
die /user_settings Partition.&lt;br /&gt;
&lt;br /&gt;
Der bootld Bereich enthält auch die Parameter. Um das später (falls&lt;br /&gt;
überhaupt nötig) mittels blob zu restaurieren müsste die Datei noch in&lt;br /&gt;
zwei Teile aufgeteilt werden. Der erste enthält dann den reinen&lt;br /&gt;
Bootloader-Bereich, der zweite die Parameter. Wer&#039;s wirklich braucht für&lt;br /&gt;
den kann ich noch ne Anleitung zum Aufteilen geben. Wirklich Sinnvoll&lt;br /&gt;
ist das aber nicht, hat man den Bootloader erstmal mit was anderem&lt;br /&gt;
überschrieben kann man ihn ja auch nicht mehr zum Wiederherstellen&lt;br /&gt;
benutzen....&lt;br /&gt;
&lt;br /&gt;
=== Zurückspielen der Backups ===&lt;br /&gt;
&lt;br /&gt;
1) Man braucht ein (die) Backup-Image(s).&lt;br /&gt;
&lt;br /&gt;
2) Serielle Verbindung zum Telefon&lt;br /&gt;
&lt;br /&gt;
3) Akku abstecken, wieder anstecken.&lt;br /&gt;
&lt;br /&gt;
4) Telefon einschalten und im Terminalprogram auf die Tasten kloppen, so&lt;br /&gt;
das man im Bootloader landet. Dabei muss man recht schnell sein. Es&lt;br /&gt;
sollte dann ein Prompt kommen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
blob&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
5) Nun gibt man ein &lt;br /&gt;
   xdownload param&lt;br /&gt;
Wobei &#039;param&#039; der Teil ist, den man wiederherstellen will:&lt;br /&gt;
* blob - Bootloader (fon_bootld)&lt;br /&gt;
* param - Parameter Bereich (Bootloader oder Kernel?) (fon_bootld)&lt;br /&gt;
* kernel - Der Kernel (fon_kernel)&lt;br /&gt;
* ramdisk - Das Root-Filesystem / (fon_rootfs)&lt;br /&gt;
* ramdisk2 - Das /user_data Filesystem (fon_udata)&lt;br /&gt;
* ramdisk3 - Das /user_settings Filesystem (fon_usettings)&lt;br /&gt;
&lt;br /&gt;
Beim Backup ist blob + param in einer Datei, müsste man also ggf.&lt;br /&gt;
erstmal aufsplitten.&lt;br /&gt;
&lt;br /&gt;
6) Er wartet dann auf den Upload. Nun startet man im Terminalprogram den&lt;br /&gt;
Upload des Backup-Images, dazu verwendet man das X-Modem Protokoll.&lt;br /&gt;
&lt;br /&gt;
7) Kaffee trinken, auf&#039;s Klo gehen, mit Frau/Freundin/Mutter ein Gespräch&lt;br /&gt;
anfangen.&lt;br /&gt;
&lt;br /&gt;
8) Irgendwann ist der Upload fertig. Dauert halt lange. Man landet&lt;br /&gt;
wieder am &amp;quot;blob&amp;gt;&amp;quot; prompt. Nun gibt man&lt;br /&gt;
 flash param&lt;br /&gt;
ein.&lt;br /&gt;
&lt;br /&gt;
9) Er schreibt nun das, was man hochgeladen hat, in das Flash.&lt;br /&gt;
&lt;br /&gt;
10) &amp;quot;boot&amp;quot; eingeben. Da Telefon bootet nun normal.&lt;br /&gt;
&lt;br /&gt;
Achtung: Wenn im Backup nicht die Änderung gemacht wurde damit das&lt;br /&gt;
Telefon auch bei angeschlossener serieller Schnittstelle startet, kommt&lt;br /&gt;
man nicht weiter als wie bis zur Sanduhr. Dann einfach die serielle&lt;br /&gt;
abstecken (Also den TIN pin wieder freigeben) und das Telefon neustarten&lt;br /&gt;
(Akku kurz ab- und wieder anstöpseln)&lt;br /&gt;
&lt;br /&gt;
=== Dateisystem herunterladen ===&lt;br /&gt;
Zum unkomplizierten Durchsuchen des Dateisystems kann es nützlich sein, dieses vom Gerät zu kopieren.&lt;br /&gt;
&lt;br /&gt;
Folgende Befehle erzeugen wie beim Backup des Flash einen kleinen Server, dessen Output auf anderer Seite mittels mittels nc abgeholt werden kann:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
echo &#039;#! /bin/sh&#039; &amp;gt; /tmp/backup.sh&lt;br /&gt;
echo &#039;cd /&#039; &amp;gt;&amp;gt; /tmp/backup.sh&lt;br /&gt;
chmod 700 /tmp/backup.sh&lt;br /&gt;
echo &#039;tar cf - bin boot dev etc home lib mnt opt root sbin tmp trace upgrade user_data user_settings usr var 2&amp;gt;/dev/null&#039; &amp;gt;&amp;gt; /tmp/backup.sh&lt;br /&gt;
micro_inetd 31340 /tmp/backup.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die lange Liste mit Unterverzeichnissen ist notwendig um /proc zu überspringen, was Probleme mit tar verursachen würde.&lt;br /&gt;
&lt;br /&gt;
Auf einem anderen Linux system (oder cygwin) kann mittels&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
  nc telefon-Ip 31340 &amp;gt; file.tar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
die Datei abgerufen werden.&lt;br /&gt;
&lt;br /&gt;
Der Vorgang dauert aber ein ganz paar Minuten.&lt;br /&gt;
&lt;br /&gt;
Heraus kommt ein Tar-Archiv, was alle Dateien des Gerätes enthält - inclusive der temporären Dateien der Ram-Disks.&lt;br /&gt;
&lt;br /&gt;
== Erkunden des Systems mit Bordmitteln ==&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;dmesg&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt; auf einem VP6500 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6&amp;gt;NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.&lt;br /&gt;
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com&lt;br /&gt;
VFS: Mounted root (jffs2 filesystem).&lt;br /&gt;
Freeing init memory: 68K&lt;br /&gt;
PCB version: ind3 v2&lt;br /&gt;
Driver SYSTCLK: SYSTCLK-1.12 (REFERENCED)&lt;br /&gt;
Driver GPIO-1.59 (REFERENCED)&lt;br /&gt;
****p_gpio_init_low_bat****&lt;br /&gt;
GPIO: p_gpio_it_init at 762&lt;br /&gt;
Driver FRAMEBUF-1.12 (REFERENCED)&lt;br /&gt;
Driver SPI-1.20 (REFERENCED) Debug level 3&lt;br /&gt;
&lt;br /&gt;
u32_spi1_MinLenghtForDMAInTX set to 300&lt;br /&gt;
&lt;br /&gt;
u32_spi1_MinLenghtForDMAInRX set to 300&lt;br /&gt;
Driver LCD-1.20 (REFERENCED)&lt;br /&gt;
Driver TVLINK-1.45 (REFERENCED)&lt;br /&gt;
Reset from Software Reset.&lt;br /&gt;
Motorola PostProcessor Linux driver ver 0.64 - Copyright (C) 2003 Motorola Inc&lt;br /&gt;
pp: hw ver = 2&lt;br /&gt;
prp_dbg=0&lt;br /&gt;
Motorola PreProcessor Linux driver ver 0.0 - Copyright (C) 2003 Motorola Inc&lt;br /&gt;
hmp4d: base_port=0x10026800 irq=50&lt;br /&gt;
hmp4d: module inserted&lt;br /&gt;
hmp4e: base_port=0x10026c00 irq=49&lt;br /&gt;
hmp4e: Compatble HW found with ID: 0x004c1882&lt;br /&gt;
hmp4e: module inserted. Major = 249&lt;br /&gt;
SPI2:: drv_Init :PID of driver: 134&lt;br /&gt;
SPI2:: drv_Init :ScanList not provided. Will use the default scan list.&lt;br /&gt;
SPI2:: drv_Init :ScanChannelList :1 6 11 14 2 7 12 3 8 13 4 9 5 10&lt;br /&gt;
SPI2:: drv_Init :setting PhyType to: Rf-to-Rf&lt;br /&gt;
SPI2:: drv_Init :Ref.Clock parameter not provided&lt;br /&gt;
SPI2:: drv_Init :Configure target for a reference clock of &#039;default=40&#039; Mhz.&lt;br /&gt;
SPI2:: drvRegEtherDev :Interface Name is: eth%d&lt;br /&gt;
SPI2:: drv_Init :HEOCSIWPOWON: Powering on...&lt;br /&gt;
SPI2:: drvPhase2Init :Protocol Firmware will be loaded by driver ...&lt;br /&gt;
SPI2:: drvPhase2Init :Initializing HHAL (PhgHhalInitialize)...&lt;br /&gt;
Divider : 8&lt;br /&gt;
&lt;br /&gt;
 OCR2 : e4015308 (12582912)&lt;br /&gt;
Reset : 3 / 27 (c497cc00 / e401531c)&lt;br /&gt;
&lt;br /&gt;
Reset : 3 / 27 (c497cc00 / e401531c)&lt;br /&gt;
GPIO: p_gpio_init_gpio_status at 1262&lt;br /&gt;
GPIO: POWER_FAIL signal NOT detected at GPIO driver init carry on !!!&lt;br /&gt;
GPIO: CHARGE_IN at init&lt;br /&gt;
GPIO: LOW_BAT_OUT at init&lt;br /&gt;
GPIO: No accessory plugged at init.  - Set Video on jack&lt;br /&gt;
GPIO: camera to front at init&lt;br /&gt;
**ChargeStatusPmb=========gpio_Read_ChargeStatus_Ready=1&lt;br /&gt;
SPI2:: PhgOsal_linux_init_thread :assigning thread name and deamonize() ..&lt;br /&gt;
SPI2:: drvPhase2Init :Success&lt;br /&gt;
SPI2:: drvPhase2Init : registering callbacks with HHAL..&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_COMPLETE; setting CARRIER_ON&lt;br /&gt;
SPI2:: drvPhase2Init :calling PhgHhalQueueMgmtReq()!&lt;br /&gt;
PhgHhalQueueMgmtReq:1172:HHAL got Init message&lt;br /&gt;
PhgHhalQueueMgmtReq:1217:HHAL done Init message&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001002, IFF_UP=0&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :device was already closed&lt;br /&gt;
SPI2:: drvMgmtCfmHndler :Using MAC Address: 00:08:c6:86:8b:99&lt;br /&gt;
SPI2:: drvPhase2Init :init etherdev; stopping queue, setting CARRIER_OFF&lt;br /&gt;
SPI2:: drv_Init :Philips WLAN Drv - loaded - in state: 1&lt;br /&gt;
SPI2:: drvInit :Philips WLAN Drv - loaded&lt;br /&gt;
SPI2:: drvOpen :opening net device&lt;br /&gt;
SPI2:: drvOpen :Device is not associated!&lt;br /&gt;
SPI2:: drvOpen :Carrier flag is already set to CARRIER_OFF&lt;br /&gt;
SPI2:: drvOpen :Disabling again netqueue&lt;br /&gt;
requested reg.domain code setting = 3&lt;br /&gt;
SPI2:: drvIoctl :set u8LinkAdaptation  : 1 Result=[0]&lt;br /&gt;
SPI2:: drvIoctl :changed HEOCSIWLNADPALLOWRATES: 8 allowed rate codes&lt;br /&gt;
SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
SPI2:: drvInitConnect :step2&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001003, IFF_UP=1&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :device was already opened; stopping queue&lt;br /&gt;
SPI2:: drvInitConnect :step3 : u8Status 255&lt;br /&gt;
SPI2:: drvInitConnect :step5&lt;br /&gt;
SPI2:: drvInitConnect :TIMEDOUT&lt;br /&gt;
SPI2:: drvInitConnect :step6&lt;br /&gt;
SPI2:: drvInitParamsAndPowerOnAndConnect :Connect failed!&lt;br /&gt;
Motorola CSI Linux driver ver 0.1&lt;br /&gt;
 - Copyright (C) 2004 Motorola Inc&lt;br /&gt;
&lt;br /&gt;
Driver SENSOR-1.29 (REFERENCED)&lt;br /&gt;
i2c-client version : 1.9&lt;br /&gt;
Initialize i2c-client-aic14 module&lt;br /&gt;
Module i2c-client-aic14 initialized&lt;br /&gt;
Insert module aic14 (AIC14-1.0)&lt;br /&gt;
Module AIC14 assumes CODEC MCLK already configured for 20480000Hz&lt;br /&gt;
Driver KPP-1.36 (REFERENCED)&lt;br /&gt;
Driver DOZE-1.27 (REFERENCED)&lt;br /&gt;
SPI2:: drvDoScan :Buero (bittorf)&lt;br /&gt;
SPI2:: drvProcessScanCfm :Scan Confirm: Success 1 APs&lt;br /&gt;
SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
SPI2:: drvInitConnect :step2&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_CONNECT; setting CARRIER_ON&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001003, IFF_UP=1&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :device was already opened; enabling queue&lt;br /&gt;
SPI2:: drvInitConnect :step3 : u8Status 8&lt;br /&gt;
SPI2:: drvInitConnect :step4&lt;br /&gt;
SPI2:: drvInitConnect :Successful&lt;br /&gt;
SPI2:: drvInitConnect :step6&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC0 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC1 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC2 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC3 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC0 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC1 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC2 = 8&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC3 = 8&lt;br /&gt;
SPI2:: drvIoctl :PA Request&lt;br /&gt;
SPI2:: drvIoctl :No state change!&lt;br /&gt;
SPI2:: drvIoctl :Fast PS Request&lt;br /&gt;
PhgHhalDoM2SDMA:1661:--&amp;gt;P1&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
SPI2:: drvStop :Driver Stop: disable TX queue! (usage: 2)&lt;br /&gt;
SPI2:: drvIoctl :Deauth BSSID: 00:1d:7e:18:e3:89&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00000002, IFF_UP=0&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :device was already closed&lt;br /&gt;
SPI2:: drvOpen :opening net device&lt;br /&gt;
SPI2:: drvOpen :ERROR: Associated, but Carrier flag is set to CARRIER_OFF&lt;br /&gt;
SPI2:: drvDoScan :Buero (bittorf)&lt;br /&gt;
SPI2:: drvProcessScanCfm :Scan Confirm: Success 1 APs&lt;br /&gt;
SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
SPI2:: drvInitConnect :step2&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_CONNECT; setting CARRIER_ON&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00000003, IFF_UP=1&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :device was already opened; enabling queue&lt;br /&gt;
SPI2:: drvInitConnect :step3 : u8Status 8&lt;br /&gt;
SPI2:: drvInitConnect :step4&lt;br /&gt;
SPI2:: drvInitConnect :Successful&lt;br /&gt;
SPI2:: drvInitConnect :step6&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
SPI2:: drvIoctl :PA Request&lt;br /&gt;
PhgHhalDoM2SDMA:1661:--&amp;gt;P0&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
drvSetWOWFilter: Enable UNICAST: Disable ARP: Enable&lt;br /&gt;
Ip addr = 10.63.17.5. LMP=2&lt;br /&gt;
SPI2:: drvIoctl :PA Request&lt;br /&gt;
SPI2:: drvIoctl :No state change!&lt;br /&gt;
SPI2:: drvIoctl :Fast PS Request&lt;br /&gt;
PhgHhalDoM2SDMA:1661:--&amp;gt;P1&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
Sensor driver: initialize device OV7660&lt;br /&gt;
Warning: Remapping obsolete /dev/fb* minor 32 to 1&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC0 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC1 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC2 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11LongRetryLimitAC3 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC0 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC1 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC2 = 4&lt;br /&gt;
SPI2:: drvIoctl :dot11ShortRetryLimitAC3 = 4&lt;br /&gt;
SPI2:: drvIoctl :PA Request&lt;br /&gt;
PhgHhalDoM2SDMA:1661:--&amp;gt;P0&lt;br /&gt;
SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;logread&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt; auf einem VP6500 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Jan  1 00:00:00 imx21 syslog.info syslogd started: BusyBox v0.60.0 (2007.02.28-13:39+0000)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.emerg klogd: klogd started: BusyBox v0.60.0 (2007.02.28-13:39+0000)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Linux version 2.4.20-celf3 (root@wbul04) (gcc version 3.3.2) #1 Wed Feb 28 13:30:26 UTC 2007&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: CPU: ARM926EJ-Sid(wb) [41069264] revision 4 (ARMv?(8))&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: CPU: D undefined 14 cache&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: CPU: I cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: CPU: D cache: 16384 bytes, associativity 4, 32 byte lines, 128 sets&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Machine: Freescale i.MX2 ADS&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: FCLK=266000 kHz   HCLK=133000 kHz  IPGCLK=66500 kHz&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: PERCLKs: 1=44333 KHz  2=33250 kHz  3=44333 kHz  4=88666 kHz&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: On node 0 totalpages: 16384&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: zone(0): 16384 pages.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: zone(1): 0 pages.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: zone(2): 0 pages.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Kernel command line: root=/dev/mtdblock2 noinitrd ip=none mtdparts=s29gl512n:256k@0x00000000&lt;br /&gt;
(bootloader)ro,896k@0x00040000(kernel)ro,50432k@0x00120000(fs#1),12800k@0x03260000(fs#2),1152k@0x03EE0000(fs#3)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.debug klogd: Relocating machine vectors to 0xffff0000&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Console: colour dummy device 80x30&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Calibrating delay loop (skipped)... 132.71 BogoMIPS&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Memory: 64MB = 64MB total&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: Memory: 63052KB available (1366K code, 299K data, 68K init)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Inode cache hash table entries: 4096 (order: 3, 32768 bytes)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Page-cache hash table entries: 16384 (order: 4, 65536 bytes)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: POSIX conformance testing by UNIFIX&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Linux NET4.0 for Linux 2.4&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Based upon Swansea University Computer Society NET3.039&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Initializing RT netlink socket&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: apm: Simulating APM BIOS version 1.2 (Driver version 1.0)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: i.MX21 Dynamic Power Management&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Starting kswapd&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Disabling the Out Of Memory Killer&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: JFFS2 version 2.1. (C) 2001, 2002 Red Hat, Inc., designed by Axis Communications AB.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: i2c-core.o: i2c core module version 2.6.2 (20011118)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: pty: 256 Unix98 ptys configured&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Serial driver version 5.05c (2001-07-08) with no serial options enabled&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: UART driver version 0.3.6&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: I2C driver Feb 28 2007 / 13:31:04&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Initialize i2c-client-dbmx-codec module&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: s29gl512n: probing 16-bit flash bus&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd:  Amd/Fujitsu Extended Query Table v1.3 at 0x0040&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: number of CFI chips: 1&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: cfi_cmdset_0002: Using Write Buffer method.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: cfi_cmdset_0002: buffer_Write_Time = 128&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: cfi_cmdset_0002: Disabling fast programming due to code brokenness.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: Using static partition definition&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: Creating 5 MTD partitions on &amp;quot;s29gl512n&amp;quot;:&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: 0x00000000-0x00040000 : &amp;quot;bootloader&amp;quot;&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: 0x00040000-0x00120000 : &amp;quot;kernel&amp;quot;&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: 0x00120000-0x03260000 : &amp;quot;fs #1&amp;quot;&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: 0x03260000-0x03ee0000 : &amp;quot;fs #2&amp;quot;&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.notice klogd: 0x03ee0000-0x04000000 : &amp;quot;fs #3&amp;quot;&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: NET4: Linux TCP/IP 1.0 for NET4.0&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: IP Protocols: ICMP, UDP, TCP&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: IP: routing cache hash table of 512 buckets, 4Kbytes&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: TCP: Hash tables configured (established 4096 bind 8192)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: VFS: Mounted root (jffs2 filesystem).&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Freeing init memory: 68K&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: PCB version: ind3 v2&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver SYSTCLK: SYSTCLK-1.12 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver GPIO-1.59 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: ****p_gpio_init_low_bat****&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: GPIO: p_gpio_it_init at 762&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver FRAMEBUF-1.12 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver SPI-1.20 (REFERENCED) Debug level 3&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: &lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: u32_spi1_MinLenghtForDMAInTX set to 300&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: &lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: u32_spi1_MinLenghtForDMAInRX set to 300&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver LCD-1.20 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.info klogd: Driver TVLINK-1.45 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Reset from Software Reset.&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: Motorola PostProcessor Linux driver ver 0.64 - Copyright (C) 2003 Motorola Inc&lt;br /&gt;
Jan  1 00:00:02 imx21 daemon.warn klogd: pp: hw ver = 2&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: prp_dbg=0&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: Motorola PreProcessor Linux driver ver 0.0 - Copyright (C) 2003 Motorola Inc&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.info klogd: hmp4d: base_port=0x10026800 irq=50&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.info klogd: hmp4d: module inserted&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.info klogd: hmp4e: base_port=0x10026c00 irq=49&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.info klogd: hmp4e: Compatble HW found with ID: 0x004c1882&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.info klogd: hmp4e: module inserted. Major = 249&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :PID of driver: 134 &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :ScanList not provided. Will use the default scan list. &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :ScanChannelList :1 6 11 14 2 7 12 3 8 13 4 9 5 10 &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :setting PhyType to: Rf-to-Rf&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :Ref.Clock parameter not provided&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :Configure target for a reference clock of &#039;default=40&#039; Mhz.&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drvRegEtherDev :Interface Name is: eth%d &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drv_Init :HEOCSIWPOWON: Powering on... &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drvPhase2Init :Protocol Firmware will be loaded by driver ...&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.err klogd: SPI2:: drvPhase2Init :Initializing HHAL (PhgHhalInitialize)...&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: Divider : 8&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd:  OCR2 : e4015308 (12582912)&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: Reset : 3 / 27 (c497cc00 / e401531c)&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: Reset : 3 / 27 (c497cc00 / e401531c)&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: p_gpio_init_gpio_status at 1262&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: POWER_FAIL signal NOT detected at GPIO driver init carry on !!! &lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: CHARGE_IN at init&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: LOW_BAT_OUT at init&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: No accessory plugged at init.  - Set Video on jack&lt;br /&gt;
Jan  1 00:00:03 imx21 daemon.warn klogd: GPIO: camera to front at init&lt;br /&gt;
Jan  1 00:00:04 imx21 daemon.warn klogd: **ChargeStatusPmb=========gpio_Read_ChargeStatus_Ready=1 &lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: PhgOsal_linux_init_thread :assigning thread name and deamonize() .. &lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvPhase2Init :Success&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvPhase2Init : registering callbacks with HHAL.. &lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_COMPLETE; setting CARRIER_ON&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvPhase2Init :calling PhgHhalQueueMgmtReq()!&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.info klogd: PhgHhalQueueMgmtReq:1172:HHAL got Init message&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.info klogd: PhgHhalQueueMgmtReq:1217:HHAL done Init message&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001002, IFF_UP=0&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :device was already closed&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvMgmtCfmHndler :Using MAC Address: 00:08:c6:86:8b:99&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvPhase2Init :init etherdev; stopping queue, setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drv_Init :Philips WLAN Drv - loaded - in state: 1 &lt;br /&gt;
Jan  1 00:00:06 imx21 daemon.err klogd: SPI2:: drvInit :Philips WLAN Drv - loaded&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvOpen :opening net device&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvOpen :Device is not associated!&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvOpen :Carrier flag is already set to CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvOpen :Disabling again netqueue&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.warn klogd: requested reg.domain code setting = 3&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvIoctl :set u8LinkAdaptation  : 1 Result=[0]&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvIoctl :changed HEOCSIWLNADPALLOWRATES: 8 allowed rate codes&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
Jan  1 00:00:07 imx21 daemon.err klogd: SPI2:: drvInitConnect :step2&lt;br /&gt;
Jan  1 00:00:10 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:10 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:10 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001003, IFF_UP=1&lt;br /&gt;
Jan  1 00:00:10 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :device was already opened; stopping queue&lt;br /&gt;
Jan  1 00:00:11 imx21 daemon.err klogd: SPI2:: drvInitConnect :step3 : u8Status 255&lt;br /&gt;
Jan  1 00:00:11 imx21 daemon.err klogd: SPI2:: drvInitConnect :step5&lt;br /&gt;
Jan  1 00:00:11 imx21 daemon.err klogd: SPI2:: drvInitConnect :TIMEDOUT&lt;br /&gt;
Jan  1 00:00:11 imx21 daemon.err klogd: SPI2:: drvInitConnect :step6&lt;br /&gt;
Jan  1 00:00:11 imx21 daemon.err klogd: SPI2:: drvInitParamsAndPowerOnAndConnect :Connect failed!&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.warn klogd: Motorola CSI Linux driver ver 0.1&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.warn klogd:  - Copyright (C) 2004 Motorola Inc&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.warn klogd: &lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.info klogd: Driver SENSOR-1.29 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.info klogd: i2c-client version : 1.9&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.info klogd: Initialize i2c-client-aic14 module&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.info klogd: Module i2c-client-aic14 initialized&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.alert klogd: Insert module aic14 (AIC14-1.0)&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.warn klogd: Module AIC14 assumes CODEC MCLK already configured for 20480000Hz&lt;br /&gt;
Jan  1 00:00:12 imx21 daemon.info klogd: Driver KPP-1.36 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:13 imx21 daemon.info klogd: Driver DOZE-1.27 (REFERENCED)&lt;br /&gt;
Jan  1 00:00:14 imx21 daemon.err klogd: SPI2:: drvDoScan :Buero (bittorf)&lt;br /&gt;
Jan  1 00:00:15 imx21 daemon.err klogd: SPI2:: drvProcessScanCfm :Scan Confirm: Success 1 APs&lt;br /&gt;
Jan  1 00:00:15 imx21 daemon.info netsyncd[315]: creating FIFO_NETSYNC_HMON_NAME... &lt;br /&gt;
Jan  1 00:00:15 imx21 daemon.info netsyncd[315]: creating FIFO_HMON_NETSYNC_NAME... &lt;br /&gt;
Jan  1 00:00:18 imx21 daemon.err klogd: SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
Jan  1 00:00:18 imx21 daemon.err klogd: SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:18 imx21 daemon.err klogd: SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
Jan  1 00:00:18 imx21 daemon.err klogd: SPI2:: drvInitConnect :step2&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_CONNECT; setting CARRIER_ON&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00001003, IFF_UP=1&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :device was already opened; enabling queue&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvInitConnect :step3 : u8Status 8&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvInitConnect :step4&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvInitConnect :Successful&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err klogd: SPI2:: drvInitConnect :step6&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err modprobe: modprobe: Can&#039;t locate module sound-slot-0&lt;br /&gt;
Jan  1 00:00:19 imx21 daemon.err modprobe: modprobe: Can&#039;t locate module sound-service-0-0&lt;br /&gt;
Jan  1 00:00:20 imx21 local0.debug dhcpcd[337]: broadcasting DHCP_DISCOVER &lt;br /&gt;
Jan  1 00:00:23 imx21 local0.debug dhcpcd[337]: DHCP_OFFER received from  (10.63.17.1) &lt;br /&gt;
Jan  1 00:00:23 imx21 local0.debug dhcpcd[337]: DHCP_ACK received from  (10.63.17.1) &lt;br /&gt;
Jan  1 00:00:23 imx21 daemon.err netsyncd[314]: father received(10) eth0 up! &lt;br /&gt;
Jan  1 00:00:23 imx21 daemon.info netsyncd[314]: Dhcp_start 337 return : 0  &lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC0 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC1 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC2 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC3 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC0 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC1 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC2 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC3 = 8&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :PA Request&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :No state change!&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvIoctl :Fast PS Request&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.info klogd: PhgHhalDoM2SDMA:1661:--&amp;gt;P1&lt;br /&gt;
Jan  1 00:00:26 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
Jan  1 00:00:28 imx21 daemon.info netsyncd[314]: Dhcp_stop 359 return : 0  &lt;br /&gt;
Jan  1 00:00:28 imx21 local0.debug dhcpcd[347]: sending DHCP_RELEASE for 10.63.17.5 to 10.63.17.1 &lt;br /&gt;
Jan  1 00:00:29 imx21 local0.err dhcpcd[347]: terminating on signal 1 &lt;br /&gt;
Jan  1 00:00:29 imx21 daemon.err netsyncd[314]: father received(12) eth0 down! &lt;br /&gt;
Jan  1 00:00:29 imx21 daemon.err klogd: SPI2:: drvStop :Driver Stop: disable TX queue! (usage: 2)&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvIoctl :Deauth BSSID: 00:1d:7e:18:e3:89&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVENT_DISCONNECT; setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00000002, IFF_UP=0&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :device was already closed&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvOpen :opening net device&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvOpen :ERROR: Associated, but Carrier flag is set to CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:41 imx21 daemon.err klogd: SPI2:: drvDoScan :Buero (bittorf)&lt;br /&gt;
Jan  1 00:00:42 imx21 daemon.err klogd: SPI2:: drvProcessScanCfm :Scan Confirm: Success 1 APs&lt;br /&gt;
Jan  1 00:00:45 imx21 daemon.err klogd: SPI2:: drvInitConnect :Req to connect to new WLAN network&lt;br /&gt;
Jan  1 00:00:45 imx21 daemon.err klogd: SPI2:: drvInitConnect :Disabling TX queue and setting CARRIER_OFF&lt;br /&gt;
Jan  1 00:00:45 imx21 daemon.err klogd: SPI2:: drvInitConnect :Connecting To AP...&lt;br /&gt;
Jan  1 00:00:45 imx21 daemon.err klogd: SPI2:: drvInitConnect :step2&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PHGHHAL_EVNT_INIT_CONNECT; setting CARRIER_ON&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :netdev-&amp;gt;flags=0x00000003, IFF_UP=1&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :device was already opened; enabling queue&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvInitConnect :step3 : u8Status 8&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvInitConnect :step4&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvInitConnect :Successful&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvInitConnect :step6&lt;br /&gt;
Jan  1 00:00:46 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
Jan  1 00:00:54 imx21 local0.debug dhcpcd[386]: broadcasting DHCP_DISCOVER &lt;br /&gt;
Jan  1 00:00:57 imx21 local0.debug dhcpcd[386]: DHCP_OFFER received from  (10.63.17.1) &lt;br /&gt;
Jan  1 00:00:57 imx21 local0.debug dhcpcd[386]: DHCP_ACK received from  (10.63.17.1) &lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.info netsyncd[314]: Dhcp_start 386 return : 0  &lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.info netsyncd[314]: NTP server request on : ntp.xs4all.nl &lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvIoctl :PA Request&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.info klogd: PhgHhalDoM2SDMA:1661:--&amp;gt;P0&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.warn klogd: drvSetWOWFilter: Enable UNICAST: Disable ARP: Enable&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.warn klogd: Ip addr = 10.63.17.5. LMP=2&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvIoctl :PA Request&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvIoctl :No state change!&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvIoctl :Fast PS Request&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.info klogd: PhgHhalDoM2SDMA:1661:--&amp;gt;P1&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.warn klogd: Sensor driver: initialize device OV7660&lt;br /&gt;
Jan  1 00:00:57 imx21 daemon.warn klogd: Warning: Remapping obsolete /dev/fb* minor 32 to 1&lt;br /&gt;
Apr  7 09:58:16 imx21 daemon.info netsyncd[314]: NTP process return code : 0  &lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC0 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC1 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC2 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC3 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC0 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC1 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC2 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC3 = 4&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvIoctl :PA Request&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.info klogd: PhgHhalDoM2SDMA:1661:--&amp;gt;P0&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS wake (0) in Drvmain&lt;br /&gt;
Apr  7 09:58:19 imx21 daemon.info upgraded[312]: K_SW0_DWNLD_ACK &lt;br /&gt;
Apr  7 09:58:27 imx21 auth.info login[393]: root login  on `ttyp0&#039; from `bittorf-AP.olsr&#039; &lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC0 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC1 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC2 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11LongRetryLimitAC3 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC0 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC1 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC2 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :dot11ShortRetryLimitAC3 = 8&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :PA Request&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :No state change!&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvIoctl :Fast PS Request&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.info klogd: PhgHhalDoM2SDMA:1661:--&amp;gt;P1&lt;br /&gt;
Apr  7 09:59:50 imx21 daemon.err klogd: SPI2:: drvHhalEventIndicationHandler :PS Ind (1) in Drvmain&lt;br /&gt;
Apr  7 10:14:53 imx21 auth.info login[408]: root login  on `ttyp1&#039; from `bittorf-AP.olsr&#039; &lt;br /&gt;
Apr  7 10:17:18 imx21 syslog.info -- MARK --&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe von &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;/proc/cpuinfo&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt; auf einem VP6500 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat /proc/cpuinfo &lt;br /&gt;
Processor       : ARM926EJ-Sid(wb) rev 4 (v5EJl)&lt;br /&gt;
BogoMIPS        : 133.01&lt;br /&gt;
Features        : swp half thumb fastmult &lt;br /&gt;
CPU implementer : 0x41&lt;br /&gt;
CPU architecture: ?(8)&lt;br /&gt;
CPU variant     : 0x0&lt;br /&gt;
CPU part        : 0x926&lt;br /&gt;
CPU revision    : 4&lt;br /&gt;
Cache type      : undefined 14&lt;br /&gt;
Cache clean     : undefined 14&lt;br /&gt;
Cache lockdown  : undefined 14&lt;br /&gt;
Cache unified   : Harvard&lt;br /&gt;
I size          : 16384&lt;br /&gt;
I assoc         : 4&lt;br /&gt;
I line length   : 32&lt;br /&gt;
I sets          : 128&lt;br /&gt;
D size          : 16384&lt;br /&gt;
D assoc         : 4&lt;br /&gt;
D line length   : 32&lt;br /&gt;
D sets          : 128&lt;br /&gt;
&lt;br /&gt;
Hardware        : Freescale i.MX2 ADS&lt;br /&gt;
Revision        : 0000&lt;br /&gt;
Serial          : 0000000000000000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Software Modifikationen ==&lt;br /&gt;
&lt;br /&gt;
=== Startscripts ===&lt;br /&gt;
Die Scripts in /etc/rc.d/&amp;quot; müssen im Hintergrund laufen. Tut ein Script das nicht, ist an dieser Stelle Schluß mit dem Bootvorgang.&lt;br /&gt;
&lt;br /&gt;
Dann darf man als nächstes den Lötkolben anheizen und die serielle Schnittstelle ([[#UART]]) zugänglich machen.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung WPA2 Unterstützung ===&lt;br /&gt;
&amp;lt;p&amp;gt;Standardmäßig kann das Telefon nur WPA, dabei unterstützt es allerdings auch &amp;lt;b&amp;gt;WPA mit AES&amp;lt;/b&amp;gt; Verschlüsselung.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Es gibt zwei verschiedene Tricks mit denen auch WPA2 aktiviert werden kann.&lt;br /&gt;
Allerdings wurde von einigen ein Einbruch der Verbindungsgeschwindigkeit festgestellt (scheint jedoch nur bei geringem Akkuladestand aufzutreten).&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Trick1 ====&lt;br /&gt;
Mittels&lt;br /&gt;
 vi /etc/marvell/wpa_supplicant.conf&lt;br /&gt;
den Texteditor starten.&lt;br /&gt;
Mit PageDown (Bild runter) bis zum Ende des Files gehen.&lt;br /&gt;
Die Zeilen &lt;br /&gt;
 proto=WPA&lt;br /&gt;
 pairwise=TKIP&lt;br /&gt;
 group=TKIP&lt;br /&gt;
auskommentieren, indem ein # vorangestellt wird:&lt;br /&gt;
* cursor auf Beginn einer Zeile &lt;br /&gt;
* i drücken zum Einfügen&lt;br /&gt;
* # eintippen&lt;br /&gt;
* [Esc]&lt;br /&gt;
Sind alle Zeilen auskommentiert, dann mittels&lt;br /&gt;
 :wq[enter]&lt;br /&gt;
abspeichern und Editor verlassen.&lt;br /&gt;
&lt;br /&gt;
Danach neu booten.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Will man sich mit dieser Änderung in einem reinen WPA2 Netz anmelden (registrieren), kann man als Verschlüsselung nur noch WEP auswählen - der Verbindungsversuch scheitert natürlich! (Hardware: Fritz!Box 7270, PHILIPS VP5500)&lt;br /&gt;
&lt;br /&gt;
Also am Accesspoint WPA2 + WPA einstellen, Telefon registrieren, dann Accesspoint auf WPA2 konfigurieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;&#039;Achtung!&#039;&#039;&#039;&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Das Herumspielen an der wpa_supplicant.conf endet sehr schnell damit das man sich ausperrt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Um sich eine Wiederbelebung per serieller Konsole zu ersparen, ist es günstig, immer nur Einträge an die wpa_supplicant.conf &amp;lt;u&amp;gt;hinten anzuhängen&amp;lt;/u&amp;gt;, niemals aber vorne einzufügen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Trick2 ====&lt;br /&gt;
Dieser Trick funktioniert mit Accesspoints, bei denen man auch WPA Verbindungen mit AES verschlüsseln kann. Vorteil dieses Tricks ist, dass man die wpa_supplicant.conf nicht manuell editieren muss. Allerdings unterstützt nicht jeder Accesspoint WPA mit AES (aber dd-wrt kann das).&lt;br /&gt;
&lt;br /&gt;
Man konfiguriert den Accesspoint zunächst mit WPA PSK und wählt AES als Verschlüsselungsalgorithmus. Jetzt meldet man das Telefon an, das Telefon erkennt richtig, dass eine WPA Verbindung vorliegt und verbindet sich per WPA und AES mit dem Accesspoint. Anschliessend konfiguriert man den Accesspoint von WPA PSK AES nach WPA2 PSK AES. Jetzt schaltet man das VP5500/6500 aus und wieder ein. Nachdem es fertig gebootet hat, verbindet es sich automisch per WPA2 PSK und mit AES Verschlüsselung. Fertig.&lt;br /&gt;
&lt;br /&gt;
==== Versehentliche Aussperrung nach WPA2 Einstellversuch beheben ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. DON&#039;T PANIC!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Für den Fall das man sich den Zugangsweg per wireless abgeschnitten hat, gibt es, neben dem Bau eines seriellen Adapters und der Notwendigkeit zu löten, noch eine Variante um wieder auf das Telefon zu kommen:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;den Demo-Modus!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Dieser Modus war dazu gedacht die Funktionalität der VPs ohne SIP-Server ausprobieren zu können. 2 Geräte starten dazu im WLAN-AdHoc-Modus mit unterschiedlichen IP&#039;s (192.168.10.1 + 192.168.10.2 , jeweils /24 = 255.255.255.0) und machen ein IBSS-Netzwerk mit WEP-Verschlüsselung auf (Key: VP6500 = 5648751265 beim VP5500 = 7295569793).&lt;br /&gt;
&lt;br /&gt;
Nun kann man auch ein einzelnes Telefon in den Demo-Modus versetzen (vorhandener neuer Menüeintrag nach dem rooten, oder per Tastenkombination &amp;quot;*#3 &amp;quot;), gibt sich eine passende WLAN und IP-Einstellungen auf dem Rechner und schon kann man wieder darauf connecten und Fehleinstellungen wieder beheben. Dummerweise wird eine zufällige IBSS-Cell-ID verwendet, aber neuere Betriebssysteme können der Zelle trotzdem beitreten. Als ESSID kann man &#039;&#039;demo_mode_obiwan&#039;&#039; verwenden.&lt;br /&gt;
&lt;br /&gt;
===== Schritt für Schritt Anleitung für Linux =====&lt;br /&gt;
&lt;br /&gt;
Einstellungen&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;am Telefon&#039;&#039;&#039;&lt;br /&gt;
* Telefon anschalten und per Menüeintrag oder Tastenkombination &amp;quot;*#3&amp;quot; in Demomodus versetzen (z.B. als Einstellung Handset 1)&lt;br /&gt;
-&amp;gt; IP des Telefons wird danach zu 192.168.10.1&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;am Computer&#039;&#039;&#039;&lt;br /&gt;
* Konsole öffnen&lt;br /&gt;
 per ifconfig checken welches das WLAN-Gerät am Rechner ist (im weiteren &amp;quot;wlan0&amp;quot; genannt)&lt;br /&gt;
 ifconfig wlan0 down&lt;br /&gt;
 iwconfig wlan0 mode ad-hoc (ad-hoc Modus aktivieren)&lt;br /&gt;
 iwconfig wlan0 essid &#039;demo_mode_obiwan&#039; (Passende essid-Kennung setzen)&lt;br /&gt;
 iwconfig wlan0 key 5648751265 (Key für das VP6500)&lt;br /&gt;
 ifconfig wlan0 up&lt;br /&gt;
 ifconfig wlan0 192.168.10.2 (setzen der IP)&lt;br /&gt;
&lt;br /&gt;
man kann nun mittels:&lt;br /&gt;
&lt;br /&gt;
 ping 192.168.10.1&lt;br /&gt;
&lt;br /&gt;
testen ob alles korrekt verlaufen ist und man eine Antwort bekommt - sollte das der Fall sein ist man &#039;&#039;&#039;fertig!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nun kann man per telnet oder ssh, mit den üblichen Benutzerkennung und dem Passwort, auf die IP 192.168.10.1 connecten und die Probleme beheben.&lt;br /&gt;
&lt;br /&gt;
=== Menüs ===&lt;br /&gt;
==== Hauptmenu ====&lt;br /&gt;
&lt;br /&gt;
Das File &lt;br /&gt;
 /usr/local/etc/defaultbuttons.conf&lt;br /&gt;
enthält unter anderm die definition des Hauptmenus.&lt;br /&gt;
&lt;br /&gt;
Hierfür ist der Abschnitt Menu besonders interessant.&lt;br /&gt;
  [Menu]&lt;br /&gt;
  1 = Applications/camera.desktop&lt;br /&gt;
  2 = Applications/callhistory.desktop&lt;br /&gt;
  3 = Applications&lt;br /&gt;
  4 = Settings&lt;br /&gt;
  5 = Applications/addressbook.desktop&lt;br /&gt;
  6 = Settings/RingProfiles.desktop&lt;br /&gt;
  Columns = 3&lt;br /&gt;
  Default = 5&lt;br /&gt;
  Map = 123456789*0#&lt;br /&gt;
  Rows = 2&lt;br /&gt;
&lt;br /&gt;
&#039;Rows&#039; und &#039;Columns&#039; geben an, wieviel Reihen und Spalten das Hauptmenu hat.&lt;br /&gt;
Über die Zuweisungen 1 bis (Columns * Rows) kann man dann den Menüpositionen die Menüpunkte zuweisen.&lt;br /&gt;
Die Menupunkte sind definiert in den Verzeichnissen unter &lt;br /&gt;
 /usr/local/apps&lt;br /&gt;
gibt man nur ein Verzeichnis an, dann erscheint ein Submenü, dessen Icon und Name in der .directory -Datei des entsprechenden Ordner definiert ist.&lt;br /&gt;
direkte Menupunkte haben Dateinamen mit der Endung .desktop&lt;br /&gt;
&#039;Default&#039; bestimmten vorselektierten Eintrag.&lt;br /&gt;
&lt;br /&gt;
Hier ein weiteres Beispiel für ein angepasstes Menu:&lt;br /&gt;
  [Menu]&lt;br /&gt;
  1 = Applications/addressbook.desktop&lt;br /&gt;
  2 = Applications/callhistory.desktop&lt;br /&gt;
  3 = Applications/sysinfo.desktop&lt;br /&gt;
  4 = Applications&lt;br /&gt;
  5 = Settings&lt;br /&gt;
  6 = Games&lt;br /&gt;
  7 = Applications/camera.desktop&lt;br /&gt;
  8 = Applications/photoedit.desktop&lt;br /&gt;
  9 = Applications/manualsub.desktop&lt;br /&gt;
  Columns = 3&lt;br /&gt;
  Default = 5&lt;br /&gt;
  Map = 123456789*0#&lt;br /&gt;
  Rows = 3&lt;br /&gt;
&lt;br /&gt;
Der Ordner Games ist (momentan ;) leer.&lt;br /&gt;
&lt;br /&gt;
==== Genereller Aufbau Menü-Einträge ====&lt;br /&gt;
Die Einträge für die Menüs sind im Filesystem abgelegt:&lt;br /&gt;
&lt;br /&gt;
* Settings: /usr/local/apps/Settings&lt;br /&gt;
* Applications: /usr/local/apps/Applications&lt;br /&gt;
* Klingeltöne: /usr/local/etc/SystemRingTones/&lt;br /&gt;
&lt;br /&gt;
Die Dateien haben die Endung &amp;quot;.desktop&amp;quot; und sind normale Textdateien, die die relevanten Infos enthalten.&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel aus dem Settingsordner:&lt;br /&gt;
  [Translation]&lt;br /&gt;
  File=QtopiaSettings&lt;br /&gt;
  Context=Sound&lt;br /&gt;
  [Desktop Entry]&lt;br /&gt;
  Type=Application&lt;br /&gt;
  Exec=sound&lt;br /&gt;
  Icon=Sound&lt;br /&gt;
  Name[]=Sound&lt;br /&gt;
  CanFastload=0&lt;br /&gt;
&lt;br /&gt;
Der Abschnitt &#039;Translation&#039; gibt an in welchem File, die Lokalisationsdaten stehen.&lt;br /&gt;
&lt;br /&gt;
Der Abschnitt &#039;Desktop Entry&#039;:&lt;br /&gt;
* Type: Typ des Eintrages &lt;br /&gt;
** Application für Anwendungen&lt;br /&gt;
** audio/x-wav für Klingeltöne&lt;br /&gt;
* Exec: Anwendung, die ausgeführt werden soll&lt;br /&gt;
* Icon: Icon, das im Menü benutzt wird. &lt;br /&gt;
** Pfad ist meist: /usr/local/pics/[Exex]/[Icon].png&lt;br /&gt;
** manchmal aber auch: /usr/local/pics/icons/[14x14|16x16|22x22]/[Icon].png&lt;br /&gt;
* Name[]: Name im Menü, wird über das in Translation angegebe File und Context aufgelöst. Dies wird verhindert, wenn die Klammern wegelassen werden, was das Einfügen eigener Einträge ermöglicht&lt;br /&gt;
&lt;br /&gt;
Hier ein Textfile mit allen desktop-Files als Referenz: [[File:alleDesktopFiles.txt]]&lt;br /&gt;
&lt;br /&gt;
==== Versteckte Menüeinträge ====&lt;br /&gt;
in den oben genannten Ordnern existieren ein paar Dateien mit der Endung &#039;.desktopMASK&#039;.&lt;br /&gt;
Benennt man diese um, werden die Einträge nach einem Neustart im Menü freigeschaltet.&lt;br /&gt;
&lt;br /&gt;
folgendes an der Kommandozeile eingeben:&lt;br /&gt;
 cd /usr/local/apps/Settings&lt;br /&gt;
 mv datetime.desktopMASK datetime.desktop&lt;br /&gt;
 mv callforward.desktopMASK callforward.desktop&lt;br /&gt;
 mv calloptions.desktopMASK calloptions.desktop&lt;br /&gt;
 mv resetparam.desktopMASK resetparam.desktop&lt;br /&gt;
 mv subkpncode.desktopMASK subkpncode.desktop&lt;br /&gt;
&lt;br /&gt;
Dies aktiviert folgende Optionen:&lt;br /&gt;
* Datums/Zeit-Einstellung&lt;br /&gt;
* Anrufweiterleitung&lt;br /&gt;
* Anrufoptionen&lt;br /&gt;
* Parameter zurücksetzen&lt;br /&gt;
* Number Switch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die nützlichsten sind wohl die ersten Einträge.&lt;br /&gt;
Bei dem &amp;quot;Number Switch&amp;quot; ist unklar, was er bewirken soll. Beim Start wird ein Code abgefragt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Weiterhin kann im Verzeichnis /usr/local/apps/Applications eine [[File:demomode.desktop]] anlegen.&lt;br /&gt;
&lt;br /&gt;
Hierfür ist folgende Prozedur nötig:&lt;br /&gt;
* im Terminal&lt;br /&gt;
                 cd /usr/local/apps/Applications&lt;br /&gt;
                 vi demomode.desktop&lt;br /&gt;
&lt;br /&gt;
* i drücken &lt;br /&gt;
* folgendes Textfragment einfügen &lt;br /&gt;
                 [Translation]&lt;br /&gt;
                 File=QtopiaApplications&lt;br /&gt;
                 Context=DemoMode&lt;br /&gt;
                 [Desktop Entry]&lt;br /&gt;
                 Exec=demomode&lt;br /&gt;
                 Icon=Camera&lt;br /&gt;
                 Type=Application&lt;br /&gt;
                 Name[]=DemoMode&lt;br /&gt;
* [Esc] &lt;br /&gt;
* :wq [Enter] &lt;br /&gt;
&lt;br /&gt;
Dies schaltet einen Demo-Modus frei.&lt;br /&gt;
&lt;br /&gt;
===== Französisch =====&lt;br /&gt;
Es gab die Geräte wohl auch in Frankreich von der France Telekom.&lt;br /&gt;
Zumindest sind entsprechende monitor und upgrade Referenz-Dateien&lt;br /&gt;
vorhanden in denen das steht. Daher wohl auch die Französischen&lt;br /&gt;
Sprachdateien, die zwar auf dem Gerät sind, allerdings in einem&lt;br /&gt;
Unterverzeichnis, so das sie nicht auswählbar sind.&lt;br /&gt;
&lt;br /&gt;
Um diese Dateien zu aktivieren:&lt;br /&gt;
&lt;br /&gt;
 cd /usr/local/i18n&lt;br /&gt;
 mv NOTUSED/fr .&lt;br /&gt;
&lt;br /&gt;
Nun ist auch noch französisch als Sprache verfügbar.&lt;br /&gt;
&lt;br /&gt;
==== Eigene Menüeinträge ====&lt;br /&gt;
&lt;br /&gt;
Es besteht die Möglichkeit Menüeinträge anzulegen, durch die Shellskripte ausgeführt werden. Im Folgenden ist dieses Vorgehen am Beispiel des ein- und ausschaltens von SSH beschrieben.&lt;br /&gt;
&lt;br /&gt;
===== SSH aktivieren &amp;amp; deaktivieren =====&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Achtung! Folgendes Vorgehen kann das Gerät bricken, falls Telnet deaktiviert ist und irgendwas mit SSH schief läuft!&#039;&#039;&#039;&lt;br /&gt;
*Die folgenden beiden Dateien repräsentieren die Menüeinträge und rufen &#039;&#039;enablessh&#039;&#039; bzw. &#039;&#039;disablessh&#039;&#039; auf.&lt;br /&gt;
:*&#039;&#039;/usr/local/apps/Applications/enablessh.desktop&#039;&#039;:&lt;br /&gt;
 [Translation]&lt;br /&gt;
 File=QtopiaApplications&lt;br /&gt;
 Context=enablessh&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Exec=enablessh&lt;br /&gt;
 Icon=Camera&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name[]=Enable SSH&lt;br /&gt;
:*&#039;&#039;/usr/local/apps/Applications/disablessh.desktop&#039;&#039;:&lt;br /&gt;
 [Translation]&lt;br /&gt;
 File=QtopiaApplications&lt;br /&gt;
 Context=disablessh&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Exec=disablessh&lt;br /&gt;
 Icon=Camera&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name[]=Disable SSH&lt;br /&gt;
*&#039;&#039;enablessh&#039;&#039; und &#039;&#039;disablessh&#039;&#039; sind Shellskripte, die in &#039;&#039;/usr/local/bin/&#039;&#039; liegen und folgendes enthalten:&lt;br /&gt;
:*&#039;&#039;/usr/local/bin/enablessh&#039;&#039;:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 touch /var/log/lastlog&lt;br /&gt;
 /etc/rc.d/init.d/S99dropbear restart&lt;br /&gt;
 exit(0)&lt;br /&gt;
:*&#039;&#039;/usr/local/bin/disablessh&#039;&#039;:&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /etc/rc.d/init.d/S99dropbear stop&lt;br /&gt;
 exit(0)&lt;br /&gt;
*Nach einem Neustart des Telefons sollten im Menü &#039;&#039;Anwendungen&#039;&#039; die zwei neuen Menüpunkte auftauchen.&lt;br /&gt;
&lt;br /&gt;
=== Grafische Anpassungen ===&lt;br /&gt;
So gut wie alle Grafiken liegen im Verzeichnis /usr/local/pics und können beliebig ausgetauscht werden (gleicher Dateityp, gleiche Größe).&lt;br /&gt;
&lt;br /&gt;
Einige besonders interessante werden hier aufgeführt:&lt;br /&gt;
&lt;br /&gt;
===== Eigene Startup/Shutdown-Animation =====&lt;br /&gt;
&lt;br /&gt;
Die Animation beim Starten oder Herunterfahren sind normale (animierte) GIFs. Diese findet man in&lt;br /&gt;
&lt;br /&gt;
 /usr/local/pics/qpe&lt;br /&gt;
&lt;br /&gt;
Die Links &amp;quot;splash.gif&amp;quot; und &amp;quot;goodbye.gif&amp;quot; zeigen auf die tasächlich zu verwendenen Dateien (&amp;quot;splash-chuck.gif&amp;quot;, &amp;quot;goodby-chuck.gif&amp;quot;).&lt;br /&gt;
Man kann sein eigenes animiertes GIF im Format 176x220 Pixel raufladen und die&lt;br /&gt;
splash.gif entsprechend neu verlinken. Dazu löscht man zuerst die alte&lt;br /&gt;
mit:&lt;br /&gt;
&lt;br /&gt;
 rm /usr/local/pics/qpe/splash.gif&lt;br /&gt;
&lt;br /&gt;
Anschliessend erzeugt man den Link neu, dabei zeigt er dann auf die&lt;br /&gt;
eigene Datei:&lt;br /&gt;
&lt;br /&gt;
 ln -s /pfad/zur/eigenedatei.gif /usr/local/pics/qpe/splash.gif&lt;br /&gt;
&lt;br /&gt;
Danach wird dann bei jedem Neustart die eigene Animation angezeigt.&lt;br /&gt;
Analog hierzu mit der goodbye.gif.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, man packe das Bild auf einen Webserver. Dann am Gerät über telnet&lt;br /&gt;
anmelden und:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/pics/qpe/&lt;br /&gt;
wget http://dein.server/woauchimmer/Matrix5.gif&lt;br /&gt;
rm /usr/local/pics/qpe/splash.gif&lt;br /&gt;
ln -s Matrix5.gif splash.gif&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die GIF Animation kann bis zu 176x220 Pixel groß sein.&lt;br /&gt;
Kleinere (möglicherweise auch größere) Bilder werden zentriert.&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Bild:walking_baby_tux.gif&lt;br /&gt;
Bild:custwakeup2.gif&lt;br /&gt;
Bild:custgoodbye2.gif&lt;br /&gt;
Bild:94vw4.gif&lt;br /&gt;
Bild:1_Matrix--16984.gif&lt;br /&gt;
Bild:1_Matrix--16985.gif&lt;br /&gt;
Bild:3.gif&lt;br /&gt;
Bild:ClanSpider2.gif&lt;br /&gt;
Bild:TS12.gif&lt;br /&gt;
Bild:Matrix5.gif&lt;br /&gt;
Bild:qtopia3.gif&lt;br /&gt;
Bild:qtopia0.gif&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Eigener Boot/Update-Screen =====&lt;br /&gt;
&lt;br /&gt;
Der Boot-Screen, oder der Update-Screen liegen als Rohdaten vor.&lt;br /&gt;
 /user_data/data/welcome.rgb565&lt;br /&gt;
 /usr/local/startup_V4.20/update.bin&lt;br /&gt;
&lt;br /&gt;
Weitere Beispielbilder:&lt;br /&gt;
 /user_data/prod/data/lcd_test_card1.bin&lt;br /&gt;
 /user_data/prod/data/lcd_test_card2.bin&lt;br /&gt;
&lt;br /&gt;
Diese werden direkt in den Framebuffer geschrieben.&lt;br /&gt;
Daher müssen sich diese genau ein bestimmtes Format halten: &lt;br /&gt;
* Größe 240 x 220 (Das Display ist 176 x 220, der Rest ist also nicht zu sehen)&lt;br /&gt;
* 16bit pro Pixel RGB565&lt;br /&gt;
&lt;br /&gt;
Um solch ein Bild zu erstellen sind folgende Schritte notwendig:&lt;br /&gt;
# Ein Bild in Gimp mit 176x220 erstellen&lt;br /&gt;
# das Bild vertikal spiegeln&lt;br /&gt;
# Bild-&amp;gt;Leinwandgröße auf 240x220 erweitern (Bilddaten ganz nach links)&lt;br /&gt;
# Datei-&amp;gt;Kopie speichern...&lt;br /&gt;
# Als Windowsbitmap -&amp;gt; erweiterete Optionen -&amp;gt; 16bit R5G6B5&lt;br /&gt;
# BMP-Header entfernen (dies kann auch auf dem Telefon gemacht werden)&lt;br /&gt;
         tail -c 105600 input.bmp &amp;gt; output.raw&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Von der Kommandozeile kann auch manuell das Bild in den Framebuffer geschrieben werden.&lt;br /&gt;
 cat /user_data/prod/data/lcd_test_card1.bin &amp;gt; /dev/fb0&lt;br /&gt;
&lt;br /&gt;
=== Wichtige Verzeichnisse ===&lt;br /&gt;
&lt;br /&gt;
==== Adressdaten ====&lt;br /&gt;
&lt;br /&gt;
# cat /user_data/home/Applications/addressbook/addressbook.xml &lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;!DOCTYPE Addressbook &amp;gt;&amp;lt;AddressBook&amp;gt;&lt;br /&gt;
  &amp;lt;Groups&amp;gt;&lt;br /&gt;
  &amp;lt;/Groups&amp;gt;&lt;br /&gt;
  &amp;lt;Contacts&amp;gt;&lt;br /&gt;
    &amp;lt;Contact&lt;br /&gt;
                                Uid=&amp;quot;-1269720893&amp;quot; &lt;br /&gt;
                         Categories=&amp;quot;-1269431263;-1266109093;-1266109094&amp;quot; &lt;br /&gt;
                          FirstName=&amp;quot;ich&amp;quot; &lt;br /&gt;
                             FileAs=&amp;quot;ich&amp;quot; &lt;br /&gt;
                           JobTitle=&amp;quot;cc&amp;quot; &lt;br /&gt;
                         Department=&amp;quot;dep&amp;quot;&lt;br /&gt;
                            Company=&amp;quot;aa&amp;quot; &lt;br /&gt;
                      BusinessPhone=&amp;quot;55&amp;quot; &lt;br /&gt;
                        BusinessFax=&amp;quot;77&amp;quot; &lt;br /&gt;
                     BusinessMobile=&amp;quot;66&amp;quot; &lt;br /&gt;
                          HomePhone=&amp;quot;55&amp;quot;&lt;br /&gt;
                         HomeMobile=&amp;quot;11&amp;quot; &lt;br /&gt;
                             HomePc=&amp;quot;12&amp;quot;&lt;br /&gt;
                           HomeData=&amp;quot;13&amp;quot;&lt;br /&gt;
                            HomeFax=&amp;quot;14&amp;quot;&lt;br /&gt;
                     BusinessStreet=&amp;quot;street&amp;quot;&lt;br /&gt;
                       BusinessCity=&amp;quot;city&amp;quot;&lt;br /&gt;
                      BusinessState=&amp;quot;state&amp;quot;&lt;br /&gt;
                        BusinessZip=&amp;quot;zip&amp;quot;&lt;br /&gt;
                    BusinessCountry=&amp;quot;country&amp;quot;&lt;br /&gt;
                      BusinessPager=&amp;quot;88&amp;quot;&lt;br /&gt;
                             Office=&amp;quot;office&amp;quot;&lt;br /&gt;
                         Profession=&amp;quot;prof&amp;quot;&lt;br /&gt;
                          Assistant=&amp;quot;ass&amp;quot;&lt;br /&gt;
                            Manager=&amp;quot;man&amp;quot;&lt;br /&gt;
                         HomeStreet=&amp;quot;ptjml&amp;quot;&lt;br /&gt;
                           HomeCity=&amp;quot;cit&amp;quot;&lt;br /&gt;
                          HomeState=&amp;quot;stat&amp;quot;&lt;br /&gt;
                            HomeZip=&amp;quot;zi&amp;quot;&lt;br /&gt;
                        HomeCountry=&amp;quot;coun&amp;quot;&lt;br /&gt;
                             Spouse=&amp;quot;spouse&amp;quot;&lt;br /&gt;
                             Gender=&amp;quot;1&amp;quot;&lt;br /&gt;
                           Birthday=&amp;quot;20100322&amp;quot;&lt;br /&gt;
                        Anniversary=&amp;quot;20100429&amp;quot;&lt;br /&gt;
                           Children=&amp;quot;child&amp;quot;&lt;br /&gt;
                              Notes=&amp;quot;gakm&amp;quot;&lt;br /&gt;
               CompanyPronunciation=&amp;quot;bb&amp;quot;&lt;br /&gt;
                   BUSINESS_CONTACT=&amp;quot;&amp;quot;&lt;br /&gt;
                          photofile=&amp;quot;ci-1269721575-0.jpg&amp;quot;&lt;br /&gt;
                   qdl-private-data=&amp;quot;&amp;quot;&lt;br /&gt;
                               tone=&amp;quot;/usr/local/etc/SystemRingTones/16-Tetris.desktop&amp;quot;&lt;br /&gt;
         /&amp;gt;&lt;br /&gt;
    &amp;lt;Contact Uid=&amp;quot;-1269554029&amp;quot; &lt;br /&gt;
             FirstName=&amp;quot;VoIP&amp;quot; &lt;br /&gt;
             LastName=&amp;quot;Phone1&amp;quot; &lt;br /&gt;
             FileAs=&amp;quot;VoIP Phone1&amp;quot; &lt;br /&gt;
             HomeMobile=&amp;quot;**621&amp;quot;  &lt;br /&gt;
             tone=&amp;quot;/usr/local/etc/SystemRingTones/15-Techno2.desktop&amp;quot;  /&amp;gt;&lt;br /&gt;
    &amp;lt;Contact Uid=&amp;quot;-1269554032&amp;quot; &lt;br /&gt;
             Categories=&amp;quot;-1269431263&amp;quot;&lt;br /&gt;
             FirstName=&amp;quot;VoIP&amp;quot; &lt;br /&gt;
             LastName=&amp;quot;Phone3&amp;quot; &lt;br /&gt;
             FileAs=&amp;quot;VoIP Phone3&amp;quot; &lt;br /&gt;
             HomeMobile=&amp;quot;**623&amp;quot;  &lt;br /&gt;
             BUSINESS_CONTACT=&amp;quot;&amp;quot; &lt;br /&gt;
             qdl-private-data=&amp;quot;&amp;quot; &lt;br /&gt;
             tone=&amp;quot;/usr/local/etc/SystemRingTones/08-Celtrelax.desktop&amp;quot;  /&amp;gt;&lt;br /&gt;
  &amp;lt;/Contacts&amp;gt;&lt;br /&gt;
  &amp;lt;/AddressBook&amp;gt;&lt;br /&gt;
&lt;br /&gt;
UID ist wohl egal, solange sie nicht zweimal vorkommen.&lt;br /&gt;
&lt;br /&gt;
Die Beschränkung auf 500 Adressbucheinträge kann man auch aufheben&lt;br /&gt;
&amp;quot;maxEntries = 500&amp;quot; in der &amp;quot;Contacts.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Kategorien stehen in /user_settings/Categories.xml:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;!DOCTYPE CategoryList&amp;gt;&lt;br /&gt;
  &amp;lt;Categories&amp;gt;&lt;br /&gt;
    &amp;lt;Category id=&amp;quot;-1269431263&amp;quot; name=&amp;quot;_Personal&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;Category id=&amp;quot;-1269431262&amp;quot; name=&amp;quot;_Business&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/Categories&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man einem Kontakt eine bestimmte Kategorie zuordnet, dann wird die ID dieser Kategorie im Attribut &amp;quot;Categories&amp;quot; des Kontakts eingetragen (s.o.). Wenn die Kategorie BUSINESS gewählt wird, steht im Attribut &amp;quot;BUSINESS_CONTACT&amp;quot; eine &amp;quot;1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ein Einrücken der Attribute mit TABs in den Dateien ist übrigens nicht erlaubt!&lt;br /&gt;
&lt;br /&gt;
Die Software des Telefons wertet die XML Datei bei jedem Zugriff neu aus. Es ist also möglich, die Datei im laufendem Betrieb zu ändern (z.B. per Script).&lt;br /&gt;
&lt;br /&gt;
Um VCards in das XML Format zu konvertieren gibts es im Forum folgendes kleines C-Programm: [http://www.mikrocontroller.net/attachment/74583/VCardsToXML.c] [http://www.mikrocontroller.net/attachment/highlight/74583]&lt;br /&gt;
&lt;br /&gt;
==== Fotos &amp;amp; Videoschnappschüsse ====&lt;br /&gt;
&lt;br /&gt;
Alle Bilder die mit der Kamera aufgenommen werden, sowie Schnappschüsse die während eines Videocalls aufgenommen wurden, befinden sich in folgendem Verzeichnis:&lt;br /&gt;
       /user_data/home/Documents&lt;br /&gt;
&lt;br /&gt;
Die Bilder sind dabei nach folgendem Namensschema benannt:&lt;br /&gt;
&lt;br /&gt;
       DD-MM-YYYY-hh:mm:ss.jpg&lt;br /&gt;
&lt;br /&gt;
Tag (DD) und Monat (MM) können auch einstellig sein.&lt;br /&gt;
&lt;br /&gt;
=== Klingeltöne ===&lt;br /&gt;
&lt;br /&gt;
Die Klingeltöne liegen, wie oben beschrieben unter:&lt;br /&gt;
&lt;br /&gt;
/usr/local/etc/SystemRingTones/&lt;br /&gt;
&lt;br /&gt;
Es sind .wav Dateien mit (16Khz, 16Bit, Mono), welche sich z.B. mit MhWaveEdit (Linux/GTK) oder auch Audacity recht komfortabel erzeugen lassen.&lt;br /&gt;
&lt;br /&gt;
Auch .wav Dateien mit 22050Hz werden problemlos abgespielt (ein wenig bessere Qualität als 16000hz) und sind als Klingeltöne nutzbar. Dateien mit 44100Hz spielt es leider nur &#039;ruckelnd&#039; ab (32000Hhz nicht getestet).&lt;br /&gt;
&lt;br /&gt;
Zusätzlich zu den Audio Dateien müssen noch im selben Verzeichnis entsprechende *.desktop dateien angelegt werden, damit alles korrekt ins Menü integriert wird.&lt;br /&gt;
Eine für den fiktiven 16. Klingelton erzeugte Datei &amp;quot;16-Tetris.desktop&amp;quot; könnte den folgenden Inhalt haben:&lt;br /&gt;
&lt;br /&gt;
                 [Desktop Entry]&lt;br /&gt;
                 Categories =&lt;br /&gt;
                 File =16-Tetris.wav&lt;br /&gt;
                 Name[] =16-Tetris&lt;br /&gt;
                 Type = audio/x-wav&lt;br /&gt;
                 [Translation]&lt;br /&gt;
                 File=QtopiaRingTones&lt;br /&gt;
                 Context=16-Tetris&lt;br /&gt;
&lt;br /&gt;
Nach dem Anlegen der Dateien sollte sie dann im Menü auftauchen und auswählbar sein.&lt;br /&gt;
&lt;br /&gt;
=== Systemtöne ===&lt;br /&gt;
&lt;br /&gt;
*Sämtliche Systemtöne liegen unter &#039;&#039;/usr/local/sounds/&#039;&#039; und lassen sich problemlos durch andere Dateien ersetzen.&lt;br /&gt;
*z.B.:&lt;br /&gt;
**&#039;&#039;charge.wav&#039;&#039; - Ton, wenn Gerät in die Basisstation gesetzt wird&lt;br /&gt;
&lt;br /&gt;
=== Timeserver ===&lt;br /&gt;
&lt;br /&gt;
http://www.mikrocontroller.net/topic/170483#1645101&lt;br /&gt;
Unter /usr/local/data steht in der monitor.cfg und monitor_ref_KPN.cfg&lt;br /&gt;
die Adressen der Zeitserver &amp;quot;ntp.xs4all.nl&amp;quot; und &amp;quot;130.142.110.71&amp;quot;. Diese&lt;br /&gt;
könnte man z.B. auf &amp;quot;ptbtime1.ptb.de&amp;quot; und &amp;quot;ptbtime2.ptb.de&amp;quot; ändern.&lt;br /&gt;
&lt;br /&gt;
(http://www.mikrocontroller.net/topic/170483#1649594)&lt;br /&gt;
das telefon benutzt *nicht ntp* sondern das time-protokoll auf port 37 -&lt;br /&gt;
time.fu-berlin.de (bzw. chronos.zedat.fu-berlin.de) kann man als server nehmen.&lt;br /&gt;
&lt;br /&gt;
vi Tipp hilfe:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
vi /usr/local/data/monitor.cfg&lt;br /&gt;
:%s/ntp.xs4all.nl/time.fu-berlin.de/g&lt;br /&gt;
:%s/130.142.110.71/130.133.1.10/g&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aufgefallen ist, dass sich Telefone mit fest eingestellter IP nicht automatisch&lt;br /&gt;
die Uhrzeit abrufen. Stellt man das Telefon auf DHCP, stellt sich die Uhr&lt;br /&gt;
auch ohne Timeserver Modifikation auf die richtige Uhrzeit ein.&lt;br /&gt;
&lt;br /&gt;
Wer lieber einen NTP-Client einsetzen möchte findet unter dem Link für [[#Weitere_Konsolenkommandos]] ein Paket mit ntpd oder auch ntpdate für den schnellen Zeitabgleich via Konsole:&lt;br /&gt;
    ntpdate pool.ntp.org&lt;br /&gt;
&lt;br /&gt;
=== Zusätzliche Software ===&lt;br /&gt;
==== Dropbear (SSH-Server) installieren ====&lt;br /&gt;
&lt;br /&gt;
# Mit telnet auf dem Gerät einloggen&lt;br /&gt;
# folgendes in die Kommandozeile kopieren&lt;br /&gt;
       cd /&lt;br /&gt;
       wget http://www.mikrocontroller.net/attachment/74656/dropbear.tgz&lt;br /&gt;
       tar -xzf dropbear.tgz&lt;br /&gt;
       rm dropbear.tgz&lt;br /&gt;
       cd /etc/rc.d/init.d&lt;br /&gt;
       mv dropbear S90dropbear&lt;br /&gt;
       ./S90dropbear start&lt;br /&gt;
Das Kommando in Zeile 6 (mv ...) ist notwendig damit dropbear bei jedem Reboot automatisch gestartet wird.&lt;br /&gt;
&lt;br /&gt;
Prüfen ob dropbear gestartet ist und läuft:&lt;br /&gt;
  # ps&lt;br /&gt;
  PID  Uid     Stat Command&lt;br /&gt;
  136 root     S    /usr/sbin/dropbear&lt;br /&gt;
&lt;br /&gt;
Bei jedem Login sucht dropbear nach der /var/log/lastlog, daher sollte man abschließend noch ein&lt;br /&gt;
&lt;br /&gt;
       touch /var/log/lastlog&lt;br /&gt;
&lt;br /&gt;
machen, um diese Datei anzulegen. Damit verschwinden auch die entsprechenden Fehlermeldungen im logread.&lt;br /&gt;
&lt;br /&gt;
==== Nano 2.2.3 installieren ====&lt;br /&gt;
&lt;br /&gt;
* Mit telnet auf dem Gerät einloggen&lt;br /&gt;
* folgendes in die Kommandozeile kopieren&lt;br /&gt;
       cd /usr/bin&lt;br /&gt;
       wget http://www.mikrocontroller.net/attachment/74023/nano&lt;br /&gt;
* Mit folgendem Befehl den Editor ausführbar machen:&lt;br /&gt;
       chmod +x /usr/bin/nano&lt;br /&gt;
* Nun ist vi Geschichte ;-)&lt;br /&gt;
&lt;br /&gt;
Ggf. kann der Fehler &amp;quot;Error opening terminal: xterm-color&amp;quot; auftreten wenn nano gestartet wird, in diesem Fall hilft folgendes:&lt;br /&gt;
&lt;br /&gt;
* /root/.bashrc öffnen (mit vi :-)&lt;br /&gt;
* &amp;quot;export TERM=xterm&amp;quot; in die Datei schreiben&lt;br /&gt;
* ausloggen / einloggen&lt;br /&gt;
&lt;br /&gt;
==== OpenVPN 2.0.9 installieren ====&lt;br /&gt;
&lt;br /&gt;
* Mit telnet auf dem Gerät einloggen&lt;br /&gt;
* folgendes in die Kommandozeile kopieren&lt;br /&gt;
       cd /&lt;br /&gt;
       wget http://www.mikrocontroller.net/attachment/74380/openvpn.tar.gz&lt;br /&gt;
       tar -xzf openvpn.tar.gz&lt;br /&gt;
       depmod&lt;br /&gt;
       mknod /dev/net/tun c 10 200&lt;br /&gt;
&lt;br /&gt;
==== OpenVPN 2.1.1 installieren ====&lt;br /&gt;
&lt;br /&gt;
* Mit telnet auf dem Gerät einloggen&lt;br /&gt;
* folgendes in die Kommandozeile kopieren&lt;br /&gt;
       cd /&lt;br /&gt;
       wget http://www.mikrocontroller.net/attachment/74395/openvpn-2.1.1.tar.gz&lt;br /&gt;
       tar -xzf openvpn-2.1.1.tar.gz&lt;br /&gt;
       depmod&lt;br /&gt;
       mknod /dev/net/tun c 10 200&lt;br /&gt;
&lt;br /&gt;
==== Tinc 1.0.12 installieren ====&lt;br /&gt;
&lt;br /&gt;
* Mit telnet auf dem Gerät einloggen&lt;br /&gt;
* folgendes in die Kommandozeile kopieren&lt;br /&gt;
       cd /&lt;br /&gt;
       wget http://www.mikrocontroller.net/attachment/74396/tinc-1.0.12.tar.gz&lt;br /&gt;
       tar -xzf tinc-1.0.12.tar.gz&lt;br /&gt;
       depmod&lt;br /&gt;
       mknod /dev/net/tun c 10 200&lt;br /&gt;
&lt;br /&gt;
==== Weitere Konsolenkommandos ====&lt;br /&gt;
&lt;br /&gt;
Auf http://thinksilicon.de/57/Hacking-the-VP6500.html finden sich einige nützliche Konsolentools. Darunter sind bc, lsof, file, curl, mc (bzw. mcedit), hexedit, mktemp, rsync, tcpdump, crond (mit crontab) und ntpd.&lt;br /&gt;
* Hinweis zu tcpdump; muss folgendermaßen ausgeführt werden:&lt;br /&gt;
       tcpdump -U root&lt;br /&gt;
&lt;br /&gt;
=== simpler WLAN-Switcher ===&lt;br /&gt;
&lt;br /&gt;
Ohne tiefer gehende GUI-Programmiererfahrungen bei Qtopia zu haben, kann man sich mit folgendem WLAN-Switcher behelfen:&lt;br /&gt;
&lt;br /&gt;
Im Script /user_data/prod/config_ats.sh stehen viele Befehle, wie man mittels &#039;&#039;config code&#039;&#039; Einstellungen vorschreiben kann. Dies habe ich mir mit folgenden eigenen Scripten zu nutze gemacht:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/root/switch_wlan.sh&#039;&#039;&#039;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #================================================&lt;br /&gt;
 # WLAN-Switcher&lt;br /&gt;
 #================================================&lt;br /&gt;
 &lt;br /&gt;
 CONFIG_CODE=`cat /user_data/config_code.txt`&lt;br /&gt;
 &lt;br /&gt;
 cp -f /usr/local/data/wpa_supplicant_ref_${CONFIG_CODE}.conf /user_data/wifi/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
* kopiert Anhand des &#039;&#039;config code&#039;&#039;s die wpa_supplicant.conf&lt;br /&gt;
* es muss für jeden &#039;&#039;config code&#039;&#039; eine wpa_supplicant_ref_&amp;lt;&#039;&#039;config code&#039;&#039;&amp;gt;.conf vorhanden sein, am besten dazu die aktuelle /user_data/wifi/wpa_supplicant.conf dorthin kopieren&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/root/set_config_code.sh&#039;&#039;&#039;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 echo &amp;quot;$1&amp;quot; &amp;gt; /user_data/config_code.txt&lt;br /&gt;
&lt;br /&gt;
* schreibt den ersten übergebenen Parameter in die Datei /user_data/config_code.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/usr/local/bin/set2XXX&#039;&#039;&#039;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 /root/set_config_code.sh XXX&lt;br /&gt;
 /root/switch_wlan.sh&lt;br /&gt;
 reboot&lt;br /&gt;
&lt;br /&gt;
* XXX durch den &#039;&#039;config code&#039;&#039; ersetzen&lt;br /&gt;
* Script, welches als Applikation gestartet wird&lt;br /&gt;
* derzeit leider keine &amp;quot;on-the-fly&amp;quot;-Eingabe des &#039;&#039;config code&#039;&#039;s möglich, daher muss für jedes WLAN ein Script vorhanden sein&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;/usr/local/apps/Applications/set2YYY.desktop&#039;&#039;&#039;&lt;br /&gt;
 [Translation]&lt;br /&gt;
 File=QtopiaApplications&lt;br /&gt;
 Context=set2XXX&lt;br /&gt;
 [Desktop Entry]&lt;br /&gt;
 Exec=set2XXX&lt;br /&gt;
 Icon=Camera&lt;br /&gt;
 Type=Application&lt;br /&gt;
 Name[]=Enable YYY&lt;br /&gt;
&lt;br /&gt;
* XXX durch den &#039;&#039;config code&#039;&#039; ersetzen (gleicher Scriptname wie oben)&lt;br /&gt;
* YYY durch einmaligen Namen ersetzen&lt;br /&gt;
* Diese Datei erscheint unter dem Name[] im Applications-Menü&lt;br /&gt;
&lt;br /&gt;
Theoretisch kann man mit dieser Methode auch problemlos zwischen mehreren SIP-Einstellungen und vielen weiteren Telefoneinstellungen umschalten (siehe Dateien in /usr/local/data) - der DemoMode funktioniert nach dem gleichen Prinzip.&lt;br /&gt;
&lt;br /&gt;
== Buildumgebung erstellen ==&lt;br /&gt;
&lt;br /&gt;
Bislang ist die Erstellung von GUI-Applikationen (QTopia) noch nicht auf einfache Weise möglich. Das größte Problem ist, dass der Quellcode der Video-Telefon-Anwendung zum größten Teil zur Verfügung steht. Das Erstellen von Kommandozeilen-Anwendungen geht aber schon problemlos.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
Die verwendete ARM-Entwicklungsumgebung basiert auf gcc. Mittels cygwin kann diese zwar auch als Win32-Anwendungen gebaut werden, dies ist aber in hohem Maß unüblich.&lt;br /&gt;
&lt;br /&gt;
Am besten eine aktuelle Version von Debian oder Ubuntu in &amp;quot;vmware player&amp;quot; oder &amp;quot;virtual box&amp;quot; installieren. Wenn man die virtuelle Maschine nur zum Compilieren verwendet, reicht eine kompakte Kommandozeilen-Version (z.B. Ubuntu Server 9.10). Fertige virtuelle Machinen, im vmware-Marketing-Sprech gerne auch &amp;quot;virtual appliances&amp;quot; genannt, sind reichlich verfügbar (z.B. http://www.vmware.com/appliances/directory/70918).&lt;br /&gt;
&lt;br /&gt;
=== Freetz-Linux ===&lt;br /&gt;
Für Fritzbox-Besitzer besonders geeignet ist das Freetz-linux, welches man im IP-Phone-Forum finden kann (-&amp;gt; http://www.ip-phone-forum.de/showpost.php?p=1400234&amp;amp;postcount=1).&lt;br /&gt;
Dieses kann zum Erstellen von Freetz-Images einerseits und andererseits als Buildumgebung benutzt werden. So spart man sich eine zweite VM.&lt;br /&gt;
&lt;br /&gt;
Die VM selbst braucht nur gestartet werden, den Rest macht man am Besten von seiner gewohnten Umgebung aus.&lt;br /&gt;
Mittels Samba kann einfach per Windowsnetzwerk auf das Home-Verzeichnis zugriffen werden und per SSH kann einfach eine Shell (UTF als Codierung einstellen, dann stimmen auch die Sonderrzeichen) geöffnet werden.&lt;br /&gt;
Es muss sichergestellt werden sein, dass die VM zugriff auf das lokale Netzwerk, sowie das Internet hat (am besten mit einem &#039;ping google.com&#039; überprüfen). Bei mir ging es eigenartiger weise erst, als ich die virtuelle Netzwerkkarte in den VM-Settings auf NAT gestellt habe.&lt;br /&gt;
&lt;br /&gt;
Benutzername und alle Kennwörter sind &#039;freetz&#039;&lt;br /&gt;
&lt;br /&gt;
==== Installation und Test der VP5500 Toolchain ====&lt;br /&gt;
Installation der Buildumgebung:&lt;br /&gt;
  sudo mkdir -p /opt/VP5500/toolchain&lt;br /&gt;
  cd /opt/VP5500/toolchain&lt;br /&gt;
  sudo wget http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2&lt;br /&gt;
  sudo tar xjf arm-linux-gcc-3.3.2.tar.bz2&lt;br /&gt;
  sudo rm arm-linux-gcc-3.3.2.tar.bz2&lt;br /&gt;
  sudo ln -s /opt/VP5500/toolchain/usr/local/arm /usr/local/arm&lt;br /&gt;
&lt;br /&gt;
Nach einem sudo-Kommando muss eventuell das Passwort eingegeben werden, weswegen die Befehle einzeln eingegeben werden sollten (oder man öffnet am Anfang eine sudo shell, dann kann man das auch weglassen.&lt;br /&gt;
&lt;br /&gt;
Test der Buildumgebung:&lt;br /&gt;
  cd ~&lt;br /&gt;
  wget http://www.mikrocontroller.net/attachment/73161/helloworld.tgz&lt;br /&gt;
  tar -xzf helloworld.tgz&lt;br /&gt;
  rm helloworld.tgz&lt;br /&gt;
  cd helloworld&lt;br /&gt;
  make&lt;br /&gt;
Dannach sollte im ~/helloworld verzeichnis ein neues executable liegen, was vom Hostrechner einfach via Netzwerkfreigabe (\\freetz-linux\helloworld) und via WinSCP auf das Telefon kopiert werden kann.&lt;br /&gt;
&lt;br /&gt;
==== Freetz-Linux eigentlicher Anwendungszweck ====&lt;br /&gt;
wer das Ding auch zum Bauen von Freetz-Images zum Erweitern seiner Fritz-box benutzen will muss sich zuerst ein Freetz runterladen.&lt;br /&gt;
Folgende Schritte machen dies:&lt;br /&gt;
 cd ~&lt;br /&gt;
 svn checkout  http://svn.freetz.org/trunk  freetz-trunk &lt;br /&gt;
Dannach gibts im Home-Verzeichnis das aktuelle Freetz im Verzeichnis &#039;freetz-trunk&#039;.&lt;br /&gt;
Konfigurieren mit &#039;make menuconfig&#039; und Image erstellen mit &#039;make&#039;.&lt;br /&gt;
Wenn alles gut geht kann man das image dann vom Hostrechner aus der Windowsfreigabe &#039;\\freetz-linux\freetz-trunk\images&#039; rausholen und auf die Box spielen.&lt;br /&gt;
&lt;br /&gt;
Für detailiertere Infos bitte direkt bei Freetz nachschlagen:&lt;br /&gt;
http://trac.freetz.org/&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
Die bisher bekannten, mit VP5500 und VP6500 ausgelieferten Software-Versionen, basieren auf einer etwas älteren &amp;quot;gcc 3.3.2-ARM-Toolchain&amp;quot;. Eine passende Toolchain für ein x86-basiertes Entwicklungssystem ist unter http://www.handhelds.org/download/projects/toolchain/arm-linux-gcc-3.3.2.tar.bz2 zu finden.&lt;br /&gt;
&lt;br /&gt;
Unter Debian-basierten Linux-Distros kann dieses Archiv z.B. nach /opt/VP5500/toolchain entpackt werden (einige der Makefiles im Forum setzen diesen Speicherort voraus). Es ist jedoch zu beachten, dass diese Version der Toolchain auch über den Pfad /usr/local zugänglich sein sollte. Dazu kann mittels &amp;quot;ln -s /opt/VP5500/toolchain/usr/local/arm arm&amp;quot; in /usr/local ein Symlink auf den eigentlichen Speicherort gesetzt werden.&lt;br /&gt;
&lt;br /&gt;
==== Hello World ====&lt;br /&gt;
Christian Klippel (ChrisK) hat unter http://www.mikrocontroller.net/attachment/73161/helloworld.tgz ein &amp;quot;Hello World&amp;quot; bereitgestellt, mit dem sich die Toolchain testen lässt und dessen &amp;quot;Makefile&amp;quot; und &amp;quot;Makefile.local&amp;quot; als Grundlage für eigene Versuche dienen kann.&lt;br /&gt;
&lt;br /&gt;
Das Archiv wird in ein lokals Verzeichnis (z.b. ~/helloworld) entpackt und dort durch Eingabe von &amp;quot;make&amp;quot; compiliert.&lt;br /&gt;
     &lt;br /&gt;
Zum Testen muss das Binary natürlich auf das Zielsystem übertragen werden. Wenn auf dem Entwicklungssystem ein http-Server oder ein ssh-Server läuft, kann man das Binary einfach in ein darüber zugängliches Verzeichnis kopieren es anschließend in einer telnet-Sitzung vom Verzeichnis /tmp aus mittels wget oder scp laden. Zum Test muss die Datei mittels &amp;quot;chmod +x helloworld&amp;quot; ausführbar gemacht werden, bevor sie mit &amp;quot;./helloworld&amp;quot; ausgeführt werden kann.&lt;br /&gt;
&lt;br /&gt;
Mittels eines ftpd (z.B. http://www.mikrocontroller.net/attachment/73780/troll-ftpd_1.28-cg2_arm.tgz) oder sshd (z.B. Dropbear von http://vp6500.bd8.nl/) auf dem Zielsystem, kann man das Kopieren auch vom Entwicklungssystem aus durchführen.&lt;br /&gt;
&lt;br /&gt;
==== Anpassen kleinerer Konsolen-Tools auf Cross-Compilierung ====&lt;br /&gt;
Die Makefiles von kleineren Projekten sind häufig nicht so sauber aufgebaut wie das helloworld-Beispiel, so dass man sie leichter ersetzt, als ändert. Am Beispiel von micro_httpd (http://www.acme.com/software/micro_httpd/ , http://www.mikrocontroller.net/attachment/73175/micro_httpd.tar.gz) kann leicht nachvollzogen werden, wie man den modularen Ansatz vom &amp;quot;Hello World&amp;quot;-Beispiel übernehmen kann (Makefile -&amp;gt; Makefile + Makefile.local).&lt;br /&gt;
&lt;br /&gt;
= Sonstiges =&lt;br /&gt;
&lt;br /&gt;
== Hardware  + Software Versionen ==&lt;br /&gt;
&lt;br /&gt;
Listet mal eure Hardware- und Softwareversion aus dem &#039;&#039;&#039;Applications&#039;&#039;&#039; =&amp;gt; &#039;&#039;&#039;System Info&#039;&#039;&#039; Menü auf, wenn sie hier noch nicht stehen!&lt;br /&gt;
&lt;br /&gt;
=== VP5500 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Version             !! Date     !! Software Version   &lt;br /&gt;
|- &lt;br /&gt;
| ind5                         ||0645      || 4.20&lt;br /&gt;
|- &lt;br /&gt;
| ind5                         ||0647      || 4.20&lt;br /&gt;
|-&lt;br /&gt;
| ind5                         ||0648      || 4.20&lt;br /&gt;
|-&lt;br /&gt;
| ind5                         ||0649      || 4.20&lt;br /&gt;
|-&lt;br /&gt;
| ind5                         ||0702      || 4.20&lt;br /&gt;
|-&lt;br /&gt;
| ind5                         ||0703      || 4.20&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== VP6500 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Hardware Version             !! Date     !! Software Version   &lt;br /&gt;
|-&lt;br /&gt;
| ind3-v2                      || 0711     || 3.22&lt;br /&gt;
|-&lt;br /&gt;
| ind3-v2                      || 0713     || 3.22&lt;br /&gt;
|- &lt;br /&gt;
| ind3-v2                      || 0716     || 3.22&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
I&#039;d like to open a business account http://www.cfnmtoob.com/profile/eeseorirury/ 12 y o lollitas  he pounding the shit outta her pussy damn he has her in numerous positions i wish i could fuck him&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65025</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65025"/>
		<updated>2012-03-17T11:32:33Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Änderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung ==&lt;br /&gt;
Sammelbestellung abgeschlossen. Es sind noch unbestückte Leiterplatten vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Wer eine davon haben möchte, kann sich per PN bei dem User [http://www.mikrocontroller.net/user/show/MockUp MockUp] melden.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 17.März 2012&#039;&#039;&#039;&lt;br /&gt;
* Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot; hinzugefügt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65024</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65024"/>
		<updated>2012-03-17T11:30:08Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Sammelbestellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung ==&lt;br /&gt;
Sammelbestellung abgeschlossen. Es sind noch unbestückte Leiterplatten vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Wer eine davon haben möchte, kann sich per PN bei dem User [http://www.mikrocontroller.net/user/show/MockUp MockUp] melden.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65023</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65023"/>
		<updated>2012-03-17T11:29:51Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Sammelbestellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung ==&lt;br /&gt;
Sammelbestellung abgeschlossen. Es sind noch Leiterplatten vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Wer eine davon haben möchte, kann sich per PN bei dem User [http://www.mikrocontroller.net/user/show/MockUp MockUp] melden.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65022</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65022"/>
		<updated>2012-03-17T11:29:24Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Probleme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Probleme ===&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung ==&lt;br /&gt;
Sammelbestellung abgeschlossen. Es sind noch Leiterplatten vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Wer eine davon haben möchte, kann sich per PN bei dem User [http://www.mikrocontroller.net/user/show/MockUp MockUp] melden.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei genug Interessenten wäre es Möglich eine Zweite Sammelbestellung zu organisieren. Ich mach hier einfach mal ne Liste. Interessenten könnten sich mit der Anzahl an Strichen hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Interessenten:&lt;br /&gt;
&lt;br /&gt;
borism |, nicmic |, klubi |, mcfloppy |, Rasieel, xgcfx |&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65021</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65021"/>
		<updated>2012-03-17T11:29:04Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Sammelbestellung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65020</id>
		<title>Xilinx USB-JTAG-Adapter</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Xilinx_USB-JTAG-Adapter&amp;diff=65020"/>
		<updated>2012-03-17T11:27:22Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Programmierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Xilinx USB-JTAG-Adapter==&lt;br /&gt;
Dies ist ein Nachbau des Xilinx Platform Cable USB I (DLC9). Er besitzt einen fast gleichen Schaltplan (ausgenommen die Spannungsversorgung) wie das Original und ist somit zu 100% kompatibel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Bestückte Platine &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:Platine_best_ckt.jpg|332px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; Fertiger JTAG-Adapter in einem Reichelt Gehäuse &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:MockUpsDLC9.jpg|500px]]&lt;br /&gt;
&lt;br /&gt;
== Schaltpläne ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet01.png|400px]]&lt;br /&gt;
[[Bild:Sheet02.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Bild:Sheet03.png|400px]]&lt;br /&gt;
&lt;br /&gt;
== Pinbelegung des Programmiersteckers ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;JTAG&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || TCK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || NC *&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Serial&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Signal || Pin || Signal&lt;br /&gt;
|-&lt;br /&gt;
| 1  || GND || 2  || VREF&lt;br /&gt;
|-&lt;br /&gt;
| 3  || GND  || 4  || PROG&lt;br /&gt;
|-&lt;br /&gt;
| 5  || GND  || 6  || CCLK&lt;br /&gt;
|-&lt;br /&gt;
| 7  || GND  || 8  || DONE&lt;br /&gt;
|-&lt;br /&gt;
| 9  || GND  || 10  || DIN&lt;br /&gt;
|-&lt;br /&gt;
| 11  || GND  || 12  || NC *&lt;br /&gt;
|-&lt;br /&gt;
| 13  || GND  || 14  || INIT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; * Not Connected / Nicht Angeschlossen&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestückungsplan ==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Bestückungsplan_top.png|400px]]&lt;br /&gt;
[[Bild:Bestückungsplan_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Widerstände&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R32  || 10 || SMD2010&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R34, R37, R40, R43  || 30 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R15  || 270 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R14  || 360 || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 4 || R27, R28, R29, R55  || 2,2K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 23 || R1-R12, R26, R30, R31, R47, R48, R53, R54, R58, R59, R64, R65  || 10K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R46  || 15K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 13 || R13, R16, R33, R35, R36, R38, R39, R41, R42, R50, R56, R57, R63 || 20K&lt;br /&gt;
||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R62  || 47,5K oder 200K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R61  || 64,9K oder 270K**||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R45, R52  || 100K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R44, R51  || 300K ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R49, R60 || 1M ||SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 2 || R17, R18 || 0 * ||SMD0805&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Bestückung je nach verwendeten EEPROM (Siehe Schaltplan Seite 2)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Könnte auch verwendet werden, da es das gleiche Teilerverhältnis ergibt, aber besser beschafbar&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Kondensatoren&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C1, C2  || 11p || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C25  || 10n || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 22 || C3, C6-C24, C30, C31  || 100n || SMD0603&lt;br /&gt;
|-&lt;br /&gt;
| 3 || C26, C27, C29  || 1µ|| CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || C4, C28  || 4,7µ || CPOL-EUB&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C5  || 10µ ||CPOL-EUB&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ICs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC1 || CY7C68013A || QFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC2 || XC2C256|| VQFP100&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC3 || 24LCxxSN || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC4 || DS2411P *|| TSOC6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC14 || DS2411R * || SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 4 || IC5-IC8  || NC7SZ125 || SC70-5&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC9  || LT1719S6 || SOT23-6&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC10  || LM393D || SO08&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC11  || NC7SZ66 || SC70-5/SOT23-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC12  || TPS71718DCK|| SC70-5L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || IC13  || MCP1825S-33 oder MIC2920A-3.3V|| SOT223&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach Verfügbarkeit bestücken. Falls bestückt können mehrere JTAG-Kabel gleichzeitig benutzt werden.&amp;lt;/pre&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Rest&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Menge || Bauteil || Wert || Größe&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D1 || 1SMA5915BT3G || SMB&lt;br /&gt;
|-&lt;br /&gt;
| 2 || D2, D3 || BAT54 || SOD323-W&lt;br /&gt;
|-&lt;br /&gt;
| 1 || D4, D5 || DUO-LED * || DUOLED5MM&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED1 || rot * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || LED2 || grün * || SMD0805&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q1  || Quarz 24MHz || HC49U-V&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Q2, Q4  || BSS138|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Q3  || BC856BSMD|| SOT23&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SV1, SV2|| abgewinkelter 2x7 Pinheader ** || ML14L&lt;br /&gt;
|-&lt;br /&gt;
| 1 || JP3  || Pinheader 1x2 || JP1Q&lt;br /&gt;
|-&lt;br /&gt;
| 1 || X1|| USB-Buchse Type-B|| LUMBERG241103&lt;br /&gt;
|-&lt;br /&gt;
| 1 || - || Isolierscheibe für Quarz ||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;pre&amp;gt; * Je nach verwendetem Gehäuse LED1 und LED2 oder D4 oder D5 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt; ** Je nach verwendetem Gehäuse SV1 oder SV2 bestücken&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Layout ==&lt;br /&gt;
=== Nachbau Version 1.04 ===&lt;br /&gt;
Diese Version wurde auch in der Sammelbestellung angeboten.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Layout_top.png|400px]]&lt;br /&gt;
[[Bild:Layout_bottom.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xilinx-USB-Kabel_V1_04.zip|Eagle Platinen Layout V1.04]]&lt;br /&gt;
&lt;br /&gt;
=== Originales Layout ===&lt;br /&gt;
Bilder des Originals&lt;br /&gt;
&lt;br /&gt;
[[Bild:Orginal_Layout_Top1.jpg|400px]]&lt;br /&gt;
[[Bild:Orginal_Layout_Top2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== Funktionserklärung &amp;quot;Programmierung der Firmware&amp;quot;==&lt;br /&gt;
Der Cypress USB-Kontroller bekommt sein Programm immer über das USB-Interface von dem USB-Treiber. Dieses wird also nicht fest in dem Chip gespeichert. Wir programmieren den EPROM (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Programmierung hier]) über das Herstellerprogramm des Cypress-Chips mit der richtigen USB-Kennung (Produkt und Vendor-ID), Damit Windows weiß, welcher Treiber verwenden werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Programmierung des CPLDs erfolgt dann direkt über das freie ISE WebPack von Xilinx. Normalerweise sollte ISE den leeren CPLD erkennen. Ist dies nicht der Fall (weil es denkt, das eine aktuellere Version im CPLD vorhanden ist), dann muss der Software explizit gesagt werden, dass sie den CPLD ohne Überprüfung neu programmieren soll (Siehe [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme hier]).&lt;br /&gt;
&lt;br /&gt;
== Programmierung ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:TreiberInstallation.png|miniatur|Treiber Installation]]&lt;br /&gt;
[[Datei:Gerätemanager.png|miniatur|Gerätemanager]]&lt;br /&gt;
Das für die Programmierung notwendige Programm kann von hier herrunter geladen werden: http://www.mikrocontroller.net/topic/168006#1610155&lt;br /&gt;
&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; darf nicht gesteckt sein&lt;br /&gt;
* USB-JTAG-Adapter an den USB-Port anstecken (vorher mit einem stabilisierten 5V Netzeteil überprüfen, dass auch keine Kurzschlüsse vorhanden sind). Ansonsten könnte der USB-Port kaputt gehen. &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Also Achtung!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt; &lt;br /&gt;
* Den in dem Archiv befindlichen Treiber installieren&lt;br /&gt;
* Danach sollte im Gerätemanager, unter USB-Controller, der Eintrag &#039;&#039;&#039;Cypress USB Generic Driver&#039;&#039;&#039; vorhanden sein&lt;br /&gt;
* Jumper &#039;&#039;&#039;JP3&#039;&#039;&#039; wieder drauf stecken (ansonsten kann der EEPROM nicht beschrieben werden)&lt;br /&gt;
* Das im Archiv befindliche Programm &#039;&#039;&#039;FxEEPROM.exe&#039;&#039;&#039; starten&lt;br /&gt;
* Je nach verwendetem EEPROM, entweder &#039;&#039;&#039;Program Small EEPROM&#039;&#039;&#039; oder &#039;&#039;&#039;Program Large EEPROM&#039;&#039;&#039; verwenden&lt;br /&gt;
* Die Datei &#039;&#039;&#039;xilinx_xup.iic&#039;&#039;&#039; auswählen, die im Archiv enthalten ist&lt;br /&gt;
* Nach der Programmierung das Kabel aus dem USB-Port ziehen und wieder hinein stecken. Der Adapter sollte nun als Xilinx USB-JTAG-Adapter erkannt werden.&lt;br /&gt;
* Die Treiber von Xilinx installieren. Meiner Meinung nach 2 Stück. Der erste Treiber ist für den Bootloader der Firmware und der zweite ist der eigentliche Treiber für das Kabel.&lt;br /&gt;
* Impact starten&lt;br /&gt;
* Impact sollte nun erkennen, dass die Firmware auf dem Adapter aktualisiert werden muss (Es ist ja auch noch keine Firmware im CPLD ;-) ). Hat Impact fälschlicherweise eine Firmware erkannt, muss wie unter [http://www.mikrocontroller.net/articles/Xilinx_USB-JTAG-Adapter#Probleme Probleme] vorgegangen werden.&lt;br /&gt;
* Firmware aktualisieren&lt;br /&gt;
* freuen&lt;br /&gt;
* &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Steckbrücke JP3 muss für die korrekte Funktion gesteckt bleiben!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sammelbestellung ==&lt;br /&gt;
Sammelbestellung abgeschlossen. Es sind noch Leiterplatten vorhanden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Wer eine davon haben möchte, kann sich per PN bei dem User [http://www.mikrocontroller.net/user/show/MockUp MockUp] melden.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei genug Interessenten wäre es Möglich eine Zweite Sammelbestellung zu organisieren. Ich mach hier einfach mal ne Liste. Interessenten könnten sich mit der Anzahl an Strichen hinzufügen.&lt;br /&gt;
&lt;br /&gt;
Interessenten:&lt;br /&gt;
&lt;br /&gt;
borism |, nicmic |, klubi |, mcfloppy |, Rasieel, xgcfx |&lt;br /&gt;
&lt;br /&gt;
== Probleme ==&lt;br /&gt;
&#039;&#039;&#039; CPLD wurde nicht richtig programmiert &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. Open a DOS shell and set the environment variable by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=TRUE &lt;br /&gt;
&lt;br /&gt;
2. Start iMPACT by entering impact in the DOS shell. &lt;br /&gt;
&lt;br /&gt;
3. Select Xilinx USB Cable from the Cable Communication Setup dialog box and wait for the update to be completed.&lt;br /&gt;
&lt;br /&gt;
4. Exit iMPACT.&lt;br /&gt;
&lt;br /&gt;
5. Clear the environment variable in the DOS shell by entering: SET XIL_IMPACT_ENV_USB2_FORCE_CPLD_UPDATE=&lt;br /&gt;
&lt;br /&gt;
Impact guckt wohl nur ob die ausgelesene ID größer der ID des PLD Files&lt;br /&gt;
ist und möchte dann nicht upgraden.&lt;br /&gt;
&lt;br /&gt;
== Programmieradapter unter Linux ==&lt;br /&gt;
Für die Linuxbenutzer ist [http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux hier] eine Anleitung zum Einrichten und installieren von ISE und dem USB-Kabel zu finden.&lt;br /&gt;
&lt;br /&gt;
http://george-smart.co.uk/wiki/Xilinx_JTAG_Linux&lt;br /&gt;
&lt;br /&gt;
== Änderungen ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 14.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM geändert, dass auch größere verwendet werden können&lt;br /&gt;
* Platinengröße auf 51x100mm geändert, damit es in das Reicheltgehäuse passt USB-Buchse sowie ISP-Stecker kuckt etwas herraus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 16.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* EEPROM Jumper durch Widerstände ersetzt&lt;br /&gt;
* R44 und R51 auf 300k vereinfacht&lt;br /&gt;
* R45 und R52 auf 100k vereinfacht&lt;br /&gt;
* R27 und R55 auf 2,2k vereinfacht&lt;br /&gt;
* R61 auf 270k verändert&lt;br /&gt;
* R62 auf 200k verändert&lt;br /&gt;
* C4 auf 4,7µF verändert&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 23.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Fehler im Schaltplan bereinigt&lt;br /&gt;
* Signal INIT_INT und INIT_B_INT am CPLD getauscht&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 25.Januar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Breite auf 51mm geändert&lt;br /&gt;
* Länge auf 109mm geändert, von USB-Buchse bis JTAG-Stecker 113mm lang für 110mm langes Gehäuse&lt;br /&gt;
* Bei verwendung des Reicheltgehäuses mit 100mm kann die Platine gekürtzt werden. Dazu einfach bis zur Massefläche absägen/feilen. Deshalb auch die LED und der ISP-Stecker 2mal. Die USB-Buchse sollte dann Plan abschließen und der JTAG-Stecker schaut dann 1,5-2mm herraus.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 02.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* kleine Änderungen im Layout&lt;br /&gt;
* Vergrößerung der Namen der Bauteile im Bestückungslayer. Diese waren zu klein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; 26.Februar 2010 &#039;&#039;&#039;&lt;br /&gt;
* Artikel erstellt&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/168006#new Sammelbestellung auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.xilinx.com/support/documentation/data_sheets/ds300.pdf Dokumentation von Xilinx zum Platform Cable I]&lt;br /&gt;
* [http://www.xilinx.com/support/answers/33028.htm Erste Veröffentlichung des Schaltplans zwischen dem Cypress FX2 und dem CPLD]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/142358#1365566 Außenbeschaltung des Platform Cable I]&lt;br /&gt;
[[Category:FPGA und Co]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=I%C2%B2C&amp;diff=63555</id>
		<title>I²C</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=I%C2%B2C&amp;diff=63555"/>
		<updated>2012-01-26T19:35:57Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Galvanische Trennung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;I²C&#039;&#039;&#039; ist ein synchroner serieller Zweidraht-[[Bus]] (eine Daten- und eine Taktleitung), der für die Kommunikation zwischen [[IC]]s über kleine Distanzen geeignet ist. Entwickelt wurde er Anfang der 80er Jahre von Philips.&lt;br /&gt;
Gesprochen &amp;quot;I quadrat C&amp;quot; steht für IIC = Inter [[IC]] Bus. Aus Lizenzgründen heißt der I²C Bus bei manchen Herstellern auch &#039;&#039;&#039;TWI&#039;&#039;&#039;, two wire interface.&lt;br /&gt;
&lt;br /&gt;
== I2C ==&lt;br /&gt;
In einem I²C-Bus gibt es mindestens einen Master mit bis zu 127 Slaves und einen Broadcast Kanal. Ein I²C-Bus mit mehreren Mastern wird als &amp;quot;Multi-Master-Bus&amp;quot; bezeichnet.&lt;br /&gt;
Der (oder die) Master sprechen die Slaves an; ein Slave kann NIE selbstständig Daten senden. Dazu übernimmt der Master, der Daten senden oder empfangen möchte, den Bus und gibt die (7-bit- bzw. 10-bit-)Adresse des Slaves aus, mit dem er kommunizieren möchte. Nach der Adresse teilt der Master dem entsprechenden Slave mit, ob er Daten senden oder empfangen möchte. Danach werden die eigentlichen Daten (entweder vom Master oder Slave) auf den Bus gelegt. Hat der Master den Lese- oder Schreibvorgang abgeschlossen, so gibt er den Bus wieder frei.&lt;br /&gt;
Sofern mehrere Master vorhanden sind, stellt ein Protokoll sicher, dass sich diese nicht gegenseitig stören.&lt;br /&gt;
&lt;br /&gt;
=== I2C - Übertragungsraten  ===&lt;br /&gt;
Die Übertragungsrate beträgt beim standard mode bis zu 100 kbit/s, beim fast mode bis zu 400 kbit/s und beim high-speed mode bis zu 3,4 MBit/s. Falls die Taktrate für einen Slave zu hoch ist, kann er die Clock-Leitung auf Null ziehen und die Übertragung damit verlangsamen (sog. Clock Stretching). Dies ist auf Bit- wie auf Byte-Ebene möglich; ersteres allerdings nicht im high-speed mode.&lt;br /&gt;
Um längere Übertragungswege zu realisieren, kann man die Taktrate fast beliebig vermindern (einige Bausteine erzeugen aber irgendwann ein Time-Out). Mit einer Taktfrequenz von nur 5 kbit/s können dann durchaus mehrere Meter überbrückt werden.&lt;br /&gt;
&lt;br /&gt;
Im PC wird ein dem I²C-Bus sehr ähnliches System benutzt, um z.&amp;amp;nbsp;B. die Daten eines [[SDRAM]]-Modules auszulesen. Dieser nennt sich [[SMBus]] (System Management Bus).&lt;br /&gt;
&lt;br /&gt;
Erfahrungen mit den Atmegas (gemessene I2C-Taktfrequenzen):&lt;br /&gt;
* 16,000MHz - schafft sauber bis zu 700KHz&lt;br /&gt;
* 18,432MHz - schafft sauber bis zu 950KHz&lt;br /&gt;
&lt;br /&gt;
Selbst unter schlechten Bedingungen wie...&lt;br /&gt;
* 50cm 6-adriges Spiralkabel, frei schwingend verbaut in einem Rennwagen als Verbindung zwischen Lenkraddisplay und Amaturenbrett&lt;br /&gt;
* Nähe zu nicht geschirmten Leitungen mit 12V, GND und 5V PWM zum Dimmen von LEDs&lt;br /&gt;
* grausamen Umgebungsbedingungen, Fahrten im Regen, Schnee oder bei glühender Sonne und gefühlten 100° C ;-) auf der Rennstrecke.&lt;br /&gt;
hat der Bus ohne Probleme funktioniert.&lt;br /&gt;
&lt;br /&gt;
=== Bausteine ===&lt;br /&gt;
&lt;br /&gt;
Neben Mikrocontrollern gibt es eine Reihe von Peripheriebausteinen, die per I²C angeschlossen werden können. Eine gute Anlaufstelle bei der Suche ist die unten angegebene Seite des &amp;quot;Erfinders&amp;quot; Philips, heute als [http://www.nxp.com NXP] bekannt.&lt;br /&gt;
&lt;br /&gt;
*serielle [[Speicher#EEPROM | EEPROM]]s &lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?text=24C01&amp;amp;action=Search 24Cxx]&lt;br /&gt;
** [http://ics.nxp.com/products/pcf/seeproms/ PCF85xx von NXP, 256-2048 Byte]&lt;br /&gt;
&lt;br /&gt;
*I/O-Portexpander&lt;br /&gt;
** [[Port-Expander_PCF8574|PCF8574]]&lt;br /&gt;
** [http://www.mikrocontroller.net/part/MCP23008 MCP23008] (8-bit) von Microchip&lt;br /&gt;
** [http://www.mikrocontroller.net/part/MCP23017 MCP23017](16-bit) von Microchip&lt;br /&gt;
&lt;br /&gt;
* I2C MUX, zum Anschluss von ICs mit gleicher, fester Adresse&lt;br /&gt;
** [http://www.datasheetcatalog.org/cgi-bin/helo.pl?field=Nume&amp;amp;type=C&amp;amp;text=PCA9545A&amp;amp;producedby=&amp;amp;action=Search PCA9545A]&lt;br /&gt;
&lt;br /&gt;
* [[AD-Wandler]]&lt;br /&gt;
** [http://www.mikrocontroller.net/topic/182614 12x12 Bit ADC MAX1238]&lt;br /&gt;
** [http://www.mikrocontroller.net/topic/182614 12x10 Bit ADC MAX1138]&lt;br /&gt;
** [http://www.maxim-ic.com/datasheet/index.mvp/id/1890 MAX127 und MAX128 von Maxim, 12bit x8, PDIP24+SSOP28]&lt;br /&gt;
** [http://www.jtronics.de/platinen.html 12x8  Bit ADC MAX1038]&lt;br /&gt;
&lt;br /&gt;
* [[DA-Wandler]]&lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?field=Nume&amp;amp;type=C&amp;amp;text=TDA8444&amp;amp;producedby=&amp;amp;action=Search TDA8444, 8x6Bit]&lt;br /&gt;
&lt;br /&gt;
* Uhrenbausteine&lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?field=Nume&amp;amp;type=C&amp;amp;text=PCF8583&amp;amp;producedby=&amp;amp;action=Search PCF8583, mit 256 Bytes RAM]&lt;br /&gt;
** DS1307&lt;br /&gt;
&lt;br /&gt;
* [[LCD]]-Treiber&lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?field=Nume&amp;amp;type=C&amp;amp;text=PCF8577&amp;amp;producedby=&amp;amp;action=Search PCF8577, 2x32 Segmente]&lt;br /&gt;
&lt;br /&gt;
* [[Temperatursensor|Temperatursensoren]]&lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?text=DS1621&amp;amp;action=Search DS1621]&lt;br /&gt;
** [http://www.datasheetcatalog.net/cgi-bin/helo.pl?text=lm75&amp;amp;action=Search LM75]&lt;br /&gt;
** [http://www.sensirion.com/en/pdf/product_information/Datasheet-humidity-sensor-SHT21.pdf SHT21]&lt;br /&gt;
** TMP101 von TexasInstruments&lt;br /&gt;
** TMP175 von TI (mehr als 8 Bausteine im gleichen Bus möglich)&lt;br /&gt;
&lt;br /&gt;
* Drucksensoren&lt;br /&gt;
** SMD500&lt;br /&gt;
** BMP085&lt;br /&gt;
&lt;br /&gt;
* Beschleunigungssensor&lt;br /&gt;
** [http://www.mikrocontroller.net/articles/BMA020 BMA020]&lt;br /&gt;
&lt;br /&gt;
=== Galvanische Trennung ===&lt;br /&gt;
* http://www.analog.com/static/imported-files/application_notes/AN_913.pdf&lt;br /&gt;
* http://www.analog.com/en/interface/digital-isolators/products/index.html#Isolated_I2C_Isolators&lt;br /&gt;
* http://www.silabs.com/Support%20Documents/TechnicalDocs/Si840x.pdf&lt;br /&gt;
* http://www.silabs.com/applications/industrial/Pages/i2c-isolation.aspx&lt;br /&gt;
* http://www.mikrocontroller.net/attachment/5670/Galvanische_Trennung_fuer_I2C-Bus.pdf&lt;br /&gt;
* http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/frequently-asked-questions/i2c-faq.html&lt;br /&gt;
* http://www.mikrocontroller.net/topic/17425#125464&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[AT91-TWI]]&lt;br /&gt;
* [[AVR TWI]]&lt;br /&gt;
* [[I2C als Hausbus]]&lt;br /&gt;
* Beitrag zu [http://www.mikrocontroller.net/topic/181115#1748880 I2C-Adressen] im Forum&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://ics.nxp.com/interface/ NXP (ehemals Philips) Produktseite]&lt;br /&gt;
* [http://www.nxp.com/acrobat/usermanuals/UM10204_3.pdf I2C Spezifikation 3.0]&lt;br /&gt;
* [http://www.i2c-bus.org I²C FAQ, Einführung, Hintergrundinformationen]&lt;br /&gt;
* [http://www.robotikhardware.de/download/rn_pc_i2c.pdf robotikhardware.de]&lt;br /&gt;
&lt;br /&gt;
=== Bibliotheken ===&lt;br /&gt;
* [http://www.jtronics.de/avr-projekte.html AVR TWI Slave]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/235733#2398750 TWI MASTER in ASM]&lt;br /&gt;
&lt;br /&gt;
===I²C-Interface===&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/155136#1462320 Beitrag &amp;quot;i2c usb interface&amp;quot;] (Linux)&lt;br /&gt;
* [http://sprut.de/electronic/pic/projekte/usb4all/usb4all.htm USB4ALL bei sprut.de] universeller USB-Baustein, auch für I2C&lt;br /&gt;
&lt;br /&gt;
===I²C-Monitor===&lt;br /&gt;
*http://realterm.sourceforge.net/#I2C%20Bus&lt;br /&gt;
*http://www.avrfreaks.net/index.php?module=FreaksTools&amp;amp;func=viewItem&amp;amp;item_id=411&lt;br /&gt;
* [http://www.telos.info/ConniiMM20 Connii MM 2.0 - I²C Monitor with USB Interface]&lt;br /&gt;
* [http://www.telos.info/traciixl20 Tracii XL - High-End I²C Monitor]&lt;br /&gt;
*http://i2cchip.com/&lt;br /&gt;
* [http://www.ullihome.de/index.php/Hauptseite#USB_AVR-Lab I2C Logger Firmware für USB AVR-ISP]&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/41535 I2C Monitor mit Mega8 (Firmware)]&lt;br /&gt;
* [http://warmcat.com/milksop/cheapi2c.html Cheapi2c] by Numbnut (Andy Green) uses your PC CPU (Linux only!) and printer port to perform realtime snooping of a standard 100kHz I2C bus with 100% capture.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/103600#905495 I2C (TWI) Sniffer]. Basierend auf einem ATtiny85 mit Ausgabe auf RS232 (C und ASM).&lt;br /&gt;
* [http://en.radzio.dxp.pl/i2c-sniffer/ I2C/TWI bus sniffer/analyzer] (ATTiny2313 @ 20 MHz und USB über FTDI FT245RL oder UM245R)&lt;br /&gt;
* [http://www.i2cchip.com/start_bit_detector1.jpg I2C Startbit-Detector] auf [http://www.i2cchip.com/ www.i2cchip.com]&lt;br /&gt;
* [http://www.harbaum.org/till/i2c_tiny_usb/index.shtml i2c-tiny-usb open source/open hardware zum Auslesen mit einem PC]&lt;br /&gt;
&lt;br /&gt;
[[Category:I2C| ]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32F10x_Standard_Peripherals_Library&amp;diff=63066</id>
		<title>STM32F10x Standard Peripherals Library</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32F10x_Standard_Peripherals_Library&amp;diff=63066"/>
		<updated>2012-01-04T13:14:21Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Initialisierung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Allgemeines=&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;STM32F10x Standard Peripherals Library&#039;&#039;  ist eine umfangreiche komfortable C-Bibliothek, die den Zugriff auf alle Funktionen der &#039;&#039;&#039;STM32F10x&#039;&#039;&#039; Familie erlaubt. Dabei ist für die verschiedenen Peripheriekomponenten jeweils ein eigenes Modul verfügbar.&lt;br /&gt;
&lt;br /&gt;
Die Bibliothek kann hier bei ST kostenlos heruntergeladen werden [http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip download]. In dem Archiv ist die ‎STM32F10x Standard Peripherals Library. Zu jeder Peripherie gibt es diverse Beispiele und eine Beschreibung als CHM Datei &amp;quot;stm32f10x_stdperiph_lib_um.chm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor Ihr lange sucht, die USB-Schnittstelle ist nicht in der &#039;&#039;STM32F10x Standard Peripherals Library&#039;&#039; enthalten. Die hierfür verfügbare Firmware sowie Beispielcode befindet sich in der [[STM32_USB-FS-Device_Lib]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
Die notwendigen Informationen, um die Funktionen der Standard Peripherals Library zu verstehen, muss man sich leider aus verschiedenen Quellen zusammensuchen. Daher soll mit diesem Artikel versucht werden, deren Benutzung für die verschiedenen Peripheriekomponenten zu erläutern.&lt;br /&gt;
&lt;br /&gt;
Leider beziehen sich die von ST gelieferten Beispiele sehr auf die von ST verfügbaren Evalboards und der Code wimmelt von #defines, so dass man sich erst mühsam durchhangeln muss um zu verstehen, was da eigentlich passiert. Dies geht zwar durch die gute Verlinkung in der Hilfsdatei ganz gut, erschwert aber den Einstieg unnötig. &lt;br /&gt;
&lt;br /&gt;
In diesem Artikel soll daher die Anwendung &#039;&#039;bare bones&#039;&#039; ähnlich den Beispielen in den AVR Datenblättern erfolgen.&lt;br /&gt;
Wo nötig, werden die zum Verständnis relevanten Ausschnitte des Reference Manual [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/CD00171190.pdf RM0008] in den Artikel kopiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(Bevor hier die Copyright Discussion entbrennt: Das Landgericht München hat 1996 festgestellt, dass die Beschreibung von elektronischen Schaltungen nicht dem Urheberrecht unterliegen. Außerdem sollte ST sehr daran gelegen sein mehr Entwickler für Ihre µC zu begeistern.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dokumentationen ===&lt;br /&gt;
&lt;br /&gt;
Um mit der Library zu arbeiten sind folgende Dokumentationen empfehlenswert:&lt;br /&gt;
&lt;br /&gt;
* RM0008 Reference Manual zum STM32Fxxxx Controller&lt;br /&gt;
    Beschreibung und Registerdoku der Peripherie (GPIO, Timer ...)&lt;br /&gt;
* PM0056 STM32F10xxx Cortex-M3 programming manual&lt;br /&gt;
    Cortex-M3 eigene Peripherie (wichtig zb. NVIC)&lt;br /&gt;
* Datasheet des verwendeten µC Types (zb. STM32F103xC/D/E)&lt;br /&gt;
    Pinout des µC und alternative Verwendbarkeit der PINs&lt;br /&gt;
&lt;br /&gt;
Download from [[http://www.st.com/internet/mcu/class/1734.jsp Documents and files for STM32F family]]&lt;br /&gt;
&lt;br /&gt;
=== Die ST Standard Peripheral Lib in CrossWorks ===&lt;br /&gt;
Aufgrund mehrfacher Anfragen, hier ein Archiv, das meine Arbeitsumgebung [[Bild:CrossWorks_StandardLib_Setup.zip]] mit zwei Crossworks Projekten (ARM_LED_TEST und ARM_USB_Test) enthält. Einfach alles in ein Verzeichnis entpacken und schon sollte es Laufen.&lt;br /&gt;
&lt;br /&gt;
=== Einführungsbeispiel Blinking LED ===&lt;br /&gt;
&lt;br /&gt;
Einführungsbeispiel [[STM32 LEDBlinken AtollicTrueStudio]]&lt;br /&gt;
&lt;br /&gt;
=== Die Idee hinter der STM32 Standard Peripherals Library ===&lt;br /&gt;
&lt;br /&gt;
So stellt sich ARM und ST-Microelectronics die Library vor.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Stm32_std_peripherial_library_idee.JPG]]&lt;br /&gt;
&lt;br /&gt;
=Clocks - Der Herzschlag unseres Mikrocontroller=&lt;br /&gt;
&lt;br /&gt;
[[Datei:stm32_aufbau.jpg|thumb|Interner Aufbau eines [[STM32F103]]]]&lt;br /&gt;
Unser Mikrocontroller hat viele interne Takte. Diese müssen unbedingt konfiguriert werden. Dazu verwenden wir die RCC (Reset and Clock Control). Dazu gibt es Funktionen in der ST-Library. Welche Takte an welchen Bussen liegen, siehst du im Bild.&lt;br /&gt;
&lt;br /&gt;
Die Controller verfügen über zwei getrennte Datenbusse für die langsameren Teile der Periphierie. Den APB1 und den APB2. Diese sind wiederum über Brücken am Systembus angeschlossen. Das wären in diesem Fall die AHB1 und AHB2. Man muss beachten, dass der APB1 &amp;quot;nur&amp;quot; mit maximal 36MHz getaktet werden darf, der APB2 hingegen mit 72MHz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig!&#039;&#039;&#039; Alle unsere Peripherie Teile, die wir verwenden möchten, &#039;&#039;&#039;müssen mit einem Takt versorgt werden,&#039;&#039;&#039; bevor man sie verwenden kann. Bei Nichtbeachten führt dies häufig zu langer Fehlersuche.&lt;br /&gt;
&lt;br /&gt;
Der [[STM32]] wird normalerweise mit einem Quarz von 4-16MHz versorgt. Aus diesem wird dann mittels der internen PLL der eigentliche Takt gebildet (bis 72MHz).&lt;br /&gt;
Jeder benötigte Takt wird vom Haupttakt abgeleitet. Die Controller verfügen auch über interne RC-Oszillatoren (typischerweise ein 8 MHz RC-Oszillator mit einer Genauigkeit von 1 % sowie einem 40 kHz RC-Oszillator). Zumindest der interne 8 MHz-Oszillator ist für die meisten Anwendungen genau genug. Für z.B. USB oder CAN mit Taktraten &amp;gt; 100 kbit/s ist er aber &#039;&#039;&#039;nicht&#039;&#039;&#039; genau genug. Der interne 40 kHz-Oszillator hingegen ist &#039;&#039;&#039;sehr&#039;&#039;&#039; ungenau (zwischen 30 und 60 kHz).&lt;br /&gt;
&lt;br /&gt;
Hardwaretechnisch sollte darauf geachtet werden, dass bei Verwendung eines externen Quarzes dieser eine Frequenz von 8 MHz besitzt. &lt;br /&gt;
Die gesamten Defines in der Library beziehen sich darauf. Ansonsten ist eine Anpassung der PLL Multiplikatoren in der Datei &amp;quot;system_stm32f10x.c&amp;quot; nötig.&lt;br /&gt;
&lt;br /&gt;
==Taktquelle auswählen==&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset wird automatisch &#039;&#039;&#039;immer&#039;&#039;&#039; der interne HSI-Takt genutzt, um einen definierten Zustand zu haben (also der interne 8 MHz RC-Oszillator). Das ist z.B. erforderlich, damit der integrierte Bootloader mit einer bekannten Frequenz versorgt wird (sofern dieser über die Boot-Pins überhaupt gewünscht ist).&lt;br /&gt;
Zum Glück gibt es ein automatisches Sicherheitsfeature, sodass man die aktuelle Taktquelle des Controllers nicht abschalten kann, da der Controller sonst einfach stehen bleiben würde!&lt;br /&gt;
===HSI - Highspeed Internal Oscillator===&lt;br /&gt;
Man kann den internen Oszillator nach dem Reset umkonfigurieren. [Hier fehlt noch etwas]&lt;br /&gt;
&lt;br /&gt;
Zum Ein- und Ausschalten der HSI-Taktquelle verwendet man &#039;&#039;&#039;RCC_HSICmd()&#039;&#039;&#039;. Als Parameter werden entweder &#039;&#039;&#039;ENABLE&#039;&#039;&#039; oder &#039;&#039;&#039;DISABLE&#039;&#039;&#039; erwartet. &lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_HSICmd(ENABLE); //Aktiviert den internen Highspeed Oszillator.&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Takte Reseten==&lt;br /&gt;
Nach dem Reset befindet sich die gesamte Taktkonfiguration in einem definierten Zustand. Macht man später irgendwelche Änderungen an der Taktkonfiguration kann es sinnvoll sein, vorher alle Takte auf ihre Standardwerte zurückzusetzen. Dies schafft wieder eine definierte zentrale Taktkonfiguration. Man muß sich nicht überlegen, wo man noch was zuvor eingestellt hat. Hat man allerdings schon z.B. irgendwelche Peripheriemodule konfiguriert, muß man natürlich aufpassen, welche Folgen die zentrale Taktänderung hier haben kann!&lt;br /&gt;
Nach &#039;&#039;&#039;RCC_DeInit()&#039;&#039;&#039; sind alle Takte resettet. Übergeben wird nichts!&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_DeInit(); //Setzt alle Takte auf deren Ursprungsszustand zurück.&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HSE - Highspeed External Oscillator (Quarz)===&lt;br /&gt;
Es kann auch eine externe Taktquelle ausgewählt werden. Um dem Controller dies mitzuteilen, gibt es die Funktion &#039;&#039;&#039;RCC_HSEConfig()&#039;&#039;&#039;. Als Parameter erwartet sie einen der folgenden Werte: &#039;&#039;&#039;RCC_HSE_OFF&#039;&#039;&#039;, &#039;&#039;&#039;RCC_HSE_ON&#039;&#039;&#039; oder &#039;&#039;&#039;RCC_HSE_Bypass&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Ersten sind selbsterklärend. Wenn man der Funktion jedoch &#039;&#039;&#039;RCC_HSE_Bypass&#039;&#039;&#039; übergibt, so erwartet der Controller am OSC_IN Pin ein Taktsignal. Dieses darf bis zu 25MHz schnell sein und kann Rechteck, Sinus oder Dreieck Spannung mit einem Duty Cycle von 50% sein.&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_HSEConfig(RCC_HSE_ON); //Aktiviert den Externen Highspeed Oszillator (Quarz).&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=GPIOS - Wie greife ich auf einzelne Pins zur Ein/Ausgabe zu=&lt;br /&gt;
===Grundlagen===&lt;br /&gt;
&lt;br /&gt;
Unser Mikrocontroller hat ja einige Beinchen, diese können wir als Eingänge sowie als Ausgänge verwenden.&lt;br /&gt;
Dazu müssen wir unserem Käfer jedoch erst sagen welcher Pin was machen soll. Wie dies geht wird hier beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der STM32F10x verfügt zur Manipulation der IO-Pins über ein sehr raffiniertes Feature, das es erlaubt Bits für die IO-Pins zu setzen / löschen ohne vorher deren aktuellen Zustand auslesen zu müssen (üblicherweise Read-Modify-Write). Dadurch ist gewährleistet, dass beim Setzen/Löschen von Bits kein Interrupt dies stören kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Each of the general-purpose I/O ports has two 32-bit configuration registers (GPIOx_CRL, GPIOx_CRH), two 32-bit data registers (GPIOx_IDR, GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 16-bit reset register (GPIOx_BRR) and a 32-bit locking register (GPIOx_LCKR).&#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&#039;Each I/O port bit is freely programmable, however the I/O port registers have to be accessed as 32-bit words (half-word or byte accesses are not allowed). The purpose of the GPIOx_BSRR and GPIOx_BRR registers is to allow atomic read/modify accesses to any of the GPIO registers. This way, there is no risk that an IRQ occurs between the read and the modify access.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf die &#039;&#039;&#039;BRR&#039;&#039;&#039; und &#039;&#039;&#039;BSRR&#039;&#039;&#039; register greift man über die entsprechenden GPIO-Port zu.&lt;br /&gt;
&lt;br /&gt;
Hierzu existieren in &amp;lt;c&amp;gt;\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h&amp;lt;/c&amp;gt; folgende Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  __IO uint32_t CRL;&lt;br /&gt;
  __IO uint32_t CRH;&lt;br /&gt;
  __IO uint32_t IDR;&lt;br /&gt;
  __IO uint32_t ODR;&lt;br /&gt;
  __IO uint32_t BSRR;&lt;br /&gt;
  __IO uint32_t BRR;&lt;br /&gt;
  __IO uint32_t LCKR;&lt;br /&gt;
} GPIO_TypeDef;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pointer auf die entsprechenden GPIO-Ports sind hier ebenfalls definiert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)&lt;br /&gt;
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)&lt;br /&gt;
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)&lt;br /&gt;
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)&lt;br /&gt;
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)&lt;br /&gt;
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)&lt;br /&gt;
#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Welche GPIO-Ports tatsächlich verfügbar sind ist abhängig vom verwendeten Controller!&lt;br /&gt;
&lt;br /&gt;
In stm32f10x_gpio.h sind darüber hinaus Definitionen für alle Pins vorhanden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!&amp;lt; Pin 0 selected */&lt;br /&gt;
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!&amp;lt; Pin 1 selected */&lt;br /&gt;
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!&amp;lt; Pin 2 selected */&lt;br /&gt;
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!&amp;lt; Pin 3 selected */&lt;br /&gt;
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!&amp;lt; Pin 4 selected */&lt;br /&gt;
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!&amp;lt; Pin 5 selected */&lt;br /&gt;
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!&amp;lt; Pin 6 selected */&lt;br /&gt;
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!&amp;lt; Pin 7 selected */&lt;br /&gt;
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!&amp;lt; Pin 8 selected */&lt;br /&gt;
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!&amp;lt; Pin 9 selected */&lt;br /&gt;
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!&amp;lt; Pin 10 selected */&lt;br /&gt;
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!&amp;lt; Pin 11 selected */&lt;br /&gt;
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!&amp;lt; Pin 12 selected */&lt;br /&gt;
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!&amp;lt; Pin 13 selected */&lt;br /&gt;
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!&amp;lt; Pin 14 selected */&lt;br /&gt;
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!&amp;lt; Pin 15 selected */&lt;br /&gt;
#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!&amp;lt; All pins selected */&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man also von Hand auf die Bits dieser Register zugreifen, so ist das denkbar einfach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 GPIOC-&amp;gt;BSRR = GPIO_Pin_13;   &lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setzt das Bit für Pin 13 im Port C. Das raffinierte daran ist, dass nur Bits, die im &#039;&#039;&#039;BRR&#039;&#039;&#039; gesetzt sind, auch im Port verändert werden. Nicht gesetzte Bits wirken sich auf den tatsächlich Portzustand nicht aus. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 GPIOC-&amp;gt;BRR = GPIO_Pin_13;   &lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Löscht das entprechende Bit wieder.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Standard Peripheral Library&#039;&#039; stellt für dies Zugriffe allerdings auch komfortable und vor allem sprechendere Funktionen zur verfügen, die weiter unten erklärt werden.&lt;br /&gt;
&lt;br /&gt;
===Initialisierung===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Bevor man Pins eines GPIO-Ports benutzen kann, muss man die Clock des entsprechenden Ports mit der Funktion &#039;&#039;RCC_APB2PeriphClockCmd&#039;&#039; aktivieren , da diese nach einem Reset immer ausgeschaltet ist. Dies ist ein sehr beliebter Fehler beim Arbeiten mit Ports. Mehr dazu bei [[STM32F10x Standard Peripherals Library#Clocks - Der Herzschlag unseres Mikrocontroller|Clocks]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bevor man einen Pin benutzen kann, muss dieser Initialisiert werden.&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039; ermöglicht es einen oder mehere Pins auf einmal zu konfigurieren. Hierzu muss eine struct ausgefüllt und GPIO_Init übergeben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  u16 GPIO_Pin;&lt;br /&gt;
  GPIOSpeed_TypeDef GPIO_Speed;&lt;br /&gt;
  GPIOMode_TypeDef GPIO_Mode;&lt;br /&gt;
}GPIO_InitTypeDef;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definieren müssen wird dieses zuvor jedoch auch. Dies geschieht mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitTypeDef GPIO_InitStructure;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach können wir bequem auf die einzelnen Einträge aus der Struct zugreifen.&lt;br /&gt;
Der nachfolgende Code zeigt eine Beispielkonfiguration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;GPIO_Speed&#039;&#039;&#039; definiert die maximale Änderungsrate des Pins. Das ist aber keine harte Grenze, sondern verändert die Charakteristik des Pintreibers. Eine niedrigere Grenzfrequenz reduziert die Flankensteilheit und damit Leitungsreflexionen. &lt;br /&gt;
Mögliche Werte für GPIO_Speed&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039; Wert&#039;&#039;&#039; ||&#039;&#039;&#039; Bedeutung&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_2MHz || 2MHz / 125ns&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_10MHz || 10MHz / 25ns &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_50MHz || 30-50MHz / 5-12ns&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;GPIO_Mode&#039;&#039;&#039; konfiguriert den Port oder den Port Pin.&lt;br /&gt;
Mögliche Werte für GPIO_Mode&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039; Wert&#039;&#039;&#039; ||&#039;&#039;&#039; Beschreibung&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_Out_PP || Der Pin wird als Ausgang im Push Pull Modus konfiguriert. Dies bedeutet, der Ausgang kann sowohl positive als auch negative Ströme liefern&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_Out_OD || Der Pin wird als Ausgang im Open Drain Modus konfiguriert.&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IN_FLOATING || Der Pin wird als Eingang im Floating modus konfiguriert. Dies bedeutet, das der Pin kein Niveau hat. Er &amp;quot;schwebt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AIN || Der Pin wird als analoger Eingang konfiguriert&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IPD || Der Pin wird als Eingang konfiguriert mit internem Pull Down Widerstand&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IPU || Der Pin wird als Eingang konfiguriert mit internem Pull Up Widerstand&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AF_OD || Der Pin wird mit Alternativer Funktion (SPI, I2C..) konfiguriert im Open Drain Modus&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AF_PP || Der Pin wird mit Alternativer Funktion (SPI, I2C..) konfiguriert im Push Pull Modus&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GPIO_Pin&#039;&#039;&#039; definiert den Pin welcher konfiguriert werden soll.&lt;br /&gt;
&lt;br /&gt;
Um den zu konfigurierenden Pin anzugeben, genügt es &#039;&#039;&#039;GPIO_Pin_X&#039;&#039;&#039; zu schreiben.&lt;br /&gt;
Wobei &amp;quot;X&amp;quot; durch die entsprechende Pinnummer zu ersetzen ist.&lt;br /&gt;
&amp;lt;br&amp;gt;Es können auch mehrere Pins gleichzeitig Konfoguriert werden. &lt;br /&gt;
Dazu wird einfach logische ODER verknüfung verwendet ( | )&lt;br /&gt;
Möchte man den gesamten Port konfigurieren, so genügt es wenn man &#039;&#039;&#039;GPIO_Pin_All&#039;&#039;&#039; angibt.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel mit mehreren Pins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_7&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun alle relevanten Parameter gesetzt haben, müssen wir den Port nur noch mit &#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039; initialisieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;GPIOx&#039;&#039; ist der Pointer auf den den zu initialisierenden Port. Wobei x einfach mit dem entsprechenden Buchstaben zu ersetzen ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;GPIO_InitStruct&#039;&#039; ist der Pointer auf die soeben von uns ausgefüllte struct. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für GPIOA&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // Clock des Ports einschalten&lt;br /&gt;
&lt;br /&gt;
GPIO_InitTypeDef GPIO_InitStructure;&lt;br /&gt;
&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_7&lt;br /&gt;
&lt;br /&gt;
GPIO_Init(GPIOA, &amp;amp;GPIO_InitStructure);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Etwas auf den Port ausgeben===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um etwas an einem GPIO auszugeben, gibt es drei Möglichkeiten (Funktionen). &lt;br /&gt;
Entweder man schreibt den gesamten Port oder nur ein einzelnes Bit.&lt;br /&gt;
Die STMs bieten eine [[Bitbanding]]-Funktion, welche hier nicht genauer erklärt werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die erste Funktion lautet &#039;&#039;&#039;GPIO_SetBits()&#039;&#039;&#039; und &#039;&#039;&#039;GPIO_ResetBits()&#039;&#039;&#039;&lt;br /&gt;
Erster Parameter ist der GPIO Port, der zweite ist der Pin oder eine Kombination daraus. Kombinationen sind wieder logisch zu verknüpfen mit ODER ( | )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_5); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
&lt;br /&gt;
GPIO_ResetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_9); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die zweite Funktion lautet &#039;&#039;&#039;GPIO_WriteBit()&#039;&#039;&#039; Diese Funktion kann sowohl einen oder mehrere Pins setzen als auch löschen. Erster Parameter ist der GPIO Port, der zweite ist der Pin oder eine Kombination daraus, und der dritte sagt aus, ob gesetzt oder gelöscht wird! Kombinationen sind auch hier logisch zu verknüpfen mit ODER ( | ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_WriteBit(GPIOA, GPIO_Pin_1 | GPIO_Pin_5, Bit_SET); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
&lt;br /&gt;
GPIO_WriteBit(GPIOA, GPIO_Pin_2 | GPIO_Pin_9, Bit_RESET); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dritte und somit letzte Funktion lautet &#039;&#039;&#039;GPIO_Write()&#039;&#039;&#039;. Diese Funktion beschreibt den gesamten Port! Erster Parameter ist der GPIO Port, der zweite ist der an dem Port auszugebende Wert. &#039;&#039;&#039;Wichtig!&#039;&#039;&#039; Hier wird der ganze Port mit einem 16 bit Wert beschrieben. Viel leserlicher als mit magic numbers im Hex-Format zu arbeiten, sind natürlich auch hier die defines: GPIO_Pin_1 | GPIO_Pin_5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_Write(GPIOA,0x0011); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
GPIO_Write(GPIOA, GPIO_Pin_1 | GPIO_Pin_5); // Geht natürlich auch und ist verständlicher                &lt;br /&gt;
&lt;br /&gt;
GPIO_ResetBits(GPIOA,0x0102); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pin Sperren===&lt;br /&gt;
&lt;br /&gt;
Der [[STM32]] bietet die Möglichkeit, einen Pin zu sperren. Ist ein Pin gesperrt, so kann dessen Zustand (High / Low) &#039;&#039;&#039;bis zu einem Reset&#039;&#039;&#039; nicht mehr geändert werden! Wie wir es nun gewohnt sind, hat ST dafür eine eigene Funktion geschrieben. Diese lautet &#039;&#039;&#039;GPIO_PinLockConfig()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, welche man sperren möchte. Diese kann man wieder mit der ODER Verknüpfung kombinieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_PinLockConfig(GPIOA,GPIO_Pin_1 | GPIO_Pin_5); //Sperrt die Pins bis zu einem Reset&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Eingänge einlesen===&lt;br /&gt;
&lt;br /&gt;
Um Daten in den [[STM32]] einzulesen, gibt es wieder ein paar ST Funktionen. Diese möchten wir hier vorstellen. Die dafür verwendbaren Funktionen sind: &#039;&#039;&#039;GPIO_ReadInputDataBit()&#039;&#039;&#039; sowie &#039;&#039;&#039;GPIO_ReadInputData()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, die man einlesen möchte. Bei &#039;&#039;&#039;GPIO_ReadInputData()&#039;&#039;&#039; wird jedoch nur der Port übergeben, da diese Funktion den &#039;&#039;&#039;gesamten&#039;&#039;&#039; Port zurück liefert! Hier wird der tatsächliche logische Pegel am Pin eingelesen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint8_t ucStatus = 0;&lt;br /&gt;
&lt;br /&gt;
ucStatus = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5); //Speichert den Zustand von Pin5 am GPIOA in die 8-bit-Variable ucStatus &lt;br /&gt;
                                                    //(uint8_t ist die kleinstmögliche, eigenständige Variable für dieses eine Bit)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint16_t uiPort = 0;&lt;br /&gt;
&lt;br /&gt;
uiPort = GPIO_ReadInputData(GPIOA); //Speichert den Zustand von GPIOA in die 16-bit-Variable uiPort&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ausgänge einlesen===&lt;br /&gt;
&lt;br /&gt;
Man hat ja häufig das Problem, dass man gerne nachsehen möchte, was man denn gerade am Ausgang ausgibt. Dazu kann man den Ausgang wie ein Eingang einlesen. Die dafür verwendbaren Funktionen sind: &#039;&#039;&#039;GPIO_ReadOutputDataBit()&#039;&#039;&#039; sowie &#039;&#039;&#039;GPIO_ReadOutputData()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, welche man auslesen möchte. Bei &#039;&#039;&#039;GPIO_ReadOutputData()&#039;&#039;&#039; wird jedoch nur der Port übergeben, da diese Funktion den &#039;&#039;&#039;gesamten&#039;&#039;&#039; Port zurück liefert!Hier wird &#039;&#039;&#039;nicht&#039;&#039;&#039; der tatsächliche logische Pegel am Pin eingelesen, sondern was im Ausgangsregister eingestellt wurde (also eigentlich anliegen sollte)! Diese beiden Werte können sich auf Grund externer Einflüsse aber unterscheiden!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint8_t ucStatus = 0;&lt;br /&gt;
&lt;br /&gt;
ucStatus = GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5); //Speichert den Zustand von Pin5 am GPIOA in die 8-bit-Variable ucStatus &lt;br /&gt;
                                                     //(uint8_t ist die kleinstmögliche, eigenständige Variable für dieses eine Bit)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint16_t uiPort = 0;&lt;br /&gt;
&lt;br /&gt;
uiPort = GPIO_ReadOutputData(GPIOA); //Speichert den Zustand von GPIOA in die 16-bit-Variable uiPort&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Deinitialisieren von Ports===&lt;br /&gt;
&lt;br /&gt;
Es gibt auch die Möglichkeit, den Port zu deinitialisieren. Dann wird er mit seinen Standardwerten konfiguriert. Die Funktion dazu lautet &#039;&#039;&#039;GPIO_DeInit()&#039;&#039;&#039;. Erster und einziger Parameter ist der Port, den man deinitialisieren möchte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_DeInit(GPIOA); //Setzt den GPIOA auf seine Standardwerte zurück&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities =&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/175840 Diskussion zum Artikel]&lt;br /&gt;
* [https://sourceforge.net/projects/libopenstm32/ libopenstm32] -- Eine Open-Source Alternative (GPL, Version 3 oder höher) zur ST Library&lt;br /&gt;
* Artikel [[STM32]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:STM32]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32_USB-FS-Device_Lib&amp;diff=63009</id>
		<title>STM32 USB-FS-Device Lib</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32_USB-FS-Device_Lib&amp;diff=63009"/>
		<updated>2012-01-03T08:36:26Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Windows Treiber für den Virtual COM Port */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===STM32 USB-FS-Device Lib===&lt;br /&gt;
&lt;br /&gt;
Mit der &#039;&#039;STM32 USB-FS-Device Lib&#039;&#039; stellt ST C-Funktionen zur Benutzung der [[USB]]-Schnittstelle der STM32 µC zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
Sie kann zusammen mit Beispielimplementationen verschiedener USB-Geräteklassen hier bei ST kostenlos heruntergeladen werden: [http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/um0424.zip Download].&lt;br /&gt;
&lt;br /&gt;
Eine Beschreibung findet sich [http://www.st.com/stonline/products/literature/um/13465.pdf hier].&lt;br /&gt;
&lt;br /&gt;
==Virtual COM Port==&lt;br /&gt;
Für die allgemeine Kommunikation mit einem PC wird für die meisten Projekte ein Virtual COMPORT die geeignete Geräteklasse sein.&lt;br /&gt;
Auf PC Seite erscheint dabei nach Einstecken des STM32 in den USB Port ein weiterer COM Port im Gerätemanager, der von Applikationen genauso wie jeder reale COM Port verwendet werden kann. Wie der Zugriff auf µC-Seite aussieht sehen wir uns weiter unten an.&lt;br /&gt;
&lt;br /&gt;
===Die Beispielimplementierung===&lt;br /&gt;
ST liefert eine Beispielimplementierung für den einen Virtual Comport mit der USB-Lib mit. Um diese Nutzen zu können, muss das verwendete Evalboard einmal mit dem USB und einmal mit einem echten RS232 verbunden sein, da man zum Test Daten zwischen zwei Terminalprogrammen hin- und herschicken kann, eines mit dem Virtual COM Port und das andere mit dem &amp;quot;echten&amp;quot; COM Port verbunden.&lt;br /&gt;
&lt;br /&gt;
Da ich derzeit keinen weiteren COM Ports zur Verfügung hatte und ich gerne ein Beispiel wollte, das rein auf den USB-Port konzentriert ist, habe ich das Beispiel etwas modifiziert. In meinem Beispielprogramm sind alle USART Anteile entfernt, ebenso alle #ifdefs die sich auf ein bestimmtes EVAL-Board bzw. auf den STM32 in der Connectivity Line beziehen, welche einen USB-OnTheGo besitzt. Dadurch ist der Code jetzt deutlich leichter zu überschauen. (wenn ihr unbedingt einen STM32 aus der Connectivity Line nehmen wollt, dann quält euch durch das Orginalbeispiel.&lt;br /&gt;
&lt;br /&gt;
In der jetzigen Version schickt der µC jede Zeichenkette die ihm vom PC geschickt wird wieder an den selben COM Port zurück, aber in umgekehrter Zeichenfolge. (Zum Test empfehle ich [http://www.mikrocontroller.net/topic/26477 HTerm] Zumindest die in Crossworks enthaltene Terminal Emulation arbeitet nicht korrekt, daher besser nicht verwenden)&lt;br /&gt;
&lt;br /&gt;
Unter findet Ihr das Projekt zusammen mit einer CrossWorks Projektdatei [[Datei:ARM_USB_Test.zip]]. Voraussetzung zum Kompilieren ist folgende Verzeichnisstruktur&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
Stammverzeichnis&lt;br /&gt;
   |__ ARM_USB_Test&lt;br /&gt;
   | &lt;br /&gt;
   |__ ST_StandardLib    ( Standard Peripheral Libary ab Libraries)&lt;br /&gt;
   |        |&lt;br /&gt;
   |        |__ CMSIS&lt;br /&gt;
   |        |&lt;br /&gt;
   |        |__ STM32F10x_StdPeriph_Driver&lt;br /&gt;
   |         &lt;br /&gt;
   |___ ST_USB_LIB       (STM32_USB-FS-Device_Lib ab Libraries)&lt;br /&gt;
          |&lt;br /&gt;
          |__ inc&lt;br /&gt;
          |&lt;br /&gt;
          |__ src&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows Treiber für den Virtual COM Port ===&lt;br /&gt;
&lt;br /&gt;
Wie im Artikel [[Wieso braucht man überhaupt einen Treiber für einen Virtual Com port?]] diskutiert, läßt die Basiskonfiguration von Windows ziemlich zu wünschen übrig wenn es um Virtual COM Ports geht. Ohne ersichtlichen Grund wird diese Standardgeräteklasse nicht automatisch erkannt und unterstützt, sondern man benötigt einen passenden Treiber oder vielmehr die passen .inf-Datei.&lt;br /&gt;
&lt;br /&gt;
Da die entsprechende kostenlose .inf-Datei auf der ST-Seite nicht so einfach zu finden ist, kann sie hier [[Datei:stmcdc.inf]] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
Die STM32-CDC-Treiber sind WHQL Zertifiziert und über das Windows Update für die Versionen Windows 2000, XP (x86, x64), Vista (x86, x64) und 7 (x86, x64) erhältlich. Ansonsten kann der Treiber [https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/DispForm.aspx?ID=18102&amp;amp;RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FUsing%20STM32F10x%20USB%20device%20with%20Windows%20Vista%20or%20Windows%207 hier] heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Schaltplan für diese Implementierung ===&lt;br /&gt;
[[Bild:STM32-USB-Schaltplan.png|thumb|Schaltplan]]&lt;br /&gt;
Für alle die die Schaltung nachbauen wollen hier der Schaltplan, der in meinem Lochrasteraufbau problemlos funktioniert. (Die SD-Card rechts hat natürlich nichts damit zu tun ;-)&lt;br /&gt;
&lt;br /&gt;
== Aufbau der Beispielimplementierung==&lt;br /&gt;
&lt;br /&gt;
Um die Implementierung einfacher nachvollziehen zu können, hier ein Archiv [[Bild:CrossWorks_StandardLib_Setup.zip]] mit einer kompletten Arbeitsumgebung für Crossworks.&lt;br /&gt;
&lt;br /&gt;
Hier soll, wie ich Zeit dafür habe gezeigt werden welche der Funktionen und Dateien für uns interessant sind um eigene Funktionalität dort zu integrieren.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Escamoteur|Escamoteur]] 07:39, 27. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:STM32]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=STM32F10x_Standard_Peripherals_Library&amp;diff=63008</id>
		<title>STM32F10x Standard Peripherals Library</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=STM32F10x_Standard_Peripherals_Library&amp;diff=63008"/>
		<updated>2012-01-03T08:31:11Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Hinweise */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Allgemeines=&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;STM32F10x Standard Peripherals Library&#039;&#039;  ist eine umfangreiche komfortable C-Bibliothek, die den Zugriff auf alle Funktionen der &#039;&#039;&#039;STM32F10x&#039;&#039;&#039; Familie erlaubt. Dabei ist für die verschiedenen Peripheriekomponenten jeweils ein eigenes Modul verfügbar.&lt;br /&gt;
&lt;br /&gt;
Die Bibliothek kann hier bei ST kostenlos heruntergeladen werden [http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip download]. In dem Archiv ist die ‎STM32F10x Standard Peripherals Library. Zu jeder Peripherie gibt es diverse Beispiele und eine Beschreibung als CHM Datei &amp;quot;stm32f10x_stdperiph_lib_um.chm&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Bevor Ihr lange sucht, die USB-Schnittstelle ist nicht in der &#039;&#039;STM32F10x Standard Peripherals Library&#039;&#039; enthalten. Die hierfür verfügbare Firmware sowie Beispielcode befindet sich in der [[STM32_USB-FS-Device_Lib]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hinweise===&lt;br /&gt;
Die notwendigen Informationen, um die Funktionen der Standard Peripherals Library zu verstehen, muss man sich leider aus verschiedenen Quellen zusammensuchen. Daher soll mit diesem Artikel versucht werden, deren Benutzung für die verschiedenen Peripheriekomponenten zu erläutern.&lt;br /&gt;
&lt;br /&gt;
Leider beziehen sich die von ST gelieferten Beispiele sehr auf die von ST verfügbaren Evalboards und der Code wimmelt von #defines, so dass man sich erst mühsam durchhangeln muss um zu verstehen, was da eigentlich passiert. Dies geht zwar durch die gute Verlinkung in der Hilfsdatei ganz gut, erschwert aber den Einstieg unnötig. &lt;br /&gt;
&lt;br /&gt;
In diesem Artikel soll daher die Anwendung &#039;&#039;bare bones&#039;&#039; ähnlich den Beispielen in den AVR Datenblättern erfolgen.&lt;br /&gt;
Wo nötig, werden die zum Verständnis relevanten Ausschnitte des Reference Manual [http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/REFERENCE_MANUAL/CD00171190.pdf RM0008] in den Artikel kopiert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(Bevor hier die Copyright Discussion entbrennt: Das Landgericht München hat 1996 festgestellt, dass die Beschreibung von elektronischen Schaltungen nicht dem Urheberrecht unterliegen. Außerdem sollte ST sehr daran gelegen sein mehr Entwickler für Ihre µC zu begeistern.)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Dokumentationen ===&lt;br /&gt;
&lt;br /&gt;
Um mit der Library zu arbeiten sind folgende Dokumentationen empfehlenswert:&lt;br /&gt;
&lt;br /&gt;
* RM0008 Reference Manual zum STM32Fxxxx Controller&lt;br /&gt;
    Beschreibung und Registerdoku der Peripherie (GPIO, Timer ...)&lt;br /&gt;
* PM0056 STM32F10xxx Cortex-M3 programming manual&lt;br /&gt;
    Cortex-M3 eigene Peripherie (wichtig zb. NVIC)&lt;br /&gt;
* Datasheet des verwendeten µC Types (zb. STM32F103xC/D/E)&lt;br /&gt;
    Pinout des µC und alternative Verwendbarkeit der PINs&lt;br /&gt;
&lt;br /&gt;
Download from [[http://www.st.com/internet/mcu/class/1734.jsp Documents and files for STM32F family]]&lt;br /&gt;
&lt;br /&gt;
=== Die ST Standard Peripheral Lib in CrossWorks ===&lt;br /&gt;
Aufgrund mehrfacher Anfragen, hier ein Archiv, das meine Arbeitsumgebung [[Bild:CrossWorks_StandardLib_Setup.zip]] mit zwei Crossworks Projekten (ARM_LED_TEST und ARM_USB_Test) enthält. Einfach alles in ein Verzeichnis entpacken und schon sollte es Laufen.&lt;br /&gt;
&lt;br /&gt;
=== Einführungsbeispiel Blinking LED ===&lt;br /&gt;
&lt;br /&gt;
Einführungsbeispiel [[STM32 LEDBlinken AtollicTrueStudio]]&lt;br /&gt;
&lt;br /&gt;
=== Die Idee hinter der STM32 Standard Peripherals Library ===&lt;br /&gt;
&lt;br /&gt;
So stellt sich ARM und ST-Microelectronics die Library vor.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Stm32_std_peripherial_library_idee.JPG]]&lt;br /&gt;
&lt;br /&gt;
=Clocks - Der Herzschlag unseres Mikrocontroller=&lt;br /&gt;
&lt;br /&gt;
[[Datei:stm32_aufbau.jpg|thumb|Interner Aufbau eines [[STM32F103]]]]&lt;br /&gt;
Unser Mikrocontroller hat viele interne Takte. Diese müssen unbedingt konfiguriert werden. Dazu verwenden wir die RCC (Reset and Clock Control). Dazu gibt es Funktionen in der ST-Library. Welche Takte an welchen Bussen liegen, siehst du im Bild.&lt;br /&gt;
&lt;br /&gt;
Die Controller verfügen über zwei getrennte Datenbusse für die langsameren Teile der Periphierie. Den APB1 und den APB2. Diese sind wiederum über Brücken am Systembus angeschlossen. Das wären in diesem Fall die AHB1 und AHB2. Man muss beachten, dass der APB1 &amp;quot;nur&amp;quot; mit maximal 36MHz getaktet werden darf, der APB2 hingegen mit 72MHz.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtig!&#039;&#039;&#039; Alle unsere Peripherie Teile, die wir verwenden möchten, &#039;&#039;&#039;müssen mit einem Takt versorgt werden,&#039;&#039;&#039; bevor man sie verwenden kann. Bei Nichtbeachten führt dies häufig zu langer Fehlersuche.&lt;br /&gt;
&lt;br /&gt;
Der [[STM32]] wird normalerweise mit einem Quarz von 4-16MHz versorgt. Aus diesem wird dann mittels der internen PLL der eigentliche Takt gebildet (bis 72MHz).&lt;br /&gt;
Jeder benötigte Takt wird vom Haupttakt abgeleitet. Die Controller verfügen auch über interne RC-Oszillatoren (typischerweise ein 8 MHz RC-Oszillator mit einer Genauigkeit von 1 % sowie einem 40 kHz RC-Oszillator). Zumindest der interne 8 MHz-Oszillator ist für die meisten Anwendungen genau genug. Für z.B. USB oder CAN mit Taktraten &amp;gt; 100 kbit/s ist er aber &#039;&#039;&#039;nicht&#039;&#039;&#039; genau genug. Der interne 40 kHz-Oszillator hingegen ist &#039;&#039;&#039;sehr&#039;&#039;&#039; ungenau (zwischen 30 und 60 kHz).&lt;br /&gt;
&lt;br /&gt;
Hardwaretechnisch sollte darauf geachtet werden, dass bei Verwendung eines externen Quarzes dieser eine Frequenz von 8 MHz besitzt. &lt;br /&gt;
Die gesamten Defines in der Library beziehen sich darauf. Ansonsten ist eine Anpassung der PLL Multiplikatoren in der Datei &amp;quot;system_stm32f10x.c&amp;quot; nötig.&lt;br /&gt;
&lt;br /&gt;
==Taktquelle auswählen==&lt;br /&gt;
&lt;br /&gt;
Nach dem Reset wird automatisch &#039;&#039;&#039;immer&#039;&#039;&#039; der interne HSI-Takt genutzt, um einen definierten Zustand zu haben (also der interne 8 MHz RC-Oszillator). Das ist z.B. erforderlich, damit der integrierte Bootloader mit einer bekannten Frequenz versorgt wird (sofern dieser über die Boot-Pins überhaupt gewünscht ist).&lt;br /&gt;
Zum Glück gibt es ein automatisches Sicherheitsfeature, sodass man die aktuelle Taktquelle des Controllers nicht abschalten kann, da der Controller sonst einfach stehen bleiben würde!&lt;br /&gt;
===HSI - Highspeed Internal Oscillator===&lt;br /&gt;
Man kann den internen Oszillator nach dem Reset umkonfigurieren. [Hier fehlt noch etwas]&lt;br /&gt;
&lt;br /&gt;
Zum Ein- und Ausschalten der HSI-Taktquelle verwendet man &#039;&#039;&#039;RCC_HSICmd()&#039;&#039;&#039;. Als Parameter werden entweder &#039;&#039;&#039;ENABLE&#039;&#039;&#039; oder &#039;&#039;&#039;DISABLE&#039;&#039;&#039; erwartet. &lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_HSICmd(ENABLE); //Aktiviert den internen Highspeed Oszillator.&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Takte Reseten==&lt;br /&gt;
Nach dem Reset befindet sich die gesamte Taktkonfiguration in einem definierten Zustand. Macht man später irgendwelche Änderungen an der Taktkonfiguration kann es sinnvoll sein, vorher alle Takte auf ihre Standardwerte zurückzusetzen. Dies schafft wieder eine definierte zentrale Taktkonfiguration. Man muß sich nicht überlegen, wo man noch was zuvor eingestellt hat. Hat man allerdings schon z.B. irgendwelche Peripheriemodule konfiguriert, muß man natürlich aufpassen, welche Folgen die zentrale Taktänderung hier haben kann!&lt;br /&gt;
Nach &#039;&#039;&#039;RCC_DeInit()&#039;&#039;&#039; sind alle Takte resettet. Übergeben wird nichts!&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_DeInit(); //Setzt alle Takte auf deren Ursprungsszustand zurück.&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HSE - Highspeed External Oscillator (Quarz)===&lt;br /&gt;
Es kann auch eine externe Taktquelle ausgewählt werden. Um dem Controller dies mitzuteilen, gibt es die Funktion &#039;&#039;&#039;RCC_HSEConfig()&#039;&#039;&#039;. Als Parameter erwartet sie einen der folgenden Werte: &#039;&#039;&#039;RCC_HSE_OFF&#039;&#039;&#039;, &#039;&#039;&#039;RCC_HSE_ON&#039;&#039;&#039; oder &#039;&#039;&#039;RCC_HSE_Bypass&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Die Ersten sind selbsterklärend. Wenn man der Funktion jedoch &#039;&#039;&#039;RCC_HSE_Bypass&#039;&#039;&#039; übergibt, so erwartet der Controller am OSC_IN Pin ein Taktsignal. Dieses darf bis zu 25MHz schnell sein und kann Rechteck, Sinus oder Dreieck Spannung mit einem Duty Cycle von 50% sein.&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_HSEConfig(RCC_HSE_ON); //Aktiviert den Externen Highspeed Oszillator (Quarz).&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=GPIOS - Wie greife ich auf einzelne Pins zur Ein/Ausgabe zu=&lt;br /&gt;
===Grundlagen===&lt;br /&gt;
&lt;br /&gt;
Unser Mikrocontroller hat ja einige Beinchen, diese können wir als Eingänge sowie als Ausgänge verwenden.&lt;br /&gt;
Dazu müssen wir unserem Käfer jedoch erst sagen welcher Pin was machen soll. Wie dies geht wird hier beschrieben.&lt;br /&gt;
&lt;br /&gt;
Der STM32F10x verfügt zur Manipulation der IO-Pins über ein sehr raffiniertes Feature, das es erlaubt Bits für die IO-Pins zu setzen / löschen ohne vorher deren aktuellen Zustand auslesen zu müssen (üblicherweise Read-Modify-Write). Dadurch ist gewährleistet, dass beim Setzen/Löschen von Bits kein Interrupt dies stören kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Each of the general-purpose I/O ports has two 32-bit configuration registers (GPIOx_CRL, GPIOx_CRH), two 32-bit data registers (GPIOx_IDR, GPIOx_ODR), a 32-bit set/reset register (GPIOx_BSRR), a 16-bit reset register (GPIOx_BRR) and a 32-bit locking register (GPIOx_LCKR).&#039;&#039;&#039;&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;&#039;Each I/O port bit is freely programmable, however the I/O port registers have to be accessed as 32-bit words (half-word or byte accesses are not allowed). The purpose of the GPIOx_BSRR and GPIOx_BRR registers is to allow atomic read/modify accesses to any of the GPIO registers. This way, there is no risk that an IRQ occurs between the read and the modify access.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Auf die &#039;&#039;&#039;BRR&#039;&#039;&#039; und &#039;&#039;&#039;BSRR&#039;&#039;&#039; register greift man über die entsprechenden GPIO-Port zu.&lt;br /&gt;
&lt;br /&gt;
Hierzu existieren in &amp;lt;c&amp;gt;\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\stm32f10x.h&amp;lt;/c&amp;gt; folgende Definition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  __IO uint32_t CRL;&lt;br /&gt;
  __IO uint32_t CRH;&lt;br /&gt;
  __IO uint32_t IDR;&lt;br /&gt;
  __IO uint32_t ODR;&lt;br /&gt;
  __IO uint32_t BSRR;&lt;br /&gt;
  __IO uint32_t BRR;&lt;br /&gt;
  __IO uint32_t LCKR;&lt;br /&gt;
} GPIO_TypeDef;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pointer auf die entsprechenden GPIO-Ports sind hier ebenfalls definiert:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define GPIOA               ((GPIO_TypeDef *) GPIOA_BASE)&lt;br /&gt;
#define GPIOB               ((GPIO_TypeDef *) GPIOB_BASE)&lt;br /&gt;
#define GPIOC               ((GPIO_TypeDef *) GPIOC_BASE)&lt;br /&gt;
#define GPIOD               ((GPIO_TypeDef *) GPIOD_BASE)&lt;br /&gt;
#define GPIOE               ((GPIO_TypeDef *) GPIOE_BASE)&lt;br /&gt;
#define GPIOF               ((GPIO_TypeDef *) GPIOF_BASE)&lt;br /&gt;
#define GPIOG               ((GPIO_TypeDef *) GPIOG_BASE)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Welche GPIO-Ports tatsächlich verfügbar sind ist abhängig vom verwendeten Controller!&lt;br /&gt;
&lt;br /&gt;
In stm32f10x_gpio.h sind darüber hinaus Definitionen für alle Pins vorhanden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define GPIO_Pin_0                 ((uint16_t)0x0001)  /*!&amp;lt; Pin 0 selected */&lt;br /&gt;
#define GPIO_Pin_1                 ((uint16_t)0x0002)  /*!&amp;lt; Pin 1 selected */&lt;br /&gt;
#define GPIO_Pin_2                 ((uint16_t)0x0004)  /*!&amp;lt; Pin 2 selected */&lt;br /&gt;
#define GPIO_Pin_3                 ((uint16_t)0x0008)  /*!&amp;lt; Pin 3 selected */&lt;br /&gt;
#define GPIO_Pin_4                 ((uint16_t)0x0010)  /*!&amp;lt; Pin 4 selected */&lt;br /&gt;
#define GPIO_Pin_5                 ((uint16_t)0x0020)  /*!&amp;lt; Pin 5 selected */&lt;br /&gt;
#define GPIO_Pin_6                 ((uint16_t)0x0040)  /*!&amp;lt; Pin 6 selected */&lt;br /&gt;
#define GPIO_Pin_7                 ((uint16_t)0x0080)  /*!&amp;lt; Pin 7 selected */&lt;br /&gt;
#define GPIO_Pin_8                 ((uint16_t)0x0100)  /*!&amp;lt; Pin 8 selected */&lt;br /&gt;
#define GPIO_Pin_9                 ((uint16_t)0x0200)  /*!&amp;lt; Pin 9 selected */&lt;br /&gt;
#define GPIO_Pin_10                ((uint16_t)0x0400)  /*!&amp;lt; Pin 10 selected */&lt;br /&gt;
#define GPIO_Pin_11                ((uint16_t)0x0800)  /*!&amp;lt; Pin 11 selected */&lt;br /&gt;
#define GPIO_Pin_12                ((uint16_t)0x1000)  /*!&amp;lt; Pin 12 selected */&lt;br /&gt;
#define GPIO_Pin_13                ((uint16_t)0x2000)  /*!&amp;lt; Pin 13 selected */&lt;br /&gt;
#define GPIO_Pin_14                ((uint16_t)0x4000)  /*!&amp;lt; Pin 14 selected */&lt;br /&gt;
#define GPIO_Pin_15                ((uint16_t)0x8000)  /*!&amp;lt; Pin 15 selected */&lt;br /&gt;
#define GPIO_Pin_All               ((uint16_t)0xFFFF)  /*!&amp;lt; All pins selected */&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Will man also von Hand auf die Bits dieser Register zugreifen, so ist das denkbar einfach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 GPIOC-&amp;gt;BSRR = GPIO_Pin_13;   &lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Setzt das Bit für Pin 13 im Port C. Das raffinierte daran ist, dass nur Bits, die im &#039;&#039;&#039;BRR&#039;&#039;&#039; gesetzt sind, auch im Port verändert werden. Nicht gesetzte Bits wirken sich auf den tatsächlich Portzustand nicht aus. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
 GPIOC-&amp;gt;BRR = GPIO_Pin_13;   &lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Löscht das entprechende Bit wieder.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;Standard Peripheral Library&#039;&#039; stellt für dies Zugriffe allerdings auch komfortable und vor allem sprechendere Funktionen zur verfügen, die weiter unten erklärt werden.&lt;br /&gt;
&lt;br /&gt;
===Initialisierung===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WICHTIG: Bevor man Pins eines GPIO-Ports benutzen kann, muss man die Clock des entsprechenden Ports mit der Funktion &#039;&#039;RCC_APB2PeriphClockCmd&#039;&#039; aktivieren , da diese nach einem Reset immer ausgeschaltet ist. Dies ist ein sehr beliebter Fehler beim Arbeiten mit Ports. Mehr dazu bei [[STM32F10x Standard Peripherals Library#Clocks - Der Herzschlag unseres Mikrocontroller|Clocks]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bevor man einen Pin benutzen kann, muss dieser Initialisiert werden.&lt;br /&gt;
&lt;br /&gt;
Die Funktion &#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039; ermöglicht es einen oder mehere Pins auf einmal zu konfigurieren. Hierzu muss eine struct ausgefüllt und GPIO_Init übergeben werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  u16 GPIO_Pin;&lt;br /&gt;
  GPIOSpeed_TypeDef GPIO_Speed;&lt;br /&gt;
  GPIOMode_TypeDef GPIO_Mode;&lt;br /&gt;
}GPIO_InitTypeDef;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Definieren müssen wird dieses zuvor jedoch auch. Dies geschieht mit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitTypeDef GPIO_InitStructure;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Danach können wir bequem auf die einzelnen Einträge aus der Struct zugreifen.&lt;br /&gt;
Der nachfolgende Code zeigt eine Beispielkonfiguration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;GPIO_Speed&#039;&#039;&#039; definiert die maximale Änderungsrate des Pins. Das ist aber keine harte Grenze, sondern verändert die Charakteristik des Pintreibers. Eine niedrigere Grenzfrequenz reduziert die Flankensteilheit und damit Leitungsreflexionen. &lt;br /&gt;
Mögliche Werte für GPIO_Speed&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039; Wert&#039;&#039;&#039; ||&#039;&#039;&#039; Bedeutung&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_2MHz || 2MHz / 125ns&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_10MHz || 10MHz / 25ns &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Speed_50MHz || 30-50MHz / 5-12ns&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;GPIO_Mode&#039;&#039;&#039; konfiguriert den Port oder den Port Pin.&lt;br /&gt;
Mögliche Werte für GPIO_Mode&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039; Wert&#039;&#039;&#039; ||&#039;&#039;&#039; Beschreibung&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_Out_PP || Der Pin wird als Ausgang im Push Pull Modus konfiguriert. Dies bedeutet, der Ausgang kann sowohl positive als auch negative Ströme liefern&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_Out_OD || Der Pin wird als Ausgang im Open Drain Modus konfiguriert.&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IN_FLOATING || Der Pin wird als Eingang im Floating modus konfiguriert. Dies bedeutet, das der Pin kein Niveau hat. Er &amp;quot;schwebt&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AIN || Der Pin wird als analoger Eingang konfiguriert&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IPD || Der Pin wird als Eingang konfiguriert mit internem Pull Down Widerstand&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_IPU || Der Pin wird als Eingang konfiguriert mit internem Pull Up Widerstand&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AF_OD || Der Pin wird mit Alternativer Funktion (SPI, I2C..) konfiguriert im Open Drain Modus&lt;br /&gt;
|-&lt;br /&gt;
| GPIO_Mode_AF_PP || Der Pin wird mit Alternativer Funktion (SPI, I2C..) konfiguriert im Push Pull Modus&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GPIO_Mode_Pin&#039;&#039;&#039; definiert den Pin welcher konfiguriert werden soll.&lt;br /&gt;
&lt;br /&gt;
Um den zu konfigurierenden Pin anzugeben, genügt es &#039;&#039;&#039;GPIO_Pin_X&#039;&#039;&#039; zu schreiben.&lt;br /&gt;
Wobei &amp;quot;X&amp;quot; durch die entsprechende Pinnummer zu ersetzen ist.&lt;br /&gt;
&amp;lt;br&amp;gt;Es können auch mehrere Pins gleichzeitig Konfoguriert werden. &lt;br /&gt;
Dazu wird einfach logische ODER verknüfung verwendet ( | )&lt;br /&gt;
Möchte man den gesamten Port konfigurieren, so genügt es wenn man &#039;&#039;&#039;GPIO_Pin_All&#039;&#039;&#039; angibt.&lt;br /&gt;
&lt;br /&gt;
Hier ein Beispiel mit mehreren Pins&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_7&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun alle relevanten Parameter gesetzt haben, müssen wir den Port nur noch mit &#039;&#039;&#039;GPIO_Init()&#039;&#039;&#039; initialisieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;GPIOx&#039;&#039; ist der Pointer auf den den zu initialisierenden Port. Wobei x einfach mit dem entsprechenden Buchstaben zu ersetzen ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;GPIO_InitStruct&#039;&#039; ist der Pointer auf die soeben von uns ausgefüllte struct. &lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für GPIOA&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // Clock des Ports einschalten&lt;br /&gt;
&lt;br /&gt;
GPIO_InitTypeDef GPIO_InitStructure;&lt;br /&gt;
&lt;br /&gt;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;&lt;br /&gt;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;&lt;br /&gt;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_7&lt;br /&gt;
&lt;br /&gt;
GPIO_Init(GPIOA, &amp;amp;GPIO_InitStructure);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Etwas auf den Port ausgeben===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Um etwas an einem GPIO auszugeben, gibt es drei Möglichkeiten (Funktionen). &lt;br /&gt;
Entweder man schreibt den gesamten Port oder nur ein einzelnes Bit.&lt;br /&gt;
Die STMs bieten eine [[Bitbanding]]-Funktion, welche hier nicht genauer erklärt werden soll.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die erste Funktion lautet &#039;&#039;&#039;GPIO_SetBits()&#039;&#039;&#039; und &#039;&#039;&#039;GPIO_ResetBits()&#039;&#039;&#039;&lt;br /&gt;
Erster Parameter ist der GPIO Port, der zweite ist der Pin oder eine Kombination daraus. Kombinationen sind wieder logisch zu verknüpfen mit ODER ( | )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_5); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
&lt;br /&gt;
GPIO_ResetBits(GPIOA,GPIO_Pin_2 | GPIO_Pin_9); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die zweite Funktion lautet &#039;&#039;&#039;GPIO_WriteBit()&#039;&#039;&#039; Diese Funktion kann sowohl einen oder mehrere Pins setzen als auch löschen. Erster Parameter ist der GPIO Port, der zweite ist der Pin oder eine Kombination daraus, und der dritte sagt aus, ob gesetzt oder gelöscht wird! Kombinationen sind auch hier logisch zu verknüpfen mit ODER ( | ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_WriteBit(GPIOA, GPIO_Pin_1 | GPIO_Pin_5, Bit_SET); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
&lt;br /&gt;
GPIO_WriteBit(GPIOA, GPIO_Pin_2 | GPIO_Pin_9, Bit_RESET); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Funktion 3&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die dritte und somit letzte Funktion lautet &#039;&#039;&#039;GPIO_Write()&#039;&#039;&#039;. Diese Funktion beschreibt den gesamten Port! Erster Parameter ist der GPIO Port, der zweite ist der an dem Port auszugebende Wert. &#039;&#039;&#039;Wichtig!&#039;&#039;&#039; Hier wird der ganze Port mit einem 16 bit Wert beschrieben. Viel leserlicher als mit magic numbers im Hex-Format zu arbeiten, sind natürlich auch hier die defines: GPIO_Pin_1 | GPIO_Pin_5&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_Write(GPIOA,0x0011); //Setzt die Bits 1 und 5 am GPIOA auf high&lt;br /&gt;
GPIO_Write(GPIOA, GPIO_Pin_1 | GPIO_Pin_5); // Geht natürlich auch und ist verständlicher                &lt;br /&gt;
&lt;br /&gt;
GPIO_ResetBits(GPIOA,0x0102); //Setzt die Bits 2 und 9 am GPIOA auf low&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pin Sperren===&lt;br /&gt;
&lt;br /&gt;
Der [[STM32]] bietet die Möglichkeit, einen Pin zu sperren. Ist ein Pin gesperrt, so kann dessen Zustand (High / Low) &#039;&#039;&#039;bis zu einem Reset&#039;&#039;&#039; nicht mehr geändert werden! Wie wir es nun gewohnt sind, hat ST dafür eine eigene Funktion geschrieben. Diese lautet &#039;&#039;&#039;GPIO_PinLockConfig()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, welche man sperren möchte. Diese kann man wieder mit der ODER Verknüpfung kombinieren.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_PinLockConfig(GPIOA,GPIO_Pin_1 | GPIO_Pin_5); //Sperrt die Pins bis zu einem Reset&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Eingänge einlesen===&lt;br /&gt;
&lt;br /&gt;
Um Daten in den [[STM32]] einzulesen, gibt es wieder ein paar ST Funktionen. Diese möchten wir hier vorstellen. Die dafür verwendbaren Funktionen sind: &#039;&#039;&#039;GPIO_ReadInputDataBit()&#039;&#039;&#039; sowie &#039;&#039;&#039;GPIO_ReadInputData()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, die man einlesen möchte. Bei &#039;&#039;&#039;GPIO_ReadInputData()&#039;&#039;&#039; wird jedoch nur der Port übergeben, da diese Funktion den &#039;&#039;&#039;gesamten&#039;&#039;&#039; Port zurück liefert! Hier wird der tatsächliche logische Pegel am Pin eingelesen!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint8_t ucStatus = 0;&lt;br /&gt;
&lt;br /&gt;
ucStatus = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5); //Speichert den Zustand von Pin5 am GPIOA in die 8-bit-Variable ucStatus &lt;br /&gt;
                                                    //(uint8_t ist die kleinstmögliche, eigenständige Variable für dieses eine Bit)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint16_t uiPort = 0;&lt;br /&gt;
&lt;br /&gt;
uiPort = GPIO_ReadInputData(GPIOA); //Speichert den Zustand von GPIOA in die 16-bit-Variable uiPort&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ausgänge einlesen===&lt;br /&gt;
&lt;br /&gt;
Man hat ja häufig das Problem, dass man gerne nachsehen möchte, was man denn gerade am Ausgang ausgibt. Dazu kann man den Ausgang wie ein Eingang einlesen. Die dafür verwendbaren Funktionen sind: &#039;&#039;&#039;GPIO_ReadOutputDataBit()&#039;&#039;&#039; sowie &#039;&#039;&#039;GPIO_ReadOutputData()&#039;&#039;&#039;. Erster Parameter ist der Port, der zweite sind die Pins, welche man auslesen möchte. Bei &#039;&#039;&#039;GPIO_ReadOutputData()&#039;&#039;&#039; wird jedoch nur der Port übergeben, da diese Funktion den &#039;&#039;&#039;gesamten&#039;&#039;&#039; Port zurück liefert!Hier wird &#039;&#039;&#039;nicht&#039;&#039;&#039; der tatsächliche logische Pegel am Pin eingelesen, sondern was im Ausgangsregister eingestellt wurde (also eigentlich anliegen sollte)! Diese beiden Werte können sich auf Grund externer Einflüsse aber unterscheiden!!!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint8_t ucStatus = 0;&lt;br /&gt;
&lt;br /&gt;
ucStatus = GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_5); //Speichert den Zustand von Pin5 am GPIOA in die 8-bit-Variable ucStatus &lt;br /&gt;
                                                     //(uint8_t ist die kleinstmögliche, eigenständige Variable für dieses eine Bit)&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
uint16_t uiPort = 0;&lt;br /&gt;
&lt;br /&gt;
uiPort = GPIO_ReadOutputData(GPIOA); //Speichert den Zustand von GPIOA in die 16-bit-Variable uiPort&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Deinitialisieren von Ports===&lt;br /&gt;
&lt;br /&gt;
Es gibt auch die Möglichkeit, den Port zu deinitialisieren. Dann wird er mit seinen Standardwerten konfiguriert. Die Funktion dazu lautet &#039;&#039;&#039;GPIO_DeInit()&#039;&#039;&#039;. Erster und einziger Parameter ist der Port, den man deinitialisieren möchte.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
GPIO_DeInit(GPIOA); //Setzt den GPIOA auf seine Standardwerte zurück&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Weblinks, Foren, Communities =&lt;br /&gt;
&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/175840 Diskussion zum Artikel]&lt;br /&gt;
* [https://sourceforge.net/projects/libopenstm32/ libopenstm32] -- Eine Open-Source Alternative (GPL, Version 3 oder höher) zur ST Library&lt;br /&gt;
* Artikel [[STM32]]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:STM32]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=60261</id>
		<title>Mini2440</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=60261"/>
		<updated>2011-09-07T11:55:20Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Toolchain aufsetzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.friendlyarm.net/products/mini2440 Mini2440 von friendlyarm ]&lt;br /&gt;
&lt;br /&gt;
Das [[Mini2440]] ist ein [[ARM]]-Board mit [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2440&amp;amp;ppmi=PartnoSearch s3c2440] &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;o&#039;&#039;&#039;n &#039;&#039;&#039;C&#039;&#039;&#039;hip von Samsung.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Board&#039;&#039;&#039; bietet:&lt;br /&gt;
* 3,5&amp;quot;, 7&amp;quot; Touchscreen-[[TFT]] oder [[VGA]] &amp;quot;Karte&amp;quot;&lt;br /&gt;
* ARM920T, 400Mhz standard Taktfrequenz, bis zu 533Mhz&lt;br /&gt;
* 64MB-1GB NAND Flash (User App/OS), 2MB NOR Flash (BIOS)&lt;br /&gt;
* 64MB RAM&lt;br /&gt;
* Audio (Stereo Out, 2xMono In)&lt;br /&gt;
* SD-Slot&lt;br /&gt;
* [[USB]] Host, USB Device&lt;br /&gt;
* 10/100MBit LAN (DM9000)&lt;br /&gt;
* 3 Serial Ports&lt;br /&gt;
* [[SPI]], [[PWM]], [[I2C]], ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440.jpg|300px]][[Bild:mini2440_35.jpg|300px]][[Bild:mini2440_7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Als das passende Entwicklungswerkzeug ist ein Linux-Rechner mit passendem Cross-Compiler sowie ein paar Tools vorgesehen.&lt;br /&gt;
Was wirklich benötigt wird:&lt;br /&gt;
* Serial Terminal (picocom, minicom, cutecom, gtkterm, komport, ...)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Mini2440#Toolchain Toolchain]&lt;br /&gt;
* s3c_boot_usb oder [http://programmers-projects.de/node/16 mini2440_usb_upload] (aktueller; mit Status-Anzeige etc.) zum Hochladen von Bootloader, Kernel etc. über USB&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ausserdem noch:&lt;br /&gt;
* ncurses-dev-Dateien und dialog (Für Kernel-menuconfig)&lt;br /&gt;
* screen, midnight commander&lt;br /&gt;
* Editor mit root-Rechten (z.B. [http://home.in.tum.de/~lazarov/files/research/papers/vi_ausarbeitung.pdf vim])&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen am/mit dem Board ===&lt;br /&gt;
&lt;br /&gt;
Ganz wichtig ist es, eine gute Spannungsversorgung zu verwenden. Es kam anscheinend schon öfter vor, dass kleine Spannungseinbrüche das Board aus dem Gleichgewicht bringen.&lt;br /&gt;
Ich verwende normalerweise das mitgelieferte Netzteil oder ein &#039;&#039;&#039;5V&#039;&#039;&#039;/&#039;&#039;&#039;2A&#039;&#039;&#039; Schaltnetzteil, funktionieren beide einwandfrei.&lt;br /&gt;
Gerade das grosse, 7&amp;quot;, Display braucht ein starkes Netzteil.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ungefährer Stromverbrauch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Board konfig. || Stromverbrauch&lt;br /&gt;
|-&lt;br /&gt;
| mini2440  || 140mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 3,5&amp;quot; TFT || 410mA (T35 Display)&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 7&amp;quot; TFT || 1000mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + VGA Board || mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verbindung zum PC ====&lt;br /&gt;
&lt;br /&gt;
Um vernünftig arbeiten zu können, braucht man auf jeden Fall diese Kabel:&lt;br /&gt;
* 1 USB A&amp;lt;-&amp;gt;USB B-Kabel&lt;br /&gt;
* 1 9 poliges SUB-D Kabel mit zwei Buchsen&lt;br /&gt;
* eventuell einen USB-RS232 Adapter, falls man keinen Anschluss am Rechner hat&lt;br /&gt;
&lt;br /&gt;
Einen Zugriff auf die Konsole hat man - nach Anpassung der IP - über Telnet sowie über die serielle Konsole.&lt;br /&gt;
&lt;br /&gt;
Die serielle Konsole ist in der Standardkonfiguration aktiviert und &#039;&#039;&#039;sollte&#039;&#039;&#039; auch während des Entwickelns &#039;&#039;&#039;immer aktiv&#039;&#039;&#039; sein - so verhindert man ein ungewolltes Ausperren.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk ====&lt;br /&gt;
Entweder klickt man sich quer durch die chinesische/japanische Software und stellt diese auf Englisch um, oder aber man klickt sich blind zu der Stelle, an der man IP Adresse, Gateway und Netzmaske angeben kann.&lt;br /&gt;
&lt;br /&gt;
Etwa genauso einfach sieht es über die Konsole aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Die folgenden drei Zeilen, dürften das soweit bewekstelligen, dass das Netzwerk-Device die IP-Adresse &#039;&#039;&#039;192.168.0.55&#039;&#039;&#039;, die Netzmaske &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039; zugeteilt bekommt. Die beiden anderen Anweisungen sagen dem System, welches Netzwerkgerät der Router ist. In diesem Fall &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, was bisher vielleicht schon in der &#039;&#039;/etc/resolv.conf&#039;&#039; steht. Das lässt sich einfach mit &#039;&#039;cat /etc/resolv.conf&#039;&#039; ansehen. Wenn diese bereits den richtigen Inhalt hat, kann man die &#039;&#039;echo &amp;quot;nam...&#039;&#039;-Anweisung weglassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die resolv.conf nicht existiert oder einen falschen Wert enthält, &#039;&#039;&#039;überschreibt&#039;&#039;&#039; man diese, in dem man nur &#039;&#039;&#039;ein&#039;&#039;&#039; &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; nach das echo setzt. Stehen dort zwei &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; wird die nameserver-Info nur an die Datei angehängt und es kann zu Problemen kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ifconfig eth0 192.168.0.55 netmask 255.255.255.0&lt;br /&gt;
 $ route add default gw 192.168.0.1&lt;br /&gt;
 $ echo &amp;quot;nameserver 192.168.0.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzeraccounts ====&lt;br /&gt;
&lt;br /&gt;
Linux legt wie alle Unix-artigen Betriebssysteme sehr grossen Wert auf eine ordentliche Benutzer- und Rechteverwaltung.&amp;lt;br&amp;gt;&lt;br /&gt;
Daher sollte man sich überlegen, ob es nicht vielleicht besser wäre, wenn man einen extra Benutzer zum Arbeiten/Basteln/Produktiv-Sein/Bier-Trinken/... anlegt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn nicht unbedingt nötig, sollte man auf das Arbeiten als &#039;&#039;&#039;root&#039;&#039;&#039; (oder auch Superuser, Admin, ...) verzichten. Dadurch dass man uneingeschränkt &#039;&#039;&#039;alle&#039;&#039;&#039; Rechte auf dem System besitzt kann es durch Programmierfehler oder auch Schadsoftware zu ernsthaften Schäden kommen (Datenverlust, eventuell Hardwareschäden).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Entscheidung ob man wirklich root sein muss, ist eigentlich relativ einfach. Sie wird normalerweise &#039;&#039;&#039;immer&#039;&#039;&#039; erstmal mit &#039;&#039;&#039;nein&#039;&#039;&#039; beantwortet.&amp;lt;br&amp;gt;Sollte sich im Lauf der Zeit doch herausstellen, dass man root sein muss, kann man diesen Weg immer noch einschlagen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Für einige Aufgaben sind jedoch auch root-Rechte erforderlich.&lt;br /&gt;
Zum Beispiel, wenn man direkt mit outporb()/inportb()/outb()/inb()/... arbeiten will.&amp;lt;br&amp;gt;&lt;br /&gt;
Für diese Fälle gibt es ein gutes Tool, es nennt sich [http://de.wikipedia.org/wiki/Sudo sudo].&lt;br /&gt;
Man kann sudo z.&amp;amp;nbsp;B. sagen, dass Benutzer &#039;&#039;xy&#039;&#039; das Programm /usr/bin/blubb mit root-Rechten immer ausführen darf. Benutzer &#039;&#039;ab&#039;&#039; darf das aber nur, wenn er &#039;&#039;&#039;sein&#039;&#039;&#039; Passwort eingibt. Dann gibt es vielleicht noch Benutzer &#039;&#039;zz&#039;&#039;, der alles ohne Passwort als root ausführen darf.&lt;br /&gt;
&lt;br /&gt;
===== Anlegen eines neuen Benutzeraccounts =====&lt;br /&gt;
Ich gehe davon aus, dass ein Image mit busybox auf dem Board installiert ist. Wenn das Image von FriendlyARM installiert ist, ist das der Fall.&lt;br /&gt;
&lt;br /&gt;
Ein Auszug aus der [http://linux.die.net/man/1/busybox Manpage] von busybox:&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
    adduser [ OPTIONS ] user_name&lt;br /&gt;
&lt;br /&gt;
    Adds a user to the system&lt;br /&gt;
&lt;br /&gt;
    Options:&lt;br /&gt;
&lt;br /&gt;
    -h DIR          Assign home directory DIR&lt;br /&gt;
    -g GECOS        Assign gecos field GECOS&lt;br /&gt;
    -s SHELL        Assign login shell SHELL&lt;br /&gt;
    -G              Add the user to existing group GROUP&lt;br /&gt;
    -S              create a system user (ignored)&lt;br /&gt;
    -D              Do not assign a password (logins still possible via ssh)&lt;br /&gt;
    -H              Do not create the home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Heisst um einen Benutzer &#039;&#039;banana_joe&#039;&#039; mit dem Heimatverzeichnis &#039;&#039;/home/banana_joe&#039;&#039; anzulegen, muss man folgendes &#039;&#039;&#039;als root&#039;&#039;&#039; eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ adduser -h /home/banana_joe -s /bin/sh banana_joe&lt;br /&gt;
 $ passwd banana_joe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;adduser&#039;&#039; legt den Benutzer an, &#039;&#039;passwd&#039;&#039; vergibt ein Passwort.&lt;br /&gt;
&lt;br /&gt;
=== Übertragen von Daten/Programmen in den Flash-Speicher ===&lt;br /&gt;
&lt;br /&gt;
Das übertragen gestaltet sich auf ganz unterschiedliche Weise. Aus Gründen der Einfachheit werde ich hier nur die sinnvollsten/einfachsten/schnellsten Wege beschreiben. Andere Möglichkeiten wären noch &#039;&#039;lrzsz&#039;&#039;, USB und [[JTAG]].&lt;br /&gt;
Wer zuviel Zeit hat, kann sich ja auch ein eigenes Protokoll auf TCP/IP Ebene basteln oder den Kristallspeicher erfinden ;)&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datei übertragen hat, muss man sich vergewissern, dass diese auch Ausführrechte besitzt, wenn sie ein Programm oder ein Ordner ist. Die Lese- und Schreibrechte müssen ebenfalls richtig gesetzt sein.&lt;br /&gt;
Normalerweise stimmt dies alles so wie es ist, aber manchmal muss man ein wenig nachhelfen.&lt;br /&gt;
Wenn sich ein Programm nicht ausführen lässt, oder man nicht in einen Ordner wechseln kann, fehlen die Rechte zum Ausführen. Geändert wird das so:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;datei/ordner&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da hier aber nicht die Unix-Rechte erklärt werden sollen, verweise ich [http://linuxwiki.de/DateiRechte hierauf]&lt;br /&gt;
&lt;br /&gt;
==== http ====&lt;br /&gt;
Für diese Methode muss natürlich das [http://www.mikrocontroller.net/articles/Mini2440#Netzwerk Netzwerk] eingerichtet sein. Man braucht auf einem PC im Netz einen laufenden Werbserver, auf den man die zu übertragenden Dateien legt.&lt;br /&gt;
Nun kann man diese in ein Verzeichnis seiner Wahl &amp;quot;herunterladen&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ cd /tmp&lt;br /&gt;
 $ wget http://10.2.5.29/datei&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ftp ====&lt;br /&gt;
Sobald auf dem Board ein FTP-Server läuft, kann man sich &amp;quot;ganz normal&amp;quot; mit einem FTP-Client (zum Beispiel &#039;&#039;&#039;gftp&#039;&#039;&#039; oder &#039;&#039;&#039;ncftp&#039;&#039;&#039;) verbinden und die Dateien hochladen.&lt;br /&gt;
Ebenso kann man sich auch vom Board auf einen FTP-Server verbinden.&lt;br /&gt;
Nennenswerte Programme sind z.B. &#039;&#039;&#039;ftp&#039;&#039;&#039; für die Linux-Konsole, welches im FriendlyARM Image bereits enthalten ist oder der ncurses-basierende Client &#039;&#039;&#039;ncftp&#039;&#039;&#039;. Allerdings sollte man sich für ncurses-Programme per Telnet oder SSH einloggen, da die serielle Konsole nur rudimentäre Terminal-Emulation unterstützt und die Bildschirmausgabe nicht gerade schön wirkt.&lt;br /&gt;
&lt;br /&gt;
==== scp/ssh ====&lt;br /&gt;
Dazu muss zuerst einmal ein SSH Server auf dem Board laufen.&lt;br /&gt;
[http://www.openssh.com openSSH] ist dafür die erste Wahl. Mit [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] gibt es einige Probleme, da man für SCP auch noch die SCP Binary von openSSH braucht.&lt;br /&gt;
&lt;br /&gt;
Sobald der ssh server läuft, ist alles ganz einfach:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei user@ziel:/pfad&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei einem Board mit der IP 10.0.0.69 und dem User &#039;&#039;root&#039;&#039; wäre das die Befehlszeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei root@10.0.0.69:/root&amp;lt;/pre&amp;gt;&lt;br /&gt;
... und die Datei &#039;&#039;datei&#039;&#039; landet im Heimatverzeichnis von &#039;&#039;root&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um nicht jedes mal das Passwort eingeben zu müssen, lohnt es sich SSH so zu konfigurieren, dass es mit [http://wiki.unixboard.de/index.php/SSH_ohne_Passwort Key-Files] läuft.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
Toolchains gibt es im Netz und auf der CD/DVD zum Board mehrere fertig übersetzte - natürlich lässt sich die Toolchain auch selbst compilieren.&lt;br /&gt;
Das Risiko beim selbst compilieren einer Toolchain liegt darin, dass man eventuell einen fehlerhaften Compiler produziert.&lt;br /&gt;
Gründe hierfür sind z.B.:&lt;br /&gt;
* fehlende, wichtige Patches&lt;br /&gt;
* Verwenden von Entwicklerversionen mit eventuellen Bugs&lt;br /&gt;
* ein schon fehlerhafter Host-Compiler&lt;br /&gt;
* falsche Einstellungen (Prozessor-Architektur, Optimierung, ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das sogenannte Bootstrappen eines Compilers erkennt solche Probleme in den meisten Fällen. Bootstrappen heißt, dass zuerst mit dem Host-Compiler der Quellcode des neuen übersetzt wird und mit diesem zweiten Compiler wird ein dritter Compiler übersetzt. Wenn dies klappt, kann man im Normalfall davon ausgehen, dass der dritte Compiler in Ordnung ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Jedoch ist dies bei einem Crosscompiler so nicht möglich, da der zweite Compiler ja keinen Code für den Host-Computer, sondern nur für das Target produzieren kann. Somit würde man sich einen Compiler für das Board bauen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wer auf Nummer sicher gehen will, nimmt am besten eine der bekannten ARM-Toolchains oder natürlich die von FriendlyARM.&lt;br /&gt;
&lt;br /&gt;
==== old ABI / new EABI ? ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ABI&#039;&#039;&#039; steht für &#039;&#039;&#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;, also eine Art &amp;quot;Standard&amp;quot; wie das compilierte Programm, die Binärdatei, auszusehen hat.&lt;br /&gt;
&lt;br /&gt;
Die ABI ist schon etwas älter und wurde von der EABI (&#039;&#039;&#039;&#039;&#039;E&#039;&#039;&#039;mbedded &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Da nahezu jede verfügbare Toolchain auf der EABI aufbaut, würde ich diese auch nutzen. Alte, für die ABI, compilierte Programme, lassen sich mit der Kernel-Unterstützung zum Ausführen von ABI Programmen trotzdem noch verwenden.&lt;br /&gt;
&lt;br /&gt;
Durch das verwenden der EABI entstehen normalerweise keine unüberwindbaren Hürden, beim compilieren von älteren Quellcodes. Jedenfalls nicht durch den Unterschied ABI/EABI.&lt;br /&gt;
&lt;br /&gt;
==== Kernel FPE / softfloat ? ====&lt;br /&gt;
&lt;br /&gt;
Irgendwann stolpert jeder, der mit ARM-CPUs und Linux arbeitet über mehrere Fragen.&lt;br /&gt;
* Was ist softfloat/FPE?&lt;br /&gt;
* Was ist schneller?&lt;br /&gt;
* Kann man beides nutzen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist softfloat/FPE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch, dass eine ARM-CPU normalerweile keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit Gleitkommaeinheit/FPU] besitzt, müssen alle Berechnungen, welche Kommazahlen enthalten in Software gelöst werden. Bei einem PC-System übernimmt diese Aufgabe eben die FPU und ist somit um einiges schneller.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;softfloat&#039;&#039; ist die Umsetzung durch den Compiler.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;FPE&#039;&#039; bedeutet &#039;&#039;&#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;E&#039;&#039;&#039;mulation&#039;&#039; und wird durch den Kernel bereit gestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist schneller&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Beim FPE-Verfahren wird der Code, welcher die Gleitkomma-Anweisungen enthält auch so übersetzt. Da die CPU aber keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU] besitzt und somit auch keine Maschinensprachen-Befehle dafür, wird eine &#039;&#039;Exception&#039;&#039; ausgelöst (&amp;quot;Fehler&amp;quot;), welche vom Kernel abgefangen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Nun steht der Kernel vor der Aufgabe, die Gleitkomma-Operation zu lösen und dem Programm das Ergebnis mitzuteilen. Danach muss er den Code für die Exception noch zu Ende führen und zurückkehren.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles in allem eine sehr aufwendige Methode.&lt;br /&gt;
&lt;br /&gt;
Da bei &#039;&#039;softfloat&#039;&#039; die Gleitkomma-Operationen vom Compiler soweit zerstückelt und wieder zusammengesetzt werden, dass gar keine Kommas mehr nötig sind, ist das in dem meisten Fällen flotter.&lt;br /&gt;
&lt;br /&gt;
Das schnellste, ist natürlich eine Hardware-[http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU], die es aber auf dem [[mini2440]] nicht gibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man beides nutzen?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Jein, wenn man im Kernel eine der beiden FPE-Methoden aktiviert hat und man führt ein softfloat-Programm aus, dann wird natürlich softfloat verwendet.&lt;br /&gt;
Wenn man allerdings ein FPE-Programm ausführen will und hat die Unterstützung nicht im Kernel, sieht es schlecht aus.&lt;br /&gt;
&lt;br /&gt;
Also am besten eine FPE auswählen und mit einer softfloat-Toolchain compilieren. Das spart Zeit und Kopfzerbrechen über Invalid Opcode/Segfaults usw. ;)&lt;br /&gt;
&lt;br /&gt;
==== Toolchain aufsetzen ====&lt;br /&gt;
Jenachdem, welche Toolchain man einsetzt, kann es sein, dass man den Compileraufruf anpassen muss.&lt;br /&gt;
Wenn man eine Cross Toolchain installiert hat und nur &#039;&#039;gcc&#039;&#039; auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim &#039;&#039;lokalen&#039;&#039; gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit&lt;br /&gt;
&amp;lt;pre&amp;gt; $ which gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc&lt;br /&gt;
oder&lt;br /&gt;
 $ arm-none-linux-gnueabi-gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über &#039;&#039;arm-linux-...&#039;&#039; zu erreichen ist. Entweder passt man die gcc-Aufrufe von hier an, oder man kann sich auch [http://wiki.unixboard.de/index.php/ManPage:ln symbolische Links] anlegen.&lt;br /&gt;
Zum Schluss sollte das dann ungefähr so aussehen, vom bin-Pfad der Toolchain aus!&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ls -al /usr/local/arm/4.3.2/bin/&lt;br /&gt;
 ...&lt;br /&gt;
 lrwxrwxrwx 1 root root      25 2010-02-25 07:15 arm-linux-ld -&amp;gt; arm-none-linux-gnueabi-ld&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich selbst arbeite mit der FriendlyARM-Toolchain, werde mich hier also meistens auf diese beziehen, ausser anders vermerkt.&lt;br /&gt;
===== FriendlyARM =====&lt;br /&gt;
[http://www.friendlyarm.net/downloads Hier] als &#039;&#039;ARM-Linux-GCC&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
Entpackt verbraucht diese Toolchain ca. 295MB. Mit ihr liessen sich bei mir bereits der Kernel, uboot, sowie zahlreiche Programme kompilieren.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird die Toolchain an die richtige Stelle entpackt, der Pfad mit angegeben und dann ist sie auch schon bereit.&lt;br /&gt;
Dieses Kommando sieht auf den ersten Blick etwas nach Dateisystem-Apokalypse aus, ist allerdings lage nicht so wild. Die Option &#039;&#039;-C /&#039;&#039; sagt, dass direkt ins Wurzelverzeichnis entpackt werden soll, daher benötigt man für diesen Schritt &#039;&#039;&#039;root-Rechte&#039;&#039;&#039;. Die FriendlyARM-Toolchain ist so aufgebaut, dass sie damit nach &#039;&#039;/usr/local/arm/4.3.2/&#039;&#039; entpackt wird, &#039;&#039;&#039;unser Ziel&#039;&#039;&#039; :)&lt;br /&gt;
&amp;lt;pre&amp;gt; $ tar xvfj arm-linux-gcc-4.3.2.tar.gz -C /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir das nun so haben, müssen wir natürlich auch noch sagen, wo er den Compiler findet.&lt;br /&gt;
Dazu öffnet man am besten seine &amp;quot;autorun-Datei&amp;quot; der Shell. In der Konsole ganz einfach mit vim/nano/etc zu erreichen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ vim /home/user/.bashrc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dort tragen wir dann &#039;&#039;&#039;ganz ans Ende&#039;&#039;&#039; dies ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=$PATH:/usr/local/arm/4.3.2/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kaum gespeichert, startet man eine neue shell (Konsole) und überprüft ob die Pfade stimmen.&lt;br /&gt;
Wenn &#039;&#039;/usr/local/arm/...&#039;&#039; im Pfad enthalten ist, müsste alles stimmen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ echo $PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tippt man nun &#039;&#039;&#039;nur&#039;&#039;&#039; &#039;&#039;arm-&#039;&#039; und drückt zweimal die Tabtaste, so müsste eine ellenlange Liste mit Programmen wie z.&amp;amp;nbsp;B. &#039;&#039;arm-linux-gcc&#039;&#039; oder &#039;&#039;arm-linux-ld&#039;&#039; erscheinen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== codesourcery =====&lt;br /&gt;
[http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 codesourcery arm-none-linux-gnueabi]&lt;br /&gt;
&lt;br /&gt;
===== buildroot =====&lt;br /&gt;
&lt;br /&gt;
Von http://www.buildroot.net das letzte stable Release holen, mini-2440 wird unterstützt. Der Build dauert zwar einige Zeit, aber nacher kann man sich an X11 erfreuen.&lt;br /&gt;
&lt;br /&gt;
===== PTXdist =====&lt;br /&gt;
&lt;br /&gt;
PTXdist ist ähnlich wie BuildRoot und unterstützt das Mini2440 seit der Version 2011.05.0. PTXdist verwendet Barebox(UBoot-V2) als Bootloader. Die Projektseite zu dem Mini ist unter http://www.oselas.org/oselas/bsp/pengutronix/mini2440_bsp_en.html zu finden.&lt;br /&gt;
&lt;br /&gt;
Wichtige Links:&lt;br /&gt;
* [http://www.oselas.org/oselas/bsp/pengutronix/download/OSELAS.BSP-Pengutronix-Mini2440-Quickstart.pdf Quickstart Guide geschrieben für das Mini]&lt;br /&gt;
* [http://www.oselas.org/software/ptxdist/download/ PTXdist Downloadverzeichnis]&lt;br /&gt;
* [http://www.pengutronix.de/oselas/toolchain/download/ OSELAS Toolchain Downloadverzeichnis]&lt;br /&gt;
* [http://www.oselas.org/oselas/bsp/pengutronix/download/ Projektdateien für das Mini]&lt;br /&gt;
* [http://www.oselas.org/software/ptxdist/appnotes/OSELAS.BSP-Pengutronix-Generic-arm-Quickstart.pdf How to become a PTXdist Guru] - Erklärung wie z.B. eigene Packete erstellt werden können&lt;br /&gt;
&lt;br /&gt;
=== Cross Compiling ===&lt;br /&gt;
Sobald die Toolchain richtig aufgesetzt ist kann man anfangen, seine Programme zu übersetzten.&lt;br /&gt;
&lt;br /&gt;
Hier folgt nur eine kurze Beschreibung, wer sowas genauer wissen will, sollte sich auf Seiten wie diesen umsehen:&lt;br /&gt;
* http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html&lt;br /&gt;
* http://linux.bytesex.org/cross-compiler.html&lt;br /&gt;
Ausserdem findet man zu vielen embedded-nutzbaren Programmen direkt ein Cross-Compiling Howto mit ein wenig google.&lt;br /&gt;
Ob diese nun für ARM, AVR32, PPC, MIPS, ... sind, ist im Grunde egal, da man ja meistens nur die Architektur anpassen muss.&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Möglichkeiten. Die erste ist der direkte Aufruf vom Compiler oder mittels eines &amp;quot;festen&amp;quot; Makefiles. Die zweite, wahrscheinlich Häufigste, ist das ausführen eines configure-Scriptes bevor der make-Vorgang gestartet wird.&lt;br /&gt;
&lt;br /&gt;
* Das einfache aufrufen des Compilers&lt;br /&gt;
Dazu ein einfaches Hello-World Programm:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
   printf(&amp;quot;hiho\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compiliert wird das Programm ganz einfach so:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ arm-linux-gcc &amp;lt;name.c&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach wird die Datei &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; an das Board [http://www.mikrocontroller.net/wikisoftware/index.php?title=Mini2440&amp;amp;action=submit#.C3.9Cbertragen_von_Daten.2FProgrammen_ins_Flash übertragen]. &lt;br /&gt;
Sobald &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; auf dem Board ist, kann es ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ./&amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Eventuell fehlen die Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ./configure-Scripte&lt;br /&gt;
Hier sieht es schon ein klein wenig schwieriger aus, ist es aber eigentlich nicht.&lt;br /&gt;
&#039;&#039;Normalerweise&#039;&#039;, aber &#039;&#039;&#039;nicht immer&#039;&#039;&#039;, sieht das compilieren eines Programms für das mini2440 so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ HOST=arm-linux ARCH=arm ./configure --build=arm-linux --your-options&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man muss dem configure-Script lediglich angeben, für welche Architektur das Makefile konfiguriert werden soll und welchen Compiler er dafür nehmen soll.&lt;br /&gt;
&lt;br /&gt;
=== Linux-Kernel ===&lt;br /&gt;
&lt;br /&gt;
Den Kernel-Quellcode besorgt man sich am besten den Kernel-Fork von buserror.&amp;lt;br&amp;gt; Wenn man nicht auf dem ARM selber kompilieren möchte, benutzt man wie hier im Beispiel einen Cross-Compiler (Siehe oben). Weiterhin wird noch git benötigt, um den Kernel-Quellcode zu laden.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6.32-rc8&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Kernel-Verzeichnis und den Kernel mit den Defaults konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd linux-2.6.32-rc8&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make mini2440_defconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Kernel anschließend kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Module bekommen wir wie folgt nach /mnt/mini2440/lib/modules installiert:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm INSTALL_MOD_PATH=/mnt/mini2440 make modules_install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir mit u-boot arbeiten, dann benötigen wir das zImage in /mnt/mini2440/kernel-2.6.32-rc8/arch/arm/boot, um daraus mittels mkimage (Siehe uboot) ein uImage zu erstellen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Kernel-Parameter&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
dem Kernel kann man zum Start noch Parameter für das Board mitgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;mini2440=[0..9][t][b]&amp;lt;/pre&amp;gt;&lt;br /&gt;
[0..9] bestimmen die Display-Timings (varieren je nach verwendetem Kernel)&lt;br /&gt;
* 0 3,5&amp;quot; Display N35 + TS (alt);&lt;br /&gt;
* 1 7&amp;quot; Display + TS;&lt;br /&gt;
* 2 VGA-Board;&lt;br /&gt;
* 3 3,5&amp;quot; Display T35 + TS;&lt;br /&gt;
* 4 5,6&amp;quot; Display Innolux + TS;&lt;br /&gt;
[t] Touchscreen ist vorhanden;&amp;lt;br&amp;gt;&lt;br /&gt;
[b] Backlight ist vorhanden;&lt;br /&gt;
&lt;br /&gt;
=== root-fs ===&lt;br /&gt;
Um ein eigenes Root-Filesystem zu compilieren, gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Die einfachsten sind Cross-Umgebungen wie [http://buildroot.uclibc.org/ buildroot] und [http://wiki.openembedded.net/index.php/Main_Page openembedded].&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
Auch relativ einfach ist es, sich ein fertig compiliertes debian-arm zu installieren. Wenn man das Debian einmal auf seiner SD-Karte laufen hat, ist es kein Problem mehr, alles wie gewohnt mit apt zu installieren usw. usw.&amp;lt;br&amp;gt;&lt;br /&gt;
Allerdings sind gerade die Scripte bei Debian noch nie dafür bekannt gewesen sonderlich schnell zu laufen und es ist sehr sehr träge beim booten.&lt;br /&gt;
&lt;br /&gt;
Ich habe auf meinem mini2440 seit einiger Zeit Debian am Laufen, habe aber sämtliche Init-Scripte durch eigene ersetzt, welche um einiges flotter laufen. Ebenso verzichte ich auf sysvinit und damit aber auch auf sehr nützliche Tools/Funktionen, wie die runlevels und shutdown oder reboot.&lt;br /&gt;
Diese Funktionen müssen auch von meinen eigenen Scripten übernommen werden. Dafür läuft es um einiges schneller.&lt;br /&gt;
&lt;br /&gt;
[http://emqbit.com/deboostrap-debian Hier] eine Anleitung für ein AT91-Linux Board mit Debian. Diese kann fast 1:1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit X11, Lighttpd, PHP, Python, mc, vim, mpd, alsa, gcc, ... (und auch apache als leidige Abhängigkeit von PHP) braucht mein Debian etwa 550MB auf der SD-Karte.&lt;br /&gt;
Schon ein ordentlicher Brummer, aber egal, es bootet mit eigenen Scripten innerhalb von 15 Sekunden.&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
Ooooh wer daran denkt, hat einfach nur zuviel Zeit. Gentoo in allen Ehren, aber allein PHP zu compilieren dauert gut 4 Stunden... danach habe ich es aufgegeben.&lt;br /&gt;
&lt;br /&gt;
Wer Gentoo installieren kann, wird sich auf dem Mini2440 auch nicht schwerer tun, als auf einem PC. Der Unterschied besteht nur darin, dass man die Stage auf SD Karte packen muss, am normalen Rechner natürlich, und dort dann schon die wichtigsten Einstellungen vornehmen muss.&lt;br /&gt;
&lt;br /&gt;
Mit Portage und den ganzen Dev-Files ist Gentoo ein riesen Gebilde für so ein schwachbrüstiges Board. Eine 4GB SD-Karte ist das Minimum. Außer man bootet zuerst in den Flash und dann chrootet man auf ein Gentoo auf einer USB-Festplatte. uboot kann das, soweit ich weiß, nicht.&lt;br /&gt;
&lt;br /&gt;
=== sys-fs ===&lt;br /&gt;
Sysfs ist ein virtuelles Dateisystem, welches seit dem Linux Kernel 2.6. zur Verfügung gestellt wurde. Der Kernel stellt dabei Konfigurationen, Informationen über Vorrichtungen und Treiber im sogenannten userspace zur Verfügung. Dies Bedeutet einfach, dass Informationen/Geräte an einer festgelegten Stelle im Dateisystem stehen und ausgelesen oder beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
Über einige Dateien in diesem Dateisystem können GPIOs und z.B. auch LEDs angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer ===&lt;br /&gt;
Der Framebuffer ist von Haus aus im FriendlyARM Kernel aktiviert und ohne ihn lässt sich im Linux keine Ausgabe auf dem Display realisieren. Er ist unter &#039;&#039;/dev/fb0&#039;&#039; zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Kernelkonfiguration muss die Framebuffer-Konsole und der Framebuffer-Treiber für das jeweilige Display gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Eine Textausgabe geht ganz einfach über das Terminal, welche auf ihn gemappt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/tty1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann dem Framebuffer diverse Argumente mitgeben, die die Ausgabe auf dem Display beeinflussen. Diese werden über &#039;&#039;fbcon=...&#039;&#039; angeben. Man kann auch mehre Argumente angeben, das sähe zum Beispiel so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p1 console=ttySAC0 fbcon=rotate:1 fbcon=scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können mehrere fbcon-Parameter auch durch Komma getrennt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
... fbcon=rotate:1,scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Scrollback-Buffer ist auf diesem Display eigentlich nicht nötig, da man hier auf dem Mini2440 auf keiner Konsole mit Tastatur usw. arbeitet. Daher schaltet man ihn mit &#039;&#039;fbcon=scrollback:0&#039;&#039; ab, das spart gegenüber dem Standardwert 32kB RAM.&amp;lt;br&amp;gt;&lt;br /&gt;
Wer ihn doch benötigt, kann ihn natürlich trotzdem verwenden. Die Zahl nach dem Doppelpunkt steht für die Größe in Bytes. Ein &#039;&#039;k&#039;&#039; als Suffix steht für Kilobyte, &#039;&#039;fbcon=scrollback:1024k&#039;&#039; entspräche einem Scrollback-Buffer von 1MB.&lt;br /&gt;
&lt;br /&gt;
Für die FB-Konsole gibt es einige weitere Möglichkeiten und viele Optionen lassen sich zur Laufzeit ändern. Hier habe ich nur das Wichtigste beschrieben. Wer darüber mehr erfahren will, sollte sich im Kernel-Quellcode die Datei &#039;&#039;Documentation/fb/fbcon.txt&#039;&#039; ansehen.&lt;br /&gt;
&lt;br /&gt;
==== Font wählen ====&lt;br /&gt;
Die voreingestellte VGA8x16 Font ist etwas groß und es passt nicht allzuviel Text auf das Display. Die am besten lesbare, kleine Schrift ist die Mac6x11 Font.&lt;br /&gt;
In menuconfig folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Select compiled-in fonts&lt;br /&gt;
            &amp;lt;*&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*]   Map the console to the primary display device&lt;br /&gt;
            [*]   Framebuffer Console Rotation&lt;br /&gt;
            [*] Select compiled-in fonts&lt;br /&gt;
            [ ]   VGA 8x8 font&lt;br /&gt;
            [ ]   VGA 8x16 font&lt;br /&gt;
            [*]   Mac console 6x11 font (not supported by all drivers)&lt;br /&gt;
            [ ]   console 7x14 font (not supported by all drivers)&lt;br /&gt;
            [ ]   Pearl (old m68k) console 8x8 font&lt;br /&gt;
            [ ]   Acorn console 8x8 font&lt;br /&gt;
            [ ]   Mini 4x6 font&lt;br /&gt;
            [ ] Sparc console 8x16 font&lt;br /&gt;
            [ ] Sparc console 12x22 font (not supported by all drivers)&lt;br /&gt;
            [ ] console 10x18 font (not supported by all drivers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Werden mehrere Fonts eincompiliert, können sie so ausgewählt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Kernel-Commandline)&lt;br /&gt;
... fbcon=font:xxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mögliche Werte für &#039;&#039;xxxx&#039;&#039; sind:&lt;br /&gt;
* VGA8x8&lt;br /&gt;
* VGA8x16&lt;br /&gt;
* Mac6x11&lt;br /&gt;
* 7x14&lt;br /&gt;
* 10x18&lt;br /&gt;
* MINI4x6&lt;br /&gt;
* RomanLarge&lt;br /&gt;
* SUN8x16&lt;br /&gt;
* SUN12x22&lt;br /&gt;
* ProFont6x11&lt;br /&gt;
* Acorn8x8&lt;br /&gt;
* PEARL8x8&lt;br /&gt;
&lt;br /&gt;
Bei machen Fonts steht in der Kernel-Menuconfig &#039;&#039;not supported by all drivers&#039;&#039;. Dies erklärt sich so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Note, not all drivers can handle font with widths not divisible by 8,&lt;br /&gt;
such as vga16fb.&lt;br /&gt;
kernel-src/Documentation/fb/fbcon.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manche Treiber können nicht mit Fontbreiten/-höhen umgehen, welche nicht durch 8 teilbar sind. Da aber z.B. die MAC6x11 Font auch nicht durch 8 teilbar ist und das Mini2440 das anzeigen kann, gehe ich davon aus, dass alle funktionieren.&lt;br /&gt;
&lt;br /&gt;
==== Rotation ====&lt;br /&gt;
Um das Display zu &amp;quot;drehen&amp;quot; folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*] Framebuffer Console Rotation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also Kernel-Parameter im Bootloader dann einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fbcon=rotate:x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für &#039;&#039;x&#039;&#039; sind Werte von 0 bis 3 gültig. Jeweils wird um 90° im Uhrzeigersinn weitergedreht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Rotation bezieht sich &#039;&#039;&#039;nur&#039;&#039;&#039; auf den Framebuffer. Ein anschließend gestartetes Qtopia (z.B.) bleibt von der gewählten Einstellung unberührt.&lt;br /&gt;
In eigenen Anwendungen, welche eine grafische Oberfläche bereitstellen, lässt sich die Rotation allerdings verwenden, indem man einfach die Datei &#039;&#039;&#039;/proc/cmdline&#039;&#039;&#039; ausliest und den dort gegebenen Wert verwendet, um seine Bildschirmausrichtung anzupassen.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader ===&lt;br /&gt;
Die beiden verfügbaren Bootloader sind vivi (ein &amp;quot;standard-s3c24xx-Linux-Bootloader&amp;quot;) und u-boot, &#039;&#039;&#039;der&#039;&#039;&#039; Bootloader für embedded-Systeme schlechthin ;)&lt;br /&gt;
&lt;br /&gt;
Gemeinsam haben sie eigentlich nur, dass sie &#039;&#039;&#039;a)&#039;&#039;&#039; funktionieren und &#039;&#039;&#039;b)&#039;&#039;&#039; einen Linux-Kernel laden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Der große Nachteil von vivi ist, dass es nur mit [http://en.wikipedia.org/wiki/YAFFS YAFFS2]-Dateisystemen umgehen kann, die auf dem onboard-Flash liegen müssen.&lt;br /&gt;
Sobald der Kernel geladen ist, ist das kein Problem mehr, doch der Kernel muss eben im Flash liegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Um nun z.&amp;amp;nbsp;B. von USB-Festplatten/Sticks und SD-/MMC-Karten booten zu können, muss also u-boot installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNUNG: An einem Bootloader herumzuspielen, kann sehr böse ausgehen, etwa mit dem unbootbar-mach-Vorgang, der durch zu wenig Nachdenken ausgelöst wird.&lt;br /&gt;
Das mini2440 lässt sich zwar jederzeit per JTAG mit LPT-Adapter zurückholen, ist doch aber eigentlich unnötig ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== uboot ====&lt;br /&gt;
&lt;br /&gt;
Der Bootloader uboot wurde von &amp;quot;buserror&amp;quot; soweit an das mini2440 angepasst, dass er mehr oder weniger läuft.&lt;br /&gt;
Für die verschiedenen Boards gelten also auch leicht verschiedene Anweisungen um uboot ins Wasser zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das git und die Seite von &amp;quot;buserror&amp;quot; ist [http://code.google.com/p/mini2440/ hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Boards:&lt;br /&gt;
* 64MB &lt;br /&gt;
* 128MB&lt;br /&gt;
* 256MB&lt;br /&gt;
** [[Datei:mini2440.h]]&lt;br /&gt;
** [[Datei:uboot.bin]]&lt;br /&gt;
* 1GB&lt;br /&gt;
&lt;br /&gt;
Den u-boot-Fork von buserror laden wir am besten mit git. Weiterhin benötigen wir einen Cross-Compiler (Siehe oben). Die letzte mir bekannte Version des GCC mit dem sich das &amp;quot;U-Boot&amp;quot; kompilieren lässt ist 4.3.4.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git u-boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Source-Verzeichnis und mit den Defaults für das Mini2440 konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd u-boot&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make mini2440_config&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte, dann die Datei include/configs/mini2440.h bearbeiten, z.&amp;amp;nbsp;B. für das Mini2440-256MB:&lt;br /&gt;
&amp;lt;pre&amp;gt;  #define USE_920T_MMU		1&lt;br /&gt;
  //#define CONFIG_USE_IRQ		1	/* Needed for USB device! */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(CONFIG_USE_IRQ auskommentieren, damit das Mini2440 u-boot aus dem RAM ausgeführt werden kann. Leider kann man dann im &amp;quot;U-Boot&amp;quot; kein USB-Gerät mehr ansprechen, um ggfl. mal wieder aufzutauchen).&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich kann man noch defaults für das Environment (bootargs, ip, ...) festlegen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Anschließend das &amp;quot;U-Boot&amp;quot; kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Verzeichnis tools findet man mkimage. Damit kann man aus einem zImage (Linux-Kernel) ein uImage machen. Dieses uImage lässt sich von u-boot aus laden (Nand, NFS, TFtp, MMC) und ausführen. &lt;br /&gt;
&amp;lt;pre&amp;gt;  mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d path-to/zImage path-to/uImage&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt haben wir ein von u-boot ausführbaren Linux-Kernel.&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
=== Abspielen von Audio-Daten ===&lt;br /&gt;
Mit dem FriendlyARM-Image gibt es zwei Möglichkeiten Audio-Dateien abzuspielen.&amp;lt;br&amp;gt;Die Eine ist, Qtopia zu starten und dort einfach die Datei von SD-Karte, USB, ... auszuwählen und er spielt sie ab.&lt;br /&gt;
&lt;br /&gt;
Die andere ist, die Datei auf der Konsole mit &#039;&#039;madplay dateiname.mp3&#039;&#039; abzuspielen.&amp;lt;br&amp;gt;[http://www.digipedia.pl/man/doc/view/madplay.1/ Hier] die Manpage zu madplay.&lt;br /&gt;
&lt;br /&gt;
==== MPD - der Music Player Daemon ====&lt;br /&gt;
Mit einem eigenen Image oder wenn man sich alles von Hand compilieren will ist der [http://www.musicpd.org/ Music Player Daemon] ein genialer Musik-Player. Er lässt sich durch sehr sehr viele verschiedene Clients steuern und braucht dabei nahezu kaum Rechenleistung.&amp;lt;br&amp;gt;&lt;br /&gt;
Der eigentliche Player läuft vollkommen &amp;quot;versteckt&amp;quot; im Hintergrund. Um ihn zu steuern wird vom Client eine Verbindung aufgebaut und die entsprechenden Befehle gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Clients müssen noch nicht einmal auf dem Board laufen, können auch auf jedem anderen Rechner im Netzwerk oder Internet sein. Man muss einfach nur die IP und den Port angeben.&lt;br /&gt;
&lt;br /&gt;
Mit gerade mal etwa 100 Zeilen Code lässt sich eine einfach zu nutzende Client-Lib in C programmieren um dann seine eigenen Clients zu schreiben. Damit lässt sich der MPD durch so ziemlich jedes Ereignis an einem Rechner steuern.&lt;br /&gt;
[[MPD Client Programming|hier]] habe ich einen Artikel erstellt, der das wichtige dafür beschreibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufnehmen von Audio-Daten ===&lt;br /&gt;
=== Abspielen von Video-Daten ===&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe noch keinen Player, bis auf den vom originalen Image mit Qtopia gesehen/compiliert, welcher Filme einigermaßen flüssig abspielt.&lt;br /&gt;
&lt;br /&gt;
Mein Ansatz momentan ist, den MPlayer mit fbdev, directfb und sdl mit Framebuffer Ausgabe direkt auf den Framebuffer schreiben zu lassen.&lt;br /&gt;
Allerdings habe ich damit bisher nur sehr sehr magere Ergebnisse gehabt.&lt;br /&gt;
&lt;br /&gt;
=== Kamera-Interface ===&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Nahezu alles ist über die verschiedenen Header auf dem Board zu erreichen&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
[[Bild:mini2440_pinout.jpg|450px]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Audio / UART&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Audio IN || CON1, CON2, CON3 || CON8 || J1 (ext. NAND/NOR-sw)&lt;br /&gt;
|-&lt;br /&gt;
| 1   || IN       || TX               || VIN  || NORBOOT   &lt;br /&gt;
|-&lt;br /&gt;
| 2   || GND      || RX               || GND  || OM0      &lt;br /&gt;
|-&lt;br /&gt;
| 3   || IN       || 5V               || GND  || NANDBOOT &lt;br /&gt;
|-&lt;br /&gt;
| 4   ||          || GND              || VDD5V||          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;CON4 GPIO, CON5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || CON5 || CON4 GPIO || CAMERA || CON12 || JTAG&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 5V  || 5V || SDA || EINT8/GPG0  || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || 3.3V || SCL|| EINT11/GPG3 ||  3.3V&lt;br /&gt;
|-&lt;br /&gt;
| 3 || EINT17|| GND || EINT20|| EINT13/GPG5  || /TRST&lt;br /&gt;
|-&lt;br /&gt;
| 4 || EINT18|| /RESET || CAMRST|| EINT14/GPG6  || /RESET&lt;br /&gt;
|-&lt;br /&gt;
| 5 || EINT3|| AIN0 || CAM_CLOCK|| EINT15/GPG7  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || EINT9|| AIN1 || CAM_HREF|| EINT19/GPG11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 7 || /GCS1|| AIN2 || CAM_VSYNC|| 3.3V || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 8 || /GCS2 || AIN3 || CAM_PCLK|| GND || GND&lt;br /&gt;
|-&lt;br /&gt;
| 9  || /GCS3 || EINT0 || CAMDATA7|| ||TCK&lt;br /&gt;
|-&lt;br /&gt;
|  10 || /GCS5|| EINT1 || CAMDATA6|| ||GND&lt;br /&gt;
|-&lt;br /&gt;
| 11  || L/OE|| EINT2 || CAMDATA5  &lt;br /&gt;
|-&lt;br /&gt;
|  12 || L/WE|| EINT3 || CAMDATA4  &lt;br /&gt;
|-&lt;br /&gt;
|  13 || /WAIT|| EINT4 || CAMDATA3  &lt;br /&gt;
|-&lt;br /&gt;
|   14|| /RESET|| EINT5 || CAMDATA2  &lt;br /&gt;
|-&lt;br /&gt;
|  15 || /XDACK0|| EINT6 || CAMDATA1  &lt;br /&gt;
|-&lt;br /&gt;
|  16 || /XDREQ0|| EINT8 || CAMDATA0 &lt;br /&gt;
|-&lt;br /&gt;
|  17 || LADDR0|| EINT9 || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 18  ||LADDR1|| EINT11 || VDDCAM &lt;br /&gt;
|-&lt;br /&gt;
|  19 ||LADDR2|| EINT13 || 1.8V &lt;br /&gt;
|-&lt;br /&gt;
|  20 ||LADDR3|| EINT14 || GND &lt;br /&gt;
|-&lt;br /&gt;
|   21||LADDR4|| EINT15 ||  &lt;br /&gt;
|-&lt;br /&gt;
|   22||LADDR5|| EINT17 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|   23||LADDR6|| EINT18&lt;br /&gt;
|-&lt;br /&gt;
|   24||LADDR24|| EINT19&lt;br /&gt;
|-&lt;br /&gt;
|   25||LDATA0||MISO&lt;br /&gt;
|-&lt;br /&gt;
|   26||LDATA1||MOSI&lt;br /&gt;
|-&lt;br /&gt;
|   27||LDATA2||CLOCK&lt;br /&gt;
|-&lt;br /&gt;
|   28||LDATA3||SS&lt;br /&gt;
|-&lt;br /&gt;
|   29||LDATA4|| SCL&lt;br /&gt;
|-&lt;br /&gt;
|   30||LDATA5|| SDA&lt;br /&gt;
|-&lt;br /&gt;
|   31||LDATA6||GPB0&lt;br /&gt;
|-&lt;br /&gt;
|   32||LDATA7||GPB1&lt;br /&gt;
|-&lt;br /&gt;
|33   ||LDATA8||CLKOUT0&lt;br /&gt;
|-&lt;br /&gt;
|  34 ||LDATA9||CLKOUT1&lt;br /&gt;
|-&lt;br /&gt;
|   35||LDATA10&lt;br /&gt;
|-&lt;br /&gt;
|36   ||LDATA11&lt;br /&gt;
|-&lt;br /&gt;
|  37 ||LDATA12&lt;br /&gt;
|-&lt;br /&gt;
| 38  ||LDATA13&lt;br /&gt;
|-&lt;br /&gt;
|  39 ||LDATA14&lt;br /&gt;
|-&lt;br /&gt;
|  40 ||LDATA15&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Steckverbinder ===&lt;br /&gt;
Digi-Key:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Connector      || Hersteller || Artikelnummer || Teilenummer&lt;br /&gt;
|-&lt;br /&gt;
| CON1,2,3,8     || JST Sales America Inc || PHR-4               ||  [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1164-ND 	455-1164-ND]  &lt;br /&gt;
|-&lt;br /&gt;
| Audio IN, J1   || JST Sales America Inc || PHR-3               || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1126-ND 455-1126-ND]      &lt;br /&gt;
|-&lt;br /&gt;
|                || JST Sales America Inc || SPH-002T-P0.5L      || [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=455-2148-1-ND 455-2148-1-ND]&lt;br /&gt;
|-&lt;br /&gt;
| CON4           || Sullins Connector Solutions || SFH213-PPPN-D17-ID-BK-M181 || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9061-ND S9061-ND]&lt;br /&gt;
|-&lt;br /&gt;
|                || Sullins Connector Solutions || SBH21-NBPN-D17-ST-BK || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9023-ND	S9023-ND]&lt;br /&gt;
          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== onboard Hardware ====&lt;br /&gt;
Sobald man mal anfangen möchte, sich mit der Hardware auseinanderzusetzen, sollte man natürlich auch wissen wie, was und wo dran.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;... an welchem EINT war ...  Low oder High aktiv? ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440_eeprom.jpg||300px]][[Bild:mini2440_buttons.jpg||300px]][[Bild:mini2440_leds.jpg||300px]][[Bild:mini2440_poti.jpg||300px]]&lt;br /&gt;
[[Bild:mini2440_buzzer.jpg||300px]]&lt;br /&gt;
&lt;br /&gt;
=== [[UART]] ===&lt;br /&gt;
Die S3C2440 besitzt insgesamt drei unabhängige UARTs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Spannungspegel der Rx und Tx Pins sind etwas verwirrend. Auf dem Stecker liegen 5V an, doch das Datenblatt sagt nicht, ob die Rx und Tx Pins auch 5V-Tolerant sind. Daher sollte man das ausschliessen. Ein Spannungsteiler aus 3k3 und 2k2 an der Rx-Leitung vom Prozessor sollte das Problem beheben, solange der Empfänger an der Tx-Leitung 3.3V noch als H-Signal versteht.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;UARTs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! UART || 64 byte FIFO || IrDA 1.0 || RTS/CTS Leitungen|| Spannungspegel (L - H)&lt;br /&gt;
|-&lt;br /&gt;
| uart0 || * || * || * || 0V - 3,3V / RS232&lt;br /&gt;
|-&lt;br /&gt;
| uart1 || * || * || * || 0V - 3,3V&lt;br /&gt;
|-&lt;br /&gt;
| uart2 || * || * || x || 0V - 3,3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Über die Ansteuerung auf Hardwareebene braucht man sich, solange man ein Betriebssystem verwendet, &#039;&#039;&#039;keine&#039;&#039;&#039; Gedanken zu machen.&lt;br /&gt;
Unter Linux sind die drei UARTs über ttySAC0, ttySAC1 und ttySAC2 zu erreichen.&lt;br /&gt;
&lt;br /&gt;
=== [[LED|LEDs]] ===&lt;br /&gt;
Wenn der Kerneltreiber für die LEDs mit eincompiliert wurde, ist es ein leichtes, die LEDs mit einer kleinen Hand voll C-Zeilen anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Man öffnet die Gerätedatei und mittels &#039;&#039;ioctl()&#039;&#039; schreibt man die Werte in die Gerätedatei.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von ioctl sieht so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
ioctl(descriptor, AN/AUS, LED_NUMMER);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Also muss man um zum Beispiel LED0 anzuschalten für AN/AUS &#039;&#039;&#039;1&#039;&#039;&#039; angeben und für LED_NUMMER die &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
Dafür habe ich im Abschnitt C-Code zwei Beispiel-Funktionen geschrieben. Die erste erwartet AN/AUS und LED_NUMMER als Argument, die Zweite erwartet eine Bitmaske, was mir persönlich doch besser gefällt ;)&lt;br /&gt;
&lt;br /&gt;
==== C-Code ====&lt;br /&gt;
&amp;lt;c&amp;gt;int setleds(int on, int led_no) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	ioctl(led_fd, on, led_no);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int setledmask(int mask) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	if(mask &amp;amp; 0x01) ioctl(led_fd, 1, 0); else ioctl(led_fd, 0, 0);&lt;br /&gt;
	if(mask &amp;amp; 0x02) ioctl(led_fd, 1, 1); else ioctl(led_fd, 0, 1);&lt;br /&gt;
	if(mask &amp;amp; 0x04) ioctl(led_fd, 1, 2); else ioctl(led_fd, 0, 2);&lt;br /&gt;
	if(mask &amp;amp; 0x08) ioctl(led_fd, 1, 3); else ioctl(led_fd, 0, 3);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LED-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für LEDs, kann man diese im Verzeichnis &#039;/sys/class/leds/&#039; finden und ansteuern. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /sys/class/leds/           # wechselt in den Ordner&lt;br /&gt;
ls -lsa                       # listet alle Vorhandenen LEDs auf&lt;br /&gt;
echo 1 &amp;gt; led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; led4/brightness      # LED AUS&lt;br /&gt;
# oder&lt;br /&gt;
echo 1 &amp;gt; /sys/class/leds/led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; /sys/class/leds/led4/brightness      # LED AUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[I2C]] ===&lt;br /&gt;
==== i2ctools ====&lt;br /&gt;
Die [http://www.lm-sensors.org/wiki/I2CTools i2ctools] sind Linux-Userspace Programme, welche dafür gedacht sind, auf einfache Weise auf der Konsole mit I2C Geräten zu kommunizieren.&lt;br /&gt;
==== 24xx [[EEPROM]]s ====&lt;br /&gt;
==== [[Port-Expander]] ====&lt;br /&gt;
===== PCF8574 / PCF8574a =====&lt;br /&gt;
Einen [[PCF8574]] anzusteuern ist sehr einfach. Mit den i2ctools kann man damit erste Tests machen um zu sehen, ob er funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der Port-Expander wird mit den 3.3V versorgt, welche das Board liefert, SDA und SCL natürlich ebenfalls anschliessen.&lt;br /&gt;
Ich habe alle drei Adress-Pins auf &#039;&#039;&#039;L&#039;&#039;&#039; gelegt und erhalte von &#039;&#039;i2cdetect&#039;&#039; so die Adresse &#039;&#039;&#039;0x38&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== [[SPI]] ===&lt;br /&gt;
=== [[PWM]] ===&lt;br /&gt;
==== onboard buzzer ====&lt;br /&gt;
=== [[ADC]] ===&lt;br /&gt;
==== Touchscreen ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann der Touchscreen wie z. B. jede Maus über das event-Interface angesprochen werden.&lt;br /&gt;
Normalerweise liegt der Touchscreen auf &#039;&#039;/dev/input/event0&#039;&#039;.&lt;br /&gt;
Diese Gerätedatei muss man auch der tslib angeben.&lt;br /&gt;
&lt;br /&gt;
==== LCD Backlight ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann die Hintergrundbeleuchtung des Displays einfach über die entsprechende Geräte-Datei ein- bzw. ausgeschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
einschalten: &amp;lt;pre&amp;gt;# echo 1 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
ausschalten: &amp;lt;pre&amp;gt;# echo 0 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onboard Poti ====&lt;br /&gt;
Hierzu muss wieder der Kerneltreiber mit eincompiliert sein, damit man das Gerät &#039;&#039;/dev/adc&#039;&#039; hat. Im FriendlyARM-Kernel ist der Treiber fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Die Funktion getpoti() liest in einer Schleife mehrmals den Potiwert ein und bildet einen Mittelwert, der zurückgegeben wird.&lt;br /&gt;
Die Anzahl der Werte, aus denen der Mittelwert gebildet wird, wird mit dem #define &#039;&#039;LOOPs&#039;&#039; angegeben.&lt;br /&gt;
===== C-Code =====&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define LOOPS 12 // 12 Werte fuer Mittelwert&lt;br /&gt;
&lt;br /&gt;
unsigned int getpoti() {&lt;br /&gt;
	int value, i, fd = open(&amp;quot;/dev/adc&amp;quot;, 0);&lt;br /&gt;
	unsigned int add = 0, ret;&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open adc device!\n&amp;quot;); return -1; }&lt;br /&gt;
	&lt;br /&gt;
	for(i = 0; i &amp;lt; LOOPS; i++) {&lt;br /&gt;
		char buffer[30];&lt;br /&gt;
		int len = read(fd, buffer, sizeof buffer -1);&lt;br /&gt;
		if (len &amp;gt; 0) {&lt;br /&gt;
			buffer[len] = &#039;\0&#039;;&lt;br /&gt;
			value = -1;&lt;br /&gt;
			sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;value);&lt;br /&gt;
			add += value;&lt;br /&gt;
		} else {&lt;br /&gt;
			printf(&amp;quot;cant read from adc device!\n&amp;quot;);&lt;br /&gt;
                        close(fd);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	ret = add / LOOPS;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
Da der S3C2440 über sage und schreibe &#039;&#039;&#039;130&#039;&#039;&#039; GPIOs verfügt, mit diversen Funktionen, wie I2C, PWM, ..., das setzen der &amp;quot;Drive Strength&amp;quot; (maximaler Strom an machen Pins), ... ist das Ganze nicht mehr so einfach wie bei einem AVR.&lt;br /&gt;
Der Bastler sollte hier schon genau wissen was er will vorallem das [[Media:S3C2440_datasheet_samsung.pdf|Datenblatt]] zu Rate ziehen.&lt;br /&gt;
Die Funktionen und Register des Chips sind ab Seite &#039;&#039;&#039;274&#039;&#039;&#039; (Kapitel &#039;&#039;IO-Ports&#039;&#039;) zu finden.&lt;br /&gt;
Die elektrischen Daten sind ab Seite &#039;&#039;&#039;554&#039;&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
==== C-Code für die onboard-Buttons ====&lt;br /&gt;
Hierfür wird wird der Kerneltreiber benötigt. Im FriendlyARM-Kernel ist dieser fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Wenn die Buttons eingelesen werden, erhält man für jeden nicht gerdrücken Buttons &#039;&#039;0x30&#039;&#039; und für jeden gedrückten Button &#039;&#039;0x31&#039;&#039;.&lt;br /&gt;
Die Funktion liest die Buttons ein und vergleicht den Wert, sobald 0x31 kommt, ist sie beendet. Die Buttons sind von 0 bis 5 nummeriert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
int wait4button(int button) {&lt;br /&gt;
	char btn[6] = {&#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;};&lt;br /&gt;
	int fd = open(&amp;quot;/dev/buttons&amp;quot;, 0);&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open buttons device&amp;quot;); return(-1); }&lt;br /&gt;
&lt;br /&gt;
	while(btn[button] == 0x30) {	// if a button is released, we read 0x30, if pressed 0x31&lt;br /&gt;
		if (read(fd, btn, sizeof btn) != sizeof btn) {&lt;br /&gt;
			printf(&amp;quot;cant read buttons!&amp;quot;);&lt;br /&gt;
			close(fd);&lt;br /&gt;
			return(-1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPIO-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für GPIOs, kann man diese im Verzeichnis &#039;/sys/class/gpio/&#039; finden und ansteuern. Eine gute Erklärung ist dazu [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#gpio-sysfs hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Real Time Clock ===&lt;br /&gt;
Für die Real Time Clock, welche fest im Prozessor integriert ist, gibt es einen Kerneltreiber.&lt;br /&gt;
&lt;br /&gt;
Lesen/Setzen lässt sich sich sehr einfach mit dem Tool [http://linux.die.net/man/8/hwclock hwclock].&lt;br /&gt;
=== Beispielprogramme ===&lt;br /&gt;
&lt;br /&gt;
Hier habe ich ein paar kleine Beispielprogramme im Quellcode hochgeladen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:led_adc.c]] Herzschlag auf den LEDs, Geschwindigkeit mit Poti einstellen. Compilieren mit &#039;&#039;arm-linux-gcc led_adc.c -o led_adc&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Andere Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
=== uCos2 ===&lt;br /&gt;
=== Windows CE ===&lt;br /&gt;
=== FreeRTOS ===&lt;br /&gt;
=== emdedian ===&lt;br /&gt;
&lt;br /&gt;
== Software mit Betriebssystem ==&lt;br /&gt;
* Grafische Oberfläche mit der SDL-Bibliothek erstellen:&amp;lt;br&amp;gt;[[Mini2440 SDL GUI Programmierung]]&lt;br /&gt;
&lt;br /&gt;
== Software ohne Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ===&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
== Wo kaufen? ==&lt;br /&gt;
&lt;br /&gt;
Zu beziehen ist das Board entweder über Ebay, meist aus China, oder bei [http://www.watterott.com/de/FriendlyARM Watterott].&lt;br /&gt;
&lt;br /&gt;
== Eigene Displays an das Mini anschließen ==&lt;br /&gt;
&lt;br /&gt;
* Displays mit LVDS Anschluss können z.B. mit diesem selbst gebauten Adapter an das Mini angeschlossen werden. http://www.mikrocontroller.net/topic/217774#new&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [http://www.friendlyarm.net/products/mini2440 Übersicht auf der Friendlyarm Seite]&lt;br /&gt;
=== Howtos ===&lt;br /&gt;
* [http://wiki.linuxmce.org/index.php/Mini2440 Kernel, u-boot und qemu-mini2440 compilieren]&lt;br /&gt;
* [[Mini2440 SDL GUI Programmierung]]&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/mini2440/downloads/list Emdebian+Angstrom Images, s3c_boot_usb]&lt;br /&gt;
&lt;br /&gt;
* [http://programmers-projects.de/node/10 Programmer&#039;s-Projects Mini2440 Projekt (überarbeitetes USB-Upload-Tool für Linux und mehr)]&lt;br /&gt;
&lt;br /&gt;
=== Youtube und ähnliche ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;br /&gt;
[[Category:Linux-Boards]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Absolute_Beginner-AVR_Steckbrettprojekte&amp;diff=57174</id>
		<title>Absolute Beginner-AVR Steckbrettprojekte</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Absolute_Beginner-AVR_Steckbrettprojekte&amp;diff=57174"/>
		<updated>2011-05-16T07:19:29Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* LCD ansteuern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Als einfacher Anfang ist ein [[Steckbrett|Steckbrett]] und ein [[AVR_In_System_Programmer|USB Programmer]] erst mal ausreichend. Dazu ein [[AVR| Atmel Mega 88]] und ein bisschen Hühnerfutter und los geht es.&lt;br /&gt;
&lt;br /&gt;
Auf dem PC muss das [[AVR-Studio]], [[AVR-GCC‎|WinAvr]] und ggf. [[Pony-Prog_Tutorial|Ponyprog]] zum Übertragen der Hex-Files installiert sein. Die Beispielprogramme sind in &#039;&#039;&#039;C&#039;&#039;&#039; geschrieben. &amp;lt;br&amp;gt;&lt;br /&gt;
Die Programme können und sollen mit dem [[AVR-Simulation#AVR_Studio|AVR Studio simuliert]] werden, um etwas Gefühl für die Abarbeitungszeit der Programme zu bekommen. (Es muss nicht immer ein 20 MHz Quarz sein).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LED einschalten==&lt;br /&gt;
Siehe auch: [[AVR-GCC-Tutorial#Einf.C3.BChrungsbeispiel| AVR-GCC-Tutorial]]&lt;br /&gt;
&lt;br /&gt;
Die [[AVR_Fuses| Fuse Bits]] bleiben auf Auslieferungszustand. &lt;br /&gt;
&lt;br /&gt;
Der [[AVR| Mega 88]] wird aus einer 9V Block-Batterie und dem [[7805]] mit 5V Spannung versorgt.&lt;br /&gt;
Eine [[LED]] wird nach GND geschaltet, diese leuchtet wenn der Portpin auf 1 oder High liegt.&lt;br /&gt;
Die andere [[LED]] wird nach Vcc geschaltet, diese leuchtet wenn der Portpin auf 0 oder Low liegt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Bild:Absolute_Beginner_01.png|320px]][[Bild:Absolute_Beginner_01.JPG|290px]]&lt;br /&gt;
&lt;br /&gt;
(Der Taster im Bild wird erst später gebraucht)&lt;br /&gt;
&lt;br /&gt;
Im Programm wird im [[AVR-GCC-Tutorial#Datenrichtung_bestimmen|DDRD]] festgelegt, dass der alle Pins des Port D Ausgänge sind. Durch den unterschiedlichen Anschluss der LED muss der Port D0 auf 1 und der Port D2 auf 0 gesetzt werden, damit beide LED leuchten.&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_01.c‎| C Programm]]&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_01.hex‎| Hex-File]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Hex-File in Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm im [[AVR-Simulation#AVR_Studio|AVR Studio simulieren]] und die Zustände von PortD im Einzelschrittmodus (F10) betrachten. &amp;lt;br&amp;gt;&lt;br /&gt;
C-Programm kompilieren und dann den neuen Hex-File in den Controller laden &amp;lt;br&amp;gt;&lt;br /&gt;
C Programm so ändern, dass die LEDs an einem anderen Port angeschlossen werden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eingang abfragen==&lt;br /&gt;
[[Bild:Absolute_Beginner_01.png|320px]][[Bild:Absolute_Beginner_01.JPG|290px]]&lt;br /&gt;
&lt;br /&gt;
In der Initialisierung wird mit dem [[AVR-GCC-Tutorial#Datenrichtung_bestimmen|DDRD] festgelegt, dass Port D0bis3 Ausgänge und D4bis7 Eingänge sind. Der interne Pull Up Widerstand Port D7 wird eingeschaltet. &lt;br /&gt;
&lt;br /&gt;
Der Taster ist an Pin D7 angeschlossen. Der Taster schaltet nach Masse, daher ist der Pin D7 bei unbetätigtem Taster durch den internen Pull Up Widerstand (nach Vcc) auf High.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_02.c‎| C Programm]]&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_02.hex‎| Hex-File]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Hex-File in Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm im [[AVR-Simulation#AVR_Studio|AVR Studio simulieren]] und die Abarbeitungszeit für das Hauptprogramm ermitteln. &amp;lt;br&amp;gt;&lt;br /&gt;
C-Programm kompilieren und dann den neuen Hex-File in den Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LED blinken lassen==&lt;br /&gt;
[[Bild:Absolute_Beginner_01.png|320px]][[Bild:Absolute_Beginner_01.JPG|290px]]&lt;br /&gt;
&lt;br /&gt;
Die [[AVR_Fuses| Fuse Bits]] bleiben auf Auslieferungszustand. Dadurch läuft der Controller auf 1Mhz internen Takt. Genutzt wird der Timer 1 . Der Takt-Vorteiler (pre-scaler ) wird auf 1024 eingestellt.&lt;br /&gt;
&lt;br /&gt;
Zeit = 1 / (1.000.000/(1024*488) = 0,4997sec.&lt;br /&gt;
&lt;br /&gt;
Das heißt: die Timerinterrupt-Routine 1 wird alle 0,5 Sekunden aufgerufen, die LED blinken mit 1Hz.&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_03.c‎| C Programm]]&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_03.hex‎| Hex-File]]&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_03_1.c‎| C Programm mit Timer 0 und 1]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Hex-File in Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm im [[AVR-Simulation#AVR_Studio|AVR Studio simulieren]] und die Zeitabstände in der die Interruptroutine Timer 1 aufgerufen wird überprüfen, dann die Abarbeitungszeit für diese Routine ermitteln. &amp;lt;br&amp;gt;&lt;br /&gt;
C-Programm kompilieren und dann den neuen Hex-File in den Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
C Programm so ändern, dass andere Blinkzeiten entstehen. &amp;lt;br&amp;gt;&lt;br /&gt;
CLK/8 Fuse ändern, sodass der Controller 8-mal schneller läuft und die LED schnell blinken. &amp;lt;br&amp;gt;&lt;br /&gt;
Timer 0 konfigurieren und die LED an Port D0 mit ca. 4 Hz blinken lassen. Dazu das Programm um eine Variable &#039;&#039;&#039;blinkmerker2&#039;&#039;&#039; erweitern und damit den Port D0 im &#039;&#039;&#039;Hauptprogramm&#039;&#039;&#039; steuern  &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==LCD ansteuern==&lt;br /&gt;
Man mag sich fragen, warum die Ansteuerung eines LCD so weit am Anfang kommt. Ich halte die Vorteile für eine einfache Fehlersuche recht groß. Oft sag man nach ein paar Stunden Fehlersuche: „kaum macht man es richtig, schon funktioniert es“. Einfach ein paar Variablen aufs Display und schon gibt es ein Ahhaaa. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Absolute_Beginner_LCD_01.png|320px]][[Bild:Absolute_Beginner_04_LCD.JPG|320px]]&lt;br /&gt;
&lt;br /&gt;
Da man ein LCD häufig braucht und die benötigten Programmblöcke immer gleich sind, werden sie sinnvoller Weise in separate Programme ausgelagert. Die Bibliothek ist dann einmal getestet und kann wieder verwendet werden. In diesem Fall sind es die: [[AVR-GCC-Tutorial/LCD-Ansteuerung#Datei_lcd-routines.h| lcd-routines.h]] und [[AVR-GCC-Tutorial/LCD-Ansteuerung#Datei_lcd-routines.c:| lcd-routines.c]]. &lt;br /&gt;
&lt;br /&gt;
Das LCD wird im 4Bit Modus betrieben. Es kommt das Programm und der Anschluss hier aus dem Forum unter [[AVR-GCC-Tutorial/LCD-Ansteuerung]] zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute Beginner 4.zip| Programm als ZIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Das Programm im [[AVR-Simulation#AVR_Studio|AVR Studio simulieren]] und die Abarbeitungszeit für das Hauptprogramm ermitteln. &amp;lt;br&amp;gt;&lt;br /&gt;
Das LCD an PortB anschließen und das Programm entsprechend ändern. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Taster abfragen===&lt;br /&gt;
[[Bild:Absolute_Beginner_4_1.png|320px]][[Bild:Absolute_Beginner_04_1.JPG|320px]]&lt;br /&gt;
&lt;br /&gt;
Um für Programmerweiterungen Ports frei zu bekommen wird das LCD nun auf Port B angeschlossen. In der [[AVR-GCC-Tutorial/LCD-Ansteuerung#Datei_lcd-routines.h| lcd-routines.h]] Datei werden die entsprechenden Änderungen vorgenommen. &amp;lt;br&amp;gt;Wenn man ein LCD im Einsatz hat, sind schon 6 Pin´s „verbraucht“.  Da die vier Leitungen für die Datenbits des LCD nur dann das LCD interessieren, wenn auch die RW (Read/Write) oder E (Enable) Leitung geschaltet wird, werden diese vier Pin´s doppelt belegt und mittels eines weiten Pins abfragt. Hierzu werden die vier Taster mit 470Ohm Widerständen mit den Datenleitungen verbunden. Durch die Widerstände werden Kurzschlüsse verhindert, falls die Taster betätigt werden, wenn gerade auf das LCD geschrieben wird. &amp;lt;br&amp;gt;&lt;br /&gt;
Der PinX.6 (in diesem Fall PinB.6)  ist als Eingang definiert und der zugehörige interne Pull-Up Widerstand ist aktiviert. Nun werden die vier Datenleitungen der Reihe nach auf Low gesetzt und geschaut, ob sich der PinX.6 ändert. Dies geschieht, wenn ein betätigter Taster eine Verbindung von der jeweiligen Datenleitung nach PinX.6 geschaltet hat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute Beginner 4_1.zip| Programm als ZIP]]&lt;br /&gt;
&lt;br /&gt;
==Analogeingang einlesen==&lt;br /&gt;
Es kommt das Programm und der Anschluss hier aus dem Forum unter [[AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29]] zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
[[Bild:Absolute_Beginner_05.png|320px]]&lt;br /&gt;
&lt;br /&gt;
Das LCD ist jetzt am &#039;&#039;&#039;PortB&#039;&#039;&#039; angeschlossen.&amp;lt;br&amp;gt;&lt;br /&gt;
Zwischen Vcc und Gnd liegt ein Poti als Spannungsteiler. Der Mittelabgriff liegt am Analogeingang 1 (PortC0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_5.zip| Programm als ZIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
zweiten Analogwert ebenfalls auf dem LCD anzeigen. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==PWM   Pulsweitenmodulation==&lt;br /&gt;
&lt;br /&gt;
[[Bild:Absolute_Beginner_06.png|320px]] [[Bild:Absolute_Beginner_06.jpg|320px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Einlesen des Analogengangs 0 (PinC0). Ausgabe des Analogwertes auf dem LCD. Erzeugung eines PWM Signals auf dem PortD6 mit Timer0. &amp;lt;br&amp;gt;&lt;br /&gt;
Der Wert des Analogeingangs wird durch 4 geteilt und als Sollwert für die [[AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR#Die_PWM-Betriebsart|PWM]] genutzt. Durch das [[LED-Fading|LED fading]] ist der Helligkeitsanstieg an der LED nicht linear. &lt;br /&gt;
&lt;br /&gt;
Durch den [[AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR|Timer Vor-Teiler]] von 256 (TCCR0B =(1&amp;lt;&amp;lt;CS02);) ist die PWM Frequenz sehr niedrig, sodass man mit dem Auge ein Flackern an der LED erkennen kann. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;fOCnxPWM=( fclk_I/O)/(Pre-Teiler * 256) &#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;fOCnxPWM= 1.000.000Hz/(256*256)=15,26Hz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Download Software:  [[Media:Absolute_Beginner_6.zip| Programm als ZIP]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aufgaben:&#039;&#039;&#039;  &amp;lt;br&amp;gt;&lt;br /&gt;
Hex-File in Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
Eine Simulation der PWM ist mit meinem AVR Studio nicht gelungen siehe[[AVR-Studio_Bugs| AVR-Studio_Bugs]]&amp;lt;br&amp;gt;&lt;br /&gt;
C-Programm kompilieren und dann den neuen Hex-File in den Controller laden. &amp;lt;br&amp;gt;&lt;br /&gt;
Im Programm dem Pre-Teiler heruntersetzen (TCCR0B =(1&amp;lt;&amp;lt;CS01|1&amp;lt;&amp;lt;CS00);), sodass das Flacken verschwindet. (fOCnxPWM =122,1Hz)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Interrupt==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:AVR-Projekte]]&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57102</id>
		<title>Mini2440</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57102"/>
		<updated>2011-05-08T15:02:46Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Howtos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.friendlyarm.net/products/mini2440 Mini2440 von friendlyarm ]&lt;br /&gt;
&lt;br /&gt;
Das [[Mini2440]] ist ein [[ARM]]-Board mit [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2440&amp;amp;ppmi=PartnoSearch s3c2440] &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;o&#039;&#039;&#039;n &#039;&#039;&#039;C&#039;&#039;&#039;hip von Samsung.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Board&#039;&#039;&#039; bietet:&lt;br /&gt;
* 3,5&amp;quot;, 7&amp;quot; Touchscreen-[[TFT]] oder [[VGA]] &amp;quot;Karte&amp;quot;&lt;br /&gt;
* ARM920T, 400Mhz standard Taktfrequenz, bis zu 533Mhz&lt;br /&gt;
* 64MB-1GB NAND Flash (User App/OS), 2MB NOR Flash (BIOS)&lt;br /&gt;
* 64MB RAM&lt;br /&gt;
* Audio (Stereo Out, 2xMono In)&lt;br /&gt;
* SD-Slot&lt;br /&gt;
* [[USB]] Host, USB Device&lt;br /&gt;
* 10/100MBit LAN (DM9000)&lt;br /&gt;
* 3 Serial Ports&lt;br /&gt;
* [[SPI]], [[PWM]], [[I2C]], ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440.jpg|300px]][[Bild:mini2440_35.jpg|300px]][[Bild:mini2440_7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Als das passende Entwicklungswerkzeug ist ein Linux-Rechner mit passendem Cross-Compiler sowie ein paar Tools vorgesehen.&lt;br /&gt;
Was wirklich benötigt wird:&lt;br /&gt;
* Serial Terminal (picocom, minicom, cutecom, gtkterm, komport, ...)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Mini2440#Toolchain Toolchain]&lt;br /&gt;
* s3c_boot_usb oder [http://programmers-projects.de/node/11 mini2440_usb_upload] (aktueller) zum Hochladen von Bootloader, Kernel etc. über USB&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ausserdem noch:&lt;br /&gt;
* ncurses-dev-Dateien und dialog (Für Kernel-menuconfig)&lt;br /&gt;
* screen, midnight commander&lt;br /&gt;
* Editor mit root-Rechten (z.B. [http://home.in.tum.de/~lazarov/files/research/papers/vi_ausarbeitung.pdf vim])&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen am/mit dem Board ===&lt;br /&gt;
&lt;br /&gt;
Ganz wichtig ist es, eine gute Spannungsversorgung zu verwenden. Es kam anscheinend schon öfter vor, dass kleine Spannungseinbrüche das Board aus dem Gleichgewicht bringen.&lt;br /&gt;
Ich verwende normalerweise das mitgelieferte Netzteil oder ein &#039;&#039;&#039;5V&#039;&#039;&#039;/&#039;&#039;&#039;2A&#039;&#039;&#039; Schaltnetzteil, funktionieren beide einwandfrei.&lt;br /&gt;
Gerade das grosse, 7&amp;quot;, Display braucht ein starkes Netzteil.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ungefährer Stromverbrauch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Board konfig. || Stromverbrauch&lt;br /&gt;
|-&lt;br /&gt;
| mini2440  || 140mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 3,5&amp;quot; TFT || 410mA (T35 Display)&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 7&amp;quot; TFT || 1000mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + VGA Board || mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verbindung zum PC ====&lt;br /&gt;
&lt;br /&gt;
Um vernünftig arbeiten zu können, braucht es auf jeden Fall ein USB A&amp;lt;-&amp;gt;USB B-Kabel, sowie ein 1:1 verbundes 9 poliges SUB-D Kabel mit zwei Buchsen.&lt;br /&gt;
Jenachdem, auf welchem Gerät (PC, Laptop, andere Embedded-Plattform, ...) entwickelt wird, braucht man noch einen USB-RS232 Adapter.&lt;br /&gt;
Einen Zugriff auf die Konsole hat man - nach Anpassung der IP - über Telnet sowie über die serielle Konsole.&lt;br /&gt;
Die serielle Konsole ist in der Standardkonfiguration aktiviert und sollte auch während des Entwickelns immer aktiv sein - so verhindert man ein ungewolltes Ausperren.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk ====&lt;br /&gt;
Entweder klickt man sich quer durch die chinesische/japanische Software und stellt diese auf Englisch um, oder aber man klickt sich blind zu der Stelle, an der man IP Adresse, Gateway und Netzmaske angeben kann.&lt;br /&gt;
&lt;br /&gt;
Etwa genauso einfach sieht es über die Konsole aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Die folgenden drei Zeilen, dürften das soweit bewekstelligen, dass das Netzwerk-Device die IP-Adresse &#039;&#039;&#039;192.168.0.55&#039;&#039;&#039;, die Netzmaske &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039; zugeteilt bekommt. Die beiden anderen Anweisungen sagen dem System, welches Netzwerkgerät der Router ist. In diesem Fall &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, was bisher vielleicht schon in der &#039;&#039;/etc/resolv.conf&#039;&#039; steht. Das lässt sich einfach mit &#039;&#039;cat /etc/resolv.conf&#039;&#039; ansehen. Wenn diese bereits den richtigen Inhalt hat, kann man die &#039;&#039;echo &amp;quot;nam...&#039;&#039;-Anweisung weglassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die resolv.conf nicht existiert oder einen falschen Wert enthält, &#039;&#039;&#039;überschreibt&#039;&#039;&#039; man diese, in dem man nur &#039;&#039;&#039;ein&#039;&#039;&#039; &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; nach das echo setzt. Stehen dort zwei &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; wird die nameserver-Info nur an die Datei angehängt und es kann zu Problemen kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ifconfig eth0 192.168.0.55 netmask 255.255.255.0&lt;br /&gt;
 $ route add default gw 192.168.0.1&lt;br /&gt;
 $ echo &amp;quot;nameserver 192.168.0.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzeraccounts ====&lt;br /&gt;
&lt;br /&gt;
Linux legt wie alle Unix-artigen Betriebssysteme sehr grossen Wert auf eine ordentliche Benutzer- und Rechteverwaltung.&amp;lt;br&amp;gt;&lt;br /&gt;
Daher sollte man sich überlegen, ob es nicht vielleicht besser wäre, wenn man einen extra Benutzer zum Arbeiten/Basteln/Produktiv-Sein/Bier-Trinken/... anlegt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn nicht unbedingt nötig, sollte man auf das Arbeiten als &#039;&#039;&#039;root&#039;&#039;&#039; (oder auch Superuser, Admin, ...) verzichten. Dadurch dass man uneingeschränkt &#039;&#039;&#039;alle&#039;&#039;&#039; Rechte auf dem System besitzt kann es durch Programmierfehler oder auch Schadsoftware zu ernsthaften Schäden kommen (Datenverlust, eventuell Hardwareschäden).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Entscheidung ob man wirklich root sein muss, ist eigentlich relativ einfach. Sie wird normalerweise &#039;&#039;&#039;immer&#039;&#039;&#039; erstmal mit &#039;&#039;&#039;nein&#039;&#039;&#039; beantwortet.&amp;lt;br&amp;gt;Sollte sich im Lauf der Zeit doch herausstellen, dass man root sein muss, kann man diesen Weg immer noch einschlagen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Für einige Aufgaben sind jedoch auch root-Rechte erforderlich.&lt;br /&gt;
Zum Beispiel, wenn man direkt mit outporb()/inportb()/outb()/inb()/... arbeiten will.&amp;lt;br&amp;gt;&lt;br /&gt;
Für diese Fälle gibt es ein gutes Tool, es nennt sich [http://de.wikipedia.org/wiki/Sudo sudo].&lt;br /&gt;
Man kann sudo z.&amp;amp;nbsp;B. sagen, dass Benutzer &#039;&#039;xy&#039;&#039; das Programm /usr/bin/blubb mit root-Rechten immer ausführen darf. Benutzer &#039;&#039;ab&#039;&#039; darf das aber nur, wenn er &#039;&#039;&#039;sein&#039;&#039;&#039; Passwort eingibt. Dann gibt es vielleicht noch Benutzer &#039;&#039;zz&#039;&#039;, der alles ohne Passwort als root ausführen darf.&lt;br /&gt;
&lt;br /&gt;
===== Anlegen eines neuen Benutzeraccounts =====&lt;br /&gt;
Ich gehe davon aus, dass ein Image mit busybox auf dem Board installiert ist. Wenn das Image von FriendlyARM installiert ist, ist das der Fall.&lt;br /&gt;
&lt;br /&gt;
Ein Auszug aus der [http://linux.die.net/man/1/busybox Manpage] von busybox:&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
    adduser [ OPTIONS ] user_name&lt;br /&gt;
&lt;br /&gt;
    Adds a user to the system&lt;br /&gt;
&lt;br /&gt;
    Options:&lt;br /&gt;
&lt;br /&gt;
    -h DIR          Assign home directory DIR&lt;br /&gt;
    -g GECOS        Assign gecos field GECOS&lt;br /&gt;
    -s SHELL        Assign login shell SHELL&lt;br /&gt;
    -G              Add the user to existing group GROUP&lt;br /&gt;
    -S              create a system user (ignored)&lt;br /&gt;
    -D              Do not assign a password (logins still possible via ssh)&lt;br /&gt;
    -H              Do not create the home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Heisst um einen Benutzer &#039;&#039;banana_joe&#039;&#039; mit dem Heimatverzeichnis &#039;&#039;/home/banana_joe&#039;&#039; anzulegen, muss man folgendes &#039;&#039;&#039;als root&#039;&#039;&#039; eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ adduser -h /home/banana_joe -s /bin/sh banana_joe&lt;br /&gt;
 $ passwd banana_joe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;adduser&#039;&#039; legt den Benutzer an, &#039;&#039;passwd&#039;&#039; vergibt ein Passwort.&lt;br /&gt;
&lt;br /&gt;
=== Übertragen von Daten/Programmen in den Flash-Speicher ===&lt;br /&gt;
&lt;br /&gt;
Das übertragen gestaltet sich auf ganz unterschiedliche Weise. Aus Gründen der Einfachheit werde ich hier nur die sinnvollsten/einfachsten/schnellsten Wege beschreiben. Andere Möglichkeiten wären noch &#039;&#039;lrzsz&#039;&#039;, USB und [[JTAG]].&lt;br /&gt;
Wer zuviel Zeit hat, kann sich ja auch ein eigenes Protokoll auf TCP/IP Ebene basteln oder den Kristallspeicher erfinden ;)&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datei übertragen hat, muss man sich vergewissern, dass diese auch Ausführrechte besitzt, wenn sie ein Programm oder ein Ordner ist. Die Lese- und Schreibrechte müssen ebenfalls richtig gesetzt sein.&lt;br /&gt;
Normalerweise stimmt dies alles so wie es ist, aber manchmal muss man ein wenig nachhelfen.&lt;br /&gt;
Wenn sich ein Programm nicht ausführen lässt, oder man nicht in einen Ordner wechseln kann, fehlen die Rechte zum Ausführen. Geändert wird das so:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;datei/ordner&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da hier aber nicht die Unix-Rechte erklärt werden sollen, verweise ich [http://linuxwiki.de/DateiRechte hierauf]&lt;br /&gt;
&lt;br /&gt;
==== http ====&lt;br /&gt;
Für diese Methode muss natürlich das [http://www.mikrocontroller.net/articles/Mini2440#Netzwerk Netzwerk] eingerichtet sein. Man braucht auf einem PC im Netz einen laufenden Werbserver, auf den man die zu übertragenden Dateien legt.&lt;br /&gt;
Nun kann man diese in ein Verzeichnis seiner Wahl &amp;quot;herunterladen&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ cd /tmp&lt;br /&gt;
 $ wget http://10.2.5.29/datei&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ftp ====&lt;br /&gt;
Sobald auf dem Board ein FTP-Server läuft, kann man sich &amp;quot;ganz normal&amp;quot; mit einem FTP-Client (zum Beispiel &#039;&#039;&#039;gftp&#039;&#039;&#039; oder &#039;&#039;&#039;ncftp&#039;&#039;&#039;) verbinden und die Dateien hochladen.&lt;br /&gt;
Ebenso kann man sich auch vom Board auf einen FTP-Server verbinden.&lt;br /&gt;
Nennenswerte Programme sind z.B. &#039;&#039;&#039;ftp&#039;&#039;&#039; für die Linux-Konsole, welches im FriendlyARM Image bereits enthalten ist oder der ncurses-basierende Client &#039;&#039;&#039;ncftp&#039;&#039;&#039;. Allerdings sollte man sich für ncurses-Programme per Telnet oder SSH einloggen, da die serielle Konsole nur rudimentäre Terminal-Emulation unterstützt und die Bildschirmausgabe nicht gerade schön wirkt.&lt;br /&gt;
&lt;br /&gt;
==== scp/ssh ====&lt;br /&gt;
Dazu muss zuerst einmal ein SSH Server auf dem Board laufen.&lt;br /&gt;
[http://www.openssh.com openSSH] ist dafür die erste Wahl. Mit [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] gibt es einige Probleme, da man für SCP auch noch die SCP Binary von openSSH braucht.&lt;br /&gt;
&lt;br /&gt;
Sobald der ssh server läuft, ist alles ganz einfach:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei user@ziel:/pfad&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei einem Board mit der IP 10.0.0.69 und dem User &#039;&#039;root&#039;&#039; wäre das die Befehlszeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei root@10.0.0.69:/root&amp;lt;/pre&amp;gt;&lt;br /&gt;
... und die Datei &#039;&#039;datei&#039;&#039; landet im Heimatverzeichnis von &#039;&#039;root&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um nicht jedes mal das Passwort eingeben zu müssen, lohnt es sich SSH so zu konfigurieren, dass es mit [http://wiki.unixboard.de/index.php/SSH_ohne_Passwort Key-Files] läuft.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
Toolchains gibt es im Netz und auf der CD/DVD zum Board mehrere fertig übersetzte - natürlich lässt sich die Toolchain auch selbst compilieren.&lt;br /&gt;
Das Risiko beim selbst compilieren einer Toolchain liegt darin, dass man eventuell einen fehlerhaften Compiler produziert.&lt;br /&gt;
Gründe hierfür sind z.B.:&lt;br /&gt;
* fehlende, wichtige Patches&lt;br /&gt;
* Verwenden von Entwicklerversionen mit eventuellen Bugs&lt;br /&gt;
* ein schon fehlerhafter Host-Compiler&lt;br /&gt;
* falsche Einstellungen (Prozessor-Architektur, Optimierung, ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das sogenannte Bootstrappen eines Compilers erkennt solche Probleme in den meisten Fällen. Bootstrappen heißt, dass zuerst mit dem Host-Compiler der Quellcode des neuen übersetzt wird und mit diesem zweiten Compiler wird ein dritter Compiler übersetzt. Wenn dies klappt, kann man im Normalfall davon ausgehen, dass der dritte Compiler in Ordnung ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Jedoch ist dies bei einem Crosscompiler so nicht möglich, da der zweite Compiler ja keinen Code für den Host-Computer, sondern nur für das Target produzieren kann. Somit würde man sich einen Compiler für das Board bauen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wer auf Nummer sicher gehen will, nimmt am besten eine der bekannten ARM-Toolchains oder natürlich die von FriendlyARM.&lt;br /&gt;
&lt;br /&gt;
==== old ABI / new EABI ? ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ABI&#039;&#039;&#039; steht für &#039;&#039;&#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;, also eine Art &amp;quot;Standard&amp;quot; wie das compilierte Programm, die Binärdatei, auszusehen hat.&lt;br /&gt;
&lt;br /&gt;
Die ABI ist schon etwas älter und wurde von der EABI (&#039;&#039;&#039;&#039;&#039;E&#039;&#039;&#039;mbedded &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Da nahezu jede verfügbare Toolchain auf der EABI aufbaut, würde ich diese auch nutzen. Alte, für die ABI, compilierte Programme, lassen sich mit der Kernel-Unterstützung zum Ausführen von ABI Programmen trotzdem noch verwenden.&lt;br /&gt;
&lt;br /&gt;
Durch das verwenden der EABI entstehen normalerweise keine unüberwindbaren Hürden, beim compilieren von älteren Quellcodes. Jedenfalls nicht durch den Unterschied ABI/EABI.&lt;br /&gt;
&lt;br /&gt;
==== Kernel FPE / softfloat ? ====&lt;br /&gt;
&lt;br /&gt;
Irgendwann stolpert jeder, der mit ARM-CPUs und Linux arbeitet über mehrere Fragen.&lt;br /&gt;
* Was ist softfloat/FPE?&lt;br /&gt;
* Was ist schneller?&lt;br /&gt;
* Kann man beides nutzen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist softfloat/FPE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch, dass eine ARM-CPU normalerweile keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit Gleitkommaeinheit/FPU] besitzt, müssen alle Berechnungen, welche Kommazahlen enthalten in Software gelöst werden. Bei einem PC-System übernimmt diese Aufgabe eben die FPU und ist somit um einiges schneller.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;softfloat&#039;&#039; ist die Umsetzung durch den Compiler.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;FPE&#039;&#039; bedeutet &#039;&#039;&#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;E&#039;&#039;&#039;mulation&#039;&#039; und wird durch den Kernel bereit gestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist schneller&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Beim FPE-Verfahren wird der Code, welcher die Gleitkomma-Anweisungen enthält auch so übersetzt. Da die CPU aber keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU] besitzt und somit auch keine Maschinensprachen-Befehle dafür, wird eine &#039;&#039;Exception&#039;&#039; ausgelöst (&amp;quot;Fehler&amp;quot;), welche vom Kernel abgefangen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Nun steht der Kernel vor der Aufgabe, die Gleitkomma-Operation zu lösen und dem Programm das Ergebnis mitzuteilen. Danach muss er den Code für die Exception noch zu Ende führen und zurückkehren.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles in allem eine sehr aufwendige Methode.&lt;br /&gt;
&lt;br /&gt;
Da bei &#039;&#039;softfloat&#039;&#039; die Gleitkomma-Operationen vom Compiler soweit zerstückelt und wieder zusammengesetzt werden, dass gar keine Kommas mehr nötig sind, ist das in dem meisten Fällen flotter.&lt;br /&gt;
&lt;br /&gt;
Das schnellste, ist natürlich eine Hardware-[http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU], die es aber auf dem [[mini2440]] nicht gibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man beides nutzen?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Jein, wenn man im Kernel eine der beiden FPE-Methoden aktiviert hat und man führt ein softfloat-Programm aus, dann wird natürlich softfloat verwendet.&lt;br /&gt;
Wenn man allerdings ein FPE-Programm ausführen will und hat die Unterstützung nicht im Kernel, sieht es schlecht aus.&lt;br /&gt;
&lt;br /&gt;
Also am besten eine FPE auswählen und mit einer softfloat-Toolchain compilieren. Das spart Zeit und Kopfzerbrechen über Invalid Opcode/Segfaults usw. ;)&lt;br /&gt;
&lt;br /&gt;
==== Toolchain aufsetzen ====&lt;br /&gt;
Jenachdem, welche Toolchain man einsetzt, kann es sein, dass man den Compileraufruf anpassen muss.&lt;br /&gt;
Wenn man eine Cross Toolchain installiert hat und nur &#039;&#039;gcc&#039;&#039; auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim &#039;&#039;lokalen&#039;&#039; gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit&lt;br /&gt;
&amp;lt;pre&amp;gt; $ which gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc&lt;br /&gt;
oder&lt;br /&gt;
 $ arm-none-linux-gnueabi-gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über &#039;&#039;arm-linux-...&#039;&#039; zu erreichen ist. Entweder passt man die gcc-Aufrufe von hier an, oder man kann sich auch [http://wiki.unixboard.de/index.php/ManPage:ln symbolische Links] anlegen.&lt;br /&gt;
Zum Schluss sollte das dann ungefähr so aussehen, vom bin-Pfad der Toolchain aus!&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ls -al /usr/local/arm/4.3.2/bin/&lt;br /&gt;
 ...&lt;br /&gt;
 lrwxrwxrwx 1 root root      25 2010-02-25 07:15 arm-linux-ld -&amp;gt; arm-none-linux-gnueabi-ld&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich selbst arbeite mit der FriendlyARM-Toolchain, werde mich hier also meistens auf diese beziehen, ausser anders vermerkt.&lt;br /&gt;
===== FriendlyARM =====&lt;br /&gt;
[http://www.friendlyarm.net/downloads Hier] als &#039;&#039;ARM-Linux-GCC&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
Entpackt verbraucht diese Toolchain ca. 295MB. Mit ihr liessen sich bei mir bereits der Kernel, uboot, sowie zahlreiche Programme kompilieren.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird die Toolchain an die richtige Stelle entpackt, der Pfad mit angegeben und dann ist sie auch schon bereit.&lt;br /&gt;
Dieses Kommando sieht auf den ersten Blick etwas nach Dateisystem-Apokalypse aus, ist allerdings lage nicht so wild. Die Option &#039;&#039;-C /&#039;&#039; sagt, dass direkt ins Wurzelverzeichnis entpackt werden soll, daher benötigt man für diesen Schritt &#039;&#039;&#039;root-Rechte&#039;&#039;&#039;. Die FriendlyARM-Toolchain ist so aufgebaut, dass sie damit nach &#039;&#039;/usr/local/arm/4.3.2/&#039;&#039; entpackt wird, &#039;&#039;&#039;unser Ziel&#039;&#039;&#039; :)&lt;br /&gt;
&amp;lt;pre&amp;gt; $ tar xvfj arm-linux-gcc-4.3.2.tar.gz -C /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir das nun so haben, müssen wir natürlich auch noch sagen, wo er den Compiler findet.&lt;br /&gt;
Dazu öffnet man am besten seine &amp;quot;autorun-Datei&amp;quot; der Shell. In der Konsole ganz einfach mit vim/nano/etc zu erreichen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ vim /home/user/.bashrc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dort tragen wir dann &#039;&#039;&#039;ganz ans Ende&#039;&#039;&#039; dies ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=$PATH:/usr/local/arm/4.3.2/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kaum gespeichert, startet man eine neue shell (Konsole) und überprüft ob die Pfade stimmen.&lt;br /&gt;
Wenn &#039;&#039;/usr/local/arm/...&#039;&#039; im Pfad enthalten ist, müsste alles stimmen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ echo $PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tippt man nun &#039;&#039;&#039;nur&#039;&#039;&#039; &#039;&#039;arm-&#039;&#039; und drückt zweimal die Tabtaste, so müsste eine ellenlange Liste mit Programmen wie z.&amp;amp;nbsp;B. &#039;&#039;arm-linux-gcc&#039;&#039; oder &#039;&#039;arm-linux-ld&#039;&#039; erscheinen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== codesourcery =====&lt;br /&gt;
[http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 codesourcery arm-none-linux-gnueabi]&lt;br /&gt;
&lt;br /&gt;
===== buildroot =====&lt;br /&gt;
&lt;br /&gt;
Von http://www.buildroot.net das letzte stable Release holen, mini-2440 wird unterstützt. Der Build dauert zwar einige Zeit, aber nacher kann man sich an X11 erfreuen.&lt;br /&gt;
&lt;br /&gt;
=== Cross Compiling ===&lt;br /&gt;
Sobald die Toolchain richtig aufgesetzt ist kann man anfangen, seine Programme zu übersetzten.&lt;br /&gt;
&lt;br /&gt;
Hier folgt nur eine kurze Beschreibung, wer sowas genauer wissen will, sollte sich auf Seiten wie diesen umsehen:&lt;br /&gt;
* http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html&lt;br /&gt;
* http://linux.bytesex.org/cross-compiler.html&lt;br /&gt;
Ausserdem findet man zu vielen embedded-nutzbaren Programmen direkt ein Cross-Compiling Howto mit ein wenig google.&lt;br /&gt;
Ob diese nun für ARM, AVR32, PPC, MIPS, ... sind, ist im Grunde egal, da man ja meistens nur die Architektur anpassen muss.&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Möglichkeiten. Die erste ist der direkte Aufruf vom Compiler oder mittels eines &amp;quot;festen&amp;quot; Makefiles. Die zweite, wahrscheinlich Häufigste, ist das ausführen eines configure-Scriptes bevor der make-Vorgang gestartet wird.&lt;br /&gt;
&lt;br /&gt;
* Das einfache aufrufen des Compilers&lt;br /&gt;
Dazu ein einfaches Hello-World Programm:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
   printf(&amp;quot;hiho\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compiliert wird das Programm ganz einfach so:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ arm-linux-gcc &amp;lt;name.c&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach wird die Datei &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; an das Board [http://www.mikrocontroller.net/wikisoftware/index.php?title=Mini2440&amp;amp;action=submit#.C3.9Cbertragen_von_Daten.2FProgrammen_ins_Flash übertragen]. &lt;br /&gt;
Sobald &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; auf dem Board ist, kann es ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ./&amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Eventuell fehlen die Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ./configure-Scripte&lt;br /&gt;
Hier sieht es schon ein klein wenig schwieriger aus, ist es aber eigentlich nicht.&lt;br /&gt;
&#039;&#039;Normalerweise&#039;&#039;, aber &#039;&#039;&#039;nicht immer&#039;&#039;&#039;, sieht das compilieren eines Programms für das mini2440 so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ HOST=arm-linux ARCH=arm ./configure --build=arm-linux --your-options&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man muss dem configure-Script lediglich angeben, für welche Architektur das Makefile konfiguriert werden soll und welchen Compiler er dafür nehmen soll.&lt;br /&gt;
&lt;br /&gt;
=== Linux-Kernel ===&lt;br /&gt;
&lt;br /&gt;
Den Kernel-Quellcode besorgt man sich am besten den Kernel-Fork von buserror.&amp;lt;br&amp;gt; Wenn man nicht auf dem ARM selber kompilieren möchte, benutzt man wie hier im Beispiel einen Cross-Compiler (Siehe oben). Weiterhin wird noch git benötigt, um den Kernel-Quellcode zu laden.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6.32-rc8&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Kernel-Verzeichnis und den Kernel mit den Defaults konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd linux-2.6.32-rc8&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make mini2440_defconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Kernel anschließend kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Module bekommen wir wie folgt nach /mnt/mini2440/lib/modules installiert:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm INSTALL_MOD_PATH=/mnt/mini2440 make modules_install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir mit u-boot arbeiten, dann benötigen wir das zImage in /mnt/mini2440/kernel-2.6.32-rc8/arch/arm/boot, um daraus mittels mkimage (Siehe uboot) ein uImage zu erstellen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Kernel-Parameter&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
dem Kernel kann man zum Start noch Parameter für das Board mitgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;mini2440=[0..9][t][b]&amp;lt;/pre&amp;gt;&lt;br /&gt;
[0..9] bestimmen die Display-Timings&lt;br /&gt;
* 0 3,5&amp;quot; Display N35 + TS (alt);&lt;br /&gt;
* 1 7&amp;quot; Display + TS;&lt;br /&gt;
* 2 VGA-Board;&lt;br /&gt;
* 3 3,5&amp;quot; Display T35 + TS;&lt;br /&gt;
* 4 5,6&amp;quot; Display Innolux + TS;&lt;br /&gt;
[t] Touchscreen ist vorhanden;&amp;lt;br&amp;gt;&lt;br /&gt;
[b] Backlight ist vorhanden;&lt;br /&gt;
&lt;br /&gt;
=== root-fs ===&lt;br /&gt;
Um ein eigenes Root-Filesystem zu compilieren, gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Die einfachsten sind Cross-Umgebungen wie [http://buildroot.uclibc.org/ buildroot] und [http://wiki.openembedded.net/index.php/Main_Page openembedded].&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
Auch relativ einfach ist es, sich ein fertig compiliertes debian-arm zu installieren. Wenn man das Debian einmal auf seiner SD-Karte laufen hat, ist es kein Problem mehr, alles wie gewohnt mit apt zu installieren usw. usw.&amp;lt;br&amp;gt;&lt;br /&gt;
Allerdings sind gerade die Scripte bei Debian noch nie dafür bekannt gewesen sonderlich schnell zu laufen und es ist sehr sehr träge beim booten.&lt;br /&gt;
&lt;br /&gt;
Ich habe auf meinem mini2440 seit einiger Zeit Debian am Laufen, habe aber sämtliche Init-Scripte durch eigene ersetzt, welche um einiges flotter laufen. Ebenso verzichte ich auf sysvinit und damit aber auch auf sehr nützliche Tools/Funktionen, wie die runlevels und shutdown oder reboot.&lt;br /&gt;
Diese Funktionen müssen auch von meinen eigenen Scripten übernommen werden. Dafür läuft es um einiges schneller.&lt;br /&gt;
&lt;br /&gt;
[http://emqbit.com/deboostrap-debian Hier] eine Anleitung für ein AT91-Linux Board mit Debian. Diese kann fast 1:1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit X11, Lighttpd, PHP, Python, mc, vim, mpd, alsa, gcc, ... (und auch apache als leidige Abhängigkeit von PHP) braucht mein Debian etwa 550MB auf der SD-Karte.&lt;br /&gt;
Schon ein ordentlicher Brummer, aber egal, es bootet mit eigenen Scripten innerhalb von 15 Sekunden.&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
Ooooh wer daran denkt, hat einfach nur zuviel Zeit. Gentoo in allen Ehren, aber allein PHP zu compilieren dauert gut 4 Stunden... danach habe ich es aufgegeben.&lt;br /&gt;
&lt;br /&gt;
Wer Gentoo installieren kann, wird sich auf dem Mini2440 auch nicht schwerer tun, als auf einem PC. Der Unterschied besteht nur darin, dass man die Stage auf SD Karte packen muss, am normalen Rechner natürlich, und dort dann schon die wichtigsten Einstellungen vornehmen muss.&lt;br /&gt;
&lt;br /&gt;
Mit Portage und den ganzen Dev-Files ist Gentoo ein riesen Gebilde für so ein schwachbrüstiges Board. Eine 4GB SD-Karte ist das Minimum. Außer man bootet zuerst in den Flash und dann chrootet man auf ein Gentoo auf einer USB-Festplatte. uboot kann das, soweit ich weiß, nicht.&lt;br /&gt;
&lt;br /&gt;
=== sys-fs ===&lt;br /&gt;
Sysfs ist ein virtuelles Dateisystem, welches seit dem Linux Kernel 2.6. zur Verfügung gestellt wurde. Der Kernel stellt dabei Konfigurationen, Informationen über Vorrichtungen und Treiber im sogenannten userspace zur Verfügung. Dies Bedeutet einfach, dass Informationen/Geräte an einer festgelegten Stelle im Dateisystem stehen und ausgelesen oder beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
Über einige Dateien in diesem Dateisystem können GPIOs und z.B. auch LEDs angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer ===&lt;br /&gt;
Der Framebuffer ist von Haus aus im FriendlyARM Kernel aktiviert und ohne ihn lässt sich im Linux keine Ausgabe auf dem Display realisieren. Er ist unter &#039;&#039;/dev/fb0&#039;&#039; zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Kernelkonfiguration muss die Framebuffer-Konsole und der Framebuffer-Treiber für das jeweilige Display gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Eine Textausgabe geht ganz einfach über das Terminal, welche auf ihn gemappt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/tty1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann dem Framebuffer diverse Argumente mitgeben, die die Ausgabe auf dem Display beeinflussen. Diese werden über &#039;&#039;fbcon=...&#039;&#039; angeben. Man kann auch mehre Argumente angeben, das sähe zum Beispiel so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p1 console=ttySAC0 fbcon=rotate:1 fbcon=scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können mehrere fbcon-Parameter auch durch Komma getrennt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
... fbcon=rotate:1,scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Scrollback-Buffer ist auf diesem Display eigentlich nicht nötig, da man hier auf dem Mini2440 auf keiner Konsole mit Tastatur usw. arbeitet. Daher schaltet man ihn mit &#039;&#039;fbcon=scrollback:0&#039;&#039; ab, das spart gegenüber dem Standardwert 32kB RAM.&amp;lt;br&amp;gt;&lt;br /&gt;
Wer ihn doch benötigt, kann ihn natürlich trotzdem verwenden. Die Zahl nach dem Doppelpunkt steht für die Größe in Bytes. Ein &#039;&#039;k&#039;&#039; als Suffix steht für Kilobyte, &#039;&#039;fbcon=scrollback:1024k&#039;&#039; entspräche einem Scrollback-Buffer von 1MB.&lt;br /&gt;
&lt;br /&gt;
Für die FB-Konsole gibt es einige weitere Möglichkeiten und viele Optionen lassen sich zur Laufzeit ändern. Hier habe ich nur das Wichtigste beschrieben. Wer darüber mehr erfahren will, sollte sich im Kernel-Quellcode die Datei &#039;&#039;Documentation/fb/fbcon.txt&#039;&#039; ansehen.&lt;br /&gt;
&lt;br /&gt;
==== Font wählen ====&lt;br /&gt;
Die voreingestellte VGA8x16 Font ist etwas groß und es passt nicht allzuviel Text auf das Display. Die am besten lesbare, kleine Schrift ist die Mac6x11 Font.&lt;br /&gt;
In menuconfig folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Select compiled-in fonts&lt;br /&gt;
            &amp;lt;*&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*]   Map the console to the primary display device&lt;br /&gt;
            [*]   Framebuffer Console Rotation&lt;br /&gt;
            [*] Select compiled-in fonts&lt;br /&gt;
            [ ]   VGA 8x8 font&lt;br /&gt;
            [ ]   VGA 8x16 font&lt;br /&gt;
            [*]   Mac console 6x11 font (not supported by all drivers)&lt;br /&gt;
            [ ]   console 7x14 font (not supported by all drivers)&lt;br /&gt;
            [ ]   Pearl (old m68k) console 8x8 font&lt;br /&gt;
            [ ]   Acorn console 8x8 font&lt;br /&gt;
            [ ]   Mini 4x6 font&lt;br /&gt;
            [ ] Sparc console 8x16 font&lt;br /&gt;
            [ ] Sparc console 12x22 font (not supported by all drivers)&lt;br /&gt;
            [ ] console 10x18 font (not supported by all drivers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Werden mehrere Fonts eincompiliert, können sie so ausgewählt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Kernel-Commandline)&lt;br /&gt;
... fbcon=font:xxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mögliche Werte für &#039;&#039;xxxx&#039;&#039; sind:&lt;br /&gt;
* VGA8x8&lt;br /&gt;
* VGA8x16&lt;br /&gt;
* Mac6x11&lt;br /&gt;
* 7x14&lt;br /&gt;
* 10x18&lt;br /&gt;
* MINI4x6&lt;br /&gt;
* RomanLarge&lt;br /&gt;
* SUN8x16&lt;br /&gt;
* SUN12x22&lt;br /&gt;
* ProFont6x11&lt;br /&gt;
* Acorn8x8&lt;br /&gt;
* PEARL8x8&lt;br /&gt;
&lt;br /&gt;
Bei machen Fonts steht in der Kernel-Menuconfig &#039;&#039;not supported by all drivers&#039;&#039;. Dies erklärt sich so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Note, not all drivers can handle font with widths not divisible by 8,&lt;br /&gt;
such as vga16fb.&lt;br /&gt;
kernel-src/Documentation/fb/fbcon.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manche Treiber können nicht mit Fontbreiten/-höhen umgehen, welche nicht durch 8 teilbar sind. Da aber z.B. die MAC6x11 Font auch nicht durch 8 teilbar ist und das Mini2440 das anzeigen kann, gehe ich davon aus, dass alle funktionieren.&lt;br /&gt;
&lt;br /&gt;
==== Rotation ====&lt;br /&gt;
Um das Display zu &amp;quot;drehen&amp;quot; folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*] Framebuffer Console Rotation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also Kernel-Parameter im Bootloader dann einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fbcon=rotate:x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für &#039;&#039;x&#039;&#039; sind Werte von 0 bis 3 gültig. Jeweils wird um 90° im Uhrzeigersinn weitergedreht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Rotation bezieht sich &#039;&#039;&#039;nur&#039;&#039;&#039; auf den Framebuffer. Ein anschließend gestartetes Qtopia (z.B.) bleibt von der gewählten Einstellung unberührt.&lt;br /&gt;
In eigenen Anwendungen, welche eine grafische Oberfläche bereitstellen, lässt sich die Rotation allerdings verwenden, indem man einfach die Datei &#039;&#039;&#039;/proc/cmdline&#039;&#039;&#039; ausliest und den dort gegebenen Wert verwendet, um seine Bildschirmausrichtung anzupassen.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader ===&lt;br /&gt;
Die beiden verfügbaren Bootloader sind vivi (ein &amp;quot;standard-s3c24xx-Linux-Bootloader&amp;quot;) und u-boot, &#039;&#039;&#039;der&#039;&#039;&#039; Bootloader für embedded-Systeme schlechthin ;)&lt;br /&gt;
&lt;br /&gt;
Gemeinsam haben sie eigentlich nur, dass sie &#039;&#039;&#039;a)&#039;&#039;&#039; funktionieren und &#039;&#039;&#039;b)&#039;&#039;&#039; einen Linux-Kernel laden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Der große Nachteil von vivi ist, dass es nur mit [http://en.wikipedia.org/wiki/YAFFS YAFFS2]-Dateisystemen umgehen kann, die auf dem onboard-Flash liegen müssen.&lt;br /&gt;
Sobald der Kernel geladen ist, ist das kein Problem mehr, doch der Kernel muss eben im Flash liegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Um nun z.&amp;amp;nbsp;B. von USB-Festplatten/Sticks und SD-/MMC-Karten booten zu können, muss also u-boot installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNUNG: An einem Bootloader herumzuspielen, kann sehr böse ausgehen, etwa mit dem unbootbar-mach-Vorgang, der durch zu wenig Nachdenken ausgelöst wird.&lt;br /&gt;
Das mini2440 lässt sich zwar jederzeit per JTAG mit LPT-Adapter zurückholen, ist doch aber eigentlich unnötig ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== uboot ====&lt;br /&gt;
&lt;br /&gt;
Der Bootloader uboot wurde von &amp;quot;buserror&amp;quot; soweit an das mini2440 angepasst, dass er mehr oder weniger läuft.&lt;br /&gt;
Für die verschiedenen Boards gelten also auch leicht verschiedene Anweisungen um uboot ins Wasser zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das git und die Seite von &amp;quot;buserror&amp;quot; ist [http://code.google.com/p/mini2440/ hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Boards:&lt;br /&gt;
* 64MB &lt;br /&gt;
* 128MB&lt;br /&gt;
* 256MB&lt;br /&gt;
** [[Datei:mini2440.h]]&lt;br /&gt;
** [[Datei:uboot.bin]]&lt;br /&gt;
* 1GB&lt;br /&gt;
&lt;br /&gt;
Den u-boot-Fork von buserror laden wir am besten mit git. Weiterhin benötigen wir einen Cross-Compiler (Siehe oben). Die letzte mir bekannte Version des GCC mit dem sich das &amp;quot;U-Boot&amp;quot; kompilieren lässt ist 4.3.4.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git u-boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Source-Verzeichnis und mit den Defaults für das Mini2440 konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd u-boot&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make mini2440_config&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte, dann die Datei include/configs/mini2440.h bearbeiten, z.&amp;amp;nbsp;B. für das Mini2440-256MB:&lt;br /&gt;
&amp;lt;pre&amp;gt;  #define USE_920T_MMU		1&lt;br /&gt;
  //#define CONFIG_USE_IRQ		1	/* Needed for USB device! */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(CONFIG_USE_IRQ auskommentieren, damit das Mini2440 u-boot aus dem RAM ausgeführt werden kann. Leider kann man dann im &amp;quot;U-Boot&amp;quot; kein USB-Gerät mehr ansprechen, um ggfl. mal wieder aufzutauchen).&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich kann man noch defaults für das Environment (bootargs, ip, ...) festlegen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Anschließend das &amp;quot;U-Boot&amp;quot; kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Verzeichnis tools findet man mkimage. Damit kann man aus einem zImage (Linux-Kernel) ein uImage machen. Dieses uImage lässt sich von u-boot aus laden (Nand, NFS, TFtp, MMC) und ausführen. &lt;br /&gt;
&amp;lt;pre&amp;gt;  mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d path-to/zImage path-to/uImage&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt haben wir ein von u-boot ausführbaren Linux-Kernel.&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
=== Abspielen von Audio-Daten ===&lt;br /&gt;
Mit dem FriendlyARM-Image gibt es zwei Möglichkeiten Audio-Dateien abzuspielen.&amp;lt;br&amp;gt;Die Eine ist, Qtopia zu starten und dort einfach die Datei von SD-Karte, USB, ... auszuwählen und er spielt sie ab.&lt;br /&gt;
&lt;br /&gt;
Die andere ist, die Datei auf der Konsole mit &#039;&#039;madplay dateiname.mp3&#039;&#039; abzuspielen.&amp;lt;br&amp;gt;[http://www.digipedia.pl/man/doc/view/madplay.1/ Hier] die Manpage zu madplay.&lt;br /&gt;
&lt;br /&gt;
==== MPD - der Music Player Daemon ====&lt;br /&gt;
Mit einem eigenen Image oder wenn man sich alles von Hand compilieren will ist der [http://www.musicpd.org/ Music Player Daemon] ein genialer Musik-Player. Er lässt sich durch sehr sehr viele verschiedene Clients steuern und braucht dabei nahezu kaum Rechenleistung.&amp;lt;br&amp;gt;&lt;br /&gt;
Der eigentliche Player läuft vollkommen &amp;quot;versteckt&amp;quot; im Hintergrund. Um ihn zu steuern wird vom Client eine Verbindung aufgebaut und die entsprechenden Befehle gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Clients müssen noch nicht einmal auf dem Board laufen, können auch auf jedem anderen Rechner im Netzwerk oder Internet sein. Man muss einfach nur die IP und den Port angeben.&lt;br /&gt;
&lt;br /&gt;
Mit gerade mal etwa 100 Zeilen Code lässt sich eine einfach zu nutzende Client-Lib in C programmieren um dann seine eigenen Clients zu schreiben. Damit lässt sich der MPD durch so ziemlich jedes Ereignis an einem Rechner steuern.&lt;br /&gt;
[[MPD Client Programming|hier]] habe ich einen Artikel erstellt, der das wichtige dafür beschreibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufnehmen von Audio-Daten ===&lt;br /&gt;
=== Abspielen von Video-Daten ===&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe noch keinen Player, bis auf den vom originalen Image mit Qtopia gesehen/compiliert, welcher Filme einigermaßen flüssig abspielt.&lt;br /&gt;
&lt;br /&gt;
Mein Ansatz momentan ist, den MPlayer mit fbdev, directfb und sdl mit Framebuffer Ausgabe direkt auf den Framebuffer schreiben zu lassen.&lt;br /&gt;
Allerdings habe ich damit bisher nur sehr sehr magere Ergebnisse gehabt.&lt;br /&gt;
&lt;br /&gt;
=== Kamera-Interface ===&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Nahezu alles ist über die verschiedenen Header auf dem Board zu erreichen&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
[[Bild:mini2440_pinout.jpg|450px]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Audio / UART&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Audio IN || CON1, CON2, CON3 || CON8 || J1 (ext. NAND/NOR-sw)&lt;br /&gt;
|-&lt;br /&gt;
| 1   || IN       || TX               || VIN  || NORBOOT   &lt;br /&gt;
|-&lt;br /&gt;
| 2   || GND      || RX               || GND  || OM0      &lt;br /&gt;
|-&lt;br /&gt;
| 3   || IN       || 5V               || GND  || NANDBOOT &lt;br /&gt;
|-&lt;br /&gt;
| 4   ||          || GND              || VDD5V||          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;CON4 GPIO, CON5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || CON5 || CON4 GPIO || CAMERA || CON12 || JTAG&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 5V  || 5V || SDA || EINT8/GPG0  || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || 3.3V || SCL|| EINT11/GPG3 ||  3.3V&lt;br /&gt;
|-&lt;br /&gt;
| 3 || EINT17|| GND || EINT20|| EINT13/GPG5  || /TRST&lt;br /&gt;
|-&lt;br /&gt;
| 4 || EINT18|| /RESET || CAMRST|| EINT14/GPG6  || /RESET&lt;br /&gt;
|-&lt;br /&gt;
| 5 || EINT3|| AIN0 || CAM_CLOCK|| EINT15/GPG7  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || EINT9|| AIN1 || CAM_HREF|| EINT19/GPG11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 7 || /GCS1|| AIN2 || CAM_VSYNC|| 3.3V || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 8 || /GCS2 || AIN3 || CAM_PCLK|| GND || GND&lt;br /&gt;
|-&lt;br /&gt;
| 9  || /GCS3 || EINT0 || CAMDATA7|| ||TCK&lt;br /&gt;
|-&lt;br /&gt;
|  10 || /GCS5|| EINT1 || CAMDATA6|| ||GND&lt;br /&gt;
|-&lt;br /&gt;
| 11  || L/OE|| EINT2 || CAMDATA5  &lt;br /&gt;
|-&lt;br /&gt;
|  12 || L/WE|| EINT3 || CAMDATA4  &lt;br /&gt;
|-&lt;br /&gt;
|  13 || /WAIT|| EINT4 || CAMDATA3  &lt;br /&gt;
|-&lt;br /&gt;
|   14|| /RESET|| EINT5 || CAMDATA2  &lt;br /&gt;
|-&lt;br /&gt;
|  15 || /XDACK0|| EINT6 || CAMDATA1  &lt;br /&gt;
|-&lt;br /&gt;
|  16 || /XDREQ0|| EINT8 || CAMDATA0 &lt;br /&gt;
|-&lt;br /&gt;
|  17 || LADDR0|| EINT9 || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 18  ||LADDR1|| EINT11 || VDDCAM &lt;br /&gt;
|-&lt;br /&gt;
|  19 ||LADDR2|| EINT13 || 1.8V &lt;br /&gt;
|-&lt;br /&gt;
|  20 ||LADDR3|| EINT14 || GND &lt;br /&gt;
|-&lt;br /&gt;
|   21||LADDR4|| EINT15 ||  &lt;br /&gt;
|-&lt;br /&gt;
|   22||LADDR5|| EINT17 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|   23||LADDR6|| EINT18&lt;br /&gt;
|-&lt;br /&gt;
|   24||LADDR24|| EINT19&lt;br /&gt;
|-&lt;br /&gt;
|   25||LDATA0||MISO&lt;br /&gt;
|-&lt;br /&gt;
|   26||LDATA1||MOSI&lt;br /&gt;
|-&lt;br /&gt;
|   27||LDATA2||CLOCK&lt;br /&gt;
|-&lt;br /&gt;
|   28||LDATA3||SS&lt;br /&gt;
|-&lt;br /&gt;
|   29||LDATA4|| SCL&lt;br /&gt;
|-&lt;br /&gt;
|   30||LDATA5|| SDA&lt;br /&gt;
|-&lt;br /&gt;
|   31||LDATA6||GPB0&lt;br /&gt;
|-&lt;br /&gt;
|   32||LDATA7||GPB1&lt;br /&gt;
|-&lt;br /&gt;
|33   ||LDATA8||CLKOUT0&lt;br /&gt;
|-&lt;br /&gt;
|  34 ||LDATA9||CLKOUT1&lt;br /&gt;
|-&lt;br /&gt;
|   35||LDATA10&lt;br /&gt;
|-&lt;br /&gt;
|36   ||LDATA11&lt;br /&gt;
|-&lt;br /&gt;
|  37 ||LDATA12&lt;br /&gt;
|-&lt;br /&gt;
| 38  ||LDATA13&lt;br /&gt;
|-&lt;br /&gt;
|  39 ||LDATA14&lt;br /&gt;
|-&lt;br /&gt;
|  40 ||LDATA15&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Steckverbinder ===&lt;br /&gt;
Digi-Key:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Connector      || Hersteller || Artikelnummer || Teilenummer&lt;br /&gt;
|-&lt;br /&gt;
| CON1,2,3,8     || JST Sales America Inc || PHR-4               ||  [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1164-ND 	455-1164-ND]  &lt;br /&gt;
|-&lt;br /&gt;
| Audio IN, J1   || JST Sales America Inc || PHR-3               || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1126-ND 455-1126-ND]      &lt;br /&gt;
|-&lt;br /&gt;
|                || JST Sales America Inc || SPH-002T-P0.5L      || [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=455-2148-1-ND 455-2148-1-ND]&lt;br /&gt;
|-&lt;br /&gt;
| CON4           || Sullins Connector Solutions || SFH213-PPPN-D17-ID-BK-M181 || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9061-ND S9061-ND]&lt;br /&gt;
|-&lt;br /&gt;
|                || Sullins Connector Solutions || SBH21-NBPN-D17-ST-BK || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9023-ND	S9023-ND]&lt;br /&gt;
          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== onboard Hardware ====&lt;br /&gt;
Sobald man mal anfangen möchte, sich mit der Hardware auseinanderzusetzen, sollte man natürlich auch wissen wie, was und wo dran.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;... an welchem EINT war ...  Low oder High aktiv? ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440_eeprom.jpg||300px]][[Bild:mini2440_buttons.jpg||300px]][[Bild:mini2440_leds.jpg||300px]][[Bild:mini2440_poti.jpg||300px]]&lt;br /&gt;
[[Bild:mini2440_buzzer.jpg||300px]]&lt;br /&gt;
&lt;br /&gt;
=== [[UART]] ===&lt;br /&gt;
Die S3C2440 besitzt insgesamt drei unabhängige UARTs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Spannungspegel der Rx und Tx Pins sind etwas verwirrend. Auf dem Stecker liegen 5V an, doch das Datenblatt sagt nicht, ob die Rx und Tx Pins auch 5V-Tolerant sind. Daher sollte man das ausschliessen. Ein Spannungsteiler aus 3k3 und 2k2 an der Rx-Leitung vom Prozessor sollte das Problem beheben, solange der Empfänger an der Tx-Leitung 3.3V noch als H-Signal versteht.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;UARTs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! UART || 64 byte FIFO || IrDA 1.0 || RTS/CTS Leitungen|| Spannungspegel (L - H)&lt;br /&gt;
|-&lt;br /&gt;
| uart0 || * || * || * || 0V - 3,3V / RS232&lt;br /&gt;
|-&lt;br /&gt;
| uart1 || * || * || * || 0V - 3,3V&lt;br /&gt;
|-&lt;br /&gt;
| uart2 || * || * || x || 0V - 3,3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Über die Ansteuerung auf Hardwareebene braucht man sich, solange man ein Betriebssystem verwendet, &#039;&#039;&#039;keine&#039;&#039;&#039; Gedanken zu machen.&lt;br /&gt;
Unter Linux sind die drei UARTs über ttySAC0, ttySAC1 und ttySAC2 zu erreichen.&lt;br /&gt;
&lt;br /&gt;
=== [[LED|LEDs]] ===&lt;br /&gt;
Wenn der Kerneltreiber für die LEDs mit eincompiliert wurde, ist es ein leichtes, die LEDs mit einer kleinen Hand voll C-Zeilen anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Man öffnet die Gerätedatei und mittels &#039;&#039;ioctl()&#039;&#039; schreibt man die Werte in die Gerätedatei.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von ioctl sieht so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
ioctl(descriptor, AN/AUS, LED_NUMMER);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Also muss man um zum Beispiel LED0 anzuschalten für AN/AUS &#039;&#039;&#039;1&#039;&#039;&#039; angeben und für LED_NUMMER die &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
Dafür habe ich im Abschnitt C-Code zwei Beispiel-Funktionen geschrieben. Die erste erwartet AN/AUS und LED_NUMMER als Argument, die Zweite erwartet eine Bitmaske, was mir persönlich doch besser gefällt ;)&lt;br /&gt;
&lt;br /&gt;
==== C-Code ====&lt;br /&gt;
&amp;lt;c&amp;gt;int setleds(int on, int led_no) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	ioctl(led_fd, on, led_no);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int setledmask(int mask) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	if(mask &amp;amp; 0x01) ioctl(led_fd, 1, 0); else ioctl(led_fd, 0, 0);&lt;br /&gt;
	if(mask &amp;amp; 0x02) ioctl(led_fd, 1, 1); else ioctl(led_fd, 0, 1);&lt;br /&gt;
	if(mask &amp;amp; 0x04) ioctl(led_fd, 1, 2); else ioctl(led_fd, 0, 2);&lt;br /&gt;
	if(mask &amp;amp; 0x08) ioctl(led_fd, 1, 3); else ioctl(led_fd, 0, 3);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LED-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für LEDs, kann man diese im Verzeichnis &#039;/sys/class/leds/&#039; finden und ansteuern. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /sys/class/leds/           # wechselt in den Ordner&lt;br /&gt;
ls -lsa                       # listet alle Vorhandenen LEDs auf&lt;br /&gt;
echo 1 &amp;gt; led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; led4/brightness      # LED AUS&lt;br /&gt;
# oder&lt;br /&gt;
echo 1 &amp;gt; /sys/class/leds/led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; /sys/class/leds/led4/brightness      # LED AUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[I2C]] ===&lt;br /&gt;
==== i2ctools ====&lt;br /&gt;
Die [http://www.lm-sensors.org/wiki/I2CTools i2ctools] sind Linux-Userspace Programme, welche dafür gedacht sind, auf einfache Weise auf der Konsole mit I2C Geräten zu kommunizieren.&lt;br /&gt;
==== 24xx [[EEPROM]]s ====&lt;br /&gt;
==== [[Port-Expander]] ====&lt;br /&gt;
===== PCF8574 / PCF8574a =====&lt;br /&gt;
Einen [[PCF8574]] anzusteuern ist sehr einfach. Mit den i2ctools kann man damit erste Tests machen um zu sehen, ob er funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der Port-Expander wird mit den 3.3V versorgt, welche das Board liefert, SDA und SCL natürlich ebenfalls anschliessen.&lt;br /&gt;
Ich habe alle drei Adress-Pins auf &#039;&#039;&#039;L&#039;&#039;&#039; gelegt und erhalte von &#039;&#039;i2cdetect&#039;&#039; so die Adresse &#039;&#039;&#039;0x38&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== [[SPI]] ===&lt;br /&gt;
=== [[PWM]] ===&lt;br /&gt;
==== onboard buzzer ====&lt;br /&gt;
=== [[ADC]] ===&lt;br /&gt;
==== Touchscreen ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann der Touchscreen wie z. B. jede Maus über das event-Interface angesprochen werden.&lt;br /&gt;
Normalerweise liegt der Touchscreen auf &#039;&#039;/dev/input/event0&#039;&#039;.&lt;br /&gt;
Diese Gerätedatei muss man auch der tslib angeben.&lt;br /&gt;
&lt;br /&gt;
==== LCD Backlight ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann die Hintergrundbeleuchtung des Displays einfach über die entsprechende Geräte-Datei ein- bzw. ausgeschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
einschalten: &amp;lt;pre&amp;gt;# echo 1 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
ausschalten: &amp;lt;pre&amp;gt;# echo 0 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onboard Poti ====&lt;br /&gt;
Hierzu muss wieder der Kerneltreiber mit eincompiliert sein, damit man das Gerät &#039;&#039;/dev/adc&#039;&#039; hat. Im FriendlyARM-Kernel ist der Treiber fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Die Funktion getpoti() liest in einer Schleife mehrmals den Potiwert ein und bildet einen Mittelwert, der zurückgegeben wird.&lt;br /&gt;
Die Anzahl der Werte, aus denen der Mittelwert gebildet wird, wird mit dem #define &#039;&#039;LOOPs&#039;&#039; angegeben.&lt;br /&gt;
===== C-Code =====&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define LOOPS 12 // 12 Werte fuer Mittelwert&lt;br /&gt;
&lt;br /&gt;
unsigned int getpoti() {&lt;br /&gt;
	int value, i, fd = open(&amp;quot;/dev/adc&amp;quot;, 0);&lt;br /&gt;
	unsigned int add = 0, ret;&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open adc device!\n&amp;quot;); return -1; }&lt;br /&gt;
	&lt;br /&gt;
	for(i = 0; i &amp;lt; LOOPS; i++) {&lt;br /&gt;
		char buffer[30];&lt;br /&gt;
		int len = read(fd, buffer, sizeof buffer -1);&lt;br /&gt;
		if (len &amp;gt; 0) {&lt;br /&gt;
			buffer[len] = &#039;\0&#039;;&lt;br /&gt;
			value = -1;&lt;br /&gt;
			sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;value);&lt;br /&gt;
			add += value;&lt;br /&gt;
		} else {&lt;br /&gt;
			printf(&amp;quot;cant read from adc device!\n&amp;quot;);&lt;br /&gt;
                        close(fd);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	ret = add / LOOPS;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
Da der S3C2440 über sage und schreibe &#039;&#039;&#039;130&#039;&#039;&#039; GPIOs verfügt, mit diversen Funktionen, wie I2C, PWM, ..., das setzen der &amp;quot;Drive Strength&amp;quot; (maximaler Strom an machen Pins), ... ist das Ganze nicht mehr so einfach wie bei einem AVR.&lt;br /&gt;
Der Bastler sollte hier schon genau wissen was er will vorallem das [[Media:S3C2440_datasheet_samsung.pdf|Datenblatt]] zu Rate ziehen.&lt;br /&gt;
Die Funktionen und Register des Chips sind ab Seite &#039;&#039;&#039;274&#039;&#039;&#039; (Kapitel &#039;&#039;IO-Ports&#039;&#039;) zu finden.&lt;br /&gt;
Die elektrischen Daten sind ab Seite &#039;&#039;&#039;554&#039;&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
==== C-Code für die onboard-Buttons ====&lt;br /&gt;
Hierfür wird wird der Kerneltreiber benötigt. Im FriendlyARM-Kernel ist dieser fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Wenn die Buttons eingelesen werden, erhält man für jeden nicht gerdrücken Buttons &#039;&#039;0x30&#039;&#039; und für jeden gedrückten Button &#039;&#039;0x31&#039;&#039;.&lt;br /&gt;
Die Funktion liest die Buttons ein und vergleicht den Wert, sobald 0x31 kommt, ist sie beendet. Die Buttons sind von 0 bis 5 nummeriert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
int wait4button(int button) {&lt;br /&gt;
	char btn[6] = {&#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;};&lt;br /&gt;
	int fd = open(&amp;quot;/dev/buttons&amp;quot;, 0);&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open buttons device&amp;quot;); return(-1); }&lt;br /&gt;
&lt;br /&gt;
	while(btn[button] == 0x30) {	// if a button is released, we read 0x30, if pressed 0x31&lt;br /&gt;
		if (read(fd, btn, sizeof btn) != sizeof btn) {&lt;br /&gt;
			printf(&amp;quot;cant read buttons!&amp;quot;);&lt;br /&gt;
			close(fd);&lt;br /&gt;
			return(-1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPIO-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für GPIOs, kann man diese im Verzeichnis &#039;/sys/class/gpio/&#039; finden und ansteuern. Eine gute Erklärung ist dazu [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#gpio-sysfs hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Real Time Clock ===&lt;br /&gt;
Für die Real Time Clock, welche fest im Prozessor integriert ist, gibt es einen Kerneltreiber.&lt;br /&gt;
&lt;br /&gt;
Lesen/Setzen lässt sich sich sehr einfach mit dem Tool [http://linux.die.net/man/8/hwclock hwclock].&lt;br /&gt;
=== Beispielprogramme ===&lt;br /&gt;
&lt;br /&gt;
Hier habe ich ein paar kleine Beispielprogramme im Quellcode hochgeladen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:led_adc.c]] Herzschlag auf den LEDs, Geschwindigkeit mit Poti einstellen. Compilieren mit &#039;&#039;arm-linux-gcc led_adc.c -o led_adc&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Andere Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
=== uCos2 ===&lt;br /&gt;
=== Windows CE ===&lt;br /&gt;
=== FreeRTOS ===&lt;br /&gt;
=== emdedian ===&lt;br /&gt;
&lt;br /&gt;
== Software mit Betriebssystem ==&lt;br /&gt;
* Grafische Oberfläche mit der SDL-Bibliothek erstellen:&amp;lt;br&amp;gt;[[Mini2440 SDL GUI Programmierung]]&lt;br /&gt;
&lt;br /&gt;
== Software ohne Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ===&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
== Wo kaufen? ==&lt;br /&gt;
&lt;br /&gt;
Zu beziehen ist das Board entweder über Ebay, meist aus China, oder bei [http://www.watterott.com/de/FriendlyARM Watterott].&lt;br /&gt;
&lt;br /&gt;
== Eigene Displays an das Mini anschließen ==&lt;br /&gt;
&lt;br /&gt;
* Displays mit LVDS Anschluss können z.B. mit diesem selbst gebauten Adapter an das Mini angeschlossen werden. http://www.mikrocontroller.net/topic/217774#new&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [http://www.friendlyarm.net/products/mini2440 Übersicht auf der Friendlyarm Seite]&lt;br /&gt;
=== Howtos ===&lt;br /&gt;
* [http://wiki.linuxmce.org/index.php/Mini2440 Kernel, u-boot und qemu-mini2440 compilieren]&lt;br /&gt;
* [[Mini2440 SDL GUI Programmierung]]&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/mini2440/downloads/list Emdebian+Angstrom Images, s3c_boot_usb]&lt;br /&gt;
&lt;br /&gt;
* [http://programmers-projects.de/node/10 Programmer&#039;s-Projects Mini2440 Projekt (überarbeitetes USB-Upload-Tool für Linux und mehr)]&lt;br /&gt;
&lt;br /&gt;
=== Youtube und ähnliche ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;br /&gt;
[[Category:Linux-Boards]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57101</id>
		<title>Mini2440</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57101"/>
		<updated>2011-05-08T15:02:20Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Ohne Betriebssystem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.friendlyarm.net/products/mini2440 Mini2440 von friendlyarm ]&lt;br /&gt;
&lt;br /&gt;
Das [[Mini2440]] ist ein [[ARM]]-Board mit [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2440&amp;amp;ppmi=PartnoSearch s3c2440] &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;o&#039;&#039;&#039;n &#039;&#039;&#039;C&#039;&#039;&#039;hip von Samsung.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Board&#039;&#039;&#039; bietet:&lt;br /&gt;
* 3,5&amp;quot;, 7&amp;quot; Touchscreen-[[TFT]] oder [[VGA]] &amp;quot;Karte&amp;quot;&lt;br /&gt;
* ARM920T, 400Mhz standard Taktfrequenz, bis zu 533Mhz&lt;br /&gt;
* 64MB-1GB NAND Flash (User App/OS), 2MB NOR Flash (BIOS)&lt;br /&gt;
* 64MB RAM&lt;br /&gt;
* Audio (Stereo Out, 2xMono In)&lt;br /&gt;
* SD-Slot&lt;br /&gt;
* [[USB]] Host, USB Device&lt;br /&gt;
* 10/100MBit LAN (DM9000)&lt;br /&gt;
* 3 Serial Ports&lt;br /&gt;
* [[SPI]], [[PWM]], [[I2C]], ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440.jpg|300px]][[Bild:mini2440_35.jpg|300px]][[Bild:mini2440_7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Als das passende Entwicklungswerkzeug ist ein Linux-Rechner mit passendem Cross-Compiler sowie ein paar Tools vorgesehen.&lt;br /&gt;
Was wirklich benötigt wird:&lt;br /&gt;
* Serial Terminal (picocom, minicom, cutecom, gtkterm, komport, ...)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Mini2440#Toolchain Toolchain]&lt;br /&gt;
* s3c_boot_usb oder [http://programmers-projects.de/node/11 mini2440_usb_upload] (aktueller) zum Hochladen von Bootloader, Kernel etc. über USB&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ausserdem noch:&lt;br /&gt;
* ncurses-dev-Dateien und dialog (Für Kernel-menuconfig)&lt;br /&gt;
* screen, midnight commander&lt;br /&gt;
* Editor mit root-Rechten (z.B. [http://home.in.tum.de/~lazarov/files/research/papers/vi_ausarbeitung.pdf vim])&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen am/mit dem Board ===&lt;br /&gt;
&lt;br /&gt;
Ganz wichtig ist es, eine gute Spannungsversorgung zu verwenden. Es kam anscheinend schon öfter vor, dass kleine Spannungseinbrüche das Board aus dem Gleichgewicht bringen.&lt;br /&gt;
Ich verwende normalerweise das mitgelieferte Netzteil oder ein &#039;&#039;&#039;5V&#039;&#039;&#039;/&#039;&#039;&#039;2A&#039;&#039;&#039; Schaltnetzteil, funktionieren beide einwandfrei.&lt;br /&gt;
Gerade das grosse, 7&amp;quot;, Display braucht ein starkes Netzteil.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ungefährer Stromverbrauch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Board konfig. || Stromverbrauch&lt;br /&gt;
|-&lt;br /&gt;
| mini2440  || 140mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 3,5&amp;quot; TFT || 410mA (T35 Display)&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 7&amp;quot; TFT || 1000mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + VGA Board || mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verbindung zum PC ====&lt;br /&gt;
&lt;br /&gt;
Um vernünftig arbeiten zu können, braucht es auf jeden Fall ein USB A&amp;lt;-&amp;gt;USB B-Kabel, sowie ein 1:1 verbundes 9 poliges SUB-D Kabel mit zwei Buchsen.&lt;br /&gt;
Jenachdem, auf welchem Gerät (PC, Laptop, andere Embedded-Plattform, ...) entwickelt wird, braucht man noch einen USB-RS232 Adapter.&lt;br /&gt;
Einen Zugriff auf die Konsole hat man - nach Anpassung der IP - über Telnet sowie über die serielle Konsole.&lt;br /&gt;
Die serielle Konsole ist in der Standardkonfiguration aktiviert und sollte auch während des Entwickelns immer aktiv sein - so verhindert man ein ungewolltes Ausperren.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk ====&lt;br /&gt;
Entweder klickt man sich quer durch die chinesische/japanische Software und stellt diese auf Englisch um, oder aber man klickt sich blind zu der Stelle, an der man IP Adresse, Gateway und Netzmaske angeben kann.&lt;br /&gt;
&lt;br /&gt;
Etwa genauso einfach sieht es über die Konsole aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Die folgenden drei Zeilen, dürften das soweit bewekstelligen, dass das Netzwerk-Device die IP-Adresse &#039;&#039;&#039;192.168.0.55&#039;&#039;&#039;, die Netzmaske &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039; zugeteilt bekommt. Die beiden anderen Anweisungen sagen dem System, welches Netzwerkgerät der Router ist. In diesem Fall &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, was bisher vielleicht schon in der &#039;&#039;/etc/resolv.conf&#039;&#039; steht. Das lässt sich einfach mit &#039;&#039;cat /etc/resolv.conf&#039;&#039; ansehen. Wenn diese bereits den richtigen Inhalt hat, kann man die &#039;&#039;echo &amp;quot;nam...&#039;&#039;-Anweisung weglassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die resolv.conf nicht existiert oder einen falschen Wert enthält, &#039;&#039;&#039;überschreibt&#039;&#039;&#039; man diese, in dem man nur &#039;&#039;&#039;ein&#039;&#039;&#039; &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; nach das echo setzt. Stehen dort zwei &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; wird die nameserver-Info nur an die Datei angehängt und es kann zu Problemen kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ifconfig eth0 192.168.0.55 netmask 255.255.255.0&lt;br /&gt;
 $ route add default gw 192.168.0.1&lt;br /&gt;
 $ echo &amp;quot;nameserver 192.168.0.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzeraccounts ====&lt;br /&gt;
&lt;br /&gt;
Linux legt wie alle Unix-artigen Betriebssysteme sehr grossen Wert auf eine ordentliche Benutzer- und Rechteverwaltung.&amp;lt;br&amp;gt;&lt;br /&gt;
Daher sollte man sich überlegen, ob es nicht vielleicht besser wäre, wenn man einen extra Benutzer zum Arbeiten/Basteln/Produktiv-Sein/Bier-Trinken/... anlegt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn nicht unbedingt nötig, sollte man auf das Arbeiten als &#039;&#039;&#039;root&#039;&#039;&#039; (oder auch Superuser, Admin, ...) verzichten. Dadurch dass man uneingeschränkt &#039;&#039;&#039;alle&#039;&#039;&#039; Rechte auf dem System besitzt kann es durch Programmierfehler oder auch Schadsoftware zu ernsthaften Schäden kommen (Datenverlust, eventuell Hardwareschäden).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Entscheidung ob man wirklich root sein muss, ist eigentlich relativ einfach. Sie wird normalerweise &#039;&#039;&#039;immer&#039;&#039;&#039; erstmal mit &#039;&#039;&#039;nein&#039;&#039;&#039; beantwortet.&amp;lt;br&amp;gt;Sollte sich im Lauf der Zeit doch herausstellen, dass man root sein muss, kann man diesen Weg immer noch einschlagen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Für einige Aufgaben sind jedoch auch root-Rechte erforderlich.&lt;br /&gt;
Zum Beispiel, wenn man direkt mit outporb()/inportb()/outb()/inb()/... arbeiten will.&amp;lt;br&amp;gt;&lt;br /&gt;
Für diese Fälle gibt es ein gutes Tool, es nennt sich [http://de.wikipedia.org/wiki/Sudo sudo].&lt;br /&gt;
Man kann sudo z.&amp;amp;nbsp;B. sagen, dass Benutzer &#039;&#039;xy&#039;&#039; das Programm /usr/bin/blubb mit root-Rechten immer ausführen darf. Benutzer &#039;&#039;ab&#039;&#039; darf das aber nur, wenn er &#039;&#039;&#039;sein&#039;&#039;&#039; Passwort eingibt. Dann gibt es vielleicht noch Benutzer &#039;&#039;zz&#039;&#039;, der alles ohne Passwort als root ausführen darf.&lt;br /&gt;
&lt;br /&gt;
===== Anlegen eines neuen Benutzeraccounts =====&lt;br /&gt;
Ich gehe davon aus, dass ein Image mit busybox auf dem Board installiert ist. Wenn das Image von FriendlyARM installiert ist, ist das der Fall.&lt;br /&gt;
&lt;br /&gt;
Ein Auszug aus der [http://linux.die.net/man/1/busybox Manpage] von busybox:&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
    adduser [ OPTIONS ] user_name&lt;br /&gt;
&lt;br /&gt;
    Adds a user to the system&lt;br /&gt;
&lt;br /&gt;
    Options:&lt;br /&gt;
&lt;br /&gt;
    -h DIR          Assign home directory DIR&lt;br /&gt;
    -g GECOS        Assign gecos field GECOS&lt;br /&gt;
    -s SHELL        Assign login shell SHELL&lt;br /&gt;
    -G              Add the user to existing group GROUP&lt;br /&gt;
    -S              create a system user (ignored)&lt;br /&gt;
    -D              Do not assign a password (logins still possible via ssh)&lt;br /&gt;
    -H              Do not create the home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Heisst um einen Benutzer &#039;&#039;banana_joe&#039;&#039; mit dem Heimatverzeichnis &#039;&#039;/home/banana_joe&#039;&#039; anzulegen, muss man folgendes &#039;&#039;&#039;als root&#039;&#039;&#039; eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ adduser -h /home/banana_joe -s /bin/sh banana_joe&lt;br /&gt;
 $ passwd banana_joe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;adduser&#039;&#039; legt den Benutzer an, &#039;&#039;passwd&#039;&#039; vergibt ein Passwort.&lt;br /&gt;
&lt;br /&gt;
=== Übertragen von Daten/Programmen in den Flash-Speicher ===&lt;br /&gt;
&lt;br /&gt;
Das übertragen gestaltet sich auf ganz unterschiedliche Weise. Aus Gründen der Einfachheit werde ich hier nur die sinnvollsten/einfachsten/schnellsten Wege beschreiben. Andere Möglichkeiten wären noch &#039;&#039;lrzsz&#039;&#039;, USB und [[JTAG]].&lt;br /&gt;
Wer zuviel Zeit hat, kann sich ja auch ein eigenes Protokoll auf TCP/IP Ebene basteln oder den Kristallspeicher erfinden ;)&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datei übertragen hat, muss man sich vergewissern, dass diese auch Ausführrechte besitzt, wenn sie ein Programm oder ein Ordner ist. Die Lese- und Schreibrechte müssen ebenfalls richtig gesetzt sein.&lt;br /&gt;
Normalerweise stimmt dies alles so wie es ist, aber manchmal muss man ein wenig nachhelfen.&lt;br /&gt;
Wenn sich ein Programm nicht ausführen lässt, oder man nicht in einen Ordner wechseln kann, fehlen die Rechte zum Ausführen. Geändert wird das so:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;datei/ordner&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da hier aber nicht die Unix-Rechte erklärt werden sollen, verweise ich [http://linuxwiki.de/DateiRechte hierauf]&lt;br /&gt;
&lt;br /&gt;
==== http ====&lt;br /&gt;
Für diese Methode muss natürlich das [http://www.mikrocontroller.net/articles/Mini2440#Netzwerk Netzwerk] eingerichtet sein. Man braucht auf einem PC im Netz einen laufenden Werbserver, auf den man die zu übertragenden Dateien legt.&lt;br /&gt;
Nun kann man diese in ein Verzeichnis seiner Wahl &amp;quot;herunterladen&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ cd /tmp&lt;br /&gt;
 $ wget http://10.2.5.29/datei&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ftp ====&lt;br /&gt;
Sobald auf dem Board ein FTP-Server läuft, kann man sich &amp;quot;ganz normal&amp;quot; mit einem FTP-Client (zum Beispiel &#039;&#039;&#039;gftp&#039;&#039;&#039; oder &#039;&#039;&#039;ncftp&#039;&#039;&#039;) verbinden und die Dateien hochladen.&lt;br /&gt;
Ebenso kann man sich auch vom Board auf einen FTP-Server verbinden.&lt;br /&gt;
Nennenswerte Programme sind z.B. &#039;&#039;&#039;ftp&#039;&#039;&#039; für die Linux-Konsole, welches im FriendlyARM Image bereits enthalten ist oder der ncurses-basierende Client &#039;&#039;&#039;ncftp&#039;&#039;&#039;. Allerdings sollte man sich für ncurses-Programme per Telnet oder SSH einloggen, da die serielle Konsole nur rudimentäre Terminal-Emulation unterstützt und die Bildschirmausgabe nicht gerade schön wirkt.&lt;br /&gt;
&lt;br /&gt;
==== scp/ssh ====&lt;br /&gt;
Dazu muss zuerst einmal ein SSH Server auf dem Board laufen.&lt;br /&gt;
[http://www.openssh.com openSSH] ist dafür die erste Wahl. Mit [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] gibt es einige Probleme, da man für SCP auch noch die SCP Binary von openSSH braucht.&lt;br /&gt;
&lt;br /&gt;
Sobald der ssh server läuft, ist alles ganz einfach:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei user@ziel:/pfad&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei einem Board mit der IP 10.0.0.69 und dem User &#039;&#039;root&#039;&#039; wäre das die Befehlszeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei root@10.0.0.69:/root&amp;lt;/pre&amp;gt;&lt;br /&gt;
... und die Datei &#039;&#039;datei&#039;&#039; landet im Heimatverzeichnis von &#039;&#039;root&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um nicht jedes mal das Passwort eingeben zu müssen, lohnt es sich SSH so zu konfigurieren, dass es mit [http://wiki.unixboard.de/index.php/SSH_ohne_Passwort Key-Files] läuft.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
Toolchains gibt es im Netz und auf der CD/DVD zum Board mehrere fertig übersetzte - natürlich lässt sich die Toolchain auch selbst compilieren.&lt;br /&gt;
Das Risiko beim selbst compilieren einer Toolchain liegt darin, dass man eventuell einen fehlerhaften Compiler produziert.&lt;br /&gt;
Gründe hierfür sind z.B.:&lt;br /&gt;
* fehlende, wichtige Patches&lt;br /&gt;
* Verwenden von Entwicklerversionen mit eventuellen Bugs&lt;br /&gt;
* ein schon fehlerhafter Host-Compiler&lt;br /&gt;
* falsche Einstellungen (Prozessor-Architektur, Optimierung, ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das sogenannte Bootstrappen eines Compilers erkennt solche Probleme in den meisten Fällen. Bootstrappen heißt, dass zuerst mit dem Host-Compiler der Quellcode des neuen übersetzt wird und mit diesem zweiten Compiler wird ein dritter Compiler übersetzt. Wenn dies klappt, kann man im Normalfall davon ausgehen, dass der dritte Compiler in Ordnung ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Jedoch ist dies bei einem Crosscompiler so nicht möglich, da der zweite Compiler ja keinen Code für den Host-Computer, sondern nur für das Target produzieren kann. Somit würde man sich einen Compiler für das Board bauen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wer auf Nummer sicher gehen will, nimmt am besten eine der bekannten ARM-Toolchains oder natürlich die von FriendlyARM.&lt;br /&gt;
&lt;br /&gt;
==== old ABI / new EABI ? ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ABI&#039;&#039;&#039; steht für &#039;&#039;&#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;, also eine Art &amp;quot;Standard&amp;quot; wie das compilierte Programm, die Binärdatei, auszusehen hat.&lt;br /&gt;
&lt;br /&gt;
Die ABI ist schon etwas älter und wurde von der EABI (&#039;&#039;&#039;&#039;&#039;E&#039;&#039;&#039;mbedded &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Da nahezu jede verfügbare Toolchain auf der EABI aufbaut, würde ich diese auch nutzen. Alte, für die ABI, compilierte Programme, lassen sich mit der Kernel-Unterstützung zum Ausführen von ABI Programmen trotzdem noch verwenden.&lt;br /&gt;
&lt;br /&gt;
Durch das verwenden der EABI entstehen normalerweise keine unüberwindbaren Hürden, beim compilieren von älteren Quellcodes. Jedenfalls nicht durch den Unterschied ABI/EABI.&lt;br /&gt;
&lt;br /&gt;
==== Kernel FPE / softfloat ? ====&lt;br /&gt;
&lt;br /&gt;
Irgendwann stolpert jeder, der mit ARM-CPUs und Linux arbeitet über mehrere Fragen.&lt;br /&gt;
* Was ist softfloat/FPE?&lt;br /&gt;
* Was ist schneller?&lt;br /&gt;
* Kann man beides nutzen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist softfloat/FPE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch, dass eine ARM-CPU normalerweile keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit Gleitkommaeinheit/FPU] besitzt, müssen alle Berechnungen, welche Kommazahlen enthalten in Software gelöst werden. Bei einem PC-System übernimmt diese Aufgabe eben die FPU und ist somit um einiges schneller.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;softfloat&#039;&#039; ist die Umsetzung durch den Compiler.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;FPE&#039;&#039; bedeutet &#039;&#039;&#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;E&#039;&#039;&#039;mulation&#039;&#039; und wird durch den Kernel bereit gestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist schneller&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Beim FPE-Verfahren wird der Code, welcher die Gleitkomma-Anweisungen enthält auch so übersetzt. Da die CPU aber keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU] besitzt und somit auch keine Maschinensprachen-Befehle dafür, wird eine &#039;&#039;Exception&#039;&#039; ausgelöst (&amp;quot;Fehler&amp;quot;), welche vom Kernel abgefangen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Nun steht der Kernel vor der Aufgabe, die Gleitkomma-Operation zu lösen und dem Programm das Ergebnis mitzuteilen. Danach muss er den Code für die Exception noch zu Ende führen und zurückkehren.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles in allem eine sehr aufwendige Methode.&lt;br /&gt;
&lt;br /&gt;
Da bei &#039;&#039;softfloat&#039;&#039; die Gleitkomma-Operationen vom Compiler soweit zerstückelt und wieder zusammengesetzt werden, dass gar keine Kommas mehr nötig sind, ist das in dem meisten Fällen flotter.&lt;br /&gt;
&lt;br /&gt;
Das schnellste, ist natürlich eine Hardware-[http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU], die es aber auf dem [[mini2440]] nicht gibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man beides nutzen?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Jein, wenn man im Kernel eine der beiden FPE-Methoden aktiviert hat und man führt ein softfloat-Programm aus, dann wird natürlich softfloat verwendet.&lt;br /&gt;
Wenn man allerdings ein FPE-Programm ausführen will und hat die Unterstützung nicht im Kernel, sieht es schlecht aus.&lt;br /&gt;
&lt;br /&gt;
Also am besten eine FPE auswählen und mit einer softfloat-Toolchain compilieren. Das spart Zeit und Kopfzerbrechen über Invalid Opcode/Segfaults usw. ;)&lt;br /&gt;
&lt;br /&gt;
==== Toolchain aufsetzen ====&lt;br /&gt;
Jenachdem, welche Toolchain man einsetzt, kann es sein, dass man den Compileraufruf anpassen muss.&lt;br /&gt;
Wenn man eine Cross Toolchain installiert hat und nur &#039;&#039;gcc&#039;&#039; auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim &#039;&#039;lokalen&#039;&#039; gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit&lt;br /&gt;
&amp;lt;pre&amp;gt; $ which gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc&lt;br /&gt;
oder&lt;br /&gt;
 $ arm-none-linux-gnueabi-gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über &#039;&#039;arm-linux-...&#039;&#039; zu erreichen ist. Entweder passt man die gcc-Aufrufe von hier an, oder man kann sich auch [http://wiki.unixboard.de/index.php/ManPage:ln symbolische Links] anlegen.&lt;br /&gt;
Zum Schluss sollte das dann ungefähr so aussehen, vom bin-Pfad der Toolchain aus!&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ls -al /usr/local/arm/4.3.2/bin/&lt;br /&gt;
 ...&lt;br /&gt;
 lrwxrwxrwx 1 root root      25 2010-02-25 07:15 arm-linux-ld -&amp;gt; arm-none-linux-gnueabi-ld&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich selbst arbeite mit der FriendlyARM-Toolchain, werde mich hier also meistens auf diese beziehen, ausser anders vermerkt.&lt;br /&gt;
===== FriendlyARM =====&lt;br /&gt;
[http://www.friendlyarm.net/downloads Hier] als &#039;&#039;ARM-Linux-GCC&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
Entpackt verbraucht diese Toolchain ca. 295MB. Mit ihr liessen sich bei mir bereits der Kernel, uboot, sowie zahlreiche Programme kompilieren.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird die Toolchain an die richtige Stelle entpackt, der Pfad mit angegeben und dann ist sie auch schon bereit.&lt;br /&gt;
Dieses Kommando sieht auf den ersten Blick etwas nach Dateisystem-Apokalypse aus, ist allerdings lage nicht so wild. Die Option &#039;&#039;-C /&#039;&#039; sagt, dass direkt ins Wurzelverzeichnis entpackt werden soll, daher benötigt man für diesen Schritt &#039;&#039;&#039;root-Rechte&#039;&#039;&#039;. Die FriendlyARM-Toolchain ist so aufgebaut, dass sie damit nach &#039;&#039;/usr/local/arm/4.3.2/&#039;&#039; entpackt wird, &#039;&#039;&#039;unser Ziel&#039;&#039;&#039; :)&lt;br /&gt;
&amp;lt;pre&amp;gt; $ tar xvfj arm-linux-gcc-4.3.2.tar.gz -C /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir das nun so haben, müssen wir natürlich auch noch sagen, wo er den Compiler findet.&lt;br /&gt;
Dazu öffnet man am besten seine &amp;quot;autorun-Datei&amp;quot; der Shell. In der Konsole ganz einfach mit vim/nano/etc zu erreichen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ vim /home/user/.bashrc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dort tragen wir dann &#039;&#039;&#039;ganz ans Ende&#039;&#039;&#039; dies ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=$PATH:/usr/local/arm/4.3.2/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kaum gespeichert, startet man eine neue shell (Konsole) und überprüft ob die Pfade stimmen.&lt;br /&gt;
Wenn &#039;&#039;/usr/local/arm/...&#039;&#039; im Pfad enthalten ist, müsste alles stimmen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ echo $PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tippt man nun &#039;&#039;&#039;nur&#039;&#039;&#039; &#039;&#039;arm-&#039;&#039; und drückt zweimal die Tabtaste, so müsste eine ellenlange Liste mit Programmen wie z.&amp;amp;nbsp;B. &#039;&#039;arm-linux-gcc&#039;&#039; oder &#039;&#039;arm-linux-ld&#039;&#039; erscheinen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== codesourcery =====&lt;br /&gt;
[http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 codesourcery arm-none-linux-gnueabi]&lt;br /&gt;
&lt;br /&gt;
===== buildroot =====&lt;br /&gt;
&lt;br /&gt;
Von http://www.buildroot.net das letzte stable Release holen, mini-2440 wird unterstützt. Der Build dauert zwar einige Zeit, aber nacher kann man sich an X11 erfreuen.&lt;br /&gt;
&lt;br /&gt;
=== Cross Compiling ===&lt;br /&gt;
Sobald die Toolchain richtig aufgesetzt ist kann man anfangen, seine Programme zu übersetzten.&lt;br /&gt;
&lt;br /&gt;
Hier folgt nur eine kurze Beschreibung, wer sowas genauer wissen will, sollte sich auf Seiten wie diesen umsehen:&lt;br /&gt;
* http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html&lt;br /&gt;
* http://linux.bytesex.org/cross-compiler.html&lt;br /&gt;
Ausserdem findet man zu vielen embedded-nutzbaren Programmen direkt ein Cross-Compiling Howto mit ein wenig google.&lt;br /&gt;
Ob diese nun für ARM, AVR32, PPC, MIPS, ... sind, ist im Grunde egal, da man ja meistens nur die Architektur anpassen muss.&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Möglichkeiten. Die erste ist der direkte Aufruf vom Compiler oder mittels eines &amp;quot;festen&amp;quot; Makefiles. Die zweite, wahrscheinlich Häufigste, ist das ausführen eines configure-Scriptes bevor der make-Vorgang gestartet wird.&lt;br /&gt;
&lt;br /&gt;
* Das einfache aufrufen des Compilers&lt;br /&gt;
Dazu ein einfaches Hello-World Programm:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
   printf(&amp;quot;hiho\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compiliert wird das Programm ganz einfach so:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ arm-linux-gcc &amp;lt;name.c&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach wird die Datei &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; an das Board [http://www.mikrocontroller.net/wikisoftware/index.php?title=Mini2440&amp;amp;action=submit#.C3.9Cbertragen_von_Daten.2FProgrammen_ins_Flash übertragen]. &lt;br /&gt;
Sobald &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; auf dem Board ist, kann es ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ./&amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Eventuell fehlen die Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ./configure-Scripte&lt;br /&gt;
Hier sieht es schon ein klein wenig schwieriger aus, ist es aber eigentlich nicht.&lt;br /&gt;
&#039;&#039;Normalerweise&#039;&#039;, aber &#039;&#039;&#039;nicht immer&#039;&#039;&#039;, sieht das compilieren eines Programms für das mini2440 so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ HOST=arm-linux ARCH=arm ./configure --build=arm-linux --your-options&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man muss dem configure-Script lediglich angeben, für welche Architektur das Makefile konfiguriert werden soll und welchen Compiler er dafür nehmen soll.&lt;br /&gt;
&lt;br /&gt;
=== Linux-Kernel ===&lt;br /&gt;
&lt;br /&gt;
Den Kernel-Quellcode besorgt man sich am besten den Kernel-Fork von buserror.&amp;lt;br&amp;gt; Wenn man nicht auf dem ARM selber kompilieren möchte, benutzt man wie hier im Beispiel einen Cross-Compiler (Siehe oben). Weiterhin wird noch git benötigt, um den Kernel-Quellcode zu laden.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6.32-rc8&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Kernel-Verzeichnis und den Kernel mit den Defaults konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd linux-2.6.32-rc8&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make mini2440_defconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Kernel anschließend kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Module bekommen wir wie folgt nach /mnt/mini2440/lib/modules installiert:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm INSTALL_MOD_PATH=/mnt/mini2440 make modules_install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir mit u-boot arbeiten, dann benötigen wir das zImage in /mnt/mini2440/kernel-2.6.32-rc8/arch/arm/boot, um daraus mittels mkimage (Siehe uboot) ein uImage zu erstellen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Kernel-Parameter&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
dem Kernel kann man zum Start noch Parameter für das Board mitgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;mini2440=[0..9][t][b]&amp;lt;/pre&amp;gt;&lt;br /&gt;
[0..9] bestimmen die Display-Timings&lt;br /&gt;
* 0 3,5&amp;quot; Display N35 + TS (alt);&lt;br /&gt;
* 1 7&amp;quot; Display + TS;&lt;br /&gt;
* 2 VGA-Board;&lt;br /&gt;
* 3 3,5&amp;quot; Display T35 + TS;&lt;br /&gt;
* 4 5,6&amp;quot; Display Innolux + TS;&lt;br /&gt;
[t] Touchscreen ist vorhanden;&amp;lt;br&amp;gt;&lt;br /&gt;
[b] Backlight ist vorhanden;&lt;br /&gt;
&lt;br /&gt;
=== root-fs ===&lt;br /&gt;
Um ein eigenes Root-Filesystem zu compilieren, gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Die einfachsten sind Cross-Umgebungen wie [http://buildroot.uclibc.org/ buildroot] und [http://wiki.openembedded.net/index.php/Main_Page openembedded].&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
Auch relativ einfach ist es, sich ein fertig compiliertes debian-arm zu installieren. Wenn man das Debian einmal auf seiner SD-Karte laufen hat, ist es kein Problem mehr, alles wie gewohnt mit apt zu installieren usw. usw.&amp;lt;br&amp;gt;&lt;br /&gt;
Allerdings sind gerade die Scripte bei Debian noch nie dafür bekannt gewesen sonderlich schnell zu laufen und es ist sehr sehr träge beim booten.&lt;br /&gt;
&lt;br /&gt;
Ich habe auf meinem mini2440 seit einiger Zeit Debian am Laufen, habe aber sämtliche Init-Scripte durch eigene ersetzt, welche um einiges flotter laufen. Ebenso verzichte ich auf sysvinit und damit aber auch auf sehr nützliche Tools/Funktionen, wie die runlevels und shutdown oder reboot.&lt;br /&gt;
Diese Funktionen müssen auch von meinen eigenen Scripten übernommen werden. Dafür läuft es um einiges schneller.&lt;br /&gt;
&lt;br /&gt;
[http://emqbit.com/deboostrap-debian Hier] eine Anleitung für ein AT91-Linux Board mit Debian. Diese kann fast 1:1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit X11, Lighttpd, PHP, Python, mc, vim, mpd, alsa, gcc, ... (und auch apache als leidige Abhängigkeit von PHP) braucht mein Debian etwa 550MB auf der SD-Karte.&lt;br /&gt;
Schon ein ordentlicher Brummer, aber egal, es bootet mit eigenen Scripten innerhalb von 15 Sekunden.&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
Ooooh wer daran denkt, hat einfach nur zuviel Zeit. Gentoo in allen Ehren, aber allein PHP zu compilieren dauert gut 4 Stunden... danach habe ich es aufgegeben.&lt;br /&gt;
&lt;br /&gt;
Wer Gentoo installieren kann, wird sich auf dem Mini2440 auch nicht schwerer tun, als auf einem PC. Der Unterschied besteht nur darin, dass man die Stage auf SD Karte packen muss, am normalen Rechner natürlich, und dort dann schon die wichtigsten Einstellungen vornehmen muss.&lt;br /&gt;
&lt;br /&gt;
Mit Portage und den ganzen Dev-Files ist Gentoo ein riesen Gebilde für so ein schwachbrüstiges Board. Eine 4GB SD-Karte ist das Minimum. Außer man bootet zuerst in den Flash und dann chrootet man auf ein Gentoo auf einer USB-Festplatte. uboot kann das, soweit ich weiß, nicht.&lt;br /&gt;
&lt;br /&gt;
=== sys-fs ===&lt;br /&gt;
Sysfs ist ein virtuelles Dateisystem, welches seit dem Linux Kernel 2.6. zur Verfügung gestellt wurde. Der Kernel stellt dabei Konfigurationen, Informationen über Vorrichtungen und Treiber im sogenannten userspace zur Verfügung. Dies Bedeutet einfach, dass Informationen/Geräte an einer festgelegten Stelle im Dateisystem stehen und ausgelesen oder beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
Über einige Dateien in diesem Dateisystem können GPIOs und z.B. auch LEDs angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer ===&lt;br /&gt;
Der Framebuffer ist von Haus aus im FriendlyARM Kernel aktiviert und ohne ihn lässt sich im Linux keine Ausgabe auf dem Display realisieren. Er ist unter &#039;&#039;/dev/fb0&#039;&#039; zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Kernelkonfiguration muss die Framebuffer-Konsole und der Framebuffer-Treiber für das jeweilige Display gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Eine Textausgabe geht ganz einfach über das Terminal, welche auf ihn gemappt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/tty1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann dem Framebuffer diverse Argumente mitgeben, die die Ausgabe auf dem Display beeinflussen. Diese werden über &#039;&#039;fbcon=...&#039;&#039; angeben. Man kann auch mehre Argumente angeben, das sähe zum Beispiel so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p1 console=ttySAC0 fbcon=rotate:1 fbcon=scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können mehrere fbcon-Parameter auch durch Komma getrennt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
... fbcon=rotate:1,scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Scrollback-Buffer ist auf diesem Display eigentlich nicht nötig, da man hier auf dem Mini2440 auf keiner Konsole mit Tastatur usw. arbeitet. Daher schaltet man ihn mit &#039;&#039;fbcon=scrollback:0&#039;&#039; ab, das spart gegenüber dem Standardwert 32kB RAM.&amp;lt;br&amp;gt;&lt;br /&gt;
Wer ihn doch benötigt, kann ihn natürlich trotzdem verwenden. Die Zahl nach dem Doppelpunkt steht für die Größe in Bytes. Ein &#039;&#039;k&#039;&#039; als Suffix steht für Kilobyte, &#039;&#039;fbcon=scrollback:1024k&#039;&#039; entspräche einem Scrollback-Buffer von 1MB.&lt;br /&gt;
&lt;br /&gt;
Für die FB-Konsole gibt es einige weitere Möglichkeiten und viele Optionen lassen sich zur Laufzeit ändern. Hier habe ich nur das Wichtigste beschrieben. Wer darüber mehr erfahren will, sollte sich im Kernel-Quellcode die Datei &#039;&#039;Documentation/fb/fbcon.txt&#039;&#039; ansehen.&lt;br /&gt;
&lt;br /&gt;
==== Font wählen ====&lt;br /&gt;
Die voreingestellte VGA8x16 Font ist etwas groß und es passt nicht allzuviel Text auf das Display. Die am besten lesbare, kleine Schrift ist die Mac6x11 Font.&lt;br /&gt;
In menuconfig folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Select compiled-in fonts&lt;br /&gt;
            &amp;lt;*&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*]   Map the console to the primary display device&lt;br /&gt;
            [*]   Framebuffer Console Rotation&lt;br /&gt;
            [*] Select compiled-in fonts&lt;br /&gt;
            [ ]   VGA 8x8 font&lt;br /&gt;
            [ ]   VGA 8x16 font&lt;br /&gt;
            [*]   Mac console 6x11 font (not supported by all drivers)&lt;br /&gt;
            [ ]   console 7x14 font (not supported by all drivers)&lt;br /&gt;
            [ ]   Pearl (old m68k) console 8x8 font&lt;br /&gt;
            [ ]   Acorn console 8x8 font&lt;br /&gt;
            [ ]   Mini 4x6 font&lt;br /&gt;
            [ ] Sparc console 8x16 font&lt;br /&gt;
            [ ] Sparc console 12x22 font (not supported by all drivers)&lt;br /&gt;
            [ ] console 10x18 font (not supported by all drivers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Werden mehrere Fonts eincompiliert, können sie so ausgewählt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Kernel-Commandline)&lt;br /&gt;
... fbcon=font:xxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mögliche Werte für &#039;&#039;xxxx&#039;&#039; sind:&lt;br /&gt;
* VGA8x8&lt;br /&gt;
* VGA8x16&lt;br /&gt;
* Mac6x11&lt;br /&gt;
* 7x14&lt;br /&gt;
* 10x18&lt;br /&gt;
* MINI4x6&lt;br /&gt;
* RomanLarge&lt;br /&gt;
* SUN8x16&lt;br /&gt;
* SUN12x22&lt;br /&gt;
* ProFont6x11&lt;br /&gt;
* Acorn8x8&lt;br /&gt;
* PEARL8x8&lt;br /&gt;
&lt;br /&gt;
Bei machen Fonts steht in der Kernel-Menuconfig &#039;&#039;not supported by all drivers&#039;&#039;. Dies erklärt sich so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Note, not all drivers can handle font with widths not divisible by 8,&lt;br /&gt;
such as vga16fb.&lt;br /&gt;
kernel-src/Documentation/fb/fbcon.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manche Treiber können nicht mit Fontbreiten/-höhen umgehen, welche nicht durch 8 teilbar sind. Da aber z.B. die MAC6x11 Font auch nicht durch 8 teilbar ist und das Mini2440 das anzeigen kann, gehe ich davon aus, dass alle funktionieren.&lt;br /&gt;
&lt;br /&gt;
==== Rotation ====&lt;br /&gt;
Um das Display zu &amp;quot;drehen&amp;quot; folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*] Framebuffer Console Rotation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also Kernel-Parameter im Bootloader dann einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fbcon=rotate:x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für &#039;&#039;x&#039;&#039; sind Werte von 0 bis 3 gültig. Jeweils wird um 90° im Uhrzeigersinn weitergedreht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Rotation bezieht sich &#039;&#039;&#039;nur&#039;&#039;&#039; auf den Framebuffer. Ein anschließend gestartetes Qtopia (z.B.) bleibt von der gewählten Einstellung unberührt.&lt;br /&gt;
In eigenen Anwendungen, welche eine grafische Oberfläche bereitstellen, lässt sich die Rotation allerdings verwenden, indem man einfach die Datei &#039;&#039;&#039;/proc/cmdline&#039;&#039;&#039; ausliest und den dort gegebenen Wert verwendet, um seine Bildschirmausrichtung anzupassen.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader ===&lt;br /&gt;
Die beiden verfügbaren Bootloader sind vivi (ein &amp;quot;standard-s3c24xx-Linux-Bootloader&amp;quot;) und u-boot, &#039;&#039;&#039;der&#039;&#039;&#039; Bootloader für embedded-Systeme schlechthin ;)&lt;br /&gt;
&lt;br /&gt;
Gemeinsam haben sie eigentlich nur, dass sie &#039;&#039;&#039;a)&#039;&#039;&#039; funktionieren und &#039;&#039;&#039;b)&#039;&#039;&#039; einen Linux-Kernel laden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Der große Nachteil von vivi ist, dass es nur mit [http://en.wikipedia.org/wiki/YAFFS YAFFS2]-Dateisystemen umgehen kann, die auf dem onboard-Flash liegen müssen.&lt;br /&gt;
Sobald der Kernel geladen ist, ist das kein Problem mehr, doch der Kernel muss eben im Flash liegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Um nun z.&amp;amp;nbsp;B. von USB-Festplatten/Sticks und SD-/MMC-Karten booten zu können, muss also u-boot installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNUNG: An einem Bootloader herumzuspielen, kann sehr böse ausgehen, etwa mit dem unbootbar-mach-Vorgang, der durch zu wenig Nachdenken ausgelöst wird.&lt;br /&gt;
Das mini2440 lässt sich zwar jederzeit per JTAG mit LPT-Adapter zurückholen, ist doch aber eigentlich unnötig ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== uboot ====&lt;br /&gt;
&lt;br /&gt;
Der Bootloader uboot wurde von &amp;quot;buserror&amp;quot; soweit an das mini2440 angepasst, dass er mehr oder weniger läuft.&lt;br /&gt;
Für die verschiedenen Boards gelten also auch leicht verschiedene Anweisungen um uboot ins Wasser zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das git und die Seite von &amp;quot;buserror&amp;quot; ist [http://code.google.com/p/mini2440/ hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Boards:&lt;br /&gt;
* 64MB &lt;br /&gt;
* 128MB&lt;br /&gt;
* 256MB&lt;br /&gt;
** [[Datei:mini2440.h]]&lt;br /&gt;
** [[Datei:uboot.bin]]&lt;br /&gt;
* 1GB&lt;br /&gt;
&lt;br /&gt;
Den u-boot-Fork von buserror laden wir am besten mit git. Weiterhin benötigen wir einen Cross-Compiler (Siehe oben). Die letzte mir bekannte Version des GCC mit dem sich das &amp;quot;U-Boot&amp;quot; kompilieren lässt ist 4.3.4.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git u-boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Source-Verzeichnis und mit den Defaults für das Mini2440 konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd u-boot&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make mini2440_config&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte, dann die Datei include/configs/mini2440.h bearbeiten, z.&amp;amp;nbsp;B. für das Mini2440-256MB:&lt;br /&gt;
&amp;lt;pre&amp;gt;  #define USE_920T_MMU		1&lt;br /&gt;
  //#define CONFIG_USE_IRQ		1	/* Needed for USB device! */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(CONFIG_USE_IRQ auskommentieren, damit das Mini2440 u-boot aus dem RAM ausgeführt werden kann. Leider kann man dann im &amp;quot;U-Boot&amp;quot; kein USB-Gerät mehr ansprechen, um ggfl. mal wieder aufzutauchen).&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich kann man noch defaults für das Environment (bootargs, ip, ...) festlegen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Anschließend das &amp;quot;U-Boot&amp;quot; kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Verzeichnis tools findet man mkimage. Damit kann man aus einem zImage (Linux-Kernel) ein uImage machen. Dieses uImage lässt sich von u-boot aus laden (Nand, NFS, TFtp, MMC) und ausführen. &lt;br /&gt;
&amp;lt;pre&amp;gt;  mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d path-to/zImage path-to/uImage&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt haben wir ein von u-boot ausführbaren Linux-Kernel.&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
=== Abspielen von Audio-Daten ===&lt;br /&gt;
Mit dem FriendlyARM-Image gibt es zwei Möglichkeiten Audio-Dateien abzuspielen.&amp;lt;br&amp;gt;Die Eine ist, Qtopia zu starten und dort einfach die Datei von SD-Karte, USB, ... auszuwählen und er spielt sie ab.&lt;br /&gt;
&lt;br /&gt;
Die andere ist, die Datei auf der Konsole mit &#039;&#039;madplay dateiname.mp3&#039;&#039; abzuspielen.&amp;lt;br&amp;gt;[http://www.digipedia.pl/man/doc/view/madplay.1/ Hier] die Manpage zu madplay.&lt;br /&gt;
&lt;br /&gt;
==== MPD - der Music Player Daemon ====&lt;br /&gt;
Mit einem eigenen Image oder wenn man sich alles von Hand compilieren will ist der [http://www.musicpd.org/ Music Player Daemon] ein genialer Musik-Player. Er lässt sich durch sehr sehr viele verschiedene Clients steuern und braucht dabei nahezu kaum Rechenleistung.&amp;lt;br&amp;gt;&lt;br /&gt;
Der eigentliche Player läuft vollkommen &amp;quot;versteckt&amp;quot; im Hintergrund. Um ihn zu steuern wird vom Client eine Verbindung aufgebaut und die entsprechenden Befehle gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Clients müssen noch nicht einmal auf dem Board laufen, können auch auf jedem anderen Rechner im Netzwerk oder Internet sein. Man muss einfach nur die IP und den Port angeben.&lt;br /&gt;
&lt;br /&gt;
Mit gerade mal etwa 100 Zeilen Code lässt sich eine einfach zu nutzende Client-Lib in C programmieren um dann seine eigenen Clients zu schreiben. Damit lässt sich der MPD durch so ziemlich jedes Ereignis an einem Rechner steuern.&lt;br /&gt;
[[MPD Client Programming|hier]] habe ich einen Artikel erstellt, der das wichtige dafür beschreibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufnehmen von Audio-Daten ===&lt;br /&gt;
=== Abspielen von Video-Daten ===&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe noch keinen Player, bis auf den vom originalen Image mit Qtopia gesehen/compiliert, welcher Filme einigermaßen flüssig abspielt.&lt;br /&gt;
&lt;br /&gt;
Mein Ansatz momentan ist, den MPlayer mit fbdev, directfb und sdl mit Framebuffer Ausgabe direkt auf den Framebuffer schreiben zu lassen.&lt;br /&gt;
Allerdings habe ich damit bisher nur sehr sehr magere Ergebnisse gehabt.&lt;br /&gt;
&lt;br /&gt;
=== Kamera-Interface ===&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Nahezu alles ist über die verschiedenen Header auf dem Board zu erreichen&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
[[Bild:mini2440_pinout.jpg|450px]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Audio / UART&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Audio IN || CON1, CON2, CON3 || CON8 || J1 (ext. NAND/NOR-sw)&lt;br /&gt;
|-&lt;br /&gt;
| 1   || IN       || TX               || VIN  || NORBOOT   &lt;br /&gt;
|-&lt;br /&gt;
| 2   || GND      || RX               || GND  || OM0      &lt;br /&gt;
|-&lt;br /&gt;
| 3   || IN       || 5V               || GND  || NANDBOOT &lt;br /&gt;
|-&lt;br /&gt;
| 4   ||          || GND              || VDD5V||          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;CON4 GPIO, CON5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || CON5 || CON4 GPIO || CAMERA || CON12 || JTAG&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 5V  || 5V || SDA || EINT8/GPG0  || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || 3.3V || SCL|| EINT11/GPG3 ||  3.3V&lt;br /&gt;
|-&lt;br /&gt;
| 3 || EINT17|| GND || EINT20|| EINT13/GPG5  || /TRST&lt;br /&gt;
|-&lt;br /&gt;
| 4 || EINT18|| /RESET || CAMRST|| EINT14/GPG6  || /RESET&lt;br /&gt;
|-&lt;br /&gt;
| 5 || EINT3|| AIN0 || CAM_CLOCK|| EINT15/GPG7  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || EINT9|| AIN1 || CAM_HREF|| EINT19/GPG11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 7 || /GCS1|| AIN2 || CAM_VSYNC|| 3.3V || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 8 || /GCS2 || AIN3 || CAM_PCLK|| GND || GND&lt;br /&gt;
|-&lt;br /&gt;
| 9  || /GCS3 || EINT0 || CAMDATA7|| ||TCK&lt;br /&gt;
|-&lt;br /&gt;
|  10 || /GCS5|| EINT1 || CAMDATA6|| ||GND&lt;br /&gt;
|-&lt;br /&gt;
| 11  || L/OE|| EINT2 || CAMDATA5  &lt;br /&gt;
|-&lt;br /&gt;
|  12 || L/WE|| EINT3 || CAMDATA4  &lt;br /&gt;
|-&lt;br /&gt;
|  13 || /WAIT|| EINT4 || CAMDATA3  &lt;br /&gt;
|-&lt;br /&gt;
|   14|| /RESET|| EINT5 || CAMDATA2  &lt;br /&gt;
|-&lt;br /&gt;
|  15 || /XDACK0|| EINT6 || CAMDATA1  &lt;br /&gt;
|-&lt;br /&gt;
|  16 || /XDREQ0|| EINT8 || CAMDATA0 &lt;br /&gt;
|-&lt;br /&gt;
|  17 || LADDR0|| EINT9 || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 18  ||LADDR1|| EINT11 || VDDCAM &lt;br /&gt;
|-&lt;br /&gt;
|  19 ||LADDR2|| EINT13 || 1.8V &lt;br /&gt;
|-&lt;br /&gt;
|  20 ||LADDR3|| EINT14 || GND &lt;br /&gt;
|-&lt;br /&gt;
|   21||LADDR4|| EINT15 ||  &lt;br /&gt;
|-&lt;br /&gt;
|   22||LADDR5|| EINT17 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|   23||LADDR6|| EINT18&lt;br /&gt;
|-&lt;br /&gt;
|   24||LADDR24|| EINT19&lt;br /&gt;
|-&lt;br /&gt;
|   25||LDATA0||MISO&lt;br /&gt;
|-&lt;br /&gt;
|   26||LDATA1||MOSI&lt;br /&gt;
|-&lt;br /&gt;
|   27||LDATA2||CLOCK&lt;br /&gt;
|-&lt;br /&gt;
|   28||LDATA3||SS&lt;br /&gt;
|-&lt;br /&gt;
|   29||LDATA4|| SCL&lt;br /&gt;
|-&lt;br /&gt;
|   30||LDATA5|| SDA&lt;br /&gt;
|-&lt;br /&gt;
|   31||LDATA6||GPB0&lt;br /&gt;
|-&lt;br /&gt;
|   32||LDATA7||GPB1&lt;br /&gt;
|-&lt;br /&gt;
|33   ||LDATA8||CLKOUT0&lt;br /&gt;
|-&lt;br /&gt;
|  34 ||LDATA9||CLKOUT1&lt;br /&gt;
|-&lt;br /&gt;
|   35||LDATA10&lt;br /&gt;
|-&lt;br /&gt;
|36   ||LDATA11&lt;br /&gt;
|-&lt;br /&gt;
|  37 ||LDATA12&lt;br /&gt;
|-&lt;br /&gt;
| 38  ||LDATA13&lt;br /&gt;
|-&lt;br /&gt;
|  39 ||LDATA14&lt;br /&gt;
|-&lt;br /&gt;
|  40 ||LDATA15&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Steckverbinder ===&lt;br /&gt;
Digi-Key:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Connector      || Hersteller || Artikelnummer || Teilenummer&lt;br /&gt;
|-&lt;br /&gt;
| CON1,2,3,8     || JST Sales America Inc || PHR-4               ||  [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1164-ND 	455-1164-ND]  &lt;br /&gt;
|-&lt;br /&gt;
| Audio IN, J1   || JST Sales America Inc || PHR-3               || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1126-ND 455-1126-ND]      &lt;br /&gt;
|-&lt;br /&gt;
|                || JST Sales America Inc || SPH-002T-P0.5L      || [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=455-2148-1-ND 455-2148-1-ND]&lt;br /&gt;
|-&lt;br /&gt;
| CON4           || Sullins Connector Solutions || SFH213-PPPN-D17-ID-BK-M181 || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9061-ND S9061-ND]&lt;br /&gt;
|-&lt;br /&gt;
|                || Sullins Connector Solutions || SBH21-NBPN-D17-ST-BK || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9023-ND	S9023-ND]&lt;br /&gt;
          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== onboard Hardware ====&lt;br /&gt;
Sobald man mal anfangen möchte, sich mit der Hardware auseinanderzusetzen, sollte man natürlich auch wissen wie, was und wo dran.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;... an welchem EINT war ...  Low oder High aktiv? ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440_eeprom.jpg||300px]][[Bild:mini2440_buttons.jpg||300px]][[Bild:mini2440_leds.jpg||300px]][[Bild:mini2440_poti.jpg||300px]]&lt;br /&gt;
[[Bild:mini2440_buzzer.jpg||300px]]&lt;br /&gt;
&lt;br /&gt;
=== [[UART]] ===&lt;br /&gt;
Die S3C2440 besitzt insgesamt drei unabhängige UARTs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Spannungspegel der Rx und Tx Pins sind etwas verwirrend. Auf dem Stecker liegen 5V an, doch das Datenblatt sagt nicht, ob die Rx und Tx Pins auch 5V-Tolerant sind. Daher sollte man das ausschliessen. Ein Spannungsteiler aus 3k3 und 2k2 an der Rx-Leitung vom Prozessor sollte das Problem beheben, solange der Empfänger an der Tx-Leitung 3.3V noch als H-Signal versteht.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;UARTs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! UART || 64 byte FIFO || IrDA 1.0 || RTS/CTS Leitungen|| Spannungspegel (L - H)&lt;br /&gt;
|-&lt;br /&gt;
| uart0 || * || * || * || 0V - 3,3V / RS232&lt;br /&gt;
|-&lt;br /&gt;
| uart1 || * || * || * || 0V - 3,3V&lt;br /&gt;
|-&lt;br /&gt;
| uart2 || * || * || x || 0V - 3,3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Über die Ansteuerung auf Hardwareebene braucht man sich, solange man ein Betriebssystem verwendet, &#039;&#039;&#039;keine&#039;&#039;&#039; Gedanken zu machen.&lt;br /&gt;
Unter Linux sind die drei UARTs über ttySAC0, ttySAC1 und ttySAC2 zu erreichen.&lt;br /&gt;
&lt;br /&gt;
=== [[LED|LEDs]] ===&lt;br /&gt;
Wenn der Kerneltreiber für die LEDs mit eincompiliert wurde, ist es ein leichtes, die LEDs mit einer kleinen Hand voll C-Zeilen anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Man öffnet die Gerätedatei und mittels &#039;&#039;ioctl()&#039;&#039; schreibt man die Werte in die Gerätedatei.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von ioctl sieht so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
ioctl(descriptor, AN/AUS, LED_NUMMER);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Also muss man um zum Beispiel LED0 anzuschalten für AN/AUS &#039;&#039;&#039;1&#039;&#039;&#039; angeben und für LED_NUMMER die &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
Dafür habe ich im Abschnitt C-Code zwei Beispiel-Funktionen geschrieben. Die erste erwartet AN/AUS und LED_NUMMER als Argument, die Zweite erwartet eine Bitmaske, was mir persönlich doch besser gefällt ;)&lt;br /&gt;
&lt;br /&gt;
==== C-Code ====&lt;br /&gt;
&amp;lt;c&amp;gt;int setleds(int on, int led_no) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	ioctl(led_fd, on, led_no);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int setledmask(int mask) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	if(mask &amp;amp; 0x01) ioctl(led_fd, 1, 0); else ioctl(led_fd, 0, 0);&lt;br /&gt;
	if(mask &amp;amp; 0x02) ioctl(led_fd, 1, 1); else ioctl(led_fd, 0, 1);&lt;br /&gt;
	if(mask &amp;amp; 0x04) ioctl(led_fd, 1, 2); else ioctl(led_fd, 0, 2);&lt;br /&gt;
	if(mask &amp;amp; 0x08) ioctl(led_fd, 1, 3); else ioctl(led_fd, 0, 3);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LED-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für LEDs, kann man diese im Verzeichnis &#039;/sys/class/leds/&#039; finden und ansteuern. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /sys/class/leds/           # wechselt in den Ordner&lt;br /&gt;
ls -lsa                       # listet alle Vorhandenen LEDs auf&lt;br /&gt;
echo 1 &amp;gt; led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; led4/brightness      # LED AUS&lt;br /&gt;
# oder&lt;br /&gt;
echo 1 &amp;gt; /sys/class/leds/led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; /sys/class/leds/led4/brightness      # LED AUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[I2C]] ===&lt;br /&gt;
==== i2ctools ====&lt;br /&gt;
Die [http://www.lm-sensors.org/wiki/I2CTools i2ctools] sind Linux-Userspace Programme, welche dafür gedacht sind, auf einfache Weise auf der Konsole mit I2C Geräten zu kommunizieren.&lt;br /&gt;
==== 24xx [[EEPROM]]s ====&lt;br /&gt;
==== [[Port-Expander]] ====&lt;br /&gt;
===== PCF8574 / PCF8574a =====&lt;br /&gt;
Einen [[PCF8574]] anzusteuern ist sehr einfach. Mit den i2ctools kann man damit erste Tests machen um zu sehen, ob er funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der Port-Expander wird mit den 3.3V versorgt, welche das Board liefert, SDA und SCL natürlich ebenfalls anschliessen.&lt;br /&gt;
Ich habe alle drei Adress-Pins auf &#039;&#039;&#039;L&#039;&#039;&#039; gelegt und erhalte von &#039;&#039;i2cdetect&#039;&#039; so die Adresse &#039;&#039;&#039;0x38&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== [[SPI]] ===&lt;br /&gt;
=== [[PWM]] ===&lt;br /&gt;
==== onboard buzzer ====&lt;br /&gt;
=== [[ADC]] ===&lt;br /&gt;
==== Touchscreen ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann der Touchscreen wie z. B. jede Maus über das event-Interface angesprochen werden.&lt;br /&gt;
Normalerweise liegt der Touchscreen auf &#039;&#039;/dev/input/event0&#039;&#039;.&lt;br /&gt;
Diese Gerätedatei muss man auch der tslib angeben.&lt;br /&gt;
&lt;br /&gt;
==== LCD Backlight ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann die Hintergrundbeleuchtung des Displays einfach über die entsprechende Geräte-Datei ein- bzw. ausgeschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
einschalten: &amp;lt;pre&amp;gt;# echo 1 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
ausschalten: &amp;lt;pre&amp;gt;# echo 0 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onboard Poti ====&lt;br /&gt;
Hierzu muss wieder der Kerneltreiber mit eincompiliert sein, damit man das Gerät &#039;&#039;/dev/adc&#039;&#039; hat. Im FriendlyARM-Kernel ist der Treiber fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Die Funktion getpoti() liest in einer Schleife mehrmals den Potiwert ein und bildet einen Mittelwert, der zurückgegeben wird.&lt;br /&gt;
Die Anzahl der Werte, aus denen der Mittelwert gebildet wird, wird mit dem #define &#039;&#039;LOOPs&#039;&#039; angegeben.&lt;br /&gt;
===== C-Code =====&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define LOOPS 12 // 12 Werte fuer Mittelwert&lt;br /&gt;
&lt;br /&gt;
unsigned int getpoti() {&lt;br /&gt;
	int value, i, fd = open(&amp;quot;/dev/adc&amp;quot;, 0);&lt;br /&gt;
	unsigned int add = 0, ret;&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open adc device!\n&amp;quot;); return -1; }&lt;br /&gt;
	&lt;br /&gt;
	for(i = 0; i &amp;lt; LOOPS; i++) {&lt;br /&gt;
		char buffer[30];&lt;br /&gt;
		int len = read(fd, buffer, sizeof buffer -1);&lt;br /&gt;
		if (len &amp;gt; 0) {&lt;br /&gt;
			buffer[len] = &#039;\0&#039;;&lt;br /&gt;
			value = -1;&lt;br /&gt;
			sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;value);&lt;br /&gt;
			add += value;&lt;br /&gt;
		} else {&lt;br /&gt;
			printf(&amp;quot;cant read from adc device!\n&amp;quot;);&lt;br /&gt;
                        close(fd);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	ret = add / LOOPS;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
Da der S3C2440 über sage und schreibe &#039;&#039;&#039;130&#039;&#039;&#039; GPIOs verfügt, mit diversen Funktionen, wie I2C, PWM, ..., das setzen der &amp;quot;Drive Strength&amp;quot; (maximaler Strom an machen Pins), ... ist das Ganze nicht mehr so einfach wie bei einem AVR.&lt;br /&gt;
Der Bastler sollte hier schon genau wissen was er will vorallem das [[Media:S3C2440_datasheet_samsung.pdf|Datenblatt]] zu Rate ziehen.&lt;br /&gt;
Die Funktionen und Register des Chips sind ab Seite &#039;&#039;&#039;274&#039;&#039;&#039; (Kapitel &#039;&#039;IO-Ports&#039;&#039;) zu finden.&lt;br /&gt;
Die elektrischen Daten sind ab Seite &#039;&#039;&#039;554&#039;&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
==== C-Code für die onboard-Buttons ====&lt;br /&gt;
Hierfür wird wird der Kerneltreiber benötigt. Im FriendlyARM-Kernel ist dieser fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Wenn die Buttons eingelesen werden, erhält man für jeden nicht gerdrücken Buttons &#039;&#039;0x30&#039;&#039; und für jeden gedrückten Button &#039;&#039;0x31&#039;&#039;.&lt;br /&gt;
Die Funktion liest die Buttons ein und vergleicht den Wert, sobald 0x31 kommt, ist sie beendet. Die Buttons sind von 0 bis 5 nummeriert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
int wait4button(int button) {&lt;br /&gt;
	char btn[6] = {&#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;};&lt;br /&gt;
	int fd = open(&amp;quot;/dev/buttons&amp;quot;, 0);&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open buttons device&amp;quot;); return(-1); }&lt;br /&gt;
&lt;br /&gt;
	while(btn[button] == 0x30) {	// if a button is released, we read 0x30, if pressed 0x31&lt;br /&gt;
		if (read(fd, btn, sizeof btn) != sizeof btn) {&lt;br /&gt;
			printf(&amp;quot;cant read buttons!&amp;quot;);&lt;br /&gt;
			close(fd);&lt;br /&gt;
			return(-1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPIO-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für GPIOs, kann man diese im Verzeichnis &#039;/sys/class/gpio/&#039; finden und ansteuern. Eine gute Erklärung ist dazu [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#gpio-sysfs hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Real Time Clock ===&lt;br /&gt;
Für die Real Time Clock, welche fest im Prozessor integriert ist, gibt es einen Kerneltreiber.&lt;br /&gt;
&lt;br /&gt;
Lesen/Setzen lässt sich sich sehr einfach mit dem Tool [http://linux.die.net/man/8/hwclock hwclock].&lt;br /&gt;
=== Beispielprogramme ===&lt;br /&gt;
&lt;br /&gt;
Hier habe ich ein paar kleine Beispielprogramme im Quellcode hochgeladen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:led_adc.c]] Herzschlag auf den LEDs, Geschwindigkeit mit Poti einstellen. Compilieren mit &#039;&#039;arm-linux-gcc led_adc.c -o led_adc&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Andere Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
=== uCos2 ===&lt;br /&gt;
=== Windows CE ===&lt;br /&gt;
=== FreeRTOS ===&lt;br /&gt;
=== emdedian ===&lt;br /&gt;
&lt;br /&gt;
== Software mit Betriebssystem ==&lt;br /&gt;
* Grafische Oberfläche mit der SDL-Bibliothek erstellen:&amp;lt;br&amp;gt;[[Mini2440 SDL GUI Programmierung]]&lt;br /&gt;
&lt;br /&gt;
== Software ohne Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ===&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
== Wo kaufen? ==&lt;br /&gt;
&lt;br /&gt;
Zu beziehen ist das Board entweder über Ebay, meist aus China, oder bei [http://www.watterott.com/de/FriendlyARM Watterott].&lt;br /&gt;
&lt;br /&gt;
== Eigene Displays an das Mini anschließen ==&lt;br /&gt;
&lt;br /&gt;
* Displays mit LVDS Anschluss können z.B. mit diesem selbst gebauten Adapter an das Mini angeschlossen werden. http://www.mikrocontroller.net/topic/217774#new&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [http://www.friendlyarm.net/products/mini2440 Übersicht auf der Friendlyarm Seite]&lt;br /&gt;
=== Howtos ===&lt;br /&gt;
* [http://wiki.linuxmce.org/index.php/Mini2440 Kernel, u-boot und qemu-mini2440 compilieren]&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/mini2440/downloads/list Emdebian+Angstrom Images, s3c_boot_usb]&lt;br /&gt;
&lt;br /&gt;
* [http://programmers-projects.de/node/10 Programmer&#039;s-Projects Mini2440 Projekt (überarbeitetes USB-Upload-Tool für Linux und mehr)]&lt;br /&gt;
&lt;br /&gt;
=== Youtube und ähnliche ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;br /&gt;
[[Category:Linux-Boards]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57100</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57100"/>
		<updated>2011-05-08T14:45:09Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* SDL_gfx-2.0.21 Demoprogramme */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen, wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== Vorarbeit ==&lt;br /&gt;
Damit es funktioniert muss die [http://www.mikrocontroller.net/articles/Mini2440#FriendlyARM friendlyARM Toolchain] installiert sein und folgendes in der Konsole erledigt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/arm/4.3.2/lib/libts.la&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/arm/4.3.2/lib/libts.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Datei &amp;quot;/usr/local/arm/4.3.2/lib/libts.la&amp;quot; die Zeile 35 als Adminstrator editieren (z.B. in der Konsole mit &amp;quot;sudo gedit /usr/local/arm/4.3.2/lib/libts.la&amp;quot;).&lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/lib&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
ändern zu &lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/arm/4.3.2/lib&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
Die Bibliothek libSDL wird folgendermaßen kompiliert:&amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen, SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testprogramme ==&lt;br /&gt;
Die kompilierten Programme können nur auf dem Mini ausgeführt werden, wenn auch die vorher erstellten Bibliotheken dem Kernel bekannt sind. Die Bibliotheken aus diesem Artikel wären dann folgende:&lt;br /&gt;
* libts-0.0.so.0.1.1&lt;br /&gt;
* libSDL-1.2.so.0.11.3&lt;br /&gt;
* libSDL_image-1.2.so.0.8.2&lt;br /&gt;
* libSDL_gfx.so.13.5.2&lt;br /&gt;
&lt;br /&gt;
Weil dies aber nicht der Standardname ist unter dem die Bibliothek angesprochen ist, muss noch ein Link auf diese Datei mit dem richtigen Dateinamen erstellt werden. Dazu kopiert man zu erst die bis jetzt erstellten Bibliotheken in den Ordner &amp;quot;/lib&amp;quot; des Minis und tippt in der Konsole des Minis folgendes ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /lib&lt;br /&gt;
ln -s libts-0.0.so.0.1.1 libts-0.0.so.0&lt;br /&gt;
ln -s libSDL-1.2.so.0.11.3 libSDL-1.2.so.0&lt;br /&gt;
ln -s libSDL_image-1.2.so.0.8.2 libSDL_image-1.2.so.0&lt;br /&gt;
ln -s libSDL_gfx.so.13.5.2 libSDL_gfx.so.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bevor die Programme auf dem Mini ausgeführt werden können, müssen diese ebenso übertragen werden.&lt;br /&gt;
&lt;br /&gt;
=== SDL-1.2.14 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL-1.2.14&amp;quot; ist der Ordner &amp;quot;test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL-1.2.14/test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDL_gfx-2.0.21 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL_gfx-2.0.21&amp;quot; ist der Ordner &amp;quot;Test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL_gfx-2.0.21/Test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&amp;lt;/span&amp;gt; Ich weiß nicht warum, aber das SDL-Skript includiert den Ordner &amp;quot;/usr/local/arm/4.3.2/include/SDL&amp;quot; und nicht &amp;quot;/usr/local/arm/4.3.2/include&amp;quot;. Bei den Demoprogrammen bei der normalen SDL-Bibliothek war dies anscheinend OK. Bei diesem hier steht aber in jeder c-Datei &amp;quot;SDL/xxx.h&amp;quot; und deshalb findet er die Dateien nicht und bricht das Programmerstellen ab. Es gibt nun 2 Möglichkeiten dies zu umgehen. &lt;br /&gt;
* /usr/local/arm/4.3.2/bin/sdl-config Zeile 45 editieren und das /SDL löschen oder&lt;br /&gt;
* in jeder c-Datei das &amp;quot;SDL/&amp;quot; löschen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;2. Hinweis:&#039;&#039;&#039;&amp;lt;/span&amp;gt; In den c-Dateien sind defines/konstanten für die Auflösung definiert. Diese sollte man vor dem Kompilieren an sein eigenes Display anpassen.&lt;br /&gt;
&lt;br /&gt;
=== Programm ausführen ===&lt;br /&gt;
Am besten den ganzen Ordner in das Dateisystem des Minis kopieren.&amp;lt;br&amp;gt;&lt;br /&gt;
Ausgeführt werden können die Programme auf dem Mini mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./Programmname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57099</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57099"/>
		<updated>2011-05-08T14:20:28Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen, wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== Vorarbeit ==&lt;br /&gt;
Damit es funktioniert muss die [http://www.mikrocontroller.net/articles/Mini2440#FriendlyARM friendlyARM Toolchain] installiert sein und folgendes in der Konsole erledigt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/arm/4.3.2/lib/libts.la&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/arm/4.3.2/lib/libts.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Datei &amp;quot;/usr/local/arm/4.3.2/lib/libts.la&amp;quot; die Zeile 35 als Adminstrator editieren (z.B. in der Konsole mit &amp;quot;sudo gedit /usr/local/arm/4.3.2/lib/libts.la&amp;quot;).&lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/lib&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
ändern zu &lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/arm/4.3.2/lib&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
Die Bibliothek libSDL wird folgendermaßen kompiliert:&amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen, SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testprogramme ==&lt;br /&gt;
Die kompilierten Programme können nur auf dem Mini ausgeführt werden, wenn auch die vorher erstellten Bibliotheken dem Kernel bekannt sind. Die Bibliotheken aus diesem Artikel wären dann folgende:&lt;br /&gt;
* libts-0.0.so.0.1.1&lt;br /&gt;
* libSDL-1.2.so.0.11.3&lt;br /&gt;
* libSDL_image-1.2.so.0.8.2&lt;br /&gt;
* libSDL_gfx.so.13.5.2&lt;br /&gt;
&lt;br /&gt;
Weil dies aber nicht der Standardname ist unter dem die Bibliothek angesprochen ist, muss noch ein Link auf diese Datei mit dem richtigen Dateinamen erstellt werden. Dazu kopiert man zu erst die bis jetzt erstellten Bibliotheken in den Ordner &amp;quot;/lib&amp;quot; des Minis und tippt in der Konsole des Minis folgendes ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /lib&lt;br /&gt;
ln -s libts-0.0.so.0.1.1 libts-0.0.so.0&lt;br /&gt;
ln -s libSDL-1.2.so.0.11.3 libSDL-1.2.so.0&lt;br /&gt;
ln -s libSDL_image-1.2.so.0.8.2 libSDL_image-1.2.so.0&lt;br /&gt;
ln -s libSDL_gfx.so.13.5.2 libSDL_gfx.so.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bevor die Programme auf dem Mini ausgeführt werden können, müssen diese ebenso übertragen werden.&lt;br /&gt;
&lt;br /&gt;
=== SDL-1.2.14 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL-1.2.14&amp;quot; ist der Ordner &amp;quot;test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL-1.2.14/test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDL_gfx-2.0.21 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL_gfx-2.0.21&amp;quot; ist der Ordner &amp;quot;Test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL_gfx-2.0.21/Test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&amp;lt;/span&amp;gt; Ich weiß nicht warum, aber das SDL-Skript includiert den Ordner &amp;quot;/usr/local/arm/4.3.2/include/SDL&amp;quot; und nicht &amp;quot;/usr/local/arm/4.3.2/include&amp;quot;. Bei den Demoprogrammen bei der normalen SDL-Bibliothek war dies anscheinend OK. Bei diesem hier steht aber in jeder c-Datei &amp;quot;SDL/xxx.h&amp;quot; und deshalb findet er die Dateien nicht und bricht das Programmerstellen ab. Es gibt nun 2 Möglichkeiten dies zu umgehen. &lt;br /&gt;
* /usr/local/arm/4.3.2/bin/sdl-config Zeile 45 editieren und das /SDL löschen oder&lt;br /&gt;
* in jeder c-Datei das &amp;quot;SDL/&amp;quot; löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programm ausführen ===&lt;br /&gt;
Am besten den ganzen Ordner in das Dateisystem des Minis kopieren.&amp;lt;br&amp;gt;&lt;br /&gt;
Ausgeführt werden können die Programme auf dem Mini mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./Programmname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57098</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57098"/>
		<updated>2011-05-08T14:20:00Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Einrichten der Cross-Toolchain */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen, wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== Vorarbeit ==&lt;br /&gt;
Damit es funktioniert muss die [http://www.mikrocontroller.net/articles/Mini2440#FriendlyARM friendlyARM Toolchain] installiert sein und folgendes in der Konsole erledigt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/arm/4.3.2/lib/libts.la&lt;br /&gt;
sudo cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/arm/4.3.2/lib/libts.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Datei &amp;quot;/usr/local/arm/4.3.2/lib/libts.la&amp;quot; die Zeile 35 als Adminstrator editieren (z.B. in der Konsole mit &amp;quot;sudo gedit /usr/local/arm/4.3.2/lib/libts.la&amp;quot;).&lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/lib&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
ändern zu &lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/arm/4.3.2/lib&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
=== Bibliothek kompilieren ===&lt;br /&gt;
Die Bibliothek libSDL wird folgendermaßen kompiliert:&amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen, SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen. &amp;lt;br&amp;gt;&lt;br /&gt;
(Beim kopieren die &amp;quot;\&amp;quot; entfernen und alles in eine Zeile.) &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testprogramme ==&lt;br /&gt;
Die kompilierten Programme können nur auf dem Mini ausgeführt werden, wenn auch die vorher erstellten Bibliotheken dem Kernel bekannt sind. Die Bibliotheken aus diesem Artikel wären dann folgende:&lt;br /&gt;
* libts-0.0.so.0.1.1&lt;br /&gt;
* libSDL-1.2.so.0.11.3&lt;br /&gt;
* libSDL_image-1.2.so.0.8.2&lt;br /&gt;
* libSDL_gfx.so.13.5.2&lt;br /&gt;
&lt;br /&gt;
Weil dies aber nicht der Standardname ist unter dem die Bibliothek angesprochen ist, muss noch ein Link auf diese Datei mit dem richtigen Dateinamen erstellt werden. Dazu kopiert man zu erst die bis jetzt erstellten Bibliotheken in den Ordner &amp;quot;/lib&amp;quot; des Minis und tippt in der Konsole des Minis folgendes ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /lib&lt;br /&gt;
ln -s libts-0.0.so.0.1.1 libts-0.0.so.0&lt;br /&gt;
ln -s libSDL-1.2.so.0.11.3 libSDL-1.2.so.0&lt;br /&gt;
ln -s libSDL_image-1.2.so.0.8.2 libSDL_image-1.2.so.0&lt;br /&gt;
ln -s libSDL_gfx.so.13.5.2 libSDL_gfx.so.13&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bevor die Programme auf dem Mini ausgeführt werden können, müssen diese ebenso übertragen werden.&lt;br /&gt;
&lt;br /&gt;
=== SDL-1.2.14 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL-1.2.14&amp;quot; ist der Ordner &amp;quot;test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL-1.2.14/test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDL_gfx-2.0.21 Demoprogramme ===&lt;br /&gt;
Im vorhandenen Ordner &amp;quot;SDL_gfx-2.0.21&amp;quot; ist der Ordner &amp;quot;Test&amp;quot; zu finden. In diesem sind ein paar Demoprogramme welche folgendermaßen kompiliert werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd &amp;quot;Pfad zu dem Ordner&amp;quot;/SDL_gfx-2.0.21/Test/&lt;br /&gt;
CROSS_COMPILE=arm-linux- ./configure --host=arm-linux&lt;br /&gt;
make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Hinweis:&#039;&#039;&#039;&amp;lt;/span&amp;gt; Ich weiß nicht warum, aber das SDL-Skript includiert den Ordner &amp;quot;/usr/local/arm/4.3.2/include/SDL&amp;quot; und nicht &amp;quot;/usr/local/arm/4.3.2/include&amp;quot;. Bei den Demoprogrammen bei der normalen SDL-Bibliothek war dies anscheinend OK. Bei diesem hier steht aber in jeder c-Datei &amp;quot;SDL/xxx.h&amp;quot; und deshalb findet er die Dateien nicht und bricht das Programmerstellen ab. Es gibt nun 2 Möglichkeiten dies zu umgehen. &lt;br /&gt;
* /usr/local/arm/4.3.2/bin/sdl-config Zeile 45 editieren und das /SDL löschen oder&lt;br /&gt;
* in jeder c-Datei das &amp;quot;SDL/&amp;quot; löschen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Programm ausführen ===&lt;br /&gt;
Am besten den ganzen Ordner in das Dateisystem des Minis kopieren.&amp;lt;br&amp;gt;&lt;br /&gt;
Ausgeführt werden können die Programme auf dem Mini mit:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./Programmname&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57095</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57095"/>
		<updated>2011-05-08T10:56:39Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== Vorarbeit ==&lt;br /&gt;
Damit es funktioniert muss die [http://www.mikrocontroller.net/articles/Mini2440#FriendlyARM friendlyARM Toolchain] installiert sein und folgendes in der Konsole erledigt werden.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/arm/4.3.2/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/arm/4.3.2/lib/libts.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In der Datei &amp;quot;/usr/local/arm/4.3.2/lib/libts.la&amp;quot; die Zeile 35 als Adminstrator editieren (z.B. in der Konsole mit &amp;quot;sudo gedit /usr/local/arm/4.3.2/lib/libts.la&amp;quot;).&lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/lib&#039;&amp;lt;/pre&amp;gt; &lt;br /&gt;
ändern zu &lt;br /&gt;
&amp;lt;pre&amp;gt;libdir=&#039;/usr/local/arm/4.3.2/lib&#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57069</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57069"/>
		<updated>2011-05-06T22:47:21Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl_image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57068</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57068"/>
		<updated>2011-05-06T22:46:09Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl_image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
MockUP: Bei mir reicht für den Fehler:&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/arm/4.3.2/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/arm/4.3.2/lib/libts.so&lt;br /&gt;
Ich denke er nutzt die standard Umgebungsvariablen und gibt diese aus.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57067</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57067"/>
		<updated>2011-05-06T22:33:37Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl_gfx */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Mini2440_SDL_GUI_Programmierung&amp;diff=57066</id>
		<title>Diskussion:Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Mini2440_SDL_GUI_Programmierung&amp;diff=57066"/>
		<updated>2011-05-06T22:33:09Z</updated>

		<summary type="html">&lt;p&gt;Mockup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MockUp: Bei mir hat er zwar die libSDL erstellt und in den Ordner gepackt, allerdings gab es bei den nachfolgenden Bibliotheken das Problem, das er alles zu SDL nicht finden konnte. Nach anpassen des --prefix-Pfades geht das nun.&lt;br /&gt;
Problem der libts habe ich auch.&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Diskussion:Mini2440_SDL_GUI_Programmierung&amp;diff=57065</id>
		<title>Diskussion:Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Diskussion:Mini2440_SDL_GUI_Programmierung&amp;diff=57065"/>
		<updated>2011-05-06T22:32:28Z</updated>

		<summary type="html">&lt;p&gt;Mockup: Die Seite wurde neu angelegt: „MockUp: Bei mir hat er zwar die libSDL erstellt und in den Ordner gepackt, allerdings gab es bei den nachfolgenden Bibliotheken das Problem, das er alles zu SDL n…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MockUp: Bei mir hat er zwar die libSDL erstellt und in den Ordner gepackt, allerdings gab es bei den nachfolgenden Bibliotheken das Problem, das er alles zu SDL nicht finden konnte. Nach anpassen des --prefix-Pfades geht das nun.&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57064</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57064"/>
		<updated>2011-05-06T22:31:01Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl_image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57063</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57063"/>
		<updated>2011-05-06T22:30:43Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57062</id>
		<title>Mini2440 SDL GUI Programmierung</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440_SDL_GUI_Programmierung&amp;diff=57062"/>
		<updated>2011-05-06T21:27:37Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* libsdl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wer ein kleines Linuxboard mit Display hat, möchte sicher nicht nur die Kernelausgaben auf der Framebuffer-Konsole ansehen oder sich für die &amp;lt;br&amp;gt;popligsten Anwendungen einen X-Server+Window Manager installieren, sich eine Anwendung schreiben und dann erst loslegen können.&lt;br /&gt;
&lt;br /&gt;
Viel einfacher geht es in einigen Fällen mit [http://www.libsdl.org SDL]. Dieser Artikel beschreibt die Einrichtung einer Cross-Toolchain mit SDL-Support für &amp;lt;br&amp;gt;das [[Mini2440]]. &lt;br /&gt;
Die unterschiede von Board zu Board sind meist sehr gering, was die Display-Ausgabe angeht. Daher lässt sich dieser Artikel&amp;lt;br&amp;gt; auch für einige andere Boards verwenden.&lt;br /&gt;
&lt;br /&gt;
Hier ein Screenshot von einem meiner SDL-Programme:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:mini2440_sdl_menu_screenshot.png|100px]]&lt;br /&gt;
&lt;br /&gt;
Die Vorraussetzungen hierfür sind:&lt;br /&gt;
* Die [http://www.mikrocontroller.net/articles/Mini2440#Toolchain FriendlyARM Toolchain]&lt;br /&gt;
* Funktionierender Framebuffer mit Framebuffer Konsole&lt;br /&gt;
* Ein wenig Zeit&lt;br /&gt;
&lt;br /&gt;
= Einrichten der Cross-Toolchain =&lt;br /&gt;
Ich gehe davon aus, dass man alle kommenden Schritte als &amp;quot;normaler&amp;quot; User erledigt. Sämtliche Schritte, die als &amp;quot;root&amp;quot; erledigt werden müssen,&amp;lt;br&amp;gt; wird ein &amp;quot;sudo&amp;quot; vorangestellt. Wenn das bei dir anders gehen sollte (z.B. su -c &#039;...&#039;), dann ändere es für dich!&lt;br /&gt;
&lt;br /&gt;
== libsdl ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/release/SDL-1.2.14.tar.gz&lt;br /&gt;
tar xvfz SDL-1.2.14.tar.gz&lt;br /&gt;
cd SDL-1.2.14&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \ &lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \ &lt;br /&gt;
--enable-input-tslib --enable-video-fbcon --disable-audio --disable-video-x11 --disable-video-directfb&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Diese Schritte dauerten bei mir ca 5 Minuten.&lt;br /&gt;
&lt;br /&gt;
Nun lassen sich schon die ersten Programme mittels SDL compilieren. Allerdings fehlen noch zusätzliche libs, wie z.B. [http://www.ferzkopp.net/joomla/content/view/19/14/ sdl_gfx] und [http://www.libsdl.org/projects/SDL_image/ sdl_image] &amp;lt;br&amp;gt;um Grafiken, Texte und Bilder anzeigen zu können. SDL alleine steht da ein wenig auf dem Schlauch.&lt;br /&gt;
&lt;br /&gt;
Einen Haken hat die Sache noch. Dadurch, dass SDL in seinem Audio-Code auch Assembler verwendet habe ich es noch nicht hinbekommen,&amp;lt;br&amp;gt; SDL mit ALSA oder OSS Support zu compilieren.&lt;br /&gt;
Wer dazu einen Tip hat, immer her damit :)&lt;br /&gt;
&lt;br /&gt;
Wenn man bei den nachfolgenden Bibliotheken beim kompilieren folgenden Fehler bekommt: &amp;quot;configure: error: *** SDL version 1.2.10 not found!&amp;quot; dann im Home-Verzeichnis in die Datei .bashrc an das Ende folgendes schreiben: &amp;quot;export SDL_CONFIG=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/bin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== libsdl_image ==&lt;br /&gt;
Mit dieser lib lassen sich recht einfach Bilder laden und anzeigen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz&lt;br /&gt;
tar xvfz SDL_image-1.2.10.tar.gz&lt;br /&gt;
cd SDL_image-1.2.10&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ \ &lt;br /&gt;
--enable-gif --enable-jpg --enable-bmp&lt;br /&gt;
***HACK*** (siehe Text unter diesem Kasten)&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.la /usr/local/lib/libts.la&lt;br /&gt;
sudo ln -s /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts.so /usr/local/lib/libts.so&lt;br /&gt;
***/HACK***&lt;br /&gt;
time make&lt;br /&gt;
sudo time make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Anmerkungen zum &amp;quot;Hack&amp;quot;. Beim compilieren spuckt mir SDL_image einen Fehler aus. Es sagt mir, dass er in /usr/local/lib/ die tslib nicht finden kann. Dort hat er aber nichts zu suchen, da dies kein Pfad zum Cross-Compiling ist. Wie ich das abstelle, habe ich noch nicht herausgefunden, also habe ich einfach einen symbolischen Link angelegt.&lt;br /&gt;
&lt;br /&gt;
== libsdl_gfx ==&lt;br /&gt;
Diese lib stellt einen Haufen Grafikfuntkionen bereit, wie Polygone, Rechtecke, Kreise, Linien, ...&lt;br /&gt;
Ausserdem beinhaltet sie eine Textausgabe und Funktionen um Surfaces zu rotieren und zu zoomen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
wget http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
tar xvfz SDL_gfx-2.0.21.tar.gz&lt;br /&gt;
cd SDL_gfx-2.0.21&lt;br /&gt;
RANLIB=/usr/local/arm/4.3.2/bin/arm-linux-ranlib CROSS_COMPILE=arm-linux- ./configure --host=arm-linux \&lt;br /&gt;
--prefix=/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/ --disable-mmx&lt;br /&gt;
time make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57035</id>
		<title>Mini2440</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=57035"/>
		<updated>2011-05-05T20:12:48Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Wo kaufen? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.friendlyarm.net/products/mini2440 Mini2440 von friendlyarm ]&lt;br /&gt;
&lt;br /&gt;
Das [[Mini2440]] ist ein [[ARM]]-Board mit [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2440&amp;amp;ppmi=PartnoSearch s3c2440] &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;o&#039;&#039;&#039;n &#039;&#039;&#039;C&#039;&#039;&#039;hip von Samsung.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Board&#039;&#039;&#039; bietet:&lt;br /&gt;
* 3,5&amp;quot;, 7&amp;quot; Touchscreen-[[TFT]] oder [[VGA]] &amp;quot;Karte&amp;quot;&lt;br /&gt;
* ARM920T, 400Mhz standard Taktfrequenz, bis zu 533Mhz&lt;br /&gt;
* 64MB-1GB NAND Flash (User App/OS), 2MB NOR Flash (BIOS)&lt;br /&gt;
* 64MB RAM&lt;br /&gt;
* Audio (Stereo Out, 2xMono In)&lt;br /&gt;
* SD-Slot&lt;br /&gt;
* [[USB]] Host, USB Device&lt;br /&gt;
* 10/100MBit LAN (DM9000)&lt;br /&gt;
* 3 Serial Ports&lt;br /&gt;
* [[SPI]], [[PWM]], [[I2C]], ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440.jpg|300px]][[Bild:mini2440_35.jpg|300px]][[Bild:mini2440_7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Als das passende Entwicklungswerkzeug ist ein Linux-Rechner mit passendem Cross-Compiler sowie ein paar Tools vorgesehen.&lt;br /&gt;
Was wirklich benötigt wird:&lt;br /&gt;
* Serial Terminal (picocom, minicom, cutecom, gtkterm, komport, ...)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Mini2440#Toolchain Toolchain]&lt;br /&gt;
* s3c_boot_usb oder [http://programmers-projects.de/node/11 mini2440_usb_upload] (aktueller) zum Hochladen von Bootloader, Kernel etc. über USB&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ausserdem noch:&lt;br /&gt;
* ncurses-dev-Dateien und dialog (Für Kernel-menuconfig)&lt;br /&gt;
* screen, midnight commander&lt;br /&gt;
* Editor mit root-Rechten (z.B. [http://home.in.tum.de/~lazarov/files/research/papers/vi_ausarbeitung.pdf vim])&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen am/mit dem Board ===&lt;br /&gt;
&lt;br /&gt;
Ganz wichtig ist es, eine gute Spannungsversorgung zu verwenden. Es kam anscheinend schon öfter vor, dass kleine Spannungseinbrüche das Board aus dem Gleichgewicht bringen.&lt;br /&gt;
Ich verwende normalerweise das mitgelieferte Netzteil oder ein &#039;&#039;&#039;5V&#039;&#039;&#039;/&#039;&#039;&#039;2A&#039;&#039;&#039; Schaltnetzteil, funktionieren beide einwandfrei.&lt;br /&gt;
Gerade das grosse, 7&amp;quot;, Display braucht ein starkes Netzteil.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ungefährer Stromverbrauch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Board konfig. || Stromverbrauch&lt;br /&gt;
|-&lt;br /&gt;
| mini2440  || 140mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 3,5&amp;quot; TFT || 410mA (T35 Display)&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 7&amp;quot; TFT || 1000mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + VGA Board || mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verbindung zum PC ====&lt;br /&gt;
&lt;br /&gt;
Um vernünftig arbeiten zu können, braucht es auf jeden Fall ein USB A&amp;lt;-&amp;gt;USB B-Kabel, sowie ein 1:1 verbundes 9 poliges SUB-D Kabel mit zwei Buchsen.&lt;br /&gt;
Jenachdem, auf welchem Gerät (PC, Laptop, andere Embedded-Plattform, ...) entwickelt wird, braucht man noch einen USB-RS232 Adapter.&lt;br /&gt;
Einen Zugriff auf die Konsole hat man - nach Anpassung der IP - über Telnet sowie über die serielle Konsole.&lt;br /&gt;
Die serielle Konsole ist in der Standardkonfiguration aktiviert und sollte auch während des Entwickelns immer aktiv sein - so verhindert man ein ungewolltes Ausperren.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk ====&lt;br /&gt;
Entweder klickt man sich quer durch die chinesische/japanische Software und stellt diese auf Englisch um, oder aber man klickt sich blind zu der Stelle, an der man IP Adresse, Gateway und Netzmaske angeben kann.&lt;br /&gt;
&lt;br /&gt;
Etwa genauso einfach sieht es über die Konsole aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Die folgenden drei Zeilen, dürften das soweit bewekstelligen, dass das Netzwerk-Device die IP-Adresse &#039;&#039;&#039;192.168.0.55&#039;&#039;&#039;, die Netzmaske &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039; zugeteilt bekommt. Die beiden anderen Anweisungen sagen dem System, welches Netzwerkgerät der Router ist. In diesem Fall &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, was bisher vielleicht schon in der &#039;&#039;/etc/resolv.conf&#039;&#039; steht. Das lässt sich einfach mit &#039;&#039;cat /etc/resolv.conf&#039;&#039; ansehen. Wenn diese bereits den richtigen Inhalt hat, kann man die &#039;&#039;echo &amp;quot;nam...&#039;&#039;-Anweisung weglassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die resolv.conf nicht existiert oder einen falschen Wert enthält, &#039;&#039;&#039;überschreibt&#039;&#039;&#039; man diese, in dem man nur &#039;&#039;&#039;ein&#039;&#039;&#039; &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; nach das echo setzt. Stehen dort zwei &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; wird die nameserver-Info nur an die Datei angehängt und es kann zu Problemen kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ifconfig eth0 192.168.0.55 netmask 255.255.255.0&lt;br /&gt;
 $ route add default gw 192.168.0.1&lt;br /&gt;
 $ echo &amp;quot;nameserver 192.168.0.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Benutzeraccounts ====&lt;br /&gt;
&lt;br /&gt;
Linux legt wie alle Unix-artigen Betriebssysteme sehr grossen Wert auf eine ordentliche Benutzer- und Rechteverwaltung.&amp;lt;br&amp;gt;&lt;br /&gt;
Daher sollte man sich überlegen, ob es nicht vielleicht besser wäre, wenn man einen extra Benutzer zum Arbeiten/Basteln/Produktiv-Sein/Bier-Trinken/... anlegt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn nicht unbedingt nötig, sollte man auf das Arbeiten als &#039;&#039;&#039;root&#039;&#039;&#039; (oder auch Superuser, Admin, ...) verzichten. Dadurch dass man uneingeschränkt &#039;&#039;&#039;alle&#039;&#039;&#039; Rechte auf dem System besitzt kann es durch Programmierfehler oder auch Schadsoftware zu ernsthaften Schäden kommen (Datenverlust, eventuell Hardwareschäden).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Entscheidung ob man wirklich root sein muss, ist eigentlich relativ einfach. Sie wird normalerweise &#039;&#039;&#039;immer&#039;&#039;&#039; erstmal mit &#039;&#039;&#039;nein&#039;&#039;&#039; beantwortet.&amp;lt;br&amp;gt;Sollte sich im Lauf der Zeit doch herausstellen, dass man root sein muss, kann man diesen Weg immer noch einschlagen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Für einige Aufgaben sind jedoch auch root-Rechte erforderlich.&lt;br /&gt;
Zum Beispiel, wenn man direkt mit outporb()/inportb()/outb()/inb()/... arbeiten will.&amp;lt;br&amp;gt;&lt;br /&gt;
Für diese Fälle gibt es ein gutes Tool, es nennt sich [http://de.wikipedia.org/wiki/Sudo sudo].&lt;br /&gt;
Man kann sudo z.&amp;amp;nbsp;B. sagen, dass Benutzer &#039;&#039;xy&#039;&#039; das Programm /usr/bin/blubb mit root-Rechten immer ausführen darf. Benutzer &#039;&#039;ab&#039;&#039; darf das aber nur, wenn er &#039;&#039;&#039;sein&#039;&#039;&#039; Passwort eingibt. Dann gibt es vielleicht noch Benutzer &#039;&#039;zz&#039;&#039;, der alles ohne Passwort als root ausführen darf.&lt;br /&gt;
&lt;br /&gt;
===== Anlegen eines neuen Benutzeraccounts =====&lt;br /&gt;
Ich gehe davon aus, dass ein Image mit busybox auf dem Board installiert ist. Wenn das Image von FriendlyARM installiert ist, ist das der Fall.&lt;br /&gt;
&lt;br /&gt;
Ein Auszug aus der [http://linux.die.net/man/1/busybox Manpage] von busybox:&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
    adduser [ OPTIONS ] user_name&lt;br /&gt;
&lt;br /&gt;
    Adds a user to the system&lt;br /&gt;
&lt;br /&gt;
    Options:&lt;br /&gt;
&lt;br /&gt;
    -h DIR          Assign home directory DIR&lt;br /&gt;
    -g GECOS        Assign gecos field GECOS&lt;br /&gt;
    -s SHELL        Assign login shell SHELL&lt;br /&gt;
    -G              Add the user to existing group GROUP&lt;br /&gt;
    -S              create a system user (ignored)&lt;br /&gt;
    -D              Do not assign a password (logins still possible via ssh)&lt;br /&gt;
    -H              Do not create the home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Heisst um einen Benutzer &#039;&#039;banana_joe&#039;&#039; mit dem Heimatverzeichnis &#039;&#039;/home/banana_joe&#039;&#039; anzulegen, muss man folgendes &#039;&#039;&#039;als root&#039;&#039;&#039; eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ adduser -h /home/banana_joe -s /bin/sh banana_joe&lt;br /&gt;
 $ passwd banana_joe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;adduser&#039;&#039; legt den Benutzer an, &#039;&#039;passwd&#039;&#039; vergibt ein Passwort.&lt;br /&gt;
&lt;br /&gt;
=== Übertragen von Daten/Programmen in den Flash-Speicher ===&lt;br /&gt;
&lt;br /&gt;
Das übertragen gestaltet sich auf ganz unterschiedliche Weise. Aus Gründen der Einfachheit werde ich hier nur die sinnvollsten/einfachsten/schnellsten Wege beschreiben. Andere Möglichkeiten wären noch &#039;&#039;lrzsz&#039;&#039;, USB und [[JTAG]].&lt;br /&gt;
Wer zuviel Zeit hat, kann sich ja auch ein eigenes Protokoll auf TCP/IP Ebene basteln oder den Kristallspeicher erfinden ;)&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datei übertragen hat, muss man sich vergewissern, dass diese auch Ausführrechte besitzt, wenn sie ein Programm oder ein Ordner ist. Die Lese- und Schreibrechte müssen ebenfalls richtig gesetzt sein.&lt;br /&gt;
Normalerweise stimmt dies alles so wie es ist, aber manchmal muss man ein wenig nachhelfen.&lt;br /&gt;
Wenn sich ein Programm nicht ausführen lässt, oder man nicht in einen Ordner wechseln kann, fehlen die Rechte zum Ausführen. Geändert wird das so:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;datei/ordner&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da hier aber nicht die Unix-Rechte erklärt werden sollen, verweise ich [http://linuxwiki.de/DateiRechte hierauf]&lt;br /&gt;
&lt;br /&gt;
==== http ====&lt;br /&gt;
Für diese Methode muss natürlich das [http://www.mikrocontroller.net/articles/Mini2440#Netzwerk Netzwerk] eingerichtet sein. Man braucht auf einem PC im Netz einen laufenden Werbserver, auf den man die zu übertragenden Dateien legt.&lt;br /&gt;
Nun kann man diese in ein Verzeichnis seiner Wahl &amp;quot;herunterladen&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ cd /tmp&lt;br /&gt;
 $ wget http://10.2.5.29/datei&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ftp ====&lt;br /&gt;
Sobald auf dem Board ein FTP-Server läuft, kann man sich &amp;quot;ganz normal&amp;quot; mit einem FTP-Client (zum Beispiel &#039;&#039;&#039;gftp&#039;&#039;&#039; oder &#039;&#039;&#039;ncftp&#039;&#039;&#039;) verbinden und die Dateien hochladen.&lt;br /&gt;
Ebenso kann man sich auch vom Board auf einen FTP-Server verbinden.&lt;br /&gt;
Nennenswerte Programme sind z.B. &#039;&#039;&#039;ftp&#039;&#039;&#039; für die Linux-Konsole, welches im FriendlyARM Image bereits enthalten ist oder der ncurses-basierende Client &#039;&#039;&#039;ncftp&#039;&#039;&#039;. Allerdings sollte man sich für ncurses-Programme per Telnet oder SSH einloggen, da die serielle Konsole nur rudimentäre Terminal-Emulation unterstützt und die Bildschirmausgabe nicht gerade schön wirkt.&lt;br /&gt;
&lt;br /&gt;
==== scp/ssh ====&lt;br /&gt;
Dazu muss zuerst einmal ein SSH Server auf dem Board laufen.&lt;br /&gt;
[http://www.openssh.com openSSH] ist dafür die erste Wahl. Mit [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] gibt es einige Probleme, da man für SCP auch noch die SCP Binary von openSSH braucht.&lt;br /&gt;
&lt;br /&gt;
Sobald der ssh server läuft, ist alles ganz einfach:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei user@ziel:/pfad&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei einem Board mit der IP 10.0.0.69 und dem User &#039;&#039;root&#039;&#039; wäre das die Befehlszeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei root@10.0.0.69:/root&amp;lt;/pre&amp;gt;&lt;br /&gt;
... und die Datei &#039;&#039;datei&#039;&#039; landet im Heimatverzeichnis von &#039;&#039;root&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um nicht jedes mal das Passwort eingeben zu müssen, lohnt es sich SSH so zu konfigurieren, dass es mit [http://wiki.unixboard.de/index.php/SSH_ohne_Passwort Key-Files] läuft.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
Toolchains gibt es im Netz und auf der CD/DVD zum Board mehrere fertig übersetzte - natürlich lässt sich die Toolchain auch selbst compilieren.&lt;br /&gt;
Das Risiko beim selbst compilieren einer Toolchain liegt darin, dass man eventuell einen fehlerhaften Compiler produziert.&lt;br /&gt;
Gründe hierfür sind z.B.:&lt;br /&gt;
* fehlende, wichtige Patches&lt;br /&gt;
* Verwenden von Entwicklerversionen mit eventuellen Bugs&lt;br /&gt;
* ein schon fehlerhafter Host-Compiler&lt;br /&gt;
* falsche Einstellungen (Prozessor-Architektur, Optimierung, ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das sogenannte Bootstrappen eines Compilers erkennt solche Probleme in den meisten Fällen. Bootstrappen heißt, dass zuerst mit dem Host-Compiler der Quellcode des neuen übersetzt wird und mit diesem zweiten Compiler wird ein dritter Compiler übersetzt. Wenn dies klappt, kann man im Normalfall davon ausgehen, dass der dritte Compiler in Ordnung ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Jedoch ist dies bei einem Crosscompiler so nicht möglich, da der zweite Compiler ja keinen Code für den Host-Computer, sondern nur für das Target produzieren kann. Somit würde man sich einen Compiler für das Board bauen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wer auf Nummer sicher gehen will, nimmt am besten eine der bekannten ARM-Toolchains oder natürlich die von FriendlyARM.&lt;br /&gt;
&lt;br /&gt;
==== old ABI / new EABI ? ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ABI&#039;&#039;&#039; steht für &#039;&#039;&#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;, also eine Art &amp;quot;Standard&amp;quot; wie das compilierte Programm, die Binärdatei, auszusehen hat.&lt;br /&gt;
&lt;br /&gt;
Die ABI ist schon etwas älter und wurde von der EABI (&#039;&#039;&#039;&#039;&#039;E&#039;&#039;&#039;mbedded &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Da nahezu jede verfügbare Toolchain auf der EABI aufbaut, würde ich diese auch nutzen. Alte, für die ABI, compilierte Programme, lassen sich mit der Kernel-Unterstützung zum Ausführen von ABI Programmen trotzdem noch verwenden.&lt;br /&gt;
&lt;br /&gt;
Durch das verwenden der EABI entstehen normalerweise keine unüberwindbaren Hürden, beim compilieren von älteren Quellcodes. Jedenfalls nicht durch den Unterschied ABI/EABI.&lt;br /&gt;
&lt;br /&gt;
==== Kernel FPE / softfloat ? ====&lt;br /&gt;
&lt;br /&gt;
Irgendwann stolpert jeder, der mit ARM-CPUs und Linux arbeitet über mehrere Fragen.&lt;br /&gt;
* Was ist softfloat/FPE?&lt;br /&gt;
* Was ist schneller?&lt;br /&gt;
* Kann man beides nutzen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist softfloat/FPE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch, dass eine ARM-CPU normalerweile keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit Gleitkommaeinheit/FPU] besitzt, müssen alle Berechnungen, welche Kommazahlen enthalten in Software gelöst werden. Bei einem PC-System übernimmt diese Aufgabe eben die FPU und ist somit um einiges schneller.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;softfloat&#039;&#039; ist die Umsetzung durch den Compiler.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;FPE&#039;&#039; bedeutet &#039;&#039;&#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;E&#039;&#039;&#039;mulation&#039;&#039; und wird durch den Kernel bereit gestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist schneller&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Beim FPE-Verfahren wird der Code, welcher die Gleitkomma-Anweisungen enthält auch so übersetzt. Da die CPU aber keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU] besitzt und somit auch keine Maschinensprachen-Befehle dafür, wird eine &#039;&#039;Exception&#039;&#039; ausgelöst (&amp;quot;Fehler&amp;quot;), welche vom Kernel abgefangen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Nun steht der Kernel vor der Aufgabe, die Gleitkomma-Operation zu lösen und dem Programm das Ergebnis mitzuteilen. Danach muss er den Code für die Exception noch zu Ende führen und zurückkehren.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles in allem eine sehr aufwendige Methode.&lt;br /&gt;
&lt;br /&gt;
Da bei &#039;&#039;softfloat&#039;&#039; die Gleitkomma-Operationen vom Compiler soweit zerstückelt und wieder zusammengesetzt werden, dass gar keine Kommas mehr nötig sind, ist das in dem meisten Fällen flotter.&lt;br /&gt;
&lt;br /&gt;
Das schnellste, ist natürlich eine Hardware-[http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU], die es aber auf dem [[mini2440]] nicht gibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man beides nutzen?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Jein, wenn man im Kernel eine der beiden FPE-Methoden aktiviert hat und man führt ein softfloat-Programm aus, dann wird natürlich softfloat verwendet.&lt;br /&gt;
Wenn man allerdings ein FPE-Programm ausführen will und hat die Unterstützung nicht im Kernel, sieht es schlecht aus.&lt;br /&gt;
&lt;br /&gt;
Also am besten eine FPE auswählen und mit einer softfloat-Toolchain compilieren. Das spart Zeit und Kopfzerbrechen über Invalid Opcode/Segfaults usw. ;)&lt;br /&gt;
&lt;br /&gt;
==== Toolchain aufsetzen ====&lt;br /&gt;
Jenachdem, welche Toolchain man einsetzt, kann es sein, dass man den Compileraufruf anpassen muss.&lt;br /&gt;
Wenn man eine Cross Toolchain installiert hat und nur &#039;&#039;gcc&#039;&#039; auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim &#039;&#039;lokalen&#039;&#039; gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit&lt;br /&gt;
&amp;lt;pre&amp;gt; $ which gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc&lt;br /&gt;
oder&lt;br /&gt;
 $ arm-none-linux-gnueabi-gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über &#039;&#039;arm-linux-...&#039;&#039; zu erreichen ist. Entweder passt man die gcc-Aufrufe von hier an, oder man kann sich auch [http://wiki.unixboard.de/index.php/ManPage:ln symbolische Links] anlegen.&lt;br /&gt;
Zum Schluss sollte das dann ungefähr so aussehen, vom bin-Pfad der Toolchain aus!&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ls -al /usr/local/arm/4.3.2/bin/&lt;br /&gt;
 ...&lt;br /&gt;
 lrwxrwxrwx 1 root root      25 2010-02-25 07:15 arm-linux-ld -&amp;gt; arm-none-linux-gnueabi-ld&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich selbst arbeite mit der FriendlyARM-Toolchain, werde mich hier also meistens auf diese beziehen, ausser anders vermerkt.&lt;br /&gt;
===== FriendlyARM =====&lt;br /&gt;
[http://www.friendlyarm.net/downloads Hier] als &#039;&#039;ARM-Linux-GCC&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
Entpackt verbraucht diese Toolchain ca. 295MB. Mit ihr liessen sich bei mir bereits der Kernel, uboot, sowie zahlreiche Programme kompilieren.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird die Toolchain an die richtige Stelle entpackt, der Pfad mit angegeben und dann ist sie auch schon bereit.&lt;br /&gt;
Dieses Kommando sieht auf den ersten Blick etwas nach Dateisystem-Apokalypse aus, ist allerdings lage nicht so wild. Die Option &#039;&#039;-C /&#039;&#039; sagt, dass direkt ins Wurzelverzeichnis entpackt werden soll, daher benötigt man für diesen Schritt &#039;&#039;&#039;root-Rechte&#039;&#039;&#039;. Die FriendlyARM-Toolchain ist so aufgebaut, dass sie damit nach &#039;&#039;/usr/local/arm/4.3.2/&#039;&#039; entpackt wird, &#039;&#039;&#039;unser Ziel&#039;&#039;&#039; :)&lt;br /&gt;
&amp;lt;pre&amp;gt; $ tar xvfj arm-linux-gcc-4.3.2.tar.gz -C /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir das nun so haben, müssen wir natürlich auch noch sagen, wo er den Compiler findet.&lt;br /&gt;
Dazu öffnet man am besten seine &amp;quot;autorun-Datei&amp;quot; der Shell. In der Konsole ganz einfach mit vim/nano/etc zu erreichen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ vim /home/user/.bashrc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dort tragen wir dann &#039;&#039;&#039;ganz ans Ende&#039;&#039;&#039; dies ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=$PATH:/usr/local/arm/4.3.2/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kaum gespeichert, startet man eine neue shell (Konsole) und überprüft ob die Pfade stimmen.&lt;br /&gt;
Wenn &#039;&#039;/usr/local/arm/...&#039;&#039; im Pfad enthalten ist, müsste alles stimmen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ echo $PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tippt man nun &#039;&#039;&#039;nur&#039;&#039;&#039; &#039;&#039;arm-&#039;&#039; und drückt zweimal die Tabtaste, so müsste eine ellenlange Liste mit Programmen wie z.&amp;amp;nbsp;B. &#039;&#039;arm-linux-gcc&#039;&#039; oder &#039;&#039;arm-linux-ld&#039;&#039; erscheinen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== codesourcery =====&lt;br /&gt;
[http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 codesourcery arm-none-linux-gnueabi]&lt;br /&gt;
&lt;br /&gt;
===== buildroot =====&lt;br /&gt;
&lt;br /&gt;
Von http://www.buildroot.net das letzte stable Release holen, mini-2440 wird unterstützt. Der Build dauert zwar einige Zeit, aber nacher kann man sich an X11 erfreuen.&lt;br /&gt;
&lt;br /&gt;
=== Cross Compiling ===&lt;br /&gt;
Sobald die Toolchain richtig aufgesetzt ist kann man anfangen, seine Programme zu übersetzten.&lt;br /&gt;
&lt;br /&gt;
Hier folgt nur eine kurze Beschreibung, wer sowas genauer wissen will, sollte sich auf Seiten wie diesen umsehen:&lt;br /&gt;
* http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html&lt;br /&gt;
* http://linux.bytesex.org/cross-compiler.html&lt;br /&gt;
Ausserdem findet man zu vielen embedded-nutzbaren Programmen direkt ein Cross-Compiling Howto mit ein wenig google.&lt;br /&gt;
Ob diese nun für ARM, AVR32, PPC, MIPS, ... sind, ist im Grunde egal, da man ja meistens nur die Architektur anpassen muss.&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Möglichkeiten. Die erste ist der direkte Aufruf vom Compiler oder mittels eines &amp;quot;festen&amp;quot; Makefiles. Die zweite, wahrscheinlich Häufigste, ist das ausführen eines configure-Scriptes bevor der make-Vorgang gestartet wird.&lt;br /&gt;
&lt;br /&gt;
* Das einfache aufrufen des Compilers&lt;br /&gt;
Dazu ein einfaches Hello-World Programm:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
   printf(&amp;quot;hiho\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compiliert wird das Programm ganz einfach so:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ arm-linux-gcc &amp;lt;name.c&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach wird die Datei &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; an das Board [http://www.mikrocontroller.net/wikisoftware/index.php?title=Mini2440&amp;amp;action=submit#.C3.9Cbertragen_von_Daten.2FProgrammen_ins_Flash übertragen]. &lt;br /&gt;
Sobald &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; auf dem Board ist, kann es ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ./&amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Eventuell fehlen die Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ./configure-Scripte&lt;br /&gt;
Hier sieht es schon ein klein wenig schwieriger aus, ist es aber eigentlich nicht.&lt;br /&gt;
&#039;&#039;Normalerweise&#039;&#039;, aber &#039;&#039;&#039;nicht immer&#039;&#039;&#039;, sieht das compilieren eines Programms für das mini2440 so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ HOST=arm-linux ARCH=arm ./configure --build=arm-linux --your-options&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man muss dem configure-Script lediglich angeben, für welche Architektur das Makefile konfiguriert werden soll und welchen Compiler er dafür nehmen soll.&lt;br /&gt;
&lt;br /&gt;
=== Linux-Kernel ===&lt;br /&gt;
&lt;br /&gt;
Den Kernel-Quellcode besorgt man sich am besten den Kernel-Fork von buserror.&amp;lt;br&amp;gt; Wenn man nicht auf dem ARM selber kompilieren möchte, benutzt man wie hier im Beispiel einen Cross-Compiler (Siehe oben). Weiterhin wird noch git benötigt, um den Kernel-Quellcode zu laden.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6.32-rc8&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Kernel-Verzeichnis und den Kernel mit den Defaults konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd linux-2.6.32-rc8&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make mini2440_defconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Kernel anschließend kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Module bekommen wir wie folgt nach /mnt/mini2440/lib/modules installiert:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm INSTALL_MOD_PATH=/mnt/mini2440 make modules_install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir mit u-boot arbeiten, dann benötigen wir das zImage in /mnt/mini2440/kernel-2.6.32-rc8/arch/arm/boot, um daraus mittels mkimage (Siehe uboot) ein uImage zu erstellen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Kernel-Parameter&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
dem Kernel kann man zum Start noch Parameter für das Board mitgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;mini2440=[0..9][t][b]&amp;lt;/pre&amp;gt;&lt;br /&gt;
[0..9] bestimmen die Display-Timings&lt;br /&gt;
* 0 3,5&amp;quot; Display N35 + TS (alt);&lt;br /&gt;
* 1 7&amp;quot; Display + TS;&lt;br /&gt;
* 2 VGA-Board;&lt;br /&gt;
* 3 3,5&amp;quot; Display T35 + TS;&lt;br /&gt;
* 4 5,6&amp;quot; Display Innolux + TS;&lt;br /&gt;
[t] Touchscreen ist vorhanden;&amp;lt;br&amp;gt;&lt;br /&gt;
[b] Backlight ist vorhanden;&lt;br /&gt;
&lt;br /&gt;
=== root-fs ===&lt;br /&gt;
Um ein eigenes Root-Filesystem zu compilieren, gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Die einfachsten sind Cross-Umgebungen wie [http://buildroot.uclibc.org/ buildroot] und [http://wiki.openembedded.net/index.php/Main_Page openembedded].&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
Auch relativ einfach ist es, sich ein fertig compiliertes debian-arm zu installieren. Wenn man das Debian einmal auf seiner SD-Karte laufen hat, ist es kein Problem mehr, alles wie gewohnt mit apt zu installieren usw. usw.&amp;lt;br&amp;gt;&lt;br /&gt;
Allerdings sind gerade die Scripte bei Debian noch nie dafür bekannt gewesen sonderlich schnell zu laufen und es ist sehr sehr träge beim booten.&lt;br /&gt;
&lt;br /&gt;
Ich habe auf meinem mini2440 seit einiger Zeit Debian am Laufen, habe aber sämtliche Init-Scripte durch eigene ersetzt, welche um einiges flotter laufen. Ebenso verzichte ich auf sysvinit und damit aber auch auf sehr nützliche Tools/Funktionen, wie die runlevels und shutdown oder reboot.&lt;br /&gt;
Diese Funktionen müssen auch von meinen eigenen Scripten übernommen werden. Dafür läuft es um einiges schneller.&lt;br /&gt;
&lt;br /&gt;
[http://emqbit.com/deboostrap-debian Hier] eine Anleitung für ein AT91-Linux Board mit Debian. Diese kann fast 1:1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit X11, Lighttpd, PHP, Python, mc, vim, mpd, alsa, gcc, ... (und auch apache als leidige Abhängigkeit von PHP) braucht mein Debian etwa 550MB auf der SD-Karte.&lt;br /&gt;
Schon ein ordentlicher Brummer, aber egal, es bootet mit eigenen Scripten innerhalb von 15 Sekunden.&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
Ooooh wer daran denkt, hat einfach nur zuviel Zeit. Gentoo in allen Ehren, aber allein PHP zu compilieren dauert gut 4 Stunden... danach habe ich es aufgegeben.&lt;br /&gt;
&lt;br /&gt;
Wer Gentoo installieren kann, wird sich auf dem Mini2440 auch nicht schwerer tun, als auf einem PC. Der Unterschied besteht nur darin, dass man die Stage auf SD Karte packen muss, am normalen Rechner natürlich, und dort dann schon die wichtigsten Einstellungen vornehmen muss.&lt;br /&gt;
&lt;br /&gt;
Mit Portage und den ganzen Dev-Files ist Gentoo ein riesen Gebilde für so ein schwachbrüstiges Board. Eine 4GB SD-Karte ist das Minimum. Außer man bootet zuerst in den Flash und dann chrootet man auf ein Gentoo auf einer USB-Festplatte. uboot kann das, soweit ich weiß, nicht.&lt;br /&gt;
&lt;br /&gt;
=== sys-fs ===&lt;br /&gt;
Sysfs ist ein virtuelles Dateisystem, welches seit dem Linux Kernel 2.6. zur Verfügung gestellt wurde. Der Kernel stellt dabei Konfigurationen, Informationen über Vorrichtungen und Treiber im sogenannten userspace zur Verfügung. Dies Bedeutet einfach, dass Informationen/Geräte an einer festgelegten Stelle im Dateisystem stehen und ausgelesen oder beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
Über einige Dateien in diesem Dateisystem können GPIOs und z.B. auch LEDs angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer ===&lt;br /&gt;
Der Framebuffer ist von Haus aus im FriendlyARM Kernel aktiviert und ohne ihn lässt sich im Linux keine Ausgabe auf dem Display realisieren. Er ist unter &#039;&#039;/dev/fb0&#039;&#039; zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Kernelkonfiguration muss die Framebuffer-Konsole und der Framebuffer-Treiber für das jeweilige Display gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Eine Textausgabe geht ganz einfach über das Terminal, welche auf ihn gemappt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/tty1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann dem Framebuffer diverse Argumente mitgeben, die die Ausgabe auf dem Display beeinflussen. Diese werden über &#039;&#039;fbcon=...&#039;&#039; angeben. Man kann auch mehre Argumente angeben, das sähe zum Beispiel so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p1 console=ttySAC0 fbcon=rotate:1 fbcon=scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können mehrere fbcon-Parameter auch durch Komma getrennt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
... fbcon=rotate:1,scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Scrollback-Buffer ist auf diesem Display eigentlich nicht nötig, da man hier auf dem Mini2440 auf keiner Konsole mit Tastatur usw. arbeitet. Daher schaltet man ihn mit &#039;&#039;fbcon=scrollback:0&#039;&#039; ab, das spart gegenüber dem Standardwert 32kB RAM.&amp;lt;br&amp;gt;&lt;br /&gt;
Wer ihn doch benötigt, kann ihn natürlich trotzdem verwenden. Die Zahl nach dem Doppelpunkt steht für die Größe in Bytes. Ein &#039;&#039;k&#039;&#039; als Suffix steht für Kilobyte, &#039;&#039;fbcon=scrollback:1024k&#039;&#039; entspräche einem Scrollback-Buffer von 1MB.&lt;br /&gt;
&lt;br /&gt;
Für die FB-Konsole gibt es einige weitere Möglichkeiten und viele Optionen lassen sich zur Laufzeit ändern. Hier habe ich nur das Wichtigste beschrieben. Wer darüber mehr erfahren will, sollte sich im Kernel-Quellcode die Datei &#039;&#039;Documentation/fb/fbcon.txt&#039;&#039; ansehen.&lt;br /&gt;
&lt;br /&gt;
==== Font wählen ====&lt;br /&gt;
Die voreingestellte VGA8x16 Font ist etwas groß und es passt nicht allzuviel Text auf das Display. Die am besten lesbare, kleine Schrift ist die Mac6x11 Font.&lt;br /&gt;
In menuconfig folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Select compiled-in fonts&lt;br /&gt;
            &amp;lt;*&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*]   Map the console to the primary display device&lt;br /&gt;
            [*]   Framebuffer Console Rotation&lt;br /&gt;
            [*] Select compiled-in fonts&lt;br /&gt;
            [ ]   VGA 8x8 font&lt;br /&gt;
            [ ]   VGA 8x16 font&lt;br /&gt;
            [*]   Mac console 6x11 font (not supported by all drivers)&lt;br /&gt;
            [ ]   console 7x14 font (not supported by all drivers)&lt;br /&gt;
            [ ]   Pearl (old m68k) console 8x8 font&lt;br /&gt;
            [ ]   Acorn console 8x8 font&lt;br /&gt;
            [ ]   Mini 4x6 font&lt;br /&gt;
            [ ] Sparc console 8x16 font&lt;br /&gt;
            [ ] Sparc console 12x22 font (not supported by all drivers)&lt;br /&gt;
            [ ] console 10x18 font (not supported by all drivers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Werden mehrere Fonts eincompiliert, können sie so ausgewählt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Kernel-Commandline)&lt;br /&gt;
... fbcon=font:xxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mögliche Werte für &#039;&#039;xxxx&#039;&#039; sind:&lt;br /&gt;
* VGA8x8&lt;br /&gt;
* VGA8x16&lt;br /&gt;
* Mac6x11&lt;br /&gt;
* 7x14&lt;br /&gt;
* 10x18&lt;br /&gt;
* MINI4x6&lt;br /&gt;
* RomanLarge&lt;br /&gt;
* SUN8x16&lt;br /&gt;
* SUN12x22&lt;br /&gt;
* ProFont6x11&lt;br /&gt;
* Acorn8x8&lt;br /&gt;
* PEARL8x8&lt;br /&gt;
&lt;br /&gt;
Bei machen Fonts steht in der Kernel-Menuconfig &#039;&#039;not supported by all drivers&#039;&#039;. Dies erklärt sich so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Note, not all drivers can handle font with widths not divisible by 8,&lt;br /&gt;
such as vga16fb.&lt;br /&gt;
kernel-src/Documentation/fb/fbcon.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manche Treiber können nicht mit Fontbreiten/-höhen umgehen, welche nicht durch 8 teilbar sind. Da aber z.B. die MAC6x11 Font auch nicht durch 8 teilbar ist und das Mini2440 das anzeigen kann, gehe ich davon aus, dass alle funktionieren.&lt;br /&gt;
&lt;br /&gt;
==== Rotation ====&lt;br /&gt;
Um das Display zu &amp;quot;drehen&amp;quot; folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*] Framebuffer Console Rotation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also Kernel-Parameter im Bootloader dann einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fbcon=rotate:x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für &#039;&#039;x&#039;&#039; sind Werte von 0 bis 3 gültig. Jeweils wird um 90° im Uhrzeigersinn weitergedreht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Rotation bezieht sich &#039;&#039;&#039;nur&#039;&#039;&#039; auf den Framebuffer. Ein anschließend gestartetes Qtopia (z.B.) bleibt von der gewählten Einstellung unberührt.&lt;br /&gt;
In eigenen Anwendungen, welche eine grafische Oberfläche bereitstellen, lässt sich die Rotation allerdings verwenden, indem man einfach die Datei &#039;&#039;&#039;/proc/cmdline&#039;&#039;&#039; ausliest und den dort gegebenen Wert verwendet, um seine Bildschirmausrichtung anzupassen.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader ===&lt;br /&gt;
Die beiden verfügbaren Bootloader sind vivi (ein &amp;quot;standard-s3c24xx-Linux-Bootloader&amp;quot;) und u-boot, &#039;&#039;&#039;der&#039;&#039;&#039; Bootloader für embedded-Systeme schlechthin ;)&lt;br /&gt;
&lt;br /&gt;
Gemeinsam haben sie eigentlich nur, dass sie &#039;&#039;&#039;a)&#039;&#039;&#039; funktionieren und &#039;&#039;&#039;b)&#039;&#039;&#039; einen Linux-Kernel laden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Der große Nachteil von vivi ist, dass es nur mit [http://en.wikipedia.org/wiki/YAFFS YAFFS2]-Dateisystemen umgehen kann, die auf dem onboard-Flash liegen müssen.&lt;br /&gt;
Sobald der Kernel geladen ist, ist das kein Problem mehr, doch der Kernel muss eben im Flash liegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Um nun z.&amp;amp;nbsp;B. von USB-Festplatten/Sticks und SD-/MMC-Karten booten zu können, muss also u-boot installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNUNG: An einem Bootloader herumzuspielen, kann sehr böse ausgehen, etwa mit dem unbootbar-mach-Vorgang, der durch zu wenig Nachdenken ausgelöst wird.&lt;br /&gt;
Das mini2440 lässt sich zwar jederzeit per JTAG mit LPT-Adapter zurückholen, ist doch aber eigentlich unnötig ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== uboot ====&lt;br /&gt;
&lt;br /&gt;
Der Bootloader uboot wurde von &amp;quot;buserror&amp;quot; soweit an das mini2440 angepasst, dass er mehr oder weniger läuft.&lt;br /&gt;
Für die verschiedenen Boards gelten also auch leicht verschiedene Anweisungen um uboot ins Wasser zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das git und die Seite von &amp;quot;buserror&amp;quot; ist [http://code.google.com/p/mini2440/ hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Boards:&lt;br /&gt;
* 64MB &lt;br /&gt;
* 128MB&lt;br /&gt;
* 256MB&lt;br /&gt;
** [[Datei:mini2440.h]]&lt;br /&gt;
** [[Datei:uboot.bin]]&lt;br /&gt;
* 1GB&lt;br /&gt;
&lt;br /&gt;
Den u-boot-Fork von buserror laden wir am besten mit git. Weiterhin benötigen wir einen Cross-Compiler (Siehe oben). Die letzte mir bekannte Version des GCC mit dem sich das &amp;quot;U-Boot&amp;quot; kompilieren lässt ist 4.3.4.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git u-boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Source-Verzeichnis und mit den Defaults für das Mini2440 konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd u-boot&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make mini2440_config&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte, dann die Datei include/configs/mini2440.h bearbeiten, z.&amp;amp;nbsp;B. für das Mini2440-256MB:&lt;br /&gt;
&amp;lt;pre&amp;gt;  #define USE_920T_MMU		1&lt;br /&gt;
  //#define CONFIG_USE_IRQ		1	/* Needed for USB device! */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(CONFIG_USE_IRQ auskommentieren, damit das Mini2440 u-boot aus dem RAM ausgeführt werden kann. Leider kann man dann im &amp;quot;U-Boot&amp;quot; kein USB-Gerät mehr ansprechen, um ggfl. mal wieder aufzutauchen).&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich kann man noch defaults für das Environment (bootargs, ip, ...) festlegen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Anschließend das &amp;quot;U-Boot&amp;quot; kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Verzeichnis tools findet man mkimage. Damit kann man aus einem zImage (Linux-Kernel) ein uImage machen. Dieses uImage lässt sich von u-boot aus laden (Nand, NFS, TFtp, MMC) und ausführen. &lt;br /&gt;
&amp;lt;pre&amp;gt;  mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d path-to/zImage path-to/uImage&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt haben wir ein von u-boot ausführbaren Linux-Kernel.&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
=== Abspielen von Audio-Daten ===&lt;br /&gt;
Mit dem FriendlyARM-Image gibt es zwei Möglichkeiten Audio-Dateien abzuspielen.&amp;lt;br&amp;gt;Die Eine ist, Qtopia zu starten und dort einfach die Datei von SD-Karte, USB, ... auszuwählen und er spielt sie ab.&lt;br /&gt;
&lt;br /&gt;
Die andere ist, die Datei auf der Konsole mit &#039;&#039;madplay dateiname.mp3&#039;&#039; abzuspielen.&amp;lt;br&amp;gt;[http://www.digipedia.pl/man/doc/view/madplay.1/ Hier] die Manpage zu madplay.&lt;br /&gt;
&lt;br /&gt;
==== MPD - der Music Player Daemon ====&lt;br /&gt;
Mit einem eigenen Image oder wenn man sich alles von Hand compilieren will ist der [http://www.musicpd.org/ Music Player Daemon] ein genialer Musik-Player. Er lässt sich durch sehr sehr viele verschiedene Clients steuern und braucht dabei nahezu kaum Rechenleistung.&amp;lt;br&amp;gt;&lt;br /&gt;
Der eigentliche Player läuft vollkommen &amp;quot;versteckt&amp;quot; im Hintergrund. Um ihn zu steuern wird vom Client eine Verbindung aufgebaut und die entsprechenden Befehle gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Clients müssen noch nicht einmal auf dem Board laufen, können auch auf jedem anderen Rechner im Netzwerk oder Internet sein. Man muss einfach nur die IP und den Port angeben.&lt;br /&gt;
&lt;br /&gt;
Mit gerade mal etwa 100 Zeilen Code lässt sich eine einfach zu nutzende Client-Lib in C programmieren um dann seine eigenen Clients zu schreiben. Damit lässt sich der MPD durch so ziemlich jedes Ereignis an einem Rechner steuern.&lt;br /&gt;
[[MPD Client Programming|hier]] habe ich einen Artikel erstellt, der das wichtige dafür beschreibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufnehmen von Audio-Daten ===&lt;br /&gt;
=== Abspielen von Video-Daten ===&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe noch keinen Player, bis auf den vom originalen Image mit Qtopia gesehen/compiliert, welcher Filme einigermaßen flüssig abspielt.&lt;br /&gt;
&lt;br /&gt;
Mein Ansatz momentan ist, den MPlayer mit fbdev, directfb und sdl mit Framebuffer Ausgabe direkt auf den Framebuffer schreiben zu lassen.&lt;br /&gt;
Allerdings habe ich damit bisher nur sehr sehr magere Ergebnisse gehabt.&lt;br /&gt;
&lt;br /&gt;
=== Kamera-Interface ===&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Nahezu alles ist über die verschiedenen Header auf dem Board zu erreichen&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
[[Bild:mini2440_pinout.jpg|450px]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Audio / UART&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Audio IN || CON1, CON2, CON3 || CON8 || J1 (ext. NAND/NOR-sw)&lt;br /&gt;
|-&lt;br /&gt;
| 1   || IN       || TX               || VIN  || NORBOOT   &lt;br /&gt;
|-&lt;br /&gt;
| 2   || GND      || RX               || GND  || OM0      &lt;br /&gt;
|-&lt;br /&gt;
| 3   || IN       || 5V               || GND  || NANDBOOT &lt;br /&gt;
|-&lt;br /&gt;
| 4   ||          || GND              || VDD5V||          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;CON4 GPIO, CON5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || CON5 || CON4 GPIO || CAMERA || CON12 || JTAG&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 5V  || 5V || SDA || EINT8/GPG0  || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || 3.3V || SCL|| EINT11/GPG3 ||  3.3V&lt;br /&gt;
|-&lt;br /&gt;
| 3 || EINT17|| GND || EINT20|| EINT13/GPG5  || /TRST&lt;br /&gt;
|-&lt;br /&gt;
| 4 || EINT18|| /RESET || CAMRST|| EINT14/GPG6  || /RESET&lt;br /&gt;
|-&lt;br /&gt;
| 5 || EINT3|| AIN0 || CAM_CLOCK|| EINT15/GPG7  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || EINT9|| AIN1 || CAM_HREF|| EINT19/GPG11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 7 || /GCS1|| AIN2 || CAM_VSYNC|| 3.3V || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 8 || /GCS2 || AIN3 || CAM_PCLK|| GND || GND&lt;br /&gt;
|-&lt;br /&gt;
| 9  || /GCS3 || EINT0 || CAMDATA7|| ||TCK&lt;br /&gt;
|-&lt;br /&gt;
|  10 || /GCS5|| EINT1 || CAMDATA6|| ||GND&lt;br /&gt;
|-&lt;br /&gt;
| 11  || L/OE|| EINT2 || CAMDATA5  &lt;br /&gt;
|-&lt;br /&gt;
|  12 || L/WE|| EINT3 || CAMDATA4  &lt;br /&gt;
|-&lt;br /&gt;
|  13 || /WAIT|| EINT4 || CAMDATA3  &lt;br /&gt;
|-&lt;br /&gt;
|   14|| /RESET|| EINT5 || CAMDATA2  &lt;br /&gt;
|-&lt;br /&gt;
|  15 || /XDACK0|| EINT6 || CAMDATA1  &lt;br /&gt;
|-&lt;br /&gt;
|  16 || /XDREQ0|| EINT8 || CAMDATA0 &lt;br /&gt;
|-&lt;br /&gt;
|  17 || LADDR0|| EINT9 || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 18  ||LADDR1|| EINT11 || VDDCAM &lt;br /&gt;
|-&lt;br /&gt;
|  19 ||LADDR2|| EINT13 || 1.8V &lt;br /&gt;
|-&lt;br /&gt;
|  20 ||LADDR3|| EINT14 || GND &lt;br /&gt;
|-&lt;br /&gt;
|   21||LADDR4|| EINT15 ||  &lt;br /&gt;
|-&lt;br /&gt;
|   22||LADDR5|| EINT17 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|   23||LADDR6|| EINT18&lt;br /&gt;
|-&lt;br /&gt;
|   24||LADDR24|| EINT19&lt;br /&gt;
|-&lt;br /&gt;
|   25||LDATA0||MISO&lt;br /&gt;
|-&lt;br /&gt;
|   26||LDATA1||MOSI&lt;br /&gt;
|-&lt;br /&gt;
|   27||LDATA2||CLOCK&lt;br /&gt;
|-&lt;br /&gt;
|   28||LDATA3||SS&lt;br /&gt;
|-&lt;br /&gt;
|   29||LDATA4|| SCL&lt;br /&gt;
|-&lt;br /&gt;
|   30||LDATA5|| SDA&lt;br /&gt;
|-&lt;br /&gt;
|   31||LDATA6||GPB0&lt;br /&gt;
|-&lt;br /&gt;
|   32||LDATA7||GPB1&lt;br /&gt;
|-&lt;br /&gt;
|33   ||LDATA8||CLKOUT0&lt;br /&gt;
|-&lt;br /&gt;
|  34 ||LDATA9||CLKOUT1&lt;br /&gt;
|-&lt;br /&gt;
|   35||LDATA10&lt;br /&gt;
|-&lt;br /&gt;
|36   ||LDATA11&lt;br /&gt;
|-&lt;br /&gt;
|  37 ||LDATA12&lt;br /&gt;
|-&lt;br /&gt;
| 38  ||LDATA13&lt;br /&gt;
|-&lt;br /&gt;
|  39 ||LDATA14&lt;br /&gt;
|-&lt;br /&gt;
|  40 ||LDATA15&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Steckverbinder ===&lt;br /&gt;
Digi-Key:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Connector      || Hersteller || Artikelnummer || Teilenummer&lt;br /&gt;
|-&lt;br /&gt;
| CON1,2,3,8     || JST Sales America Inc || PHR-4               ||  [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1164-ND 	455-1164-ND]  &lt;br /&gt;
|-&lt;br /&gt;
| Audio IN, J1   || JST Sales America Inc || PHR-3               || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=455-1126-ND 455-1126-ND]      &lt;br /&gt;
|-&lt;br /&gt;
|                || JST Sales America Inc || SPH-002T-P0.5L      || [http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=455-2148-1-ND 455-2148-1-ND]&lt;br /&gt;
|-&lt;br /&gt;
| CON4           || Sullins Connector Solutions || SFH213-PPPN-D17-ID-BK-M181 || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9061-ND S9061-ND]&lt;br /&gt;
|-&lt;br /&gt;
|                || Sullins Connector Solutions || SBH21-NBPN-D17-ST-BK || [http://search.digikey.com/scripts/DkSearch/dksus.dll?keywords=S9023-ND	S9023-ND]&lt;br /&gt;
          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== onboard Hardware ====&lt;br /&gt;
Sobald man mal anfangen möchte, sich mit der Hardware auseinanderzusetzen, sollte man natürlich auch wissen wie, was und wo dran.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;... an welchem EINT war ...  Low oder High aktiv? ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440_eeprom.jpg||300px]][[Bild:mini2440_buttons.jpg||300px]][[Bild:mini2440_leds.jpg||300px]][[Bild:mini2440_poti.jpg||300px]]&lt;br /&gt;
[[Bild:mini2440_buzzer.jpg||300px]]&lt;br /&gt;
&lt;br /&gt;
=== [[UART]] ===&lt;br /&gt;
Die S3C2440 besitzt insgesamt drei unabhängige UARTs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Spannungspegel der Rx und Tx Pins sind etwas verwirrend. Auf dem Stecker liegen 5V an, doch das Datenblatt sagt nicht, ob die Rx und Tx Pins auch 5V-Tolerant sind. Daher sollte man das ausschliessen. Ein Spannungsteiler aus 3k3 und 2k2 an der Rx-Leitung vom Prozessor sollte das Problem beheben, solange der Empfänger an der Tx-Leitung 3.3V noch als H-Signal versteht.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;UARTs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! UART || 64 byte FIFO || IrDA 1.0 || RTS/CTS Leitungen|| Spannungspegel (L - H)&lt;br /&gt;
|-&lt;br /&gt;
| uart0 || * || * || * || 0V - 3,3V / RS232&lt;br /&gt;
|-&lt;br /&gt;
| uart1 || * || * || * || 0V - 3,3V&lt;br /&gt;
|-&lt;br /&gt;
| uart2 || * || * || x || 0V - 3,3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Über die Ansteuerung auf Hardwareebene braucht man sich, solange man ein Betriebssystem verwendet, &#039;&#039;&#039;keine&#039;&#039;&#039; Gedanken zu machen.&lt;br /&gt;
Unter Linux sind die drei UARTs über ttySAC0, ttySAC1 und ttySAC2 zu erreichen.&lt;br /&gt;
&lt;br /&gt;
=== [[LED|LEDs]] ===&lt;br /&gt;
Wenn der Kerneltreiber für die LEDs mit eincompiliert wurde, ist es ein leichtes, die LEDs mit einer kleinen Hand voll C-Zeilen anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Man öffnet die Gerätedatei und mittels &#039;&#039;ioctl()&#039;&#039; schreibt man die Werte in die Gerätedatei.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von ioctl sieht so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
ioctl(descriptor, AN/AUS, LED_NUMMER);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Also muss man um zum Beispiel LED0 anzuschalten für AN/AUS &#039;&#039;&#039;1&#039;&#039;&#039; angeben und für LED_NUMMER die &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
Dafür habe ich im Abschnitt C-Code zwei Beispiel-Funktionen geschrieben. Die erste erwartet AN/AUS und LED_NUMMER als Argument, die Zweite erwartet eine Bitmaske, was mir persönlich doch besser gefällt ;)&lt;br /&gt;
&lt;br /&gt;
==== C-Code ====&lt;br /&gt;
&amp;lt;c&amp;gt;int setleds(int on, int led_no) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	ioctl(led_fd, on, led_no);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int setledmask(int mask) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	if(mask &amp;amp; 0x01) ioctl(led_fd, 1, 0); else ioctl(led_fd, 0, 0);&lt;br /&gt;
	if(mask &amp;amp; 0x02) ioctl(led_fd, 1, 1); else ioctl(led_fd, 0, 1);&lt;br /&gt;
	if(mask &amp;amp; 0x04) ioctl(led_fd, 1, 2); else ioctl(led_fd, 0, 2);&lt;br /&gt;
	if(mask &amp;amp; 0x08) ioctl(led_fd, 1, 3); else ioctl(led_fd, 0, 3);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LED-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für LEDs, kann man diese im Verzeichnis &#039;/sys/class/leds/&#039; finden und ansteuern. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /sys/class/leds/           # wechselt in den Ordner&lt;br /&gt;
ls -lsa                       # listet alle Vorhandenen LEDs auf&lt;br /&gt;
echo 1 &amp;gt; led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; led4/brightness      # LED AUS&lt;br /&gt;
# oder&lt;br /&gt;
echo 1 &amp;gt; /sys/class/leds/led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; /sys/class/leds/led4/brightness      # LED AUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[I2C]] ===&lt;br /&gt;
==== i2ctools ====&lt;br /&gt;
Die [http://www.lm-sensors.org/wiki/I2CTools i2ctools] sind Linux-Userspace Programme, welche dafür gedacht sind, auf einfache Weise auf der Konsole mit I2C Geräten zu kommunizieren.&lt;br /&gt;
==== 24xx [[EEPROM]]s ====&lt;br /&gt;
==== [[Port-Expander]] ====&lt;br /&gt;
===== PCF8574 / PCF8574a =====&lt;br /&gt;
Einen [[PCF8574]] anzusteuern ist sehr einfach. Mit den i2ctools kann man damit erste Tests machen um zu sehen, ob er funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der Port-Expander wird mit den 3.3V versorgt, welche das Board liefert, SDA und SCL natürlich ebenfalls anschliessen.&lt;br /&gt;
Ich habe alle drei Adress-Pins auf &#039;&#039;&#039;L&#039;&#039;&#039; gelegt und erhalte von &#039;&#039;i2cdetect&#039;&#039; so die Adresse &#039;&#039;&#039;0x38&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== [[SPI]] ===&lt;br /&gt;
=== [[PWM]] ===&lt;br /&gt;
==== onboard buzzer ====&lt;br /&gt;
=== [[ADC]] ===&lt;br /&gt;
==== Touchscreen ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann der Touchscreen wie z. B. jede Maus über das event-Interface angesprochen werden.&lt;br /&gt;
Normalerweise liegt der Touchscreen auf &#039;&#039;/dev/input/event0&#039;&#039;.&lt;br /&gt;
Diese Gerätedatei muss man auch der tslib angeben.&lt;br /&gt;
&lt;br /&gt;
==== LCD Backlight ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann die Hintergrundbeleuchtung des Displays einfach über die entsprechende Geräte-Datei ein- bzw. ausgeschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
einschalten: &amp;lt;pre&amp;gt;# echo 1 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
ausschalten: &amp;lt;pre&amp;gt;# echo 0 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onboard Poti ====&lt;br /&gt;
Hierzu muss wieder der Kerneltreiber mit eincompiliert sein, damit man das Gerät &#039;&#039;/dev/adc&#039;&#039; hat. Im FriendlyARM-Kernel ist der Treiber fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Die Funktion getpoti() liest in einer Schleife mehrmals den Potiwert ein und bildet einen Mittelwert, der zurückgegeben wird.&lt;br /&gt;
Die Anzahl der Werte, aus denen der Mittelwert gebildet wird, wird mit dem #define &#039;&#039;LOOPs&#039;&#039; angegeben.&lt;br /&gt;
===== C-Code =====&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define LOOPS 12 // 12 Werte fuer Mittelwert&lt;br /&gt;
&lt;br /&gt;
unsigned int getpoti() {&lt;br /&gt;
	int value, i, fd = open(&amp;quot;/dev/adc&amp;quot;, 0);&lt;br /&gt;
	unsigned int add = 0, ret;&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open adc device!\n&amp;quot;); return -1; }&lt;br /&gt;
	&lt;br /&gt;
	for(i = 0; i &amp;lt; LOOPS; i++) {&lt;br /&gt;
		char buffer[30];&lt;br /&gt;
		int len = read(fd, buffer, sizeof buffer -1);&lt;br /&gt;
		if (len &amp;gt; 0) {&lt;br /&gt;
			buffer[len] = &#039;\0&#039;;&lt;br /&gt;
			value = -1;&lt;br /&gt;
			sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;value);&lt;br /&gt;
			add += value;&lt;br /&gt;
		} else {&lt;br /&gt;
			printf(&amp;quot;cant read from adc device!\n&amp;quot;);&lt;br /&gt;
                        close(fd);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	ret = add / LOOPS;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
Da der S3C2440 über sage und schreibe &#039;&#039;&#039;130&#039;&#039;&#039; GPIOs verfügt, mit diversen Funktionen, wie I2C, PWM, ..., das setzen der &amp;quot;Drive Strength&amp;quot; (maximaler Strom an machen Pins), ... ist das Ganze nicht mehr so einfach wie bei einem AVR.&lt;br /&gt;
Der Bastler sollte hier schon genau wissen was er will vorallem das [[Media:S3C2440_datasheet_samsung.pdf|Datenblatt]] zu Rate ziehen.&lt;br /&gt;
Die Funktionen und Register des Chips sind ab Seite &#039;&#039;&#039;274&#039;&#039;&#039; (Kapitel &#039;&#039;IO-Ports&#039;&#039;) zu finden.&lt;br /&gt;
Die elektrischen Daten sind ab Seite &#039;&#039;&#039;554&#039;&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
==== C-Code für die onboard-Buttons ====&lt;br /&gt;
Hierfür wird wird der Kerneltreiber benötigt. Im FriendlyARM-Kernel ist dieser fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Wenn die Buttons eingelesen werden, erhält man für jeden nicht gerdrücken Buttons &#039;&#039;0x30&#039;&#039; und für jeden gedrückten Button &#039;&#039;0x31&#039;&#039;.&lt;br /&gt;
Die Funktion liest die Buttons ein und vergleicht den Wert, sobald 0x31 kommt, ist sie beendet. Die Buttons sind von 0 bis 5 nummeriert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
int wait4button(int button) {&lt;br /&gt;
	char btn[6] = {&#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;};&lt;br /&gt;
	int fd = open(&amp;quot;/dev/buttons&amp;quot;, 0);&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open buttons device&amp;quot;); return(-1); }&lt;br /&gt;
&lt;br /&gt;
	while(btn[button] == 0x30) {	// if a button is released, we read 0x30, if pressed 0x31&lt;br /&gt;
		if (read(fd, btn, sizeof btn) != sizeof btn) {&lt;br /&gt;
			printf(&amp;quot;cant read buttons!&amp;quot;);&lt;br /&gt;
			close(fd);&lt;br /&gt;
			return(-1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPIO-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für GPIOs, kann man diese im Verzeichnis &#039;/sys/class/gpio/&#039; finden und ansteuern. Eine gute Erklärung ist dazu [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#gpio-sysfs hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Real Time Clock ===&lt;br /&gt;
Für die Real Time Clock, welche fest im Prozessor integriert ist, gibt es einen Kerneltreiber.&lt;br /&gt;
&lt;br /&gt;
Lesen/Setzen lässt sich sich sehr einfach mit dem Tool [http://linux.die.net/man/8/hwclock hwclock].&lt;br /&gt;
=== Beispielprogramme ===&lt;br /&gt;
&lt;br /&gt;
Hier habe ich ein paar kleine Beispielprogramme im Quellcode hochgeladen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:led_adc.c]] Herzschlag auf den LEDs, Geschwindigkeit mit Poti einstellen. Compilieren mit &#039;&#039;arm-linux-gcc led_adc.c -o led_adc&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Andere Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
=== uCos2 ===&lt;br /&gt;
=== Windows CE ===&lt;br /&gt;
=== FreeRTOS ===&lt;br /&gt;
=== emdedian ===&lt;br /&gt;
&lt;br /&gt;
== Ohne Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ===&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wo kaufen? ==&lt;br /&gt;
&lt;br /&gt;
Zu beziehen ist das Board entweder über Ebay, meist aus China, oder bei [http://www.watterott.com/de/FriendlyARM Watterott].&lt;br /&gt;
&lt;br /&gt;
== Eigene Displays an das Mini anschließen ==&lt;br /&gt;
&lt;br /&gt;
* Displays mit LVDS Anschluss können z.B. mit diesem selbst gebauten Adapter an das Mini angeschlossen werden. http://www.mikrocontroller.net/topic/217774#new&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [http://www.friendlyarm.net/products/mini2440 Übersicht auf der Friendlyarm Seite]&lt;br /&gt;
=== Howtos ===&lt;br /&gt;
* [http://wiki.linuxmce.org/index.php/Mini2440 Kernel, u-boot und qemu-mini2440 compilieren]&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/mini2440/downloads/list Emdebian+Angstrom Images, s3c_boot_usb]&lt;br /&gt;
&lt;br /&gt;
* [http://programmers-projects.de/node/10 Programmer&#039;s-Projects Mini2440 Projekt (überarbeitetes USB-Upload-Tool für Linux und mehr)]&lt;br /&gt;
&lt;br /&gt;
=== Youtube und ähnliche ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;br /&gt;
[[Category:Linux-Boards]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57010</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57010"/>
		<updated>2011-05-04T14:10:57Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Minila Windows EXE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;u&amp;gt;Bilder der Platine&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gerenderte Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTop.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottom.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Platine der Sammelbestellung bestückt&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTopPrototyp.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottomPrototyp.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Informationen über den MiniLA&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;CPLD&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;RAM-Speicher&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&amp;lt;u&amp;gt;512K*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 512K*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
* wird in der Sammelbestellung verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1M*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 1M*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* CY7C1441AV33-133AXC/CY7C1441AV33-133AXI&lt;br /&gt;
* 60eur/stk&lt;br /&gt;
* dazu muss eine Brücke zwischen TP1 am CPLD und TP2 am SRAM eingelötet werden&lt;br /&gt;
[[Bild:MockUpMiniLALayout1MBitRAM.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;USB&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Der FTDI FT2232D wird immer im Bus Powered Modus betrieben und über USB versorgt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Spannungsversorgung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* 3,3V, Versorgung über externe 5V bis 16V oder über den DCDC USB powered (Regler wird über den FTDI An/Aus geschaltet)&lt;br /&gt;
* 5V über DCDC (galvanisch getrennt) mit Spannungsregler dahinter oder DCDC überbrückt direkt über USB&lt;br /&gt;
&lt;br /&gt;
Dadurch kann der MiniLA mit einem Y-Kabel USB versorgt werden oder über ein externes Netzteil.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Galvanische Trennung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Als Zusatzoption über den ADUM4160, einem DCDC-Wandler und einem zusätzlichem Spannungsregler.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;JTAG&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* JTAG-Signale liegen an einem MicroMatch Steckverbinder an.&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Parallel Port&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale liegen an einem MicroMatch Steckverbinder an&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;LEDs&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Je nach Wunsch in SMD 0805 oder als 5mm LED&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gehäuse&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Passende Gehäusen:&lt;br /&gt;
* Hammond 1455L1602 (Mouser, RS, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 30 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 34 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* RFS RF-1599 (rfsupplier.com)&lt;br /&gt;
&lt;br /&gt;
Auch 3,5&amp;quot; USB/eSATA Festplatten-Geh​äuse sind bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Schaltplan und Layout&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Schaltplan&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039;Seite 1 &amp;amp; 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet1.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 3 &amp;amp; 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet3.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet4.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 5 &amp;amp; 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet5.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet6.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet7.png|350px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Layout&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039; Platine Mini-LA &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleBottom.png|350px]]&lt;br /&gt;
* 2-lagig&lt;br /&gt;
* über den 5mm LEDs sind die SMD0805 LEDs angeordnet&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpV1_05a.zip]]&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpTeileliste.zip]]&lt;br /&gt;
&#039;&#039;&#039; &amp;lt;u&amp;gt;Platine Tastköpfe&amp;lt;/u&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
* Sind über Wigbert zu beziehen. Er hat noch Tastköpfe von der ersten Sammelbestellung.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder auf der Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Steckverbinder&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || nicht gesteckt || gesteckt 1-2 || gesteckt 2-3&lt;br /&gt;
|-&lt;br /&gt;
| JP2  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP3  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP4  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP5  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP6  || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| JP7  || Platine &amp;quot;AUS&amp;quot; || Platine &amp;quot;AN&amp;quot; || -&lt;br /&gt;
|-&lt;br /&gt;
| JP9  || - || externe Versorgung || USB Versorgung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 JP6 - Spannungsversorgung für einen Externen Programmieradapter (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;nicht Brücken!&#039;&#039;&#039;&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Erste Inbetriebnahme&amp;lt;/u&amp;gt; ==&lt;br /&gt;
* 1. Platine liegt unangeschlossen (ohne USB und externe Versorgung) vor euch&lt;br /&gt;
* 2. Jumper JP7 stecken (USB-Interface wird mit Strom versorgt)&lt;br /&gt;
* 3. Jumper JP9 nicht stecken (CPLD wird erstmal nicht mit Strom versorgt, der Sicherheit halber)&lt;br /&gt;
* 4. USB-Kabel anschließen, LED7 sollte AN und LED8 Aus sein, FTDI sollte sich am PC anmelden&lt;br /&gt;
* 4.1 Wenn er nicht erkannt wird, Spannung über C45 ~9V, Spannung über C46 5V, Alles um IC4, IC5 und IC6 prüfen&lt;br /&gt;
* 5. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#FTDI FTDI-Treiber installieren]&lt;br /&gt;
* 6. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#LibUSB LibUSB installieren]&lt;br /&gt;
* 7. MiniLA vom PC trennen&lt;br /&gt;
* 8. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP9 nach Wahl stecken] &lt;br /&gt;
* 9. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP2-JP5] auf 2-3 stecken (wenn der USB-Stecker links, dann sind das die unteren Kontakte&lt;br /&gt;
*10. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Firmware schon mal alles vorbereiten, in den Ordner wechseln, alles eintippen]&lt;br /&gt;
*11. eventuell externe Versorgung und USB-Kabel anstecken, LED8 sollte nun auch leuchten&lt;br /&gt;
*12. Enter drücken, CPLD sollte programmiert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Der Spannungsregler für die 3,3V wird erst eingeschaltet wenn die USB-Verbindung steht und Windows den FTDI erkannt hat. LED8 leuchtet dann auch.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Programmierung&amp;lt;/u&amp;gt; ==&lt;br /&gt;
[[Image:MiniLAVersionMockUpFTPROG1.png|thumb|150px|right|Programmierung des FTDIs, Bild1]][[Image:MiniLAVersionMockUpFTPROG2.png|thumb|150px|right|Programmierung des FTDIs, Bild2]]&lt;br /&gt;
=== &amp;lt;u&amp;gt;FTDI&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Zum Programmieren werden die [http://www.ftdichip.com/Drivers/D2XX.htm FTDI-Treiber für D2XX] und das Programm [http://www.ftdichip.com/Support/Utilities.htm FT_PROG] benötigt.&lt;br /&gt;
&lt;br /&gt;
*1. MiniLA über ein USB Kabel an den PC anschließen und die heruntergeladenen FTDI-Treiber Installieren&lt;br /&gt;
*2. Das Programm FT_PROG starten&lt;br /&gt;
*3. Im Programm auf &amp;quot;Scan and Parse&amp;quot; drücken (1)(Bild1)&lt;br /&gt;
*4. rechte Maustaste auf den erkannten FTDI, &amp;quot;Aply Template&amp;quot; und &amp;quot;From File&amp;quot; [http://www.mikrocontroller.net/attachment/95887/MiniLA.xml diese Datei] auswählen (2)(Bild1)&lt;br /&gt;
*5. Im Programm auf &amp;quot;Program Devices&amp;quot; drücken (3)(Bild1), ein neues Fenster öffnet sich (Bild2)&lt;br /&gt;
*6. Haken setzen (4)(Bild2)&lt;br /&gt;
*7. Auf &amp;quot;Program&amp;quot; drücken (5)(Bild2)&lt;br /&gt;
*8. MiniLA abstecken und wieder anklemmen&lt;br /&gt;
*9. Fertig&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Firmware&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Image:MiniLAVersionMockUpxc3prog.png|thumb|150px|right|Programmierung des CPLDs]]&lt;br /&gt;
Zum Programmieren wird [http://sourceforge.net/projects/xc3sprog/ xc3sprog] benötigt. [http://www.mikrocontroller.net/attachment/96598/xc3sprog.exe Hier eine angepasste Version (Mit der anderen gab es Probleme beim CPLD löschen).] &lt;br /&gt;
&lt;br /&gt;
*1. Auf dem MiniLA die Jumper JP2-JP5 in die Stellung [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine 2-3] umstecken und den MiniLA anschließen. &lt;br /&gt;
*2. Kommandozeile öffnen&lt;br /&gt;
*3. In den Ordner wechseln, in der xc3prog und die jed-Datei liegt. (Die jed-Datei aus dem Archiv &amp;quot;Timeanalysis&amp;quot; bzw. &amp;quot;Stateanalysis&amp;quot; - siehe weiter unten - extrahieren. Sie ist im Ordner xilinx zu finden.)&lt;br /&gt;
*4. &amp;quot;xc3sprog -c ftdi -v miniLA.jed&amp;quot; eingeben und Enter drücken.&lt;br /&gt;
*5. Der FTDI sollte programmiert werden, ähnlich dem nebenstehendem Bild.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hilfreiche Befehle&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -j&amp;quot; - Erkennung des CPLDs&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -e&amp;quot; - Löschen des CPLDs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Firmware ist nur lauffähig mit der Version des MockUp MiniLAs und es sollte auch keine der originalen Firmwares verwendet werden, weil diese nicht kompatibel sind mit der neuen Hardware!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/c/c0/MiniLAVersionMockUpFirmwareLEDTest.zip LED-Test] (Blinkfrequenz: ~6,0Hz, ~1,5Hz, ~0,4Hz)&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/f/f5/Fw_timeanalysis_v1.8_for_MockUp_miniLA.zip Timeanalysis v1.8]&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/2/27/Fw_stateanalysis_v2.3_for_MockUp_miniLA.zip Stateanalysis v2.3]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LED-Bedeutungen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || LED1 || LED3 || LED5&lt;br /&gt;
|-&lt;br /&gt;
| nach dem Einschalten&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Idle&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Trigger&lt;br /&gt;
|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || &lt;br /&gt;
|-&lt;br /&gt;
| Wait for Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Post-Trigger|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X ||&lt;br /&gt;
|-&lt;br /&gt;
| Transfer zum PC&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Software&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Minila Windows EXE&amp;lt;/u&amp;gt; ===&lt;br /&gt;
*Minila Windows EXE Vers 0.6.4 für 256k und 512K Sample Speicher gibts hier:&amp;lt;br&amp;gt;http://www.mikrocontroller.net/attachment/97534/minila.zip&lt;br /&gt;
*Programmbibliothek, welche für die Nutzung der Software benötigt wird:&amp;lt;br&amp;gt;http://www.mikrocontroller.net/articles/Datei:Inpout32.zip&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Sigrok&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Einer der [http://www.sigrok.org/wiki/Main_Page Sigrok]-Entwickler hat eine Platine des MiniLAs bekommen und möchte diesen mit in die Liste der Unterstützten LAs mit aufnehmen.&lt;br /&gt;
&lt;br /&gt;
[http://www.sigrok.org/wiki/Main_Page Sigrok] ist eine freie, portable und für verschiedene Platformen, Open-Source Logic Analysator Software, welche viele LAs unterschiedlicher Hersteller unterstützt. Unteranderem demnächst auch den MiniLA. Es steht unter der GNU GPL Lizens und ist laut Webseite [http://www.sigrok.org/wiki/News#2011.2F03.2F15_sigrok_in_Debian am 15.3.2011 in das Debian Paketsystem mit aufgenommen worden (Ubuntu folgt)]. Zu seinen Eigenschaften gehört:&lt;br /&gt;
* Unterstützt viele LAs von verschiedenen Herstellern.&lt;br /&gt;
* Cross-Platform fähig. Unterstützung für Linux, Mac OS X, Windows, und FreeBSD (auf verschiedenen Platformen wie x86, ARM, Sparc, PowerPC, ...).&lt;br /&gt;
* Protokoll decoding mit Skripten, welche in Python geschrieben und erweiterbar sind.&lt;br /&gt;
* Unterstützt verschiedene Ein/Ausgabeformate (Binär, ASCII, Hex, CSV, gnuplot, VCD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Webseite:&amp;lt;/u&amp;gt;&lt;br /&gt;
* [http://www.sigrok.org/wiki/Main_Page Sigrok Webseite]&lt;br /&gt;
* [http://www.sigrok.org/wiki/MiniLA_Mockup Sigrok Webseite für den MiniLA]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57009</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57009"/>
		<updated>2011-05-04T14:08:50Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Sigrok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;u&amp;gt;Bilder der Platine&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gerenderte Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTop.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottom.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Platine der Sammelbestellung bestückt&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTopPrototyp.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottomPrototyp.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Informationen über den MiniLA&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;CPLD&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;RAM-Speicher&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&amp;lt;u&amp;gt;512K*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 512K*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
* wird in der Sammelbestellung verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1M*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 1M*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* CY7C1441AV33-133AXC/CY7C1441AV33-133AXI&lt;br /&gt;
* 60eur/stk&lt;br /&gt;
* dazu muss eine Brücke zwischen TP1 am CPLD und TP2 am SRAM eingelötet werden&lt;br /&gt;
[[Bild:MockUpMiniLALayout1MBitRAM.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;USB&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Der FTDI FT2232D wird immer im Bus Powered Modus betrieben und über USB versorgt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Spannungsversorgung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* 3,3V, Versorgung über externe 5V bis 16V oder über den DCDC USB powered (Regler wird über den FTDI An/Aus geschaltet)&lt;br /&gt;
* 5V über DCDC (galvanisch getrennt) mit Spannungsregler dahinter oder DCDC überbrückt direkt über USB&lt;br /&gt;
&lt;br /&gt;
Dadurch kann der MiniLA mit einem Y-Kabel USB versorgt werden oder über ein externes Netzteil.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Galvanische Trennung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Als Zusatzoption über den ADUM4160, einem DCDC-Wandler und einem zusätzlichem Spannungsregler.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;JTAG&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* JTAG-Signale liegen an einem MicroMatch Steckverbinder an.&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Parallel Port&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale liegen an einem MicroMatch Steckverbinder an&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;LEDs&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Je nach Wunsch in SMD 0805 oder als 5mm LED&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gehäuse&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Passende Gehäusen:&lt;br /&gt;
* Hammond 1455L1602 (Mouser, RS, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 30 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 34 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* RFS RF-1599 (rfsupplier.com)&lt;br /&gt;
&lt;br /&gt;
Auch 3,5&amp;quot; USB/eSATA Festplatten-Geh​äuse sind bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Schaltplan und Layout&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Schaltplan&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039;Seite 1 &amp;amp; 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet1.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 3 &amp;amp; 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet3.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet4.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 5 &amp;amp; 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet5.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet6.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet7.png|350px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Layout&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039; Platine Mini-LA &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleBottom.png|350px]]&lt;br /&gt;
* 2-lagig&lt;br /&gt;
* über den 5mm LEDs sind die SMD0805 LEDs angeordnet&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpV1_05a.zip]]&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpTeileliste.zip]]&lt;br /&gt;
&#039;&#039;&#039; &amp;lt;u&amp;gt;Platine Tastköpfe&amp;lt;/u&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
* Sind über Wigbert zu beziehen. Er hat noch Tastköpfe von der ersten Sammelbestellung.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder auf der Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Steckverbinder&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || nicht gesteckt || gesteckt 1-2 || gesteckt 2-3&lt;br /&gt;
|-&lt;br /&gt;
| JP2  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP3  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP4  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP5  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP6  || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| JP7  || Platine &amp;quot;AUS&amp;quot; || Platine &amp;quot;AN&amp;quot; || -&lt;br /&gt;
|-&lt;br /&gt;
| JP9  || - || externe Versorgung || USB Versorgung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 JP6 - Spannungsversorgung für einen Externen Programmieradapter (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;nicht Brücken!&#039;&#039;&#039;&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Erste Inbetriebnahme&amp;lt;/u&amp;gt; ==&lt;br /&gt;
* 1. Platine liegt unangeschlossen (ohne USB und externe Versorgung) vor euch&lt;br /&gt;
* 2. Jumper JP7 stecken (USB-Interface wird mit Strom versorgt)&lt;br /&gt;
* 3. Jumper JP9 nicht stecken (CPLD wird erstmal nicht mit Strom versorgt, der Sicherheit halber)&lt;br /&gt;
* 4. USB-Kabel anschließen, LED7 sollte AN und LED8 Aus sein, FTDI sollte sich am PC anmelden&lt;br /&gt;
* 4.1 Wenn er nicht erkannt wird, Spannung über C45 ~9V, Spannung über C46 5V, Alles um IC4, IC5 und IC6 prüfen&lt;br /&gt;
* 5. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#FTDI FTDI-Treiber installieren]&lt;br /&gt;
* 6. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#LibUSB LibUSB installieren]&lt;br /&gt;
* 7. MiniLA vom PC trennen&lt;br /&gt;
* 8. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP9 nach Wahl stecken] &lt;br /&gt;
* 9. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP2-JP5] auf 2-3 stecken (wenn der USB-Stecker links, dann sind das die unteren Kontakte&lt;br /&gt;
*10. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Firmware schon mal alles vorbereiten, in den Ordner wechseln, alles eintippen]&lt;br /&gt;
*11. eventuell externe Versorgung und USB-Kabel anstecken, LED8 sollte nun auch leuchten&lt;br /&gt;
*12. Enter drücken, CPLD sollte programmiert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Der Spannungsregler für die 3,3V wird erst eingeschaltet wenn die USB-Verbindung steht und Windows den FTDI erkannt hat. LED8 leuchtet dann auch.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Programmierung&amp;lt;/u&amp;gt; ==&lt;br /&gt;
[[Image:MiniLAVersionMockUpFTPROG1.png|thumb|150px|right|Programmierung des FTDIs, Bild1]][[Image:MiniLAVersionMockUpFTPROG2.png|thumb|150px|right|Programmierung des FTDIs, Bild2]]&lt;br /&gt;
=== &amp;lt;u&amp;gt;FTDI&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Zum Programmieren werden die [http://www.ftdichip.com/Drivers/D2XX.htm FTDI-Treiber für D2XX] und das Programm [http://www.ftdichip.com/Support/Utilities.htm FT_PROG] benötigt.&lt;br /&gt;
&lt;br /&gt;
*1. MiniLA über ein USB Kabel an den PC anschließen und die heruntergeladenen FTDI-Treiber Installieren&lt;br /&gt;
*2. Das Programm FT_PROG starten&lt;br /&gt;
*3. Im Programm auf &amp;quot;Scan and Parse&amp;quot; drücken (1)(Bild1)&lt;br /&gt;
*4. rechte Maustaste auf den erkannten FTDI, &amp;quot;Aply Template&amp;quot; und &amp;quot;From File&amp;quot; [http://www.mikrocontroller.net/attachment/95887/MiniLA.xml diese Datei] auswählen (2)(Bild1)&lt;br /&gt;
*5. Im Programm auf &amp;quot;Program Devices&amp;quot; drücken (3)(Bild1), ein neues Fenster öffnet sich (Bild2)&lt;br /&gt;
*6. Haken setzen (4)(Bild2)&lt;br /&gt;
*7. Auf &amp;quot;Program&amp;quot; drücken (5)(Bild2)&lt;br /&gt;
*8. MiniLA abstecken und wieder anklemmen&lt;br /&gt;
*9. Fertig&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Firmware&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Image:MiniLAVersionMockUpxc3prog.png|thumb|150px|right|Programmierung des CPLDs]]&lt;br /&gt;
Zum Programmieren wird [http://sourceforge.net/projects/xc3sprog/ xc3sprog] benötigt. [http://www.mikrocontroller.net/attachment/96598/xc3sprog.exe Hier eine angepasste Version (Mit der anderen gab es Probleme beim CPLD löschen).] &lt;br /&gt;
&lt;br /&gt;
*1. Auf dem MiniLA die Jumper JP2-JP5 in die Stellung [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine 2-3] umstecken und den MiniLA anschließen. &lt;br /&gt;
*2. Kommandozeile öffnen&lt;br /&gt;
*3. In den Ordner wechseln, in der xc3prog und die jed-Datei liegt. (Die jed-Datei aus dem Archiv &amp;quot;Timeanalysis&amp;quot; bzw. &amp;quot;Stateanalysis&amp;quot; - siehe weiter unten - extrahieren. Sie ist im Ordner xilinx zu finden.)&lt;br /&gt;
*4. &amp;quot;xc3sprog -c ftdi -v miniLA.jed&amp;quot; eingeben und Enter drücken.&lt;br /&gt;
*5. Der FTDI sollte programmiert werden, ähnlich dem nebenstehendem Bild.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hilfreiche Befehle&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -j&amp;quot; - Erkennung des CPLDs&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -e&amp;quot; - Löschen des CPLDs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Firmware ist nur lauffähig mit der Version des MockUp MiniLAs und es sollte auch keine der originalen Firmwares verwendet werden, weil diese nicht kompatibel sind mit der neuen Hardware!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/c/c0/MiniLAVersionMockUpFirmwareLEDTest.zip LED-Test] (Blinkfrequenz: ~6,0Hz, ~1,5Hz, ~0,4Hz)&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/f/f5/Fw_timeanalysis_v1.8_for_MockUp_miniLA.zip Timeanalysis v1.8]&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/2/27/Fw_stateanalysis_v2.3_for_MockUp_miniLA.zip Stateanalysis v2.3]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LED-Bedeutungen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || LED1 || LED3 || LED5&lt;br /&gt;
|-&lt;br /&gt;
| nach dem Einschalten&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Idle&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Trigger&lt;br /&gt;
|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || &lt;br /&gt;
|-&lt;br /&gt;
| Wait for Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Post-Trigger|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X ||&lt;br /&gt;
|-&lt;br /&gt;
| Transfer zum PC&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Software&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Minila Windows EXE&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Minila Windows EXE Vers 0.6.4 für 256k und 512K Sample Speicher gibts hier&lt;br /&gt;
http://www.mikrocontroller.net/attachment/97534/minila.zip &amp;lt;br&amp;gt;&lt;br /&gt;
[[Media: inpout32.dll | Programmbibliothek, welche für die Nutzung der Software benötigt wird]]  http://www.mikrocontroller.net/articles/Datei:Inpout32.zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Sigrok&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Einer der [http://www.sigrok.org/wiki/Main_Page Sigrok]-Entwickler hat eine Platine des MiniLAs bekommen und möchte diesen mit in die Liste der Unterstützten LAs mit aufnehmen.&lt;br /&gt;
&lt;br /&gt;
[http://www.sigrok.org/wiki/Main_Page Sigrok] ist eine freie, portable und für verschiedene Platformen, Open-Source Logic Analysator Software, welche viele LAs unterschiedlicher Hersteller unterstützt. Unteranderem demnächst auch den MiniLA. Es steht unter der GNU GPL Lizens und ist laut Webseite [http://www.sigrok.org/wiki/News#2011.2F03.2F15_sigrok_in_Debian am 15.3.2011 in das Debian Paketsystem mit aufgenommen worden (Ubuntu folgt)]. Zu seinen Eigenschaften gehört:&lt;br /&gt;
* Unterstützt viele LAs von verschiedenen Herstellern.&lt;br /&gt;
* Cross-Platform fähig. Unterstützung für Linux, Mac OS X, Windows, und FreeBSD (auf verschiedenen Platformen wie x86, ARM, Sparc, PowerPC, ...).&lt;br /&gt;
* Protokoll decoding mit Skripten, welche in Python geschrieben und erweiterbar sind.&lt;br /&gt;
* Unterstützt verschiedene Ein/Ausgabeformate (Binär, ASCII, Hex, CSV, gnuplot, VCD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Webseite:&amp;lt;/u&amp;gt;&lt;br /&gt;
* [http://www.sigrok.org/wiki/Main_Page Sigrok Webseite]&lt;br /&gt;
* [http://www.sigrok.org/wiki/MiniLA_Mockup Sigrok Webseite für den MiniLA]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57008</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=57008"/>
		<updated>2011-05-04T14:05:59Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Sigrok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;u&amp;gt;Bilder der Platine&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gerenderte Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTop.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottom.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Platine der Sammelbestellung bestückt&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTopPrototyp.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottomPrototyp.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Informationen über den MiniLA&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;CPLD&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;RAM-Speicher&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&amp;lt;u&amp;gt;512K*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 512K*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
* wird in der Sammelbestellung verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1M*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 1M*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* CY7C1441AV33-133AXC/CY7C1441AV33-133AXI&lt;br /&gt;
* 60eur/stk&lt;br /&gt;
* dazu muss eine Brücke zwischen TP1 am CPLD und TP2 am SRAM eingelötet werden&lt;br /&gt;
[[Bild:MockUpMiniLALayout1MBitRAM.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;USB&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Der FTDI FT2232D wird immer im Bus Powered Modus betrieben und über USB versorgt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Spannungsversorgung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* 3,3V, Versorgung über externe 5V bis 16V oder über den DCDC USB powered (Regler wird über den FTDI An/Aus geschaltet)&lt;br /&gt;
* 5V über DCDC (galvanisch getrennt) mit Spannungsregler dahinter oder DCDC überbrückt direkt über USB&lt;br /&gt;
&lt;br /&gt;
Dadurch kann der MiniLA mit einem Y-Kabel USB versorgt werden oder über ein externes Netzteil.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Galvanische Trennung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Als Zusatzoption über den ADUM4160, einem DCDC-Wandler und einem zusätzlichem Spannungsregler.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;JTAG&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* JTAG-Signale liegen an einem MicroMatch Steckverbinder an.&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Parallel Port&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale liegen an einem MicroMatch Steckverbinder an&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;LEDs&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Je nach Wunsch in SMD 0805 oder als 5mm LED&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gehäuse&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Passende Gehäusen:&lt;br /&gt;
* Hammond 1455L1602 (Mouser, RS, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 30 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 34 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* RFS RF-1599 (rfsupplier.com)&lt;br /&gt;
&lt;br /&gt;
Auch 3,5&amp;quot; USB/eSATA Festplatten-Geh​äuse sind bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Schaltplan und Layout&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Schaltplan&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039;Seite 1 &amp;amp; 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet1.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 3 &amp;amp; 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet3.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet4.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 5 &amp;amp; 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet5.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet6.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet7.png|350px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Layout&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039; Platine Mini-LA &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleBottom.png|350px]]&lt;br /&gt;
* 2-lagig&lt;br /&gt;
* über den 5mm LEDs sind die SMD0805 LEDs angeordnet&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpV1_05a.zip]]&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpTeileliste.zip]]&lt;br /&gt;
&#039;&#039;&#039; &amp;lt;u&amp;gt;Platine Tastköpfe&amp;lt;/u&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
* Sind über Wigbert zu beziehen. Er hat noch Tastköpfe von der ersten Sammelbestellung.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder auf der Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Steckverbinder&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || nicht gesteckt || gesteckt 1-2 || gesteckt 2-3&lt;br /&gt;
|-&lt;br /&gt;
| JP2  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP3  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP4  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP5  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP6  || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| JP7  || Platine &amp;quot;AUS&amp;quot; || Platine &amp;quot;AN&amp;quot; || -&lt;br /&gt;
|-&lt;br /&gt;
| JP9  || - || externe Versorgung || USB Versorgung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 JP6 - Spannungsversorgung für einen Externen Programmieradapter (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;nicht Brücken!&#039;&#039;&#039;&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Erste Inbetriebnahme&amp;lt;/u&amp;gt; ==&lt;br /&gt;
* 1. Platine liegt unangeschlossen (ohne USB und externe Versorgung) vor euch&lt;br /&gt;
* 2. Jumper JP7 stecken (USB-Interface wird mit Strom versorgt)&lt;br /&gt;
* 3. Jumper JP9 nicht stecken (CPLD wird erstmal nicht mit Strom versorgt, der Sicherheit halber)&lt;br /&gt;
* 4. USB-Kabel anschließen, LED7 sollte AN und LED8 Aus sein, FTDI sollte sich am PC anmelden&lt;br /&gt;
* 4.1 Wenn er nicht erkannt wird, Spannung über C45 ~9V, Spannung über C46 5V, Alles um IC4, IC5 und IC6 prüfen&lt;br /&gt;
* 5. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#FTDI FTDI-Treiber installieren]&lt;br /&gt;
* 6. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#LibUSB LibUSB installieren]&lt;br /&gt;
* 7. MiniLA vom PC trennen&lt;br /&gt;
* 8. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP9 nach Wahl stecken] &lt;br /&gt;
* 9. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP2-JP5] auf 2-3 stecken (wenn der USB-Stecker links, dann sind das die unteren Kontakte&lt;br /&gt;
*10. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Firmware schon mal alles vorbereiten, in den Ordner wechseln, alles eintippen]&lt;br /&gt;
*11. eventuell externe Versorgung und USB-Kabel anstecken, LED8 sollte nun auch leuchten&lt;br /&gt;
*12. Enter drücken, CPLD sollte programmiert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Der Spannungsregler für die 3,3V wird erst eingeschaltet wenn die USB-Verbindung steht und Windows den FTDI erkannt hat. LED8 leuchtet dann auch.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Programmierung&amp;lt;/u&amp;gt; ==&lt;br /&gt;
[[Image:MiniLAVersionMockUpFTPROG1.png|thumb|150px|right|Programmierung des FTDIs, Bild1]][[Image:MiniLAVersionMockUpFTPROG2.png|thumb|150px|right|Programmierung des FTDIs, Bild2]]&lt;br /&gt;
=== &amp;lt;u&amp;gt;FTDI&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Zum Programmieren werden die [http://www.ftdichip.com/Drivers/D2XX.htm FTDI-Treiber für D2XX] und das Programm [http://www.ftdichip.com/Support/Utilities.htm FT_PROG] benötigt.&lt;br /&gt;
&lt;br /&gt;
*1. MiniLA über ein USB Kabel an den PC anschließen und die heruntergeladenen FTDI-Treiber Installieren&lt;br /&gt;
*2. Das Programm FT_PROG starten&lt;br /&gt;
*3. Im Programm auf &amp;quot;Scan and Parse&amp;quot; drücken (1)(Bild1)&lt;br /&gt;
*4. rechte Maustaste auf den erkannten FTDI, &amp;quot;Aply Template&amp;quot; und &amp;quot;From File&amp;quot; [http://www.mikrocontroller.net/attachment/95887/MiniLA.xml diese Datei] auswählen (2)(Bild1)&lt;br /&gt;
*5. Im Programm auf &amp;quot;Program Devices&amp;quot; drücken (3)(Bild1), ein neues Fenster öffnet sich (Bild2)&lt;br /&gt;
*6. Haken setzen (4)(Bild2)&lt;br /&gt;
*7. Auf &amp;quot;Program&amp;quot; drücken (5)(Bild2)&lt;br /&gt;
*8. MiniLA abstecken und wieder anklemmen&lt;br /&gt;
*9. Fertig&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Firmware&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Image:MiniLAVersionMockUpxc3prog.png|thumb|150px|right|Programmierung des CPLDs]]&lt;br /&gt;
Zum Programmieren wird [http://sourceforge.net/projects/xc3sprog/ xc3sprog] benötigt. [http://www.mikrocontroller.net/attachment/96598/xc3sprog.exe Hier eine angepasste Version (Mit der anderen gab es Probleme beim CPLD löschen).] &lt;br /&gt;
&lt;br /&gt;
*1. Auf dem MiniLA die Jumper JP2-JP5 in die Stellung [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine 2-3] umstecken und den MiniLA anschließen. &lt;br /&gt;
*2. Kommandozeile öffnen&lt;br /&gt;
*3. In den Ordner wechseln, in der xc3prog und die jed-Datei liegt. (Die jed-Datei aus dem Archiv &amp;quot;Timeanalysis&amp;quot; bzw. &amp;quot;Stateanalysis&amp;quot; - siehe weiter unten - extrahieren. Sie ist im Ordner xilinx zu finden.)&lt;br /&gt;
*4. &amp;quot;xc3sprog -c ftdi -v miniLA.jed&amp;quot; eingeben und Enter drücken.&lt;br /&gt;
*5. Der FTDI sollte programmiert werden, ähnlich dem nebenstehendem Bild.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hilfreiche Befehle&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -j&amp;quot; - Erkennung des CPLDs&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -e&amp;quot; - Löschen des CPLDs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Firmware ist nur lauffähig mit der Version des MockUp MiniLAs und es sollte auch keine der originalen Firmwares verwendet werden, weil diese nicht kompatibel sind mit der neuen Hardware!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/c/c0/MiniLAVersionMockUpFirmwareLEDTest.zip LED-Test] (Blinkfrequenz: ~6,0Hz, ~1,5Hz, ~0,4Hz)&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/f/f5/Fw_timeanalysis_v1.8_for_MockUp_miniLA.zip Timeanalysis v1.8]&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/2/27/Fw_stateanalysis_v2.3_for_MockUp_miniLA.zip Stateanalysis v2.3]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LED-Bedeutungen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || LED1 || LED3 || LED5&lt;br /&gt;
|-&lt;br /&gt;
| nach dem Einschalten&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Idle&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Trigger&lt;br /&gt;
|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || &lt;br /&gt;
|-&lt;br /&gt;
| Wait for Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Post-Trigger|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X ||&lt;br /&gt;
|-&lt;br /&gt;
| Transfer zum PC&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Software&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Minila Windows EXE&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Minila Windows EXE Vers 0.6.4 für 256k und 512K Sample Speicher gibts hier&lt;br /&gt;
http://www.mikrocontroller.net/attachment/97534/minila.zip &amp;lt;br&amp;gt;&lt;br /&gt;
[[Media: inpout32.dll | Programmbibliothek, welche für die Nutzung der Software benötigt wird]]  http://www.mikrocontroller.net/articles/Datei:Inpout32.zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Sigrok&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Einer der [http://www.sigrok.org/wiki/Main_Page Sigrok]-Entwickler hat eine Platine des MiniLAs bekommen und möchte diesen mit in die Liste der Unterstützten LAs mit aufnehmen.&lt;br /&gt;
&lt;br /&gt;
[http://www.sigrok.org/wiki/Main_Page Sigrok] ist eine freie, portable und für verschiedene Platformen, Open-Source Logic Analysator Software, welche verschiedene Logic Analysator Hardware unterstützt. Unteranderem demnächst auch den MiniLA. Es steht unter der GNU GPL Lizens und ist laut Webseite [http://www.sigrok.org/wiki/News#2011.2F03.2F15_sigrok_in_Debian am 15.3.2011 in das Debian Paketsystem mit aufgenommen worden]. Zu seinen Eigenschaften gehört:&lt;br /&gt;
* Unterstützt viele LAs von verschiedenen Herstellern.&lt;br /&gt;
* Cross-Platform fähig. Unterstützung für Linux, Mac OS X, Windows, und FreeBSD (auf verschiedenen Platformen wie x86, ARM, Sparc, PowerPC, ...).&lt;br /&gt;
* Protokoll decoding mit Skripten, welche in Python geschrieben und erweiterbar sind.&lt;br /&gt;
* Unterstützt verschiedene Ein/Ausgabeformate (Binär, ASCII, Hex, CSV, gnuplot, VCD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Webseite:&amp;lt;/u&amp;gt;&lt;br /&gt;
* [http://www.sigrok.org/wiki/Main_Page Sigrok Webseite]&lt;br /&gt;
* [http://www.sigrok.org/wiki/MiniLA_Mockup Sigrok Webseite für den MiniLA]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=56999</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=56999"/>
		<updated>2011-05-03T21:36:06Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;u&amp;gt;Bilder der Platine&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gerenderte Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTop.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottom.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Platine der Sammelbestellung bestückt&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTopPrototyp.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottomPrototyp.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Informationen über den MiniLA&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;CPLD&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;RAM-Speicher&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&amp;lt;u&amp;gt;512K*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 512K*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
* wird in der Sammelbestellung verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1M*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 1M*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* CY7C1441AV33-133AXC/CY7C1441AV33-133AXI&lt;br /&gt;
* 60eur/stk&lt;br /&gt;
* dazu muss eine Brücke zwischen TP1 am CPLD und TP2 am SRAM eingelötet werden&lt;br /&gt;
[[Bild:MockUpMiniLALayout1MBitRAM.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;USB&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Der FTDI FT2232D wird immer im Bus Powered Modus betrieben und über USB versorgt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Spannungsversorgung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* 3,3V, Versorgung über externe 5V bis 16V oder über den DCDC USB powered (Regler wird über den FTDI An/Aus geschaltet)&lt;br /&gt;
* 5V über DCDC (galvanisch getrennt) mit Spannungsregler dahinter oder DCDC überbrückt direkt über USB&lt;br /&gt;
&lt;br /&gt;
Dadurch kann der MiniLA mit einem Y-Kabel USB versorgt werden oder über ein externes Netzteil.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Galvanische Trennung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Als Zusatzoption über den ADUM4160, einem DCDC-Wandler und einem zusätzlichem Spannungsregler.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;JTAG&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* JTAG-Signale liegen an einem MicroMatch Steckverbinder an.&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Parallel Port&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale liegen an einem MicroMatch Steckverbinder an&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;LEDs&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Je nach Wunsch in SMD 0805 oder als 5mm LED&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gehäuse&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Passende Gehäusen:&lt;br /&gt;
* Hammond 1455L1602 (Mouser, RS, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 30 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 34 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* RFS RF-1599 (rfsupplier.com)&lt;br /&gt;
&lt;br /&gt;
Auch 3,5&amp;quot; USB/eSATA Festplatten-Geh​äuse sind bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Schaltplan und Layout&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Schaltplan&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039;Seite 1 &amp;amp; 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet1.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 3 &amp;amp; 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet3.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet4.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 5 &amp;amp; 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet5.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet6.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet7.png|350px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Layout&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039; Platine Mini-LA &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleBottom.png|350px]]&lt;br /&gt;
* 2-lagig&lt;br /&gt;
* über den 5mm LEDs sind die SMD0805 LEDs angeordnet&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpV1_05a.zip]]&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpTeileliste.zip]]&lt;br /&gt;
&#039;&#039;&#039; &amp;lt;u&amp;gt;Platine Tastköpfe&amp;lt;/u&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
* Sind über Wigbert zu beziehen. Er hat noch Tastköpfe von der ersten Sammelbestellung.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder auf der Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Steckverbinder&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || nicht gesteckt || gesteckt 1-2 || gesteckt 2-3&lt;br /&gt;
|-&lt;br /&gt;
| JP2  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP3  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP4  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP5  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP6  || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| JP7  || Platine &amp;quot;AUS&amp;quot; || Platine &amp;quot;AN&amp;quot; || -&lt;br /&gt;
|-&lt;br /&gt;
| JP9  || - || externe Versorgung || USB Versorgung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 JP6 - Spannungsversorgung für einen Externen Programmieradapter (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;nicht Brücken!&#039;&#039;&#039;&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Erste Inbetriebnahme&amp;lt;/u&amp;gt; ==&lt;br /&gt;
* 1. Platine liegt unangeschlossen (ohne USB und externe Versorgung) vor euch&lt;br /&gt;
* 2. Jumper JP7 stecken (USB-Interface wird mit Strom versorgt)&lt;br /&gt;
* 3. Jumper JP9 nicht stecken (CPLD wird erstmal nicht mit Strom versorgt, der Sicherheit halber)&lt;br /&gt;
* 4. USB-Kabel anschließen, LED7 sollte AN und LED8 Aus sein, FTDI sollte sich am PC anmelden&lt;br /&gt;
* 4.1 Wenn er nicht erkannt wird, Spannung über C45 ~9V, Spannung über C46 5V, Alles um IC4, IC5 und IC6 prüfen&lt;br /&gt;
* 5. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#FTDI FTDI-Treiber installieren]&lt;br /&gt;
* 6. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#LibUSB LibUSB installieren]&lt;br /&gt;
* 7. MiniLA vom PC trennen&lt;br /&gt;
* 8. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP9 nach Wahl stecken] &lt;br /&gt;
* 9. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP2-JP5] auf 2-3 stecken (wenn der USB-Stecker links, dann sind das die unteren Kontakte&lt;br /&gt;
*10. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Firmware schon mal alles vorbereiten, in den Ordner wechseln, alles eintippen]&lt;br /&gt;
*11. eventuell externe Versorgung und USB-Kabel anstecken, LED8 sollte nun auch leuchten&lt;br /&gt;
*12. Enter drücken, CPLD sollte programmiert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Der Spannungsregler für die 3,3V wird erst eingeschaltet wenn die USB-Verbindung steht und Windows den FTDI erkannt hat. LED8 leuchtet dann auch.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Programmierung&amp;lt;/u&amp;gt; ==&lt;br /&gt;
[[Image:MiniLAVersionMockUpFTPROG1.png|thumb|150px|right|Programmierung des FTDIs, Bild1]][[Image:MiniLAVersionMockUpFTPROG2.png|thumb|150px|right|Programmierung des FTDIs, Bild2]]&lt;br /&gt;
=== &amp;lt;u&amp;gt;FTDI&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Zum Programmieren werden die [http://www.ftdichip.com/Drivers/D2XX.htm FTDI-Treiber für D2XX] und das Programm [http://www.ftdichip.com/Support/Utilities.htm FT_PROG] benötigt.&lt;br /&gt;
&lt;br /&gt;
*1. MiniLA über ein USB Kabel an den PC anschließen und die heruntergeladenen FTDI-Treiber Installieren&lt;br /&gt;
*2. Das Programm FT_PROG starten&lt;br /&gt;
*3. Im Programm auf &amp;quot;Scan and Parse&amp;quot; drücken (1)(Bild1)&lt;br /&gt;
*4. rechte Maustaste auf den erkannten FTDI, &amp;quot;Aply Template&amp;quot; und &amp;quot;From File&amp;quot; [http://www.mikrocontroller.net/attachment/95887/MiniLA.xml diese Datei] auswählen (2)(Bild1)&lt;br /&gt;
*5. Im Programm auf &amp;quot;Program Devices&amp;quot; drücken (3)(Bild1), ein neues Fenster öffnet sich (Bild2)&lt;br /&gt;
*6. Haken setzen (4)(Bild2)&lt;br /&gt;
*7. Auf &amp;quot;Program&amp;quot; drücken (5)(Bild2)&lt;br /&gt;
*8. MiniLA abstecken und wieder anklemmen&lt;br /&gt;
*9. Fertig&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Firmware&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Image:MiniLAVersionMockUpxc3prog.png|thumb|150px|right|Programmierung des CPLDs]]&lt;br /&gt;
Zum Programmieren wird [http://sourceforge.net/projects/xc3sprog/ xc3sprog] benötigt. [http://www.mikrocontroller.net/attachment/96598/xc3sprog.exe Hier eine angepasste Version (Mit der anderen gab es Probleme beim CPLD löschen).] &lt;br /&gt;
&lt;br /&gt;
*1. Auf dem MiniLA die Jumper JP2-JP5 in die Stellung [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine 2-3] umstecken und den MiniLA anschließen. &lt;br /&gt;
*2. Kommandozeile öffnen&lt;br /&gt;
*3. In den Ordner wechseln, in der xc3prog und die jed-Datei liegt. (Die jed-Datei aus dem Archiv &amp;quot;Timeanalysis&amp;quot; bzw. &amp;quot;Stateanalysis&amp;quot; - siehe weiter unten - extrahieren. Sie ist im Ordner xilinx zu finden.)&lt;br /&gt;
*4. &amp;quot;xc3sprog -c ftdi -v miniLA.jed&amp;quot; eingeben und Enter drücken.&lt;br /&gt;
*5. Der FTDI sollte programmiert werden, ähnlich dem nebenstehendem Bild.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hilfreiche Befehle&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -j&amp;quot; - Erkennung des CPLDs&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -e&amp;quot; - Löschen des CPLDs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Firmware ist nur lauffähig mit der Version des MockUp MiniLAs und es sollte auch keine der originalen Firmwares verwendet werden, weil diese nicht kompatibel sind mit der neuen Hardware!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/c/c0/MiniLAVersionMockUpFirmwareLEDTest.zip LED-Test] (Blinkfrequenz: ~6,0Hz, ~1,5Hz, ~0,4Hz)&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/f/f5/Fw_timeanalysis_v1.8_for_MockUp_miniLA.zip Timeanalysis v1.8]&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/2/27/Fw_stateanalysis_v2.3_for_MockUp_miniLA.zip Stateanalysis v2.3]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LED-Bedeutungen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || LED1 || LED3 || LED5&lt;br /&gt;
|-&lt;br /&gt;
| nach dem Einschalten&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Idle&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Trigger&lt;br /&gt;
|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || &lt;br /&gt;
|-&lt;br /&gt;
| Wait for Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Post-Trigger|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X ||&lt;br /&gt;
|-&lt;br /&gt;
| Transfer zum PC&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Software&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Minila Windows EXE&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Minila Windows EXE Vers 0.6.4 für 256k und 512K Sample Speicher gibts hier&lt;br /&gt;
http://www.mikrocontroller.net/attachment/97534/minila.zip &amp;lt;br&amp;gt;&lt;br /&gt;
[[Media: inpout32.dll | Programmbibliothek, welche für die Nutzung der Software benötigt wird]]  http://www.mikrocontroller.net/articles/Datei:Inpout32.zip&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Sigrok&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Ein [http://www.sigrok.org/wiki/Main_Page Sigrok]-Entwickler hat eine Platine des MiniLAs bekommen und möchte die Unterstützung in dem Programm mit einbauen.&lt;br /&gt;
&lt;br /&gt;
[http://www.sigrok.org/wiki/Main_Page Sigrok] ist eine freie, portable und für verschiedene Platformen, Open-Source Logic Analysator Software, welche verschiedene Logic Analysator Hardware unterstützt. Unteranderem demnächst auch den MiniLA. Es steht unter der GNU GPL Lizens und ist laut Webseite [http://www.sigrok.org/wiki/News#2011.2F03.2F15_sigrok_in_Debian am 15.3.2011 in das Debian Paketsystem mit aufgenommen worden]. Seine Eigenschaften sind:&lt;br /&gt;
* Unterstützt viele verschiedene Logic Analysatoren von verschiedenen Herstellern.&lt;br /&gt;
* Cross-Platform. Unterstützung für Linux, Mac OS X, Windows, und FreeBSD (auf verschiedenen Platformen wie x86, ARM, Sparc, PowerPC, ...).&lt;br /&gt;
* Protokoll decoding mit Skripten welche in Python geschrieben und erweiterbar sind.&lt;br /&gt;
* Unterstützt verschiedene Ein/Ausgabeformate (Binär, ASCII, Hex, CSV, gnuplot, VCD, ...).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Webseite:&amp;lt;/u&amp;gt;&lt;br /&gt;
* [http://www.sigrok.org/wiki/Main_Page Sigrok Webseite]&lt;br /&gt;
* [http://www.sigrok.org/wiki/MiniLA_Mockup Sigrok Webseite für den MiniLA]&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56688</id>
		<title>DCF77 Wetterinformationen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56688"/>
		<updated>2011-04-19T20:53:55Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Verschlüsselung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Info=&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/DCF77&lt;br /&gt;
&lt;br /&gt;
Seit Ende 2006 werden über den Zeitzeichensender DCF77 in den 14 bislang ungenutzten Bits Wetterdaten übertragen.&lt;br /&gt;
Ursprünglich war dies als öffentliches Warnsystem angedacht, aber ist jetzt &#039;verkommerzialisiert&#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.ptb.de/de/aktuelles/archiv/presseinfos/pi2006/pitext/pi061212.htm&lt;br /&gt;
&lt;br /&gt;
Umsetzung von meteotime.de&lt;br /&gt;
in Kooperation mit dem Chip-Hersteller? -Händler hkw http://www.hkw-elektronik.de/deutsch/&lt;br /&gt;
&lt;br /&gt;
=Produkte=&lt;br /&gt;
&lt;br /&gt;
Hersteller von Uhren:&lt;br /&gt;
&lt;br /&gt;
http://www.irox.ch&lt;br /&gt;
&lt;br /&gt;
Das günstigste erhältliche Produkt kostet €40, 68-761-48 (WFC 300):&lt;br /&gt;
* http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=1&amp;amp;detail2=440&lt;br /&gt;
&lt;br /&gt;
= Übertragene Daten =&lt;br /&gt;
&lt;br /&gt;
* DCF Protokoll ist hinreichend bekannt.&lt;br /&gt;
* Es gibt 14 Datenbits, in 3 Minuten wird ein Datensatz übertragen (= 42 bit)&lt;br /&gt;
* 90 Regionen, 4 mal täglich Informationen, jeweils 3 Minuten: ergibt 1080 Sendeminuten pro Tag (1440 Minuten). Rest 360 (5040 bit).&lt;br /&gt;
4 mal täglich werden Infos zu einer Zone gesendet:&lt;br /&gt;
 * 22:00 - 03:59    Aktueller / kommender Tag (TODAY im Display)&lt;br /&gt;
 * 04:00 - 09:59    Folgender Tag (DAY 1 im Display)&lt;br /&gt;
 * 10:00 - 15:59    Darauffolgender Tag (DAY 2 im Display)&lt;br /&gt;
 * 16:00 - 18:59    Darauffolgender Tag (DAY 3 im Display)&lt;br /&gt;
 * 19:00 - 21:59    30 Zusatzregionen mit 2-Tages-Prognose&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Die Daten sind verschlüsselt&lt;br /&gt;
* Die entschlüsselten Daten können dekodiert werden&lt;br /&gt;
&lt;br /&gt;
http://www.hkw-elektronik.de/pdf/DB%20W-Protokoll-V%201.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Verschlüsselung =&lt;br /&gt;
&lt;br /&gt;
Nach aktuellem Erkenntnisstand wird angenommen, dass die Daten über ein rückgekoppeltes Schiebregister verschlüsselt und entschlüsselt werden.&lt;br /&gt;
Details:&lt;br /&gt;
&lt;br /&gt;
* Die aktuelle Uhrzeit+Datum wird als Schlüssel(teil) verwendet.&lt;br /&gt;
* Es wird Fehlerkorrektur angewandt, die Korrektur von 1-bit-Fehlern ist möglich&lt;br /&gt;
* Die 1 und 0 in den Daten sind nicht gleichverteilt: &lt;br /&gt;
[[Bild:DCF77_Wetter_OnesHistogramm.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In den ersten 14 Bits scheinen größere regelmäßigkeiten vorhanden zu sein. Grund unbekannt. Möglich ist eine Schwäche im Algorithmus.&lt;br /&gt;
* Es ist gelungen den Flash eines Decoderchips zu 64 Byte auszulesen. Enthalten war ein 80-Bit (oder mehr?) Schiebregister. Es hat nach aktuellen Stand ca. 14 Abgriffe die in ein 2. Register einfliesen, das erneut mehrmals geschoben und mit sich selbst ge-XOR-t wird. Aus diesem Register kommt 1 Bit zurück ins Schieberegister. Einige Codestellen sind verwirrend/unklar, es ist also nicht sicher, ob es sich nicht doch nur um einen Honeypot handelt. (Der Assemblercode ist im Forum zu finden)&lt;br /&gt;
* Während einer mehrere Stunden anhaltenden Störung wurden hunderte Datensätze gesendet, die entschlüsselt 000... ergeben haben. Hierbei sind in den verschlüsselten Daten Unregelmäßigkeiten aufgefallen:&lt;br /&gt;
http://www.mikrocontroller.net/attachment/107066/enc1.PNG&lt;br /&gt;
&lt;br /&gt;
Es finden sich teile von Paketen auch in anderen Paketen wieder. Zufall oder Schwäche?&lt;br /&gt;
&lt;br /&gt;
= Dekoder IC = &lt;br /&gt;
&lt;br /&gt;
Der Dekoder ist ein PIC 12F509&lt;br /&gt;
 * keinen Daten EEPROM nur 1K Programm mit 41 Byte RAM&lt;br /&gt;
&lt;br /&gt;
Pinbelegung Mebus Wetterstation mit Meteotime Empfang von&lt;br /&gt;
Real:&lt;br /&gt;
* http://www.mikrocontroller.net/topic/61886#650725&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Berechnung eines Wetterdatensatzes (Aufzeichnung über 3 Minuten) dauert ca. 250ms. Nach dieser (evtl. auch vor dieser?) Berechnung befindet sich eine Wartepause des ICs von ca. 45 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Was als Schlüssel dient ist noch unklar, es kann aber davon ausgegangen werden, dass die aktuelle Zeit mit in den Schlüssel einfließt. Dafür sprechen vor allem folgende Punkte:&lt;br /&gt;
* Der Decorderchip erhält nicht nur die Wetterdaten, sondern die gesamten Übertragenen DCF77 Daten (Wetterdaten+Zeit)&lt;br /&gt;
* Nach Änderung der Zeit in den Eingangsdaten des Decoderchips verweigerte dieser eine sinnvolle Ausgabe&lt;br /&gt;
* Die Zeit als Schlüssel(teil) wäre günstig, da sie von sich aus einmalig ist und nie zweimal mal auftreten wird.&lt;br /&gt;
* Die Entschlüsselung findet sofort statt, nachdem der Controller die Datensätze erhalten hat, daher ist es auszuschließen dass der Schlüssel aus vielen verschiedenen Datensätzen errechnet wird&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten für Schlüssel:&lt;br /&gt;
* Schlüsseltabelle innerhalb des Controllers&lt;br /&gt;
* statischer Schlüssel&lt;br /&gt;
&lt;br /&gt;
= Datenmitschnitt =&lt;br /&gt;
&lt;br /&gt;
Es gibt Datenmitschnitte im Forum:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/61886#606497&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und weitere Wetterdatenmitschnitte sind unter &amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.dcf77logs.de/&amp;lt;br /&amp;gt;&lt;br /&gt;
zu finden, diese Daten werden live dekodiert.&lt;br /&gt;
&lt;br /&gt;
= Patente =&lt;br /&gt;
&lt;br /&gt;
Passendende Patente:&lt;br /&gt;
&lt;br /&gt;
DE 20 2006 017 739 U1&lt;br /&gt;
&amp;quot;Einrichtung zum Empfang verschlüsselter Informationen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Schlüssel wird nicht übertragen, sondern aus der Uhrzeit abgeleitet&lt;br /&gt;
-Beispiel: AES Verschlüsselung&lt;br /&gt;
-Daten und Schlüssel können bis zur Blocklänge aufgefüllt werden&lt;br /&gt;
-beliebige Operationen können auf die Zeitdaten angewendet werden, um&lt;br /&gt;
den Schlüssel zu erzeugen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DE 20 2005 019 853.6 / EP 1798612&lt;br /&gt;
&amp;quot;Datenübertragungen in langsamen Übertragungssystemen, wie durch&lt;br /&gt;
Zeitzeichensender&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 22 Nutzbits + 20 Prüfbits = 42 bits&lt;br /&gt;
* Übertragung in 3 Minuten&lt;br /&gt;
* Minute n  :  14 Nutzbits&lt;br /&gt;
* Minute n+1:  8 Nutzbits + 6 Prüfbits&lt;br /&gt;
* Minute n+2:  14 Prüfbits&lt;br /&gt;
&lt;br /&gt;
Die genauere Nutzung der 22 Nutzbits zu den verschiedenen Tageszeiten&lt;br /&gt;
ist auch beschrieben.&lt;br /&gt;
&lt;br /&gt;
http://www.epo.org/patents/patent-information/european-patent-documents/publication-server.html?iAction=3&amp;amp;cc=EP&amp;amp;pn=1798612&amp;amp;ki=A2&lt;br /&gt;
&lt;br /&gt;
= Weitere Links =&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56687</id>
		<title>DCF77 Wetterinformationen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56687"/>
		<updated>2011-04-19T20:52:27Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Verschlüsselung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Info=&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/DCF77&lt;br /&gt;
&lt;br /&gt;
Seit Ende 2006 werden über den Zeitzeichensender DCF77 in den 14 bislang ungenutzten Bits Wetterdaten übertragen.&lt;br /&gt;
Ursprünglich war dies als öffentliches Warnsystem angedacht, aber ist jetzt &#039;verkommerzialisiert&#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.ptb.de/de/aktuelles/archiv/presseinfos/pi2006/pitext/pi061212.htm&lt;br /&gt;
&lt;br /&gt;
Umsetzung von meteotime.de&lt;br /&gt;
in Kooperation mit dem Chip-Hersteller? -Händler hkw http://www.hkw-elektronik.de/deutsch/&lt;br /&gt;
&lt;br /&gt;
=Produkte=&lt;br /&gt;
&lt;br /&gt;
Hersteller von Uhren:&lt;br /&gt;
&lt;br /&gt;
http://www.irox.ch&lt;br /&gt;
&lt;br /&gt;
Das günstigste erhältliche Produkt kostet €40, 68-761-48 (WFC 300):&lt;br /&gt;
* http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=1&amp;amp;detail2=440&lt;br /&gt;
&lt;br /&gt;
= Übertragene Daten =&lt;br /&gt;
&lt;br /&gt;
* DCF Protokoll ist hinreichend bekannt.&lt;br /&gt;
* Es gibt 14 Datenbits, in 3 Minuten wird ein Datensatz übertragen (= 42 bit)&lt;br /&gt;
* 90 Regionen, 4 mal täglich Informationen, jeweils 3 Minuten: ergibt 1080 Sendeminuten pro Tag (1440 Minuten). Rest 360 (5040 bit).&lt;br /&gt;
4 mal täglich werden Infos zu einer Zone gesendet:&lt;br /&gt;
 * 22:00 - 03:59    Aktueller / kommender Tag (TODAY im Display)&lt;br /&gt;
 * 04:00 - 09:59    Folgender Tag (DAY 1 im Display)&lt;br /&gt;
 * 10:00 - 15:59    Darauffolgender Tag (DAY 2 im Display)&lt;br /&gt;
 * 16:00 - 18:59    Darauffolgender Tag (DAY 3 im Display)&lt;br /&gt;
 * 19:00 - 21:59    30 Zusatzregionen mit 2-Tages-Prognose&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Die Daten sind verschlüsselt&lt;br /&gt;
* Die entschlüsselten Daten können dekodiert werden&lt;br /&gt;
&lt;br /&gt;
http://www.hkw-elektronik.de/pdf/DB%20W-Protokoll-V%201.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Verschlüsselung =&lt;br /&gt;
&lt;br /&gt;
Nach aktuellem Erkenntnisstand wird angenommen, dass die Daten über ein rückgekoppeltes Schiebregister verschlüsselt und entschlüsselt werden.&lt;br /&gt;
Details:&lt;br /&gt;
&lt;br /&gt;
* Die aktuelle Uhrzeit+Datum wird als Schlüssel(teil) verwendet.&lt;br /&gt;
* Es wird Fehlerkorrektur angewandt, die Korrektur von 1-bit-Fehlern ist möglich&lt;br /&gt;
* Die 1 und 0 in den Daten sind nicht gleichverteilt: &lt;br /&gt;
[[Bild:DCF77_Wetter_OnesHistogramm.png|800px]]&lt;br /&gt;
&lt;br /&gt;
In den ersten 14 Bits scheinen größere regelmäßigkeiten vorhanden zu sein. Grund unbekannt. Möglich ist eine Schwäche im Algorithmus.&lt;br /&gt;
* Es ist gelungen den Flash eines Decoderchips zu 64 Byte auszulesen. Enthalten war ein 80-Bit (oder mehr?) Schiebregister. Es hat nach aktuellen Stand ca. 14 Abgriffe die in ein 2. Register einfliesen, das erneut mehrmals geschoben und mit sich selbst ge-XOR-t wird. Aus diesem Register kommt 1 Bit zurück ins Schieberegister. Einige Codestellen sind verwirrend/unklar, es ist also nicht sicher, ob es sich nicht doch nur um einen Honeypot handelt. (Der Assemblercode ist im Forum zu finden)&lt;br /&gt;
* Während einer mehrere Stunden anhaltenden Störung wurden hunderte Datensätze gesendet, die entschlüsselt 000... ergeben haben. Hierbei sind in den verschlüsselten Daten Unregelmäßigkeiten aufgefallen:&lt;br /&gt;
http://www.mikrocontroller.net/attachment/107066/enc1.PNG&lt;br /&gt;
Es finden sich teile von Paketen auch in anderen Paketen wieder. Zufall oder Schwäche?&lt;br /&gt;
&lt;br /&gt;
= Dekoder IC = &lt;br /&gt;
&lt;br /&gt;
Der Dekoder ist ein PIC 12F509&lt;br /&gt;
 * keinen Daten EEPROM nur 1K Programm mit 41 Byte RAM&lt;br /&gt;
&lt;br /&gt;
Pinbelegung Mebus Wetterstation mit Meteotime Empfang von&lt;br /&gt;
Real:&lt;br /&gt;
* http://www.mikrocontroller.net/topic/61886#650725&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Berechnung eines Wetterdatensatzes (Aufzeichnung über 3 Minuten) dauert ca. 250ms. Nach dieser (evtl. auch vor dieser?) Berechnung befindet sich eine Wartepause des ICs von ca. 45 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Was als Schlüssel dient ist noch unklar, es kann aber davon ausgegangen werden, dass die aktuelle Zeit mit in den Schlüssel einfließt. Dafür sprechen vor allem folgende Punkte:&lt;br /&gt;
* Der Decorderchip erhält nicht nur die Wetterdaten, sondern die gesamten Übertragenen DCF77 Daten (Wetterdaten+Zeit)&lt;br /&gt;
* Nach Änderung der Zeit in den Eingangsdaten des Decoderchips verweigerte dieser eine sinnvolle Ausgabe&lt;br /&gt;
* Die Zeit als Schlüssel(teil) wäre günstig, da sie von sich aus einmalig ist und nie zweimal mal auftreten wird.&lt;br /&gt;
* Die Entschlüsselung findet sofort statt, nachdem der Controller die Datensätze erhalten hat, daher ist es auszuschließen dass der Schlüssel aus vielen verschiedenen Datensätzen errechnet wird&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten für Schlüssel:&lt;br /&gt;
* Schlüsseltabelle innerhalb des Controllers&lt;br /&gt;
* statischer Schlüssel&lt;br /&gt;
&lt;br /&gt;
= Datenmitschnitt =&lt;br /&gt;
&lt;br /&gt;
Es gibt Datenmitschnitte im Forum:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/61886#606497&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und weitere Wetterdatenmitschnitte sind unter &amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.dcf77logs.de/&amp;lt;br /&amp;gt;&lt;br /&gt;
zu finden, diese Daten werden live dekodiert.&lt;br /&gt;
&lt;br /&gt;
= Patente =&lt;br /&gt;
&lt;br /&gt;
Passendende Patente:&lt;br /&gt;
&lt;br /&gt;
DE 20 2006 017 739 U1&lt;br /&gt;
&amp;quot;Einrichtung zum Empfang verschlüsselter Informationen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Schlüssel wird nicht übertragen, sondern aus der Uhrzeit abgeleitet&lt;br /&gt;
-Beispiel: AES Verschlüsselung&lt;br /&gt;
-Daten und Schlüssel können bis zur Blocklänge aufgefüllt werden&lt;br /&gt;
-beliebige Operationen können auf die Zeitdaten angewendet werden, um&lt;br /&gt;
den Schlüssel zu erzeugen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DE 20 2005 019 853.6 / EP 1798612&lt;br /&gt;
&amp;quot;Datenübertragungen in langsamen Übertragungssystemen, wie durch&lt;br /&gt;
Zeitzeichensender&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 22 Nutzbits + 20 Prüfbits = 42 bits&lt;br /&gt;
* Übertragung in 3 Minuten&lt;br /&gt;
* Minute n  :  14 Nutzbits&lt;br /&gt;
* Minute n+1:  8 Nutzbits + 6 Prüfbits&lt;br /&gt;
* Minute n+2:  14 Prüfbits&lt;br /&gt;
&lt;br /&gt;
Die genauere Nutzung der 22 Nutzbits zu den verschiedenen Tageszeiten&lt;br /&gt;
ist auch beschrieben.&lt;br /&gt;
&lt;br /&gt;
http://www.epo.org/patents/patent-information/european-patent-documents/publication-server.html?iAction=3&amp;amp;cc=EP&amp;amp;pn=1798612&amp;amp;ki=A2&lt;br /&gt;
&lt;br /&gt;
= Weitere Links =&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Datei:DCF77_Wetter_OnesHistogramm.png&amp;diff=56686</id>
		<title>Datei:DCF77 Wetter OnesHistogramm.png</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Datei:DCF77_Wetter_OnesHistogramm.png&amp;diff=56686"/>
		<updated>2011-04-19T20:51:39Z</updated>

		<summary type="html">&lt;p&gt;Mockup: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56685</id>
		<title>DCF77 Wetterinformationen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56685"/>
		<updated>2011-04-19T20:51:30Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Verschlüsselung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Info=&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/DCF77&lt;br /&gt;
&lt;br /&gt;
Seit Ende 2006 werden über den Zeitzeichensender DCF77 in den 14 bislang ungenutzten Bits Wetterdaten übertragen.&lt;br /&gt;
Ursprünglich war dies als öffentliches Warnsystem angedacht, aber ist jetzt &#039;verkommerzialisiert&#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.ptb.de/de/aktuelles/archiv/presseinfos/pi2006/pitext/pi061212.htm&lt;br /&gt;
&lt;br /&gt;
Umsetzung von meteotime.de&lt;br /&gt;
in Kooperation mit dem Chip-Hersteller? -Händler hkw http://www.hkw-elektronik.de/deutsch/&lt;br /&gt;
&lt;br /&gt;
=Produkte=&lt;br /&gt;
&lt;br /&gt;
Hersteller von Uhren:&lt;br /&gt;
&lt;br /&gt;
http://www.irox.ch&lt;br /&gt;
&lt;br /&gt;
Das günstigste erhältliche Produkt kostet €40, 68-761-48 (WFC 300):&lt;br /&gt;
* http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=1&amp;amp;detail2=440&lt;br /&gt;
&lt;br /&gt;
= Übertragene Daten =&lt;br /&gt;
&lt;br /&gt;
* DCF Protokoll ist hinreichend bekannt.&lt;br /&gt;
* Es gibt 14 Datenbits, in 3 Minuten wird ein Datensatz übertragen (= 42 bit)&lt;br /&gt;
* 90 Regionen, 4 mal täglich Informationen, jeweils 3 Minuten: ergibt 1080 Sendeminuten pro Tag (1440 Minuten). Rest 360 (5040 bit).&lt;br /&gt;
4 mal täglich werden Infos zu einer Zone gesendet:&lt;br /&gt;
 * 22:00 - 03:59    Aktueller / kommender Tag (TODAY im Display)&lt;br /&gt;
 * 04:00 - 09:59    Folgender Tag (DAY 1 im Display)&lt;br /&gt;
 * 10:00 - 15:59    Darauffolgender Tag (DAY 2 im Display)&lt;br /&gt;
 * 16:00 - 18:59    Darauffolgender Tag (DAY 3 im Display)&lt;br /&gt;
 * 19:00 - 21:59    30 Zusatzregionen mit 2-Tages-Prognose&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Die Daten sind verschlüsselt&lt;br /&gt;
* Die entschlüsselten Daten können dekodiert werden&lt;br /&gt;
&lt;br /&gt;
http://www.hkw-elektronik.de/pdf/DB%20W-Protokoll-V%201.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Verschlüsselung =&lt;br /&gt;
&lt;br /&gt;
Nach aktuellem Erkenntnisstand wird angenommen, dass die Daten über ein rückgekoppeltes Schiebregister verschlüsselt und entschlüsselt werden.&lt;br /&gt;
Details:&lt;br /&gt;
&lt;br /&gt;
* Die aktuelle Uhrzeit+Datum wird als Schlüssel(teil) verwendet.&lt;br /&gt;
* Es wird Fehlerkorrektur angewandt, die Korrektur von 1-bit-Fehlern ist möglich&lt;br /&gt;
* Die 1 und 0 in den Daten sind nicht gleichverteilt: &lt;br /&gt;
[[Bild:DCF77_Wetter_OnesHistogramm.png|700px]]&lt;br /&gt;
&lt;br /&gt;
In den ersten 14 Bits scheinen größere regelmäßigkeiten vorhanden zu sein. Grund unbekannt. Möglich ist eine Schwäche im Algorithmus.&lt;br /&gt;
* Es ist gelungen den Flash eines Decoderchips zu 64 Byte auszulesen. Enthalten war ein 80-Bit (oder mehr?) Schiebregister. Es hat nach aktuellen Stand ca. 14 Abgriffe die in ein 2. Register einfliesen, das erneut mehrmals geschoben und mit sich selbst ge-XOR-t wird. Aus diesem Register kommt 1 Bit zurück ins Schieberegister. Einige Codestellen sind verwirrend/unklar, es ist also nicht sicher, ob es sich nicht doch nur um einen Honeypot handelt. (Der Assemblercode ist im Forum zu finden)&lt;br /&gt;
* Während einer mehrere Stunden anhaltenden Störung wurden hunderte Datensätze gesendet, die entschlüsselt 000... ergeben haben. Hierbei sind in den verschlüsselten Daten Unregelmäßigkeiten aufgefallen:&lt;br /&gt;
http://www.mikrocontroller.net/attachment/107066/enc1.PNG&lt;br /&gt;
Es finden sich teile von Paketen auch in anderen Paketen wieder. Zufall oder Schwäche?&lt;br /&gt;
&lt;br /&gt;
= Dekoder IC = &lt;br /&gt;
&lt;br /&gt;
Der Dekoder ist ein PIC 12F509&lt;br /&gt;
 * keinen Daten EEPROM nur 1K Programm mit 41 Byte RAM&lt;br /&gt;
&lt;br /&gt;
Pinbelegung Mebus Wetterstation mit Meteotime Empfang von&lt;br /&gt;
Real:&lt;br /&gt;
* http://www.mikrocontroller.net/topic/61886#650725&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Berechnung eines Wetterdatensatzes (Aufzeichnung über 3 Minuten) dauert ca. 250ms. Nach dieser (evtl. auch vor dieser?) Berechnung befindet sich eine Wartepause des ICs von ca. 45 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Was als Schlüssel dient ist noch unklar, es kann aber davon ausgegangen werden, dass die aktuelle Zeit mit in den Schlüssel einfließt. Dafür sprechen vor allem folgende Punkte:&lt;br /&gt;
* Der Decorderchip erhält nicht nur die Wetterdaten, sondern die gesamten Übertragenen DCF77 Daten (Wetterdaten+Zeit)&lt;br /&gt;
* Nach Änderung der Zeit in den Eingangsdaten des Decoderchips verweigerte dieser eine sinnvolle Ausgabe&lt;br /&gt;
* Die Zeit als Schlüssel(teil) wäre günstig, da sie von sich aus einmalig ist und nie zweimal mal auftreten wird.&lt;br /&gt;
* Die Entschlüsselung findet sofort statt, nachdem der Controller die Datensätze erhalten hat, daher ist es auszuschließen dass der Schlüssel aus vielen verschiedenen Datensätzen errechnet wird&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten für Schlüssel:&lt;br /&gt;
* Schlüsseltabelle innerhalb des Controllers&lt;br /&gt;
* statischer Schlüssel&lt;br /&gt;
&lt;br /&gt;
= Datenmitschnitt =&lt;br /&gt;
&lt;br /&gt;
Es gibt Datenmitschnitte im Forum:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/61886#606497&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und weitere Wetterdatenmitschnitte sind unter &amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.dcf77logs.de/&amp;lt;br /&amp;gt;&lt;br /&gt;
zu finden, diese Daten werden live dekodiert.&lt;br /&gt;
&lt;br /&gt;
= Patente =&lt;br /&gt;
&lt;br /&gt;
Passendende Patente:&lt;br /&gt;
&lt;br /&gt;
DE 20 2006 017 739 U1&lt;br /&gt;
&amp;quot;Einrichtung zum Empfang verschlüsselter Informationen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Schlüssel wird nicht übertragen, sondern aus der Uhrzeit abgeleitet&lt;br /&gt;
-Beispiel: AES Verschlüsselung&lt;br /&gt;
-Daten und Schlüssel können bis zur Blocklänge aufgefüllt werden&lt;br /&gt;
-beliebige Operationen können auf die Zeitdaten angewendet werden, um&lt;br /&gt;
den Schlüssel zu erzeugen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DE 20 2005 019 853.6 / EP 1798612&lt;br /&gt;
&amp;quot;Datenübertragungen in langsamen Übertragungssystemen, wie durch&lt;br /&gt;
Zeitzeichensender&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 22 Nutzbits + 20 Prüfbits = 42 bits&lt;br /&gt;
* Übertragung in 3 Minuten&lt;br /&gt;
* Minute n  :  14 Nutzbits&lt;br /&gt;
* Minute n+1:  8 Nutzbits + 6 Prüfbits&lt;br /&gt;
* Minute n+2:  14 Prüfbits&lt;br /&gt;
&lt;br /&gt;
Die genauere Nutzung der 22 Nutzbits zu den verschiedenen Tageszeiten&lt;br /&gt;
ist auch beschrieben.&lt;br /&gt;
&lt;br /&gt;
http://www.epo.org/patents/patent-information/european-patent-documents/publication-server.html?iAction=3&amp;amp;cc=EP&amp;amp;pn=1798612&amp;amp;ki=A2&lt;br /&gt;
&lt;br /&gt;
= Weitere Links =&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56684</id>
		<title>DCF77 Wetterinformationen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=DCF77_Wetterinformationen&amp;diff=56684"/>
		<updated>2011-04-19T20:51:17Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Verschlüsselung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Info=&lt;br /&gt;
&lt;br /&gt;
http://de.wikipedia.org/wiki/DCF77&lt;br /&gt;
&lt;br /&gt;
Seit Ende 2006 werden über den Zeitzeichensender DCF77 in den 14 bislang ungenutzten Bits Wetterdaten übertragen.&lt;br /&gt;
Ursprünglich war dies als öffentliches Warnsystem angedacht, aber ist jetzt &#039;verkommerzialisiert&#039;.&lt;br /&gt;
&lt;br /&gt;
http://www.ptb.de/de/aktuelles/archiv/presseinfos/pi2006/pitext/pi061212.htm&lt;br /&gt;
&lt;br /&gt;
Umsetzung von meteotime.de&lt;br /&gt;
in Kooperation mit dem Chip-Hersteller? -Händler hkw http://www.hkw-elektronik.de/deutsch/&lt;br /&gt;
&lt;br /&gt;
=Produkte=&lt;br /&gt;
&lt;br /&gt;
Hersteller von Uhren:&lt;br /&gt;
&lt;br /&gt;
http://www.irox.ch&lt;br /&gt;
&lt;br /&gt;
Das günstigste erhältliche Produkt kostet €40, 68-761-48 (WFC 300):&lt;br /&gt;
* http://www.elv.de/output/controller.aspx?cid=74&amp;amp;detail=1&amp;amp;detail2=440&lt;br /&gt;
&lt;br /&gt;
= Übertragene Daten =&lt;br /&gt;
&lt;br /&gt;
* DCF Protokoll ist hinreichend bekannt.&lt;br /&gt;
* Es gibt 14 Datenbits, in 3 Minuten wird ein Datensatz übertragen (= 42 bit)&lt;br /&gt;
* 90 Regionen, 4 mal täglich Informationen, jeweils 3 Minuten: ergibt 1080 Sendeminuten pro Tag (1440 Minuten). Rest 360 (5040 bit).&lt;br /&gt;
4 mal täglich werden Infos zu einer Zone gesendet:&lt;br /&gt;
 * 22:00 - 03:59    Aktueller / kommender Tag (TODAY im Display)&lt;br /&gt;
 * 04:00 - 09:59    Folgender Tag (DAY 1 im Display)&lt;br /&gt;
 * 10:00 - 15:59    Darauffolgender Tag (DAY 2 im Display)&lt;br /&gt;
 * 16:00 - 18:59    Darauffolgender Tag (DAY 3 im Display)&lt;br /&gt;
 * 19:00 - 21:59    30 Zusatzregionen mit 2-Tages-Prognose&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Die Daten sind verschlüsselt&lt;br /&gt;
* Die entschlüsselten Daten können dekodiert werden&lt;br /&gt;
&lt;br /&gt;
http://www.hkw-elektronik.de/pdf/DB%20W-Protokoll-V%201.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Verschlüsselung =&lt;br /&gt;
&lt;br /&gt;
Nach aktuellem Erkenntnisstand wird angenommen, dass die Daten über ein rückgekoppeltes Schiebregister verschlüsselt und entschlüsselt werden.&lt;br /&gt;
Details:&lt;br /&gt;
&lt;br /&gt;
* Die aktuelle Uhrzeit+Datum wird als Schlüssel(teil) verwendet.&lt;br /&gt;
* Es wird Fehlerkorrektur angewandt, die Korrektur von 1-bit-Fehlern ist möglich&lt;br /&gt;
* Die 1 und 0 in den Daten sind nicht gleichverteilt: &lt;br /&gt;
[[Bild:DCF77_Wetter_OnesHistogramm|700px]]&lt;br /&gt;
&lt;br /&gt;
In den ersten 14 Bits scheinen größere regelmäßigkeiten vorhanden zu sein. Grund unbekannt. Möglich ist eine Schwäche im Algorithmus.&lt;br /&gt;
* Es ist gelungen den Flash eines Decoderchips zu 64 Byte auszulesen. Enthalten war ein 80-Bit (oder mehr?) Schiebregister. Es hat nach aktuellen Stand ca. 14 Abgriffe die in ein 2. Register einfliesen, das erneut mehrmals geschoben und mit sich selbst ge-XOR-t wird. Aus diesem Register kommt 1 Bit zurück ins Schieberegister. Einige Codestellen sind verwirrend/unklar, es ist also nicht sicher, ob es sich nicht doch nur um einen Honeypot handelt. (Der Assemblercode ist im Forum zu finden)&lt;br /&gt;
* Während einer mehrere Stunden anhaltenden Störung wurden hunderte Datensätze gesendet, die entschlüsselt 000... ergeben haben. Hierbei sind in den verschlüsselten Daten Unregelmäßigkeiten aufgefallen:&lt;br /&gt;
http://www.mikrocontroller.net/attachment/107066/enc1.PNG&lt;br /&gt;
Es finden sich teile von Paketen auch in anderen Paketen wieder. Zufall oder Schwäche?&lt;br /&gt;
&lt;br /&gt;
= Dekoder IC = &lt;br /&gt;
&lt;br /&gt;
Der Dekoder ist ein PIC 12F509&lt;br /&gt;
 * keinen Daten EEPROM nur 1K Programm mit 41 Byte RAM&lt;br /&gt;
&lt;br /&gt;
Pinbelegung Mebus Wetterstation mit Meteotime Empfang von&lt;br /&gt;
Real:&lt;br /&gt;
* http://www.mikrocontroller.net/topic/61886#650725&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Berechnung eines Wetterdatensatzes (Aufzeichnung über 3 Minuten) dauert ca. 250ms. Nach dieser (evtl. auch vor dieser?) Berechnung befindet sich eine Wartepause des ICs von ca. 45 Sekunden.&lt;br /&gt;
&lt;br /&gt;
Was als Schlüssel dient ist noch unklar, es kann aber davon ausgegangen werden, dass die aktuelle Zeit mit in den Schlüssel einfließt. Dafür sprechen vor allem folgende Punkte:&lt;br /&gt;
* Der Decorderchip erhält nicht nur die Wetterdaten, sondern die gesamten Übertragenen DCF77 Daten (Wetterdaten+Zeit)&lt;br /&gt;
* Nach Änderung der Zeit in den Eingangsdaten des Decoderchips verweigerte dieser eine sinnvolle Ausgabe&lt;br /&gt;
* Die Zeit als Schlüssel(teil) wäre günstig, da sie von sich aus einmalig ist und nie zweimal mal auftreten wird.&lt;br /&gt;
* Die Entschlüsselung findet sofort statt, nachdem der Controller die Datensätze erhalten hat, daher ist es auszuschließen dass der Schlüssel aus vielen verschiedenen Datensätzen errechnet wird&lt;br /&gt;
&lt;br /&gt;
Weitere Möglichkeiten für Schlüssel:&lt;br /&gt;
* Schlüsseltabelle innerhalb des Controllers&lt;br /&gt;
* statischer Schlüssel&lt;br /&gt;
&lt;br /&gt;
= Datenmitschnitt =&lt;br /&gt;
&lt;br /&gt;
Es gibt Datenmitschnitte im Forum:&amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/topic/61886#606497&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und weitere Wetterdatenmitschnitte sind unter &amp;lt;br /&amp;gt;&lt;br /&gt;
http://www.dcf77logs.de/&amp;lt;br /&amp;gt;&lt;br /&gt;
zu finden, diese Daten werden live dekodiert.&lt;br /&gt;
&lt;br /&gt;
= Patente =&lt;br /&gt;
&lt;br /&gt;
Passendende Patente:&lt;br /&gt;
&lt;br /&gt;
DE 20 2006 017 739 U1&lt;br /&gt;
&amp;quot;Einrichtung zum Empfang verschlüsselter Informationen&amp;quot;&lt;br /&gt;
&lt;br /&gt;
-Schlüssel wird nicht übertragen, sondern aus der Uhrzeit abgeleitet&lt;br /&gt;
-Beispiel: AES Verschlüsselung&lt;br /&gt;
-Daten und Schlüssel können bis zur Blocklänge aufgefüllt werden&lt;br /&gt;
-beliebige Operationen können auf die Zeitdaten angewendet werden, um&lt;br /&gt;
den Schlüssel zu erzeugen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DE 20 2005 019 853.6 / EP 1798612&lt;br /&gt;
&amp;quot;Datenübertragungen in langsamen Übertragungssystemen, wie durch&lt;br /&gt;
Zeitzeichensender&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* 22 Nutzbits + 20 Prüfbits = 42 bits&lt;br /&gt;
* Übertragung in 3 Minuten&lt;br /&gt;
* Minute n  :  14 Nutzbits&lt;br /&gt;
* Minute n+1:  8 Nutzbits + 6 Prüfbits&lt;br /&gt;
* Minute n+2:  14 Prüfbits&lt;br /&gt;
&lt;br /&gt;
Die genauere Nutzung der 22 Nutzbits zu den verschiedenen Tageszeiten&lt;br /&gt;
ist auch beschrieben.&lt;br /&gt;
&lt;br /&gt;
http://www.epo.org/patents/patent-information/european-patent-documents/publication-server.html?iAction=3&amp;amp;cc=EP&amp;amp;pn=1798612&amp;amp;ki=A2&lt;br /&gt;
&lt;br /&gt;
= Weitere Links =&lt;br /&gt;
&lt;br /&gt;
http://www.wetterstationen.info/mete-on-1.php&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:DCF77]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=56258</id>
		<title>Minila Version MockUp</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Minila_Version_MockUp&amp;diff=56258"/>
		<updated>2011-04-03T20:59:34Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* LibUSB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== &amp;lt;u&amp;gt;Bilder der Platine&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gerenderte Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTop.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottom.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Platine der Sammelbestellung bestückt&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Bild:MockUpMiniLALayoutTopPrototyp.jpg|400px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutBottomPrototyp.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Informationen über den MiniLA&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;CPLD&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* wird der XC95288XL bleiben, da dies nur eine Veränderung und keine Neuentwicklung wird&lt;br /&gt;
* einige Signale werden an anderen Pins angeschlossen und verteilt&lt;br /&gt;
* TQFP144&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;RAM-Speicher&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&amp;lt;u&amp;gt;512K*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 512K*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* GS816036 &lt;br /&gt;
* [http://de.farnell.com/gsi-technology/gs816032bgt-200/18m-synch-burst-sram-512kx32-smd/dp/1447526 Optional GS816032]&lt;br /&gt;
* [http://www.cypress.com/?mpn=CY7C1381D-133AXC  Optional CY7C1381D-133AX]&lt;br /&gt;
* wird in der Sammelbestellung verwendet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;1M*32:&amp;lt;/u&amp;gt;&lt;br /&gt;
* 1M*32 Kanäle&lt;br /&gt;
* TQFP100 0,65mm Pinabstand&lt;br /&gt;
* CY7C1441AV33-133AXC/CY7C1441AV33-133AXI&lt;br /&gt;
* 60eur/stk&lt;br /&gt;
* dazu muss eine Brücke zwischen TP1 am CPLD und TP2 am SRAM eingelötet werden&lt;br /&gt;
[[Bild:MockUpMiniLALayout1MBitRAM.png|200px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;USB&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Der FTDI FT2232D wird immer im Bus Powerd Modus betrieben und über USB versorgt.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Spannungsversorgung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* 3,3V, Versorgung über externe 5V bis 16V oder über den DCDC USB powered (Regler wird über den FTDI An/Aus geschaltet)&lt;br /&gt;
* 5V über DCDC (galvanisch getrennt) mit Spannungsregler dahinter oder DCDC überbrückt direkt über USB&lt;br /&gt;
&lt;br /&gt;
Dadurch kann der MiniLA mit einem Y-Kabel USB versorgt werden oder über ein externes Netzteil.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Galvanische Trennung&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Als Zusatzoption über den ADUM4160, einem DCDC-Wandler und einem zusätzlichem Spannungsregler.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* Steckerbelegung bleibt beim alten&lt;br /&gt;
* X1-7 wird entfernt, da eh wenig Platz im CPLD ist&lt;br /&gt;
* X8 bleibt erhalten&lt;br /&gt;
* K8 wird dann auch komplett entfernt, da nicht mehr benötigt (alle Signale sind auch an K1 verfügbar)&lt;br /&gt;
* Serienwiderstände in den Datenleitungen wie gehabt&lt;br /&gt;
* Tastköpfe extern wie gehabt (siehe auch: Platinen)&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;JTAG&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* JTAG-Signale liegen an einem MicroMatch Steckverbinder an.&lt;br /&gt;
* Programmierung über FTDI und &amp;quot;xc3sprog&amp;quot; http://www.mikrocontroller.net/articles/MiniLA#via_USB&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Parallel Port&amp;lt;/u&amp;gt; ===&lt;br /&gt;
* nicht vorgesehen&lt;br /&gt;
* Signale liegen an einem MicroMatch Steckverbinder an&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;LEDs&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Je nach Wunsch in SMD 0805 oder als 5mm LED&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Gehäuse&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Passende Gehäusen:&lt;br /&gt;
* Hammond 1455L1602 (Mouser, RS, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 30 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* Fischer AKG 105 34 160 (RS, DK, Conrad usw.)&lt;br /&gt;
* RFS RF-1599 (rfsupplier.com)&lt;br /&gt;
&lt;br /&gt;
Auch 3,5&amp;quot; USB/eSATA Festplatten-Geh​äuse sind bestens geeignet.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Schaltplan und Layout&amp;lt;/u&amp;gt; ==&lt;br /&gt;
=== &amp;lt;u&amp;gt;Schaltplan&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039;Seite 1 &amp;amp; 2&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet1.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet2.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 3 &amp;amp; 4&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet3.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet4.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 5 &amp;amp; 6&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet5.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet6.png|350px]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Seite 7&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLASchaltplanSheet7.png|350px]]&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Layout&amp;lt;/u&amp;gt; ===&lt;br /&gt;
&#039;&#039;&#039; Platine Mini-LA &#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleTop.png.png|350px]]&lt;br /&gt;
[[Bild:MockUpMiniLALayoutEagleBottom.png|350px]]&lt;br /&gt;
* 2-lagig&lt;br /&gt;
* über den 5mm LEDs sind die SMD0805 LEDs angeordnet&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpV1_05a.zip]]&lt;br /&gt;
* [[Datei:MiniLAVersionMockUpTeileliste.zip]]&lt;br /&gt;
&#039;&#039;&#039; &amp;lt;u&amp;gt;Platine Tastköpfe&amp;lt;/u&amp;gt; &#039;&#039;&#039;&lt;br /&gt;
* Sind über Wigbert zu beziehen. Er hat noch Tastköpfe von der ersten Sammelbestellung.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Steckverbinder auf der Platine&amp;lt;/u&amp;gt; ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Steckverbinder&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || nicht gesteckt || gesteckt 1-2 || gesteckt 2-3&lt;br /&gt;
|-&lt;br /&gt;
| JP2  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP3  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP4  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP5  || - || Normal Modus || JTAG-Programmierung über FTDI&lt;br /&gt;
|-&lt;br /&gt;
| JP6  || - || - || -&lt;br /&gt;
|-&lt;br /&gt;
| JP7  || Platine &amp;quot;AUS&amp;quot; || Platine &amp;quot;AN&amp;quot; || -&lt;br /&gt;
|-&lt;br /&gt;
| JP9  || - || externe Versorgung || USB Versorgung&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 JP6 - Spannungsversorgung für einen Externen Programmieradapter (&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;nicht Brücken!&#039;&#039;&#039;&amp;lt;/span&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Erste Inbetriebnahme&amp;lt;/u&amp;gt; ==&lt;br /&gt;
* 1. Platine liegt unangeschlossen (ohne USB und externe Versorgung) vor euch&lt;br /&gt;
* 2. Jumper JP7 stecken (USB-Interface wird mit Strom versorgt)&lt;br /&gt;
* 3. Jumper JP9 nicht stecken (CPLD wird erstmal nicht mit Strom versorgt, der Sicherheit halber)&lt;br /&gt;
* 4. USB-Kabel anschließen, LED7 sollte AN und LED8 Aus sein, FTDI sollte sich am PC anmelden&lt;br /&gt;
* 4.1 Wenn er nicht erkannt wird, Spannung über C45 ~9V, Spannung über C46 5V, Alles um IC4, IC5 und IC6 prüfen&lt;br /&gt;
* 5. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#FTDI FTDI-Treiber installieren]&lt;br /&gt;
* 6. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#LibUSB LibUSB installieren]&lt;br /&gt;
* 7. MiniLA vom PC trennen&lt;br /&gt;
* 8. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP9 nach Wahl stecken] &lt;br /&gt;
* 9. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine JP2-JP5] auf 2-3 stecken (wenn der USB-Stecker links, dann sind das die unteren Kontakte&lt;br /&gt;
*10. [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Firmware schon mal alles vorbereiten, in den Ordner wechseln, alles eintippen]&lt;br /&gt;
*11. eventuell externe Versorgung und USB-Kabel anstecken, LED8 sollte nun auch leuchten&lt;br /&gt;
*12. Enter drücken, CPLD sollte programmiert werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis: Der Spannungsregler für die 3,3V wird erst eingeschaltet wenn die USB-Verbindung steht und Windows den FTDI erkannt hat. LED8 leuchtet dann auch.&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Programmierung&amp;lt;/u&amp;gt; ==&lt;br /&gt;
[[Image:MiniLAVersionMockUpFTPROG1.png|thumb|150px|right|Programmierung des FTDIs, Bild1]][[Image:MiniLAVersionMockUpFTPROG2.png|thumb|150px|right|Programmierung des FTDIs, Bild2]]&lt;br /&gt;
=== &amp;lt;u&amp;gt;FTDI&amp;lt;/u&amp;gt; ===&lt;br /&gt;
Zum Programmieren werden die [http://www.ftdichip.com/Drivers/D2XX.htm FTDI-Treiber für D2XX] und das Programm [http://www.ftdichip.com/Support/Utilities.htm FT_PROG] benötigt.&lt;br /&gt;
&lt;br /&gt;
*1. MiniLA über ein USB Kabel an den PC anschließen und die heruntergeladenen FTDI-Treiber Installieren&lt;br /&gt;
*2. Das Programm FT_PROG starten&lt;br /&gt;
*3. Im Programm auf &amp;quot;Scan and Parse&amp;quot; drücken (1)(Bild1)&lt;br /&gt;
*4. rechte Maustaste auf den erkannten FTDI, &amp;quot;Aply Template&amp;quot; und &amp;quot;From File&amp;quot; [http://www.mikrocontroller.net/attachment/95887/MiniLA.xml diese Datei] auswählen (2)(Bild1)&lt;br /&gt;
*5. Im Programm auf &amp;quot;Program Devices&amp;quot; drücken (3)(Bild1), ein neues Fenster öffnet sich (Bild2)&lt;br /&gt;
*6. Haken setzen (4)(Bild2)&lt;br /&gt;
*7. Auf &amp;quot;Program&amp;quot; drücken (5)(Bild2)&lt;br /&gt;
*8. MiniLA abstecken und wieder anklemmen&lt;br /&gt;
*9. Fertig&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;u&amp;gt;Firmware&amp;lt;/u&amp;gt; ===&lt;br /&gt;
[[Image:MiniLAVersionMockUpxc3prog.png|thumb|150px|right|Programmierung des CPLDs]]&lt;br /&gt;
Zum Programmieren wird [http://sourceforge.net/projects/xc3sprog/ xc3sprog] benötigt. [http://www.mikrocontroller.net/attachment/96598/xc3sprog.exe Hier eine angepasste Version (Mit der anderen gab es Probleme beim CPLD löschen).] &lt;br /&gt;
&lt;br /&gt;
*1. Auf dem MiniLA die Jumper JP2-JP5 in die Stellung [http://www.mikrocontroller.net/articles/Minila_Version_MockUp#Steckverbinder_auf_der_Platine 2-3] umstecken und den MiniLA anschließen. &lt;br /&gt;
*2. Kommandozeile öffnen&lt;br /&gt;
*3. In den Ordner wechseln, in der xc3prog und die jed-Datei liegt. (Die jed-Datei aus dem Archiv &amp;quot;Timeanalysis&amp;quot; bzw. &amp;quot;Stateanalysis&amp;quot; - siehe weiter unten - extrahieren. Sie ist im Ordner xilinx zu finden.)&lt;br /&gt;
*4. &amp;quot;xc3sprog -c ftdi -v miniLA.jed&amp;quot; eingeben und Enter drücken.&lt;br /&gt;
*5. Der FTDI sollte programmiert werden, ähnlich dem nebenstehendem Bild.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&amp;lt;u&amp;gt;Hilfreiche Befehle&amp;lt;/u&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -j&amp;quot; - Erkennung des CPLDs&lt;br /&gt;
* &amp;quot;xc3sprog -c ftdi -v -e&amp;quot; - Löschen des CPLDs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Die Firmware ist nur lauffähig mit der Version des MockUp MiniLAs und es sollte auch keine der originalen Firmwares verwendet werden, weil diese nicht kompatibel sind mit der neuen Hardware!!!&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/c/c0/MiniLAVersionMockUpFirmwareLEDTest.zip LED-Test] (Blinkfrequenz: ~6,0Hz, ~1,5Hz, ~0,4Hz)&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/f/f5/Fw_timeanalysis_v1.8_for_MockUp_miniLA.zip Timeanalysis v1.8]&lt;br /&gt;
* [http://www.mikrocontroller.net/wikifiles/2/27/Fw_stateanalysis_v2.3_for_MockUp_miniLA.zip Stateanalysis v2.3]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;LED-Bedeutungen&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! || LED1 || LED3 || LED5&lt;br /&gt;
|-&lt;br /&gt;
| nach dem Einschalten&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Idle&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || ||&lt;br /&gt;
|-&lt;br /&gt;
| Pre-Trigger&lt;br /&gt;
|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X || &lt;br /&gt;
|-&lt;br /&gt;
| Wait for Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || || &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|-&lt;br /&gt;
| Post-Trigger|| &lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X ||&lt;br /&gt;
|-&lt;br /&gt;
| Transfer zum PC&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
| style=&amp;quot;text-align:center&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== &amp;lt;u&amp;gt;Software&amp;lt;/u&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
Minila Windows EXE Vers 0.6.4 für 256k und 512K Sample Speicher gibts hier&lt;br /&gt;
http://www.mikrocontroller.net/attachment/97534/minila.zip &amp;lt;br&amp;gt;&lt;br /&gt;
[[Media: inpout32.dll | Programmbibliothek, welche für die Nutzung der Software benötigt wird]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/174860#new Hauptthread auf Mikrocontroller.net]&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/MiniLA Original]&lt;br /&gt;
* [http://minila.sourceforge.net/hw/other/bg/minila_bg_sch.pdf Schaltplan der alten Version]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Projekte]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=54927</id>
		<title>Mini2440</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Mini2440&amp;diff=54927"/>
		<updated>2011-02-09T23:43:32Z</updated>

		<summary type="html">&lt;p&gt;Mockup: /* Über sys-fs ansteuern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.friendlyarm.net/products/mini2440 Mini2440 von friendlyarm ]&lt;br /&gt;
&lt;br /&gt;
Das [[Mini2440]] ist ein [[ARM]]-Board mit [http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=229&amp;amp;partnum=S3C2440&amp;amp;ppmi=PartnoSearch s3c2440] &#039;&#039;&#039;S&#039;&#039;&#039;ystem &#039;&#039;&#039;o&#039;&#039;&#039;n &#039;&#039;&#039;C&#039;&#039;&#039;hip von Samsung.&lt;br /&gt;
&lt;br /&gt;
Das &#039;&#039;&#039;Board&#039;&#039;&#039; bietet:&lt;br /&gt;
* 3,5&amp;quot;, 7&amp;quot; Touchscreen-[[TFT]] oder [[VGA]] &amp;quot;Karte&amp;quot;&lt;br /&gt;
* ARM920T, 400Mhz standard Taktfrequenz, bis zu 533Mhz&lt;br /&gt;
* 64MB-1GB NAND Flash (User App/OS), 2MB NOR Flash (BIOS)&lt;br /&gt;
* 64MB RAM&lt;br /&gt;
* Audio (Stereo Out, 2xMono In)&lt;br /&gt;
* SD-Slot&lt;br /&gt;
* [[USB]] Host, USB Device&lt;br /&gt;
* 10/100MBit LAN (DM9000)&lt;br /&gt;
* 3 Serial Ports&lt;br /&gt;
* [[SPI]], [[PWM]], [[I2C]], ...&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440.jpg|300px]][[Bild:mini2440_35.jpg|300px]][[Bild:mini2440_7.jpg|300px]]&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
Als das passende Entwicklungswerkzeug ist ein Linux-Rechner mit passendem Cross-Compiler sowie ein paar Tools vorgesehen.&lt;br /&gt;
Was wirklich benötigt wird:&lt;br /&gt;
* Serial Terminal (picocom, minicom, cutecom, gtkterm, komport, ...)&lt;br /&gt;
* [http://www.mikrocontroller.net/articles/Mini2440#Toolchain Toolchain]&lt;br /&gt;
* s3c_boot_usb oder [http://git.programmers-projects.de/mini2440-dev.git/?p=mini2440-dev.git;a=tree;f=usb_upload_tool;hb=refs/heads/master mini2440_usb_upload] (aktueller) zum Hochladen von Bootloader, Kernel etc. über USB&lt;br /&gt;
&lt;br /&gt;
Empfehlenswert ausserdem noch:&lt;br /&gt;
* ncurses-dev-Dateien und dialog (Für Kernel-menuconfig)&lt;br /&gt;
* screen, midnight commander&lt;br /&gt;
* Editor mit root-Rechten (z.B. [http://home.in.tum.de/~lazarov/files/research/papers/vi_ausarbeitung.pdf vim])&lt;br /&gt;
&lt;br /&gt;
=== Vorbereitungen am/mit dem Board ===&lt;br /&gt;
&lt;br /&gt;
Ganz wichtig ist es, eine gute Spannungsversorgung zu verwenden. Es kam anscheinend schon öfter vor, dass kleine Spannungseinbrüche das Board aus dem Gleichgewicht bringen.&lt;br /&gt;
Ich verwende normalerweise das mitgelieferte Netzteil oder ein &#039;&#039;&#039;5V&#039;&#039;&#039;/&#039;&#039;&#039;2A&#039;&#039;&#039; Schaltnetzteil, funktionieren beide einwandfrei.&lt;br /&gt;
Gerade das grosse, 7&amp;quot;, Display braucht ein starkes Netzteil.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;ungefährer Stromverbrauch&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Board konfig. || Stromverbrauch&lt;br /&gt;
|-&lt;br /&gt;
| mini2440  || 140mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 3,5&amp;quot; TFT || 410mA (T35 Display)&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + 7&amp;quot; TFT || 1000mA&lt;br /&gt;
|-&lt;br /&gt;
| mini2440 + VGA Board || mA&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Verbindung zum PC ====&lt;br /&gt;
&lt;br /&gt;
Um vernünftig arbeiten zu können, braucht es auf jeden Fall ein USB A&amp;lt;-&amp;gt;USB B-Kabel, sowie ein 1:1 verbundes 9 poliges SUB-D Kabel mit zwei Buchsen.&lt;br /&gt;
Jenachdem, auf welchem Gerät (PC, Laptop, andere Embedded-Plattform, ...) entwickelt wird, braucht man noch einen USB-RS232 Adapter.&lt;br /&gt;
Einen Zugriff auf die Konsole hat man - nach Anpassung der IP - über Telnet sowie über die serielle Konsole.&lt;br /&gt;
Die serielle Konsole ist in der Standardkonfiguration aktiviert und sollte auch während des Entwickelns immer aktiv sein - so verhindert man ein ungewolltes Ausperren.&lt;br /&gt;
&lt;br /&gt;
==== Netzwerk ====&lt;br /&gt;
Entweder klickt man sich quer durch die chinesische/japanische Software und stellt diese auf Englisch um, oder aber man klickt sich blind zu der Stelle, an der man IP Adresse, Gateway und Netzmaske angeben kann.&lt;br /&gt;
&lt;br /&gt;
Etwa genauso einfach sieht es über die Konsole aus.&amp;lt;br&amp;gt;&lt;br /&gt;
Die folgenden drei Zeilen, dürften das soweit bewekstelligen, dass das Netzwerk-Device die IP-Adresse &#039;&#039;&#039;192.168.0.55&#039;&#039;&#039;, die Netzmaske &#039;&#039;&#039;255.255.255.0&#039;&#039;&#039; zugeteilt bekommt. Die beiden anderen Anweisungen sagen dem System, welches Netzwerkgerät der Router ist. In diesem Fall &#039;&#039;&#039;192.168.0.1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Es ist darauf zu achten, was bisher vielleicht schon in der &#039;&#039;/etc/resolv.conf&#039;&#039; steht. Das lässt sich einfach mit &#039;&#039;cat /etc/resolv.conf&#039;&#039; ansehen. Wenn diese bereits den richtigen Inhalt hat, kann man die &#039;&#039;echo &amp;quot;nam...&#039;&#039;-Anweisung weglassen.&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn die resolv.conf nicht existiert oder einen falschen Wert enthält, &#039;&#039;&#039;überschreibt&#039;&#039;&#039; man diese, in dem man nur &#039;&#039;&#039;ein&#039;&#039;&#039; &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; nach das echo setzt. Stehen dort zwei &amp;quot;&#039;&#039;&amp;gt;&#039;&#039;&amp;quot; wird die nameserver-Info nur an die Datei angehängt und es kann zu Problemen kommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ifconfig 192.168.0.55 netmask 255.255.255.0&lt;br /&gt;
 $ route add default gw 192.168.0.1&lt;br /&gt;
 $ echo &amp;quot;nameserver 192.168.0.1&amp;quot; &amp;gt; /etc/resolv.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Benutzeraccounts ====&lt;br /&gt;
&lt;br /&gt;
Linux legt wie alle Unix-artigen Betriebssysteme sehr grossen Wert auf eine ordentliche Benutzer- und Rechteverwaltung.&amp;lt;br&amp;gt;&lt;br /&gt;
Daher sollte man sich überlegen, ob es nicht vielleicht besser wäre, wenn man einen extra Benutzer zum Arbeiten/Basteln/Produktiv-Sein/Bier-Trinken/... anlegt.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn nicht unbedingt nötig, sollte man auf das Arbeiten als &#039;&#039;&#039;root&#039;&#039;&#039; (oder auch Superuser, Admin, ...) verzichten. Dadurch dass man uneingeschränkt &#039;&#039;&#039;alle&#039;&#039;&#039; Rechte auf dem System besitzt kann es durch Programmierfehler oder auch Schadsoftware zu ernsthaften Schäden kommen (Datenverlust, eventuell Hardwareschäden).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Entscheidung ob man wirklich root sein muss, ist eigentlich relativ einfach. Sie wird normalerweise &#039;&#039;&#039;immer&#039;&#039;&#039; erstmal mit &#039;&#039;&#039;nein&#039;&#039;&#039; beantwortet.&amp;lt;br&amp;gt;Sollte sich im Lauf der Zeit doch herausstellen, dass man root sein muss, kann man diesen Weg immer noch einschlagen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Für einige Aufgaben sind jedoch auch root-Rechte erforderlich.&lt;br /&gt;
Zum Beispiel, wenn man direkt mit outporb()/inportb()/outb()/inb()/... arbeiten will.&amp;lt;br&amp;gt;&lt;br /&gt;
Für diese Fälle gibt es ein gutes Tool, es nennt sich [http://de.wikipedia.org/wiki/Sudo sudo].&lt;br /&gt;
Man kann sudo z.&amp;amp;nbsp;B. sagen, dass Benutzer &#039;&#039;xy&#039;&#039; das Programm /usr/bin/blubb mit root-Rechten immer ausführen darf. Benutzer &#039;&#039;ab&#039;&#039; darf das aber nur, wenn er &#039;&#039;&#039;sein&#039;&#039;&#039; Passwort eingibt. Dann gibt es vielleicht noch Benutzer &#039;&#039;zz&#039;&#039;, der alles ohne Passwort als root ausführen darf.&lt;br /&gt;
&lt;br /&gt;
===== Anlegen eines neuen Benutzeraccounts =====&lt;br /&gt;
Ich gehe davon aus, dass ein Image mit busybox auf dem Board installiert ist. Wenn das Image von FriendlyARM installiert ist, ist das der Fall.&lt;br /&gt;
&lt;br /&gt;
Ein Auszug aus der [http://linux.die.net/man/1/busybox Manpage] von busybox:&lt;br /&gt;
&amp;lt;pre&amp;gt;adduser&lt;br /&gt;
    adduser [ OPTIONS ] user_name&lt;br /&gt;
&lt;br /&gt;
    Adds a user to the system&lt;br /&gt;
&lt;br /&gt;
    Options:&lt;br /&gt;
&lt;br /&gt;
    -h DIR          Assign home directory DIR&lt;br /&gt;
    -g GECOS        Assign gecos field GECOS&lt;br /&gt;
    -s SHELL        Assign login shell SHELL&lt;br /&gt;
    -G              Add the user to existing group GROUP&lt;br /&gt;
    -S              create a system user (ignored)&lt;br /&gt;
    -D              Do not assign a password (logins still possible via ssh)&lt;br /&gt;
    -H              Do not create the home directory&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Heisst um einen Benutzer &#039;&#039;banana_joe&#039;&#039; mit dem Heimatverzeichnis &#039;&#039;/home/banana_joe&#039;&#039; anzulegen, muss man folgendes &#039;&#039;&#039;als root&#039;&#039;&#039; eingeben:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ adduser -h /home/banana_joe -s /bin/sh banana_joe&lt;br /&gt;
 $ passwd banana_joe&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;adduser&#039;&#039; legt den Benutzer an, &#039;&#039;passwd&#039;&#039; vergibt ein Passwort.&lt;br /&gt;
&lt;br /&gt;
=== Übertragen von Daten/Programmen in den Flash-Speicher ===&lt;br /&gt;
&lt;br /&gt;
Das übertragen gestaltet sich auf ganz unterschiedliche Weise. Aus Gründen der Einfachheit werde ich hier nur die sinnvollsten/einfachsten/schnellsten Wege beschreiben. Andere Möglichkeiten wären noch &#039;&#039;lrzsz&#039;&#039;, USB und [[JTAG]].&lt;br /&gt;
Wer zuviel Zeit hat, kann sich ja auch ein eigenes Protokoll auf TCP/IP Ebene basteln oder den Kristallspeicher erfinden ;)&lt;br /&gt;
&lt;br /&gt;
Wenn man eine Datei übertragen hat, muss man sich vergewissern, dass diese auch Ausführrechte besitzt, wenn sie ein Programm oder ein Ordner ist. Die Lese- und Schreibrechte müssen ebenfalls richtig gesetzt sein.&lt;br /&gt;
Normalerweise stimmt dies alles so wie es ist, aber manchmal muss man ein wenig nachhelfen.&lt;br /&gt;
Wenn sich ein Programm nicht ausführen lässt, oder man nicht in einen Ordner wechseln kann, fehlen die Rechte zum Ausführen. Geändert wird das so:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;datei/ordner&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Da hier aber nicht die Unix-Rechte erklärt werden sollen, verweise ich [http://linuxwiki.de/DateiRechte hierauf]&lt;br /&gt;
&lt;br /&gt;
==== http ====&lt;br /&gt;
Für diese Methode muss natürlich das [http://www.mikrocontroller.net/articles/Mini2440#Netzwerk Netzwerk] eingerichtet sein. Man braucht auf einem PC im Netz einen laufenden Werbserver, auf den man die zu übertragenden Dateien legt.&lt;br /&gt;
Nun kann man diese in ein Verzeichnis seiner Wahl &amp;quot;herunterladen&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ cd /tmp&lt;br /&gt;
 $ wget http://10.2.5.29/datei&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ftp ====&lt;br /&gt;
Sobald auf dem Board ein FTP-Server läuft, kann man sich &amp;quot;ganz normal&amp;quot; mit einem FTP-Client (zum Beispiel &#039;&#039;&#039;gftp&#039;&#039;&#039; oder &#039;&#039;&#039;ncftp&#039;&#039;&#039;) verbinden und die Dateien hochladen.&lt;br /&gt;
Ebenso kann man sich auch vom Board auf einen FTP-Server verbinden.&lt;br /&gt;
Nennenswerte Programme sind z.B. &#039;&#039;&#039;ftp&#039;&#039;&#039; für die Linux-Konsole, welches im FriendlyARM Image bereits enthalten ist oder der ncurses-basierende Client &#039;&#039;&#039;ncftp&#039;&#039;&#039;. Allerdings sollte man sich für ncurses-Programme per Telnet oder SSH einloggen, da die serielle Konsole nur rudimentäre Terminal-Emulation unterstützt und die Bildschirmausgabe nicht gerade schön wirkt.&lt;br /&gt;
&lt;br /&gt;
==== scp/ssh ====&lt;br /&gt;
Dazu muss zuerst einmal ein SSH Server auf dem Board laufen.&lt;br /&gt;
[http://www.openssh.com openSSH] ist dafür die erste Wahl. Mit [http://matt.ucc.asn.au/dropbear/dropbear.html dropbear] gibt es einige Probleme, da man für SCP auch noch die SCP Binary von openSSH braucht.&lt;br /&gt;
&lt;br /&gt;
Sobald der ssh server läuft, ist alles ganz einfach:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei user@ziel:/pfad&amp;lt;/pre&amp;gt;&lt;br /&gt;
Bei einem Board mit der IP 10.0.0.69 und dem User &#039;&#039;root&#039;&#039; wäre das die Befehlszeile:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ scp datei root@10.0.0.69:/root&amp;lt;/pre&amp;gt;&lt;br /&gt;
... und die Datei &#039;&#039;datei&#039;&#039; landet im Heimatverzeichnis von &#039;&#039;root&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Um nicht jedes mal das Passwort eingeben zu müssen, lohnt es sich SSH so zu konfigurieren, dass es mit [http://wiki.unixboard.de/index.php/SSH_ohne_Passwort Key-Files] läuft.&lt;br /&gt;
&lt;br /&gt;
=== Toolchain ===&lt;br /&gt;
Toolchains gibt es im Netz und auf der CD/DVD zum Board mehrere fertig übersetzte - natürlich lässt sich die Toolchain auch selbst compilieren.&lt;br /&gt;
Das Risiko beim selbst compilieren einer Toolchain liegt darin, dass man eventuell einen fehlerhaften Compiler produziert.&lt;br /&gt;
Gründe hierfür sind z.B.:&lt;br /&gt;
* fehlende, wichtige Patches&lt;br /&gt;
* Verwenden von Entwicklerversionen mit eventuellen Bugs&lt;br /&gt;
* ein schon fehlerhafter Host-Compiler&lt;br /&gt;
* falsche Einstellungen (Prozessor-Architektur, Optimierung, ...)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Das sogenannte Bootstrappen eines Compilers erkennt solche Probleme in den meisten Fällen. Bootstrappen heißt, dass zuerst mit dem Host-Compiler der Quellcode des neuen übersetzt wird und mit diesem zweiten Compiler wird ein dritter Compiler übersetzt. Wenn dies klappt, kann man im Normalfall davon ausgehen, dass der dritte Compiler in Ordnung ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Jedoch ist dies bei einem Crosscompiler so nicht möglich, da der zweite Compiler ja keinen Code für den Host-Computer, sondern nur für das Target produzieren kann. Somit würde man sich einen Compiler für das Board bauen.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Wer auf Nummer sicher gehen will, nimmt am besten eine der bekannten ARM-Toolchains oder natürlich die von FriendlyARM.&lt;br /&gt;
&lt;br /&gt;
==== old ABI / new EABI ? ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ABI&#039;&#039;&#039; steht für &#039;&#039;&#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;, also eine Art &amp;quot;Standard&amp;quot; wie das compilierte Programm, die Binärdatei, auszusehen hat.&lt;br /&gt;
&lt;br /&gt;
Die ABI ist schon etwas älter und wurde von der EABI (&#039;&#039;&#039;&#039;&#039;E&#039;&#039;&#039;mbedded &#039;&#039;&#039;A&#039;&#039;&#039;pplication &#039;&#039;&#039;B&#039;&#039;&#039;inary &#039;&#039;&#039;I&#039;&#039;&#039;nterface&#039;&#039;) abgelöst.&lt;br /&gt;
&lt;br /&gt;
Da nahezu jede verfügbare Toolchain auf der EABI aufbaut, würde ich diese auch nutzen. Alte, für die ABI, compilierte Programme, lassen sich mit der Kernel-Unterstützung zum Ausführen von ABI Programmen trotzdem noch verwenden.&lt;br /&gt;
&lt;br /&gt;
Durch das verwenden der EABI entstehen normalerweise keine unüberwindbaren Hürden, beim compilieren von älteren Quellcodes. Jedenfalls nicht durch den Unterschied ABI/EABI.&lt;br /&gt;
&lt;br /&gt;
==== Kernel FPE / softfloat ? ====&lt;br /&gt;
&lt;br /&gt;
Irgendwann stolpert jeder, der mit ARM-CPUs und Linux arbeitet über mehrere Fragen.&lt;br /&gt;
* Was ist softfloat/FPE?&lt;br /&gt;
* Was ist schneller?&lt;br /&gt;
* Kann man beides nutzen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist softfloat/FPE&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch, dass eine ARM-CPU normalerweile keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit Gleitkommaeinheit/FPU] besitzt, müssen alle Berechnungen, welche Kommazahlen enthalten in Software gelöst werden. Bei einem PC-System übernimmt diese Aufgabe eben die FPU und ist somit um einiges schneller.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;softfloat&#039;&#039; ist die Umsetzung durch den Compiler.&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;FPE&#039;&#039; bedeutet &#039;&#039;&#039;&#039;&#039;F&#039;&#039;&#039;loating &#039;&#039;&#039;P&#039;&#039;&#039;oint &#039;&#039;&#039;E&#039;&#039;&#039;mulation&#039;&#039; und wird durch den Kernel bereit gestellt.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist schneller&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Beim FPE-Verfahren wird der Code, welcher die Gleitkomma-Anweisungen enthält auch so übersetzt. Da die CPU aber keine [http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU] besitzt und somit auch keine Maschinensprachen-Befehle dafür, wird eine &#039;&#039;Exception&#039;&#039; ausgelöst (&amp;quot;Fehler&amp;quot;), welche vom Kernel abgefangen wird.&amp;lt;br&amp;gt;&lt;br /&gt;
Nun steht der Kernel vor der Aufgabe, die Gleitkomma-Operation zu lösen und dem Programm das Ergebnis mitzuteilen. Danach muss er den Code für die Exception noch zu Ende führen und zurückkehren.&amp;lt;br&amp;gt;&lt;br /&gt;
Alles in allem eine sehr aufwendige Methode.&lt;br /&gt;
&lt;br /&gt;
Da bei &#039;&#039;softfloat&#039;&#039; die Gleitkomma-Operationen vom Compiler soweit zerstückelt und wieder zusammengesetzt werden, dass gar keine Kommas mehr nötig sind, ist das in dem meisten Fällen flotter.&lt;br /&gt;
&lt;br /&gt;
Das schnellste, ist natürlich eine Hardware-[http://de.wikipedia.org/wiki/Gleitkommaeinheit FPU], die es aber auf dem [[mini2440]] nicht gibt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man beides nutzen?&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Jein, wenn man im Kernel eine der beiden FPE-Methoden aktiviert hat und man führt ein softfloat-Programm aus, dann wird natürlich softfloat verwendet.&lt;br /&gt;
Wenn man allerdings ein FPE-Programm ausführen will und hat die Unterstützung nicht im Kernel, sieht es schlecht aus.&lt;br /&gt;
&lt;br /&gt;
Also am besten eine FPE auswählen und mit einer softfloat-Toolchain compilieren. Das spart Zeit und Kopfzerbrechen über Invalid Opcode/Segfaults usw. ;)&lt;br /&gt;
&lt;br /&gt;
==== Toolchain aufsetzen ====&lt;br /&gt;
Jenachdem, welche Toolchain man einsetzt, kann es sein, dass man den Compileraufruf anpassen muss.&lt;br /&gt;
Wenn man eine Cross Toolchain installiert hat und nur &#039;&#039;gcc&#039;&#039; auf der Kommandozeile eintippt, wird man höchstwahrscheinlich beim &#039;&#039;lokalen&#039;&#039; gcc, keinem Cross-Compiler, landen. Überprüfen kann man das mit&lt;br /&gt;
&amp;lt;pre&amp;gt; $ which gcc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die FriendlyARM Toolchain macht es uns da sehr leicht, sie verwendet aussagekräftige Namen für ihre Programme. Bei ihr wäre der gcc Aufruf der:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc&lt;br /&gt;
oder&lt;br /&gt;
 $ arm-none-linux-gnueabi-gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich gehe im kompletten Artikel davon aus, dass man eine funktionierende Toolchain installiert hat, welche über &#039;&#039;arm-linux-...&#039;&#039; zu erreichen ist. Entweder passt man die gcc-Aufrufe von hier an, oder man kann sich auch [http://wiki.unixboard.de/index.php/ManPage:ln symbolische Links] anlegen.&lt;br /&gt;
Zum Schluss sollte das dann ungefähr so aussehen, vom bin-Pfad der Toolchain aus!&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ls -al /usr/local/arm/4.3.2/bin/&lt;br /&gt;
 ...&lt;br /&gt;
 lrwxrwxrwx 1 root root      25 2010-02-25 07:15 arm-linux-ld -&amp;gt; arm-none-linux-gnueabi-ld&lt;br /&gt;
 ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ich selbst arbeite mit der FriendlyARM-Toolchain, werde mich hier also meistens auf diese beziehen, ausser anders vermerkt.&lt;br /&gt;
===== FriendlyARM =====&lt;br /&gt;
[http://www.friendlyarm.net/downloads Hier] als &#039;&#039;ARM-Linux-GCC&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
Entpackt verbraucht diese Toolchain ca. 295MB. Mit ihr liessen sich bei mir bereits der Kernel, uboot, sowie zahlreiche Programme kompilieren.&lt;br /&gt;
&lt;br /&gt;
Zuerst wird die Toolchain an die richtige Stelle entpackt, der Pfad mit angegeben und dann ist sie auch schon bereit.&lt;br /&gt;
Dieses Kommando sieht auf den ersten Blick etwas nach Dateisystem-Apokalypse aus, ist allerdings lage nicht so wild. Die Option &#039;&#039;-C /&#039;&#039; sagt, dass direkt ins Wurzelverzeichnis entpackt werden soll, daher benötigt man für diesen Schritt &#039;&#039;&#039;root-Rechte&#039;&#039;&#039;. Die FriendlyARM-Toolchain ist so aufgebaut, dass sie damit nach &#039;&#039;/usr/local/arm/4.3.2/&#039;&#039; entpackt wird, &#039;&#039;&#039;unser Ziel&#039;&#039;&#039; :)&lt;br /&gt;
&amp;lt;pre&amp;gt; $ tar xvfj arm-linux-gcc-4.3.2.tar.gz -C /&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir das nun so haben, müssen wir natürlich auch noch sagen, wo er den Compiler findet.&lt;br /&gt;
Dazu öffnet man am besten seine &amp;quot;autorun-Datei&amp;quot; der Shell. In der Konsole ganz einfach mit vim/nano/etc zu erreichen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ vim /home/user/.bashrc&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dort tragen wir dann &#039;&#039;&#039;ganz ans Ende&#039;&#039;&#039; dies ein:&lt;br /&gt;
&amp;lt;pre&amp;gt;export PATH=$PATH:/usr/local/arm/4.3.2/bin&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kaum gespeichert, startet man eine neue shell (Konsole) und überprüft ob die Pfade stimmen.&lt;br /&gt;
Wenn &#039;&#039;/usr/local/arm/...&#039;&#039; im Pfad enthalten ist, müsste alles stimmen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ echo $PATH&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tippt man nun &#039;&#039;&#039;nur&#039;&#039;&#039; &#039;&#039;arm-&#039;&#039; und drückt zweimal die Tabtaste, so müsste eine ellenlange Liste mit Programmen wie z.&amp;amp;nbsp;B. &#039;&#039;arm-linux-gcc&#039;&#039; oder &#039;&#039;arm-linux-ld&#039;&#039; erscheinen.&lt;br /&gt;
&amp;lt;pre&amp;gt; $ arm-linux-gcc -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== codesourcery =====&lt;br /&gt;
[http://www.codesourcery.com/sgpp/lite/arm/portal/package3696/public/arm-none-linux-gnueabi/arm-2008q3-72-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 codesourcery arm-none-linux-gnueabi]&lt;br /&gt;
&lt;br /&gt;
===== buildroot =====&lt;br /&gt;
&lt;br /&gt;
Von http://www.buildroot.net das letzte stable Release holen, mini-2440 wird unterstützt. Der Build dauert zwar einige Zeit, aber nacher kann man sich an X11 erfreuen.&lt;br /&gt;
&lt;br /&gt;
=== Cross Compiling ===&lt;br /&gt;
Sobald die Toolchain richtig aufgesetzt ist kann man anfangen, seine Programme zu übersetzten.&lt;br /&gt;
&lt;br /&gt;
Hier folgt nur eine kurze Beschreibung, wer sowas genauer wissen will, sollte sich auf Seiten wie diesen umsehen:&lt;br /&gt;
* http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html&lt;br /&gt;
* http://linux.bytesex.org/cross-compiler.html&lt;br /&gt;
Ausserdem findet man zu vielen embedded-nutzbaren Programmen direkt ein Cross-Compiling Howto mit ein wenig google.&lt;br /&gt;
Ob diese nun für ARM, AVR32, PPC, MIPS, ... sind, ist im Grunde egal, da man ja meistens nur die Architektur anpassen muss.&lt;br /&gt;
&lt;br /&gt;
Es gibt mehrere Möglichkeiten. Die erste ist der direkte Aufruf vom Compiler oder mittels eines &amp;quot;festen&amp;quot; Makefiles. Die zweite, wahrscheinlich Häufigste, ist das ausführen eines configure-Scriptes bevor der make-Vorgang gestartet wird.&lt;br /&gt;
&lt;br /&gt;
* Das einfache aufrufen des Compilers&lt;br /&gt;
Dazu ein einfaches Hello-World Programm:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
   printf(&amp;quot;hiho\n&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compiliert wird das Programm ganz einfach so:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ arm-linux-gcc &amp;lt;name.c&amp;gt; -o &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Danach wird die Datei &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; an das Board [http://www.mikrocontroller.net/wikisoftware/index.php?title=Mini2440&amp;amp;action=submit#.C3.9Cbertragen_von_Daten.2FProgrammen_ins_Flash übertragen]. &lt;br /&gt;
Sobald &#039;&#039;&amp;lt;name&amp;gt;&#039;&#039; auf dem Board ist, kann es ausgeführt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ ./&amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt; &lt;br /&gt;
Eventuell fehlen die Rechte:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ chmod +x &amp;lt;name&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ./configure-Scripte&lt;br /&gt;
Hier sieht es schon ein klein wenig schwieriger aus, ist es aber eigentlich nicht.&lt;br /&gt;
&#039;&#039;Normalerweise&#039;&#039;, aber &#039;&#039;&#039;nicht immer&#039;&#039;&#039;, sieht das compilieren eines Programms für das mini2440 so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt; $ HOST=arm-linux ARCH=arm ./configure --build=arm-linux- --your-options&lt;br /&gt;
 $ make&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Man muss dem configure-Script lediglich angeben, für welche Architektur das Makefile konfiguriert werden soll und welchen Compiler er dafür nehmen soll.&lt;br /&gt;
&lt;br /&gt;
=== Linux-Kernel ===&lt;br /&gt;
&lt;br /&gt;
Den Kernel-Quellcode besorgt man sich am besten den Kernel-Fork von buserror.&amp;lt;br&amp;gt; Wenn man nicht auf dem ARM selber kompilieren möchte, benutzt man wie hier im Beispiel einen Cross-Compiler (Siehe oben). Weiterhin wird noch git benötigt, um den Kernel-Quellcode zu laden.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/linux-2.6/mini2440.git linux-2.6.32-rc8&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Kernel-Verzeichnis und den Kernel mit den Defaults konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd linux-2.6.32-rc8&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make mini2440_defconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make menuconfig&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den Kernel anschließend kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm make&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Module bekommen wir wie folgt nach /mnt/mini2440/lib/modules installiert:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- ARCH=arm INSTALL_MOD_PATH=/mnt/mini2440 make modules_install&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn wir mit u-boot arbeiten, dann benötigen wir das zImage in /mnt/mini2440/kernel-2.6.32-rc8/arch/arm/boot, um daraus mittels mkimage (Siehe uboot) ein uImage zu erstellen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Kernel-Parameter&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
dem Kernel kann man zum Start noch Parameter für das Board mitgeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;mini2440=[0..9][t][b]&amp;lt;/pre&amp;gt;&lt;br /&gt;
[0..9] bestimmen die Display-Timings&lt;br /&gt;
* 0 3,5&amp;quot; Display N35 + TS (alt);&lt;br /&gt;
* 1 7&amp;quot; Display + TS;&lt;br /&gt;
* 2 VGA-Board;&lt;br /&gt;
* 3 3,5&amp;quot; Display T35 + TS;&lt;br /&gt;
* 4 5,6&amp;quot; Display Innolux + TS;&lt;br /&gt;
[t] Touchscreen ist vorhanden;&amp;lt;br&amp;gt;&lt;br /&gt;
[b] Backlight ist vorhanden;&lt;br /&gt;
&lt;br /&gt;
=== root-fs ===&lt;br /&gt;
Um ein eigenes Root-Filesystem zu compilieren, gibt es mehrere Möglichkeiten.&lt;br /&gt;
&lt;br /&gt;
Die einfachsten sind Cross-Umgebungen wie [http://buildroot.uclibc.org/ buildroot] und [http://wiki.openembedded.net/index.php/Main_Page openembedded].&lt;br /&gt;
&lt;br /&gt;
==== Debian ====&lt;br /&gt;
Auch relativ einfach ist es, sich ein fertig compiliertes debian-arm zu installieren. Wenn man das Debian einmal auf seiner SD-Karte laufen hat, ist es kein Problem mehr, alles wie gewohnt mit apt zu installieren usw. usw.&amp;lt;br&amp;gt;&lt;br /&gt;
Allerdings sind gerade die Scripte bei Debian noch nie dafür bekannt gewesen sonderlich schnell zu laufen und es ist sehr sehr träge beim booten.&lt;br /&gt;
&lt;br /&gt;
Ich habe auf meinem mini2440 seit einiger Zeit Debian am Laufen, habe aber sämtliche Init-Scripte durch eigene ersetzt, welche um einiges flotter laufen. Ebenso verzichte ich auf sysvinit und damit aber auch auf sehr nützliche Tools/Funktionen, wie die runlevels und shutdown oder reboot.&lt;br /&gt;
Diese Funktionen müssen auch von meinen eigenen Scripten übernommen werden. Dafür läuft es um einiges schneller.&lt;br /&gt;
&lt;br /&gt;
[http://emqbit.com/deboostrap-debian Hier] eine Anleitung für ein AT91-Linux Board mit Debian. Diese kann fast 1:1 übernommen werden.&lt;br /&gt;
&lt;br /&gt;
Mit X11, Lighttpd, PHP, Python, mc, vim, mpd, alsa, gcc, ... (und auch apache als leidige Abhängigkeit von PHP) braucht mein Debian etwa 550MB auf der SD-Karte.&lt;br /&gt;
Schon ein ordentlicher Brummer, aber egal, es bootet mit eigenen Scripten innerhalb von 15 Sekunden.&lt;br /&gt;
&lt;br /&gt;
==== Gentoo ====&lt;br /&gt;
Ooooh wer daran denkt, hat einfach nur zuviel Zeit. Gentoo in allen Ehren, aber allein PHP zu compilieren dauert gut 4 Stunden... danach habe ich es aufgegeben.&lt;br /&gt;
&lt;br /&gt;
Wer Gentoo installieren kann, wird sich auf dem Mini2440 auch nicht schwerer tun, als auf einem PC. Der Unterschied besteht nur darin, dass man die Stage auf SD Karte packen muss, am normalen Rechner natürlich, und dort dann schon die wichtigsten Einstellungen vornehmen muss.&lt;br /&gt;
&lt;br /&gt;
Mit Portage und den ganzen Dev-Files ist Gentoo ein riesen Gebilde für so ein schwachbrüstiges Board. Eine 4GB SD-Karte ist das Minimum. Außer man bootet zuerst in den Flash und dann chrootet man auf ein Gentoo auf einer USB-Festplatte. uboot kann das, soweit ich weiß, nicht.&lt;br /&gt;
&lt;br /&gt;
=== sys-fs ===&lt;br /&gt;
Sysfs ist ein virtuelles Dateisystem, welches seit dem Linux Kernel 2.6. zur Verfügung gestellt wurde. Der Kernel stellt dabei Konfigurationen, Informationen über Vorrichtungen und Treiber im sogenannten userspace zur Verfügung. Dies Bedeutet einfach, dass Informationen/Geräte an einer festgelegten Stelle im Dateisystem stehen und ausgelesen oder beschrieben werden können.&lt;br /&gt;
&lt;br /&gt;
Über einige Dateien in diesem Dateisystem können GPIOs und z.B. auch LEDs angesteuert werden.&lt;br /&gt;
&lt;br /&gt;
=== Framebuffer ===&lt;br /&gt;
Der Framebuffer ist von Haus aus im FriendlyARM Kernel aktiviert und ohne ihn lässt sich im Linux keine Ausgabe auf dem Display realisieren. Er ist unter &#039;&#039;/dev/fb0&#039;&#039; zu erreichen.&amp;lt;br&amp;gt;&lt;br /&gt;
In der Kernelkonfiguration muss die Framebuffer-Konsole und der Framebuffer-Treiber für das jeweilige Display gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Eine Textausgabe geht ganz einfach über das Terminal, welche auf ihn gemappt ist:&lt;br /&gt;
&amp;lt;pre&amp;gt;$ echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/tty1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Man kann dem Framebuffer diverse Argumente mitgeben, die die Ausgabe auf dem Display beeinflussen. Diese werden über &#039;&#039;fbcon=...&#039;&#039; angeben. Man kann auch mehre Argumente angeben, das sähe zum Beispiel so aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root=/dev/mmcblk0p1 console=ttySAC0 fbcon=rotate:1 fbcon=scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternativ können mehrere fbcon-Parameter auch durch Komma getrennt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
... fbcon=rotate:1,scrollback:0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Scrollback-Buffer ist auf diesem Display eigentlich nicht nötig, da man hier auf dem Mini2440 auf keiner Konsole mit Tastatur usw. arbeitet. Daher schaltet man ihn mit &#039;&#039;fbcon=scrollback:0&#039;&#039; ab, das spart gegenüber dem Standardwert 32kB RAM.&amp;lt;br&amp;gt;&lt;br /&gt;
Wer ihn doch benötigt, kann ihn natürlich trotzdem verwenden. Die Zahl nach dem Doppelpunkt steht für die Größe in Bytes. Ein &#039;&#039;k&#039;&#039; als Suffix steht für Kilobyte, &#039;&#039;fbcon=scrollback:1024k&#039;&#039; entspräche einem Scrollback-Buffer von 1MB.&lt;br /&gt;
&lt;br /&gt;
Für die FB-Konsole gibt es einige weitere Möglichkeiten und viele Optionen lassen sich zur Laufzeit ändern. Hier habe ich nur das Wichtigste beschrieben. Wer darüber mehr erfahren will, sollte sich im Kernel-Quellcode die Datei &#039;&#039;Documentation/fb/fbcon.txt&#039;&#039; ansehen.&lt;br /&gt;
&lt;br /&gt;
==== Font wählen ====&lt;br /&gt;
Die voreingestellte VGA8x16 Font ist etwas groß und es passt nicht allzuviel Text auf das Display. Die am besten lesbare, kleine Schrift ist die Mac6x11 Font.&lt;br /&gt;
In menuconfig folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Select compiled-in fonts&lt;br /&gt;
            &amp;lt;*&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*]   Map the console to the primary display device&lt;br /&gt;
            [*]   Framebuffer Console Rotation&lt;br /&gt;
            [*] Select compiled-in fonts&lt;br /&gt;
            [ ]   VGA 8x8 font&lt;br /&gt;
            [ ]   VGA 8x16 font&lt;br /&gt;
            [*]   Mac console 6x11 font (not supported by all drivers)&lt;br /&gt;
            [ ]   console 7x14 font (not supported by all drivers)&lt;br /&gt;
            [ ]   Pearl (old m68k) console 8x8 font&lt;br /&gt;
            [ ]   Acorn console 8x8 font&lt;br /&gt;
            [ ]   Mini 4x6 font&lt;br /&gt;
            [ ] Sparc console 8x16 font&lt;br /&gt;
            [ ] Sparc console 12x22 font (not supported by all drivers)&lt;br /&gt;
            [ ] console 10x18 font (not supported by all drivers)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Werden mehrere Fonts eincompiliert, können sie so ausgewählt werden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(Kernel-Commandline)&lt;br /&gt;
... fbcon=font:xxxx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mögliche Werte für &#039;&#039;xxxx&#039;&#039; sind:&lt;br /&gt;
* VGA8x8&lt;br /&gt;
* VGA8x16&lt;br /&gt;
* Mac6x11&lt;br /&gt;
* 7x14&lt;br /&gt;
* 10x18&lt;br /&gt;
* MINI4x6&lt;br /&gt;
* RomanLarge&lt;br /&gt;
* SUN8x16&lt;br /&gt;
* SUN12x22&lt;br /&gt;
* ProFont6x11&lt;br /&gt;
* Acorn8x8&lt;br /&gt;
* PEARL8x8&lt;br /&gt;
&lt;br /&gt;
Bei machen Fonts steht in der Kernel-Menuconfig &#039;&#039;not supported by all drivers&#039;&#039;. Dies erklärt sich so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Note, not all drivers can handle font with widths not divisible by 8,&lt;br /&gt;
such as vga16fb.&lt;br /&gt;
kernel-src/Documentation/fb/fbcon.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manche Treiber können nicht mit Fontbreiten/-höhen umgehen, welche nicht durch 8 teilbar sind. Da aber z.B. die MAC6x11 Font auch nicht durch 8 teilbar ist und das Mini2440 das anzeigen kann, gehe ich davon aus, dass alle funktionieren.&lt;br /&gt;
&lt;br /&gt;
==== Rotation ====&lt;br /&gt;
Um das Display zu &amp;quot;drehen&amp;quot; folgendes einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-&amp;gt; Device Drivers&lt;br /&gt;
   -&amp;gt; Graphics support&lt;br /&gt;
      -&amp;gt; Console display driver support&lt;br /&gt;
         -&amp;gt; Framebuffer Console support&lt;br /&gt;
            [*] Framebuffer Console Rotation&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Also Kernel-Parameter im Bootloader dann einstellen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
fbcon=rotate:x&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Für &#039;&#039;x&#039;&#039; sind Werte von 0 bis 3 gültig. Jeweils wird um 90° im Uhrzeigersinn weitergedreht.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis:&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Die Rotation bezieht sich &#039;&#039;&#039;nur&#039;&#039;&#039; auf den Framebuffer. Ein anschließend gestartetes Qtopia (z.B.) bleibt von der gewählten Einstellung unberührt.&lt;br /&gt;
In eigenen Anwendungen, welche eine grafische Oberfläche bereitstellen, lässt sich die Rotation allerdings verwenden, indem man einfach die Datei &#039;&#039;&#039;/proc/cmdline&#039;&#039;&#039; ausliest und den dort gegebenen Wert verwendet, um seine Bildschirmausrichtung anzupassen.&lt;br /&gt;
&lt;br /&gt;
=== Bootloader ===&lt;br /&gt;
Die beiden verfügbaren Bootloader sind vivi (ein &amp;quot;standard-s3c24xx-Linux-Bootloader&amp;quot;) und u-boot, &#039;&#039;&#039;der&#039;&#039;&#039; Bootloader für embedded-Systeme schlechthin ;)&lt;br /&gt;
&lt;br /&gt;
Gemeinsam haben sie eigentlich nur, dass sie &#039;&#039;&#039;a)&#039;&#039;&#039; funktionieren und &#039;&#039;&#039;b)&#039;&#039;&#039; einen Linux-Kernel laden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Der große Nachteil von vivi ist, dass es nur mit [http://en.wikipedia.org/wiki/YAFFS YAFFS2]-Dateisystemen umgehen kann, die auf dem onboard-Flash liegen müssen.&lt;br /&gt;
Sobald der Kernel geladen ist, ist das kein Problem mehr, doch der Kernel muss eben im Flash liegen.&amp;lt;br&amp;gt;&lt;br /&gt;
Um nun z.&amp;amp;nbsp;B. von USB-Festplatten/Sticks und SD-/MMC-Karten booten zu können, muss also u-boot installiert werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WARNUNG: An einem Bootloader herumzuspielen, kann sehr böse ausgehen, etwa mit dem unbootbar-mach-Vorgang, der durch zu wenig Nachdenken ausgelöst wird.&lt;br /&gt;
Das mini2440 lässt sich zwar jederzeit per JTAG mit LPT-Adapter zurückholen, ist doch aber eigentlich unnötig ;)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== uboot ====&lt;br /&gt;
&lt;br /&gt;
Der Bootloader uboot wurde von &amp;quot;buserror&amp;quot; soweit an das mini2440 angepasst, dass er mehr oder weniger läuft.&lt;br /&gt;
Für die verschiedenen Boards gelten also auch leicht verschiedene Anweisungen um uboot ins Wasser zu bekommen.&lt;br /&gt;
&lt;br /&gt;
Das git und die Seite von &amp;quot;buserror&amp;quot; ist [http://code.google.com/p/mini2440/ hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
Boards:&lt;br /&gt;
* 64MB &lt;br /&gt;
* 128MB&lt;br /&gt;
* 256MB&lt;br /&gt;
** [[Datei:mini2440.h]]&lt;br /&gt;
** [[Datei:uboot.bin]]&lt;br /&gt;
* 1GB&lt;br /&gt;
&lt;br /&gt;
Den u-boot-Fork von buserror laden wir am besten mit git. Weiterhin benötigen wir einen Cross-Compiler (Siehe oben). Die letzte mir bekannte Version des GCC mit dem sich das &amp;quot;U-Boot&amp;quot; kompilieren lässt ist 4.3.4.&amp;lt;br&amp;gt;Folgende Einstellungen werden im Abschnitt verwendet:&lt;br /&gt;
&amp;lt;pre&amp;gt;  Verzeichnis: /mnt/mini2440&lt;br /&gt;
  CHOST/CROSS-COMPILE: arm-softfloat-linux-gnueabi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Starten wir damit, den Quellcode zu laden:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd /mnt/mini2440&lt;br /&gt;
  $ git clone git://repo.or.cz/u-boot-openmoko/mini2440.git u-boot&amp;lt;/pre&amp;gt;&lt;br /&gt;
Dann ab ins Source-Verzeichnis und mit den Defaults für das Mini2440 konfigurieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ cd u-boot&lt;br /&gt;
  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make mini2440_config&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wenn man noch etwas manuell ändern möchte, dann die Datei include/configs/mini2440.h bearbeiten, z.&amp;amp;nbsp;B. für das Mini2440-256MB:&lt;br /&gt;
&amp;lt;pre&amp;gt;  #define USE_920T_MMU		1&lt;br /&gt;
  //#define CONFIG_USE_IRQ		1	/* Needed for USB device! */&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(CONFIG_USE_IRQ auskommentieren, damit das Mini2440 u-boot aus dem RAM ausgeführt werden kann. Leider kann man dann im &amp;quot;U-Boot&amp;quot; kein USB-Gerät mehr ansprechen, um ggfl. mal wieder aufzutauchen).&amp;lt;br&amp;gt;&lt;br /&gt;
Zusätzlich kann man noch defaults für das Environment (bootargs, ip, ...) festlegen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Anschließend das &amp;quot;U-Boot&amp;quot; kompilieren:&lt;br /&gt;
&amp;lt;pre&amp;gt;  $ CROSS_COMPILE=arm-softfloat-linux-gnueabi- make&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Im Verzeichnis tools findet man mkimage. Damit kann man aus einem zImage (Linux-Kernel) ein uImage machen. Dieses uImage lässt sich von u-boot aus laden (Nand, NFS, TFtp, MMC) und ausführen. &lt;br /&gt;
&amp;lt;pre&amp;gt;  mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d path-to/zImage path-to/uImage&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jetzt haben wir ein von u-boot ausführbaren Linux-Kernel.&lt;br /&gt;
&lt;br /&gt;
== Multimedia ==&lt;br /&gt;
&lt;br /&gt;
=== Abspielen von Audio-Daten ===&lt;br /&gt;
Mit dem FriendlyARM-Image gibt es zwei Möglichkeiten Audio-Dateien abzuspielen.&amp;lt;br&amp;gt;Die Eine ist, Qtopia zu starten und dort einfach die Datei von SD-Karte, USB, ... auszuwählen und er spielt sie ab.&lt;br /&gt;
&lt;br /&gt;
Die andere ist, die Datei auf der Konsole mit &#039;&#039;madplay dateiname.mp3&#039;&#039; abzuspielen.&amp;lt;br&amp;gt;[http://www.digipedia.pl/man/doc/view/madplay.1/ Hier] die Manpage zu madplay.&lt;br /&gt;
&lt;br /&gt;
==== MPD - der Music Player Daemon ====&lt;br /&gt;
Mit einem eigenen Image oder wenn man sich alles von Hand compilieren will ist der [http://www.musicpd.org/ Music Player Daemon] ein genialer Musik-Player. Er lässt sich durch sehr sehr viele verschiedene Clients steuern und braucht dabei nahezu kaum Rechenleistung.&amp;lt;br&amp;gt;&lt;br /&gt;
Der eigentliche Player läuft vollkommen &amp;quot;versteckt&amp;quot; im Hintergrund. Um ihn zu steuern wird vom Client eine Verbindung aufgebaut und die entsprechenden Befehle gesendet.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Clients müssen noch nicht einmal auf dem Board laufen, können auch auf jedem anderen Rechner im Netzwerk oder Internet sein. Man muss einfach nur die IP und den Port angeben.&lt;br /&gt;
&lt;br /&gt;
Mit gerade mal etwa 100 Zeilen Code lässt sich eine einfach zu nutzende Client-Lib in C programmieren um dann seine eigenen Clients zu schreiben. Damit lässt sich der MPD durch so ziemlich jedes Ereignis an einem Rechner steuern.&lt;br /&gt;
[[MPD Client Programming|hier]] habe ich einen Artikel erstellt, der das wichtige dafür beschreibt.&lt;br /&gt;
&lt;br /&gt;
=== Aufnehmen von Audio-Daten ===&lt;br /&gt;
=== Abspielen von Video-Daten ===&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe noch keinen Player, bis auf den vom originalen Image mit Qtopia gesehen/compiliert, welcher Filme einigermaßen flüssig abspielt.&lt;br /&gt;
&lt;br /&gt;
Mein Ansatz momentan ist, den MPlayer mit fbdev, directfb und sdl mit Framebuffer Ausgabe direkt auf den Framebuffer schreiben zu lassen.&lt;br /&gt;
Allerdings habe ich damit bisher nur sehr sehr magere Ergebnisse gehabt.&lt;br /&gt;
&lt;br /&gt;
=== Kamera-Interface ===&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
Nahezu alles ist über die verschiedenen Header auf dem Board zu erreichen&lt;br /&gt;
=== Pinouts ===&lt;br /&gt;
[[Bild:mini2440_pinout.jpg|450px]]&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;Audio / UART&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || Audio IN || CON1, CON2, CON3 || CON8 || J1 (ext. NAND/NOR-sw)&lt;br /&gt;
|-&lt;br /&gt;
| 1   || IN       || TX               || VIN  || NORBOOT   &lt;br /&gt;
|-&lt;br /&gt;
| 2   || GND      || RX               || GND  || OM0      &lt;br /&gt;
|-&lt;br /&gt;
| 3   || IN       || 5V               || GND  || NANDBOOT &lt;br /&gt;
|-&lt;br /&gt;
| 4   ||          || GND              || VDD5V||          &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;CON4 GPIO, CON5&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Pin || CON5 || CON4 GPIO || CAMERA || CON12 || JTAG&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 5V  || 5V || SDA || EINT8/GPG0  || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 2 || GND || 3.3V || SCL|| EINT11/GPG3 ||  3.3V&lt;br /&gt;
|-&lt;br /&gt;
| 3 || EINT17|| GND || EINT20|| EINT13/GPG5  || /TRST&lt;br /&gt;
|-&lt;br /&gt;
| 4 || EINT18|| /RESET || CAMRST|| EINT14/GPG6  || /RESET&lt;br /&gt;
|-&lt;br /&gt;
| 5 || EINT3|| AIN0 || CAM_CLOCK|| EINT15/GPG7  || TDI&lt;br /&gt;
|-&lt;br /&gt;
| 6 || EINT9|| AIN1 || CAM_HREF|| EINT19/GPG11 || TDO&lt;br /&gt;
|-&lt;br /&gt;
| 7 || /GCS1|| AIN2 || CAM_VSYNC|| 3.3V || TMS&lt;br /&gt;
|-&lt;br /&gt;
| 8 || /GCS2 || AIN3 || CAM_PCLK|| GND || GND&lt;br /&gt;
|-&lt;br /&gt;
| 9  || /GCS3 || EINT0 || CAMDATA7|| ||TCK&lt;br /&gt;
|-&lt;br /&gt;
|  10 || /GCS5|| EINT1 || CAMDATA6|| ||GND&lt;br /&gt;
|-&lt;br /&gt;
| 11  || L/OE|| EINT2 || CAMDATA5  &lt;br /&gt;
|-&lt;br /&gt;
|  12 || L/WE|| EINT3 || CAMDATA4  &lt;br /&gt;
|-&lt;br /&gt;
|  13 || /WAIT|| EINT4 || CAMDATA3  &lt;br /&gt;
|-&lt;br /&gt;
|   14|| /RESET|| EINT5 || CAMDATA2  &lt;br /&gt;
|-&lt;br /&gt;
|  15 || /XDACK0|| EINT6 || CAMDATA1  &lt;br /&gt;
|-&lt;br /&gt;
|  16 || /XDREQ0|| EINT8 || CAMDATA0 &lt;br /&gt;
|-&lt;br /&gt;
|  17 || LADDR0|| EINT9 || 3.3V &lt;br /&gt;
|-&lt;br /&gt;
| 18  ||LADDR1|| EINT11 || VDDCAM &lt;br /&gt;
|-&lt;br /&gt;
|  19 ||LADDR2|| EINT13 || 1.8V &lt;br /&gt;
|-&lt;br /&gt;
|  20 ||LADDR3|| EINT14 || GND &lt;br /&gt;
|-&lt;br /&gt;
|   21||LADDR4|| EINT15 ||  &lt;br /&gt;
|-&lt;br /&gt;
|   22||LADDR5|| EINT17 ||  || &lt;br /&gt;
|-&lt;br /&gt;
|   23||LADDR6|| EINT18&lt;br /&gt;
|-&lt;br /&gt;
|   24||LADDR24|| EINT19&lt;br /&gt;
|-&lt;br /&gt;
|   25||LDATA0||MISO&lt;br /&gt;
|-&lt;br /&gt;
|   26||LDATA1||MOSI&lt;br /&gt;
|-&lt;br /&gt;
|   27||LDATA2||CLOCK&lt;br /&gt;
|-&lt;br /&gt;
|   28||LDATA3||SS&lt;br /&gt;
|-&lt;br /&gt;
|   29||LDATA4|| SCL&lt;br /&gt;
|-&lt;br /&gt;
|   30||LDATA5|| SDA&lt;br /&gt;
|-&lt;br /&gt;
|   31||LDATA6||GPB0&lt;br /&gt;
|-&lt;br /&gt;
|   32||LDATA7||GPB1&lt;br /&gt;
|-&lt;br /&gt;
|33   ||LDATA8||CLKOUT0&lt;br /&gt;
|-&lt;br /&gt;
|  34 ||LDATA9||CLKOUT1&lt;br /&gt;
|-&lt;br /&gt;
|   35||LDATA10&lt;br /&gt;
|-&lt;br /&gt;
|36   ||LDATA11&lt;br /&gt;
|-&lt;br /&gt;
|  37 ||LDATA12&lt;br /&gt;
|-&lt;br /&gt;
| 38  ||LDATA13&lt;br /&gt;
|-&lt;br /&gt;
|  39 ||LDATA14&lt;br /&gt;
|-&lt;br /&gt;
|  40 ||LDATA15&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== onboard Hardware ====&lt;br /&gt;
Sobald man mal anfangen möchte, sich mit der Hardware auseinanderzusetzen, sollte man natürlich auch wissen wie, was und wo dran.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;... an welchem EINT war ...  Low oder High aktiv? ...&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Bild:mini2440_eeprom.jpg||300px]][[Bild:mini2440_buttons.jpg||300px]][[Bild:mini2440_leds.jpg||300px]][[Bild:mini2440_poti.jpg||300px]]&lt;br /&gt;
[[Bild:mini2440_buzzer.jpg||300px]]&lt;br /&gt;
&lt;br /&gt;
=== [[UART]] ===&lt;br /&gt;
Die S3C2440 besitzt insgesamt drei unabhängige UARTs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Die Spannungspegel der Rx und Tx Pins sind etwas verwirrend. Auf dem Stecker liegen 5V an, doch das Datenblatt sagt nicht, ob die Rx und Tx Pins auch 5V-Tolerant sind. Daher sollte man das ausschliessen. Ein Spannungsteiler aus 3k3 und 2k2 an der Rx-Leitung vom Prozessor sollte das Problem beheben, solange der Empfänger an der Tx-Leitung 3.3V noch als H-Signal versteht.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;UARTs&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! UART || 64 byte FIFO || IrDA 1.0 || RTS/CTS Leitungen|| Spannungspegel (L - H)&lt;br /&gt;
|-&lt;br /&gt;
| uart0 || * || * || * || 0V - 3,3V / RS232&lt;br /&gt;
|-&lt;br /&gt;
| uart1 || * || * || * || 0V - 3,3V&lt;br /&gt;
|-&lt;br /&gt;
| uart2 || * || * || x || 0V - 3,3V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Über die Ansteuerung auf Hardwareebene braucht man sich, solange man ein Betriebssystem verwendet, &#039;&#039;&#039;keine&#039;&#039;&#039; Gedanken zu machen.&lt;br /&gt;
Unter Linux sind die drei UARTs über ttySAC0, ttySAC1 und ttySAC2 zu erreichen.&lt;br /&gt;
&lt;br /&gt;
=== [[LED|LEDs]] ===&lt;br /&gt;
Wenn der Kerneltreiber für die LEDs mit eincompiliert wurde, ist es ein leichtes, die LEDs mit einer kleinen Hand voll C-Zeilen anzusprechen.&lt;br /&gt;
&lt;br /&gt;
Man öffnet die Gerätedatei und mittels &#039;&#039;ioctl()&#039;&#039; schreibt man die Werte in die Gerätedatei.&lt;br /&gt;
&lt;br /&gt;
Der Aufruf von ioctl sieht so aus:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
ioctl(descriptor, AN/AUS, LED_NUMMER);&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
Also muss man um zum Beispiel LED0 anzuschalten für AN/AUS &#039;&#039;&#039;1&#039;&#039;&#039; angeben und für LED_NUMMER die &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
Dafür habe ich im Abschnitt C-Code zwei Beispiel-Funktionen geschrieben. Die erste erwartet AN/AUS und LED_NUMMER als Argument, die Zweite erwartet eine Bitmaske, was mir persönlich doch besser gefällt ;)&lt;br /&gt;
&lt;br /&gt;
==== C-Code ====&lt;br /&gt;
&amp;lt;c&amp;gt;int setleds(int on, int led_no) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	ioctl(led_fd, on, led_no);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int setledmask(int mask) {&lt;br /&gt;
	int led_fd = open(&amp;quot;/dev/leds0&amp;quot;, 0);&lt;br /&gt;
	if (led_fd &amp;lt; 0) { led_fd = open(&amp;quot;/dev/leds&amp;quot;, 0); }&lt;br /&gt;
	if (led_fd &amp;lt; 0) { perror(&amp;quot;open device leds&amp;quot;); return(-1); }&lt;br /&gt;
	&lt;br /&gt;
	if(mask &amp;amp; 0x01) ioctl(led_fd, 1, 0); else ioctl(led_fd, 0, 0);&lt;br /&gt;
	if(mask &amp;amp; 0x02) ioctl(led_fd, 1, 1); else ioctl(led_fd, 0, 1);&lt;br /&gt;
	if(mask &amp;amp; 0x04) ioctl(led_fd, 1, 2); else ioctl(led_fd, 0, 2);&lt;br /&gt;
	if(mask &amp;amp; 0x08) ioctl(led_fd, 1, 3); else ioctl(led_fd, 0, 3);&lt;br /&gt;
	&lt;br /&gt;
	close(led_fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== LED-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für LEDs, kann man diese im Verzeichnis &#039;/sys/class/leds/&#039; finden und ansteuern. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /sys/class/leds/           # wechselt in den Ordner&lt;br /&gt;
ls -lsa                       # listet alle Vorhandenen LEDs auf&lt;br /&gt;
echo 1 &amp;gt; led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; led4/brightness      # LED AUS&lt;br /&gt;
# oder&lt;br /&gt;
echo 1 &amp;gt; /sys/class/leds/led4/brightness      # LED AN&lt;br /&gt;
echo 0 &amp;gt; /sys/class/leds/led4/brightness      # LED AUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [[I2C]] ===&lt;br /&gt;
==== i2ctools ====&lt;br /&gt;
Die [http://www.lm-sensors.org/wiki/I2CTools i2ctools] sind Linux-Userspace Programme, welche dafür gedacht sind, auf einfache Weise auf der Konsole mit I2C Geräten zu kommunizieren.&lt;br /&gt;
==== 24xx [[EEPROM]]s ====&lt;br /&gt;
==== [[Port-Expander]] ====&lt;br /&gt;
===== PCF8574 / PCF8574a =====&lt;br /&gt;
Einen [[PCF8574]] anzusteuern ist sehr einfach. Mit den i2ctools kann man damit erste Tests machen um zu sehen, ob er funktioniert.&lt;br /&gt;
&lt;br /&gt;
Der Port-Expander wird mit den 3.3V versorgt, welche das Board liefert, SDA und SCL natürlich ebenfalls anschliessen.&lt;br /&gt;
Ich habe alle drei Adress-Pins auf &#039;&#039;&#039;L&#039;&#039;&#039; gelegt und erhalte von &#039;&#039;i2cdetect&#039;&#039; so die Adresse &#039;&#039;&#039;0x38&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== [[SPI]] ===&lt;br /&gt;
=== [[PWM]] ===&lt;br /&gt;
==== onboard buzzer ====&lt;br /&gt;
=== [[ADC]] ===&lt;br /&gt;
==== Touchscreen ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann der Touchscreen wie z. B. jede Maus über das event-Interface angesprochen werden.&lt;br /&gt;
Normalerweise liegt der Touchscreen auf &#039;&#039;/dev/input/event0&#039;&#039;.&lt;br /&gt;
Diese Gerätedatei muss man auch der tslib angeben.&lt;br /&gt;
&lt;br /&gt;
==== LCD Backlight ====&lt;br /&gt;
Wenn der Kernel-Treiber installiert ist, kann die Hintergrundbeleuchtung des Displays einfach über die entsprechende Geräte-Datei ein- bzw. ausgeschaltet werden.&amp;lt;br&amp;gt;&lt;br /&gt;
einschalten: &amp;lt;pre&amp;gt;# echo 1 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
ausschalten: &amp;lt;pre&amp;gt;# echo 0 &amp;gt; /dev/backlight&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== onboard Poti ====&lt;br /&gt;
Hierzu muss wieder der Kerneltreiber mit eincompiliert sein, damit man das Gerät &#039;&#039;/dev/adc&#039;&#039; hat. Im FriendlyARM-Kernel ist der Treiber fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Die Funktion getpoti() liest in einer Schleife mehrmals den Potiwert ein und bildet einen Mittelwert, der zurückgegeben wird.&lt;br /&gt;
Die Anzahl der Werte, aus denen der Mittelwert gebildet wird, wird mit dem #define &#039;&#039;LOOPs&#039;&#039; angegeben.&lt;br /&gt;
===== C-Code =====&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
#define LOOPS 12 // 12 Werte fuer Mittelwert&lt;br /&gt;
&lt;br /&gt;
unsigned int getpoti() {&lt;br /&gt;
	int value, i, fd = open(&amp;quot;/dev/adc&amp;quot;, 0);&lt;br /&gt;
	unsigned int add = 0, ret;&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open adc device!\n&amp;quot;); return -1; }&lt;br /&gt;
	&lt;br /&gt;
	for(i = 0; i &amp;lt; LOOPS; i++) {&lt;br /&gt;
		char buffer[30];&lt;br /&gt;
		int len = read(fd, buffer, sizeof buffer -1);&lt;br /&gt;
		if (len &amp;gt; 0) {&lt;br /&gt;
			buffer[len] = &#039;\0&#039;;&lt;br /&gt;
			value = -1;&lt;br /&gt;
			sscanf(buffer, &amp;quot;%d&amp;quot;, &amp;amp;value);&lt;br /&gt;
			add += value;&lt;br /&gt;
		} else {&lt;br /&gt;
			printf(&amp;quot;cant read from adc device!\n&amp;quot;);&lt;br /&gt;
                        close(fd);&lt;br /&gt;
			return -1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	ret = add / LOOPS;&lt;br /&gt;
	return ret;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GPIO ===&lt;br /&gt;
Da der S3C2440 über sage und schreibe &#039;&#039;&#039;130&#039;&#039;&#039; GPIOs verfügt, mit diversen Funktionen, wie I2C, PWM, ..., das setzen der &amp;quot;Drive Strength&amp;quot; (maximaler Strom an machen Pins), ... ist das Ganze nicht mehr so einfach wie bei einem AVR.&lt;br /&gt;
Der Bastler sollte hier schon genau wissen was er will vorallem das [[Media:S3C2440_datasheet_samsung.pdf|Datenblatt]] zu Rate ziehen.&lt;br /&gt;
Die Funktionen und Register des Chips sind ab Seite &#039;&#039;&#039;274&#039;&#039;&#039; (Kapitel &#039;&#039;IO-Ports&#039;&#039;) zu finden.&lt;br /&gt;
Die elektrischen Daten sind ab Seite &#039;&#039;&#039;554&#039;&#039;&#039; zu finden.&lt;br /&gt;
&lt;br /&gt;
==== C-Code für die onboard-Buttons ====&lt;br /&gt;
Hierfür wird wird der Kerneltreiber benötigt. Im FriendlyARM-Kernel ist dieser fest mit drin.&lt;br /&gt;
&lt;br /&gt;
Wenn die Buttons eingelesen werden, erhält man für jeden nicht gerdrücken Buttons &#039;&#039;0x30&#039;&#039; und für jeden gedrückten Button &#039;&#039;0x31&#039;&#039;.&lt;br /&gt;
Die Funktion liest die Buttons ein und vergleicht den Wert, sobald 0x31 kommt, ist sie beendet. Die Buttons sind von 0 bis 5 nummeriert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
int wait4button(int button) {&lt;br /&gt;
	char btn[6] = {&#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;, &#039;0&#039;};&lt;br /&gt;
	int fd = open(&amp;quot;/dev/buttons&amp;quot;, 0);&lt;br /&gt;
	if (fd &amp;lt; 0) { printf(&amp;quot;cant open buttons device&amp;quot;); return(-1); }&lt;br /&gt;
&lt;br /&gt;
	while(btn[button] == 0x30) {	// if a button is released, we read 0x30, if pressed 0x31&lt;br /&gt;
		if (read(fd, btn, sizeof btn) != sizeof btn) {&lt;br /&gt;
			printf(&amp;quot;cant read buttons!&amp;quot;);&lt;br /&gt;
			close(fd);&lt;br /&gt;
			return(-1);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	close(fd);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== GPIO-sysfs ====&lt;br /&gt;
Bei aktiviertem  sys-fs Kerneltreiber für GPIOs, kann man diese im Verzeichnis &#039;/sys/class/gpio/&#039; finden und ansteuern. Eine gute Erklärung ist dazu [http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO#gpio-sysfs hier] zu finden.&lt;br /&gt;
&lt;br /&gt;
=== Real Time Clock ===&lt;br /&gt;
Für die Real Time Clock, welche fest im Prozessor integriert ist, gibt es einen Kerneltreiber.&lt;br /&gt;
&lt;br /&gt;
Lesen/Setzen lässt sich sich sehr einfach mit dem Tool [http://linux.die.net/man/8/hwclock hwclock].&lt;br /&gt;
=== Beispielprogramme ===&lt;br /&gt;
&lt;br /&gt;
Hier habe ich ein paar kleine Beispielprogramme im Quellcode hochgeladen.&lt;br /&gt;
&lt;br /&gt;
* [[Media:led_adc.c]] Herzschlag auf den LEDs, Geschwindigkeit mit Poti einstellen. Compilieren mit &#039;&#039;arm-linux-gcc led_adc.c -o led_adc&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Andere Betriebssysteme ==&lt;br /&gt;
&lt;br /&gt;
=== uCos2 ===&lt;br /&gt;
=== Windows CE ===&lt;br /&gt;
=== FreeRTOS ===&lt;br /&gt;
=== emdedian ===&lt;br /&gt;
&lt;br /&gt;
== Ohne Betriebssystem ==&lt;br /&gt;
&lt;br /&gt;
=== Entwicklungsumgebung ===&lt;br /&gt;
=== Beispiele ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Wo kaufen? ==&lt;br /&gt;
&lt;br /&gt;
Zu beziehen ist das Board entweder über Ebay, meist aus China, oder bei [http://www.watterott.com/de/FriendlyARM Watterott].&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [http://www.friendlyarm.net/products/mini2440 Übersicht auf der Friendlyarm Seite]&lt;br /&gt;
=== Howtos ===&lt;br /&gt;
* [http://wiki.linuxmce.org/index.php/Mini2440 Kernel, u-boot und qemu-mini2440 compilieren]&lt;br /&gt;
&lt;br /&gt;
=== Repositories ===&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/p/mini2440/downloads/list Emdebian+Angstrom Images, s3c_boot_usb]&lt;br /&gt;
&lt;br /&gt;
* [http://www.programmers-projects.de/projekt/mini2440-entwicklungsboard Neues Mini2440 Projekt (angepasster 2.6.33er Linux Kernel, überarbeitetes USB-Upload-Tool für Linux und vieles mehr)]&lt;br /&gt;
&lt;br /&gt;
=== Youtube und ähnliche ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:ARM-Boards]]&lt;br /&gt;
[[Category:Linux-Boards]]&lt;/div&gt;</summary>
		<author><name>Mockup</name></author>
	</entry>
</feed>