![]() |
| Analog Uhr STM32F103C8T6 BPB mit TFT ILI9142 und DS3232 RTC |
Sonntag, 24. Juli 2016
Analog Uhr mit Blue Pill Board (STM32F103C8T6) und dem ILI9143 TFT
Samstag, 16. Juli 2016
Mein ersten STM32 Projekt (Blue Pill Board STM32F103C8T6)
Nachdem ich mit etlichen unterschiedlichen Arduino Boards experimentiert habe,
meine eigenen Boards mit ATMEGA328P Prozessor gebaut habe und meinen
Spass mit den Erweiterungen hatte. Kam mit der Globalisierung eine
seltsame Situation.
Alles, was man selbst baut, ist teurer als ein in China professionell mit SMD Technik hergestelltes fertiges Board. Na gut, dann kaufe ich mit längerer Wartezeit Arduino Nano V3 Boards für 2,50€ pro Stück! Klasse, gleich im 5er oder 10er Pack, funktioniert gut, sehr praktische Größe und unschlagbar günstig.
Die letzten Projekte habe ich mit dem Arduino Nano Boards umgesetzt, keine Probleme. Auf der Suche nach günstigen Boards kamen immer wieder super günstige STM32 Boards, speziell ein minimales Entwicklungs-Board mit einem STM32F103C8T6 Prozessor für 2,50€.
Klingt doch Klasse, Größe stimmt, 32bitter, 64KB Flash und 20KB RAM, 2xI2C, 3xUARTs, 2xSPI Schnittstellen; schlägt deutlich die Möglichkeiten eines Boards, das auf dem ATMEGA328P basiert.
Mit der sehr umfangreichen Arduino Community gibt es kaum Fragen, die offen bleiben.
Unter STM32duino-bootloader findet man Bootloader für die unterschiedlichen STM32 Boards, die eine Programmierung der Boards über den USB Port des STM32 Gerätes aus der Arduino IDE ermöglichen.
Es war für mich garnicht so einfach, das Pinout für mein STM32F103C8T6 zu bekommen, auf OlliW's Bastelseiten; "STM32: Hello World" gibt es eine sehr nützliche und gründliche Analyse und Dokumentation der aktuellen STM32 Boards.
Von ARMmbed aus dem "Hello STM32F103C8T6" Projekt von Zoltan Hudak
Basiert auf der Adafruit GFX Bibliothek
Alles, was man selbst baut, ist teurer als ein in China professionell mit SMD Technik hergestelltes fertiges Board. Na gut, dann kaufe ich mit längerer Wartezeit Arduino Nano V3 Boards für 2,50€ pro Stück! Klasse, gleich im 5er oder 10er Pack, funktioniert gut, sehr praktische Größe und unschlagbar günstig.
Die letzten Projekte habe ich mit dem Arduino Nano Boards umgesetzt, keine Probleme. Auf der Suche nach günstigen Boards kamen immer wieder super günstige STM32 Boards, speziell ein minimales Entwicklungs-Board mit einem STM32F103C8T6 Prozessor für 2,50€.
Klingt doch Klasse, Größe stimmt, 32bitter, 64KB Flash und 20KB RAM, 2xI2C, 3xUARTs, 2xSPI Schnittstellen; schlägt deutlich die Möglichkeiten eines Boards, das auf dem ATMEGA328P basiert.
Mit der sehr umfangreichen Arduino Community gibt es kaum Fragen, die offen bleiben.
Dokumentation
Für die STM32 Gemeinde sieht das noch nicht ganz so gut aus.
Informationen zum Prozessor sind natürlich beim Hersteller ST zu finden.
Es scheint, als ob alle STM32 Bastel-Projekte auf die von Roger Clark gepflegten Artikel verweisen.
Beginnen sollte man mit seinem Wiki.
Das von Roger Clark erstellte Arduino_STM32 Projekt ermöglicht die Entwicklung von STM32 Software mit der Arduino IDE (1.6.9 Arduino.cc oder auch 1.7.10 Arduino.org, braucht Arduino DUE Board Support).
Support für diese Software gibt es unter dem Forum, wo sehr viele interessante Artikel zu finden sind.Programmieren
Unter STM32duino-bootloader findet man Bootloader für die unterschiedlichen STM32 Boards, die eine Programmierung der Boards über den USB Port des STM32 Gerätes aus der Arduino IDE ermöglichen.
Allerdings gibt es bei den meisten BPB ein Problem mit dem USB Port, der Widerstand R12 an PA12 ist mit 10KOhm viel zu hoch, dass das Gerät erkannt wird. Es gibt Bauanleitungen, den 10KOhm Widerstand mit einem mit 1,5KOhm zu ersetzen.
Die Programmierung über den internen Seriellen Modus (DFU, PA9 und PA10, Boot 0 HIGH, Boot 1 LOW) funktioniert gut, man muss darauf achten, dass der USB-Serial Wandler 3.3V Pegel liefert.
Die Programmierung über den internen Seriellen Modus (DFU, PA9 und PA10, Boot 0 HIGH, Boot 1 LOW) funktioniert gut, man muss darauf achten, dass der USB-Serial Wandler 3.3V Pegel liefert.
Pinout
Es war für mich garnicht so einfach, das Pinout für mein STM32F103C8T6 zu bekommen, auf OlliW's Bastelseiten; "STM32: Hello World" gibt es eine sehr nützliche und gründliche Analyse und Dokumentation der aktuellen STM32 Boards.
![]() |
| https://developer.mbed.org/users/hudakz/code/STM32F103C8T6_Hello/ |
Schaltplan für das BPB
I2C Scanner
Anders als beim Arduino, sind hier die I2C Pullup Widerstände (4.7KOhm - 1.5KOhm) zu berücksichtigen. Sonst funktioniert die I2C Erkennung nicht.
ILI9341 8bit Library
SPI ILI9341 Library von Arduino_STM32
Basiert auf der Adafruit GFX Bibliothek
Nachbau dieses Projektes "Mesmerize on Maple Mini STM32F103 Made by Ray Burnette"
![]() |
| Analog Uhr STM32F103C8T6 BPB mit TFT ILI9142 und DS3232 RTC |
Samstag, 12. März 2016
Arduino RFID Modul RDM6300
RFID Technologie ist eine spannende Angelegenheit, nachdem ich erste Erfahrungen mit einem Mifare RFID Modul gesammelt hatte, wollte ich mir ein 125khz RFID RDM6300 Modul ansehen.
Es gibt ausreichend Dokumentation für das Gerät, das mit einer seriellen Schnittstelle ausgestattet ist und mit 9600 bps die RFID Tag Information zum Host überträgt.
Das Format ist einfach, die Nachricht beginnt mit 0x02 und endet mit 0x03, dazwischen ist die Tag ID und 2 Bytes Checksumme.
Die Tag ID wird hexadezimal in seiner ASCII Darstellung übertragen. Für eine dezimale Darstellung muss die Hex Zeichenfolge in einen Zahlenwert umgewandelt werden.
Beispiele:
Die 125khz Tags, die ich aus China bekommen hatte, haben ihre ID fest vergeben und auf dem Gehäuse sichtbar. Also brauchte ich nur solange probieren, bis ich die korrekte ID mit bestätigter Checksum erhalte.
Es gibt ausreichend Dokumentation für das Gerät, das mit einer seriellen Schnittstelle ausgestattet ist und mit 9600 bps die RFID Tag Information zum Host überträgt.
Das Format ist einfach, die Nachricht beginnt mit 0x02 und endet mit 0x03, dazwischen ist die Tag ID und 2 Bytes Checksumme.
Die Tag ID wird hexadezimal in seiner ASCII Darstellung übertragen. Für eine dezimale Darstellung muss die Hex Zeichenfolge in einen Zahlenwert umgewandelt werden.
Beispiele:
- manicbug: 125kHz RFID Module RDM6300
- tronixstuff: Arduino Tutorials – Chapter 15 – RFID
- Wenzlaff.de: Arduino: Wie können RFID Tags eingelesen werden?
Die 125khz Tags, die ich aus China bekommen hatte, haben ihre ID fest vergeben und auf dem Gehäuse sichtbar. Also brauchte ich nur solange probieren, bis ich die korrekte ID mit bestätigter Checksum erhalte.
Samstag, 23. Januar 2016
Arduino RFID Modul RC522
Nachdem ich sehr interessante Beschreibungen von RFID Anwendungen für den Arduino gelesen hatte, wollte ich mir ein RFID Kit für den Arduino besorgen und meine eigenen Erfahrungen sammeln.
Nach doch einer recht langen Wartezeit kamen die beiden RFID RC522 Kits aus China bei mir an.
Neben dem Modul und den Leiterplatten Steckerleisten waren auch zwei RFID Tags im Lieferumfang enthalten.
Nach doch einer recht langen Wartezeit kamen die beiden RFID RC522 Kits aus China bei mir an.
Neben dem Modul und den Leiterplatten Steckerleisten waren auch zwei RFID Tags im Lieferumfang enthalten.
Hintergrund
Wer an mehr Hingrundinformation zu RFID interessiert ist, kann unter Makecourse eine sehr ausführliche Beschreibung bekommen.
Arduino Bibliotheken
Von der Arduino Playground Seite zu RC522 kommt man zur RC522 Bibliothek von Miki Balboa (miguelbalboa), die eine umfangreiche Dokumentation mit Fritzing Darstellungen für die Anwendung bietet.
Hier die Beschreibung des Pin Layouts für die Nutzung der Bibliothek.
Hier die Beschreibung des Pin Layouts für die Nutzung der Bibliothek.
Schnell war ein kleines Demo auf dem Breadbord zusammengesteckt, 2 von 4 RFID Transpondern sind bekannt und lassen eine grüne LED leuchten, sonst eine rote...
Weiter geht es, die RFID Transponder mit Informationen zu beschreiben, aus denen dann Zugriff gewährt wird oder eine Anzeige auf einer LCD dargestellt wird.
Dazu werden die fabrikneuen Tags mit einem Namen und einer Pin beschrieben.
Zukünftig würden auch die Schlüssel geändert werden, aber das sind dann nur Details.
Zum Auslesen und Anzeigen auf einem LCD Display und dann weiter ein Relay oder Servo zum Öffnen einer Tür, durch den Pin könnte man zusätzlich noch mit einem Keypad den im Transponder gespeicherten Pin abfragen.Beispiel einfachste Zugangskontrolle
Dazu braucht man ja wenigstens zwei Dinge, etwas, was die Tags so vorbereitet, damit sie dann ausgewertet werden können.Dazu werden die fabrikneuen Tags mit einem Namen und einer Pin beschrieben.
Zukünftig würden auch die Schlüssel geändert werden, aber das sind dann nur Details.
![]() |
| links werden die Tags beschrieben, rechts ausgewertet |
![]() |
| Zugang OK, der Name wird ausgelesen und angezeigt |
![]() |
| Alarm! Unbefugter Zugang, das ging noch mal gut... |
Montag, 4. Januar 2016
433MHz Kommunikation als Zeitgeber
Mit meinem DCF77 Projekt, hatte ich die Möglichkeit, die Uhrzeit sehr genau zu bestimmen und anzuzeigen.
In anderen Projekten, die eine RTC nutzen, nutzte ich die DCF77 Bibliothek und verband das DCF77 Signal und Masse der beiden Boards, um so die RTC genau zu stellen.
Diese Methode funktioniert, ist aber mühsam.
Es wäre doch sehr bequem, die Zeit und das Datum drahtlos zu verteilen und auf der Empfänger-Seite wird ein SyncProvider genutzt, der aus der empfangenen Nachricht die Zeit synchronisiert.
Das Datum und die Zeit werden jetzt von der DCF77 synchronisierten Uhr gesendet, jede Sekunde die komplette Information, allerdings nur auf sehr kurze Distanz.
Der Empfänger braucht jetzt nur die VirtualWire Bibliothek zu nutzen, die Nachricht zu empfangen und als Datum/ Zeit zurückzugeben, als SyncProvider.
In anderen Projekten, die eine RTC nutzen, nutzte ich die DCF77 Bibliothek und verband das DCF77 Signal und Masse der beiden Boards, um so die RTC genau zu stellen.
Diese Methode funktioniert, ist aber mühsam.
Es wäre doch sehr bequem, die Zeit und das Datum drahtlos zu verteilen und auf der Empfänger-Seite wird ein SyncProvider genutzt, der aus der empfangenen Nachricht die Zeit synchronisiert.
433MHz Rx/Tx Module
Diese Module bekommt man recht günstig auch gleich als Paket mit 10 Sendern und Empfängern.
Erweiterung des DCF77 Moduls für den 433MHz Sender
Das Datum und die Zeit werden jetzt von der DCF77 synchronisierten Uhr gesendet, jede Sekunde die komplette Information, allerdings nur auf sehr kurze Distanz.
Der Empfänger braucht jetzt nur die VirtualWire Bibliothek zu nutzen, die Nachricht zu empfangen und als Datum/ Zeit zurückzugeben, als SyncProvider.
433MHz SyncProvider Empfänger
Sonntag, 3. Januar 2016
THDuino Knight Rider
Aus dem Arduino Knight Rider Post (die Knight Rider Version 3) habe ich die Idee eines LED Lauf-Licht genommen, um es mit einem kleinen Shield für den THDuino zu bauen.
Es sind 8 LEDs, die über Transitor von Arduino Ports angesteuert werden.
Die Laufzeit lies sich nur über eine Programm Änderung beeinflussen, Idee, einen Distanz Sensor nutzen, je dichter ein Objekt kommt, um so schneller läuft das LED Licht...
![]() |
| THDuino mit LED Shield |
Die Laufzeit lies sich nur über eine Programm Änderung beeinflussen, Idee, einen Distanz Sensor nutzen, je dichter ein Objekt kommt, um so schneller läuft das LED Licht...
I2C Scanner mit 3Wire LCD Anzeige
Der für mich bequemste Weg ein 16x2 oder 20x4 LCD Display zu steuern ist über den I2C Bus.
Funktioniert zuverlässig und ist sehr einfach aufzubauen.
Es ist manchmal mühsam, die Adressen der Geräte herauszufinden, manchmal ist die Dokumentation falsch, also programmiert man den I2C Scanner Sketch und lässt sich die verbundenen Geräte über den Seriellen Monitor anzeigen.
In diesem Projekt nutze ich ein 3-Wire LCD Display, um die I2C Adressen, der angeschlossenen Geräte anzuzeigen.
Der Sketch ist der original I2C Scanner mit der zusätzlichen Ausgabe auf dem LCD Display, in meinem Fall ein 16x2 Display für ein 20x4 Display müssten minimale Anpassungen durchgeführt werden.
Funktioniert zuverlässig und ist sehr einfach aufzubauen.
Es ist manchmal mühsam, die Adressen der Geräte herauszufinden, manchmal ist die Dokumentation falsch, also programmiert man den I2C Scanner Sketch und lässt sich die verbundenen Geräte über den Seriellen Monitor anzeigen.
In diesem Projekt nutze ich ein 3-Wire LCD Display, um die I2C Adressen, der angeschlossenen Geräte anzuzeigen.
![]() |
| Anzeige von 4 erkannten Geräten mit den Adressen-Informationen |
![]() |
| Aufbau der 2 LCD Displays und der RTC mit EEPROM |
![]() |
| Hier sieht man das 3Wire Board für die LCD Anzeige |
Abonnieren
Posts (Atom)

























