Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

SmartAgro

Componenten en benodigdheden

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT-simkaart
× 1
Arduino MKR MEM Shield
× 1
GY21 Temperatuur en vochtigheid
× 1
Adafruit SI1145 UV-lichtsensor
× 1
SparkFun Bodemvochtsensor (met schroefaansluitingen)
× 1
Adafruit Waterproof DS18B20 Digitale temperatuursensor
× 1
Jumperdraden (algemeen)
× 1

Benodigde gereedschappen en machines

Soldeerbout (algemeen)

Over dit project

Overzicht

Landbouwgrond is een kostbare hulpbron, het is noodzakelijk voor het voortbestaan ​​van de moderne samenleving. Maar er zijn zoveel uitdagingen in de agrarische landbouw, je moet de temperatuur, vochtigheid en zonlicht goed voor het gewas krijgen, en dan moet je ervoor zorgen dat niets het gewas vernietigt.

Het concept slim boeren de laatste jaren vorm krijgt, het idee om op afstand toezicht te houden op de staat van uw gewas. Maar deze revolutie in de landbouw brengt hoge kosten met zich mee, de meeste beschikbare systemen zijn te duur om op kleine boerderijen te implementeren en de systemen zijn mogelijk niet geschikt voor grote boerderijen.

SmartAgro wil een eenvoudig te gebruiken netwerk van apparaten creëren die op het bewaakte veld kunnen worden geplaatst. De apparaten verzamelen atmosferische gegevens, bodemgerelateerde parameters en lichtwaarden en sturen alle gegevens naar de cloud waar ze op een dashboard worden gepresenteerd.

Hierdoor kan elke boerderij, ongeacht de grootte, het nieuwe landbouwtijdperk binnenstappen en een schaalbare vloot van apparaten over hun land implementeren die hen kunnen waarschuwen als er een droogte nadert.

Video

Afbeelding

Functionaliteit

Met SmartAgro kan de gebruiker eenvoudig een vloot van apparaten implementeren op het veld dat wordt gemonitord. Deze apparaten nemen met bepaalde tijdsintervallen monsters van de sensoren.

De gegevens worden vervolgens gelogd naar een.csv-bestand op een SD-kaart en verzonden naar de backend waar de gegevens worden gevisualiseerd op een dashboard. Het project bestaat uit een front-end en een backend.

Front-end

De voorkant van het project verwijst naar de fysieke apparaten die op het veld worden geplaatst. Deze apparaten nemen monsters van gegevens van hun sensoren, branden deze op een SD-kaart en sturen de gegevens naar de backend. Hieronder vindt u het functionaliteitsoverzicht van het project.

Voor de front-end wordt een MKR-gsm gebruikt, het apparaat verzamelt de gegevens en stuurt deze vervolgens naar Soracom, waar ze worden gevisualiseerd. Hieronder staan ​​de stappen die het apparaat neemt bij het verzamelen van gegevens.

SD-kaart

Het apparaat logt de gegevens die van de sensoren zijn verkregen op de SD-kaart die eraan is bevestigd. De gegevens worden toegevoegd aan een.csv-bestand dat vervolgens kan worden gedownload.

Tijdens de installatie lokaliseert het apparaat of een.csv-bestand om naar te schrijven beschikbaar is en zal het eraan toevoegen als het al bestaat. Het zal een nieuw bestand maken als er nog geen bestaat. Hieronder staan ​​enkele afbeeldingen van het bestand.

Batterij

Het apparaat kan op meerdere manieren van stroom worden voorzien. Het kan worden gevoed door een LiPo-batterij via de meegeleverde poort op het apparaat, door een powerbank of door een batterij aan te sluiten via de VIN-poort op het apparaat.

De levensduur van het apparaat is sterk afhankelijk van de kracht van de batterij. Het apparaat gaat tussen het lezen in de slaapstand om zoveel mogelijk energie te besparen.

Gegevens verzenden

De gegevens worden via een GSM-verbinding met de server naar Soracom gestuurd. De gegevens worden verzonden als een JSON-payload. Deze gegevens worden vervolgens door de backend ontvangen en vervolgens verwerkt. Hieronder ziet u een voorbeeld van de lading.

{ "Latitude":53.3570404, "Longitude":-6.2609935, "soilTemp":20.56, "soilHumidity":40, "atmoTemp":22.12, "atmoHumidity":62, "uvLight":0.00, "irLight":257, "deviceName":"device1"} 

Back-end

De backend van de applicatie verwijst naar Soracom. De gegevens worden door Soracom ontvangen, verwerkt en vervolgens weergegeven op het dashboard.

Het dashboard

Het dashboard voor het project wordt gehost op Soracom Lagoon. De gegevens worden door Soracom Air in de backend ontvangen, Soracom Harvest verzamelt de gegevens en vervolgens bevraagt ​​Lagoon het vanuit Harvest.

De locatie van elk apparaat in de vloot en alle sensorgegevens worden op het dashboard uitgezet. Screenshots van het dashboard staan ​​hieronder.

Meldingen

De gebruiker kan de backend ook instellen om e-mailmeldingen te ontvangen als de UV-index of bodemvochtigheid die door het apparaat wordt verzameld, abnormaal is. Op deze manier weet de gebruiker of de gewassen aandacht nodig hebben.

Voordelen

De gebruiker die dit project uitvoert, heeft veel voordelen:

  • Visualiseer gegevens onderweg, altijd en overal met behulp van het dashboard.
  • Schakel de apparaten eenvoudig op en gebruik ze als meerdere.
  • Lagere kosten dan de gebruikelijke oplossingen op de markt.

Het project bouwen

Stap 1:Vereiste apparatuur

Dit project vereist een lijst van sensoren en andere materialen. De volledige lijst met benodigde materialen staat hieronder.

  • 1, Arduino MKR GSM
  • 1, Arduino MEM-schild
  • 1, GY-21 temperatuur- en vochtigheidsmodule
  • 1, waterdichte temperatuursensor
  • 1, SI-1145 UV-lichtsensor
  • 1, Bodemvochtsensor
  • 1, 2AA batterijdoos (met batterijen) of een LiPo-batterij
  • 1, Soracom-simkaart
  • 1, SD-kaart
  • Jumperdraden

Stap 2:het circuit aansluiten

Er is een soldeerbout nodig om alle componenten aan elkaar te solderen. De schema's worden geïllustreerd in het onderstaande fritzing-bestand.

Vergeet niet om het MEM-schild aan het bord te bevestigen!

De MKR GSM voorbereiden

De Arduino MKR GSM moet worden voorbereid. Ik voedde het bord met 2 AA-batterijen via de VIN-poort. De stappen staan ​​hieronder.

Stap 3:De code erkennen

Er zijn 4 hoofdsecties in de code die voor het project wordt gebruikt.

  • SD voorbereiden
  • Verzamel gegevens
  • Brand gegevens naar SD
  • Gegevens verzenden naar Soracom

Al deze secties worden hieronder beschreven en gedetailleerd.

SD voorbereiden

bool createFile(){ // maak het .csv-bestand op de SD-kaart Serial.println("Creating File"); Serial.println ("OK - Bestand maken en openen"); Bestand dataFile =SD.open("datalog.csv", FILE_WRITE); if (dataFile) { Serial.println ("OK - Bestand gemaakt"); Serial.println ("OK - Legenda toevoegen aan bestand"); Serial.print ("OK - Toevoegen "); Serial.println(legenda); dataFile.println(legenda); dataFile.close(); Serial.println("Succes - Gegevens toegevoegd"); } else { Serial.println("Fout - Bestand niet gedetecteerd"); Serial.println("OK - Opnieuw proberen in 5 seconden"); Serial.println("_________________________________________"); Serieel.println(""); dataFile.close(); vertraging (5000); onwaar retourneren; } Serial.println("_________________________________________"); Serieel.println(""); return true;} void checkFile(){ Serial.println("Checking .csv"); Serial.println("_________________________________________"); Serial.println("Bestand instellen"); Serial.println ("OK - Controleren op bestandsaanwezigheid"); if(SD.exists("datalog.csv")) // controleer of het .csv-bestand al bestaat { // voeg toe aan het bestaande bestand als het bestaat Serial.println ("OK - Bestand bestaat"); Serial.println("OK - Wordt toegevoegd aan bestaand bestand"); Serial.println("_________________________________________"); Serieel.println(""); } else { // maak een nieuw bestand om toe te voegen aan Serial.println ("OK - Bestand niet aanwezig"); Serial.println ("OK - Bestand maken"); Serieel.println(""); while(!createFile()) {}; }} 

De checkFile() functie controleert of het.csv-bestand waaraan het apparaat moet worden toegevoegd, bestaat. Als het bestand bestaat, eindigt de functie, anders roept het createFile() . aan waarmee een nieuw.csv-bestand wordt gemaakt om aan toe te voegen.

Gegevens verzamelen

void collectData(){ Serial.println("Gegevens verzamelen"); Serial.println("_________________________________________"); Serial.println("Gegevens ophalen van sensoren"); Serial.println("OK - Contact opnemen met alle sensoren"); // gegevens verzamelen van alle sensoren soilSens.requestTemperatures(); bodemTemp =bodemSens.getTempCByIndex(0); bodemvochtigheid =analoog lezen (A1); bodemvochtigheid =kaart (bodemvochtigheid, 1023, 0, 0, 100); atmoTemp =gy21.readTemperature(); atmoHumidity =gy21.readHumidity(); zichtbaarLicht =uv.readVisible(); irLight =uv.readIR(); rawUVLight =uv.readUV(); uvLight =(ruweUVLight/100); Serial.println ("OK - Gegevens verzameld"); Serial.println ("OK - Gegevens dumpen"); Serial.print("[Licht] Zichtbaar "); Serial.println(visibleLight); Serial.print("[Licht] Infrarood "); Serial.println(irLight); Serial.print("[Licht] Ultraviolet "); Serial.println(uvLight); Serial.print("[Atmo] Temperatuur "); Serial.println(atmoTemp); Serial.print("[Atmo] Vochtigheid "); Serial.println(atmoVochtigheid); Serial.print("[Bodem] Temperatuur "); Serial.println(soilTemp); Serial.print("[Bodem] Vochtigheid "); Serial.println (bodemvochtigheid); Serial.println("Succes - Gegevens gedumpt"); Serial.println("_________________________________________"); Serial.println("");} 

Dit codegedeelte verzamelt gegevens van alle sensoren aan boord. Het maakt contact met sensoren voor atmosferische temperatuur en vochtigheid, bodemvocht en temperatuur en UV-index, IR-lichtwaarde en zichtbaar licht.

Brand gegevens naar SD

bool burnData(String data){ Serial.println("Burning Data"); Serial.println("_________________________________________"); Serial.println ("Gegevens branden op SD-kaart"); Serial.println ("OK - Bestand openen"); Bestand dataFile =SD.open("datalog.csv", FILE_WRITE); if (dataFile) { Serial.println ("OK - Bestand is aanwezig"); Serial.print ("OK - Toevoegen "); Serial.println(gegevens); Serial.println ("OK - Gegevens branden"); dataFile.println(data); // brand de gegevens op de SD-kaart dataFile.close(); Serial.println("Succes - Gegevens toegevoegd"); Serial.println("_________________________________________"); Serieel.println(""); } else { Serial.println("Fout - Bestand niet aanwezig"); Serial.println ("OK - probeer het opnieuw in 5 seconden"); Serial.println("_________________________________________"); Serieel.println(""); vertraging (5000); } Serial.println("");} 

Deze functie brandt de gegevens die eerder in een regel van een a.csv-bestand zijn gecompileerd naar de SD-kaart. De gegevens worden toegevoegd aan het bestand op de kaart.

Gegevens naar Soracom sturen

void parseData(String dataToSend){ Serial.println("Gegevens verzenden"); Serial.println("_________________________________________"); Serial.println("Gegevens verzenden naar Soracom"); Serial.println ("OK - Verbinding instellen"); if (client.connect (url, 80)) // bereid verbinding voor en formatteer send { Serial.println ("OK - Verbinding tot stand gebracht, gegevens parseren"); client.println("POST / HTTP/1.1"); client.println("Host:harvest.soracom.io"); client.println ("Gebruiker-agent:Arduino/1.0"); client.println("Verbinding:sluiten"); client.print ("Inhoudslengte:"); client.println(dataToSend.length()); cliënt.println(""); client.println(dataToSend); Serial.println ("OK - Gegevens geparseerd"); } Serial.println ("OK - Reactie krijgen"); Serieel.println(""); // lees terug van server while(1) { if(client.available()) {char c =client.read(); Serieafdruk(c); } if(!client.connected()) { break; } } Serial.println ("Succes - Gegevens zijn geparseerd"); Serial.println("_________________________________________"); Serial.println("");} 

Ten slotte worden de gegevens naar Soracom gestuurd. Het apparaat heeft een verbinding met de server tot stand gebracht en bereidt vervolgens de inloggegevens voor. De gegevens worden vervolgens naar de server verzonden en het antwoord wordt afgedrukt naar de seriële monitor.

Het apparaat gaat dan voor een bepaalde tijd in slaapstand en herhaalt de stappen opnieuw.

Stap 4:De variabelen instellen

Een paar variabelen moeten door de gebruiker worden bewerkt voordat het project kan worden gebruikt. De variabelen die kunnen worden bewerkt, bevinden zich in het hoofdbestand van de code. Deze worden hieronder beschreven.

  • apparaatnaam staat voor de aangepaste naam van het apparaat. Dit wordt samen met de payload naar Soracom gestuurd, het is handig om apparaten apart te identificeren bij het beheren van een vloot van apparaten.
  • sleepTime is de hoeveelheid tijd (in milliseconden) dat het apparaat slaapt tussen het lezen. Het apparaat gaat in slaapstand tussen het lezen om het batterijverbruik te verminderen.
  • proDebug is ingesteld op waar als er fouten worden gemaakt en anders op onwaar. Als proDebug is ingeschakeld, moet het apparaat zijn aangesloten op een computer met de seriële monitor aan om te kunnen werken. Stel in op waar bij het debuggen, maar zorg ervoor dat het is ingesteld op onwaar als het zich in het veld bevindt. Merk op dat het apparaat nog steeds naar het serienummer zal afdrukken, zelfs als proDebug onwaar is;

Stap 5:de SD-kaart instellen

De SD-kaart moet worden voorbereid voordat deze met het apparaat kan worden gebruikt. De SD-kaart moet worden geformatteerd als FAT 32. Volg de onderstaande stappen om de SD-kaart voor te bereiden.

Stap 6:Upload de code

Voordat de backend wordt ingesteld, moeten er gegevens naar worden verzonden.

Sluit hiervoor uw MKR GSM aan op uw computer en upload de code naar het apparaat, zorg ervoor dat de modus van het apparaat voor deze configuratie op 1 staat. Nadat de code is geüpload, plaatst u alle sensoren in het water.

Druk nu op de knop op het apparaat en wacht tot de gegevens zijn verzameld en verzonden. Herhaal dit een paar keer om Soracom Air te vullen.

Stap 7:Soracom instellen

Deze stap is opgesplitst in 2 secties, de eerste omvat het maken van een account bij Soracom en het registreren van uw simkaart, terwijl de andere het opzetten van Soracom Harvest omvat om de gegevens van Air te verzamelen. Als je al een account bij Soracom hebt, sla dan het eerste gedeelte over.

Sectie 1:Een account aanmaken

Sectie 2:Groepen en oogsten

Stap 8:Soracom Lagoon instellen

Het laatste dat u op Soracom moet instellen, is Lagoon, dit is de tool die we zullen gebruiken om onze gegevens te visualiseren en e-mailwaarschuwingen te creëren als de gegevens niet goed zijn. Volg de onderstaande stappen.

Bibliotheken

  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lesser General Public License deze bibliotheek is in het publieke domein
  • MKRGSM (c) 2016 Arduino AG GNU Lesser General Public License deze bibliotheek is in het publieke domein
  • Wire (c) 2006 Nicholas Zambetti GNU Lesser General Public License deze bibliotheek is in het publieke domein
  • OneWire (c) 2007 Jim Studt GNU General Public License deze bibliotheek is in het publieke domein
  • DallasTemperature GNU General Public License deze bibliotheek is in het publieke domein
  • RTCZero (c) 2015 Arduino LLC GNU Lesser General Public License deze bibliotheek is in het publieke domein
  • SPI (c) 2015 Hristo Gochkov Kleinere GNU Kleinere algemene openbare licentie deze bibliotheek is in het publieke domein
  • SD (C) 2010 SparkFun Electronics GNU General Public License deze bibliotheek is in het publieke domein

Finale

Ten slotte ontwierp ik een behuizing voor het project, het zou de voorkeur hebben als de bovenkant van de behuizing transparant zou zijn zodat de UV-sensor in de behuizing kan worden geplaatst. Ik plaatste mijn sensor buiten de behuizing om interferentie te voorkomen.

Zorg er ten slotte voor dat alle variabelen zijn ingesteld en plaats het apparaat vervolgens op het veld, het zou nu klaar moeten zijn om alle parameters te bewaken.

Een SD-kaartmodule gebruiken

Ik heb ervoor gekozen om het Arduino MKR MEM-schild te gebruiken omdat het gemakkelijk te gebruiken en vrij compact is. Een SD-kaartmodule kan ook worden gebruikt, hoewel de meeste met 5v werken, terwijl de MKR GSM slechts 3,3v kan leveren, daarom is een niveauconvertor nodig om de 3,3v naar 5v te verhogen.

Achtergrond

Ik kwam op dit idee toen ik met een bus langs velden ging. Ik herinnerde me dat ik had gelezen over nieuwe apparaten die werden gebruikt om landbouwgronden in de gaten te houden, maar ik werd op de hoogte gebracht van de kosten die meestal niet betaalbaar zijn voor boeren.

Dus besloot ik de goedkope Arduino te gebruiken om meerdere parameters op de boerderij te bewaken en elke boerderij, groot of klein, in het tijdperk van IoT en slimme landbouw te laten stappen.

Code

SmartAgro
The Full Code

Schema's

schematics_rrBJ3HiIfc.fzz

Productieproces

  1. Arduino-sensor – Typen en toepassingen
  2. Een draadloos sensornetwerk in uw huis bouwen
  3. CO2-monitoring met K30-sensor
  4. Hoe lang ben je?
  5. Eenvoudige obstakelsensor met Arduino
  6. Capacitieve vingerafdruksensor met een Arduino of ESP8266
  7. Arduino Cloud Sensor Tower
  8. Bewegingssensor-waterpistool
  9. Een website maken die Arduino communiceert met PHP
  10. Mini-radar met Arduino
  11. Arduino stuurt sensorgegevens naar MySQL-server (PHPMYADMIN)