Tabla de contenido:
- Paso 1: Cosas utilizadas en este proyecto
- Paso 2: historia
- Paso 3: Conexión de hardware
- Paso 4: configuración del software
- Paso 5: Construcción del sitio web
Video: Solución Seeed LoRa IoTea: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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.
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.
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.
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.
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.
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.
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.
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"
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.
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í.
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:
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 IoTea LoRa (actualización 1811): 5 pasos
Solución IoTea LoRa de Seeed (Actualización 1811): Internet + es un concepto popular ahora. Esta vez probamos Internet más la agricultura para hacer que el jardín de té crezca Internet Tea
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