Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

SmartAgro

Composants et fournitures

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKR MEM Shield
× 1
Température et humidité GY21
× 1
Capteur de lumière UV Adafruit SI1145
× 1
Capteur d'humidité du sol SparkFun (avec bornes à vis)
× 1
Capteur de température numérique étanche Adafruit DS18B20
× 1
Câbles de raccordement (générique)
× 1

Outils et machines nécessaires

Fer à souder (générique)

À propos de ce projet

Présentation

La terre agricole est une ressource précieuse, elle est nécessaire à la survie de la société moderne. Mais tant de défis sont rencontrés dans l'agriculture agricole, vous devez obtenir la température, l'humidité et la lumière du soleil adaptées à la culture, puis vous devez vous assurer que rien ne détruit la culture.

Le concept agriculture intelligente a pris forme ces dernières années, l'idée de surveiller à distance l'état de votre culture. Mais cette révolution dans l'agriculture a un coût élevé, la plupart des systèmes disponibles sont trop coûteux à mettre en œuvre dans les petites exploitations et les systèmes peuvent ne pas couvrir les grandes exploitations.

SmartAgro entend créer un réseau d'appareils, faciles à utiliser qui peuvent être placés sur le terrain qui est surveillé. Les appareils collectent des données atmosphériques, des paramètres liés au sol et des valeurs lumineuses, envoyant toutes les données au nuage où elles sont présentées sur un tableau de bord.

Cela permet à n'importe quelle ferme, quelle que soit sa taille, d'entrer dans la nouvelle ère de l'agriculture, en mettant en œuvre une flotte évolutive d'appareils sur leurs terres qui peuvent les avertir si une sécheresse approche.

Vidéo

Image

Fonctionnalité

SmartAgro permet à l'utilisateur de mettre en œuvre facilement une flotte d'appareils sur le terrain qui est surveillé. Ces appareils prélèvent des échantillons des capteurs à des intervalles de temps définis.

Les données sont ensuite enregistrées dans un fichier.csv sur une carte SD et envoyées au backend où les données sont visualisées sur un tableau de bord. Le projet se compose d'un front-end et d'un backend.

Front-End

Le front-end du projet fait référence aux dispositifs physiques placés sur le terrain. Ces appareils prélèvent des échantillons de données de leurs capteurs, les gravent sur une carte SD et envoient les données au backend. Vous trouverez ci-dessous l'aperçu des fonctionnalités du projet.

Un GSM MKR est utilisé pour le front-end, l'appareil collecte les données puis les envoie à Soracom, où elles sont visualisées. Vous trouverez ci-dessous les étapes suivies par l'appareil lors de la collecte de données.

Carte SD

L'appareil enregistrera les données acquises à partir des capteurs sur la carte SD qui y est attachée. Les données seront ajoutées à un fichier.csv qui pourra ensuite être téléchargé.

Dans la configuration, l'appareil localise si un fichier.csv dans lequel écrire est disponible et s'y ajoute s'il existe déjà. Il créera un nouveau fichier s'il n'en existe pas. Voici quelques images du fichier.

Batterie

L'appareil peut être alimenté de plusieurs manières. Il peut être alimenté par une batterie LiPo via le port fourni sur l'appareil, par une banque d'alimentation ou en connectant une batterie via le port VIN de l'appareil.

La durée de vie de l'appareil dépend fortement de la puissance de la batterie. L'appareil passe en mode veille entre les lectures pour économiser autant d'énergie que possible.

Envoi de données

Les données sont envoyées à Soracom via une connexion GSM au serveur. Les données sont envoyées en tant que charge utile JSON. Ces données sont ensuite reçues par le backend et sont ensuite traitées. Vous trouverez ci-dessous un exemple de la charge utile.

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

Backend

Le backend de l'application fait référence à Soracom. Les données sont reçues par Soracom, traitées puis affichées sur le tableau de bord.

Le tableau de bord

Le tableau de bord du projet est hébergé sur Soracom Lagoon. Les données sont reçues par Soracom Air dans le backend, Soracom Harvest collecte les données, puis Lagoon les interroge auprès de Harvest.

L'emplacement de chaque appareil de la flotte et toutes les données des capteurs sont tracés sur le tableau de bord. Des captures d'écran du tableau de bord sont ci-dessous.

Alertes

L'utilisateur peut également configurer le backend pour recevoir des notifications par e-mail si l'indice UV ou l'humidité du sol collecté par l'appareil sont anormaux. De cette façon, l'utilisateur saura si les cultures ont besoin d'attention.

Avantages

L'utilisateur exploitant ce projet bénéficiera de nombreux avantages :

  • Visualisez les données en déplacement, à tout moment et n'importe où à l'aide du tableau de bord.
  • Facilement évoluer les appareils et les utiliser comme plusieurs.
  • Coûts inférieurs aux solutions habituelles sur le marché.

Construire le projet

Étape 1 : Appareil requis

Ce projet nécessite une liste de capteurs et d'autres matériaux. La liste complète des matériaux nécessaires est ci-dessous.

  • 1, Arduino MKR GSM
  • 1, Bouclier Arduino MEM
  • 1, module de température et d'humidité GY-21
  • 1, Capteur de température étanche
  • 1, capteur de lumière UV SI-1145
  • 1, capteur d'humidité du sol
  • 1, boîtier de piles 2 AA (avec piles) ou une batterie LiPo
  • 1, carte SIM Soracom
  • 1, carte SD
  • Cavaliers

Étape 2 : Connecter le circuit

Un fer à souder sera nécessaire pour souder tous les composants ensemble. Les schémas sont illustrés dans le fichier fritzing ci-dessous.

N'oubliez pas de fixer le bouclier MEM à la carte !

Préparation du GSM MKR

L'Arduino MKR GSM doit être préparé. J'ai alimenté la carte avec 2 piles AA via le port VIN. Les étapes sont ci-dessous.

Étape 3 :Reconnaissance du code

Il y a 4 sections principales dans le code utilisé pour le projet.

  • Préparer SD
  • Collecter des données
  • Graver les données sur SD
  • Envoyer des données à Soracom

Toutes ces sections sont décrites et détaillées ci-dessous.

Préparer SD

bool createFile(){ // crée le fichier .csv dans la carte SD Serial.println("Creating File"); Serial.println (" OK - Création et ouverture du fichier "); Fichier dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println ("OK - Fichier créé"); Serial.println (" OK - Ajout d'une légende au fichier "); Serial.print(" OK - Ajout "); Serial.println(légende); dataFile.println(légende); dataFile.close(); Serial.println ("Succès - Données ajoutées"); } else { Serial.println (" Erreur - Fichier non détecté "); Serial.println(" OK - Réessayer dans 5 secondes"); Serial.println("________________________________________"); Serial.println(""); dataFile.close(); retard (5000); renvoie faux ; } Serial.println("________________________________________"); Serial.println(""); return true;} void checkFile(){ Serial.println("Vérification .csv"); Serial.println("________________________________________"); Serial.println("Configuration du fichier"); Serial.println ("OK - Vérification de la présence du fichier"); if(SD.exists("datalog.csv")) // vérifie si le fichier .csv existe déjà { // ajoute au fichier existant s'il existe Serial.println ("OK - Le fichier existe"); Serial.println (" OK - S'ajoutera au fichier existant "); Serial.println("________________________________________"); Serial.println(""); } else { // crée un nouveau fichier à ajouter à Serial.println (" OK - File Not Present "); Serial.println("OK - Création de fichier"); Serial.println(""); while(!createFile()) {}; }} 

Le checkFile() La fonction vérifie si le fichier.csv auquel le périphérique est censé s'ajouter existe. Si le fichier existe, la fonction se termine, sinon elle appelle createFile() qui crée un nouveau fichier.csv à ajouter.

Collecter des données

void collectData(){ Serial.println("Recueil de données"); Serial.println("________________________________________"); Serial.println("Obtenir des données à partir de capteurs"); Serial.println("OK - Contacter tous les capteurs"); // collecte des données de tous les capteurs solarSens.requestTemperatures(); solTemp =solSens.getTempCByIndex(0) ; SolHumidity =analogRead(A1) ; Humidité du sol =map(Humidité du sol, 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 - Données collectées"); Serial.println (" OK - Données de vidage "); Serial.print("[Lumière] Visible "); Serial.println(visibleLight); Serial.print("[Lumière] Infrarouge "); Serial.println(irLight); Serial.print("[Lumière] Ultraviolet "); Serial.println(uvLight); Serial.print("[Atmo] Température "); Serial.println(atmoTemp); Serial.print("[Atmo] Humidité "); Serial.println(atmoHumidity); Serial.print("[Soil] Température "); Serial.println(solTemp); Serial.print("[Soil] Humidité "); Serial.println(solHumidité); Serial.println(" Succès - Données Dumpées"); Serial.println("________________________________________"); Serial.println("");} 

Cette section de code collecte les données de tous les capteurs à bord. Il contacte des capteurs pour la température et l'humidité atmosphériques, l'humidité et la température du sol et l'indice UV, la valeur de la lumière IR et la lumière visible.

Graver les données sur SD

bool burnData(String data){ Serial.println("Burning Data"); Serial.println("________________________________________"); Serial.println ("Gravure de données sur carte SD"); Serial.println (" OK - Ouverture du fichier "); Fichier dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println("OK - Le fichier est présent"); Serial.print(" OK - Ajout "); Serial.println(données); Serial.println(" OK - Gravure des données" ); dataFile.println(données); // graver les données sur la carte SD dataFile.close(); Serial.println ("Succès - Données ajoutées"); Serial.println("________________________________________"); Serial.println(""); } else { Serial.println (" Erreur - Fichier non présent "); Serial.println(" OK - Réessayer dans 5 secondes"); Serial.println("________________________________________"); Serial.println(""); retard (5000); } Serial.println("");} 

Cette fonction grave les données précédemment compilées dans une ligne d'un fichier.csv sur la carte SD. Les données sont ajoutées au fichier sur la carte.

Envoyer des données à Soracom

void parseData(String dataToSend){ Serial.println("Envoi de données"); Serial.println("________________________________________"); Serial.println("Envoi de données à Soracom"); Serial.println ("OK - Configuration de la connexion"); if(client.connect(url, 80)) // préparer la connexion et formater l'envoi { Serial.println(" OK - Connexion établie, analyse des données"); client.println("POST / HTTP/1.1"); client.println("Hôte :Harvest.soracom.io"); client.println("User-Agent :Arduino/1.0"); client.println("Connexion :fermer"); client.print("Content-Length:"); client.println(dataToSend.length()); client.println(""); client.println(dataToSend); Serial.println ("OK - Données analysées"); } Serial.println(" OK - Obtenir une réponse"); Serial.println(""); // relire depuis le serveur while(1) { if(client.available()) { char c =client.read(); Serial.print(c); } if(!client.connected()) { break; } } Serial.println(" Succès - Les données sont analysées"); Serial.println("________________________________________"); Serial.println("");} 

Enfin, les données sont envoyées à Soracom. L'appareil a établi une connexion avec le serveur, puis prépare les informations d'identification. Les données sont ensuite envoyées au serveur et la réponse est imprimée sur le moniteur série.

L'appareil se met ensuite en veille pendant une durée définie en répétant à nouveau les étapes.

Étape 4 :Configuration des variables

Quelques variables doivent être éditées par l'utilisateur avant que son projet puisse être utilisé. Les variables éditables sont dans le fichier principal du code. Ceux-ci sont décrits ci-dessous.

  • nom_périphérique représente le nom personnalisé de l'appareil. Ceci est envoyé avec la charge utile à Soracom, il est utile d'identifier les appareils à part lors de la gestion d'une flotte d'appareils.
  • temps de sommeil est la durée (en millisecondes) pendant laquelle l'appareil va dormir entre les lectures. L'appareil se mettra en veille entre les lectures pour réduire la consommation de batterie.
  • proDebug est défini sur true en cas de bogue et sur false dans le cas contraire. Si proDebug est activé, l'appareil doit être connecté à un ordinateur avec le moniteur série allumé pour fonctionner. Définissez sur true lors du débogage, mais assurez-vous qu'il est défini sur false s'il se trouve sur le terrain. Notez que l'appareil imprimera toujours sur la série même si proDebug est faux ;

Étape 5 :Configuration de la carte SD

La carte SD doit être préparée avant de pouvoir être utilisée avec l'appareil. La carte SD doit être formatée en FAT 32. Suivez les étapes ci-dessous pour préparer la carte SD.

Étape 6 :Téléchargez le code

Avant de configurer le backend, les données doivent lui être envoyées.

Pour ce faire, connectez votre GSM MKR à votre ordinateur et téléchargez le code sur l'appareil, assurez-vous que le mode de l'appareil est défini sur 1 pour cette configuration. Une fois le code téléchargé, placez tous les capteurs dans l'eau.

Appuyez maintenant sur le bouton de l'appareil et attendez que les données soient collectées et envoyées. Répétez cette opération plusieurs fois pour remplir Soracom Air.

Étape 7 :Configurer Soracom

Cette étape est divisée en 2 sections, la première couvrira la création d'un compte avec Soracom et l'enregistrement de votre SIM tandis que l'autre couvrira la configuration de Soracom Harvest pour collecter les données d'Air. Si vous avez déjà un compte chez Soracom, ignorez la première section.

Section 1 : Création d'un compte

Section 2 : Groupes et récolte

Étape 8 :Configurer Soracom Lagoon

La dernière chose à mettre en place sur Soracom est Lagoon, c'est l'outil que nous utiliserons pour visualiser nos données et créer des alertes email si les données ne sont pas bonnes. Suivez les étapes ci-dessous.

Bibliothèques

  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lesser General Public License cette bibliothèque est dans le domaine public
  • MKRGSM (c) 2016 Arduino AG GNU Lesser General Public License, cette bibliothèque est dans le domaine public
  • Wire (c) 2006 Nicholas Zambetti GNU Lesser General Public License cette bibliothèque est dans le domaine public
  • OneWire (c) 2007 Jim Studt GNU General Public Licence this library is in the public domain
  • DallasTemperature GNU General Public Licence this library is in the public domain
  • RTCZero (c) 2015 Arduino LLC GNU Lesser General Public Licence this library is in the public domain
  • SPI (c) 2015 Hristo Gochkov Lesser GNU Lesser General Public Licence this library is in the public domain
  • SD (C) 2010 SparkFun Electronics GNU General Public Licence this library is in the public domain

Final

Finally I designed an enclosure for the project, it would be preferable if the top of the enclosure would be transparent so that the UV sensor can be placed within the enclosure, I placed my sensor outside the enclosure to prevent any interference.

Finally, ensure that all the variables are set and then place the device on the field, it should be ready to monitor all parameters now.

Using an SD Card Module

I have chosen to use the Arduino MKR MEM shield as it is easy to use and quite compact. An SD card module can also be used though most operate with 5v while the MKR GSM can only provide 3.3v, therefore a level convertor is needed to step up the 3.3v to 5v.

Contexte

I came up with this idea while going on a bus past fields. I remembered reading about new devices used to monitor agricultural fields but I was made aware of the costs which are mostly not affordable for farmers.

So I decided to use the low cost Arduino to monitor multiple parameters on the farm and allow any farm, big or small to step into the age of IoT and smart farming.

Code

SmartAgro
The Full Code

Schémas

schematics_rrBJ3HiIfc.fzz

Processus de fabrication

  1. Capteur Arduino - Types et applications
  2. Construire un réseau de capteurs sans fil dans votre maison
  3. Surveillance du CO2 avec le capteur K30
  4. Comment mesurez-vous ?
  5. Capteur d'obstacles simple avec Arduino
  6. Capteur d'empreintes digitales capacitif avec un Arduino ou ESP8266
  7. Tour de capteur cloud Arduino
  8. Pistolet à eau à détecteur de mouvement
  9. Comment créer un site web communiquant Arduino en utilisant PHP