Inhoudsopgave:

IOToilet: 7 stappen (met afbeeldingen)
IOToilet: 7 stappen (met afbeeldingen)

Video: IOToilet: 7 stappen (met afbeeldingen)

Video: IOToilet: 7 stappen (met afbeeldingen)
Video: BADKAMER VERBOUWEN? Maak een top-ontwerp in 7 stappen 2024, November
Anonim

De IOToilet is de eerste slimme toiletpapierhouder die ons dagelijkse gebruik van toiletpapier bijhoudt en het mogelijk maakt om statistieken te verzamelen die deze statistieken tonen. En waarom zou ik me zorgen moeten maken over mijn dagelijks gebruik van toiletpapier, vraagt u zich misschien af? Welnu, het blijkt dat onze buikgezondheid, vooral de spijsverteringscyclus, veel te maken heeft met zowel onze fysieke gezondheid als onze mentale. Hier is bijvoorbeeld een mooie TED-talk (een van de vele trouwens) die dit onderwerp uitdiept:

Ik kreeg aanvankelijk de opdracht om 10 eenheden van dit apparaat te bouwen voor een brandingbureau, waarvan je de clip hierboven kunt zien (2e locatie), voor een gerichte marketingcampagne voor een groot bedrijf. In het begin verwierp ik het idee als een idee dat voortkwam uit een andere over-creatieve geest die wanhopig probeerde een klantaccount te winnen, maar geleidelijk groeide het bij mij, totdat ik de waarde besefte van de informatie die via dit apparaat werd verzameld.

De build was gebaseerd op een bestaand stuk hardware dat mijn klant van eBay kreeg, een spraakopnameapparaat ingekapseld in een toiletpapierhouder. Het had de juiste vormfactor en alle benodigde randapparatuur was al ingebouwd, zoals een luidspreker, een bewegingssensor om het apparaat te activeren, veren om het toiletpapier zelf vast te houden, batterijcompartiment en een aan-uitschakelaar, dus ik koos graag voor gebruik deze kant-en-klare in plaats van mijn eigen te modelleren en af te drukken.

Stap 1: Gereedschappen en materialen

Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen
Gereedschappen en materialen

Gebruikte materialen:

Toiletpapierhouder

Wemos D1 Mini

ATTiny85-chip, DIP-verpakking

2x 2n2222-transistor

220 Ohm weerstand

2 * 1KOhm weerstand:

MPU6050 versnellingsmeter

Optioneel, voor het geval ik mijn PCB niet gebruik:

Wemos prototype schild

draad, soldeer, enz.

Gebruikte hulpmiddelen:

Dremel met doorslijpschijf

ATTiny dev board (voor het gemakkelijk uploaden van firmware)

USB Tiny ISP-programmeur

driehoekige schroevendraaier, ik gebruikte deze kit:

Stap 2: De originele eenheid ontmantelen

De originele eenheid demonteren
De originele eenheid demonteren
De originele eenheid demonteren
De originele eenheid demonteren
De originele eenheid demonteren
De originele eenheid demonteren

Nadat ik de originele spoel voor toiletpapier had gekregen, opende ik de behuizing met een driehoekige schroevendraaier en verwijderde ik de originele PCB, waarbij ik de luidspreker loskoppelde en zoveel mogelijk draad eraan liet.

Vervolgens heb ik de LED en de kantelsensor van de originele PCB gesoldeerd om later in de nieuwe schakelingen te worden ingebed. Let erop dat u de kantelschakelaar niet oververhit, aangezien deze kan beschadigen. De mijne was grijs, maar omdat ik er geen goede foto van heb gemaakt toen ik hem van het originele apparaat verwijderde, moest ik een foto van het net gebruiken (zie hierboven), waar hij groen was. Slechts een klein detail.

Na het openen van de behuizing en het verwijderen van de elektronica, heb ik ook een Dremel gebruikt om overtollig plastic te verwijderen dat werd gebruikt om de originele PCB op zijn plaats te houden, deze kleine plastic planken en een van de 4 schroefbuizen. Je kunt dit desgewenst uitstellen tot de montagefase, maar er is in ieder geval wat plastic trim nodig.

Stap 3: Circuit uitgelegd

Circuit uitgelegd
Circuit uitgelegd
Circuit uitgelegd
Circuit uitgelegd

Dus, hier is een beetje over de logica achter het circuit:

Om ervoor te zorgen dat de batterijen lang meegaan, moest ik zowel de MPU6050-versnellingsmeter als de ESP8266-processor in de Wemos D1 Mini laten slapen tussen activeringen. De eerste was eenvoudig te doen met behulp van een transistor die de MPU6050 aan- en uitzette.

Opmerking: ik dacht aanvankelijk dat ik het kon programmeren om een onderbrekingssignaal te verzenden dat de hoofdprocessor zou wekken. Helaas kon ik geen manier vinden om het voor elkaar te krijgen, het configureren van de juiste registers van de MPU6050 was een lastige taak waarvan ik nog steeds niet weet of het mogelijk is …

Mijn tweede optie was om de bij de originele unit geleverde kantelschakelaar te gebruiken om de ESP te wekken. Ik bond het eerst rechtstreeks aan de Wemos RESET-pin zoals beschreven in de bovenstaande foto's, met behulp van een transistor om het mechanisme te activeren / deactiveren. Wanneer de transistorbasis hoog was, kon de GND door de kantelschakelaar gaan en deze tijdelijk verbinden met de RESET-pin, waardoor de MCU werd gereset (dit is blijkbaar de enige manier om een ESP uit een diepe slaap te halen). Ik heb toen D0 op de transistorbasis aangesloten, volgens het uitgangspunt dat dit been HOOG is zolang de MCU slaapt, en zodra het wakker wordt, gaat D0 terug naar LAAG, waardoor het resetmechanisme wordt uitgeschakeld. Ik hoefde tenslotte geen terugkerende reset te doen, alleen voor de eerste keer toen de toiletpapierhouder begon te bewegen.

Wat ik echter ontdekte, was dat pin D0 er na het resetten van de MCU vrij lang over doet om terug te gaan naar LAAG, ongeveer 200 ms. Dit betekende dat als ik de toiletpapierhouder snel genoeg draaide terwijl de MCU sliep, er meerdere RESET's zouden plaatsvinden, in plaats van de rondes te tellen, zoals het hoort.

Dus probeerde ik deze nieuwe situatie op te lossen met een aantal discrete componenten (condensatoren, transistors enz.), maar ik kreeg slechts een gedeeltelijke oplossing voor het probleem.

Uiteindelijk heb ik nog een MCU toegevoegd, een ATTiny85, die door de kantelschakelaar uit de slaap zou worden gehaald, vervolgens de ESP8266 wakker maakte en enige tijd wacht voordat ik weer in slaap viel. Ik weet dat dit waarschijnlijk niet de meest economische oplossing voor het probleem is, maar ik had een deadline…

U kunt de gedetailleerde oplossing zien in het schema dat ik heb toegevoegd. Houd er rekening mee dat de 10K-weerstanden zijn vervangen door 1K omdat de 10k-weerstanden te hoog waren om de transistors volledig open te krijgen.

Stap 4: De ATtiny85. voorbereiden

De ATtiny85. voorbereiden
De ATtiny85. voorbereiden

Als u nog nooit een ATtiny85 hebt geprogrammeerd, vrees dan niet! Het gebruik van de geliefde Arduino IDE kan je helemaal helpen. Begin met deze instructies voor het configureren van de Arduino IDE:

github.com/SpenceKonde/ATTinyCore/blob/mas…

Installeer vervolgens de stuurprogramma's voor de USBTinyISP vanaf hier:

learn.adafruit.com/usbtinyisp/drivers

Laad nu de bijgevoegde testcode: WakeOnExternalInterruptTest.ino

en sluit aan (zie ATTiny85 Pinout-diagram):

1. Tikknop tussen pin 3 en aarde

2. Een led en een weerstand van 220 Ohm in serie, tussen pin 2 en aarde

Volgende, Selecteer de USBTinyISP als de programmeur (onder Tools -> Programmer) en upload de testschets naar het bord.

De LED moet 5 keer knipperen, daarna moet de chip in slaap vallen. Door op de knop te drukken, wordt hij wakker en herhaalt hij die reeks.

Heb je het aan het werk? groot! Upload de definitieve schets "Awakener" naar de ATTiny, om te gebruiken op het laatste circuit.

Stap 5: Het Wemos-schild bouwen

Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen
Het Wemos-schild bouwen

Dus om het schild te bouwen heb je 3 opties waaruit je kunt kiezen:

1. Gebruik een standaard protoshield voor de Wemos en soldeer het circuit erop.

2. Fabriceer een PCB op basis van de bijgevoegde EAGLE-bestanden.

3. Vraag me om een PCB die ik je per post kan sturen (ik heb er een paar liggen, de kosten zijn bijna niets).

Ik raad in ieder geval aan om het circuit op een breadboard te bouwen voordat je je aan de PCB vastlegt!

Als u de PCB-opties gebruikt, zorg er dan voor dat u de zwarte draad aansluit zoals op de foto's, aan de voor- of achterkant van het bord (laatste werkte het beste voor mij). Deze draad verbindt de GND van de Wemos met de ATTiny85 en zonder deze zal het ontwaken niet plaatsvinden.

Kijk maar eens goed naar de afbeeldingen en lees de annotaties die ik heb toegevoegd, dit zou genoeg moeten zijn.

Stap 6: De Wemos voorbereiden

Als je nog nooit de Arduino IDE hebt gebruikt om een Wemos-bord te programmeren, begin dan met het installeren van de bordmanager en selecteer het bord in het menu Tools -> Board, zoals hier beschreven:

github.com/esp8266/Arduino

Begin met het uploaden van de knipperschets naar je bord en zorg ervoor dat de code correct wordt geüpload.

Stap 7: Alles samenbrengen

Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten
Alles bij elkaar zetten

Installeer het schild op de Wemos. Je kunt het solderen, maar ik raad aan om vrouwelijke headers te gebruiken die aan de Wemos zijn gesoldeerd en die een tijdelijke verbinding tussen de Wemos en het schild mogelijk maken in geval van problemen. Houd er rekening mee dat de vrouwelijke kop eraf moet in de laatste fase van de montage om de unit in de plastic schaal te laten passen. Om de zaken wat ingewikkelder te maken, is de kans groot dat wanneer shield is aangesloten op de Wemos, het uploaden van code wordt uitgeschakeld. Ik ben dat fenomeen op een niet consistente manier tegengekomen en had geen tijd om het te onderzoeken.

Advies: plan vooruit.

Nu, testen!

Eenmaal geïnstalleerd, begint u met het uploaden van de BlinkAccelerometer-testschets naar de Wemos en zorgt u ervoor dat de MPU6050-LED wordt in- en uitgeschakeld. Zo niet, controleer dan de bedrading van de transistor die verantwoordelijk is voor de voeding van de MPU6050. De basis moet worden aangesloten op pin D5 van de Wemos, de collector moet worden aangesloten op de GND van de versnellingsmeter en de zender moet worden aangesloten op de gemeenschappelijke GND.

Upload vervolgens de TurnCountTest1-schets naar het Wemos-bord en open Serial Monitor. U zou gegevens moeten zien komen van de versnellingsmeter die op de monitor wordt gepresenteerd. Als het niet werkt, controleer dan de klok- en databedrading: CLK moet worden aangesloten op D1 en DATA moet worden aangesloten op D2.

Soldeer nu de kantelschakelaar aan de daarvoor bestemde gaten in het bord (zie annotaties), en zorg ervoor dat deze loodrecht op de rotatie-as staat, zodat het draaien van de spil de verbinding tussen de twee draden zal sluiten en openen.

Sluit vervolgens de Battery 3V-ingang aan op de Wemos VCC en de minpool op de Wemos GND. Zorg ervoor dat het inschakelen van de schakelaar het apparaat inschakelt. Sluit ten slotte de luidspreker aan op GND en pin D4 van de Wemos.

Upload de laatste code naar de Wemos - een schets genaamd SmartWipe. Open een seriële monitor en zorg ervoor dat de unit na 3 minuten in slaap valt en gewekt wordt door de kantelschakelaar te bewegen (de bijbehorende berichten zouden op de monitor moeten verschijnen).

Als u de tijd dat de Wemos wakker is wilt verkorten (voornamelijk voor testdoeleinden), verlaag dan de waarde van WIFI_CONFIGURATION_IDLE_TIMEOUT gedefinieerd in params.h en upload de schets naar het bord. Zorg ervoor dat nadat de Wemos in diepe slaap is gegaan, het bewegen van de kantelschakelaar ervoor zorgt dat de ATTiny wakker wordt (gesignaleerd door de LED), die op zijn beurt de Wemos wakker maakt.

Verander de waarde van de parameter terug naar 180000L (3 minuten, in millisecs) en zorg ervoor dat de Wemos een hotspot activeert met de naam IOToilet_XXXXXXXX, waar XXXXXXX wordt opgehaald van het MAC-adres van de chip. Maak verbinding met deze wifi met behulp van een smartphone en u zou naar een registratieformulier moeten worden geleid (een mechanisme dat Captive Portal wordt genoemd). Vul de details in, vooral belangrijk is de SSID en het wachtwoord van uw lokale wifi, en verzend het formulier. Het apparaat moet dan proberen verbinding te maken met het netwerk met behulp van de meegeleverde inloggegevens en, indien succesvol, 3 oplopende geluiden op de luidspreker afspelen. Als er een probleem was met het verbinden met de wifi, worden er 3 aflopende geluiden afgespeeld. Daarna zouden de Wemos in een diepe slaap moeten gaan, totdat ze gewekt worden door beweging.

Tot slot: end-to-end systeemtest.

Rol de toiletpapierhouder een paar keer langs zijn rotatie-as en plaats hem op een stabiel oppervlak (om aan te geven dat de rol is afgelopen en het uploaden van gegevens wordt geactiveerd). Wacht ongeveer 10 seconden totdat het aantal rollen naar de cloud is verzonden, ga dan naar https://smartwipe-iot.appspot.com/ en klik op Query. U zou uw registratiegegevens en uw recente gebruiksrollen in de cloud moeten zien! Zorg ervoor dat u uw uuid noteert, uw unieke id in het systeem, geëxtraheerd uit het MAC-adres van uw Wemos.

Als je alleen je statistieken in JSON-indeling wilt extraheren, gebruik dan een URL die lijkt op deze:

smartwipe-iot.appspot.com/api?action=query&uuid=1234567890

vervang gewoon uuid door de jouwe.

Ik heb alle bronnen voor de web-app opgenomen, die wordt gehost op de Google App-engine, zodat gebruikers die meer privacy willen hebben voor de gegevens, deze op hun eigen Google-gebruiker kunnen implementeren, authenticatie kunnen toevoegen, enz.

Als alles werkt, past u de elektronica in de plastic schaal en snijdt u het plastic indien nodig bij met een dremel. Het hele stuk moet mooi in de behuizing passen.

Probleem? Schrijf me!

VERENIGD WIJ POPPEN!

Aanbevolen: