Vorstellung: Arduino Müll-/ Geburtstags- Kalender

Hallo zusammen,

da ich im Januar einen Arduino Uno R3 zum Geburtstag geschenkt bekam, habe ich lange gebraucht um eine Idee zu bekommen, was man denn mit sowas machen kann.

Nach monatelangen Grübeln kam ich endlich auf die Idee:
Als Hausbesitzer muss ich alle Termine für die 4 verschiedenen Müllsorten kennen um am Vortag die Tonne rechtzeitig raus zu stellen. Bisher ein sehr lästiges Unterfangen, da die Stadt Stuttgart es nicht fertig bringt eine App oder ähnliches zu machen. Also ein Papierkalender, der fast täglich angeschaut werden muss. Geburtstage vergesse ich sowieso immer.

Ich dachte, das ist doch mal was sinnvolles, was dieses Gerät übernehmen kann.

Also besorgte ich einen SD Kartenleser, ein DCF77 Modul, einen Kipptaster und ein 4 Zeiliges Display.

Da ich neu war was Arduino angeht, aber glücklicherweise mal programmieren gelernt hatte, konnte ich nach kurzer Einarbeitung, das Programm erstellen.

Es liest nun von der SD Karte eine Textdatei durch, welche alle Daten beinhaltet.
Es stellt die Uhr einmal nachts mit DCF77 Modul
Mit dem Taster kann man die Anzeige des Ereignisses löschen (z. Bsp. Müll wurde rausgebracht)
Nachts und wenn kein Ereignis ansteht ist das Display ohne Beleuchtung.
Bei einem Geburtstag wird das Alter angezeigt und Geburtstage können nicht gelöscht werden.

Hier mal ein paar Bilder:

Wer Interesse am Code hat, einfach melden, ich bin gerne bereit ihn zur Verfügung zu stellen.

Grüße
Jörg

Hallo Jörg,

warum postest du den Sketch nicht direkt hier im Forum.
Ist sicher interessant für viele, auch für mich.

Gruß
HotSystems

hm,

kommt leider ne Meldung ich würde 9000 Zeichen überschreiten.
Sind wohl zu viele Kommentare drin.

Grüße
Jörg

Ich kann es ja mal als Attachment dranhängen

kalender.ino (10.5 KB)

Du kannst auf dem LCD übrigens problemlos kleine Umlaute darstellen. Die sind nur nicht im ASCII Zeichensatz. Siehe Seite 17 in den rechten zwei Spalten:

Dann kannst du einfach das machen:

lcd.print("Papierm\xF5""ll");

Hier würde das wahrscheinlich sogar ohne das Stückeln gehen, aber wen nach dem Hex-Code ein Buchstabe kommt der auch eine Hex-Ziffer sein kann bekommst du Probleme

Entsprechend ist ä \xE1 und ö \xEF

Gefällt mir sehr gut, und gehört in die Liste der geilen Projekte: KLICK

Noch als Ergänzung:

die Textdatei auf der SD Karte ist arduino.txt und liegt im Root Verzeichnis.

Der Aufbau ist:

27.11.1946,Isabell
23.12.1967,Dieter
17.05.2017,Biomuell
22.05.2017,Papiermuell
25.05.2017,Biomuell
26.05.2017,Restmuell
30.05.2017,Gelber Sack
31.05.2017,Biomuell
02.06.2017,Thailand
08.06.2017,Biomuell
09.06.2017,Restmuell
12.06.2017,Papiermuell
15.06.2017,Biomuell
20.06.2017,Gelber Sack
21.06.2017,Biomuell
22.06.2017,Restmuell
28.06.2017,Biomuell
03.07.2017,Papiermuell
05.07.2017,Biomuell
06.07.2017,Restmuell
11.07.2017,Gelber Sack
12.07.2017,Biomuell
19.07.2017,Biomuell
20.07.2017,Restmuell
24.07.2017,Papiermuell
26.07.2017,Biomuell
01.08.2017,Gelber Sack
02.08.2017,Biomuell
03.08.2017,Restmuell
09.08.2017,Biomuell
14.08.2017,Papiermuell

Natürlich kann die SD Karte im laufenden Betrieb entfernt werden und editiert werden,
sie wird nur einmal nachts beim Tageswechsel eingelesen und dort deswegen immer komplett.

Die Daten müssen nicht in Reihenfolge drinstehen.

Beim Müll ist der Tag vor dem Abholtermin, wegen rausstellen drin.
Das Geburtstag ist direkt an dem Tag.

Damit die SD Karte wieder erkannt wird nach dem Entfernen, ist eine Modifikation der SD Library notwendig gewesen, die aber hier schnell gefunden wird.

Achja, der Kipptaster geht in beide Richtungen, In die eine, den Interrupt zum Löschen und in die andere Richtung ein Reset vom Device.

Den DCF Empfänger musste ich später etwas anders im Gehäuse platzieren, da er sonst einen sehr schlechten Empfang hatte.
Er ist nun direkt über dem Display und funktioniert da sehr gut.

Die Ausrichtung der Antenne ist extrem genau zu machen.

Hallo Jörg,
gefällt mir auch und wird eines meiner nächsten Projekte.
Allerdings mit einer RTC, da ich hier in SH Probleme mit DCF77 habe.

Danke dafür.

Eine Anmerkung zu deinem Sketch:

Du solltest im Sketch die verwendeten Libraries mit einem Link versehen, dann setzt man auch die richtigen Libraries ein.

Hallo,
ein sehr schönes sinniges Projekt!

Funktioniert der DCF Empfang direk hinter dem großen LCD denn gut? Bei deiner Anwendung reicht es zwar wenn ein gutes Signal ab und zu mal kommt aber es würde mich mal interessieren ob der Empfang permanent gut ist.

Gruß

Teile Liste:

Arduino Uno R3

I2C LCD Display 2004 blau weiss HD44780 4x20 Zeichen character Arduino IIC 465

Bei den anderen Teilen kann ich nur eBay Links setzen, da habe ich sie her:

SD Card Memory Modul Karte slot Kartenadapter cardreader Arduino

Kunststoff Verteilerkasten Elektronik ABS Box Grau 115 x 90 x 55 mm

Kipptaster - Kill Switch - 12V 25A ein-Aus-ein TASTER (Flash-off-Flash)

DCF 77 Modul Funkuhr Empfangsmodul Empfänger Funkempfänger z.Bsp. für Wortuhr

die DCF Antenne ist in der Lücke zwischen Display oben und Gehäuserand.
Hier habe ich perfekten Empfang, jedoch muss das ganze Gehäuse auch so aufgehängt werden, dass die Antenne waagrecht und lotgerecht nach Mainflingen ausgerichtet ist.

Synchronisiert sich bei mir zuverlässig immer innerhalb 2 Minuten.

(Stuttgart)

Prima, danke.

Und bitte auch noch die Links zu den Libraries posten.
Da gibt es auch sehr große Unterschiede.

Super gemacht und gut erklärt, Danke! :slight_smile:

ok, und hier noch die Infos über die Libraries:

SD builtin Sparkfun 1.1.1

DCF77 by Thijs Elenbaas 1.0.0

LyquidCrytal I2C by Frank de Brabander 1.1.2

Time by Michael Margolis 1.5.0

Wire builtin Arduino 1.0.0

SPI builtin Arduino 1.0.0

So, ich hoffe nun habt ihr alle Infos, bis auf die Änderung in der SD Library hier beschrieben:

Grüße
Jörg

Nur mal so als Idee:
Du verwendest zwar keine Batterie aber da es eigentlich bei dir reicht das Display einmal am Tag zu aktualisieren (bzw per interrupt), könntest du auch ein epaper Display verwenden. Die sind zwar etwas teurer aber brauchen nur Energie die Anzeige zu aktualisieren, danach fließt kein Strom mehr. Den Arduino könntest du fast den ganzen Tag schlafen legen und nur ab und zu mal aufwecken um die Uhrzeit mit den Daten auf der SD karte abzugleichen.

Gruß

Hi,

da hast Du recht, epaper sähe besser aus.
War mir aber zu teuer in meinem ersten Projekt.

Ist für die, die es nachbauen wollen sicher ne gute Verbesserung.

Auch das Gehäuse schöner machen, wäre da noch....

Aber man muss ja klein anfangen, sonst hat man keine Steigerung mehr
:slight_smile:

Grüße
Jörg

Ob es besser aussieht ist Geschmackssache, es gibt viele(mich inbegriffen) die diese alten LCD in Ehre halten.
Spielt bei dir auch keine Rolle, hast ja eine feste Stromversorgung :wink:

Hab mir den Code noch angesehen und der ist verdammt gut geschrieben, besser als viel Kram von mir!
Ich hoffe da folgen noch Projekte :slight_smile:

Gruß

Thingspeak support o.ä. würde sich eventuell hier auch anbieten. Da man eventuell nicht jeden Tag darauf schaut kann man sich bei einem neuen Termin auch eine Push Notification auf das Smartphone oder eine Mail schicken lassen.

Hi zusammen,

die SD Karte ist eine uralte mit 256 MB!! Denke die ist mit Fat32 formatiert, bin mir aber nicht sicher, könnte auch Fat16 sein.

Eine Beschränkung der Dateigröße kenne ich nicht. Die Datei wird ja zeichenweise eingelesen, bis sie am Ende ankommt. Da passen sicher einige Termine rein.
Die Termine müssen auch mit führender Null eingetragen werden, auch das könnte man abfangen, aber hielt ich für unnötig.

Die Namen der Geburtstagskinder sollten auch nicht zu lang sein, da man ja nur 20 Zeichen hat, wovon ja auch was hinten für das Alter freibleiben muss.

Was noch wichtig ist, dass die Geburtstage vor den Daten der Mülldaten kommen, da habe ich keine Funktion drin, die das sortiert. Die sind ja konstant.
Die Geburtstage sollen ja oben auf dem Display stehen, damit ich die Zeilen die danach stehen mit dem Taster löschen kann.
Man könnte auch noch die Uhrzeit oben mit einblenden, aber Uhren habe ich in der Küche eh schon genug.

Also es gibt schon noch Potential nach oben!
:slight_smile:

Wenn Ihr Verbesserungen einbaut, könnt Ihr ja den Code hier ebenfalls veröffentlichen, so dass hier für andere einige Variationen zur Verfügung stehen.

Grüße
Jörg

Hi zusammen,

da ich inzwischen aus unerklärlichen Gründen keinen DCF Empfang mehr habe, an der Stelle wo der Kalender hängt, habe ich nun statt dem DCF Empfänger einen RTC Baustein von AZ-Delivery umgerüstet und den Sketch umgeschrieben, damit er nun damit funktioniert.

Er ist immer noch zu groß durch die umfangreiche Beschreibung, deswegen hänge ich ihn hier wieder dran.

Grüße
Jörg

Baustein RTC

kalender.ino (10 KB)