Tabla de contenido:
- Paso 1: Cosas utilizadas en este proyecto
- Paso 2: historia
- Paso 3: Conexión de hardware
- Paso 4: Programación de software
- Paso 5: Operación
Video: Solución Seeed IoTea LoRa (actualización 1811): 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Internet + es un concepto popular ahora. Esta vez probamos Internet más la agricultura para hacer que el té de Internet crezca en el jardín de té.
Paso 1: Cosas utilizadas en este proyecto
Componentes de hardware
- Grove - Sensor de dióxido de carbono (MH-Z16)
- Grove - Sensor de luz digital
- Grove - Sensor de polvo (PPD42NS)
- Grove - Sensor de oxígeno (ME2-O2-Ф20)
- Sensor de temperatura y humedad del suelo
- LoRa LoRaWAN Gateway - Kit de 868MHz con Raspberry Pi 3
- Grove - Sensor de temperatura, Humi y barómetro (BME280)
Aplicaciones de software y servicios en línea
Microsoft Visual Studio 2015
Paso 2: historia
En la montaña Mengding al noreste de Ya'an, Sichuan, la cresta de la montaña corre de oeste a este en un mar verde. Este es un espectáculo muy familiar para Deng, de 36 años, uno de los pocos fabricantes de té Mengding de su generación, con una plantación de 50mu (= 3,3 hectáreas) situada a 1100 m sobre el nivel del mar. Deng proviene de una familia de fabricantes de té, pero continuar con el legado familiar no es una tarea fácil. “Nuestros tés se cultivan a gran altura en un entorno orgánico para garantizar su excelente calidad. Pero al mismo tiempo, la densidad de crecimiento es baja, el costo es alto y la brotación es desigual, lo que dificulta la cosecha del té. Es por eso que los tés de alta montaña normalmente son cosechas pequeñas y sus valores no se reflejan en el mercado”. Durante los últimos dos años, Deng ha estado tratando de aumentar la conciencia de los consumidores sobre el té de alta montaña para promover su valor. Y cuando conoció a Fan, que estaba buscando una plantación para implementar la tecnología IoTea de Seeed, se hizo una combinación perfecta para una solución.
Paso 3: Conexión de hardware
El hardware de este proyecto se puede dividir en 4 partes: energía, sensores, nodo y puerta de enlace. El siguiente artículo le mostrará cómo completarlo paso a paso.
Parte de poder
Power Part contiene principalmente un panel solar y una batería de litio, si solo construye este proyecto para demostración, puede ignorarlos. O puede seguir el tutorial anterior para instalar la energía del nodo.
Parte de los sensores
En Sensors Part, debido a la gran cantidad de sensores, usamos una estación meteorológica y también hicimos un soporte acrílico para instalarlos.
Como puede ver en la imagen de arriba, el sensor de luz digital siempre está en la parte superior, para que pueda recopilar información de iluminación. Los sensores que generarán calor se instalan en el medio del soporte acrílico, como el sensor de O2, el sensor de polvo y el sensor de CO2. Por fin, sensor de temperatura y humedad en la parte inferior del soporte acrílico.
Además, el sensor de temperatura y humedad del suelo se instala solo en el suelo. Parte del nodo
Node Part es un Seeeduino LoRaWan que, instalado en una caja impermeable, se conecta a la energía y a los sensores a través de juntas de agua. Entre ellos, el sensor de polvo se conecta al pin digital D3 de LoRaWan, el sensor de CO2 se conecta al pin D4 y D5, el sensor de suelo se conecta al pin D6 y D7, el sensor de O2 se conecta al pin analógico A1 y el sensor de luz y barómetro se conecta al puerto I2C.
NOTA: Se debe agregar una resistencia de 10k entre el cable azul (datos) del sensor de suelo y el cable rojo (Vcc).
Seeeduino LoRaWan recopila el valor de los sensores de vez en cuando y los envía a Gateway a través de LoRa. El formato de datos como el siguiente:
{
[0], / * Temperatura del aire (℃) * / [1], / * Humedad del aire (%) * / [2], / * Altitud (m) byte alto * / [3], / * Altitud (m) byte bajo * / [4], / * concentración de CO2 (PPM) byte alto * / [5], / * concentración de CO2 (PPM) byte bajo * / [6], / * concentración de polvo (pcs / 0.01cf) byte alto * / [7], / * Concentración de polvo (pcs / 0.01cf) byte bajo * / [8], / * Intensidad de luz (lux) byte alto * / [9], / * Intensidad de luz (lux) byte bajo * / [10], / * Concentración de O2 (%) * / [11], / * Temperatura del suelo (℃) * / [12], / * Humedad del suelo (%) * / [13], / * Voltaje de la batería (V) * / [14] / * Código de error del sensor * /}
Cada bit en el byte del código de error del sensor tiene un significado diferente, como se muestra a continuación:
{
bit0: 1; / * Error del sensor del barómetro * / bit1: 1; / * Error del sensor de CO2 * / bit2: 1; / * Error del sensor de polvo * / bit3: 1; / * Error del sensor de luz * / bit4: 1; / * Error del sensor de O2 * / bit5: 1; / * Error de sensor de suelo * / reservado: 2; / * Reservado * /}
Pieza de puerta de enlace
Gateway Part es una Raspberry Pi que conectó el módulo Gateway RHF0M301–868 y el puente PRI 2 RHF4T002, se instaló en una caja impermeable y se conectó a la alimentación y la cámara USB a través de juntas de agua. Debido a que utiliza firmware especializado, siga Seeed Wiki para configurarlo.
Paso 4: Programación de software
Como conexión de hardware, la programación de software también se puede dividir, se puede dividir en 3 partes: nodo, puerta de enlace y sitio web.
Parte del nodo
La mayoría de los controladores que requiere Node Part ya se encuentran en la carpeta origin_driver. Las siguientes bibliotecas deben instalarse manualmente:
Adafruit_ASFcore
Debido a que el proyecto es complicado, le recomendamos que utilice Microsoft Visual Studio en lugar de Arduino IDE. Un complemento llamado Visual Micro puede ayudarlo a crear un proyecto Arduino usando Visual Studio, haga clic aquí para obtener más información.
Para una mejor legibilidad y mantenibilidad, usamos programación orientada a objetos esta vez. El diagrama de clases de este proyecto se ve a continuación:
Para aquellos sensores que ya tienen controlador OOP, lo reempaquetamos para adaptar este proyecto, para otros, reescribimos sus controladores usando OOP. La clase Sensor en la capa de middleware se utiliza para unificar interfaces de sensores reales, por ejemplo, un sensor barómetro puede recolectar temperatura, humedad y altitud al mismo tiempo, por lo que tiene 3 interfaces para adquirir temperatura, humedad y altitud. Pero tienen un nombre de método diferente, lo que hará que el programa de adquisición del valor de los sensores sea más complicado, así:
barómetro-> getTemperature ();
barómetro-> getHumidity (); barómetro-> getAltitude (); //… otro_sensor-> getSomeValue (); //…
Pero usando OOP, se ve así:
para (auto i = 0; i getValue ();
}
También empaquetamos una clase Application, implementa la interfaz IApplication, el método setup () y loop () en IoTea.ino puede llamar al método setup () y loop () en el objeto Application.
NOTA: USB Serial se usa para depurar SOLAMENTE. Después de la depuración, comente que es el código de inicialización en el método setup ().
Pieza de puerta de enlace
El programa Python de Gateway Part en la carpeta de inicio se usa para tomar fotos y cargarlas en el servidor Amazon S3 cada hora. Antes de usarlo, asegúrese de que fswebcam ya esté instalado en su Raspberry Pi:
sudo apt-get update && sudo apt-get install fswebcam
Si desea cargar fotos, configure su AWS siguiendo los pasos. Primero, instale AWS SDK y AWS CLI en su Raspberry Pi mediante estos comandos:
sudo pip instalar boto3
sudo pip instalar awscli
y luego, ejecute AWS CLI:
sudo aws configure
Configure su ID de clave de acceso de AWS, el ID de acceso secreto de AWS y el nombre de región predeterminado.
Si no le gusta cargar sus fotos, puede omitir los pasos de configuración de AWS y los códigos de comentarios sobre la carga en photo.py. Para ejecutar este programa después de arrancar Raspberry Pi cada vez, puede crear una foto con el nombre de archivo en /etc/init.d y escribirle el siguiente código.
#! / bin / bash
# /etc/init.d/photo ### BEGIN INIT INFO # Proporciona: seeed_photo # Required-Start: $ remote_fs $ syslog # Required-Stop: $ remote_fs $ syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Descripción breve: toma de fotos initscript # Descripción: Este servicio se utiliza para administrar la toma de fotos ### END INIT INFO caso "$ 1" en inicio) echo "Comenzar a tomar fotos" /home/rxhf/photo.py &;; detener) echo "Dejar de tomar fotos" kill $ (ps aux | grep -m 1 'python3 /home/rxhf/photo.py' | awk '{print $ 2}');; *) echo "Uso: foto de servicio iniciar | detener" salida 1;; esac salida 0
establecer permiso de ejecución
sudo chmod 777 /etc/init.d/photo
sudo chmod 777 /home/rxhf/photo.py
y pruébalo
sudo /etc/init.d/photo start
Si no hay problema, deténgalo y agréguelo a la aplicación de inicio
sudo /etc/init.d/photo stop
sudo update-rc.d valores predeterminados de fotos
NOTA: Si desea iniciar la puerta de enlace después del arranque de la Raspberry Pi, agregue los códigos de inicio de la puerta de enlace en Seeed Wiki a /etc/rc.local, deje que se vea así:
#! / bin / sh -e
# # rc.local # # Este script se ejecuta al final de cada nivel de ejecución multiusuario. # Asegúrese de que el script "saldrá 0" en caso de éxito o cualquier otro valor # en caso de error. # # Para habilitar o deshabilitar este script simplemente cambie los # bits de ejecución. # # Por defecto, este script no hace nada. # Imprima la dirección IP _IP = $ (nombre de host -I) || verdadero si ["$ _IP"]; luego printf "Mi dirección IP es% 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 salida 0
Sitio web
Implementamos el sitio web en CentOS 7. Los siguientes pasos le mostrarán cómo implementar.
Paso 1. Instale Python3
sudo yum -y instalar epel-release
sudo yum -y instalar python36
Paso 2. Instale Python pip y el entorno virtual
wget
sudo python36 get-pip.py sudo pip install virtualenv
Setp 3. Clonar nuestro sitio web desde GitHub
sudo yum -y instalar git
clon de git
Paso 4. Crea y activa el entorno virtual
virtualenv -p python36 iotea-hb
cd iotea-hb fuente bin / activar
Paso 5. Instalar bibliotecas dependientes
pip instalar pymysql
pip instalar dbutils pip instalar frasco pip instalar websocket-cliente pip instalar cofigparser
Paso 6. Crea una base de datos
sudo yum -y instalar mariadb mariabd-server
sudo systemctl enable mariadb sudo systemctl start mariadb mysql -uroot -p
y luego use iotea_hb.sql para crear una tabla.
Paso 7. Cree db.ini y escríbale estos códigos
[db]
db_port = 3306 db_user = root db_host = localhost db_pass = db_name = iotea
cambiar la ruta de db.ini en db.py
# en db.py
# cf.read ("/ data / www / python3_iotea_hb / iotea / conf / db.ini") cf.read ("/ home // iotea-hb / db.ini")
Paso 8. Cambie el puerto en app.py e inicie el sitio web:
# en app.py
# app.run (debug = True, port = 6000) app.run (debug = True, port = 8080)
# en terminal
pip install gunicorn gunicorn -w 5 -b 0.0.0.0:8080 aplicación: aplicación
ahora visite 127.0.0.1:8080 en su navegador web, puede ver el sitio web, pero los datos en tiempo real no se muestran.
Paso 9. Obtenga los datos de loriot
Abra otra terminal, vuelva a ingresar al entorno virtual e inicie la aplicación loriot:
cd iotea-hb
bin de origen / activar gunicorn loriot: aplicación
Espere un momento, verá los datos que se muestran en el sitio web, o puede cambiar wss en loriot.py:
# en loriot.py
#ws = create_connection ("wss: //cn1.loriot.io/app? token = vnwEuwAAAA1jbjEubG9yaW90LmlvRpscoh9Uq1L7K1zbrcBz6w ==")
ws = crear_conexión ()
Paso 5: Operación
Puede visitar nuestros sitios web para ver datos en tiempo real:
- En Ya'an
- Para demostración
Recomendado:
Experimentos PWM de motores de CC aleatorios + Solución de problemas del codificador: 4 pasos
Experimentos de PWM de motores de CC aleatorios + Solución de problemas del codificador: hay ocasiones en las que la basura de alguien es el tesoro de otro, y este fue uno de esos momentos para mí. Si me ha estado siguiendo, probablemente sepa que asumí un gran proyecto para crear mi propia impresora 3D CNC a partir de la chatarra. Esas piezas eran
Solución contra la contaminación lumínica - Artemis: 14 pasos
Solución de contaminación lumínica - Artemisa: La contaminación lumínica es algo que nos afecta a todos en todo el mundo. Desde que se inventó la bombilla, la luz se ha popularizado mucho más y se ha utilizado específicamente en grandes ciudades como Nueva York y Chicago. Toda esta luz puede afectar
Solución Seeed LoRa IoTea: 5 pasos
Seeed LoRa IoTea Solution: un sistema automático de recopilación de información aplicado a las plantaciones de té. Es parte de la recopilación inteligente de información agrícola
Solución IoTea LoRa de Seeed (con Azure, actualización 1812): 5 pasos
Solución IoTea LoRa de Seeed (con Azure, Actualización 1812): Microsoft Azure es un servicio en la nube que proporciona una potencia informática más potente y estable. Esta vez intentamos enviarle nuestros datos de IoTea
Proyecto Arduino: Módulo RF1276 de rango de prueba LoRa para solución de rastreo GPS: 9 pasos (con imágenes)
Proyecto Arduino: Rango de prueba Módulo LoRa RF1276 para rastreo GPS Solución: Conexión: USB - Serial Necesidad: Navegador Chrome Necesita: 1 X Arduino Mega Necesita: 1 X GPS Necesita: 1 X Tarjeta SD Necesita: 2 X Módem LoRa RF1276 Función: Arduino Enviar valor GPS a la base principal - Datos de la tienda de la base principal en el módulo Lora del servidor Dataino: Alcance ultralargo