Mehr ARM…..

Mittlerweile habe ich mir ein nettes ARM-Board zusammengelötet und eine Firmware auf Basis der Codebase von microbuilder.eu gebaut.

20130316_220808

Unten links in hellblau sieht man den DHT11 Feuchtigkeits- und Temperatur-Sensor.  Direkt drüber der LPC1114 im DIP28. Neben dem DHT11 ein 25Mhz Quarz, der LPC-Core läuft dann via PLL auf 50Mhz. Der untere 8-Pin Käfer rechts ist ein i2c EEProm, darüber eine DS1337 i2c Realtime Clock. Der 16-Pin oben rechts im Eck ist ein PCF8574 i2c IO-Extender für den HD44780 basierten 2×16 Zeichen Display von Pollin. Unten rechts sieht man das USB2UART Breakout.

Auf dem ersten Bild sieht man Datum und Uhrzeit, die von der DS1337 gelesen und entsprechend dargestellt werden. Auf dem Bild unten sieht man Feuchtigkeit und Temperatur vom DHT11.

20130316_220800

Die linke Taster ist für den System-Reset. Beide in Kombination dienen dazu, das System in den Bootloader zu bringen, damit neue Firmware geflasht werden kann. Der Kontrast des Display wird über ein RC-Glied am PWM des 16-Bit Timer0 geregelt. Die Stromversorgung des kompletten Boards erfolgt über das USB Breakout. Das Board stellt 3.3V bis 100 mA sowie 5V bis 500 mA zur Verfügung. Der Display wird mit 5V betrieben. Der Rest der Schaltung mit 3.3V. Selbst der PCF8574 läuft mit 3.3V, da dem Display auf den I/O Leitungen ein 3.3V Logik-Pegel reicht. Die meisten I/O PINs des LPC1114 sind auch 5V tolerant, sodass man auch direkt am Microcontroller 5V Komponenten anbinden kann. Genaue Informationen zu den jeweiligen PINs finden sich im Datenblatt. Die PIN-Leiste links oben führt noch einige I/Os raus. Die 4 PINs oben in der Mitte führen den i2c plus 3.3V und GND. Die grünen Drahtbrücken sind der i2c Bus, gelb ist GPIO, weiss ist GND und rot 3.3 bzw 5V. Grau und blau sind das RX und TX vom UART.

Hinsichtlich der Software habe ich die Codebase von Microbuilder.eu von allen Treibern befreit, die ich erst mal nicht brauche. Dann habe ich für den DHT11, die DS1337 sowie die Ansteuerung des Display via PCF8574 die vorhandenen Treiber vom Atmega auf den ARM portiert. Hier waren vor allem Anpassungen hinsichtlich der GPIO und des I2C notwendig. Für das präzise Timing, dass vor allem beim Bit-Bang vom DHT11 und der Display-Steuerung notwendig ist, verwende ich einen 32-Bit Timer. Bisher ist es mir nicht gelungen, dafür den 24-Bit Systick-Timer zu benutzen und einen Timer einzusparen. Leider ist die Code-Qualität noch nicht so gut, dass ich diesen hier veröffentlichen möchte. Hole das aber nach, sobald der Code vorzeigbar ist.

Als nächstes TODO steht noch der EEProm aus, sowie eine Erweiterung der CLI-Konsole um die Möglichkeit die Uhrzeit einzustellen. Dann die Anbindung der Funkmodule RFM12 und RFM70, die ich auch am Atmega gerne einsetze und am Lager habe.  Wenn sich dann im Laufe der Zeit ein optimales Subset aus Funktionen gefunden hat, dann werde ich das finale Board in Eagle layouten und ätzen.

Leave a Reply