KatLight – The Coolest IoT Wonderlamp

Hallo Makers! Es ist Project-Day Ich werde eine IoT Lampe bauen Welche hauptsächlich aus den Teilen besteht, die ihr hier seht, welche zum Teil Schrott sind Es ist nicht das erste mal, dass ich eine IoT lampe baue Diese hier baute ich für mich selbst Es besteht aus einer CD Spindel Eine Plastik-Röhre Neopixels und einen ESP Und es ist nicht sehr hübsch Dies soll sich ändern Weil diese Lampe soll ein Geschenk für eine ganz besondere Person sein Also sollte es gut aussehen Und auch viel mehr können Ich werde zwei CD Spindeln verwenden Welche früher beschreibbare CD beherbergten Und ich hatte immer vor die weg zu schmeißen Aber vielleicht könnte ich die nochmal gebrauchen Jetzt also werde ich sie verwenden Natürlich Wird es aus einem ESP8266 auf einem NodeMcu board bestehen Natürlich Neopixels – ich liebe Neopixels Und natürlich sollte es auch einige Sensoren haben Als aller erstes, dachte ich mir ein Gesten Sensor wäre cool So kann man es ein und ausschalten nur indem man mit der Hand winkt Ein Temperatur und Feuchtigkeitssensor, den BME 280 Warum? Weil, warum nicht? Und eine Besonderheit, weil die Person noch keine anderen IoT Geräte hat Werde ich einen Raspberry Pi Zero als MQTT Broker mit implementieren So ist der original Plan Ich unterteile die Lampe in zwei Teile Dieses wird die Basis Dort bringe ich den ESP, den Raspberry Pi, vielleicht einen Piezo, und den Temperatur Sensor unter Vielleicht sollte ich den auf die Außenseite anbringen? Da bin ich mir noch nicht sicher Und der Teil wird sichtbar bleiben Weil Elektronik hinter einer sichtbaren Scheibe ist cool Auf dieses Teil Packe ich eine zweite Box Und ich verwende dieses Sprühflasche Welche ich auf Länge schneiden werde Und dann klebe ich die Neopixels darauf Dann muss ich noch die die Box diffus machen Und das wird dann die Lampe Und oben drauf kommt der Gesten Sensor So sieht der Plan aus – mal sehen, wie es klappt Lasst uns mit dem einfachen Teil anfangen Die Box diffus machen Für die alte Lampe verwendete ich eine spezielle Folie Ich hab erst eine Schicht, dann eine weitere Schicht geklebt Und man kann immer noch die Innereien sehen Was nicht mein Ziel ist Ich will ein diffuses Glas Die Lampe sollte eher glühen Aber von einem anderen Projekt weiß ich wie man diffuses Glas herstellt Indem man Schleifpapier verwendet Ich habe es noch nie mit dieser Art von Plastik gemacht Aber es gibt keinen Grund, warum es nicht funktionieren sollte Es sieht schon schön diffus aus Und solange es nicht direkt an der Außenwand klebt Wird man die Neopixels nicht warnehmen Nächster Schritt Das in die richtige Länge schneiden Und die Neopixels anheften Es sind ungefähr 8cm Ich sollte auf jeden Fall etwas mehr nehmen Und den Rest runter schleifen Die Röhre ist fast fertg

Nun muss ich ein Loch bohren Um dieses Kabel in die untere Sektion zu bekommen und an den ESP anzuschließen Es sollte mindestens die Größe des Verbinders haben Jep – Perfekt! Hier ein kleines Teil ausschneiden, damit das Kabel darunter passt Ich verwendete ein bisschen Schleifpapier um eine rauhere, besser haftende Oberfläche zu bekommen Mit Hilfe des Klebebandes auf der Rückseite Und natürlich meiner Lieblings-Klebepistole Sollte es mir möglich sein, dies zu befestigen So langsam sollte ich zum Ende kommen Mal nachzählen, wie viele LEDs ich schon verwendet habe Vielleicht bekomme ich eine gerade Anzahl Es gab Platz für 42 Neopixel LEDs 42! Nun noch etwas Heißkleber Oder sagen wir: viel Heißkleber Sollte es möglich sein, dass auf die Spindel zu fixieren Ich habe ein Loch in die Spindel gebohrt und den Gesten Sensor befestigt Das Problem ist nur Die Sparkfun Bibliothek funktioniert nicht mit dem ESP8266 Hmmm.. nicht gut Ich habe eine Adafruit Bibliothek gefunden, die so ähnlich arbeitet, aber den Interrupt nicht verwendet Nun befürchte ich, dass die Bibliothek die Verarbeitung des ESP unterbricht, bis es Gesten registriert Das ist natürlich recht nutzlos Also habe ich einen Test aufgebaut Um diese Bibliothek zu testen Bevor ich ddas Teil mit einem großem Hammer zerschmettere Weil ich bereits den Sensor fest geklebt habe Befestigt, ohne es zu testen Ich hab das Beispiel für den Gesten Sensor etwas modifiziert So, dass wenn es keine Gesten registriert Gibt es eine Null aus Anstelle eines der anderen Symbole Und ratet mal Es funktioniert Es werden tonnenweise Nullen an den seriellen Monitor gesendet Und mit einer Handbewegung kann ich den Gesten Sensor auslösen Also sollte ich für den Moment wohl den Hammer beiseite legen und weiter an dem Projekt arbeiten

Also nach dem Löten und viel Programmieren Komme ich mittlerweie irgendwo an Ich kann nun eine Farbe auswählen Und es einschalten Aus Zum ersten Mal habe ich I2C verwendet um zwei Sensoren anzuschließen Und der Temperatur Sensor will nicht starten Keine Ahnung woran es liegt Die Verkabelung scheint ok zu sein Die Lötstellen haben alle Kontakt Und die Spannung kommt auch an Und es gibt ein Problem mit dem Gesten Sensor Er funktioniert zwar Jedoch nicht, wie erwartet Man kann es gut mit der Blaulicht Simulation sehen Man siehr hier eine stätige Rotation Ein kleiner Schluckauf hier Aber ich glaube damit könnte ich leben Der Gestensensor soll nur die Lampe an und ausschalten Als erstes Der Gesten Sensor arbeitet nicht einfach so Es funktioniert erst, wenn man den über den Entfernungssensor aktiviert Man muss sich dem Sensor annähren Ich berühre den sogar einmal kurz Und dann Kann ich es ein und ausschalten Nur mit einem Wink Problem: einmal aktiviert Alle Animationen Hackt immer wieder Und es nervt ziemlich Die Blaulichtanimation hackt am meisten Siehst du? Es wird jedesmal schlimmer Ich bin jetzt nicht sicher, was ich jetzt machen soll Ich denke, sobald es aktiviert ist braucht der Sensor um die entsprechenden Sensoren auszulesen Vielleicht wartet es auch Also blockiert es eine Weile Wie löse ich das jetzt Das Beispiel, welches mit der Adafruit Bibliothek geliefert wird ist nicht sonderlich hilfreich Und den Interrupt Pin habe ich auch noch nicht ansgeschlossen Vielleicht füge ich einen zweiten Controller Z.B. einen Arduino Nano Nur um den Gesten Sensor zu steuern Wenn der Nano eine Geste registriert Dann löst einses der digitalen Pins aus Das könnte funktionieren Es ist schon ziemlich nervig, wenn es nicht so funktioniert, wie erwartet Also den Lötkolben anheiten und auf die Tastatur einschlagen Es dauerte eine Weile, aber ich denke, ich habe die meisten Probleme gelöst Als erstes habe ich versucht den Interrupt Pin anzuschließen An den ESP und hoffte, dass ich den ESP damit auslösen könnte Das Positive: wenn der Interrupt auslöst, werden die Gesten gelesen Das Negative: Der Gesten Sensor löst den Interrupt nicht aus Ich bin nicht sicher ob die Bibliothek den Interrupt auf der Sensorseite aktiviert Also habe ich einen Arduino Nano hinzugefügt Es macht nicht anderes, als auf den Gestensensor zu reagieren Es liest die Sensor-Werte aus Und übermittelt das an das NodeMcu Board Wie? Ich habe immer noch viele digitale Pins auf dem NodeMcu übrig Und noch viel mehr auf dem Arduino Nano Also habe ich drei der digitalen Pins mit drei der digitalen Pins auf dem NodeMcu verbunden Und wenn eine Geste vom Nano registriert wurde übermittelt er diese indem er die Pins auf HIGH zieht Ich habe drei Pins verwendet weil mit dei Pins kann ich acht verstidene Stati übermitteln Null für keine Geste erkannt Eins für Geste links

Zwei für die Geste rechts Hoch und runter Und hab immer noch ein paar übrig Und auf dem NodeMcu frage ich bei jedem Durchlauf ob eines dieser Pins einen HIGH-Wert liefert Das ist alles Und wie man sieht Der Gestensensor funktioniert … meistens Und nun zum anderen Problemkind Der BME Sensor Ich hab mir die Bibliothek genauer angesehen Ich fand heraus, dass es eine begin-Methode gibt bei dem man die benutzte Wire-Bibliothek übergeben kann und die I2C Adresse des Sensors Also habe ich einen I2C Scanner installiert Um die Adresse des Temperatur Sensors herauszufinden Und ratet mal! Es funktioniert! Wie man sieht Es übermittelt die aktuelle Temparatur und die aktuelle Luftfeuchte Ja, es ist im Moment wirklich 31°C hier Es ist Sommer und wirklich heiß. Und es ist eine trockene Hitze Ich versuche noch alles unterzubringen Und dann klebe ich die Boards an das Gehäuse Und hoffentlich wars’ das Das coole ist: weil das Gehäuse einfach zu öffnen und zu schließen ist Und weil die Controller nicht auf die Boards gelötet worden sind, sondern ich diese Header verwendet habe kann ich die Controller einfach austauschen Und dies ist ein Geschenk Also, wenn mir eine Idee kommt, wie ich das Projekt verbessern kann lade ich einfach ein neues Sketch auf eines der Controller Und tausche das einfach aus Alles, was ich dabei haben wollte habe ich auf diese Prototype Boards gepackt Also ist die Zeit gekommen alles fest zu kleben Ich hab die Oberfläche mit etwas Schleifpapier aufgerauht, so dass der Heißkleber besser haftet Fangen wir an, indem wir das Kabel kleben Nun das Board mit dem NodeMcu Ich packe es nah an den Rand Und dann bohre ich ein Loch, damit der Temperatursensor nicht das Innere des Gehäuses, sondern die Umgebungstemperatur misst Nicht zu gierig sein Der Raspberry Pi Zero ist das einzige Teil, welches ich nicht auf das Teil kleben werde Weil ich es jederzeit austauschen möchte Es wird auch von dieser Hauptleitung gespeist Ich muss das nur an dieses Kabel anschließen Und ein passenden Ort dafür finden Uhh, ja. Das sieht gut aus Sitzt eng Das ist gut Ich sollte auf jeden Fall die obere Ebene ankleben Nun ein großes Loch für den Temperatur Sensor Ungefähr hier Ich hab das Loch mit einem Durchmesser von ungefähr 5mm gebohrt Ich hoffe, dass das Loch für genügend Luft sorgt Ich wollte mit euch durch den Code gehen Aber Es sind mehr als 700 Codezeilen Ihr seht, es ist viel An dem Programm habe ich Stunden gesessen Aber ich mache ein Git-Reposetory auf Bitbucket Ihr könnt das herunterladen und nachbauen, wenn ihr wollt Es ist wirklich viel Aber es ist Platz für mehr Wie man sieht Es nutz nur 23% Programmspeicher Und nur 41% des dynamischen Speichers Ich könnte noch viele Funktionen hinzufügen Vielleicht aber auch nicht Aber immerhin könnt ihr von bereits acht verschiedene Modi profitieren

Alles an, eine kleine Animation, Blaulicht, Feuersimulation Glitzer, Blink, Sonnenaufgang Simulator und Disco Licht Ich denke es ist noch Platz für mindestens einen mehr Habt ihr eine gute Idee? So, die “KatLight” – ich habe sie “KatLight” getauft – Ist fertig Es funktioniert perfekt Auf der unteren Ebene kann man den NodeMcu sehen Der Arduino Nano Und den Raspberry Pi Zero W Der Raspberry Pi Zero fungiert als MQTT Broker Und für zukünftige IoT Geräte Ich habe verschiedene Modi implementiert Bei den meisten Modis kann man eine Farbe auswählen z.B. nur an Eine nette Animation Diese wird kontinuierlich ablaufen Was haben wir noch? Das Blaulicht! Es ist das Blaulicht Ein Blaulicht, wie auf einem Polizeiauto Feuerwehr Und es sieht nett aus Es hat einen kleinen Schluckauf, aber Das liegt daran, dass ich die Funktion sehr effizient programmiert habe Klingt zwar seltsam, aber ich habe nur sehr wenig Code geschrieben, um es rotieren zu lassen Was haben wir noch? Die Feuer-Simulation! Besser in Rot Dieses schaltet einfach eine zufällige Anzahl von LEDs ein Startet von unten und geht nach oben “Glitzer” Es ist wie Ich glaube ich brauche eine dunklere Farbe Es schaltet zufällig verschiedene LEDs auf Weiß. So bekommt man diesen Glitzer-Effekt Was haben wir noch? Blink! Kennt ihr noch den Blink-Sketch? Wo man eine LED mit einem Arduino blinken lassen kann? Das ist genau das Und meine Lieblingsfunktion Der Sonnenaufgangs Wecker Könnt ihr euch noch an den Sonnenaufgangssimulator erinnern, den ich vor einer Weile gebastelt habe? Das ist so ziemlich das selbe Ich stelle die Zeit ein Wann es starten soll Ah.. man kann sehen, wie die LEDs langsam angehen Das rote Licht wird jede Sekunde heller und heller Bis es das Maximum erreicht hat Dann füge ich Grün hinzu Und zum Schluss kommt noch Blau dazu Es wird solange Blau hinzugefügt bis die Lampe komplett Weiß ist Ist das nicht ein romantischer Sonnenaufgang? Sobald es fertig ist Schaltet es automatisch in den Ein-Modus Und das ist der Augeblick mit der höchsten Stromaufnahme Wir liegen gerade bei ungefähr 1,2 Ampere Das sind ungefähr 6 Watt 5-6 Watt Maximum Was dieses System benötigt Ich denke für eine Lampe ist es ok Es übermittelt ständig die Temperatur und Luftfeuchte

Ich denke es ist noch etwas höher als in Wirklichkeit Denn trotz dieses Loches Ist es eher die Temperatur des Inneneren des Gehäuses Welches hoffentlich nahe der Raumtemperatur ist Aber ich habe Zweifel, dass es noch 31°C hier ist Der BME 280 kann ebenso den Luftdruck messen Ich bin mir nicht sicher, ob ich das mit ausgeben soll Auf jeden Fall eine Option Ich denke es sieht ziemlich gut aus Besonders, weil man die Elektronik dahinter sehen kann Welches einen futuristischen Look verleiht Und wenn ich das Programm ändern möchte kann ich das Gerät einfach öffnen Die Controllers können ausgetauscht werden oder ein neues Sketch hochgeladen werden Ich hoffe die Person, die das bekommt, ist genauso begeister darüber, wie ich Ich liebe dieses Teil Ich packe alle Komponenten, die ich benutzt habe, unten in die Beschreibung Genauso ein Link zur Projektseite Dort eschreibe ich auch die Funktionen und ihr könnt den Quellcode der Contoller herunterladen Einfach mal ansehen Bis dahin Werdet kreativ Bye!