Tabla de contenido:

Sodial Dust Sensor en Android: 6 pasos
Sodial Dust Sensor en Android: 6 pasos

Video: Sodial Dust Sensor en Android: 6 pasos

Video: Sodial Dust Sensor en Android: 6 pasos
Video: Как легко идеально наклеить защитное стекло (ДАЖЕ РЕБЕНКУ) 2024, Mes de julio
Anonim
Sensor de polvo de sodio en Android
Sensor de polvo de sodio en Android

Hace un año, un amigo mío tuvo un taller de fin de semana sobre monitoreo ambiental. El objetivo del taller era construir un sensor de polvo conectado a una placa Raspberry Pi para colocar los datos de medición en un servidor que proporcionaba mapas de concentración de polvo que se actualizaban con frecuencia. Mi amigo preguntó si había una manera de obtener los datos del sensor directamente en su teléfono inteligente para monitorearlos y registrarlos. Así que busqué en Internet una hoja de datos y vi que el sensor tenía una interfaz UART simple con el protocolo 9600Baud 8N1. Pero, ¿cómo conectar un UART a un teléfono inteligente? Bueno, eso es fácil. Solo tenía que usar uno de esos pequeños módulos Bluetooth omnipresentes que proporcionan un comportamiento emulado en Android. Ahora mira cómo lo hice.

Paso 1: lo que necesita

Que necesitas
Que necesitas
Que necesitas
Que necesitas

Necesitas las siguientes partes

  • Un conector de acoplamiento JST XH de 7 pines para la interfaz Sodial con cables. Compré el mío en Ebay.
  • Un módulo Bluetooth HC05 o 06 compatible con conector UART
  • Un convertidor USB-serial con interfaz de nivel TTL. Usamos esto para darle al módulo BT un nombre único.
  • Sensor de polvo Sodial SDS011. Conseguí el mío de Ebay
  • un trozo de veroboard
  • Conector USB-B
  • cable
  • Un trozo de madera para montar todo

Entonces necesitará algunas herramientas simples:

  • Una sierra para cortar madera.
  • pinzas
  • soldar hierro y soldar
  • cortador de cables
  • Pistola de silicona
  • Un trozo de funda de silicona de 8 mm (no en la imagen)

Puede descargar la hoja de datos de Sodial SDS011 aquí Hoja de datos de Sodial SDS011

Paso 2: preparación del módulo Bluetooth

Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth
Preparación del módulo Bluetooth

El BT-Module tiene una interfaz UART con nivel TTL. Se puede reconfigurar con comandos "AT" como lo hicimos con los módems de Internet en la antigüedad. Para conectarlo a un programa de terminal en su máquina, necesita adaptar el UART a su computadora. Usé un convertidor USB-RS232 que compré en Amazon. Apliqué un conector para el módulo BT y enrute la fuente de alimentación de 3, 3 V y GND desde el convertidor al módulo BT. Luego conecté las respectivas líneas TxD y RxD en cruce. TxD del convertidor USB a RxD del módulo BT y viceversa.

Tengo una máquina Linux y usé cutecom. Después de conectar el convertidor USB, el puerto COM fue "ttyUSB0". Puede encontrar los nombres de los comport en el directorio "/ dev" de su máquina Linux. Para los usuarios de Windows, recomendaría "hterm". Es fácil de operar. Escriba "AT" y debería obtener "AT" como respuesta. Luego escriba "AT + NameSensor" para darle al módulo BT el nombre "Sensor"

Paso 3: Montaje de las piezas

Montaje de las piezas
Montaje de las piezas
Montaje de las piezas
Montaje de las piezas
Montaje de las piezas
Montaje de las piezas
Montaje de las piezas
Montaje de las piezas

Corta un trozo de madera de un tamaño adecuado para tomar todas las partes. Conecte todas las señales como se indica en el esquema. Es una buena idea colocar una funda de silicona alrededor de los cables para protegerlos. Suelde el conector USB-B en la placa de perforación. Solo se usa para la fuente de alimentación. Fije todas las piezas con tornillos en la base de madera. Finalmente pegue los cables en caliente para fijarlos a la madera.

Paso 4: emparejamiento

Emparejamiento
Emparejamiento
Emparejamiento
Emparejamiento

Encienda la aplicación del sensor enchufando una fuente de alimentación USB. Un LED rojo en el módulo BT comenzará a parpadear. No intente emparejarlo con su teléfono inteligente Android. Tienes que ingresar un código pin. Esto es "1234". Después de ingresar el código, su teléfono inteligente debe estar emparejado con el módulo BT.

Paso 5: el software

Me gusta escribir aplicaciones de Android en la propia plataforma de destino. te salva de todas esas cosas de emulación que te tienen que preocupar si estás trabajando con Android Studio. Descubrí tres herramientas de desarrollo adecuadas en el propio Android

  • Mintoris Basic. Un intérprete básico con un rico conjunto de comandos para jugar con casi todo en Android. Puede crear atajos para sus aplicaciones. Mintoris basic no contiene un compilador. Por lo tanto, debe haber instalado Mintoris en todos los dispositivos que esté utilizando. Pero solo tienes que pagarlo una vez (unos 7 €)
  • ¡Básico! Muy buen intérprete y compilador básico (complemento por unos €). ¡Casi se engancha en todo en Android y puedes compilar aplicaciones reales para distribuirlas sin tener Basic! en el dispositivo de destino. ¡Tristemente básico! carece de las excelentes funciones de gráfico de diagrama de Mintoris
  • AIDE es un IDE semiprofesional para desarrollar Android en Java en Android. Con AIDE tienes la máxima flexibilidad pero necesitas aprender Java. AIDE tiene unos costes anuales de unos 50 €

Elegí Mintoris. En esta sección no le daré un tutorial de programación en Mintoris, sino una breve descripción de los bloques de función

En la siguiente parte, se declaran tres matrices para las dos líneas de datos del sensor y las marcas de tiempo respectivas. Los datos de la marca de tiempo se utilizan para etiquetar el eje x del diagrama. El Sodial genera dos flujos de datos, cada uno especificado para un tamaño de partícula especial. Las dos matrices de datos de polvo toman estos valores.

WakeLock parcial

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Tamaño del texto 24

CLS

Ventana emergente "Medidor de sensor de polvo (c) ARJ 2017"

DustData global (), dustDataF (), timeStamp () Índice global, elección, maxData, fileName $

Dim timeStamp (59)

Dim dustData (59)

Dim dustDataF (59)

Dim Menu $ (4) = "máx. 100 conjuntos de datos", "máx. 1000 conjuntos de datos", "máx. 5000 conjuntos de datos", "máx. 10000 conjuntos de datos", "Salir"

'Inicia las matrices

Para i = 0 a 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Siguiente yo

A continuación, se configura un menú Lista. Esto le da al usuario la opción de seleccionar el tamaño máximo de datos a recopilar. Esto es solo un interruptor de seguridad para evitar que el teléfono inteligente absorba un sinfín de datos. Las funciones BTgetPaired $ () devuelven una lista con todos los dispositivos emparejados en el dispositivo Android, sus nombres y dirección BT.

L ist Menú $ (), opción

'Seleccione la cantidad máxima si los datos se almacenarán

runLevel = 1

Seleccione una opción

Caso 0 maxData = 100

Caso 1 maxDate = 1000

Caso 2 maxData = 5000

Caso 3 maxData = 10000

Caso 4 maxData = 0

Finalizar Seleccionar

'' Conectar el sensor

par tenue $ (0)

par $ () = BTGetPaired $ ()

Si el par $ (0) = "ninguno", entonces

Imprimir "No se encontraron dispositivos emparejados. ¿Está activado BT?" Imprimir "Programa terminado"

Fin

Terminara si

Lista par $ (), dispositivo $

nombre $ = ItemExtract $ (dispositivo $, 0)

dirección $ = ItemExtract $ (dispositivo $, 1)

BTConnect 1, dirección $

'Espera la conexión

Progreso EN

Imprimir "Intentando conectarse a"; dirección $

Para i = 1 a 20

Progreso i / 2

Si BTGetstate (1) = 4, salga para esperar 1000

Siguiente yo

Progreso desactivado

'En caso de éxito, conéctese al dispositivo BT

Si BTGetState (1) = 4, entonces imprima "Conectado" Else Imprimir "No se pudo conectar a"; nombre $

Imprimir "Programa terminado"

Fin

Terminara si

El siguiente bloque muestra la adquisición de datos. Para cada sesión de datos, se abre automáticamente un archivo y se le asigna el nombre de la hora y la fecha. Entonces el lazo está leyendo los datos del sensor. Los datos se empaquetan en varios bytes. Un conjunto de bytes se identifica mediante dos caracteres ASCII 170 y 171. Los siguientes datos se reorganizan y se rellenan en las matrices de polvo.

Gráficos activados

'Abrir archivo de datos para escribir

fileName $ = FormatTime $ (t, "aaaa-MM-dd-kk-mm-ss") + ".dat"

Abrir 1, fileName $, "w +" Imprimir "Archivo de datos abierto"; fileName $ Writeln 1, FormatTime $ (Time (), "aa-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Llenar matriz con los datos medidos

datos $ = "" paquete $ = ""

índice = 0

Hacer mientras maxData> 0

BTRead 1, paquete $, 10

datos $ = datos $ + paquete $

Si Len (datos $)> = 10 Entonces

Si (ASCII (Izquierda $ (datos $, 1)) = 170) & (ASCII (Derecha $ (datos $, 1)) = 171) Entonces

dustDataF (índice) = ASCII (Mid $ (datos $, 2, 1))

dustDataF (índice) = (dustDataF (índice) + 256 * ASCII (Mid $ (datos $, 3, 1))) / 10

dustData (índice) = ASCII (Mid $ (datos $, 4, 1))

dustData (índice) = (dustData (índice) + 256 * ASCII (Mid $ (datos $, 5, 1))) / 10

Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (índice)) + "" + Str $ (dustData (índice))

datos $ = ""

maxData = maxData-1

índice = índice + 1

Si índice> 59 Entonces índice = 0

dustData (índice) = 0

dustDataF (índice) = 0

Terminara si

Terminara si

DrawGraph ()

Espera 100

Círculo

Cerrar 1

Gráficos desactivados

CLS Imprimir "Programa terminado"

Fin

La última parte es una subrutina que se llama después de cada recepción de datos. Limpia la pantalla, vuelve a dibujar el diagrama con los datos reales almacenados en las matrices de marcas de tiempo y polvo.

'Dibuja las coordenadas, las etiquetas, las marcas y también las curvas de datos

Sub DrawGraph ()

'En el modo de gráficos, la pantalla se aclara con el color actual

Color 0, 0, 0

CLS

Color 0, 0, 100

'Establezca el color de los gráficos que se utilizará para dibujar las líneas de la cuadrícula

TextColor 100, 100, 100, 50

'TextColor es el color del título principal de la cuadrícula

TextColorA 100, 100, 100

'TextColorA se utiliza para títulos de ejes y anotaciones de cuadrícula.

'Establecer el tamaño del texto del título del eje

'El título principal de la cuadrícula es el doble de este tamaño

Tamaño del texto 20

FixDecimal 0

'Establecer para mostrar 2 lugares decimales

PadDigits 2

'Dibuje una cuadrícula para el gráfico' Establezca el rango y el título de X e Y

Axis AxisX 0, 59, "Tiempo / s"

AxisY 0, 10000, "ug / m3"

Cuadrícula 3, "Concentración de polvo"

'Dibujar gráficos de polvo

Color 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Color 0, 100, 0

GraphXY timeStamp (), dustData ()

TextColor 100, 0, 0

DrawText "PM2.5", 30, Int (ScreenY () - 60), 90, 1

TextColor 0, 100, 0

DrawText "PM10", 30, Int (ScreenY () - 150), 90, 1

TextColor 100, 100, 100, 50

Regreso

Descarga el código fuente aquí

Paso 6: prueba

Image
Image
Prueba
Prueba
Prueba
Prueba
Prueba
Prueba

Encienda el sensor e inicie la aplicación. De la lista de dispositivos emparejados, elija el llamado "Sensor". Después de conectar el sensor, la pantalla comenzará a mostrar los datos. Simultáneamente se asigna el archivo de datos. Después de terminar la moda, puede usar GnuPlot para mostrar los datos. Utilice el archivo "Test.gp" en GnuPlot para configurar GnuPlot para mostrar un archivo de datos llamado "Test.dat". También puedes encontrarlo aquí.

Vea el video para más detalles y pruebas. ¡Diviértete mucho y más ideas!

Recomendado: