PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funkwecker - R8C/13 - GLCD - SD-Card - ClickWheel - Musik ausgabe



KR-500
10.07.2011, 01:48
Hallo zusammen,

wie der Titel vielleicht schon sagt will ich euch meinen selbstgebauten Funkwecker vorstellen. Der Funkwecker besitzt ein Graphic LCD und eine SD-Card von der aus Musikabgespielt werden kann. Als besonderes Gimmick habe ich dem Funkwecker zum Bedienen ein Click Wheel verpasst (http://en.wikipedia.org/wiki/IPod_click_wheel). Dadurch kann man den Wecker recht komfortabel bedienen. Hier: http://www.youtube.com/watch?v=mM28b5A9JFM ist ein kleines Video von dem Wecker, leider ist meine Kamera nicht so doll desewegen kann man eventuell nicht alles erkennen was auf dem Display ist. Ich werde den Wecker einfach mal alle Module des Weckers beschreiben, dazu gibt es erst mal zwei Bilder zur Übersicht.

19295 19296

SD-Card

Die SD-Card wird über ein Widerstandsnetzwerk an den Mikrokontroller angeschlossen, so wie es auf der Seite von Ulrich Radig beschrieben ist. Im Programm habe ich die Low-Level Routinen zur Ansteuerung der SD-Card benutzt. Dann habe ich mir noch eine Funktion geschrieben, die nach einer Datei sucht und deren Adresse und Größe zurück gibt. Später werden dann die Daten von der SD-Card direkt zur Ausgabe weitergegeben, deswegen braucht man auch keine 512 Byte großen Arrays.

Sound

Zur Soundausgabe verwende ich zwei Timer, einer der eine sehr schnelle 8-Bit PWM erzeugt, dieser wird als DA-Wandler benutzt und dann noch einen zweiten Timer, der 16000mal in der Sekunde einen Interrupt auslöst. Damit kommt man dann auf eine Samplerate von 16kHz mit der Bittiefe 8. Da der kleine Mikrokontroller keine MP3s dekodieren kann und mir hardware decoder zu teuer waren bin ich auf .wave files ausgewichen, wenn diese im PCM-Format formatiert sind, kann man die Sounddaten direkt ausgeben.

Graphic LCD

Das Graphic LCD ist ein DG-12232 von Pollin, das ist eigentlich sehr Komfortabel anzusteuern mit einem AVR, einziger Nachteil ist das das LCD eine negative Kontrastspannung braucht, diese erzeuge ich indem ich einen MAX232 ein wenig zweckentfremde. Eigentlich wollte ich eine Ladungspumpe realisieren aber das wollte nicht so richtig klappen.
Um Bitmaps auf das GLCD zu bekommen habe ich ein Excel-File gemacht mit dem man jeden Pixel setzten und löschen kann. Gleichzeitig wird dann in einer Tabelle das ganze als Array für den AVR ausgegebn, so dass man einfach mit Copy & Paste die Bitmap ins Projekt aufnehmen kann. Wer intresse an dem Excel Dokument hat kann sich bei mir melden.


Wetterstation

Die Wetterstation beinhaltet einen Regensensor und zwei Temperatursensoren, einen für Innen und einen für Außen. Die Temperatursensoren sind einfache PTCs, die in Reihe zu einem Widerstand geschaltet sind, mit anderen Worten gesagt habe ich also einen Spannungsteiler aufgebaut. Der Regensensor ist eine einfache Darlingtonschaltung, die den Strom zwischen zwei Messfühlern verstärkt, dies wird dann von dem µc eingelesen.

DCF77

Zum Empfang des Zeitsignals habe ich Anfangs das Pollin DCF77 Modul verwendet, das hat eigentlich ganz gut geklappt allerdings war mir das Ganze zu instabil, da schon bei der kleinsten Berührung der Empfang weg war. Deswegen habe ich mir das DCF77 Modul von Conrad zugelegt. Hier muss ich dann mal sagen, dass wenn jemand das selbe vorhat wie ich derjenige auf jeden Fall die 5Euro mehr für das Conrad Modul ausgeben sollte, weil man damit einfach mehr Freude hat.
Zur Software kann man Sagen, dass ich einen Externen Interrupt verwende und einen Timer. Der Timer löst einmal in der Sekunde einen Interrupt aus und detektiert so das Synchronisationsbit, während der Externe Interrupt benutzt wird um jeweils die steigende und fallende Flanke zu detektieren und so die Länge eines Impulses zu messen.

Click Wheel

Das Click Wheel habe ich für 8 Euro bei Ebay erstanden und ist von dem Ipod Nano der 3.Generation. Da Apple leider keine Datenblätter zur Verfügung stellt musste ich einen kleinen Logic Analyser bauen, der das Protokoll analysiert, der LA ist sehr einfach gehalten, er fängt einfach mit dem ersten Impuls auf der Clock Leitung an aufzuzeichnen und alles in einem großen Array zu Speichern, später sendet er dann die Daten per RS232 an den PC. Am PC empfange ich die Daten mit HTerm und kopiere sie dann in Excel wo ich das ganze schön darstellen kann. Das sieht dann in etwa so aus:
19297
Letzendlich braucht man nur einen Externen Interrupt, der bei der steigenden Flanke auf der Clock-Leitung auslöst und dann die Datenleitung einlist. Das Click Wheel sendet immer 32-Bit lange Datensätze, wobei das erste und letzte Byte immer gleich sind. Im zweiten Byte steht die aktuelle Position des Fingers auf dem Rad und im dritten stehen die Buttons die gdrückt bzw. losgelassen wurden. Das schöne an dem Click Wheel ist, dass es kapzitiv Funktioniert und deswegen auch durch 1mm Sperrholz funktioniert (siehe Video).Wenn besonderes Interesse an dem Click Wheel besteht mache ich gerne noch einen neuen Thread auf, indem ich noch ein bisschen mehr darüber erzähle.

So das wars jetzt erst mal von mir, hoffe ich habe nichts vergessen (ist ja auch schon spät ;)), würde mich über Fragen, Kritik und Anregungen freuen.

KR-500

radbruch
10.07.2011, 02:54
Mir fehlen die Worte.

Genial?

:)

Klasse Projekt, super dokumentiert und unglaublich trocken präsentiert. Die beste "Zusammenfassung" eines Projekts die ich bisher gelesen habe.

o.g.1985
10.07.2011, 05:36
Erst mal muss ich sagen Super Project es gefällt mir. :)

Zu dem DCF77 von Pollin Danke für den Tipp denn ich hab die Antenne mit eine "Schlauch Clip" befestigt und hatte nie einen Empfang. :(
Kannst du noch mehr dekodieren als das Zeit / Datum Signal ? Denn ich wollte mal ( Wetterdaten / DCF77-Alarmsignal ) dekodieren hatte aber keine Ansatz wie ich sowas machen sollte. :(

Also ich hätte Interesse am Click Wheel das teil würde ich dann meine RP6 spedieren. :)

MFG Oliver G

021aet04
10.07.2011, 13:01
Sehr interresantes Projekt. Das ist das R8C Board von Elektor oder? Ich habe auch 2 aber verwende ich nicht, da ich Atmels programmiere (Attiny, Atmega). Am Anfang habe ich etwas damit programmiert, bin dann aber bei den AVRs geblieben.

MfG Hannes

KR-500
10.07.2011, 22:22
Hallo zusammen,

erst mal Danke für das Lob man fühlt sich immer sehr bestätig :p.


Kannst du noch mehr dekodieren als das Zeit / Datum Signal ? Denn ich wollte mal ( Wetterdaten / DCF77-Alarmsignal ) dekodieren hatte aber keine Ansatz wie ich sowas machen sollte.

Also ich habe die Wetterdaten leider nicht dekodiert, weil ich auch selber eine kleine Wetterstation gebaut hatte. Wenn dich das aber trotzdem interessiert habe ich mal ein paar interessante Links gefunden (bei dem letzten weiß ich aber nicht ob der überhaupt weiterhilft):
http://www.mikrocontroller.net/topic/61886
http://www.mikrocontroller.net/articles/DCF77_Wetterinformationen
http://www.hkw-elektronik.de/pdf/DB W-Protokoll-V 1.pdf (http://www.hkw-elektronik.de/pdf/DB%20W-Protokoll-V%201.pdf)


Also ich hätte Interesse am Click Wheel das teil würde ich dann meine RP6 spedieren.

Dann werde ich demnächst noch einen neuen Thread aufmachen und alles genauer beschreiben, weil das noch ein bisschen mehr ist. Werde aber vor Donnerstag eher nicht mehr dazu kommen.


Das ist das R8C Board von Elektor oder?

Ja das stimmt, das Board ist von Elektor, normalerweise benutze ich auch AVRs aber für dieses Projekt habe ich den R8C/13 benutzt, weil es für den Testo Schülerwettbewerb war. Und ich muss sagen das mir die AVRs besser gefallen, weil diese auch weiter verbreitet sind und zum Teil einfacher im Programmieren sind, dafür wird der R8C/13 bereits mit RS232 Bootloader hergestellt. Wenn du interesse an den Sourcen hast kann ich sie dir gerne zu schicken.

Viele Grüße
KR-500

021aet04
10.07.2011, 22:37
Danke für das Angebot, werde aber die Sourcen nicht brauchen, da ich eher bei den Atmegas/Attinys bleibe. Die Gründe hast du ja schon geschrieben. Das mit der RS232 Programmierung stimmt. Das ist wirklich komfortabel. Was mir bei den AVRs besser gefällt ist das man Einstellungen wie z.B. Taktquelle über die Fuses einstellt. Bei den R8C muss man das im Programm jedesmal angeben/einstellen.

Ich werde, auch wenn die R8C einige Vorteile hat, bei den Atmels bleiben, da hier die Vorteile, wie ich finde, überwiegen.

MfG Hannes