Inhaltsverzeichnis:

Das landwirtschaftliche Sensor-Array - Gunook
Das landwirtschaftliche Sensor-Array - Gunook

Video: Das landwirtschaftliche Sensor-Array - Gunook

Video: Das landwirtschaftliche Sensor-Array - Gunook
Video: WILSEN.sonic.level—IoT-Sensor für smarte Füllstandsmessung in der Landwirtschaft 2024, Juli
Anonim
Das landwirtschaftliche Sensor-Array
Das landwirtschaftliche Sensor-Array

Ein Projekt von Jackson Breakell, Tyler McCubbins und Jakob Thaler für EF 230

Die Landwirtschaft ist ein wichtiger Produktionsfaktor in den Vereinigten Staaten. Pflanzen können für die unterschiedlichsten Zwecke verwendet werden, von Rohstoffen für die Herstellung von Kleidung, Pharmazeutika und Lebensmittelzusatzstoffen bis hin zum direkten Verzehr der Pflanzenteile, meist der keimenden Früchte. Die meisten Pflanzen werden in den Vereinigten Staaten im Freien angebaut, wo die Wetterbedingungen oder die Temperatur nicht im großen Maßstab kontrolliert werden können. Angesichts der Tatsache, wie drastisch widrige Wetterbedingungen das Wachstum von Feldfrüchten beeinflussen können, was wiederum die Wirtschaft der Vereinigten Staaten beeinflusst, wird die Überwachung der Bedingungen eines Feldes entscheidend.

Unser Gerät, das Agricultural Sensor Array, ermöglicht es Landwirten, den Zustand vorgewählter Teile ihres Feldes mit 4 Sensoren zu überwachen: einem Regenwassersensor, einem Bodenfeuchtesensor, einem Temperatursensor und einer Lichtschranke. Die Kombination dieser Sensoren ermöglicht es einem Landwirt, den Ernteertrag der Saison angemessen zu planen, sich auf zu wenig oder zu viel Regen einzustellen, Katastrophen besser zu bewältigen, die Ernten töten können, und Zeit und Mühe durch die Entnahme von Bodenproben und den Einsatz teurerer Sensorgeräte zu sparen. In diesem Instructable führen wir Sie durch die Verkabelung und Codierung hinter unserem landwirtschaftlichen Sensor-Array, damit auch Sie Ihre eigenen machen können.

Schritt 1: Erforderliche Materialien sammeln

Erforderliche Materialien sammeln
Erforderliche Materialien sammeln

Nachfolgend finden Sie eine Liste der erforderlichen Materialien, die Sie für den Anfang benötigen."

1. Arduino-Board, vorzugsweise Arduino Uno

2. Grundlegendes Steckbrett

3. 1x 220 Ohm Widerstand

4. Verschiedene Drähte in verschiedenen Farben

5. Micro-USB-zu-USB-Kabel

6. Auf der Platine montierbarer Lautsprecher

7. Optoelektronischer Sensor

8. Temperatursensor

9. Regenwassersensor

10. Bodenfeuchtesensor

11. Computer mit installiertem Matlab 2017 und Arduino Support Package (Support Package finden Sie unter Add-Ons)

Schritt 2: Verdrahten Sie die Platine und verbinden Sie

Verdrahten Sie die Platine und verbinden Sie
Verdrahten Sie die Platine und verbinden Sie

Beginnen Sie damit, die Platine entweder wie oben gezeigt zu verdrahten oder wie es Ihnen am besten passt. Es gibt buchstäblich unbegrenzte Möglichkeiten, das Board zu verdrahten, so dass die genaue Konfiguration wirklich Ihnen überlassen wird. Nachdem die Platine verdrahtet ist, beginnen Sie mit dem Anbringen Ihrer Sensoren. Die Regenwasser-, Bodenfeuchtigkeits- und Lichtschranken sind alle analoge Ausgänge, also stellen Sie sicher, dass sie mit dem Analog-In-Bereich des Arduino verdrahtet sind. Der Temperatursensor hingegen ist ein digitaler Ausgang, also stellen Sie sicher, dass er mit einem verfügbaren digitalen Eingang Ihres Arduino verbunden ist. Der Arduino sollte Ausgänge für 3,3 V und 5 V haben, also stellen Sie sicher, dass die Sensoren an Spannungen angeschlossen sind, mit denen sie kompatibel sind.

Nachdem Sie sicher sind, dass die Platine richtig verdrahtet ist, stecken Sie das Micro-USB-zu-USB-Kabel von Ihrem Computer in den Micro-USB-Anschluss Ihres Computers und schalten Sie Ihren Arduino ein. Öffnen Sie Matlab, und stellen Sie sicher, dass Sie das Arduino Support Package unter Add-Ons installiert haben, und führen Sie den Befehl "fopen(serial('nada'))" aus, ohne ". Ein Fehler sollte auftauchen und der Fehler sollte anzeigen Sie haben einen verfügbaren Comport mit einer Nummer. Führen Sie den Befehl "a=arduino('comx', 'uno')" aus, wobei x die Nummer Ihres Comports ist, um Ihr Arduino einem Objekt zuzuordnen. Die LED auf dem Arduino sollte schnell blinken, um anzuzeigen, dass es verbunden ist.

Schritt 3: Codieren Sie die optoelektronischen und Temperatursensoren

Codieren Sie die optoelektronischen und Temperatursensoren
Codieren Sie die optoelektronischen und Temperatursensoren

Bevor Sie mit dem Codieren beginnen, notieren Sie sich, wo Ihre Sensoren am Arduino angeschlossen sind, da dies für den Befehl readVoltage wichtig ist. Beginnen Sie Ihren Code, indem Sie die Variable Sonnenlicht gleich dem Befehl "readVoltage(a, 'X#')' setzen, wobei X# der Port ist, mit dem Sie verbunden sind, und a einfach das Arduino aufruft, das Sie dieser Variable zugeordnet haben. Starten Sie eine if-Anweisung, und legen Sie die erste Bedingung für Sonnenlicht <3 fest. Legen Sie die Ausgabe als "info. TOD='night'" fest, um die Tageszeit als Struktur auszugeben, und fügen Sie dann eine else-Anweisung mit der Ausgabe als "info. TOD=' day'". Da dies eine else-Anweisung ist, brauchen wir keine Bedingung, da sie für alle anderen Werte funktioniert, die nicht in der if-Anweisung definiert sind. Stellen Sie sicher, dass Sie Ihre if-Anweisung mit einem Ende beenden und fahren Sie mit der Programmierung fort der Temperatursensor.

Setzen Sie die Variable thermo gleich einem anderen readVoltage-Befehl, der Befehl lautet "readVoltage(a, 'X#')". In unserem Fall musste die Temperatur von Spannungseinheiten in Celsius umgerechnet werden, also die Gleichung "tempC=(thermo-.5).*100", um von der Spannung in Celsius umzurechnen. Der Einfachheit halber haben wir die Temperatur in Celsius in Fahrenheit umgerechnet, dies ist jedoch rein optional.

Code zum Einfügen

Sonnenlicht=readVoltage(a, 'A1')wenn Sonnenlicht<3

info. TOD='Nacht'

anders

info. TOD='Tag'

Ende

thermo=readVoltage(a, 'A3');

tempC=(thermo-.5).*100;

info.tempF=(9/5.*tempC)+32

Schritt 4: Kodieren Sie die Regenwasser- und Bodenfeuchtesensoren

Kodieren Sie die Regenwasser- und Bodenfeuchtesensoren
Kodieren Sie die Regenwasser- und Bodenfeuchtesensoren

Wie im letzten Schritt erwähnt, stellen Sie sicher, dass Sie wissen, an welche Ports Ihre Sensoren auf der Arduino-Platine angeschlossen sind, da dies diesen Schritt viel weniger frustrierend macht. Beginnen Sie mit dem Regenwassersensor und starten Sie eine if-Anweisung. Setzen Sie die erste Bedingung für "readVoltage(a, 'X#')>4" und setzen Sie die Ausgabe auf "info. Rain='no Niederschlag". Fügen Sie ein elseif hinzu und setzen Sie dessen Bedingung zuvor auf den Befehl readVoltage, aber setzen Sie es auf >2. Fügen Sie ein "&&" hinzu, um eine weitere Bedingung anzuzeigen, die erfüllt werden muss, und setzen Sie sie wie zuvor auf einen readVoltage-Befehl und setzen Sie sie auf <=4. Die Ausgabe lautet "info. Rain='misting'". Schließlich fügen Sie ein else hinzu und setzen seine Ausgabe auf "info. Rain='downpour'". Eventuell müssen Sie die Werte für die Bedingungen an die Umgebungsfeuchtigkeit des Raumes anpassen, in dem Sie arbeiten.

Beginnen Sie als Nächstes den Code für den Bodenfeuchtesensor und beginnen Sie mit einer if-Anweisung. Setzen Sie die Bedingung der if-Anweisung auf "readVoltage(a, 'X#')>4, und fügen Sie die Ausgabe "info.soil='dry'" hinzu. Fügen Sie eine elseif-Anweisung hinzu und setzen Sie sie mit dem obigen readVoltage-Befehl auf > 2. Fügen Sie ein "&&" hinzu und setzen Sie einen weiteren readVoltage-Befehl für <=4. Setzen Sie seine Ausgabe auf "info.soil='optimal Sättigung'". Fügen Sie eine else-Anweisung hinzu und setzen Sie ihre Ausgabe auf "info.soil='flood' “, und vergessen Sie nicht, ein Ende hinzuzufügen.

Code zum Einfügen

if readVoltage(a, 'A0')>4 info. Rain='kein Niederschlag'

elseif readVoltage(a, 'A0')>2 && readVoltage(a, 'A0')<=4

info. Rain='vernebeln'

anders

info. Rain='Regenregen'

Ende

if readVoltage(a, 'A2')>4

info.soil='trocken'

elseif readVoltage(a, 'A2')>2 && readVoltage(a, 'A0')<=4

info.soil='optimale Sättigung'

anders

info.soil='flut'

Ende

Schritt 5: Codierung der Lautsprecher- und Message-Box-Ausgabe

Codierung der Lautsprecher- und Messagebox-Ausgabe
Codierung der Lautsprecher- und Messagebox-Ausgabe

Die Ausgänge für dieses Gerät können stark variieren, aber in diesem Fall führen wir Sie durch einen direkt auf einem Gerät montierten Lautsprecherausgang und einen Meldungsbox-Ausgang, der auf einem Remote-Computer angezeigt werden kann. Unser Lautsprecher ist so konzipiert, dass er verschiedene Frequenzen ausgibt, niedriger bedeutet schlechter, für optimale Erntetemperatur, Sonnenlicht, Bodenfeuchtigkeit und Niederschlag. Beginnen Sie Ihren Lautsprecherausgabecode mit einer if-Anweisung und setzen Sie seine Bedingung auf den Befehl "readVoltage(a, 'X#')>4 || info.tempF=3 || readVoltage(a, 'A2')>2 && readVoltage(a, 'A0')<=4". Fügen Sie den gleichen playTone-Befehl wie oben gezeigt hinzu, ändern Sie jedoch 200 in 1000, um einen höheren, positiveren Ton zu erzeugen. Fügen Sie dann ein else hinzu und fügen Sie den gleichen playTone-Befehl erneut hinzu, ändern Sie jedoch 1000 in 1500. Diese unterschiedlichen Töne zeigen die Schwere der Situation des Felds an. Stellen Sie sicher, dass Sie ein Ende hinzufügen, um Ihre if-Anweisung zu vervollständigen.

Unser letzter Codeabschnitt wird eine Ausgabe sein, die eine Meldungsbox erzeugt. Erstellen Sie einen String mit '-Markierungen in Klammern und konvertieren Sie die Teile Ihrer Struktur in Strings, indem Sie den Befehl "num2str(info.x)" verwenden, wobei x der Name der Unterstruktur in der Info-Struktur ist. Verwenden Sie "string newline", um Zeilenumbrüche in Ihr Nachrichtenfeld einzufügen, und geben Sie Ihre Nachricht in Text mit Anführungszeichen ein, wobei Sie den tatsächlichen Wert des Felds mit dem oben genannten num2str-Befehl in die Zeichenfolge einfügen. Verwenden Sie schließlich mit dem definierten String den Befehl "msgbox(string)", um die Daten als Meldungsfeld auf Ihrem Monitor anzuzeigen.

Code zum Einfügen

if readVoltage(a, 'A2')>4 || info.tempF<32 playTone(a, 'D9', 200, 1)

Sonst Sonnenlicht>=3 || readVoltage(a, 'A2')>2 && readVoltage(a, 'A0')<=4

playTone(a, 'D9', 1000, 3)

anders

playTone(a, 'D9', 1500, 5)

Ende

string = ['Die Temperatur ist (Grad F)', num2str(info.tempF)]

string=[string newline 'Der Boden ist ', num2str(info.soil)]

string=[string newline 'Außerhalb Niederschlag ist', num2str(info. Rain)]

string=[string newline 'Die Tageszeit ist', num2str(info. TOD)]

msgbox(string)

Schritt 6: Fazit

Abschluss
Abschluss

Während die Welt immer mehr auf synthetische Alternativen zu bisher geernteten Produkten setzt, wird die Landwirtschaft sicherlich noch lange ein relevanter und wichtiger Wirtschaftsfaktor bleiben. Eine angemessene Überwachung des Ackerlandes ist für einen Landwirt entscheidend, um das Beste aus seiner Ernte herauszuholen, und mit unserem Gerät ist es nicht nur möglich, das gesamte Ackerland aus der Ferne zu überwachen, sondern es ist auch kostengünstig und einfach möglich installieren und zuverlässig. Wir hoffen, dass sich diese Anleitung als informativ und leicht verständlich erwiesen hat, und hoffen, dass sich das Gerät für alle Anwendungs- oder Experimentierzwecke als nützlich erweist.

Viel Spaß beim Codieren, Das landwirtschaftliche Sensor-Array-Team

Empfohlen: