Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

SmartAgro

Komponenten und Verbrauchsmaterialien

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKR MEM-Schild
× 1
GY21 Temperatur und Luftfeuchtigkeit
× 1
Adafruit SI1145 UV-Lichtsensor
× 1
SparkFun Bodenfeuchtesensor (mit Schraubklemmen)
× 1
Adafruit Waterproof DS18B20 Digitaler Temperatursensor
× 1
Jumper (generisch)
× 1

Notwendige Werkzeuge und Maschinen

Lötkolben (generisch)

Über dieses Projekt

Übersicht

Ackerland ist eine kostbare Ressource, sie ist für das Überleben der modernen Gesellschaft notwendig. Aber die landwirtschaftliche Landwirtschaft ist mit so vielen Herausforderungen konfrontiert, dass Sie die Temperatur, Luftfeuchtigkeit und das Sonnenlicht für die Ernte richtig einstellen müssen und dann müssen Sie sicherstellen, dass die Ernte durch nichts zerstört wird.

Das Konzept Smart Farming In den letzten Jahren hat sich die Idee entwickelt, den Zustand Ihrer Ernte aus der Ferne zu überwachen. Diese Revolution in der Landwirtschaft ist jedoch mit hohen Kosten verbunden, die meisten verfügbaren Systeme sind zu teuer, um sie in kleinen Betrieben zu implementieren, und die Systeme decken möglicherweise keine großen Betriebe ab.

SmartAgro beabsichtigt, ein Netzwerk von Geräten zu schaffen, die einfach zu verwenden sind und auf dem zu überwachenden Feld platziert werden können. Die Geräte sammeln atmosphärische Daten, bodenbezogene Parameter und Lichtwerte und senden alle Daten an die Cloud, wo sie auf einem Dashboard präsentiert werden.

Auf diese Weise kann jede Farm jeder Größe in das neue Zeitalter der Landwirtschaft eintreten und eine skalierbare Geräteflotte auf ihrem Land implementieren, die sie warnen kann, wenn sich eine Dürre nähert.

Video

Bild

Funktionalität

SmartAgro ermöglicht dem Benutzer die einfache Implementierung einer Geräteflotte auf dem zu überwachenden Feld. Diese Geräte entnehmen den Sensoren in definierten Zeitabständen Proben.

Die Daten werden dann in einer CSV-Datei auf einer SD-Karte protokolliert und an das Backend gesendet, wo die Daten auf einem Dashboard visualisiert werden. Das Projekt besteht aus einem Frontend und einem Backend.

Front-End

Das Frontend des Projekts bezieht sich auf die auf dem Feld platzierten physischen Geräte. Diese Geräte nehmen Datenproben von ihren Sensoren, brennen sie auf eine SD-Karte und senden die Daten an das Backend. Unten ist die Funktionsübersicht des Projekts.

Als Frontend kommt ein MKR GSM zum Einsatz, das Gerät sammelt die Daten und sendet sie an Soracom, wo sie visualisiert werden. Im Folgenden sind die Schritte aufgeführt, die das Gerät beim Sammeln von Daten durchführt.

SD-Karte

Das Gerät protokolliert die von den Sensoren erfassten Daten auf der angeschlossenen SD-Karte. Die Daten werden an eine.csv-Datei angehängt, die dann heruntergeladen werden kann.

Im Setup sucht das Gerät, ob eine .csv-Datei zum Schreiben verfügbar ist, und hängt sie an, wenn sie bereits vorhanden ist. Es wird eine neue Datei erstellt, wenn keine vorhanden ist. Unten sind einige Bilder der Datei.

Batterie

Das Gerät kann auf mehrere Arten mit Strom versorgt werden. Es kann mit einem LiPo-Akku über den bereitgestellten Anschluss am Gerät, mit einer Powerbank oder durch Anschließen eines Akkus über den VIN-Anschluss am Gerät betrieben werden.

Die Lebensdauer des Geräts hängt stark von der Leistung des Akkus ab. Das Gerät wechselt zwischen den Lesevorgängen in den Ruhemodus, um so viel Energie wie möglich zu sparen.

Daten senden

Die Daten werden über eine GSM-Verbindung zum Server an Soracom gesendet. Die Daten werden als JSON-Payload gesendet. Diese Daten werden dann vom Backend empfangen und verarbeitet. Unten ist ein Beispiel für die Nutzlast.

{ "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

Das Backend der Anwendung verweist auf Soracom. Die Daten werden von Soracom empfangen, verarbeitet und dann auf dem Dashboard angezeigt.

Das Dashboard

Das Dashboard für das Projekt wird auf Soracom Lagoon gehostet. Die Daten werden von Soracom Air im Backend empfangen, Soracom Harvest sammelt die Daten und dann fragt Lagoon sie bei Harvest ab.

Der Standort jedes Geräts in der Flotte und alle Sensordaten werden auf dem Dashboard angezeigt. Screenshots des Dashboards sind unten.

Benachrichtigungen

Der Benutzer kann das Backend auch so einstellen, dass es E-Mail-Benachrichtigungen erhält, wenn der UV-Index oder die vom Gerät erfasste Bodenfeuchtigkeit abnormal sind. Auf diese Weise weiß der Benutzer, ob die Pflanzen Aufmerksamkeit benötigen.

Vorteile

Der Benutzer, der dieses Projekt betreibt, hat viele Vorteile:

  • Visualisieren Sie Daten unterwegs jederzeit und überall über das Dashboard.
  • Skalieren Sie die Geräte einfach und verwenden Sie sie als mehrere.
  • Geringere Kosten als marktübliche Lösungen.

Das Projekt erstellen

Schritt 1:Erforderliches Gerät

Dieses Projekt erfordert eine Liste von Sensoren und anderen Materialien. Die vollständige Liste der benötigten Materialien finden Sie unten.

  • 1, Arduino MKR GSM
  • 1, Arduino MEM-Schild
  • 1, GY-21 Temperatur- und Feuchtigkeitsmodul
  • 1, wasserdichter Temperatursensor
  • 1, SI-1145 UV-Lichtsensor
  • 1, Bodenfeuchtesensor
  • 1, 2AA Batteriebox (mit Batterien) oder ein LiPo-Akku
  • 1, Soracom Sim-Karte
  • 1, SD-Karte
  • Überbrückungsdrähte

Schritt 2:Anschließen des Stromkreises

Ein Lötkolben wird benötigt, um alle Komponenten zusammenzulöten. Die Schaltpläne sind in der folgenden Fritzing-Datei dargestellt.

Denken Sie daran, das MEM-Shield an der Platine zu befestigen!

Vorbereitung des MKR GSM

Der Arduino MKR GSM muss vorbereitet werden. Ich habe das Board mit 2 AA-Batterien über den VIN-Port betrieben. Die Schritte sind unten.

Schritt 3:Den Code bestätigen

Der für das Projekt verwendete Code besteht aus 4 Hauptabschnitten.

  • SD vorbereiten
  • Daten sammeln
  • Daten auf SD brennen
  • Daten an Soracom senden

Alle diese Abschnitte werden im Folgenden beschrieben und detailliert beschrieben.

SD vorbereiten

bool createFile () { // Erstellen Sie die .csv-Datei auf der SD-Karte Serial.println ( "Creating File"); Serial.println ("OK - Datei erstellen und öffnen"); Datei dataFile =SD.open("datalog.csv", FILE_WRITE); if (dataFile) { Serial.println ( "OK - Datei erstellt"); Serial.println ("OK - Legende an Datei anhängen"); Serial.print ( "OK - Anhängen"); Serial.println (Legende); dataFile.println (Legende); dataFile.close(); Serial.println ("Erfolg - Daten angehängt"); } else { Serial.println ("Fehler - Datei nicht erkannt"); Serial.println ("OK - In 5 Sekunden erneut versuchen"); Serial.println("_________________________________________"); Serial.println(""); dataFile.close(); Verzögerung (5000); falsch zurückgeben; } Serial.println("_________________________________________"); Serial.println(""); true zurückgeben;} void checkFile () {Serial.println ( "Checking .csv"); Serial.println("_________________________________________"); Serial.println ("Datei einrichten"); Serial.println ("OK - Dateipräsenz prüfen"); if(SD.exists("datalog.csv")) // prüfen, ob die .csv-Datei bereits existiert {// an die vorhandene Datei anhängen, wenn sie existiert Serial.println("OK - File Exists"); Serial.println ("OK - Wird an vorhandene Datei angehängt"); Serial.println("_________________________________________"); Serial.println(""); aufrechtzuerhalten. Sonst {// Erstellen Sie eine neue Datei zum Anhängen an Serial.println ( "OK - Datei nicht vorhanden"); Serial.println ("OK - Datei erstellen"); Serial.println(""); while(!createFile()) {}; }} 

Die checkFile() Funktion prüft, ob die.csv-Datei, an die das Gerät angehängt werden soll, existiert. Wenn die Datei existiert, endet die Funktion, ansonsten ruft sie createFile() . auf wodurch eine neue.csv-Datei zum Anhängen erstellt wird.

Daten sammeln

void collectData(){Serial.println("Sammeln von Daten"); Serial.println("_________________________________________"); Serial.println ("Daten von Sensoren abrufen"); Serial.println ("OK - Alle Sensoren kontaktieren"); // Sammeln von Daten von allen Sensoren groundSens.requestTemperatures(); BodenTemp =BodenSens.getTempCByIndex(0); Bodenfeuchtigkeit =analogRead (A1); BodenFeuchte =map(BodenFeuchte, 1023, 0, 0, 100); atmoTemp =gy21.readTemperature(); atmoHumidity =gy21.readHumidity(); visibleLight =uv.readVisible(); irLight =uv.readIR(); rawUVLight =uv.readUV(); uvLight =(rawUVLight/100); Serial.println ("OK - Daten gesammelt"); Serial.println ("OK - Daten ausgeben"); Serial.print ("[Licht] Sichtbar"); Serial.println (sichtbares Licht); Serial.print ("[Licht] Infrarot"); Serial.println (irLight); Serial.print ("[Licht] Ultraviolett"); Serial.println (uvLight); Serial.print ("[Atmo] Temperatur"); Serial.println (atmoTemp); Serial.print ("[Atmo] Luftfeuchtigkeit"); Serial.println (atmoHumidity); Serial.print ("[Boden] Temperatur"); Serial.println (soilTemp); Serial.print ("[Boden] Feuchtigkeit"); Serial.println (Bodenfeuchte); Serial.println ("Erfolg - Datenabzug"); Serial.println("_________________________________________"); Serial.println("");} 

Dieser Codeabschnitt sammelt Daten von allen Sensoren an Bord. Es kontaktiert Sensoren für Lufttemperatur und -feuchtigkeit, Bodenfeuchtigkeit und -temperatur sowie UV-Index, IR-Lichtwert und sichtbares Licht.

Daten auf SD brennen

bool burnData(String data){Serial.println("Burning Data"); Serial.println("_________________________________________"); Serial.println ("Daten auf SD-Karte brennen"); Serial.println ("OK - Datei öffnen"); Datei dataFile =SD.open("datalog.csv", FILE_WRITE); if (dataFile) { Serial.println ( "OK - Datei ist vorhanden"); Serial.print ( "OK - Anhängen"); Serial.println (Daten); Serial.println ("OK - Daten brennen"); dataFile.println (Daten); // die Daten auf die SD-Karte brennen dataFile.close(); Serial.println ("Erfolg - Daten angehängt"); Serial.println("_________________________________________"); Serial.println(""); } else { Serial.println ("Fehler - Datei nicht vorhanden"); Serial.println ("OK - In 5 Sekunden erneut versuchen"); Serial.println("_________________________________________"); Serial.println(""); Verzögerung (5000); } Serial.println("");} 

Diese Funktion brennt die Daten, die zuvor in eine Zeile einer csv-Datei kompiliert wurden, auf die SD-Karte. Die Daten werden an die Datei auf der Karte angehängt.

Daten an Soracom senden

void parseData (String dataToSend) {Serial.println ("Senden von Daten"); Serial.println("_________________________________________"); Serial.println ("Senden von Daten an Soracom"); Serial.println ("OK - Verbindung einrichten"); if (client.connect (url, 80)) // Verbindung vorbereiten und formatieren send { Serial.println ( "OK - Verbindung hergestellt, Daten analysieren"); client.println("POST/HTTP/1.1"); client.println("Host:Harvest.soracom.io"); client.println("Benutzer-Agent:Arduino/1.0"); client.println("Verbindung:schließen"); client.print("Inhaltslänge:"); client.println (dataToSend.length()); client.println(""); client.println (dataToSend); Serial.println ("OK - Daten analysiert"); } Serial.println ("OK - Antwort erhalten"); Serial.println(""); // vom Server zurücklesen while(1) { if(client.available()) { char c =client.read(); Serial.print (c); } if(!client.connected()) { Pause; } } Serial.println ("Erfolg - Daten werden analysiert"); Serial.println("_________________________________________"); Serial.println("");} 

Schließlich werden die Daten an Soracom gesendet. Das Gerät stellt eine Verbindung mit dem Server her und bereitet dann die Zugangsdaten vor. Die Daten werden dann an den Server gesendet und die Antwort wird auf dem Serial Monitor gedruckt.

Das Gerät geht dann für eine definierte Zeit in den Ruhezustand und wiederholt die Schritte erneut.

Schritt 4:Einrichten der Variablen

Einige Variablen müssen vom Benutzer bearbeitet werden, bevor das Projekt verwendet werden kann. Die bearbeitbaren Variablen befinden sich in der Hauptdatei des Codes. Diese werden unten beschrieben.

  • Gerätename steht für den benutzerdefinierten Namen des Geräts. Dies wird zusammen mit der Nutzlast an Soracom gesendet. Dies ist nützlich, um Geräte bei der Verwaltung einer Geräteflotte voneinander zu unterscheiden.
  • sleepTime ist die Zeit (in Millisekunden), die das Gerät zwischen den Lesevorgängen in den Ruhezustand versetzt. Das Gerät wechselt zwischen den Lesevorgängen in den Ruhezustand, um den Batterieverbrauch zu reduzieren.
  • proDebug wird bei Fehlern auf true gesetzt, andernfalls auf false. Wenn proDebug aktiviert ist, muss das Gerät mit einem Computer mit eingeschaltetem seriellen Monitor verbunden sein, damit es funktioniert. Beim Debuggen auf true setzen, aber sicherstellen, dass es auf false gesetzt ist, wenn es im Feld ist. Beachten Sie, dass das Gerät auch dann auf die Seriennummer druckt, wenn proDebug falsch ist;

Schritt 5:Einrichten der SD-Karte

Die SD-Karte muss vorbereitet werden, bevor sie mit dem Gerät verwendet werden kann. Die SD-Karte muss als FAT 32 formatiert sein. Folgen Sie den Schritten unten, um die SD-Karte vorzubereiten.

Schritt 6:Code hochladen

Vor der Einrichtung des Backends müssen Daten an dieses gesendet werden.

Verbinden Sie dazu Ihr MKR GSM mit Ihrem Computer und laden Sie den Code auf das Gerät hoch, stellen Sie sicher, dass der Modus des Geräts für diese Einrichtung auf 1 eingestellt ist. Nachdem der Code hochgeladen wurde, legen Sie alle Sensoren in Wasser.

Drücken Sie nun die Taste am Gerät und warten Sie, bis die Daten gesammelt und gesendet wurden. Wiederholen Sie dies ein paar Mal, um Soracom Air zu befüllen.

Schritt 7:Soracom einrichten

Dieser Schritt ist in 2 Abschnitte unterteilt. Der erste umfasst die Erstellung eines Kontos bei Soracom und die Registrierung Ihrer SIM-Karte, während der andere die Einrichtung von Soracom Harvest zum Sammeln der Daten von Air behandelt. Wenn Sie bereits ein Konto bei Soracom haben, überspringen Sie den ersten Abschnitt.

Abschnitt 1:Erstellen eines Kontos

Abschnitt 2:Gruppen und Ernte

Schritt 8:Soracom Lagoon einrichten

Das letzte, was Sie auf Soracom einrichten müssen, ist Lagoon. Dies ist das Tool, mit dem wir unsere Daten visualisieren und E-Mail-Benachrichtigungen erstellen, wenn die Daten nicht gut sind. Folgen Sie den Schritten unten.

Bibliotheken

  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
  • MKRGSM (c) 2016 Arduino AG GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
  • Wire (c) 2006 Nicholas Zambetti GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
  • OneWire (c) 2007 Jim Studt GNU General Public License Diese Bibliothek ist gemeinfrei
  • DallasTemperature GNU General Public License Diese Bibliothek ist gemeinfrei
  • RTCZero (c) 2015 Arduino LLC GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
  • SPI (c) 2015 Hristo Gochkov Lesser GNU Lesser General Public License Diese Bibliothek ist gemeinfrei
  • SD (C) 2010 SparkFun Electronics GNU General Public License Diese Bibliothek ist gemeinfrei

Finale

Schließlich habe ich ein Gehäuse für das Projekt entworfen, es wäre vorzuziehen, wenn die Oberseite des Gehäuses transparent wäre, damit der UV-Sensor innerhalb des Gehäuses platziert werden kann. Ich habe meinen Sensor außerhalb des Gehäuses platziert, um Störungen zu vermeiden.

Stellen Sie abschließend sicher, dass alle Variablen eingestellt sind und platzieren Sie das Gerät dann auf dem Feld, es sollte jetzt bereit sein, alle Parameter zu überwachen.

Verwenden eines SD-Kartenmoduls

Ich habe mich für das Arduino MKR MEM-Shield entschieden, da es einfach zu bedienen und recht kompakt ist. Ein SD-Kartenmodul kann auch verwendet werden, obwohl die meisten mit 5 V arbeiten, während das MKR GSM nur 3,3 V liefern kann, daher ist ein Pegelwandler erforderlich, um die 3,3 V auf 5 V zu erhöhen.

Hintergrund

Diese Idee kam mir, als ich mit dem Bus an Feldern vorbeifuhr. Ich erinnerte mich, von neuen Geräten zur Überwachung landwirtschaftlicher Felder gelesen zu haben, aber ich wurde auf die Kosten aufmerksam gemacht, die für Landwirte meist nicht tragbar sind.

Also entschied ich mich, das kostengünstige Arduino zu verwenden, um mehrere Parameter auf der Farm zu überwachen und es jeder Farm, ob groß oder klein, zu ermöglichen, in das Zeitalter von IoT und Smart Farming einzutreten.

Code

SmartAgro
The Full Code

Schaltpläne

schematics_rrBJ3HiIfc.fzz

Herstellungsprozess

  1. Arduino-Sensor – Typen und Anwendungen
  2. Aufbau eines drahtlosen Sensornetzwerks in Ihrem Zuhause
  3. CO2-Überwachung mit K30-Sensor
  4. Wie groß bist du?
  5. Einfacher Hindernissensor mit Arduino
  6. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  7. Arduino Cloud Sensor Tower
  8. Bewegungssensor-Wasserpistole
  9. So erstellen Sie eine Website, die Arduino mithilfe von PHP kommuniziert
  10. Mini-Radar mit Arduino