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

Pequeña estación meteorológica de Internet

Componentes y suministros

Arduino Nano 33 IoT
× 1
Sensor meteorológico BME
× 1
0.96 en pantalla OLED - 128x 64
× 1
Estuche de plástico 3.9 "x 2.7"
× 1
Cable micro USB
× 1
Cables de puente de tablero macho a hembra
× 1
Cargador de pared USB
× 1

Herramientas y máquinas necesarias

Pistola de pegamento caliente (genérica)

Aplicaciones y servicios en línea

Arduino IDE
Blynk

Acerca de este proyecto

Hay muchas aplicaciones que le permiten conectar su teléfono inteligente al Internet de las cosas. He probado un montón de ellos y, por lo general, me ha decepcionado. ¡No es así con Blynk! Es realmente flexible, tiene una hermosa interfaz de usuario, funciona con todo tipo de plataformas de IoT y se ejecuta tanto en Android como en iPhone. ¡También es gratis para los aficionados! Este es un proyecto de IoT relativamente simple que me permitió explorar el uso de Blynk.

Hardware

El hardware para este proyecto es bastante simple. Usamos el Arduino Nano 33 IoT que maneja WiFi, una placa de sensor BME280 con temperatura, humedad y presión barométrica, todo en una unidad, y una pantalla OLED de 1 pulgada. Los tres funcionan bien a 3,3 voltios. La pantalla es obviamente opcional:el objetivo es que la estación meteorológica se muestre en su teléfono. Pero hace que sea mucho más fácil poner todo en funcionamiento en la pantalla OLED primero, antes de tratar con Blynk y su teléfono inteligente.

El siguiente esquema muestra cómo se interconecta el hardware. Tanto el sensor como la pantalla se conectan con I2C. En teoría, un I2C puede admitir varios dispositivos, pero las bibliotecas del sensor y la pantalla tenían algunos conflictos, por lo que terminé con dos puertos I2C diferentes. El sensor usa el puerto I2C predeterminado normal en analógico pines 4 y 5. La pantalla utiliza un puerto I2C secundario configurado en digital pines 4 y 5. (Y sí, están invertidos - SDA es el pin digital 5))

El hardware está encerrado en una pequeña caja de plástico con un frente transparente, para que se pueda ver la pantalla. Es de plástico, ya que debe ser transparente a RF para WiFi. Debe ser relativamente resistente a la intemperie, pero el sensor está expuesto a la intemperie exterior por un orificio de 1/2 "en la parte inferior. El sensor está conectado de modo que se asiente justo dentro de ese orificio. Adjunté todo dentro de la carcasa con pegamento, pero es posible que desee usar epoxi en su lugar si planea colocarlo afuera en el calor del verano.

La energía se suministra a través del cable USB. De esa manera, se puede programar o alimentar con un solo cable que sale de la caja. Ese cable puede ir a su computadora durante la programación o a una fuente de alimentación USB enchufable cuando se usa como estación meteorológica.

Software

El software que se ejecuta en Arduino es solo un poco más que una combinación de los ejemplos de la biblioteca para el sensor, la pantalla y Blynk. Las bibliotecas involucradas son Adafruit_BME280_Library para el sensor, la biblioteca ss_oled para la pantalla y la biblioteca Blynk para Blynk. Los tres se pueden descargar directamente desde el administrador de la biblioteca de Arduino. Es posible que desee experimentar con cada una de estas bibliotecas por separado para comprender mejor cada una.

Blynk tiene un montón de ejemplos de cómo configurar el hardware para interactuar con él:https://examples.blynk.cc/ Desafortunadamente, no enumera el Nano 33 IoT como uno de sus Arduino compatibles. Pero Blynk es compatible con WiFiNINA, que es utilizado por el Nano 33 IoT y varios otros procesadores Arduino. Entonces, agregar estos dos incluye resolvió ese problema:#include y #include

Otra adición que verá en mi código es:#include Esto fue necesario para convertir los números que salen del sensor en cadenas adecuadas para mostrar en la pantalla OLED. Un pequeño giro en esto que me dio algo de dolor fue que Blynk está feliz de mostrar los datos, ya sea que se envíen como una cadena o un número. Al principio le envié a Blynk la misma cadena que estaba enviando al OLED. Eso funcionó bien para mostrar los números, pero falló totalmente cuando agregué gráficos. Para que las gráficas funcionaran, Blynk obviamente necesitaba números reales.

Nota:la presión barométrica normalmente se informa corregida al nivel del mar. En elevaciones más altas, la presión barométrica obviamente cae, por lo que para corregir los valores del sensor a su lectura equivalente al nivel del mar, debe agregar un valor al valor medido de aproximadamente 1 pulgada Hg por cada 1000 pies de elevación. En mi propio código adjunto, verá que agregué 1.3 para compensar mi propia elevación de 1300 pies sobre el nivel del mar. Querrá cambiar este valor para que coincida con su propia elevación. El 1 "Hg por 1000 pies es solo una estimación aproximada. Si desea una corrección precisa, hay tablas en línea que le darán la corrección exacta para su elevación.

Estación meteorológica sin Blynk

En este punto, puede configurar el hardware y usar mi software adjunto para mostrar los datos meteorológicos en la pantalla OLED. Simplemente comente la línea Blynk.begin () en Configuración para que la estación meteorológica funcione por sí sola. (Si no comenta Blink.begin (), sin una conexión válida a Blynk, el boceto se detendrá o colgará en ese punto). En la siguiente sección, hablaremos sobre Blynk, cómo configurarlo tanto en el boceto de Arduino y en el teléfono inteligente para mostrar la estación meteorológica en el teléfono.

Blynk

Blynk es fácil de instalar en su iPhone o Android y viene con documentación detallada:http://docs.blynk.cc/ Pero hay tanta información allí y tantas opciones que encontré las cosas un poco confusas al principio, así que lo haré proporcione aquí mi propia versión de cómo empezar con Blynk.

Usé Blynk con un iPhone, pero creo que la experiencia es lo suficientemente similar con Android que puedes seguir mis instrucciones con cualquiera de ellos. Una vez que tenga la aplicación, debe crear una cuenta. Desde allí, dentro de la aplicación, crea un nuevo proyecto. Su proyecto cuenta con un código de autenticación que se utiliza para vincular su hardware con su proyecto. Su primer trabajo es conectar su hardware a través de WiFi a su proyecto Blynk. Puede lograr esto y probarlo utilizando el programa / boceto predeterminado de Blynk llamado Blynk Blink en examples.blynk.cc, que le permite encender y apagar el LED integrado en su Nano 33 IoT. Mi sugerencia es que intente esto y haga que funcione antes de intentar que la estación meteorológica funcione con Blynk.

Ya hemos hablado un poco sobre la configuración de nuestro software para que nuestro Nano 33 IoT funcione con Blynk. Si abre examples.blynk.cc, el valor predeterminado es una placa ESP8266. Busque #include y #include y reemplácelos con #include y #include

Además de agregar soporte WiFiNINA para Nano 33 IoT, como ya mencionamos, debe agregar sus credenciales WiFi y el código de autenticación de su proyecto Blynk. Explicaremos cómo encender y apagar el LED en un minuto, pero primero, solo verifiquemos la conexión. Con el boceto de Blynk Blink configurado y ejecutándose correctamente, abra el Monitor serial de Arduino y debería poder ver la conexión que se realiza con el servidor en la nube de Blynk. En este punto, podemos dejar de lado nuestro hardware y trabajar con la aplicación Blynk en el teléfono.

Admito que encontré la aplicación Blynk algo confusa. El icono en la parte superior izquierda le permite seleccionar entre proyectos y también cerrar sesión en su cuenta. El de la parte superior derecha le permite entrar y salir del modo Editar proyecto. Lo que hace el del medio depende de dónde te encuentres.

Para obtener el control de nuestro LED integrado, debemos ingresar al modo de edición en la aplicación. Luego verá una pantalla en blanco. Si desliza el dedo hacia la izquierda, se moverá a un lado para revelar una caja de herramientas de widgets. Seleccione un botón haciendo clic en él y ahora estará en la pantalla principal. Haga clic en él allí y se abrirá para la configuración. Muévalo del modo de empuje al modo de cambio. Use la selección de pines para seleccionar el LED integrado:el pin digital 13 en nuestro Nano 33 IoT. Ahora haga clic en Aceptar y presione el icono superior derecho para salir del modo de edición. Su botón ahora debería controlar el LED.

Estación meteorológica con Blynk

Ahora estamos listos para vincular nuestra estación meteorológica a nuestro proyecto Blynk. Abra mi software adjunto, elimine el comentario de la línea Blynk.begin () en Configuración, agregue el código de autenticación del proyecto y las credenciales de WiFi y cárguelo en Arduino.

Abre Blynk en tu teléfono. Si ha seguido este tutorial, su botón todavía está allí y aún debería poder encender y apagar el LED integrado. Vaya al modo de edición, haga clic en el botón para configurarlo y elimínelo con Eliminar en la parte inferior. Ahora vaya a la caja de herramientas y seleccione un valor etiquetado. Está un poco más abajo en la lista, debajo de Pantallas. De vuelta en la página de visualización, haga clic en la pantalla Valor etiquetado para configurarlo. Haga clic en el pin, luego seleccione Virtual pin V3. Explicaremos los pines virtuales en el siguiente párrafo. Ahora para la etiqueta, donde dice "por ejemplo, Temp", escriba "Temp /pin.#/ deg.F". El. # Le dice a la aplicación que muestre un lugar después del punto decimal. Seleccione el tamaño de texto grande y deje el intervalo de actualización en Push y el color del texto en verde. Ahora haga clic en Aceptar. Su valor etiquetado ahora está casi listo para mostrar la temperatura, pero es demasiado estrecho. Selecciónelo lentamente, lo suficientemente lento como para que no vuelva a ingresar al modo de configuración. Se iluminará el contorno de la etiqueta. Ahora se puede estirar para mostrar toda la línea. También se puede mover, aunque no lo haremos aquí. Estírelo alrededor de 3/4 del camino a través de la pantalla. Luego salga del modo de edición y debería ver la temperatura en su teléfono.

Antes de que terminemos de configurar Blynk, vale la pena explicar un par de cosas que acabamos de ver al configurar la pantalla de temperatura. Blynk usa una idea algo única llamada pines virtuales. El widget de valor de visualización podría configurarse para leer un pin analógico en nuestro procesador, o configurarse para leer si un pin digital es alto o bajo. Pero la mayoría de las veces, queremos mostrar el contenido de una variable. Lo hacemos asignando a esa variable un número de pin virtual y, a partir de ese momento, la aplicación Blynk hará referencia a esa variable por su número de pin virtual. Entonces, en mi software, verá un lugar donde asigné la temperatura en Fahrenheit al pin virtual V3.

Otra idea de Blynk que vale la pena mencionar rápidamente es el intervalo de actualización que dejamos en el modo Push. Eso significa que el boceto de Arduino está expulsando los datos, en nuestro caso actualizando la temperatura, la humedad y la presión barométrica una vez por minuto. Pero Blynk también admite un método Pull, donde la aplicación Blynk establece el intervalo e interroga al hardware en busca de nuevos datos.

Así que ahora terminemos de mostrar nuestra estación meteorológica en Blynk. Necesitará dos pantallas de valores etiquetados más, una para la humedad en% (pin virtual V4) y otra para la presión en "pulg. HG" o pulgadas de mercurio (pin virtual V5). Para que se parezca al mío, querrás humedad en oro y presión en rojo. Para la humedad, mostré un lugar después del punto decimal; para la presión, mostré dos lugares después del punto decimal.

Si ahora tiene las tres pantallas de valores etiquetados que muestran la temperatura, la humedad y la presión barométrica, puede agregar el gráfico de las tres. Esto se logra con la adición de un widget SuperChart. Primero, estírelo hacia abajo para que ocupe el resto de la pantalla. Luego haga clic en él para configurar. Activé Mostrar valores del eje x y elegí las resoluciones en vivo, 1 hora, 6 horas, 1 día, 1 semana, 1 mes. y 3 meses. Necesitamos tres fuentes de datos, una para cada una de nuestras 3 variables. Para configurar cada flujo de datos, haga clic en el icono a la derecha. Necesitamos seleccionar nuevamente el pin virtual para cada uno. Para la escala del eje y, elija la altura. Luego, para la temperatura, establezca la altura en 67 - 100. Para la humedad, establezca la altura en 34 - 66. Para la presión, establezca la altura en 0 - 33. Establezca los colores para que coincidan con los valores etiquetados. Encienda Mostrar eje Y. Eso es todo. Sal del modo de edición y la pantalla de tu teléfono debería verse como la mía. El gráfico tarda un poco en empezar. Para obtener resultados rápidos, vea en vivo o con una resolución de 1 hora.

Una característica más de Blynk que quizás desee conocer es compartir su proyecto Blynk terminado con otros teléfonos inteligentes, de modo que más de un teléfono pueda ver la estación meteorológica. Para comenzar a compartir, ponga su proyecto en modo de edición y haga clic en el ícono de la parte superior central para Configuración del proyecto. Active Compartir y luego genere un enlace. Le dará un código QR que puede enviar por correo electrónico o compartir. El nuevo usuario necesita la aplicación Blynk pero no una cuenta en Blynk. La aplicación de un usuario no registrado tiene un enlace para cargar el código QR del proyecto Blynk de otra persona. Eso es.

Esta ha sido una introducción bastante limitada a Blynk, pero debería ser un buen punto de partida. Mencioné anteriormente que Blynk es gratis, bueno, casi lo es. Tanto los widgets como el uso compartido utilizan puntos que Blynk llama energía. Creo que obtienes 2500 puntos gratis para empezar. Eso es más que suficiente para hacer este proyecto gratis. Pero compartirlo o agregarlo puede hacer que te quedes sin energía Blynk. Gasté $ 6 para obtener 5000 puntos adicionales. Es posible que deba gastar algunos dólares en combustible Blynk si comienza a realizar otros proyectos con Blynk.

Código

  • Pequeña estación meteorológica de Internet
Pequeña estación meteorológica de Internet Arduino
Con WiFi y Blynk a Smartphone
 / * Este boceto es para el Arduino Nano 33 IoTIt utiliza una placa de sensor BME280 Utiliza una pantalla OLED de 0,96 pulgadas 128 x 64 Se conecta a través de WiFi al servidor en la nube de Blynk para mostrar datos meteorológicos en un smartphone * / # include  #include  #include  // BME280 library # include  // utilizado para convertir números meteorológicos en cadenas para mostrar en OLED # include  // biblioteca OLED // Se requieren las siguientes dos inclusiones para que Nano 33 IoT funcione con Blynk # include  #include  char auth [] ="YourBlynkProjectCode"; char ssid [ ] ="YourWifiID"; char pass [] ="YourWiFiPassword"; Adafruit_BME280 bme; // usa I2C interfaceAdafruit_Sensor * bme_temp =bme.getTemperatureSensor (); Adafruit_Sensor * bme_pressure =bme.getPressureSensor (); Adafruit_Sensor * bme_humidity =bme.getHumiditySensor (); # define SDA_PIN 5 # define RESETIN_PIN # define SCL_PIN -1 # define FLIP180 0 # define INVERT 0 # define USE_HW_I2C 0 # define MY_OLED OLED_128x64 # define OLED_WIDTH 128 # define OLED_HEIGHT 64SSOLED ssoled; // instancia del temporizador OLEDBlynkTimer; // instancia de Blynk timervoid setup () {if (! bme.begin (0x76)) {// esperar hasta que se detecte el sensor while (1) delay (10); } bme_temp-> printSensorDetails (); bme_pressure-> printSensorDetails (); bme_humidity-> printSensorDetails (); oledInit (&ssoled, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 400000L); oledFill (&ssoled, 0x0, 1); Blynk.begin (auth, ssid, pass); // comenta esta línea para operar la estación meteorológica sin Blynk timer.setInterval (60000L, myupdate); // ejecuta myupdate una vez por minuto myupdate (); // ejecuta una actualización inicial de la pantalla y los datos en Blynk porque el bucle principal espera un minuto} void loop () {Blynk.run (); // Blynk prefiere ejecutarse solo en el bucle principal. timer.run (); // Todo lo demás se maneja a través del temporizador Blynk} // el temporizador Blynk llama a esta rutina para actualizar tanto la pantalla OLED como enviar datos a Blynkvoid myupdate () {sensor_event_t temp_event, pressure_event, humedad_event; bme_temp-> getEvent (&temp_event); bme_pressure-> getEvent (&pressure_event); bme_humidity-> getEvent (&humedad_evento); float ctemp =temp_event.temperature; // obtiene la temperatura en centígrados float ftemp =32 + (9 * ctemp) / 5; // convierte la temperatura en fahrenheit float hum =idity_event.relative_humidity; // obtener la humedad relativa float ppress =pressure_event.pressure; // obtener la presión en mm float mpress =1.3 + ppress / 33.8939; // Convierta a pulgadas Hg y agregue 1.3 para igualar la presión barométrica // real reportada localmente. Es posible que desee eliminar el 1.3 y / o agregar su propio ajuste. char mytemp [8]; dtostrf (ftemp, 6, 2, mytemp); // convierte temp en una cadena char myhum [8]; dtostrf (zumbido, 6, 2, myhum); // convierte la humedad en una cadena char mypress [8]; dtostrf (mpress, 6, 2, mypress); // convierte la presión en una cadena // actualiza la pantalla OLED oledWriteString (&ssoled, 0,2,1, (char *) "Estación meteorológica", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,3, (char *) "Temp =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,3, (char *) mytemp, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,3, (char *) "F", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,5, (char *) "Húmedo =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,5, (char *) myhum, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,5, (char *) "%", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,2,7, (char *) "Presione =", FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,50,7, (char *) mypress, FONT_NORMAL, 0, 1); oledWriteString (&ssoled, 0,105,7, (char *) "in", FONT_NORMAL, 0, 1); // enviar nuevos datos meteorológicos a Blynk Blynk.virtualWrite (V3, ftemp); Blynk.virtualWrite (V4, zumbido); Blynk.virtualWrite (V5, mpress); } 

Esquemas


Proceso de manufactura

  1. Circuito integrado
  2. Estación meteorológica basada en Raspberry Pi
  3. Estación meteorológica Raspberry Pi 2
  4. Estación meteorológica Raspberry Pi
  5. Únase al IOT con su estación meteorológica - CWOP
  6. Weather Station V 2.0
  7. Model Rail Digital DCC Command Station Arduino y aplicación gratuita
  8. 6-Shooter:Arduino Drink Mixing Station
  9. MotionSense
  10. Registrador de datos de globos meteorológicos con tecnología Arduino
  11. ArduFarmBot - Parte 2:Estación remota e implementación de IoT