Inhoudsopgave:

Postino: heeft de postbode iets bezorgd? - Ajarnpa
Postino: heeft de postbode iets bezorgd? - Ajarnpa

Video: Postino: heeft de postbode iets bezorgd? - Ajarnpa

Video: Postino: heeft de postbode iets bezorgd? - Ajarnpa
Video: Преподобный | полный фильм | Ужастик 2024, November
Anonim
Postino: Heeft de postbode iets bezorgd?
Postino: Heeft de postbode iets bezorgd?

Geen idee van mij: op een dag vroeg een vriend me om een manier om op afstand te controleren of er post in zijn mailbox lag. De brievenbus staat niet op het pad naar zijn deur, dus omdat hij een luie jongen is, vroeg hij zich af of een technologiegadget hem zou kunnen waarschuwen voor een brief in de brievenbus. Ik heb op de markt gekeken en ik kon geen kant-en-klaar apparaat vinden dat geschikt was voor zijn behoeften, dus ik stelde mezelf een uitdaging voor: waarom zou ik het niet ontwerpen en bouwen?

De beperkingen waren:

  • werkt op batterijen met een redelijke levensduur tussen batterijwissels;
  • WiFi-communicatie;
  • controleer slechts één keer per dag of er post was of niet;

De belangrijkste vraag was: welk soort sensor zou aan mijn eisen kunnen voldoen? Een naderingssensor kon niet werken, omdat de controle maar één keer per dag moest worden uitgevoerd en niet in realtime; een gewichtssensor ook niet, omdat dit complexiteit en gevoeligheidsproblemen zou hebben toegevoegd (een vel papier kan erg licht zijn). Mijn keuze viel op een Time-of-Flight (een microlaser) sensor. Eenmaal gekalibreerd voor de grootte van de brievenbus, zou alles dat in het midden lag de sensor hebben geactiveerd! Gezien de 3 beperkingen, besloot ik om een ESP8266 te gebruiken (met de software en verbinding met wifi), een VL6180 Time-of-Flight-sensor voor de meting en een DS3231 Real Time Clock om alle circuits één keer per dag te activeren: dat was hoe Postino was geboren!

Stap 1: Onderdelen en componenten

  • ESP8266-01 (of ESP-12E NodeMCU)
  • VL6108 Time-of-Flight-sensor
  • DS3231 Realtime-klok
  • IRLZ44 N-kanaal MosFET
  • BC547 Transistor
  • Weerstanden
  • CR123-batterij

Stap 2: De sensor

De sensor
De sensor

Het hart van het systeem is de VL6180-sensor. Dit is een baanbrekende technologie waarmee de absolute afstand kan worden gemeten, onafhankelijk van de reflectie van het doel. In plaats van de afstand te schatten door de hoeveelheid licht te meten die door het object wordt teruggekaatst (wat aanzienlijk wordt beïnvloed door kleur en oppervlak), meet de VL6180X nauwkeurig de tijd die het licht nodig heeft om naar het dichtstbijzijnde object te reizen en terug te reflecteren naar de sensor (tijd -van-vlucht). De VL6180X combineert een IR-zender, een bereiksensor en een omgevingslichtsensor in een drie-in-een, gebruiksklaar, hervloeibaar pakket, de VL6180X is eenvoudig te integreren en bespaart de maker van het eindproduct lange en kostbare optische en mechanische ontwerpoptimalisaties.

De module is ontworpen voor gebruik met een laag stroomverbruik. Ik gebruikte het Pololu breakout-bord met spanningsregelaars aan boord waarmee het kan werken over een ingangsspanningsbereik van 2,7 V tot 5,5 V.

De sensor staat 3 geldige schaalfactoren toe die het maximale meetbereik van 20 tot 60 cm instellen, met verschillende gevoeligheden. Door een bereikschaalfactor te configureren, kan het potentiële maximale bereik van de sensor worden vergroot ten koste van een lagere resolutie. Door de schaalfactor in te stellen op 2, krijg je een bereik tot 40 cm met een resolutie van 2 mm, terwijl een schaalfactor van 3 een bereik tot 60 cm biedt met een resolutie van 3 mm. Je moet de 3 weegschalen testen met de afmetingen van je brievenbus. Omdat de mijne 25 cm (H) was, heb ik schaalfactor = 1 gebruikt.

Stap 3: Aanpassing van de realtimeklok

Voor de RTC gebruikte ik een DS3231 breakout board met een EEPROM (nutteloos voor mijn doel) en een muntbatterij. Toen ik besloot de RTC van stroom te voorzien via de batterij van het hoofdapparaat (een 3v CR123), verwijderde ik de knoopbatterij; om energie te besparen heb ik ook de EEPROM verwijderd (door de pinnen voorzichtig door te snijden) en de led aan boord.

De muntbatterij was niet nuttig voor mij omdat ik de datum/uur/minuut/seconde niet in realtime hoefde bij te houden, maar de RTC hoefde maar 24 uur te tellen en vervolgens het alarm te activeren om het apparaat in te schakelen.

Stap 4: Overige Diversen aan boord

Overige Diversen aan boord
Overige Diversen aan boord
Overige Diversen aan boord
Overige Diversen aan boord

Het inschakelen van het apparaat wordt bereikt door een transistor en een MosFET-circuit, geactiveerd door het RTC-alarm. Zodra het alarm is gereset, onderbreekt het circuit de stroomtoevoer naar het apparaat voor nog een cyclus van 24 uur. Wanneer het alarm wordt bereikt, schakelt de DS3231 een pin van hoog naar laag: in normale omstandigheden is de transistor verzadigd en maakt hij kortsluiting naar de MosFET-poort. Zodra het alarm de basis van de transistor naar aarde brengt, wordt deze geopend en kan de MosFET het circuit sluiten en de rest van de componenten van stroom voorzien.

Daarnaast heb ik een "test-1M" jumper toegevoegd. Het doel van deze schakelaar is om – indien geactiveerd – de cyclus te wijzigen van eenmaal per dag naar eenmaal per minuut, om implementatietests uit te voeren. Om het interval van een dag in een minuut te veranderen, moet u eerst jumper "Test-C" ongeveer 15 seconden sluiten om de activeringsperiode van het klokalarm te omzeilen en het apparaat in te schakelen. Wanneer de tests zijn voltooid, opent u de jumpers en stelt u het apparaat opnieuw in (cycle power).

Stap 5: Schematisch

Schematisch
Schematisch

Stap 6: Software en logica

Tijdens de tests heb ik (om praktische redenen) een NodeMCU-controller gebruikt, dus de software zorgt hiervoor door de CHIP-variale in te stellen op "NodeMCU" of "esp8266".

De schets implementeert de WiFiManager-bibliotheek zodat het apparaat tijdens de allereerste run verbinding kan maken met een geldige WiFi-AP. In zo'n geval gaat het apparaat in AP-modus, zodat je er verbinding mee kunt maken en het juiste wifi-netwerk kunt kiezen om mee te doen. Daarna wordt de netwerkconfiguratie opgeslagen in de EPROM voor volgende cycli.

De variabele REST_MSG bevat het http-bericht dat moet worden verzonden wanneer de sensor een object in de mailbox vindt. In mijn geval stuurt het een bericht naar een domotische REST-server, maar je kunt het naar wens wijzigen: een Telegram BOT-bericht, een IFTTT WebHook-gebeurtenis, enz.

De rest van de schets bevindt zich allemaal in de setup()-functie, omdat de lus nooit wordt bereikt. Na de configuraties die nodig zijn voor de verschillende bibliotheken, stelt de software de kloktijd in op 00:00:01 en het alarm op eenmaal per dag (of eenmaal per minuut als de “test-1M”-jumper is geactiveerd). Vervolgens neemt het de maatregel, verzendt het de melding (als er een object in de mailbox wordt gevonden) en stelt het de alarmpin opnieuw in, waardoor het apparaat wordt uitgeschakeld. Aan het einde van de cyclus wordt alleen de RTC ingeschakeld, geteld voor 24 uur. De jumper Test-1M is verbonden met RX-pin van de ESP8266, gebruikt als GPIO-3 door middel van de instelling: setMode(PIN, FUNCTION_3). Hierdoor kunt u de seriële monitor niet gebruiken tijdens het uitvoeren van de ESP8266: de regel " #define DEBUG " (die alle seriële afdrukken in de schets toestaat) wordt alleen gebruikt wanneer een NodeMCU is geïnstalleerd in plaats van een ESP8266.

De ESP8266 handelt de I2C-communicatie met de RTC en de sensor af via de pinnen GPIO-0 en GPIO-2, geïnitialiseerd in de Wire-bibliotheek.

De volledige code is te downloaden via deze link.

Assistive Tech-wedstrijd
Assistive Tech-wedstrijd
Assistive Tech-wedstrijd
Assistive Tech-wedstrijd

Tweede plaats in de Assistive Tech-wedstrijd

Aanbevolen: