Tabla de contenido:

Solución Seeed IoTea LoRa (actualización 1811): 5 pasos
Solución Seeed IoTea LoRa (actualización 1811): 5 pasos

Video: Solución Seeed IoTea LoRa (actualización 1811): 5 pasos

Video: Solución Seeed IoTea LoRa (actualización 1811): 5 pasos
Video: High Density 2022 2024, Mes de julio
Anonim
Solución Seeed IoTea LoRa (actualización 1811)
Solución Seeed IoTea LoRa (actualización 1811)

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.

Imagen
Imagen

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

Imagen
Imagen

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

Imagen
Imagen

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:

Imagen
Imagen

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: