🤩 Inspiration im Makerspace

Heute gibt e seine kleine Geschichte und ein wenig Code. Wie passt das zusammen? Seht ihr gleich!

Wer schon bei uns war, kennt das kleine VDI-Exponat mit der leuchten Mülltonne, die anzeigt welche Tonnen morgen rausgestellt werden müssen. Dieses Ausstellungsstück zeigt, was mit IoT (Internet of Things oder dt. Internet der Dinge) möglich ist. Und hier kommt der Inspirations-Part: Frederik Tuczek, ein Maker aus der Region, hat sich das Exponat angeschaut und es nachgebaut. Er wollte aber ein paar Veränderungen vornehmen und hat die Arbeit auch wunderbar dokumentiert. Daher bekommt ihr nun seinen Code für das Exponat. Und falls ihr inspiriert seid und etwas umsetzen möchtet, kommt einfach bei uns vorbei, denn genau dafür sind wir da 😉

Links Frederiks Projekt und rechts das „Original“ der VDI Zukunftspiloten

Hinweise von Frederik:

  • Die config Datei enthält eine Liste mit den Datum in der Form ‚2024-11-14-S‘ z.B. für heute schwarze Tonne.
  • Für die Umwandlung vom ICS-Kalender in die Config-Datei habe ich ein Python Script geschrieben. Leider bin ich noch nicht dazu gekommen, das ganze bei Github, o.Ä. hochzuladen. -> wird nachgereicht sobald online
  • Die Laternen und Mülltonnen habe ich im Modellbau-Bedarf gekauft. Für de Basis habe ich in TinkerCAD ein 3D-Modell erstellt und mit meinem mittlerweile 10 Jahre alten Reprap 3D-Drucker ausgedruckt.
  • Das Board ist ein Raspberry Pi Pico mit einem Echtzeituhrmodul:

Hier ein Bild der internen Verkabelung:

from machine import Pin
import time
from utime import sleep
import ds3231

rtc = ds3231.RTC(sda_pin=20, scl_pin=21)

##Set time if needed:
#print( rtc.ReadTime('ISO-8601'))
#currenttime=time.localtime()
#strcurrenttime=str(currenttime[0])+'-'+('0'+str(currenttime[1]))[-2:]+'-'+('0'+str(currenttime[2]))[-2:]
#Set time: second/ minute/Hour /Weekday (Monday=1)/ day / month / year
#rtc.SetTime(b'\x00\x51\x19\x01\x17\x06\x24')
#print( rtc.ReadTime('ISO-8601'))
#rtc.ReadTime('weekday')

##Define Pins for LEDs
LedG=Pin(6, Pin.OUT)
LedB=Pin(7, Pin.OUT)
LedS=Pin(8, Pin.OUT)
LedY=Pin(9, Pin.OUT)


##Check LEDs
LedG.low()
LedB.low()
LedS.low()
LedY.low()

try:
    import config
    kalender = config.kalender
    print('Datei wurde erfolgreich importiert')   
   
except:
    print('Datei existiert noch nicht und muss erstellt werden')

LedG.high()
time.sleep(0.3)
LedB.high()
time.sleep(0.3)
LedS.high()
time.sleep(0.3)
LedY.high()
time.sleep(0.3)

#G=Grüne Tonne
#B=Blaue Tonne
#S=Schwarze Tonne
#Y=Gelbe Tonne

while True:
    LedG.low()
    LedB.low()
    LedS.low()
    LedY.low()  
    currenttime=rtc.ReadTime('ISO-8601')       
   
    for i in kalender:
        if i[:10]==currenttime:           
            if i[-1:]=='G':               
               LedG.high()
            if i[-1:]=='B':
               LedB.high()
            if i[-1:]=='S':
                LedS.high()
            if i[-1:]=='Y':
               LedY.high()
    time.sleep(10000)