Tabla de contenido:

Solución Seeed LoRa IoTea: 5 pasos
Solución Seeed LoRa IoTea: 5 pasos

Video: Solución Seeed LoRa IoTea: 5 pasos

Video: Solución Seeed LoRa IoTea: 5 pasos
Video: Seeed IoTea Lora Solution 2024, Noviembre
Anonim
Solución Seeed LoRa IoTea
Solución Seeed LoRa IoTea

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.

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

La agricultura inteligente consiste en aplicar la tecnología de Internet de las cosas a la agricultura tradicional, utilizando sensores y software para controlar la producción agrícola a través de plataformas móviles o informáticas, haciendo que la agricultura tradicional sea más "inteligente".

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é. Por eso, los tés de alta montaña suelen ser cosechas pequeñas y sus valores no se reflejan en el mercado . Durante los últimos dos años, Deng ha intentado concienciar a 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. La solución Seeed IoTea tiene como objetivo ayudar a los productores de té a administrar mejor las plantaciones sin alterar las prácticas tradicionales de cultivo del té, y presentar datos ambientales en tiempo real de las plantaciones en una plataforma abierta.

IoTea, que consta de sensores, nodos y puertas de enlace, recopila datos en tiempo real de los factores que pueden afectar la calidad del té durante los procesos de cultivo y producción, incluida la temperatura y la humedad, el CO2, el O2, las partículas y la exposición a la luz. Los datos son recopilados por los sensores, enviados por los nodos a la puerta de enlace y, finalmente, a la nube, y se ponen a disposición de los clientes finales en una página web.

Paso 3: Conexión de hardware

Paso 1: Conexión de la puerta de enlace

La puerta de enlace se instala por separado en una caja. Teniendo en cuenta el problema de disipación de calor, agregamos 2 ventiladores. Uno es para la disipación de calor de Raspberry Pi, el otro es para la circulación de aire interna y externa. La caja de entrada se coloca en la casa de un agricultor, por lo que no necesitamos considerar su problema de energía.

Imagen
Imagen

Paso 2: conexión de nodo

El nodo es terminal de los datos, y todos los datos originales se obtienen de aquí. Hay 6 sensores conectados al nodo. Además del sensor de humedad y temperatura del suelo, colocamos otros sensores dentro de la caja de lamas.

Imagen
Imagen
Imagen
Imagen

El nodo se coloca en una caja impermeable. Para tener una mejor conexión con el nodo, hacemos una placa adaptadora. Por último, proporcionaremos el enlace de descarga del esquema de esta placa. Como se muestra a continuación, los cables de los sensores se conectan a la placa adaptadora a través de bloques de terminales. Usamos 3 tubos MOS (SI2301) para construir circuitos de interruptores para controlar el encendido y apagado de los sensores y el ventilador. El ventilador se usa para enfriar. Tenemos un sensor de temperatura (DS18B20) montado en la placa. Puede decirnos la temperatura interna de la caja y luego el microcontrolador decide si enciende el ventilador. Usamos varias resistencias para hacer un circuito divisor de voltaje para medir el voltaje de la batería de plomo-ácido. Finalmente, reservamos 3 interfaces IIC y puerto serie en la placa para su posterior expansión y depuración.

Imagen
Imagen

Hablemos del problema de la fuente de alimentación del nodo. El nodo se coloca en la plantación de té al azar, por lo que el método tradicional de suministro de energía ya no es aplicable. Usar una solución de energía solar es una buena idea. Hay muchas soluciones disponibles en el mercado actualmente. Podemos seleccionar uno de ellos que se adapte a nuestras necesidades. Hay 3 partes en la solución que elegimos: panel solar, controlador de carga solar y batería de plomo-ácido. Para capturar mejor la energía solar, colocamos el panel solar en la parte superior del soporte y ajustamos su ángulo para asegurarnos de que esté orientado hacia el sol. Colocamos el controlador de carga solar en la misma caja con el nodo. Debido a que no hay espacio adicional dentro de la caja, tuvimos que encontrar una nueva caja impermeable para colocar la batería de plomo-ácido.

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen

Paso 4: configuración del software

Nodo

En esta sección, presentaremos principalmente la configuración de software de node.

Formato de datos

Datos cargados por el nodo a la puerta de enlace:

carácter sin firmar Lora_data [15] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};

Significado de cada bit de datos:

Lora_data [0] : Temperatura del aire, ℃

Lora_data [1] : Humedad del aire,%

Lora_data [2] : Altitud alta ocho, m

Lora_data [3] : Altitud baja ocho

Lora_data [4]: concentración de CO2 alta ocho, ppm

Lora_data [5]: concentración de CO2 baja ocho

Lora_data [6] : Concentración de polvo alta ocho, pcs / 0.01cf

Lora_data [7] : Concentración de polvo baja ocho

Lora_data [8] : Intensidad de luz alta ocho, lux

Lora_data [9] : Intensidad de luz baja ocho

Lora_data [10]: concentración de O2,% (datos brutos divididos por 1000)

Lora_data [11] : Temperatura del suelo, ℃

Lora_data [12] : Humedad del suelo,%

Lora_data [13] : Voltaje de la batería, v

Lora_data [14]: código de error de los sensores

Código de error:

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

Significado de cada bit:

bit 0: 1 ---- Error del sensor de temperatura, Humi y barómetro (BME280)

bit 1: 1 ---- Error del sensor de dióxido de carbono (MH-Z16)

bit 2: 1 ---- Sensor de polvo (PPD42NS) error

bit 3: 1 ---- Error del sensor de luz digital

bit 4: 1 ---- Error del sensor de oxígeno (ME2-O2-Ф20)

bit 5: 1 ---- Error del sensor de temperatura y humedad del suelo

bit 6: Reservado

bit 7: Reservado

Hemos creado un Error_code_transform.exe, ábrelo e ingresa el código de error en hexadecimal, sabrás rápidamente qué sensor es el error. El enlace de descarga se encuentra al final de este artículo.

Ajuste de parámetros: a) Ciclo de transmisión de datos

// seeedtea.ino

#defineinterval_time 600 // segundo

Este parámetro se puede modificar para cambiar el ciclo de transmisión de datos. En cada ciclo, la adquisición de datos tarda aproximadamente 1 minuto. Por lo tanto, no se recomienda cambiar este valor a menos de 60 segundos.

b) Tiempo de calentamiento del sensor de polvo

//seeedtea.ino

#definePreheat_time 30000 // Tiempo de calentamiento del DustSensor, milisegundos //Dust_other.cpp #definesampletime_ms 30000 // sampletime30s

c) Coeficiente de voltaje

//POWER_Ctrl.cpp

#defineBattery_coefficient 0.159864 // Valor de ADC × Battery_coefficient = Battery_voltage #defineSolar_coefficient 0.22559 // Valor de ADC × Solar_coefficient = solar_voltage

Estos dos parámetros se calculan en función del circuito divisor de voltaje.

d) Umbral de temperatura de apertura del ventilador

//POWER_Ctrl.cpp

#defineFan_start_temp 45 // temperaturethreshold #defineFan_start_light 500 // intensidad de la luz

Cuando la temperatura real excede el umbral, el ventilador comenzará a enfriarse.

e) Parámetro de inicialización del sensor de O2

// Oxígeno.cpp

# defineO2_percentage 208.00 //20.8%

f) Interruptor de macro

//seeedtea.ino

#defineLORA_RUN // Después del comentario, la inicialización de Lora y la transmisión de datos se detendrán. *** Modo de control DS18B20 ********************** / #defineSlower_Mode // Modo lento para obtener la temperatura. Comentar es el modo rápido

g) Mapeo de pines

D2: indicador LED y microcontrolador de reinicio externo IIC: SCL y SDA

//Dust_other.h

#defineDust_pin 3 // Sensor de polvo //CO2.cpp # defineCO2_serial Serial1 // use hardwareserial port (D0 & D1) //seeedtea.ino #definedataPin 6 // Pin de datos del suelo #defineclockPin 7 // Pin de reloj de suelo // POWER_Ctrl. h # defineDS18B20_pin 8 // DS18B20 #defineFan_pin 9 // Ventilador #defineAir_CtrlPin 10 // Pin de control para los sensores colocados en la caja de lamas #defineSoil_CtrlPin 11 // Pin del interruptor del sensor de humedad y temperatura del suelo #defineBattery_pin A2 // Medir el voltaje de la batería #define / A3 / Medir el voltaje del panel solar // Oxígeno.h # defineO2_pin A1 // Sensor de O2

h) Temporizador de perro guardián

El temporizador de vigilancia se utiliza para monitorear el estado de funcionamiento del sistema. Cuando el sistema funciona de forma anormal, el nodo se reiniciará para que pueda funcionar de forma continua durante mucho tiempo.

La biblioteca a la que se hará referencia:

  • Adafruit_SleepyDog.h se ha agregado al proyecto
  • Adafruit_ASFcore-master.zip está empaquetado en la carpeta del proyecto y debe agregarse manualmente al IDE de Arduino.

Funciones relacionadas:

Habilitar perro guardián

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

Parámetros de entrada:

Int maxPeriodMS: tiempo de espera en milisegundos. El máximo permitido es 16000 milisegundos.

valor de retorno:

Tipo de int, devuelve el tiempo de espera real

Restablecer perro guardián

void WatchdogSAMD:: reset ()

Llame a esta función para restablecer el temporizador del perro guardián, denominado "alimentar al perro". Exceder el tiempo de espera sin reiniciar hará que el nodo se reinicie.

Deja de perro guardián

void WatchdogSAMD:: deshabilitar ()

Puerta

En esta sección presentaremos cómo conectarse al servidor de Loriot.

Paso 1: Registro de la puerta de enlace del servidor Loriot

a) El nuevo usuario necesita registrar una cuenta primero, haga clic en la dirección de registro. Complete el nombre de usuario, la contraseña y la dirección de correo electrónico para registrarse, después de registrarse se le enviará un correo electrónico, siga las instrucciones del correo electrónico para activar.

b) Después de la activación exitosa, haga clic aquí para iniciar sesión. El nivel predeterminado es "Red comunitaria", admite 1 puerta de enlace (RHF2S001) y 10 nodos.

c) Ingrese Dashboard -> Gateway, haga clic en Add Gateway start para agregar Gateway.

d) Seleccione Raspberry Pi 3

e) Establecer como se muestra a continuación:

  • Interfaz de radio -> RHF2S001 868/915 MHz (SX1257)
  • AUTOBÚS -> SPI

f) Complete la dirección MAC de su RHF2S001, debe estar en formato b8: 27: eb: xx: xx: xx. Y también ingrese la información de ubicación de la puerta de enlace.

g) Haga clic en “Registrar puerta de enlace Raspberry Pi” para finalizar el registro.

Imagen
Imagen

h) Haga clic en la puerta de enlace registrada para ingresar a la página de configuración, cambie "Plan de frecuencia" manualmente, su plan aquí se decide por el tipo de su tipo RHF2S001, el plan disponible es CN470, CN473, CN434, CN780, EU868, después de seleccionarlo, actualice la página para obtener el canal exacto. En este wiki elegimos EU868.

i) Ejecute el comando en la terminal de masilla:

cd /home/rxhf/loriot/1.0.2

sudo systemctl detener 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.

Imagen
Imagen

Paso 2: dispositivo Loriot Server Connect Node

a) Obtenga los canales de puerta de enlace disponibles

Los canales de puerta de enlace actuales se pueden obtener desde Panel de control -> Puerta de enlace -> Su puerta de enlace, puede ver los canales disponibles como se muestra en la imagen a continuación.

Imagen
Imagen

b) Configuración de Seeeduino LoRAWAN GPS (RHF3M076)

Abra el monitor serial de ArduinoIDE, toque el comando a continuación.

en + ch

Para confirmar el canal predeterminado de su GPS Seeeduino_LoRAWAN, obtendrá 3 canales. Si no hay un canal disponible, puede cambiar los canales de Seeeduino_LoRAWAN con el comando a continuación.

en + ch = 0, 868.1

en + ch = 1, 868,3 en + ch = 2, 868,5

Luego puede usar at + ch nuevamente para verificar.

c) Agregue Seeeduino_LoRAWAN GPS como un ABP NodeLog en el servidor de Loriot, haga clic en Tablero de instrumentos -> Aplicaciones -> SimpleApp. Haga clic en Importar ABP, ingrese los siguientes elementos

  • DevAddr: Seeeduino_LoRAWAN GPS pasa a través del comando "AT + ID" (Nota: Loriot no admite el conector de dos puntos, es necesario retirarlo manualmente)
  • FCntUp : Establecer en 1
  • FCntDn : Establecer en 1
  • NWKSKEY: valor predeterminado 2B7E151628AED2A6ABF7158809CF4F3C
  • APPSKEY: valor predeterminado 2B7E151628AED2A6ABF7158809CF4F3C
  • EUI: DEVEUI, Seeeduino_LoRAWAN GPS pasa por el comando "AT + ID"
Imagen
Imagen

Haga clic en el botón Importar dispositivo para finalizar la importación del dispositivo. Ahora elija Panel-> Aplicaciones -> SampleApp, verá el nuevo nodo ABP que acaba de agregar.

Imagen
Imagen

d) Enviar datos desde Seeeduino_LoRAWAN

¡ATENCIÓN! Esto es solo una prueba.

De vuelta al monitor serial de ArduinoIDE, envíe el comando:

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

Luego vaya a Panel de control -> Aplicaciones -> SampleApp -> Dispositivo, haga clic en el dispositivo de nodo EUI o DevAddr, encontrará los datos que acaba de enviar aquí.

Imagen
Imagen

Para obtener más información, consulte este wiki.

Paso 5: Construcción del sitio web

Herramientas relacionadas

  • virtualenv
  • Python3
  • Gunicorn
  • Supervisor
  • Nginx
  • MySQL

Usamos CentOS7 como entorno de implementación de prueba

virtualenv

Utilice virtualenv para crear un entorno de producción python3 independiente

a) instalar

pip instalar virtualenv

b) crear un entorno virtual python3

virtualenv -p python3 iotea

c) inicie el entorno virtual e ingrese al directorio iotea

bin de origen / activar

d) existe el medio ambiente

desactivar

Python3

a) instalar

yum instalar epel-release

yum instalar python36

b) instalar la biblioteca dependiente PyMySQL, DBUtils, Flask, websocket-client, configparser

pip instalar pymysql

pip instalar dbutils pip instalar frasco pip instalar websocket-cliente pip instalar configparser

Gunicorn

a) instalar (en el entorno Python3)

pip instalar gunicorn

b) ejecutar el proyecto flask (en el directorio del proyecto iotea)

gunicorn -w 5 -b 0.0.0.0:5000 aplicación: aplicación

c) ejecutar websocket-clint para obtener datos de loriot

gunicorn loriot: aplicación

d) ver el árbol de procesos de Gunicorn

pstree -ap | grep gunicorn

Supervisor

a) instalar (usuario root)

supervisor de instalación de pip

b) generar archivos de configuración

echo_supervisord_conf> /etc/supervisord.conf

c) crear un directorio e introducir una configuración de directorio

mkdir -p /etc/supervisor/conf.d

Edite /etc/supervisord.conf y modifique el campo de archivos en [incluir] al final del archivo.

Tenga en cuenta que debe eliminar el ';' delante de estas dos líneas, que es el carácter de comentario.

[incluir]

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

Medios para introducir /etc/supervisor/conf.d/. El siguiente archivo de configuración se utiliza como archivo de configuración del proceso (supervisado por el supervisor).

d) configuración entrante (en el directorio de iotea)

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

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

e) abrir iotea servir

superviosrctl reload #recargar el archivo de configuración

superviosrctl start loriot #abrir la recepción de datos de loriot superviosrctl start iotea #abrir la aplicación del matraz iotea

f) otras operaciones comunes

supervisorctl reload # recarga el archivo de configuración

supervisorctl actualizar supervisorctl iniciar xxx supervisorctl detener xxx estado de supervisorctl xxx supervisorctl ayuda # ver más comando

Nginx

a) instalar

yum install -y nginx

b) configuración

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

c) iniciar Nginx

systemctl start nginx.service

MySQL

a) parámetros relacionados

usuario = 'root'

passwd = '1234' db = puerto 'iotea' = 3306

b) archivo

iotea_iotea.sql

c) archivo de configuración

db.ini

Recomendado: