Table des matières:
- Étape 1: Éléments utilisés dans ce projet
- Étape 2: Histoire
- Étape 3: connexion matérielle
- Étape 4: Programmation du logiciel
- Étape 5: Opération
Vidéo: Solution Seeed IoTea LoRa (Mise à jour 1811) : 5 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Internet+ est un concept populaire maintenant. Cette fois, nous avons essayé Internet et l'agriculture pour faire pousser le thé Internet dans le jardin de thé.
É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
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 des plus familiers 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 sont pas reflétées sur le marché. » Depuis deux ans, Deng essaie de sensibiliser les consommateurs au thé de haute montagne pour promouvoir leur 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.
Étape 3: connexion matérielle
Le matériel de ce projet peut être divisé en 4 parties: alimentation, capteurs, nœud et passerelle. L'article suivant vous montrera comment le compléter étape par étape.
Partie puissance
Power Part contient principalement un panneau solaire et une batterie au lithium, si vous construisez simplement ce projet pour la démonstration, vous pouvez les ignorer. Ou vous pouvez suivre le didacticiel précédent pour installer l'alimentation du nœud.
Pièce de capteurs
Dans la partie Capteurs, en raison du grand nombre de capteurs, nous avons utilisé une station météo et avons également fabriqué un support en acrylique pour les installer.
Comme vous le voyez sur l'image ci-dessus, le capteur de lumière numérique est toujours au-dessus, afin qu'il puisse collecter des informations sur l'éclairage. Les capteurs qui généreront de la chaleur sont installés au milieu du support en acrylique, tels que le capteur O2, le capteur de poussière et le capteur de CO2. Enfin, capteur de température et d'humidité au bas du support en acrylique.
De plus, le capteur de température et d'humidité du sol est installé seul dans le sol. Partie de nœud
Node Part est un Seeeduino LoRaWan qui est installé dans un boîtier étanche, il se connecte à l'alimentation et aux capteurs via des joints d'eau. Parmi eux, le capteur de poussière se connecte à la broche numérique D3 de LoRaWan, le capteur de CO2 se connecte aux broches D4 et D5, le capteur de sol se connecte aux broches D6 et D7, le capteur O2 se connecte à la broche analogique A1 et le capteur de lumière et le capteur baromètre se connectent au port I2C.
REMARQUE: Une résistance de 10 k doit être ajoutée entre le câble bleu (données) du capteur de sol et le câble rouge (Vcc).
Seeeduino LoRaWan collecte la valeur des capteurs de temps en temps et les envoie à Gateway via LoRa. Le format de données comme ci-dessous:
{
[0], /* Température de l'air (℃) */ [1], /* Humidité de l'air (%) */ [2], /* Altitude (m) octet de poids fort */ [3], /* Altitude (m) octet bas */ [4], /* concentration en CO2 (PPM) octet haut */ [5], /* concentration en CO2 (PPM) octet bas */ [6], /* concentration en poussières (pcs/0.01cf) octet haut */ [7], /* Concentration de poussière (pcs/0.01cf) octet bas */ [8], /* Intensité lumineuse (lux) octet haut */ [9], /* Intensité lumineuse (lux) octet bas */ [10], /* Concentration en O2 (%) */ [11], /* Température du sol (℃) */ [12], /* Humidité du sol (%) */ [13], /* Tension de la batterie (V) */ [14] /* Code d'erreur du capteur */ }
Chaque bit dans l'octet du code d'erreur du capteur a une signification différente, comme ci-dessous:
{
bit0: 1; /* Erreur de capteur de baromètre */ bit1: 1; /* Erreur de capteur de CO2 */ bit2: 1; /* Erreur de capteur de poussière */ bit3: 1; /* Erreur du capteur de lumière */ bit4: 1; /* Erreur de capteur O2 */ bit5: 1; /* Erreur de capteur de sol */ réservé: 2; /* Réservé */ }
Partie passerelle
Gateway Part est un Raspberry Pi qui a branché le module Gateway RHF0M301-868 et le pont PRI 2 RHF4T002, il est installé dans un boîtier étanche et se connecte à l'alimentation et à la caméra USB via des joints d'eau. Comme il utilise un micrologiciel spécialisé, veuillez suivre Seeed Wiki pour le configurer.
Étape 4: Programmation du logiciel
En tant que connexion matérielle, la programmation logicielle peut également être divisée, elle peut être divisée en 3 parties: nœud, passerelle et site Web.
Partie de nœud
La plupart des pilotes requis par Node Part sont déjà contenus dans le dossier origin_driver. Les bibliothèques suivantes doivent être installées manuellement:
Adafruit_ASFcore
Parce que le projet est compliqué, nous vous recommandons d'utiliser Microsoft Visual Studio au lieu d'Arduino IDE. Un plugin appelé Visual Micro peut vous aider à construire un projet Arduino en utilisant Visual Studio, cliquez ici pour plus d'informations.
Pour une meilleure lisibilité et maintenabilité, nous utilisons cette fois la programmation orientée objet. Le diagramme de classe de ce projet ressemble à ci-dessous:
Pour les capteurs qui ont déjà un pilote OOP, nous l'avons reconditionné pour adapter ce projet, pour d'autres, nous avons réécrit leurs pilotes en utilisant la POO. La classe Sensor dans la couche middleware est utilisée pour unifier les interfaces de capteurs réels, par exemple, un capteur de baromètre peut collecter la température, l'humidité et l'altitude en même temps, il dispose donc de 3 interfaces pour acquérir la température, l'humidité et l'altitude. Mais ils ont un nom de méthode différent, ce qui compliquera le programme d'acquisition de la valeur des capteurs, comme ceci:
baromètre->getTemperature();
baromètre->getHumidity(); baromètre->getAltitude(); // … other_sensor->getSomeValue(); // …
Mais en utilisant la POO, cela ressemble à ceci:
for (auto i = 0; i getValue();
}
Nous avons également emballé une classe Application, elle implémente l'interface IApplication, les méthodes setup() et loop() dans IoTea.ino peuvent appeler les méthodes setup() et loop() dans l'objet Application.
REMARQUE: la série USB est utilisée UNIQUEMENT pour le débogage. Après le débogage, veuillez commenter son code d'initialisation dans la méthode setup().
Partie passerelle
Le programme Python de Gateway Part dans le dossier d'accueil est utilisé pour prendre des photos et les télécharger sur Amazon S3 Server toutes les heures. Avant de l'utiliser, assurez-vous que fswebcam est déjà installé dans votre Raspberry Pi:
sudo apt-get update && sudo apt-get install fswebcam
Si vous souhaitez télécharger des photos, configurez votre AWS en suivant les étapes. Tout d'abord, installez AWS SDK et AWS CLI sur votre Raspberry Pi à l'aide de ces commandes:
sudo pip installer boto3
sudo pip installer awscli
puis, exécutez l'AWS CLI:
sudo aws configurer
Configurez votre AWS Access Key ID, votre AWS Secret Access ID et votre nom de région par défaut.
Si vous n'aimez pas télécharger vos photos, vous pouvez ignorer les étapes de configuration AWS et les codes de commentaire sur le téléchargement dans photo.py. Pour exécuter ce programme après avoir démarré Raspberry Pi à chaque fois, vous pouvez créer une photo de nom de fichier dans /etc/init.d et y écrire le code suivant.
#!/bin/bash
# /etc/init.d/photo ### BEGIN INIT INFO # Fournit: seeed_photo # Démarrage obligatoire: $remote_fs $syslog # Arrêt obligatoire: $remote_fs $syslog # Démarrage par défaut: 2 3 4 5 # Arrêt par défaut: 0 1 6 # Description courte: initscript de prise de photo # Description: Ce service est utilisé pour gérer la prise de photo ### END INIT INFO case "$1" dans start) echo "Commencer à prendre une photo" /home/rxhf/photo.py &;; stop) echo "Arrêter de prendre une photo" kill $(ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{ print $2 }');; *) echo "Utilisation: service photo start|stop" exit 1;; esac sortie 0
définir l'autorisation d'exécution
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
et le tester
sudo /etc/init.d/photo start
S'il n'y a pas de problème, arrêtez-le et ajoutez-le à l'application de démarrage
sudo /etc/init.d/photo stop
sudo update-rc.d photo par défaut
REMARQUE: si vous souhaitez démarrer la passerelle après le démarrage de Raspberry Pi, ajoutez les codes de démarrage de la passerelle dans Seeed Wiki à /etc/rc.local, cela ressemble à:
#!/bin/sh -e
# # rc.local # # Ce script est exécuté à la fin de chaque niveau d'exécution multi-utilisateur. # Assurez-vous que le script "quittera 0" en cas de succès ou toute autre valeur # en cas d'erreur. # # Afin d'activer ou de désactiver ce script, changez simplement les # bits d'exécution. # # Par défaut, ce script ne fait rien. # Affiche l'adresse IP _IP=$(hostname -I) || true if ["$_IP"]; puis printf "Mon adresse IP est %s\n" "$_IP" fi cd /home/rxhf/loriot/1.0.2 sudo systemctl stop pktfwd sudo gwrst wget https://cn1.loriot.io/home/gwsw/loriot -risinghf-r… -O loriot-gw.bin chmod +x loriot-gw.bin./loriot-gw.bin -f -s cn1.loriot.io sortie 0
Site Internet
Nous avons déployé le site Web sur CentOS 7. Les étapes suivantes vous montreront comment procéder au déploiement.
Étape 1. Installez Python3
sudo yum -y install epel-release
sudo miam -y installer python36
Étape 2. Installez le pip Python et l'environnement virtuel
wget
sudo python36 get-pip.py sudo pip installer virtualenv
Étape 3. Cloner notre site Web à partir de GitHub
sudo miam -y installer git
git clone
Étape 4. Créer et activer l'environnement virtuel
virtualenv -p python36 iotea-hb
cd iotea-hb source bin/activer
Étape 5. Installer les bibliothèques dépendantes
pip installer pymysql
pip install dbutils pip install flask pip install websocket-client pip install cofigparser
Étape 6. Créer une base de données
sudo yum -y installer mariadb mariabd-server
sudo systemctl activer mariadb sudo systemctl démarrer mariadb mysql -uroot -p
puis utilisez iotea_hb.sql pour créer une table.
Étape 7. Créez db.ini et écrivez-y ces codes
[db]
db_port = 3306 db_user = racine db_host = localhost db_pass = db_name = iotea
changer le chemin de db.ini dans db.py
# dans db.py
#cf.read("/data/www/python3_iotea_hb/iotea/conf/db.ini") cf.read("/home//iotea-hb/db.ini")
Étape 8. Changez de port dans app.py et démarrez le site Web:
# dans app.py
#app.run(debug=True, port=6000) app.run(debug=True, port=8080)
# dans la borne
pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 app:app
visitez maintenant 127.0.0.1:8080 dans votre navigateur Web, vous pouvez voir le site Web, mais les données en temps réel ne sont pas affichées.
Étape 9. Obtenez les données Loriot
Ouvrez un autre terminal, entrez à nouveau dans l'environnement virtuel et démarrez l'application Loriot:
cd iotea-hb
source bin/activer gunicorn loriot:app
Attendez un moment, vous verrez les données affichées sur le site Web, ou vous pouvez modifier wss dans loriot.py:
# dans loriot.py
#ws = create_connection("wss://cn1.loriot.io/app?token=vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w==")
ws = créer_connexion()
Étape 5: Opération
Vous pouvez visiter nos sites Web pour consulter les données en temps réel:
- A Ya'an
- Pour la démonstration
Conseillé:
(MISE À JOUR - IL Y A UN LÉGER PROBLÈME) CONTRLEUR DE JEU USB POUR PC : 10 étapes (avec photos)
(MISE À JOUR - IL Y A UN LÉGER PROBLÈME) CONTRLEUR DE JEU USB POUR PC : UN CONTRLEUR DE JEU POUR TOUT JEU (PRESQUE)
Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : 16 étapes
Recevez une notification par e-mail lorsqu'une chaîne sur ThingSpeak n'a pas été mise à jour pendant un certain temps : histoire de fondJ'ai six serres automatisées réparties à Dublin, en Irlande. En utilisant une application de téléphonie mobile sur mesure, je peux surveiller à distance et interagir avec les fonctionnalités automatisées de chaque serre. Je peux ouvrir/fermer manuellement la victoire
Solution Seeed LoRa IoTea : 5 étapes
Solution Seeed LoRa IoTea : Un système de collecte automatique d'informations appliqué à la plantation de thé. Il fait partie de la collecte intelligente d'informations agricoles
Solution Seeed IoTea LoRa (avec Azure, mise à jour 1812) : 5 étapes
Solution Seeed IoTea LoRa (avec Azure, mise à jour 1812) : Microsoft Azure est un service cloud qui fournit une puissance de calcul plus puissante et plus stable. Cette fois, nous avons essayé de lui envoyer nos données IoTea
Snowmanthesizer - Chose par jour - Jour 2 : 8 étapes (avec photos)
Snowmanthesizer - Thing a Day - Jour 2 : L'autre soir, je découpais d'interminables feuilles d'autocollants de robots pour faire plaisir à tous les enfants. Oui, juste en train de trancher, en m'occupant de mes affaires, et à ce moment-là, notre chef intrépide Eric me met dans les mains trois objets en plastique étranges. Il m'informe que