Tabla de contenido:
- Paso 1: lo que necesita
- Paso 2: preparación del módulo Bluetooth
- Paso 3: Montaje de las piezas
- Paso 4: emparejamiento
- Paso 5: el software
- Paso 6: prueba
Video: Sodial Dust Sensor en Android: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
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
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
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
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
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
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:
Sensor de respiración de bricolaje con Arduino (sensor de estiramiento de punto conductor): 7 pasos (con imágenes)
Sensor de respiración de bricolaje con Arduino (sensor de estiramiento de punto conductor): este sensor de bricolaje tomará la forma de un sensor de estiramiento de punto conductor. Se envolverá alrededor de su pecho / estómago, y cuando su pecho / estómago se expanda y se contraiga, también lo hará el sensor y, en consecuencia, los datos de entrada que se alimentan al Arduino. Entonces
Cómo crear una aplicación de Android con Android Studio: 8 pasos (con imágenes)
Cómo crear una aplicación de Android con Android Studio: este tutorial le enseñará los conceptos básicos de cómo crear una aplicación de Android utilizando el entorno de desarrollo de Android Studio. A medida que los dispositivos Android se vuelven cada vez más comunes, la demanda de nuevas aplicaciones solo aumentará. Android Studio es fácil de usar (un
Sensor de temperatura y humedad alimentado por energía solar Arduino como sensor Oregon de 433 mhz: 6 pasos
Sensor de temperatura y humedad alimentado por energía solar Arduino como sensor Oregon de 433 mhz: esta es la construcción de un sensor de temperatura y humedad alimentado por energía solar.El sensor emula un sensor Oregon de 433 mhz y es visible en la puerta de enlace Telldus Net.Lo que necesita: 1x " 10-LED Sensor de movimiento de energía solar " de Ebay. Asegúrate de que diga batería de 3,7 voltios
Sensor magnético RaspberryPi 3 con mini sensor Reed: 6 pasos
Sensor de imán RaspberryPi 3 con mini sensor de lengüeta: en este Instructable, crearemos un sensor de imán de IoT usando un RaspberryPi 3. El sensor consta de un LED y un zumbador, los cuales se encienden cuando un imán es detectado por el mini sensor de lengüeta
The Dust Ruffler (Sumo Bot): 4 pasos
The Dust Ruffler (Sumo Bot): lista de herramientas y materiales Las herramientas y los materiales utilizados para construir el Dust Ruffler son muy sencillos y fáciles de adquirir. Electrónica: paquete de baterías, servos de alto par de rotación continua (x3), receptor y control remoto. Lámina de 3x2 'de núcleo de espuma x-a