Table des matières:

Solution Seeed LoRa IoTea : 5 étapes
Solution Seeed LoRa IoTea : 5 étapes

Vidéo: Solution Seeed LoRa IoTea : 5 étapes

Vidéo: Solution Seeed LoRa IoTea : 5 étapes
Vidéo: Seeed IoTea Lora Solution 2024, Juillet
Anonim
Seeed LoRa IoTea Solution
Seeed LoRa IoTea Solution

Un système de collecte automatique d'informations appliqué à la plantation de thé. Il fait partie de la collecte intelligente d'informations agricoles.

Étape 1: Éléments utilisés dans ce projet

Composants matériels

  • Grove - Capteur de dioxyde de carbone (MH-Z16)
  • Grove - Capteur de lumière numérique
  • Grove - Capteur de poussière (PPD42NS)
  • Grove - Capteur d'oxygène (ME2-O2-Ф20)
  • Capteur d'humidité et de température du sol
  • Passerelle LoRa LoRaWAN - Kit 868MHz avec Raspberry Pi 3
  • Grove - Capteur de température et d'humidité et de baromètre (BME280)

Applications logicielles et services en ligne

Microsoft Visual Studio 2015

Étape 2: Histoire

L'agriculture intelligente consiste à appliquer la technologie de l'Internet des objets à l'agriculture traditionnelle, en utilisant des capteurs et des logiciels pour contrôler la production agricole via des plateformes mobiles ou informatiques, rendant l'agriculture traditionnelle plus « intelligente ».

Sur la montagne Mengding, au nord-est de Ya'an, dans le Sichuan, la crête de la montagne s'étend d'ouest en est dans une mer de verdure. C'est un spectacle très familier pour Deng, 36 ans, l'un des très rares théiers Mengding de sa génération, avec une plantation de 50mu (=3,3 hectares) située à 1100m d'altitude. Deng vient d'une famille de théiers, mais perpétuer l'héritage familial n'est pas une tâche facile. « Nos thés sont cultivés en haute altitude dans un environnement biologique pour garantir leur excellente qualité. Mais en même temps, la densité de croissance est faible, le coût est élevé et le bourgeonnement est inégal, ce qui rend le thé difficile à récolter. C'est pourquoi les thés de haute montagne sont normalement de petites récoltes et leurs valeurs ne se reflètent pas sur le marché. Depuis deux ans, Deng essaie de sensibiliser les consommateurs au thé de haute montagne pour en promouvoir la valeur. Et lorsqu'il a rencontré Fan, qui cherchait une plantation pour mettre en œuvre la technologie IoTea de Seeed, une solution idéale a été trouvée. La solution Seeed IoTea vise à aider les producteurs de thé à mieux gérer les plantations sans altérer les pratiques traditionnelles de la culture du thé, et à présenter les données environnementales en temps réel de la plantation sur une plateforme ouverte.

Composé de capteurs, de nœuds et de passerelles, IoTea collecte des données en temps réel sur les facteurs pouvant affecter la qualité du thé pendant les processus de culture et de production, notamment la température et l'humidité, le CO2, l'O2, les particules et l'exposition à la lumière. Les données sont collectées par les capteurs, envoyées par les nœuds à la passerelle et éventuellement au cloud, et sont rendues accessibles aux clients finaux sur une page Web.

Étape 3: connexion matérielle

Étape 1: Connexion à la passerelle

La passerelle est installée séparément dans un boîtier. Compte tenu du problème de dissipation thermique, nous avons ajouté 2 ventilateurs. L'un est destiné à la dissipation thermique du Raspberry Pi, l'autre à la circulation de l'air interne et externe. Le boîtier passerelle est placé dans la maison d'un agriculteur, nous n'avons donc pas besoin de considérer son problème d'alimentation.

Image
Image

Étape 2: Connexion du nœud

Le nœud est le terminal des données et toutes les données d'origine sont obtenues à partir d'ici. Il y a 6 capteurs connectés au nœud. En plus du capteur d'humidité et de température du sol, nous mettons d'autres capteurs à l'intérieur de la boîte à persiennes.

Image
Image
Image
Image

Le nœud est placé dans une boîte étanche. Afin d'avoir une meilleure connexion au nœud, nous fabriquons une carte adaptatrice. Enfin, nous fournirons le lien de téléchargement du schéma de cette carte. Comme indiqué ci-dessous, les câbles des capteurs sont branchés sur la carte adaptateur via des borniers. Nous utilisons 3 tubes MOS (SI2301) pour construire des circuits de commutation pour contrôler l'activation et la désactivation des capteurs et du ventilateur. Le ventilateur est utilisé pour refroidir. Nous avons un capteur de température (DS18B20) monté sur la carte. Il peut nous indiquer la température interne du boîtier, puis le microcontrôleur décide s'il faut allumer le ventilateur. Nous utilisons plusieurs résistances pour fabriquer un circuit diviseur de tension afin de mesurer la tension de la batterie plomb-acide. Enfin, nous réservons 3 interfaces IIC et un port série sur la carte pour une extension et un débogage ultérieurs.

Image
Image

Parlons du problème d'alimentation du nœud. Le nœud est placé dans la plantation de thé de manière aléatoire, la méthode d'alimentation électrique traditionnelle n'est donc plus applicable. L'utilisation d'une solution d'énergie solaire est une bonne idée. Il existe actuellement de nombreuses solutions sur le marché. Nous pouvons sélectionner l'un d'entre eux qui répond à nos besoins. Il y a 3 parties dans la solution que nous avons choisie: panneau solaire, contrôleur de charge solaire et batterie au plomb. Afin de mieux capter l'énergie solaire, nous plaçons un panneau solaire sur le dessus du support et ajustons son angle pour qu'il soit face au soleil. Nous avons placé le contrôleur de charge solaire dans la même boîte avec le nœud. En raison de l'absence d'espace supplémentaire à l'intérieur du boîtier, nous avons dû trouver un nouveau boîtier étanche pour placer la batterie au plomb.

Image
Image
Image
Image
Image
Image

Étape 4: Configuration du logiciel

Nœud

Dans cette section, nous allons présenter la configuration principalement logicielle de node.

Format de données

Données téléchargées par le nœud vers la passerelle:

caractère non signé Lora_data[15] ={0, 1, 2, 3,, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Signification de chaque bit de données:

Lora_data[0] Température de l'air, ℃

Lora_data[1] :Humidité de l'air, %

Lora_data[2] :Altitude haute huit, m

Lora_data[3] :Altitude basse huit

Lora_data[4] :Concentration de CO2 élevée huit, ppm

Lora_data[5] :Concentration de CO2 faible huit

Lora_data[6] : Concentration de poussière élevée huit, pcs/0.01cf

Lora_data[7] :Concentration de poussière faible huit

Lora_data[8] :Intensité lumineuse élevée huit, lux

Lora_data[9] Intensité lumineuse faible huit

Lora_data[10] :O2 concentration, % (données brutes divisées par 1000)

Lora_data[11] :Température du sol, ℃

Lora_data[12] :Humidité du sol, %

Lora_data[13] :Tension de la batterie, v

Lora_data[14] :Code d'erreur des capteurs

Code d'erreur:

Lora_data[14] = [bit7, bit6, bit5, bit4, bit3, bit2, bit1, bit0]

Signification de chaque bit:

bit 0: 1---- Erreur de capteur de température, d'humi et de baromètre (BME280)

bit 1: 1---- Erreur du capteur de dioxyde de carbone (MH-Z16)

bit 2: 1---- Capteur de poussière (PPD42NS) erreur

bit 3: 1---- Erreur du capteur de lumière numérique

bit 4: 1---- Erreur du capteur d'oxygène (ME2-O2-Ф20)

bit 5: 1---- Erreur du capteur d'humidité et de température du sol

bit 6: Réservé

bit 7: Réservé

Nous avons créé un Error_code_transform.exe, ouvrez-le et saisissez le code d'erreur en hexadécimal, vous saurez rapidement quel capteur est en erreur. Le lien de téléchargement est à la fin de cet article.

Réglage des paramètres: a) Cycle de transmission de données

// seeedtea.ino

#defineinterval_time 600 //seconde

Ce paramètre peut être modifié pour changer le cycle de transmission des données. Dans chaque cycle, l'acquisition des données prend environ 1 minute. Il n'est donc pas recommandé de modifier cette valeur à moins de 60 secondes.

b) Temps de préchauffage du capteur de poussière

//seeedtea.ino

#definePreheat_time 30000 //DustSensor warm-up time, milliseconde //Dust_other.cpp #definesampletime_ms 30000 //samplingtime30s

c) Coefficient de tension

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 //Valeur ADC × Battery_coefficient = battery_voltage #defineSolar_coefficient 0.22559 //Valeur ADC × Solar_coefficient = solar_voltage

Ces deux paramètres sont calculés sur la base du circuit diviseur de tension.

d) Seuil de température d'ouverture du ventilateur

//POWER_Ctrl.cpp

#defineFan_start_temp 45 //temperaturethreshold #defineFan_start_light 500 //intensité lumineuse

Lorsque la température réelle dépasse le seuil, le ventilateur commence à refroidir.

e) Paramètre d'initialisation du capteur O2

//Oxygène.cpp

#defineO2_percentage 208,00 //20,8%

f) Commutateur macro

//seeedtea.ino

#defineLORA_RUN //Après le commentaire, l'initialisation de Lora et la transmission des données s'arrêteront #defineSENSOR_RUN //Après le commentaire, les capteurs externes cesseront de fonctionner //POWER_Ctrl.cpp #defineFAN_ON //Fortesting uniquement, l'application pratique doit être commentée /**** ***Mode de contrôle DS18B20 ********************/ #defineSlower_Mode // Mode lent pour obtenir la température. Commenter est en mode rapide

g) Mappage des broches

D2: indicateur LED et microcontrôleur de réinitialisation externe IIC: SCL et SDA

//Autre_poussière.h

#defineDust_pin 3 //Capteur de poussière //CO2.cpp #defineCO2_serial Serial1 //utiliser le port hardwareserial (D0 & D1) //seeedtea.ino #definedataPin 6 //Broche de données de sol #defineclockPin 7 //Broche d'horloge de sol //POWER_Ctrl. h #defineDS18B20_pin 8 //DS18B20 #defineFan_pin 9 //Fan #defineAir_CtrlPin 10 // Broche de contrôle pour les capteurs placés dans la persienne #defineSoil_CtrlPin 11 // Broche de commutation du capteur d'humidité et de température du sol #defineBattery_pin A2 // Mesure la tension de la batterie #defineSolar_pin A3 / /Mesure la tension du panneau solaire //Oxygen.h #defineO2_pin A1 //Capteur O2

h) Minuterie de chien de garde

Le temporisateur de chien de garde est utilisé pour surveiller l'état de fonctionnement du système. Lorsque le système fonctionne anormalement, le nœud sera réinitialisé, afin qu'il puisse fonctionner en continu pendant une longue période.

La bibliothèque à référencer:

  • Adafruit_SleepyDog.h a été ajouté au projet
  • Adafruit_ASFcore-master.zip est emballé dans le dossier du projet et doit être ajouté manuellement à l'IDE Arduino.

Fonctions associées:

Activer le chien de garde

int WatchdogSAMD::enable(int maxPeriodMS, bool isForSleep)

Paramètres d'entrée:

Int maxPeriodMS: temps d'attente en millisecondes. Le maximum autorisé est de 16 000 millisecondes.

valeur de retour:

Type int, renvoie le temps d'attente réel

Réinitialiser le chien de garde

void WatchdogSAMD::reset()

Appelez cette fonction pour réinitialiser la minuterie du chien de garde, appelée « nourrir le chien ». Le dépassement du temps d'attente sans réinitialisation entraînera le redémarrage du nœud.

Arrêter le chien de garde

void WatchdogSAMD::disable()

passerelle

Dans cette section, nous allons présenter comment se connecter au serveur Loriot.

Étape 1: Enregistrement de la passerelle du serveur Loriot

a) Le nouvel utilisateur doit d'abord créer un compte, cliquez sur l'adresse d'enregistrement. Remplissez le nom d'utilisateur, le mot de passe et l'adresse e-mail pour vous inscrire, après l'enregistrement, un e-mail vous sera envoyé, veuillez suivre les instructions dans l'e-mail pour activer.

b) Une fois l'activation réussie, cliquez ici pour vous connecter. Le niveau par défaut est « Réseau communautaire », il prend en charge 1 passerelle (RHF2S001) et 10 nœuds.

c) Entrez Dashboard -> Gateway, cliquez sur Add Gateway start pour ajouter Gateway.

d) Sélectionnez Raspberry Pi 3

e) Définir comme ci-dessous:

  • Front-end radio -> RHF2S001 868/915 MHz (SX1257)
  • BUS -> SPI

f) Remplissez l'adresse MAC de votre RHF2S001, doit être au format b8:27:eb:xx:xx:xx. Et entrez également les informations de localisation de la passerelle.

g) Cliquez sur « Enregistrer la passerelle Raspberry Pi » pour terminer l'enregistrement.

Image
Image

h) Cliquez sur la passerelle enregistrée pour accéder à la page de configuration, basculez manuellement sur « Plan de fréquence », votre plan ici est déterminé par le type de votre type RHF2S001, le plan disponible est CN470,CN473,CN434,CN780,EU868, après avoir sélectionné, veuillez actualiser la page pour obtenir le canal exact. Dans ce wiki, nous choisissons EU868.

i) Exécutez la commande dans le terminal putty:

cd /home/rxhf/loriot/1.0.2

sudo systemctl stop pktfwd sudo gwrst wget > -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io

j) Finish gateway registration. You will see the gateway is Connected now. Next is to register node.

Image
Image

Étape 2: dispositif Loriot Server Connect Node

a) Obtenez les canaux de passerelle disponibles

Les canaux de passerelle actuels peuvent être obtenus à partir du tableau de bord -> Passerelle -> Votre passerelle, vous pouvez voir les canaux disponibles comme l'image ci-dessous.

Image
Image

b) Configuration du GPS Seeeduino LoRAWAN (RHF3M076)

Ouvrez le moniteur série d'ArduinoIDE, appuyez sur la commande ci-dessous.

à+ch

Pour confirmer le canal par défaut de votre GPS Seeeduino_LoRAWAN, vous obtiendrez 3 canaux. S'il n'y a pas de canal disponible, vous pouvez changer les canaux de Seeeduino_LoRAWAN par la commande ci-dessous.

à+ch=0, 868,1

à+canal=1, 868,3 à+canal=2, 868,5

Ensuite, vous pouvez à nouveau utiliser at+ch pour vérifier.

c) Ajoutez Seeeduino_LoRAWAN GPS en tant que ABP NodeLog dans le serveur Loriot, cliquez sur Tableau de bord -> Applications -> SimpleApp. Cliquez sur Importer ABP entrez les éléments ci-dessous

  • DevAddr: Seeeduino_LoRAWAN GPS passe par la commande "AT+ID" (Remarque: Loriot ne prend pas en charge le connecteur du côlon, il faut le supprimer manuellement)
  • FCntUp:Régler 1
  • FCntDn:Régler 1
  • NWKSKEY:Valeur par défaut 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY:Valeur par défaut 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI:DEVEUI, Seeeduino_LoRAWAN GPS passent par la commande "AT+ID"
Image
Image

Cliquez sur le bouton Importer l'appareil pour terminer l'importation de l'appareil. Maintenant, choisissez Dashboard -> Applications -> SampleApp, vous verrez le nouveau nœud ABP que vous venez d'ajouter.

Image
Image

d) Envoyer des données depuis Seeeduino_LoRAWAN

ATTENTION! C'est juste un test.

De retour au moniteur série d'ArduinoIDE, envoyez la commande:

AT+CMSGHEX="0a 0b 0c 0d 0e"

Ensuite, allez dans Dashboard -> Applications -> SampleApp -> Device, cliquez sur Node Device EUI ou DevAddr, vous trouverez les données que vous venez d'envoyer ici.

Image
Image

Pour plus de détails, veuillez vous référer à ce wiki.

Étape 5: Construction du site Web

Outils connexes

  • virtualenv
  • Python3
  • Guncorne
  • Superviseur
  • Nginx
  • MySQL

Nous utilisons CentOS7 comme environnement de déploiement de test

virtualenv

Utilisez virtualenv pour créer un environnement de production python3 autonome

a) installer

pip installer virtualenv

b) créer un environnement virtuel python3

virtualenv -p python3 iotea

c) démarrer l'environnement virtuel et entrer dans le répertoire iotea

bac source/activer

d) exister un environnement

désactiver

Python3

a) installer

miam installer epel-release

miam installer python36

b) installer la bibliothèque dépendante PyMySQL, DBUtils, Flask, websocket-client, configparser

pip installer pymysql

pip install dbutils pip install flask pip install websocket-client pip install configparser

Gunicorne

a) installer (sous environnement Python3)

pip installer gunicorn

b) exécuter le projet flask (sous le répertoire du projet iotea)

gunicorn -w 5 -b 0.0.0.0:5000 app:app

c) exécutez websocket-clint pour obtenir les données Loriot

loriot gunicorn:app

d) voir l'arbre de processus Gunicorn

pstree -ap|grep gunicorn

Superviseur

a) installer (utilisateur root)

superviseur d'installation de pip

b) générer des fichiers de configuration

echo_supervisord_conf > /etc/supervisord.conf

c) créer un répertoire et introduire une configuration de répertoire

mkdir -p /etc/supervisor/conf.d

Editez /etc/supervisord.conf et modifiez le champ des fichiers sous [include] à la fin du fichier.

Notez que vous devez supprimer le ';' devant ces deux lignes, qui est le caractère de commentaire.

[comprendre]

Fichiers = /etc/supervisor/conf.d/*.conf

Moyens d'introduire /etc/supervisor/conf.d/. Le fichier de configuration suivant est utilisé comme fichier de configuration du processus (contrôlé par le superviseur).

d) configuration entrante (sous le répertoire iotea)

cp iotea.conf /etc/supervisor/conf.d/

cp loriot.conf /etc/supervisor/conf.d/

e) ouvrir le service iotea

superviosrctl reload #recharger le fichier de configuration

superviosrctl démarrer loriot #ouvrir la réception des données loriot superviosrctl démarrer iotea #ouvrir l'application iotea flask

f) autres opérations courantes

superviseurctl reload # recharger le fichier de configuration

superviseurctl mise à jour superviseurctl démarrer xxx superviseurctl arrêter xxx superviseurctl état xxx superviseurctl aide # voir plus de commande

Nginx

a) installer

miam installer -y nginx

b) configuration

cp NginxIotea.conf /etc/nginx/conf.d/

c) démarrer Nginx

systemctl démarrer nginx.service

MySQL

a) paramètres connexes

user='root'

passwd='1234' db='iotea' port=3306

b) fichier

iotea_iotea.sql

c) fichier de configuration

db.ini

Conseillé: