Tabla de contenido:

Servidor de datos de temperatura dual de IoT: 12 pasos (con imágenes)
Servidor de datos de temperatura dual de IoT: 12 pasos (con imágenes)

Video: Servidor de datos de temperatura dual de IoT: 12 pasos (con imágenes)

Video: Servidor de datos de temperatura dual de IoT: 12 pasos (con imágenes)
Video: 📡 Tu propio Servidor IoT Intro #1 2024, Junio
Anonim
Servidor de datos de temperatura dual de IoT
Servidor de datos de temperatura dual de IoT

Este es mi primer intento de escribir un Instructable, ¡así que no me digas! Si cree que esto no es tan malo, por favor vote por mí en el Concurso de Autor por Primera Vez.

Este es mi proyecto Lock-Down para monitorear de forma remota 2 temperaturas en un invernadero, una al nivel del piso y otra justo debajo del techo. Aunque había usado Raspberry Pi (RPi) antes, este proyecto involucró varios elementos que no había usado y, en el camino, encontré varios tutoriales que estaban desactualizados o simplemente estaban equivocados. Esta es mi colección de conocimientos para hacer un monitor de temperatura remoto dual que funcione a partir de un sensor de temperatura digital Pi Zero & 2 DS18B20 + One Wire que se adquirió en el camino.

Cosas que aprendí:

  • Hacer que los datos estén disponibles desde un dispositivo como parte de Internet de las cosas (IoT)
  • Interfaz de 1 cable con 2 dispositivos
  • Dataplicity
  • Datos JSON
  • Configuración del cortafuegos UFW
  • Usando Freeboard.io para mostrar los datos
  • Configurar el RPi para ejecutar automáticamente el programa

Hay enormes cantidades de datos que se pueden encontrar con una simple búsqueda sobre todos estos temas, pero lo que no está tan claro es cómo combinar todos estos elementos separados.

Suministros

  • Necesitará una Raspberry Pi (con monitor, mouse y teclado para configurar, pero no cuando ejecute el proyecto terminado)
  • Una conexión a Internet que funcione.
  • Una fuente de alimentación con un conector Micro USB
  • 2 de los sensores de temperatura digitales de un cable DS18B20 +. Descubrí que Amazon era el https://www.amazon.co.uk/gp/product/B07CZ1G29V/ref… más barato
  • Resistencia de 4K7 ohmios o utilicé 2 resistencias de 10K ohmios.
  • Placa de pruebas pequeña y algunos cables macho / hembra para realizar pruebas en el banco
  • Pequeño trozo de listón para el montaje final
  • Herramientas sencillas para soldar y pelar cables.
  • Pequeña caja de plástico para albergar el diseño terminado

Paso 1: hardware

Hardware
Hardware
Hardware
Hardware

Ya tenía una Raspberry Pi Zero W (con conexión inalámbrica) pero estoy seguro de que este simple proyecto funcionará bien en cualquiera de los RPI. La caja de bits electrónicos extraños en mi taller tenía todo lo demás (placa de pruebas, cable, fuente de alimentación, etc.), por lo que todo lo que tenía que comprar eran dos sensores 2 x DS18B20 de Amazon. Estos son los chips DS18B20 normales que están convenientemente montados en una carcasa impermeable y un cable de 3 m. Hay 3 hilos del cable:

  • Rojo - alimentación - conéctelo al pin 1 de 3.3v
  • Negro - retorno - conectar a tierra pin 6
  • Amarillo - datos - conéctese al pin 7 de GPIO4

Los sensores utilizan la interfaz de 1 cable y fueron muy fáciles de conectar y obtener datos. Hay varias páginas en la Web con detalles para la conexión de 1 dispositivo, pero muy poca sobre la conexión de 2 (o más).

Para probar en el banco, el circuito se ensambló usando una placa de pruebas. Los tutoriales que encontré indicaron que usaban una resistencia de 4K7 para sesgar la línea de datos, pero no pude encontrar una y, por lo tanto, usé 2 * 10K en paralelo y funcionó bien. Hay muchos recursos en la Web para usar una placa para ensamblar circuitos RPi, por lo que no los repetiré aquí.

Diagrama creado usando el diagrama de circuito

Paso 2: Configuración del software del sistema operativo Raspberry Pi

Configuración del software del sistema operativo Raspberry Pi
Configuración del software del sistema operativo Raspberry Pi
Configuración del software del sistema operativo Raspberry Pi
Configuración del software del sistema operativo Raspberry Pi
Configuración del software del sistema operativo Raspberry Pi
Configuración del software del sistema operativo Raspberry Pi

Como había usado este RPi antes, decidí comenzar con una instalación limpia del sistema operativo, reformateé la tarjeta SD e instalé una versión limpia de NOOBS. Luego instalé la versión de escritorio completa de Raspian (la opción superior) ya que esto también instalaría PIP & GIT que la versión lite no lo hace. Aunque no necesitaba la interfaz gráfica de usuario (GUI) para el proyecto, es una manera fácil de configurar todas las opciones y con una tarjeta SD de 16 gb no había escasez de espacio.

Configuré el acceso WI-FI, luego ejecuté la instalación completa y luego el asistente con actualizaciones y mejoras, etc. Usando la GUI, configuro el RPI según sea necesario solo porque usar la GUI es más simple que la Interfaz de línea de comandos (CLI). Fui a la ventana de configuración desde el menú y luego:

  • En la pestaña del sistema, cambié la contraseña, configuré para arrancar en CLI y desmarqué Inicio de sesión automático
  • En la pestaña de interfaces, habilité 1-wire
  • Hizo clic en Aceptar y reinició

Si necesita volver a la GUI en cualquier momento, simplemente escriba startx en la CLI

startx

Paso 3: configurar Dataplicity para permitir el acceso remoto

Configurar Dataplicity para permitir el acceso remoto
Configurar Dataplicity para permitir el acceso remoto
Configurar Dataplicity para permitir el acceso remoto
Configurar Dataplicity para permitir el acceso remoto
Configurar Dataplicity para permitir el acceso remoto
Configurar Dataplicity para permitir el acceso remoto

Encontré una entrada de blog realmente útil en el sitio de Dataplicity en https://blog.dataplicity.com/how-to-build-a-raspb… y usé algunas partes de esto. La sección 3 del blog describe la configuración de Dataplicity para el acceso remoto al RPi. Nunca antes había usado Dataplicity, pero debo decir que lo recomiendo como una herramienta de acceso remoto muy simple. Aunque las capturas de pantalla (en el blog anterior) están un poco desactualizadas, el principio está bien.

En su PC, vaya a Dataplicity.com y cree una cuenta (puede usar el navegador en la GUI, pero bastante lento en el RPi Zero). Luego haga clic en el botón "agregar nuevo dispositivo" y se mostrará una línea de código en la ventana emergente. Luego vaya a la CLI en el RPi y escriba la línea de texto. Si todo está bien, se mostrará el logotipo de Dataplicity y se ejecutará el programa de instalación.

De vuelta en su PC, el nuevo dispositivo debería aparecer ahora en el sitio web de Dataplicity. Haga clic en el dispositivo y debería ver una pantalla de terminal para su RPi.

Hay algunas cosas a tener en cuenta aquí:

  • Para iniciar sesión, escriba "su pi" (para acceso de superusuario) y se le pedirá la contraseña (como se estableció anteriormente)
  • Debe habilitar Wormhole (para usarlo más adelante)
  • Necesitará la dirección de Wormhole para mostrar los datos más tarde (haga clic con el botón derecho para copiar cuando sea necesario)

Puede utilizar este acceso remoto para todos los pasos siguientes y es mucho más fácil copiar datos, programas, etc. que directamente en el RPi.

Paso 4: Verifique los sensores

Ahora puede utilizar el acceso remoto de Dataplicity a RPI para todas las secciones siguientes.

Si ahora todo está bien conectado, debería poder ver las temperaturas que devuelve el DS18B20. Trabajé en el tutorial de Pi Hut, pero la mayor parte de esto no era necesario. Si desea conocer todos los detalles, puede encontrarlos aquí:

Los bits importantes son ir al directorio de dispositivos y asegurarse de que se muestren 2 sensores diferentes.

cd / sys / bus / w1 / dispositivos /

Esto debería mostrar 2 dispositivos comenzando con 28- y el bus maestro. El mío muestra:

28-011453ebfdaa 28-0114543d5daa w1_bus_master1

Estos 2 números de identificación son importantes y los necesitará más adelante. Luego cambie a uno de los directorios de sensores:

cd 28-011453ebfdaa

(por ejemplo) y luego leer el valor del sensor

gato w1_slave

Debería mostrarse 2 líneas de texto:

53 01 4b 46 7f ff 0c 10 2d: crc = 2d SÍ

53 01 4b 46 7f ff 0c 10 2d t = 21187

El SÍ muestra que el sensor está leyendo correctamente y el 21187 muestra la temperatura en grados Celsius de 21.187 (dividir por 1000) Repita esto para verificar el segundo sensor. Si ambos leen bien, podemos pasar a leer los datos con Python3.

Copié y adapté el siguiente código que encontré en la Web pero no recuerdo de dónde. Si este se parece a su código, me disculpo porque no se pretendía plagio; por favor avíseme y reconoceré su trabajo.

Cree un directorio llamado proyectos y cambie a ese directorio.

mkdir ~ / proyectos

cd ~ / proyectos

En este directorio, use el editor de texto (nano) para crear y editar un archivo llamado thermo-test.py

sudo nano thermo-test.py

Esto debería haber abierto el editor y, como está usando Dataplicity, simplemente puede copiar el siguiente código a continuación (thermo-test.py) y pegarlo en el editor. Deberá modificar los 2 nombres de dispositivos (comenzando 28-…) a los que se anotaron arriba. Cuando todo parezca correcto, presione ctrl + X para terminar, Y para guardar y volver a usar el nombre existente. Si prefiere utilizar la GUI, Thonny hará lo mismo.

Para ejecutar el programa de prueba:

sudo python3 thermo-test.py

Si todo está bien, esto debería ejecutar el archivo usando Python 3 e imprimir en la pantalla las 2 temperaturas cada 10 segundos. Puede comprobar que todo está bien colocando 1 sensor en agua helada o calentándolo suavemente con un secador de pelo. Si todo parece estar bien, ¡podemos seguir adelante!

Paso 5: cortafuegos UFW

Cortafuegos UFW
Cortafuegos UFW

Como este RPi iba a estar conectado permanentemente a Internet, decidí que un Firewall sería una buena idea y uno simple de usar es Uncomplicated Firewall (ufw). Hay un tutorial muy simple aquí

No voy a profundizar mucho ya que este no es el propósito de este Instructable, pero en resumen:

Instale el firewall con:

sudo apt-get install ufw

Establezca las reglas predeterminadas:

sudo ufw por defecto permitir salientes

sudo ufw predeterminado denegar entrante

Abra el puerto 80 para Dataplicity

sudo ufw permitir 80

Habilita el cortafuegos

sudo ufw habilitar

Verifique el estado y asegúrese de que todo esté funcionando

estado de sudo ufw

Paso 6: S finalizando los datos de temperatura como JSON

S finalizando los datos de temperatura como JSON
S finalizando los datos de temperatura como JSON

Volver al blog de Tim Fernando y a la sección 5.

Siga los pasos como se indica (excepto que ya hemos creado el directorio de proyectos) y todo debería funcionar bien. Usando GIT, descargará los archivos de la aplicación de Tim y el PIP se asegurará de que todos los programas requeridos estén instalados en su RPi. Luego descubrí que necesitaba reiniciar para asegurarme de que todos los paquetes estuvieran configurados correctamente.

Luego, ejecute el programa de Tim y su RPi debería proporcionar datos JSON para el primer sensor.

cd inicio / pi / proyectos / temperature-serve-pi

temperatura de sudo gunicorn: app -b 0.0.0.0:80

Puede continuar a través del blog hasta la sección 6, donde encontrará que se proporcionan datos para 1 de los sensores.

También puede usar JSON Viewer para ver los datos https://codebeautify.org/jsonviewer Haga clic en el botón "cargar URL" y pegue la dirección de Wormhole anotada anteriormente. En el panel izquierdo, debería ver dos entradas, una para Celsius y otra para Fahrenheit.

Paso 7: envíe datos desde ambos sensores

Enviar datos desde ambos sensores
Enviar datos desde ambos sensores

Basado en el código en Temperature.py y thermo-test.py, creé 2temps.py Editado como antes en el directorio / projects / temperature-serve-pi, pegué el código y lo guardé. Luego corrí

sudo gunicorn 2temps: aplicación -b 0.0.0.0:80

Ahora, cuando volví a ejecutar JSON Viewer, obtuve valores para temp1 y temp2

Éxito:)

Paso 8: inicio automático

Autoencendido
Autoencendido

Como la energía del invernadero se apaga ocasionalmente, quería que el RPi cargara automáticamente el programa y comenzara a probar los datos. La forma más sencilla parece ser editar el archivo rc.local y agregar el código requerido en la parte inferior, justo encima de la línea de salida 0.

cd, etc.

sudo nan rc.local

luego complemento

dormir 10

cd home / pi / projects / temperature-serve-pi sudo gunicorn temp04: app -b 0.0.0.0:80 &

  • El & al final le dice a la computadora que ejecute el script en un sub-shell para que su computadora no espere a que la función termine y continúe con el arranque.
  • Dormir 10 [segundos] asegura que todas las operaciones anteriores se completen antes de iniciar el servicio.

Salga y guarde como antes. Luego reinicie y vuelva a ejecutar JSON Viewer para verificar que todo esté bien.

Si desea obtener más información sobre los programas que se ejecutan automáticamente, hay un excelente tutorial aquí

Paso 9: Mostrar los datos en Freeboard.io (1)

Mostrar los datos en Freeboard.io (1)
Mostrar los datos en Freeboard.io (1)

Los pasos en el blog de Tim funcionan bien, en resumen; crear una cuenta en www.freeboard.io y luego crear un nuevo Freeboard, llamé al mío SHEDTEMPERATURES.

Primero, agregue una fuente de datos, haga clic en AGREGAR en la parte superior derecha y, en la ventana emergente, seleccione JSON como tipo, asigne un NOMBRE a la fuente de datos, agregue la dirección del agujero de gusano anterior como URL y haga clic en NO para INTENTAR COSASPROXY. Las temperaturas solo cambian muy lentamente, por lo que ACTUALIZAR CADA 15 SEGUNDOS está bien. Clic en Guardar.

Paso 10: Mostrar los datos en Freeboard.io (2)

Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)
Mostrar los datos en Freeboard.io (2)

Haga clic en AGREGAR PANEL y luego en + para agregar el primer widget. Puede seleccionar y jugar con varios de los TIPOS, pero encontré que Gauge estaba bien. Dé un TÍTULO, UNIDADES (C), MÍNIMO y MÁXIMO adecuados para su aplicación. Para la FUENTE DE DATOS, haga clic en + y aparecerá la fuente creada arriba.

El menú desplegable ahora debería mostrar las 2 fuentes de datos JSON (temp2 y temp2) compiladas anteriormente. Seleccione la fuente adecuada y haga clic en guardar.

Repita esto para el segundo indicador y estamos listos.

Los datos ahora deberían mostrarse en los 2 medidores y si todavía tiene el PRi conectado a un monitor, debería ver las solicitudes de Freeboard.io a medida que llegan.

Paso 11: Construya el proyecto en una caja

Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja
Construya el proyecto en una caja

Hasta este momento, el RPi y los otros componentes se habían ensamblado en el banco usando una placa de pruebas. Luego se usó un pequeño trozo de tablero para reemplazar el tablero y los cables se soldaron en su lugar.

Se encontró una pequeña caja de almacenamiento de Lego de color rosa brillante que tenía mucho espacio y donde el RPI no se calentaría demasiado. Se perforaron orificios en los lados de la caja y se usaron pilares de montaje de nailon de 3 mm para mantener el RPi y la placa en su lugar.

Solo se requieren 3 conexiones de GPIO, 3.3v, GND y datos.

  • Pin 1 de 3.3vdc
  • Patilla 6 GND
  • Datos (GPIO4) pin 7

También se agregaron orificios en la caja para la alimentación USB y los cables a los sensores de temperatura. Una vez que todo estuvo montado en su lugar, se agregó una pequeña cantidad de sellador de silicona para garantizar que las arañas no pensaran que era un lugar agradable y cálido para pasar el invierno.

Paso 12: terminado

Finalizado
Finalizado
Finalizado
Finalizado

La caja se colocó en el invernadero y se alimentó con un cargador USB. Los dos sensores se colocaron uno cerca de la parte superior del invernadero y el otro en una maceta para comprobar qué tan frías estaban las plántulas por la noche.

Este es mi primer Instructable y espero que pienses que está bien. Si encuentra algún error, hágamelo saber y lo corregiré cuando sea necesario. El siguiente paso podría ser registrar los datos cada (digamos) 60 segundos, pero esto vendrá más tarde.

Recomendado: