Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

SmartAgro

Componentes y suministros

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKR MEM Shield
× 1
GY21 Temperatura y humedad
× 1
Sensor de luz UV Adafruit SI1145
× 1
Sensor de humedad del suelo SparkFun (con terminales roscados)
× 1
Sensor de temperatura digital Adafruit Waterproof DS18B20
× 1
Cables de puente (genéricos)
× 1

Herramientas y máquinas necesarias

Soldador (genérico)

Acerca de este proyecto

Descripción general

La tierra agrícola es un recurso precioso, es necesario para la supervivencia de la sociedad moderna. Pero se enfrentan tantos desafíos en la agricultura agrícola, necesita obtener la temperatura, la humedad y la luz solar adecuadas para el cultivo, y luego debe asegurarse de que nada destruya el cultivo.

El concepto agricultura inteligente ha ido tomando forma en los últimos años, la idea de supervisar de forma remota el estado de su cultivo. Pero esta revolución en la agricultura tiene un gran costo, la mayoría de los sistemas disponibles son demasiado costosos de implementar en pequeñas granjas y es posible que los sistemas no cubran las grandes granjas.

SmartAgro tiene la intención de crear una red de dispositivos, fáciles de usar, que se puedan colocar en el campo que se está monitoreando. Los dispositivos recopilan datos atmosféricos, parámetros relacionados con el suelo y valores de luz, enviando todos los datos a la nube donde se presentan en un tablero.

Esto permite que cualquier granja, de cualquier tamaño, ingrese a la nueva era de la agricultura, implementando una flota escalable de dispositivos en su tierra que puede advertirles si se acerca una sequía.

Video

Imagen

Funcionalidad

SmartAgro permite al usuario implementar fácilmente una flota de dispositivos en el campo que se está monitoreando. Estos dispositivos toman muestras de los sensores en intervalos de tiempo definidos.

Luego, los datos se registran en un archivo.csv en una tarjeta SD y se envían al backend donde los datos se visualizan en un tablero. El proyecto consta de un front-end y un backend.

Interfaz

El front-end del proyecto se refiere a los dispositivos físicos colocados en el campo. Estos dispositivos toman muestras de datos de sus sensores, los graban en una tarjeta SD y los envían al backend. A continuación se muestra la descripción general de la funcionalidad del proyecto.

Se utiliza un MKR GSM para el front-end, el dispositivo recopila los datos y luego los envía a Soracom, donde se visualizan. A continuación, se muestran los pasos que sigue el dispositivo al recopilar datos.

Tarjeta SD

El dispositivo registrará los datos adquiridos de los sensores en la tarjeta SD adjunta. Los datos se agregarán a un archivo .csv que luego se puede descargar.

En la configuración, el dispositivo localiza si hay disponible un archivo .csv para escribir y lo agregará si ya existe. Creará un nuevo archivo si no existe uno. A continuación se muestran algunas imágenes del archivo.

Batería

El dispositivo se puede alimentar de varias formas. Puede ser alimentado por una batería LiPo a través del puerto provisto en el dispositivo, por un banco de energía o conectando una batería a través del puerto VIN en el dispositivo.

La vida útil del dispositivo depende en gran medida de la energía de la batería. El dispositivo entra en modo de suspensión entre lecturas para conservar la mayor cantidad de energía posible.

Envío de datos

Los datos se envían a Soracom a través de una conexión GSM al servidor. Los datos se envían como una carga útil JSON. Luego, el backend recibe estos datos y luego los procesa. A continuación se muestra un ejemplo de la carga útil.

  {"Latitude":53.3570404, "Longitude":- 6.2609935, "groundTemp":20.56, "groundHumidity":40, "atmoTemp":22.12, "atmoHumidity":62, "uvLight":0.00, "irLight":257, "deviceName":"device1"}  

Backend

El backend de la aplicación se refiere a Soracom. Soracom recibe los datos, los procesa y luego los muestra en el tablero.

El panel

El tablero del proyecto está alojado en Soracom Lagoon. Soracom Air recibe los datos en el backend, Soracom Harvest recopila los datos y luego Lagoon los consulta desde Harvest.

La ubicación de cada dispositivo en la flota y todos los datos de los sensores se trazan en el tablero. A continuación, se muestran capturas de pantalla del panel.

Alertas

El usuario también puede configurar el backend para recibir notificaciones por correo electrónico si el índice UV o la humedad del suelo recolectada por el dispositivo son anormales. De esta forma, el usuario sabrá si los cultivos necesitan atención.

Beneficios

El usuario que opere este proyecto tendrá muchos beneficios:

  • Visualice datos sobre la marcha en cualquier momento y en cualquier lugar mediante el panel de control.
  • Amplíe fácilmente los dispositivos y utilícelos como varios.
  • Costos más bajos que las soluciones habituales en el mercado.

Construyendo el Proyecto

Paso 1:Aparato requerido

Este proyecto requiere una lista de sensores y otros materiales. La lista completa de materiales necesarios se encuentra a continuación.

  • 1, Arduino MKR GSM
  • 1, Arduino MEM Shield
  • 1, módulo de temperatura y humedad GY-21
  • 1, sensor de temperatura impermeable
  • 1, sensor de luz ultravioleta SI-1145
  • 1, sensor de humedad del suelo
  • 1 caja de batería 2AA (con baterías) o una batería LiPo
  • 1, tarjeta SIM Soracom
  • 1, tarjeta SD
  • Cables de puente

Paso 2:conexión del circuito

Se necesitará un soldador para soldar todos los componentes juntos. Los esquemas se ilustran en el archivo fritzing a continuación.

¡Recuerde colocar el escudo MEM en la placa!

Preparación del MKR GSM

El Arduino MKR GSM necesita estar preparado. Encendí la placa con 2 pilas AA a través del puerto VIN. Los pasos se encuentran a continuación.

Paso 3:reconocimiento del código

Hay 4 secciones principales del código utilizado para el proyecto.

  • Prepare SD
  • Recopilar datos
  • Grabar datos en SD
  • Enviar datos a Soracom

Todas estas secciones se describen y detallan a continuación.

Preparar SD

  bool createFile () {// crea el archivo .csv en la tarjeta SD Serial.println ("Creando archivo"); Serial.println ("Aceptar - Crear y abrir archivo"); Archivo dataFile =SD.open ("datalog.csv", FILE_WRITE); if (archivo de datos) {Serial.println ("OK - Archivo creado"); Serial.println ("Aceptar - Añadiendo leyenda al archivo"); Serial.print ("Aceptar - Adjuntando"); Serial.println (leyenda); dataFile.println (leyenda); dataFile.close (); Serial.println ("Correcto - Datos adjuntos"); } else {Serial.println ("Error - Archivo no detectado"); Serial.println ("OK - Intentando de nuevo en 5 segundos"); Serial.println ("________________________________________"); Serial.println (""); dataFile.close (); retraso (5000); falso retorno; } Serial.println ("________________________________________"); Serial.println (""); return true;} void checkFile () {Serial.println ("Verificando .csv"); Serial.println ("________________________________________"); Serial.println ("Archivo de configuración"); Serial.println ("OK - Comprobando la presencia del archivo"); if (SD.exists ("datalog.csv")) // comprobar si el archivo .csv ya existe {// añadir al archivo existente si existe Serial.println ("OK - El archivo existe"); Serial.println ("OK - Se agregará al archivo existente"); Serial.println ("________________________________________"); Serial.println (""); } else {// crea un nuevo archivo para agregarlo a Serial.println ("OK - Archivo no presente"); Serial.println ("Aceptar - Creando archivo"); Serial.println (""); while (! createFile ()) {}; }}  

El checkFile () La función comprueba si existe el archivo .csv al que se supone que debe agregar el dispositivo. Si el archivo existe, la función finaliza; de lo contrario, llama a createFile () que crea un nuevo archivo.csv para agregar.

Recopilar datos

  void collectData () {Serial.println ("Recopilación de datos"); Serial.println ("________________________________________"); Serial.println ("Obtención de datos de sensores"); Serial.println ("OK - Contactando a todos los sensores"); // recolectando datos de todos los sensores sueloSens.requestTemperatures (); SueloTemp =SueloSens.getTempCByIndex (0); sueloHumedad =analogRead (A1); Humedad del suelo =mapa (Humedad del suelo, 1023, 0, 0, 100); atmoTemp =gy21.readTemperature (); atmoHumidity =gy21.readHumidity (); visibleLight =uv.readVisible (); irLight =uv.readIR (); rawUVLight =uv.readUV (); uvLight =(rawUVLight / 100); Serial.println ("OK - Datos recopilados"); Serial.println ("OK - Volcado de datos"); Serial.print ("[Light] Visible"); Serial.println (visibleLight); Serial.print ("[Luz] Infrarrojos"); Serial.println (irLight); Serial.print ("[Light] Ultraviolet"); Serial.println (uvLight); Serial.print ("Temperatura [Atmo]"); Serial.println (atmoTemp); Serial.print ("[Atmo] Humedad"); Serial.println (atmoHumidity); Serial.print ("Temperatura [del suelo]"); Serial.println (sueloTemp); Serial.print ("Humedad [del suelo]"); Serial.println (humedad del suelo); Serial.println ("Correcto - Datos volcados"); Serial.println ("________________________________________"); Serial.println ("");}  

Esta sección de código recopila datos de todos los sensores a bordo. Contacta con sensores de temperatura y humedad atmosférica, humedad y temperatura del suelo e índice UV, valor de luz IR y luz visible.

Grabar datos en SD

  bool burnData (String data) {Serial.println ("Burning Data"); Serial.println ("________________________________________"); Serial.println ("Grabación de datos en la tarjeta SD"); Serial.println ("Aceptar - Abrir archivo"); Archivo dataFile =SD.open ("datalog.csv", FILE_WRITE); if (archivo de datos) {Serial.println ("OK - El archivo está presente"); Serial.print ("Aceptar - Adjuntando"); Serial.println (datos); Serial.println ("OK - Grabando datos"); dataFile.println (datos); // grabar los datos en la tarjeta SD dataFile.close (); Serial.println ("Correcto - Datos adjuntos"); Serial.println ("________________________________________"); Serial.println (""); } else {Serial.println ("Error - Archivo no presente"); Serial.println ("OK - Intentando de nuevo en 5 segundos"); Serial.println ("________________________________________"); Serial.println (""); retraso (5000); } Serial.println ("");}  

Esta función graba los datos que se compilaron previamente en una línea de un archivo .csv en la tarjeta SD. Los datos se adjuntan al archivo de la tarjeta.

Enviar datos a Soracom

  void parseData (String dataToSend) {Serial.println ("Enviando datos"); Serial.println ("________________________________________"); Serial.println ("Envío de datos a Soracom"); Serial.println ("OK - Configurando la conexión"); if (client.connect (url, 80)) // preparar la conexión y formatear el envío {Serial.println ("OK - Conexión establecida, analizando datos"); client.println ("POST / HTTP / 1.1"); client.println ("Anfitrión:cosecha.soracom.io"); client.println ("Usuario-Agente:Arduino / 1.0"); client.println ("Conexión:cerrar"); client.print ("Content-Length:"); cliente.println (dataToSend.length ()); cliente.println (""); client.println (dataToSend); Serial.println ("OK - Datos analizados"); } Serial.println ("OK - Obteniendo respuesta"); Serial.println (""); // leer desde el servidor while (1) {if (client.available ()) {char c =client.read (); Serial.print (c); } si (! cliente.conectado ()) {descanso; }} Serial.println ("Éxito:se analizan los datos"); Serial.println ("________________________________________"); Serial.println ("");}  

Finalmente, los datos se envían a Soracom. El dispositivo estableció una conexión con el servidor y luego prepara las credenciales. Luego, los datos se envían al servidor y la respuesta se imprime en Serial Monitor.

Luego, el dispositivo se pone en suspensión durante un período de tiempo definido, repitiendo los pasos nuevamente.

Paso 4:configuración de las variables

El usuario debe editar algunas variables antes de poder utilizar el proyecto. Las variables que se pueden editar se encuentran en el archivo principal del código. Estos se describen a continuación.

  • deviceName representa el nombre personalizado del dispositivo. Esto se envía junto con la carga útil a Soracom, es útil para identificar dispositivos aparte al administrar una flota de dispositivos.
  • sleepTime es la cantidad de tiempo (en milisegundos) que el dispositivo dormirá entre lecturas. El dispositivo se suspenderá entre lecturas para reducir el consumo de batería.
  • proDebug se establece en verdadero si hay errores y en falso en caso contrario. Si proDebug está habilitado, el dispositivo requiere estar conectado a una computadora con el monitor serial encendido para funcionar. Establézcalo en verdadero al depurar, pero asegúrese de que esté configurado en falso si está en el campo. Tenga en cuenta que el dispositivo seguirá imprimiendo en serie incluso si proDebug es falso;

Paso 5:configuración de la tarjeta SD

La tarjeta SD debe estar preparada antes de que pueda usarse con el dispositivo. La tarjeta SD debe formatearse como FAT 32. Siga los pasos a continuación para preparar la tarjeta SD.

Paso 6:suba el código

Antes de configurar el backend, se le deben enviar datos.

Para hacer esto, conecte su MKR GSM a su computadora y cargue el código en el dispositivo, asegúrese de que el modo del dispositivo esté configurado en 1 para esta configuración. Una vez que se haya cargado el código, coloque todos los sensores en agua.

Ahora presione el botón en el dispositivo y espere a que los datos se recopilen y envíen. Repita esto un par de veces para completar Soracom Air.

Paso 7:configuración de Soracom

Este paso se divide en 2 secciones, la primera cubrirá la creación de una cuenta con Soracom y el registro de su SIM, mientras que la otra cubrirá la configuración de Soracom Harvest para recopilar los datos de Air. Si ya tiene una cuenta con Soracom, omita la primera sección.

Sección 1:Creación de una cuenta

Sección 2:Grupos y cosecha

Paso 8:configuración de Soracom Lagoon

Lo último que debemos configurar en Soracom es Lagoon, esta es la herramienta que usaremos para visualizar nuestros datos y crear alertas por correo electrónico si los datos no son buenos. Siga los pasos a continuación.

Bibliotecas

  • ArduinoLowPower (c) 2016 Arduino LLC Licencia pública general reducida GNU esta biblioteca es de dominio público
  • MKRGSM (c) 2016 Arduino AG GNU Licencia pública general reducida esta biblioteca es de dominio público
  • Wire (c) 2006 Nicholas Zambetti Licencia pública general reducida GNU esta biblioteca es de dominio público
  • OneWire (c) 2007 Jim Studt GNU Licencia pública general esta biblioteca es de dominio público
  • DallasTemperature GNU Licencia pública general esta biblioteca es de dominio público
  • RTCZero (c) 2015 Arduino LLC Licencia pública general reducida GNU esta biblioteca es de dominio público
  • SPI (c) 2015 Hristo Gochkov Lesser GNU Lesser Licencia pública general esta biblioteca es de dominio público
  • SD (C) 2010 SparkFun Electronics GNU Licencia pública general esta biblioteca es de dominio público

Final

Finally I designed an enclosure for the project, it would be preferable if the top of the enclosure would be transparent so that the UV sensor can be placed within the enclosure, I placed my sensor outside the enclosure to prevent any interference.

Finally, ensure that all the variables are set and then place the device on the field, it should be ready to monitor all parameters now.

Using an SD Card Module

I have chosen to use the Arduino MKR MEM shield as it is easy to use and quite compact. An SD card module can also be used though most operate with 5v while the MKR GSM can only provide 3.3v, therefore a level convertor is needed to step up the 3.3v to 5v.

Antecedentes

I came up with this idea while going on a bus past fields. I remembered reading about new devices used to monitor agricultural fields but I was made aware of the costs which are mostly not affordable for farmers.

So I decided to use the low cost Arduino to monitor multiple parameters on the farm and allow any farm, big or small to step into the age of IoT and smart farming.

Código

SmartAgro
The Full Code

Esquemas

schematics_rrBJ3HiIfc.fzz

Proceso de manufactura

  1. Sensor Arduino - Tipos y aplicaciones
  2. Creación de una red de sensores inalámbricos en su hogar
  3. Monitoreo de CO2 con sensor K30
  4. ¿Qué tan alto eres?
  5. Sensor de obstáculos simple con Arduino
  6. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  7. Torre de sensores de nubes Arduino
  8. Pistola de agua con sensor de movimiento
  9. Cómo crear un sitio web comunicando Arduino usando PHP
  10. Mini radar con Arduino
  11. Arduino enviando datos del sensor al servidor MySQL (PHPMYADMIN)