BASCOM-Firmware v2.0 für Arduino Uno R3 (ATmega328P)

Im Zuge der Erneuerung einer vorhandenen Läutanlage sollte im Nachbarort die elektronische Kirchenglocke modernisiert werden. Da eine professionelle Läutanlage für die kleine Dorfkirche zu umfangreich und zu kostspielig gewesen wäre (teilweise bis zu 3500,-€), entwarf ich kurzerhand auf Basis des KLS365 Architekturbeleuchtungssystems die hier beschriebene elektronische Läutanlage. In einem kleinen Hutschienengehäuse steuert in Version 1 des Systems ein ATmega32 ein kleines mp3-Soundmodul, welches mp3s von einer Mikro-SD-Karte abspielen kann. Es können in der maximalen Ausbaustufe 20 verschiedene Klänge abgespielt werden, wobei die Abspiellänge nur von der Speicherkarte selbst beschränkt ist. Eine stattliche Anzahl an programmierbaren Speicherplätzen für das zeitgenaue Abspielen der Glockenklänge und ein 433MHz Funkempfänger runden die Anlage schließlich ab. Bei einem reinen Komponentenpreis von rund 100,-€ (Auflistung der Preise siehe weiter unten) ist das eine feine Sache. Die Version 1 basierte noch auf einem ATmega32 auf Lochrasterplatine und vielen einzelnen Lötbrücken. Die Ende 2020 weiterentwickelte Version 2 des Systems basiert nun auf einem Arduino Uno R3 mit ATmega328P , um den Aufbau leichter zu machen und mehr fertige Komponenten einsetzen zu können. Die gesamte Software ist in BASCOM geschrieben und nutzt derzeit ca. 42% des FLASH-Speichers, sodass noch viele eigene Ergänzungen hinzugefügt werden können.

 

Aufwarten kann das Gerät mit den folgenden Daten:

  • 2x16 Zeichen LC-Display mit Menüstruktur zum bequemen Einrichten der Läutanlage
  • Funkuhrempfang per DCF77-Empfänger
  • 433MHz Funkempfänger mit 2 Tasten und bis zu 10 einzelnen Fernsteuerungen (3-Tasten-Variante ebenfalls möglich)
  • mp3-Soundmodul auf Basis des VS10xx Chipsatzes der Firma VLSI (ELV MSM4 MP3-Soundboard)
  • Relaisausgang zum Ein- und Ausschalten eines externen Verstärkers
  • 32 programmierbare Timer-Plätze zum wochentags- und zeitabhängigen Läuten

 

Mögliche Varianten der eGlocke:

Als Hutschienengehäuse (allerdings nur die selbstgebaute Version 1 mit Lochrasterplatine):

Oder in einem Fertiggehäuse (Version 2 mit zahlreichen einzelnen Fertig-Platinen):

eGlocke v2 Aussen

 

Bedienungsanleitung als PDF

eGlocke Anleitung v2.0 vom 28.12.2020

 

Schaltplan

Für Version 1 des Systems musste sehr viel selbst gelötet werden, da zunächst ein ATmega32 in seiner Grundbeschaltung aufgebaut werden muss. Der Schaltplan besteht hauptsächlich aus einer Grundschaltung für den Atmel-Prozessor (Mitte), einem kleinen Spannungswandlerteil zur Erzeugung von +5Vdc aus einem Spannungsbereich von 7V bis 30V (Links) und der Peripherie. Hierzu zählen zum Einen die vier Taster für die Menüführung (Rechts oben), die drei Status-LEDs (Mitte rechts), dem LCD-Anschluss nebst Transistor für die Displaybeleuchtung und Kontrastregler (Mitte), sowie dem DCF77-Empfänger mit einer kleinen Spannungsteilerschaltung zur Erzeugung von 3Vdc. Zusätzlich ist noch ein Transistor zum Ansteuern eines kleinen +5Vdc Relais vorgesehen.

Der nachfolgend gezeigte Schaltplan ist noch für Version 1 mit einem ATmega32 gedacht und soll lediglich verdeutlichen, was technisch in diesem System passiert. Die Version 2 mit Arduino wird einfach fliegend mit einzelnen Drähten entsprechend verbunden. Die als "mp3 Out" bezeichneten Signale werden über einen passenden Basiswiderstand auf einzelne Transistorstufen verbunden, damit man das MSM4-Modul vernünftig ansteuern kann (Taster werden simuliert und Pins über die Transistoren auf GND geschaltet). Es können bis zu 6 einzelne Steuer-Leitungen vom Mikrocontroller zum mp3-Modul gelegt, um die einzelnen mp3-Dateien starten und stoppen zu können (siehe weiter unten). Zusätzlich wird der Steuerausgang des Mikrocontrollers für den Relais-Transistor auch an das mp3-Modul gelegt, da dieses über einen Einschalteingang verfügt, sodass man das mp3-Modul zu 95% der Zeit komplett ausgeschaltet lassen und nur während des Läutens vom Mikrocontroller aus einschalten kann. 

eGlocke Schaltplan

Version 2 des Systems nutzt einen Arduino Uno R3. Nachfolgend kann man die Belegung der einzelnen Pins finden. Alle weiteren Informationen kann man dann wieder oben im Schaltplan von Version 1 nachschauen.

eGlocke ArduinoUnoR3

Einzelne Platinen und Verschaltungen:

Arduino Uno R3

  • Pollin-Bestellnummer: 810411 oder als Nachbau 810762
  • Versorgungsspannung 12V über externes Netzteil

ELV MSM4

  • ELV-Bestellnummer: 150841
  • Versorgungsspannung 5V direkt vom Arduino Uno R3-Board
  • Enabled-Pin auf GND verbinden
  • einzelne BC337-Transistoren mit 4k7-Basiswiderstand zwischen den einezelnen Anschlüssen zu PC0 ... PC3

Pollin-Funkempfänger

  • Pollin-Bestellnummer: 550639
  • VCC 12V von externem Steckernetzteil
  • An COM-Anschlüsse des Relais 5V vom Arduino-Board anschließen
  • NO-Anschlüsse der Relais auf PB1 und PB2 anschließen, PB3 wird nicht genutzt

DCF77-Empfänger

  • Pollin-Bestellnummer: 810054
  • Versorgungsspannung 3,3V direkt vom Arduino Uno R3-Board
  • PON fest auf GND verschalten
  • TCO direkt an Arduino-Board anschließen

Joy-IT I2C 16x2 LCD-Modul

  • Pollin-Bestellnummer: 810672
  • Versorgungsspannung 5V direkt vom Arduino Uno R3-Board
  • SDA auf PC4 anschließen
  • SDC auf PC5 anschließen

Taster, LEDs und Relais

  • drei beliebige LEDs mit Vorwiderständen an angegebene Port-Pins anschließen
  • vier beliebige Taster direkt an Pins gegen GND anschließen (interne Pullups werden verwendet)
  • als Relais wird ein 12V-Relais verwendet, da die 12V des Pollin-Funkempfängers gut verwendet werden können. Alternativ geht aber auch ein 5V-Relais

 

Die groben Komponentenpreise:

  • 25,-€ MP3 Modul von ELV (MSM2 für Version 1 und MSM4 für Version 2)
  • 25,-€ 433MHz 2-Kanal Funkfernbedienung
  • 10,-€ LC Display mit Hintergrundbeleuchtung und I2C-Anschluss
  • 5,-€ DCF77 Empfänger
  • 10,-€ Gehäuse
  • 30,-€ Arduino Uno R3

 

Mikrocontroller und Firmware

Als Mikrocontroller wird ein ATmega328P verwendet, welcher mit der BASCOM direkt über die Arduino Uno R3-USB-Leitung programmiert werden kann, sodass kein zusätzliches Programmiergerät benötigt wird. Als Baudrate muss 115200 Baud (oder die angegebene Baudrate des Arduinos) eingestellt werden. Der Flash-Speicher wird derzeit ca. zur Hälfte ausgenutzt, sodass man die Firmware noch durchaus erweitern kann. Auch kann man ggfs. andere ATmega-Chips verwenden. Es muss dann lediglich die Definitionsdatei in BASCOM geändert werden. Der Sourcecode und die kompilierte HEX-Datei für beide Versionen kann hier heruntergeladen werden:

Download Binärdatei und des Sourcecodes

Für das Programm AVRdude wäre nachfolgendes Kommando gültig - sofern man nicht direkt den Programmer aus BASCOM heraus nutzen möchte/kann:

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude" -C"C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf" -v -patmega328p -carduino -PCOM5 -b115200 -D -Uflash:w:"C:\Temp\eGlocke.hex":i

Dabei wird nicht der EEPROM beschrieben, dessen Inhalt man aber eigentlich auch gar nicht braucht: beim Start des Geräts kann man einfach alle vier Tasten zeitgleich herunterdrücken und das Gerät setzt sich in die Grundkonfiguration zurück. Nach dem Ändern von Einstellungen darf man aber nicht vergessen über das Menü alle Einstellungen in den EEPROM zu speichern, da ansonsten beim nächsten Start alle Einstellungen wieder weg sind.

 

mp3-Soundmodul

Zum  Abspielen der Glockenklänge wird ein mp3-Chip der Firma VLSI verwendet. VLSI bietet hierzu mp3-Decoderchips an, welche über ein SPI-Interface bequem vom Mikrocontroller aus angesteuert werden können. Da ich beim Suchen leider nur auf Quellen für diesen Chip gestoßen bin, wo mich der Decoder knapp 16 Euro gekostet hätte, habe ich ein fertiges Modul von ELV verwendet, auf dem bereits ein VLSI-Chip, sowie ein fertig programmierter ATmega32 und ein SD-Kartenslot enthalten ist. Somit ist das Modul bereits vollständig einsatzfähig und kann über 10 einzelne Taster angesteuert werden.

In der Ausführung MSM2 verwendet das Modul ein gemultiplextes Tastenfeld, sodass man insgesamt 10 BC54x oder BC337 Transistoren benötigt, um diese Matrix von einem anderen µController aus ansteuern zu können. Jedoch lässt sich das auch noch fliegend verdrahten. Die Version MSM4 kann hier direkt mit einem 3,3V-Mikrocontroller verbunden werden - was der Arduino Uno R3 leider gerade NICHT ist - also auch hier am besten Transistoren für die Verbindung nutzen - auch wenn man die einzelnen Ausgangspins des Atmel zwischen High-Impedant und GND umschalten könnte.

Das Modul besitzt einen kleinen NF-Verstärker, sodass man auch gleich einen kleinen Lautsprecher anschließen kann. Ein Stereo Line-Out ist ebenfalls enthalten, welchen ich schließlich verwendet habe. Das MSM2-Modul kann bei ELV unter der Artikelnummer 68-092853 bzw. unter der Bezeichnung "MP3 Sound-Modul MSM 2" für rund 20,-€ bekommen. Das MSM4 unter der Artikelnummer 150841, bzw. unter der Bezeichnung "MP3 Komplettbausatz MP3-Sound MSM4". Das MSM4 erlaubt - anders als das MSM2 - das Abspielen, lediglich so lange eine Taste gedrückt gehalten wird. Dies ist ideal für die eGlocke, da der MP3-Zustand dann immer klar ist. Hierfür muss man einmalig nach dem Zusammenbauen des Moduls die Tasten 2 und 6 für mind. 10 Sekunden halten, bis die rote LED einmal leuchtet (bitte beiliegende Anleitung beachten).

 

Und so könnte das fertige Gerät dann aussehen:

 eGlocke v2 Aufbau