Erstes Projekt: Wecker :)

Hallo,

ich habe die letzten Tage darüber nachgedacht, welches nützliche Helferlein in meinem Haushalt fehlen könnte.
Das sinnvollste erscheint mir momentan ein neuer Wecker, mit Uhrzeit-Anzeige und zwei Weckzeiten.

Das LC-Display, den Arduino Uno und ein wenig krimskrams habe ich schon da. Ich habe öfter von einem RTC-Modul für DFC77-Zeitempfang gelesen - das werde ich wohl auch benötigen.

Was ich mir technisch vorstelle

  • Uhrzeit-Anzeige auf dem LCD (2x20 Zeichen), dazu Status-Symbole, ob einer / beide Weckzeiten aktiv (scharf) sind
  • Temperatur-Anzeige im Display (den Sensor hab ich da, warum also nicht..)
  • Ein Menü zum Einstellen der beiden Weckzeiten
  • Zwei kleine Tasten zum Bedienen des Menüs / Einstellen der Weck- bzw. Uhrzeit
  • Ein oder zwei Kippschalter zum Scharfschalten der beiden Weckzeiten
  • Ein größerer Taster für Snooze
  • Ein kleiner Lautsprecher für nervtötende Klänge...

Als "besonderes" Feature würde ich gerne einen Distanzsensor verwenden, um die Belichtung des Displays zu steuern. Mich stören Lichter in der Nacht - Flutlichtbeleuchtung habe ich jetzt auch schon. Da fand ich es besser, wenn das Display nach z.B. 5 Minuten letzter Bedienung aus geht, und man die Beleuchtung durch "mit der Hand vor/über den Wecker bewegen" wieder für 1 Minute aktivieren könnte.
Was für einen Sensor würde ich hierfür benötigen? Er sollte nur etwa auf 20 cm anschlagen - sonst geht er immer an, wenn man sich im Bett rumdreht :slight_smile:

Obligatorisch würde ich dann ggf. noch eine RGB-LED (oder mehrere) ansteuern, um eine Art "Aufwachlicht" zu bauen, dass farblich pulsiert (von kalten, langsamen Farben zu Signalfarben in schneller Frequenz).

Habe ich in meiner obigen Aufstellung ggf. etwas vergessen? Habt ihr vielleicht noch Anmerkungen oder Ideen?

Als Distanzsensor rate ich Dir einen SRF05 (Ultraschall Meßbereich 1 bis 400cm ) oder den Sharp GP2D120XJ00F (Meßbereich 4 bis 30cm). Den Meßbereich kannst Du ja per SW begrenzen.
Grüße Uwe

neovanmatix:
Ich habe öfter von einem RTC-Modul für DFC77-Zeitempfang gelesen - das werde ich wohl auch benötigen.

Das sind zwei unterschiedliche Dinge. Die RTC (Real Time Clock) ist ein autonom funktionierender "Zeitzähler", den kann man bei Bedarf abfragen bzw. stellen kann. In der Regel werden die RTCs batteriegepuffert, dass sie eben auch weiterläuft, wenn der Arduino bzw. allgemein der Mikrocontroller nicht mit Spannung versorgt wird.
DCF77-Module hingegen sind Funkuhrmodule, sie empfangen das Signal aus Mainflingen. Die dekodierte Uhrzeit kann dann z.B. der RTC übergeben werden, um sie zu stellen.

Hallo,

ich habe mich jetzt erstmal dafür entschieden, nur einen DCF77-Empfänger mitzubestellen.
Anscheinend lässt sich darüber und die interne Clock bereits ein Uhrzeitsignal auf dem Display ausgeben - und wenn man alle paar Minuten die Uhrzeit über das DFC-Modul prüft, sollte das auch halbwegs aktuell laufen.
Wenn ich da dann feststellen sollte, dass das doch nicht so sonderlich gut läuft, hole ich mir noch eine RTC dazu.

Werde mich heute Abend mal an einen kleinen Schaltplan wagen und hier posten.

Normalerweise machet man das umgekehrt zuert eine RTC und dnnn eventuell einen DCF77 Empfänger. Der DCF77 Empfänger braucht eine bis 2 Minuten (je anch Programmierung) um die Zeit zu bestimmen und ist ziemlich störanfällig. Daraus ergibt sich daß alleine mit dem DCF77 Du keine Uhr bauen kannst. Du brauchst auf alle Fälle eine RTC zB eine Breackout mit DS1307.
Grüße Uwe

Du brauchst für den Sync des DCF77 eine volle Minute!
Also im besten Fall 61 Sekunden.
Ohne Empfangsprobleme kann es aber auch schon 119 Sekunden dauern.
Ganz zu schweigen von Empfangsschwierigkeiten.
Ich habe auch festgestellt das schon mal Müll beim Sync raus kommt.
Und ohne eine RTC reicht ein ganz kurzer Stromausfall damit deine Uhr bei 0 los geht.
Wenn dann der Sync nicht funktioniert nützen dir auch zwei Weckzeiten nichts.

Prio ist meiner Meinung nach die RTC.
Die kann man dann über alles mögliche stellen.

  • LAN - Internet
  • GPS
  • DCF77
  • Tasten

Aus eigener Erfahrung: DCF77 ist gar nicht so einfach.

Als Sensor würde ich dir den SHARP GP2D15 Infrarotsensor empfehlen.
http://www.ebay.de/itm/SHARP-IR-GP2D15-Sender-Empfanger-10-80cm-5V-30mA-2-St-/300545033132?pt=Bauteile&hash=item45f9e143ac

Dieser Sensor hat eine Jugment Distance von ca. 24cm.
Er liefert ein digitales Ausgangsignal, also nur ein HIGH oder LOW Signal.
Je nachdem ob etwas die 24cm unterschritten hat oder nicht !

Wie ich hier schonmal in meinem Post für eine Binäruhr geschrieben habe halte ich den Arduino-Quarz eigentlich für ausreichend um (vor allem über einen tag, danach könnte man neu synchronisieren) die zeit stabil zu halten. Allerdings würde ich dann dazu empfehlen sich einen etwas besseren quarz zu kaufen und nicht den auf dem arduino verwendeten quarz zu nutzen, da dieser doch ziemlich ungenau zu sein scheint

Hallo,

also, was ich jetzt nicht so ganz verstehe...

Erstmal: Ich kann den Arduino selbst nutzen, um quasi eine Uhrzeit mitlaufen zu lassen. Das sei ungenau (ich meinte gelesen zu haben, dass man pro 24h etwa einen Unterschied von 5 Minuten (oder mehr) haben kann).

Was ich jetzt NICHT verstehe: Wenn ich alle 15 Minuten einen DCF-Sync durchführe, komme ich doch - auch mit internem Quarz - auf eine Ungenauigkeit pro 15 Minuten von vielleicht 10 Sekunden.

Okay, natürlich, wenn man eine Uhr baut, sollte sie auch nach Möglichkeit exakt funktionieren. Aber von der Theorie her, wäre das für eine 0815 Uhr doch auch ausreichend? Oder reden wir hier von Ungenauigkeiten von mehreren Minuten in einer Stunde?

also ich hab das mal 24 stunden mit nem arduino mega gemessen und per computer geloggt (und der arduino uno zeigte ein recht ähnliches verhalten), die abweichung war auch ohne große schwankungen recht linear (man kann sich also auch überlegen den quarz zu vermessen und ne ausgleichsrechnung in die SW einzubauen) und kam da auf ca. 10 sekunden pro stunde (und damit liegt die abweichung in der gröenordnung 0,1%, zum vergleich armbanduhren gehen besser als 30ppm, also 0,003%). da aber in den arduinos ab werk scheinbar recht minderwertige quarze verwendet werden würde ich sagen das es nötig ist jeden einzeln zu vermessen (oder alternativ 10 euro in ein RTC modul zu investieren, so man denn unbedingt will) oder einen neuen zu kaufen und den alten auszulöten... probleme bekommst du wenn du zuerst auf einem gekauften arduino arbeitest, ausgleichsrechnungen für den quarz machst und danach auf einen stand-alone atmega umsteigst, der dann natürlich nen anderen quarz hat, der eine solche rechnung für gewöhnlich nicht braucht... ich könnte dir für einen hinreichend guten quarz (hab damit eine uhr gebaut und verschenkt, die läuft auf höchstens eine sekunde pro tag zu schnell) reichelt empfehlen, die bieten 16MHz quarze mit +/- 30 ppm (+/- 30 ppm thermische) ungenauigkeit an, die halten auch was sie versprechen und kosten glaube ich nichtmal nen euro...

Bleibt noch das Problem das die Uhrzeit weg ist wenn ein Stromausfall war.
Und wie sicher bist du das die Funkuhr dann empfang hat und sich der Wecker wieder stellt.
Liegt ein Handy oder Schnurlostelefon auf dem Nachttisch kann das schon vorbei sein.

Natürlich geht das auch ohne RTC aber es ist nicht Funktionell.

Eine Funkuhr die im laufe des Tages etwas falsch geht oder sich nicht einstellt währe mir nicht so wichtig wie eine RTC die ich einmal einstelle und dann auf Zeit X etwas ungenau ist weil ich sie nicht Sekundengenau eingestellt habe.

Prinzipiell geht es natürlich, das DCF77-Abfrageintervall so kurz zu wählen, dass die resultierende Abweichung innerhalb des Intervalls verschwindend klein wird. DCF-Module verbrauchen aber auch gut Strom, daher wird bei vielen Funkweckern nur einmal am Tag synchronisiert, um die Batterielaufzeit zu erhöhen. Zusätzlich kann es auch mal vorkommen, dass man auch über einen längeren Zeitraum keinen Empfang hat, da bietet sich die RTC wieder an...

Falls dich interessiert, wie das DCF-Signal aussieht und wie man es per Hand dekodiert: sth77 | Arduino Blog: Das DCF77-Signal
Natürlich gibt es auch fertige Libraries, die das können. Aber so versteht man auch die Funktionsweise der DCF-Bibliothek: Abwarten bis zum Synchronisationsbit und dann eingehende Impulslängen auswerten, als Bits werten und zu den benötigten Angaben zusammensetzen.

Du warst es doch auch, der das komisch gestaltete 20x2-LCD hat, oder? Da habe ich dir das I2C-Modul von Pollin vorgeschlagen. Bei Pollin findest du für 5 Euro auch ein DCF-Modul. :wink:

MueThoS:
Bleibt noch das Problem das die Uhrzeit weg ist wenn ein Stromausfall war.
Und wie sicher bist du das die Funkuhr dann empfang hat und sich der Wecker wieder stellt.
Liegt ein Handy oder Schnurlostelefon auf dem Nachttisch kann das schon vorbei sein.

Natürlich geht das auch ohne RTC aber es ist nicht Funktionell.

Eine Funkuhr die im laufe des Tages etwas falsch geht oder sich nicht einstellt währe mir nicht so wichtig wie eine RTC die ich einmal einstelle und dann auf Zeit X etwas ungenau ist weil ich sie nicht Sekundengenau eingestellt habe.

also der funkwecker an meinem schreibtisch zeigt auch keine uhrzeit mehr an wenn einmal die batterie alle ist und muss erst wieder auf empfang warten... ich weiß auch nicht ob es an dem etwas älteren modell liegt, aber ich könnte ihn nichtmal per hand stellen... ich halte eine variante mit manuell einstellbarer uhr für den notfall sowie dcf-stellung in regelmäßigen abständen nicht unbedingt für unfunktionell, immerhin ist das so in etwa das was man in jedem laden kaufen würde... sogar noch besser, alle uhren in der küche meiner mutter haben weder RTC noch DCF...

Also; momentan (und auch die letzten Tage) habe ich das Problem, dass ich nicht weiß, wo ich das RTC-Modul erkriegen soll. Bei Pollin, Reichelt und Conrad gibts das nicht - und bei Watterott ist es nicht Lieferbar.
Dazu kommt, dass ich noch einen USB Serial 2 Arduino-Adapter brauch - und den habe ich bisher auch nur auf Watterott gefunden (am WE nicht lieferbar, mittlerweile wieder).
Und ich ärgere mich gerade - das DCF77-Modul bei Reichelt hat 12-13 Euro gekostet; hätte ich das mit dem Tipp bei Pollin nur früher erfahren :slight_smile:

Ja, ich war der, mit dem komischen LCD :slight_smile: Warte jetzt erstmal auf einen Wannenbuchsen-Ding mit Stecker und verlöte das erstmal so (ohne I2C); und wage mich dran, sobald mir die PINs am Arduino ausgehen :slight_smile:

Gibts den noch eine gute Quelle für Arduino-Module und Bauteile?

Naja, man muss ja nicht unbedingt ein fertiges RTC-Modul nehmen, ein DS1307 mit zusätzlichem Uhrenquarz, Pufferbatterie usw. ist oftmals besser erhältlich.
Fündig wirst du bspw. auch bei EXP-Tech oder bei Segor in Berlin.

ansonsten habe ich recht gute erfahrung mit bestellungen über ebay gemacht, zumindest wenn man es nicht eilig hat, dann bekommt man meist wesentlich günstiger die teile direkt aus china innerhalb von 20 bis 30 tagen...

Na also, da kommen wir der Sache näher.
Bei EXP Tech gibts das RTC verfügbar, fertig gelötet für ~5 Euro (ohne Batterie), und auch das USB2Serial-Kabel. Ich denke mal, da bestell ich mir das :slight_smile:

Ich zahl gerne die 2 Euro mehr, da ist die wahrscheinlichkeit größer, die Ware auch wirklich zu erhalten :slight_smile:

Wenn du sowieso dort bestellst, kannst du den ISP gleich mitbestellen. Ist immer praktisch, sowas zu haben:

http://www.exp-tech.de/product_info.php?info=p75_dfrobot-usbtinyisp-arduino-bootloader-programmer.html

derder:
also ich hab das mal 24 stunden mit nem arduino mega gemessen und per computer geloggt (und der arduino uno zeigte ein recht ähnliches verhalten), die abweichung war auch ohne große schwankungen recht linear

Wer sagt Dir, daß der PC einen genaueren Takt hat als der Arduino? Um genaue Werte zu erhalten brauchst Du ein Referenzsystem das genauer ist, als das System das zu messen ist.

...(und damit liegt die abweichung in der gröenordnung 0,1%, zum vergleich armbanduhren gehen besser als 30ppm, also 0,003%). da aber in den arduinos ab werk scheinbar recht minderwertige quarze verwendet werden würde ich sagen das es nötig ist jeden einzeln zu vermessen.

Vieleicht ist der Quarz auch so (für einen Quarz) ungenau, weil das gar kein Quarz ist, sondern ein Resonator http://de.wikipedia.org/wiki/Keramikresonator.

Qurze haben normalerweise eine Tolleranz von 100ppm.

Grüße Uwe

Was wird denn "offiziel" in einem arduino verbaut? ich meinte das es quarze sein... hab ich dann zwei fälschungen hier liegen? und ich denke das die tatsache, dass mein rechner mit stündlichen abgleich über time.nist.gov eine sehr lineare abweichung misst, die auch sehr gut mit einer langzeitmessung (>5 tage) mit einer funkuhr korreliert, spricht dafür das diese zahlen recht gut sind... dem physikalisch technischen bundesamt habe ich es aber noch nicht gegeben, aber ich hoffe uwe ist auch vorher noch damit zufrieden :wink: