Inhaltsverzeichnis:
- Schritt 1: Werkzeuge und Materialien
- Schritt 2: Dementieren der Originaleinheit
- Schritt 3: Schaltung erklärt
- Schritt 4: Vorbereiten des ATTiny85
- Schritt 5: Aufbau des Wemos-Schildes
- Schritt 6: Vorbereitung des Wemos
- Schritt 7: Alles zusammenfügen
Video: IOToilet - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:21
Der IOToilet ist der erste intelligente Toilettenpapierhalter, der unseren täglichen Gebrauch von Toilettenpapier verfolgt und es ermöglicht, Statistiken zu sammeln, die diese Metriken zeigen. Und warum sollte ich mich um meinen täglichen Gebrauch von Toilettenpapier kümmern, fragen Sie sich vielleicht? Nun, wie sich herausstellt, hat unsere Bauchgesundheit, insbesondere der Verdauungszyklus, viel mit unserer körperlichen und unserer geistigen Gesundheit zu tun. Hier ist zum Beispiel ein netter TED-Talk (übrigens einer von vielen), der sich mit diesem Thema beschäftigt:
Ich wurde zunächst beauftragt, 10 Stück dieses Gerätes für eine Branding-Agentur zu bauen, deren Clip Sie oben sehen (2. Standort), für eine gezielte Marketingkampagne für ein großes Unternehmen. Anfangs habe ich die Idee als eine Idee abgetan, die von einem anderen überkreativen Kopf stammt, der verzweifelt versucht, ein Kundenkonto zu gewinnen, aber allmählich wuchs es mir, bis ich den Wert der mit diesem Gerät gesammelten Informationen erkannte.
Der Build basierte auf einer vorhandenen Hardware, die mein Kunde von EBay erhalten hatte, einem in einem Toilettenpapierhalter gekapselten Sprachaufzeichnungsgerät. Es hatte den richtigen Formfaktor und alle benötigten Peripheriegeräte waren bereits integriert, wie ein Lautsprecher, ein Bewegungssensor zum Auslösen des Geräts, Federn zum Halten des Toilettenpapiers selbst, ein Batteriefach und ein Ein-Aus-Schalter, also habe ich mich gerne entschieden Verwenden Sie dieses Ready-Made, anstatt meine eigenen zu modellieren und zu drucken.
Schritt 1: Werkzeuge und Materialien
Verwendete Materialien:
Toilettenpapierhalterung
Wemos D1 Mini
ATTiny85-Chip, DIP-Verpackung
2 x 2n2222 Transistor
220 Ohm Widerstand
2 * 1KOhm Widerstand
MPU6050 Beschleunigungsmesser
Optional, falls meine Platine nicht verwendet wird:
Wemos Prototyping-Schild
Draht, Lötzinn usw.
Benutztes Werkzeug:
Dremel mit einer Trennscheibe
ATTiny Dev Board (zum bequemen Hochladen von Firmware)
USB Tiny ISP-Programmierer
Dreikantschraubendreher, ich habe dieses Kit verwendet:
Schritt 2: Dementieren der Originaleinheit
Nachdem ich die Original-Toilettenpapierspindel erhalten hatte, öffnete ich das Gehäuse mit einem dreieckigen Schraubendreher und entfernte die Originalplatine, trennte den Lautsprecher und ließ so viel Draht wie möglich daran angeschlossen.
Ich lötete dann die LED und den Neigungssensor von der Originalplatine aus, um später in die neue Schaltung eingebettet zu werden. Achten Sie darauf, den Neigungsschalter nicht zu überhitzen, da er sonst beschädigt werden könnte. Meins war grau, aber da ich es beim Entfernen vom Originalgerät nicht gut aufgenommen habe, musste ich ein Foto aus dem Netz verwenden (siehe oben), wo es grün war. Nur ein kleines Detail.
Nach dem Öffnen des Gehäuses und dem Entfernen der Elektronik habe ich auch einen Dremel verwendet, um überschüssiges Plastik zu entfernen, das verwendet wurde, um die ursprüngliche Platine, diese kleinen Plastikregale und eines der 4 Schraubrohre zu halten. Wenn Sie möchten, können Sie dies auf die Montagephase verschieben, aber auf jeden Fall sind einige Kunststoffbeschnitte erforderlich.
Schritt 3: Schaltung erklärt
Also, hier ist ein wenig über die Logik hinter der Schaltung:
Damit die Batterien lange halten, musste ich sowohl den MPU6050-Beschleunigungsmesser als auch den ESP8266-Prozessor im Wemos D1 Mini zwischen den Aktivierungen in den Ruhezustand versetzen. Die erste wurde leicht mit einem Transistor durchgeführt, der den MPU6050 ein- und ausschaltete.
Hinweis: Ich dachte zunächst, ich könnte es so programmieren, dass es ein Interrupt-Signal sendet, das den Hauptprozessor aufweckt. Leider konnte ich keinen Weg finden, dies zu realisieren, die Konfiguration der richtigen Register der MPU6050 war eine knifflige Aufgabe, von der ich immer noch nicht weiß, ob sie überhaupt möglich ist…
Meine zweite Möglichkeit bestand darin, den mit dem Originalgerät gelieferten Neigungsschalter zu verwenden, um das ESP zu wecken. Ich habe es zuerst direkt an den Wemos RESET-Pin gebunden, wie in den Fotos oben beschrieben, mit einem Transistor zum Aktivieren / Deaktivieren des Mechanismus. Wenn die Transistorbasis hoch war, konnte GND den Neigungsschalter passieren und ihn vorübergehend mit dem RESET-Pin verbinden, was den MCU-Reset verursachte (dies ist anscheinend die einzige Möglichkeit, einen ESP aus dem Tiefschlaf aufzuwecken). Ich habe dann D0 mit der Transistorbasis verbunden, unter der Annahme, dass dieses Bein HIGH ist, solange die MCU schläft, und sobald es aufwacht, geht D0 zurück auf LOW, wodurch der Reset-Mechanismus deaktiviert wird. Schließlich brauchte ich keinen wiederkehrenden Reset, nur zum ersten Mal, als sich der Toilettenpapierhalter in Bewegung setzte.
Was ich jedoch entdeckt habe, war, dass Pin D0 nach dem Zurücksetzen der MCU ziemlich lange braucht, um auf LOW zurückzukehren, etwa 200 ms. Dies bedeutete, dass, wenn ich den Toilettenpapierhalter schnell genug drehte, während die MCU schlief, mehrere RESETs auftreten würden, anstatt die Runden zu zählen, wie es sollte.
Also habe ich versucht, diese neue Situation mit einigen diskreten Komponenten (Kondensatoren, Transistoren usw.) zu lösen, aber ich habe es nur geschafft, das Problem teilweise zu lösen.
Am Ende fügte ich eine weitere MCU hinzu, einen ATTiny85, der durch den Neigungsschalter aus dem Schlaf geweckt wurde, dann den ESP8266 aufweckte und einige Zeit wartete, bevor er wieder einschlief. Ich weiß, dass dies wahrscheinlich nicht die wirtschaftlichste Lösung für das Problem ist, aber ich hatte eine Frist…
Sie können die detaillierte Lösung in dem Schema sehen, das ich eingefügt habe. Bitte beachten Sie, dass die 10K-Widerstände durch 1K ersetzt wurden, da die 10k-Widerstände zu hoch waren, damit die Transistoren vollständig geöffnet werden konnten.
Schritt 4: Vorbereiten des ATTiny85
Wenn Sie noch nie einen ATTiny85 programmiert haben, keine Angst! Mit der beliebten Arduino IDE können Sie den ganzen Weg gehen. Beginnen Sie mit diesen Anweisungen zum Konfigurieren der Arduino-IDE:
github.com/SpenceKonde/ATTinyCore/blob/mas…
Als nächstes installieren Sie die Treiber für den USBTinyISP von hier:
learn.adafruit.com/usbtinyisp/drivers
Laden Sie nun den angehängten Testcode: WakeOnExternalInterruptTest.ino
und verbinden (siehe ATTiny85 Pinout-Diagramm):
1. Taster zwischen Pin 3 und Masse takten
2. Eine LED und ein 220 Ohm Widerstand in Reihe zwischen Pin 2 und Masse
Nächste, Wählen Sie als Programmierer den USBTinyISP aus (unter Tools -> Programmierer) und laden Sie die Testskizze auf das Board hoch.
Die LED sollte 5 Mal blinken, dann sollte der Chip schlafen gehen. Durch Drücken der Taste wird es aufgeweckt und diese Sequenz wiederholt.
Haben Sie es zum Laufen gebracht? groß! Laden Sie die letzte Skizze "Awakener" auf den ATTiny hoch, um sie auf der letzten Runde zu verwenden.
Schritt 5: Aufbau des Wemos-Schildes
Um den Schild zu konstruieren, haben Sie also 3 Optionen, aus denen Sie wählen können:
1. Verwenden Sie einen Standard-Protoshield für den Wemos und löten Sie die Schaltung darauf.
2. Stellen Sie eine Leiterplatte basierend auf den angehängten EAGLE-Dateien her.
3. Fragen Sie mich nach einer Platine, die ich Ihnen per Post zusenden kann (ich habe ein paar herumliegen, die Kosten sind so gut wie nichts).
Auf jeden Fall empfehle ich, die Schaltung auf einem Steckbrett zu konstruieren, bevor Sie sich auf die Platine festlegen!
Wenn Sie die PCB-Optionen verwenden, stellen Sie sicher, dass das schwarze Kabel wie auf den Fotos entweder auf der Vorder- oder Rückseite der Platine angeschlossen ist (letzteres funktionierte am besten für mich). Dieser Draht verbindet den GND vom Wemos mit dem ATTiny85 und ohne ihn findet das Aufwachen nicht statt.
Schauen Sie sich einfach die Bilder genau an und lesen Sie die Anmerkungen, die ich hinzugefügt habe, das sollte ausreichen.
Schritt 6: Vorbereitung des Wemos
Wenn Sie die Arduino IDE noch nie zum Programmieren eines Wemos-Boards verwendet haben, beginnen Sie mit der Installation des Board-Managers und der Auswahl des Boards im Menü Tools -> Board, wie hier beschrieben:
github.com/esp8266/Arduino
Laden Sie zunächst die Blink-Skizze auf Ihr Board hoch und stellen Sie sicher, dass der Code richtig hochgeladen wird.
Schritt 7: Alles zusammenfügen
Installieren Sie das Schild auf dem Wemos. Sie können es löten, aber ich empfehle die Verwendung von Buchsenleisten, die an das Wemos gelötet sind, die im Falle von Problemen eine vorübergehende Verbindung zwischen dem Wemos und dem Schild ermöglichen. Denken Sie daran, dass die Buchsenleiste in der letzten Phase der Montage abgenommen werden muss, damit das Gerät in die Kunststoffschale passt. Um die Sache etwas komplizierter zu machen, besteht eine gute Chance, dass der Code-Upload deaktiviert wird, wenn der Shield mit dem Wemos verbunden ist. Ich bin diesem Phänomen auf nicht konsistente Weise begegnet und hatte keine Zeit, es zu erforschen.
Tipp: Planen Sie im Voraus.
Jetzt testen!
Nach der Installation laden Sie zunächst die BlinkAccelerometer-Testskizze auf das Wemos hoch und stellen Sie sicher, dass die MPU6050-LED ein- und ausgeschaltet wird. Wenn nicht, überprüfen Sie die Verdrahtung des Transistors, der für die Stromversorgung des MPU6050 verantwortlich ist. Seine Basis sollte mit Pin D5 des Wemos verbunden werden, der Kollektor sollte mit dem GND des Beschleunigungsmessers verbunden werden und der Emitter sollte mit dem gemeinsamen GND verbunden werden.
Laden Sie als Nächstes die TurnCountTest1-Skizze auf das Wemos-Board hoch und öffnen Sie Serial Monitor. Sie sollten Daten vom Beschleunigungsmesser auf dem Monitor sehen. Wenn es nicht funktioniert, überprüfen Sie die Takt- und Datenverkabelung: CLK sollte an D1 und DATA an D2 angeschlossen werden.
Löten Sie nun den Kippschalter an den vorgesehenen Löchern in der Platine (siehe Anmerkungen) und stellen Sie sicher, dass er senkrecht zur Drehachse steht, damit die Spindel durch Drehen die Verbindung zwischen ihren beiden Leitungen schließt und öffnet.
Als nächstes verbinden Sie den Batterie-3V-Eingang mit dem Wemos VCC und seinen Minuspol mit dem Wemos GND. Stellen Sie sicher, dass das Einschalten des Schalters das Gerät einschaltet. Schließlich verbinden Sie den Lautsprecher mit GND und Pin D4 des Wemos.
Laden Sie den endgültigen Code auf das Wemos hoch - eine Skizze namens SmartWipe. Öffnen Sie einen seriellen Monitor und stellen Sie sicher, dass das Gerät nach 3 Minuten in den Ruhezustand geht und durch Bewegen des Kippschalters geweckt wird (entsprechende Meldungen sollten auf dem Monitor erscheinen).
Wenn Sie die Wachzeit des Wemos verkürzen möchten (hauptsächlich zu Testzwecken), verringern Sie den in params.h definierten Wert von WIFI_CONFIGURATION_IDLE_TIMEOUT und laden Sie den Sketch auf das Board hoch. Stellen Sie sicher, dass der ATTiny nach dem Einschlafen des Wemos durch Bewegen des Neigungsschalters aufwacht (signalisiert durch die LED), was wiederum den Wemos aufweckt.
Ändern Sie den Wert des Parameters zurück auf 180000L (3 Minuten, in Millisekunden) und stellen Sie sicher, dass der Wemos einen Hotspot namens IOToilet_XXXXXXXX startet, wo XXXXXXX von der MAC-Adresse des Chips abgerufen wird. Stellen Sie über ein Smartphone eine Verbindung zu diesem Wifi her, und Sie sollten zu einem Registrierungsformular (ein Mechanismus namens Captive Portal) weitergeleitet werden. Füllen Sie die Details aus, besonders wichtig ist die SSID und das Passwort Ihres lokalen WLANs, und senden Sie das Formular ab. Das Gerät sollte dann versuchen, sich mit den mitgelieferten Zugangsdaten mit dem Netzwerk zu verbinden, und bei Erfolg 3 aufsteigende Töne auf dem Lautsprecher abspielen. Wenn bei der Verbindung zum Wifi ein Problem aufgetreten ist, werden 3 absteigende Töne abgespielt. Danach sollten die Wemos in den Tiefschlaf gehen, bis sie durch Bewegung geweckt werden.
Schließlich: End-to-End-Systemtest.
Rollen Sie den Toilettenpapierhalter einige Umdrehungen entlang seiner Drehachse und legen Sie ihn dann auf eine stabile Oberfläche (um zu signalisieren, dass die Rolle beendet ist und den Datenupload auslöst). Warten Sie etwa 10 Sekunden, bis der Rollenzähler an die Cloud gesendet wurde, gehen Sie dann zu https://smartwipe-iot.appspot.com/ und klicken Sie auf Abfrage. Sie sollten Ihre Registrierungsdetails und Ihre aktuelle Nutzungsanzahl in der Cloud sehen! Notieren Sie sich unbedingt Ihre uuid, die Ihre eindeutige ID im System ist, die aus der MAC-Adresse Ihres Wemos extrahiert wurde.
Wenn Sie nur Ihre Statistiken im JSON-Format extrahieren möchten, verwenden Sie eine ähnliche URL:
smartwipe-iot.appspot.com/api?action=query&uuid=1234567890
Ersetzen Sie einfach die uuid durch Ihre.
Ich habe alle Quellen für die Web-App hinzugefügt, die auf der Google App-Engine gehostet wird, damit Benutzer, die mehr Privatsphäre für die Daten wünschen, sie für ihren eigenen Google-Benutzer bereitstellen, Authentifizierung hinzufügen usw.
Wenn alles funktioniert, passen Sie die Elektronik in die Kunststoffschale ein und trimmen Sie den Kunststoff nach Bedarf mit einem Dremel. Das gesamte Stück sollte gut in das Gehäuse passen.
Problem? Schreib mir!
VEREINT WIR POPFEN!