Inhoudsopgave:

IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren - Ajarnpa
IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren - Ajarnpa

Video: IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren - Ajarnpa

Video: IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren - Ajarnpa
Video: Schwarzman College — экологически рациональное образование для будущих лидеров 2024, November
Anonim
Image
Image
IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren
IDC2018IOT Verbonden voer-, water- en monitorsysteem voor huisdieren

Invoering

Of je nu een student bent die onder druk staat, een hardwerkende persoon of gewoon meer dan een paar uur per dag van huis is. Als zorgzame eigenaren van gezelschapsdieren willen we ervoor zorgen dat onze dierbaren gezond blijven, gevoed worden en natuurlijk NIET op de bank liggen (klootzak!). Het is tijd om te stoppen met het vragen om gunsten, of zelfs te betalen voor dergelijke diensten.

Met dit coole project willen we je de mogelijkheid bieden om het zelf te doen (ik heb gehoord dat het nu een ding is). We zullen een oplossing bouwen om onze huisdieren beter in de gaten te houden en zelfs actie ondernemen terwijl we op kantoor, op school of gewoon rondhangen met onze vrienden of significante andere.

Met dit systeem kunt u uw huisdier op afstand voeren terwijl u de hoeveelheid voer die u uit de container schenkt, regelt en de waterbak vult wanneer deze leeg raakt. Bovendien kunnen we nu de waterniveaus van de kom in realtime volgen, de inhoud van de voedselcontainer meten en vooral het huisdier live bekijken met behulp van een eenvoudige cameramodule.

Over ons

Tomer Maimon, Gilad Ram en Alon Shprung. Drie gepassioneerde studenten Computerwetenschappen van de IDC Herzeliya. Dit is ons eerste Instructables-project als onderdeel van een IoT-workshop - we hopen dat je het interessant en leuk zult vinden om te bouwen!

Stap 1: De architectuur begrijpen:

De architectuur begrijpen
De architectuur begrijpen
De architectuur begrijpen
De architectuur begrijpen

We kunnen dit systeem in twee hoofdonderdelen verdelen:

  1. Inkomende datakanalen:

    • Watersensor - bemonstering van de waterniveaus in de voerbak, gegevens worden verzonden van de Node-MCU-eenheid naar de Blynk-server en worden uiteindelijk gepresenteerd via het huisdierendashboard.
    • Sonarsensor - bemonstering van de inhoud van de voedselcontainer, gegevens worden verzonden van de Arduino-eenheid (met Ethernet-schildverlenging) naar de Blynk-server en worden uiteindelijk gepresenteerd via het Pet Dashboard.
    • Pi-cameramodule - proeft constant frames van het dierengebied, de Pi host zijn eigen server die de live feed naar het huisdierendashboard levert.
  2. Opdrachtstroom:

    • Feed Button (Dashboard) - een virtuele pin-waarde bijwerken via Blynk, de relevante functie wordt geactiveerd op het Arduino-bord, de servo beweegt dan om voedsel door het deksel te laten gaan.
    • Geef water (dashboard) - werkt actief een virtuele pinwaarde bij via Blynk, de relevante functie wordt geactiveerd op het Node-MCU-bord, het relais wordt ingeschakeld, de waterpomp begint water naar de kom van het huisdier te stromen.
    • Pet Live Feed (Dashboard) - ingebed in het dashboard en livegegevens presenteren via de kolfserver die op het Pi-apparaat draait.

Stap 2: Lijst met onderdelen

Lijst met onderdelen
Lijst met onderdelen
Lijst met onderdelen
Lijst met onderdelen
Lijst met onderdelen
Lijst met onderdelen

Om aan dit systeem te gaan werken, heeft u de volgende (of vergelijkbare) onderdelen nodig:

  1. Fysiek:

    • Voedselcontainer: we gebruikten een industriële tweezijdige pijp van 45 cm, die we in een huiswarenhuis kochten. Het is belangrijk om 2 uitgangen te hebben. Een voor het meten van de inhoud, en een tweede uitgang voor het open/dicht mechanisme.
    • Duct Tape: om dingen bij elkaar te houden;)
    • Jumper Wires: hoe meer hoe beter, altijd goed om wat extra te hebben als er iets misgaat.
    • Ethernet-kabel: voor het aansluiten van onze Arduino (met ethernet-schild) op internet.
    • Tuinieren Kan: Gebruikt als een container voor water en de waterpomp.
    • Korte waterslang: aangesloten op de pomp en giet water in de voerbak van het huisdier.
  2. Sensoren:

    • WINGONEER Waterniveausensor: meet het waterniveau in de voerbak van het huisdier.
    • Sonarsensor - Meet de afstand van het voedselniveau vanaf het bovenste deksel in de container.
    • TONGLING-relais: hiermee kunnen we de waterpomp die water stroomt in- of uitschakelen.
    • Pi-cameramodule: aangesloten op een Raspberry Pi-apparaat en streamt beelden van het dierengebied.
    • Generieke servo: vergrendelt en ontgrendelt de voedselcontainer.
  3. Elektronische apparaten / borden:

    • Arduino Uno: bestuurt de implementatie van de voedselcontainereenheid.
    • Arduino Ethernet Shield: biedt internetverbinding naar ons bord.
    • NodeMCU(ESP-8266): Regelt de watereenheid, zowel voor het meten als voor het gieten van water. Dit bord heeft de mogelijkheid om verbinding te maken via wifi.
    • Raspberry Pi 3 - host de cameraserver en levert live feed aan het huisdierendashboard.
    • VicTsing 80 GPH Dompelpomp: Stroomt water van de tuinier naar de kom, samen met de waterslang.

Stap 3: Bedrading en dingen samen plaatsen

Bedrading en dingen samen plaatsen
Bedrading en dingen samen plaatsen
Bedrading en dingen samen plaatsen
Bedrading en dingen samen plaatsen
Bedrading en dingen samen plaatsen
Bedrading en dingen samen plaatsen

Bedrading

Voordat we beginnen, is het raadzaam om de Arduino / Node-MCU op een breadboard te plaatsen om het gemakkelijker te maken om alle draden samen te voegen en op een fysieke locatie te plaatsen. Daarnaast wordt aanbevolen om lange draden te gebruiken om fouten door losraken van de kabel te voorkomen. We hebben je een bedradingsschema gegeven voor de Node-MCU (Water Unit) en de Arduino (Food Unit).

  1. Voedseleenheid (Arduino):

    • Sonarsensor:

      • GND (zwart) = GND
      • VCC (Rood) = 5V
      • Trig (paars) = 3
      • Echo (blauw) = 4
    • Servo:

      • GND (zwart) = GND
      • VCC (Rood) = 5V
      • Signaal (geel) = 9
  2. Watereenheid (knooppunt):

    • Waterniveausensor:

      • S (Blauw) = A0
      • + (Rood) = 3v3
      • - (Zwart) = GND
    • Relais (elektrisch aangesloten op de waterpomp):

      • IN (Geel) = D1
      • VCC (Rood) = Vin
      • GND (zwart) = GND
  3. Camera-eenheid (Pi):

    • Camerasensor:

      • Maak verbinding met de enkele camerapoort van de Pi (fluxkabel)
      • Als u meer wilt weten over Pi met cameramodule - Link

Onderdelen samen assembleren

In dit deel bent u welkom om dit project aan te passen en aan te passen om het "de uwe" te maken. Maar we zullen u voorzien van afbeeldingen en een beschrijving om onze versie van het product te reconstrueren.

  1. Voedseleenheid (Arduino): De container is vrij eenvoudig, we zullen ons concentreren op het maken van de twee deksels.

    • Bovenste deksel: Snijd 2 gaten in het deksel zodat de sonarsensor erin past (zie bijgevoegde afbeelding).
    • Onderste deksel + Mechanisme: Begin met het nemen van een van de plastic hulpstukken (meegeleverd met de servosensor) en maak een "Sledge Hammer" -vorm met behulp van ducttape / houten stokken (we gebruikten alleen tape). Bevestig vervolgens de servo. Nu hebben we 2 gaten op het deksel zelf nodig. Met de eerste moet de servo passen in het mechanisme dat we hebben gebouwd aan de "binnenkant" van het deksel. Snijd nog een gat op basis van de zijkant van de "hamerkop" die je hebt gemaakt. Op deze manier zal de staart van de hamer, wanneer de servo opent, voedsel naar de uitgang vegen en voorkomen dat grote stukken aan elkaar blijven plakken.
  2. Watereenheid (Node-MCU): Sluit eenvoudig de waterslang aan op de waterpomp, plaats deze nu in de tuinbak (zorg ervoor dat u NIET het verkeerde onderdeel met het relais en de elektrische draden in het water plaatst).
  3. Camera-eenheid: het enige wat u hoeft te doen is de Pi met cameramodule op een locatie naar keuze te plaatsen.

Stap 4: Blynk instellen

Blynk instellen
Blynk instellen
Blynk instellen
Blynk instellen

Alle externe mogelijkheden in dit project zijn gebaseerd op Blynk. Deze service biedt ons in feite een gratis webserver en RESTful API voor communicatie met onze Arduino/Node-MCU-apparaten via internet met behulp van het HTTP-protocol. Met Blynk kunnen we virtuele pinnen definiëren, die zullen worden gebruikt als een adres voor het uitvoeren van specifieke functies met betrekking tot het gieten van water, het voeden en bemonsteren van de verschillende sensoren (we hebben dat deel voor u gedaan, u hoeft alleen uw eigen applicatietoken te krijgen, wat hierna wordt uitgelegd).

Hoe krijg ik mijn Blynk-authenticatietoken

  1. Download de Blynk app via AppStore / PlayStore voor je mobiele apparaat.
  2. Meld u aan voor deze service (het is gratis te gebruiken).
  3. Start een nieuw project, zorg ervoor dat u het juiste apparaat selecteert (in ons geval ESP8266).
  4. Na het maken wordt er een e-mail met AUTHENTICATIETOKEN verzonden - Bewaar de token voor de volgende stappen.

Let op: Blynk is volledig te gebruiken via de app, maar we hebben besloten om ons eigen dashboard op maat te implementeren.

Ten slotte, om door te gaan naar de volgende stap, moet u Blynk-bibliotheek downloaden en installeren - Link (ga door naar deel 3)

Stap 5: Configureer voedselcontainer, waterpomp en live camera

Configureer Voedselcontainer, Waterpomp & Live Camera
Configureer Voedselcontainer, Waterpomp & Live Camera
Configureer Voedselcontainer, Waterpomp & Live Camera
Configureer Voedselcontainer, Waterpomp & Live Camera

Op dit punt waren we klaar met het samenstellen van alle onderdelen en kregen we onze blynkAuthAppToken (zie stap 3).

We hebben je alle code gegeven die je nodig hebt om dit project uit te voeren, je hoeft alleen maar een paar variabelen in de code te veranderen, waardoor het "je eigen" privésysteem wordt.

Allereerst, begin met het downloaden van de Arduino IDE (als je het nog niet hebt gedaan) - Link

Arduino voedselcontainer

  1. Stel de IDE in op het Arduino-bord: Tools -> Board -> Arduino/Genuino Uno
  2. Zorg ervoor dat u deze bibliotheken hebt geïnstalleerd: Sketch -> Bibliotheek opnemen -> Bibliotheken beheren

    Estafette (door Rafael)

  3. Open het schetsbestand van PetFeeder.ino, configureer de volgende parameters (zie bijgevoegde afbeelding voor hulp):

    auth = "REPLACE_WITH_YOUR_BLYNK_TOKEN";

  4. Compileer en upload de schets naar uw Arduino-apparaat.

Node-MCU watereenheid

  1. Stel de IDE in op het Node-MCU-bord:

    Zie het eerste deel van deze instructable voor gedetailleerde uitleg

  2. Zorg ervoor dat u deze bibliotheken hebt geïnstalleerd: Sketch -> Bibliotheek opnemen -> Bibliotheken beheren

    WiFi-manager (door tzapu)

  3. Open het schetsbestand van PetFeeder.ino, configureer de volgende parameters (zie bijgevoegde afbeelding voor hulp):

    • auth = "REPLACE_WITH_YOUR_BLYNK_TOKEN";
    • ssid = "YOUR_WIFI_SSID"; // Het is eigenlijk de naam van je wifi-netwerk
    • pass = "YOUR_WIFI_PASSWORD"; // als je geen wachtwoord hebt, gebruik dan een lege string ""
  4. Compileer en upload de schets naar uw Node-MCU-apparaat.

Pi Live-cameramodule

  1. Sluit de pi-cameramodule aan
  2. Voer " sudo raspi-config " uit en stel de optie "camera" in.
  3. Test de camera met de opdracht "raspistill" om een foto te maken

    r aspistill -o image.jpg

  4. Stel Flask-webcameraserver in:

    • Installeer alle vereisten met pip install -r requirements.txt
    • Gebruik python om camera_server.py uit te voeren
    • Bekijk het op 127.0.0.1:5000/video_feed
  5. Stel de Flask-webserver in om te draaien bij het opstarten:

    • Voeg de volgende regel toe aan /etc/rc.local (vóór de afsluitregel):

      python /camera_server.py

Stap 6: Het configuratiescherm gebruiken

Het configuratiescherm gebruiken
Het configuratiescherm gebruiken

Opstelling

Dit deel is vrij eenvoudig, het enige dat u hoeft te doen is het "blynk app-token" als volgt in het "index.js" -bestand in te voegen:

const blynkToken = "YOUR_BLYNK_APP_TOKEN" // gebruik hetzelfde token uit de vorige stappen.

Gebruik

  1. Open het dashboard door te dubbelklikken op het bestand "index.html".
  2. Het dashboard zal het systeem automatisch elke 10 minuten bemonsteren.
  3. Water & Voedselcontainer maatregelen kunnen handmatig worden genomen.
  4. De knoppen "Water geven" en "Voeren" worden gebruikt om uw huisdier actief te voorzien van voedsel en water.
  5. Het onderste deel van het dashboard zal de live feed van de cameramodule presenteren als je de instructies van de vorige stap zorgvuldig hebt gevolgd.

Opmerking: als u het aantal keren dat de voedselcontainer opent wilt aanpassen wanneer u voedt, opent u het bestand "index.js" en wijzigt u de "waarde" op de volgende regel van "3" in een willekeurig aantal naar keuze:

fetch(baseURL + '/update/V1?value=3');

Stap 7: Uitdagingen, limieten en toekomstplannen

Uitdagingen

De belangrijkste uitdagingen voor ons in dit project waren het ontwerpen van het open/sluitmechanisme van de voedselcontainer en het creëren van een stabiele gelijktijdige code voor het besturen en meten van de voedseleenheid. Ik geloof dat we minstens 4 verschillende versies hebben geprobeerd totdat we tevreden waren. De grootste zorg was dat voedsel de uitgang blokkeerde. Om dat te voorkomen hebben we gekozen voor een voorhamer ontwerp, op deze manier veegt de staart van "de hamer" voedsel naar de uitgang wanneer we de container openen. Bovendien maakte het gebruik van een tweezijdige buis ons leven veel eenvoudiger tijdens het bouwen van de voedselcontainer. Zo'n object is perfect om aan de ene kant het uitgangsmechanisme te plaatsen en aan de andere kant een afstandssensor om de inhoud te meten.

Limieten

In deze fase van het project zijn er enkele beperkingen aan het systeem:

  1. Het is niet volledig geautomatiseerd, wat betekent dat het voeren en gieten van water handmatig gebeurt via het monitoringdashboard zonder slimme planners (die in de toekomst kunnen worden toegevoegd of door jou kunnen worden geïmplementeerd!).
  2. Het dashboard draait lokaal vanaf je eigen laptop, om het toegankelijker te maken kan het gehost worden op populaire platformen zoals "Heroku".
  3. We hebben een zeer eenvoudige cameramodule gebruikt, die kan worden vervangen door een veel gecompliceerdere module om een betere beeldkwaliteit mogelijk te maken en mogelijk een communicatiekanaal met uw huisdier toe te voegen (met behulp van een luidspreker).

Plannen voor de toekomst

Als we de tijd en het budget hadden om door te gaan met de ontwikkeling van dit systeem, hadden we enkele ideeën en een mogelijke planning in gedachten:

  1. Automatisch planningssysteem toevoegen voor het voeren van huisdieren - 2 ~ 3 dagen werk.
  2. Een website bouwen om gebruikers van ons systeem in staat te stellen een aangepast dashboard te maken dat online wordt gehost en toegankelijk is vanaf elk aangesloten apparaat - 1-2 maanden werk.
  3. Werken aan een industriële versie voor dit systeem, waardoor meer eigenaren van gezelschapsdieren hun huisdieren online beter kunnen controleren en ermee kunnen communiceren, we hadden veel interesse van vrienden die het resultaat van deze Instructable zagen. Dus als je de tijd en passie hebt om het project naar een hoger niveau te tillen, dan heb je volledige steun!

We hopen dat je genoten hebt van het lezen (en hopelijk bouwen!) van dit project:)

Aanbevolen: