Taula de continguts:
- Pas 1: el que necessiteu
- Pas 2: Preparació del mòdul Bluetooth
- Pas 3: muntatge de les peces
- Pas 4: emparellament
- Pas 5: el programari
- Pas 6: prova
Vídeo: Sensor de pols de sodi a Android: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Fa un any, un amic meu tenia un taller de cap de setmana sobre vigilància ambiental. L'objectiu del taller era construir un sensor de pols connectat a una placa de gerds pi per posar dades de mesura en algun servidor que proporcionés mapes de concentració de pols actualitzats amb freqüència. El meu amic em va preguntar si hi ha una manera d’obtenir les dades del sensor directament al seu telèfon intel·ligent per supervisar-les i registrar-les. Així que vaig buscar a Internet un full de dades i vaig veure que el sensor tenia una interfície UART senzilla amb protocol 9600Baud 8N1. Però, com connectar un UART a un telèfon intel·ligent? Bé, això és fàcil. Simplement havia d’utilitzar un d’aquests petits mòduls Bluetooth omnipresents que ofereixen un comportament emulat a Android. Ara veieu com ho he aconseguit.
Pas 1: el que necessiteu
Necessiteu les següents parts
- Un connector d’acoblament JST XH de 7 pins per a la interfície Sodial amb cables. Vaig comprar la meva a Ebay.
- Un mòdul Bluetooth HC05 o 06 compatible amb connector UART
- Un convertidor de sèrie USB amb interfície de nivell TTL. Ho fem servir per donar al mòdul BT un nom únic
- Sensor de pols Sodial SDS011. Tinc el meu d’Ebay
- un tros de veroboard
- Connector USB-B
- filferro
- Un tros de fusta per muntar-ho tot
A continuació, necessitareu algunes eines senzilles:
- Una motoserra per tallar la fusta
- pinces
- soldar ferro i soldar
- tallador de filferro
- Pistola de cola calenta
- Un tros de màniga de silici de 8 mm (no apareix a la imatge)
Podeu descarregar el full de dades Sodial SDS011 aquí Full de dades Sodial SDS011
Pas 2: Preparació del mòdul Bluetooth
El mòdul BT té una interfície UART amb nivell TTL. Es pot reconfigurar amb ordres "AT" com ho fèiem amb els mòdems d'Internet de l'antiguitat. Per connectar-lo a un programa terminal de la vostra màquina, heu d’adaptar l’UART al vostre ordinador. He utilitzat un convertidor USB-RS232 que he comprat a Amazon. He aplicat un connector per al mòdul BT i he encaminat la font d'alimentació de 3, 3V i GND des del convertidor al mòdul BT. Després vaig connectar les respectives línies TxD i RxD en crossover. TxD des del convertidor USB a RxD des del mòdul BT i viceversa.
Tinc una màquina Linux i he utilitzat Cutecom. Després de connectar el convertidor USB, el comportament era "ttyUSB0". Podeu trobar els noms de comportament al directori "/ dev" de la vostra màquina Linux. Per als usuaris de Windows recomanaria "hterm". És fàcil d'utilitzar. Escriviu "AT" i hauríeu d'obtenir "AT" com a resposta. A continuació, escriviu "AT + NameSensor" per donar al mòdul BT el nom de "Sensor".
Pas 3: muntatge de les peces
Talleu un tros de fusta en una mida adequada per agafar totes les parts. Connecteu tots els senyals tal com s’indica a l’esquema. És una bona idea posar una funda de silici al voltant dels cables per protegir-los. Soldeu el connector USB-B del perfboard. S'utilitza només per a la font d'alimentació. Fixeu totes les peces amb cargols a la base de fusta. Finalment, enganxeu els cables per fixar-los a la fusta.
Pas 4: emparellament
Alimenteu l'aplicació del sensor endollant una font d'alimentació USB. Un LED vermell al mòdul BT començarà a parpellejar. No intenteu aparellar-lo amb el vostre telèfon intel·ligent Android. Heu d'introduir un codi PIN. Això és "1234". Després d’introduir el codi, el vostre telèfon intel·ligent hauria d’estar emparellat amb el mòdul BT.
Pas 5: el programari
M'agrada escriure aplicacions d'Android a la mateixa plataforma de destinació. us estalvia de totes aquelles coses d’emulació que us han de preocupar si esteu treballant amb Android Studio. Vaig trobar tres eines de desenvolupament adequades al propi Android
- Mintoris Basic. Un intèrpret bàsic amb un ric conjunt d’ordres per jugar amb gairebé tot el que hi ha a Android. Podeu crear dreceres per a les vostres aplicacions. Mintoris basic no conté cap compilador. Per tant, heu d’haver instal·lat Mintoris a tots els dispositius que utilitzeu. Però només s’ha de pagar una vegada (uns 7 €)
- Bàsic! Excel·lent intèrpret i compilador bàsic (complement per uns €). Gairebé es connecta a tot el que hi ha a Android i podeu compilar aplicacions reals per distribuir-les sense tenir Basic. al dispositiu de destinació. Lamentablement bàsic. no té les excel·lents funcions de diagrama de diagrames de Mintoris
- AIDE és un IDE semi professional per desenvolupar Android en Java a Android. Amb AIDE teniu la màxima flexibilitat, però heu d’aprendre java. AIDE té uns costos anuals d’uns 50 €
Vaig triar Mintoris. En aquesta secció no us donaré un tutorial de programació a Mintoris, sinó una breu descripció dels blocs de funcions
A la part següent es declaren tres matrius per a les dues línies de dades del sensor i les marques de temps respectives. Les dades de marca de temps s’utilitzen per etiquetar l’eix x del diagrama. El Sodial emet dos fluxos de dades especificats cadascun per a una mida de partícula especial. Les dues matrius de dades de pols prenen aquests valors.
WakeLock Parcial
TextColor 100, 75, 10
TextColorA 50, 50, 50
TextAlign 0
Mida del text 24
CLS
Popup "Mesurador del sensor de pols (c) ARJ 2017"
Global dustData (), dustDataF (), timeStamp () Índex global, elecció, maxData, fileName $
Segell de temps feble (59)
Disminueix la pols (59)
Dim dustDataF (59)
Redueix el menú $ (4) = "100 conjunts de dades màx.", "1.000 conjunts de dades màx.", "5000 conjunts de dades màx.", "10000 conjunts de dades màx.", "Surt"
'Inicieu les matrius
Per a i = 0 a 59
dustData (i) = 0
dustDataF (i) = 0
timeStamp (i) = i
Següent i
A continuació, es configura un menú Llista. D’aquesta manera, l’usuari pot escollir la mida màxima de dades que recopilarà. Aquest és només un interruptor de seguretat per evitar que el telèfon intel·ligent absorbeixi dades interminables. Les funcions BTgetPaired $ () retornen una llista amb tots els dispositius aparellats al dispositiu Android, els seus noms i l'adreça BT.
Menú L $ $ (), elecció
Seleccioneu la quantitat màxima si voleu emmagatzemar les dades
runLevel = 1
Seleccioneu l'opció
Cas 0 màxDades = 100
Cas màxim Data màxima = 1000
Cas 2 màxDades = 5000
Cas 3 màxDades = 10000
Cas 4 màxDades = 0
Selecció final
»Connecteu el sensor
parell feble $ (0)
pair $ () = BTGetPaired $ ()
Si el parell $ (0) = "cap", llavors
Imprimiu "No s'ha trobat cap dispositiu vinculat. El BT està activat?" Imprimeix "Programa finalitzat"
Final
Endif
Llista el parell $ (), el dispositiu $
name $ = ItemExtract $ (dispositiu $, 0)
adreça $ = ItemExtract $ (dispositiu $, 1)
BTConnect 1, adreça $
Espereu la connexió
Avanç en marxa
Imprimiu "Intentant connectar-vos a"; adreça $
Per a i = 1 a 20
Progress i / 2
Si BTGetstate (1) = 4, sortiu per esperar 1000
Següent i
Progrés DESACTIVAT
En cas d'èxit, connecteu-vos al dispositiu BT
Si BTGetState (1) = 4, llavors "Imprimeix" Connectat "Imprimeix" No s'ha pogut connectar a "; nom $
Imprimeix "Programa finalitzat"
Final
Endif
El bloc següent mostra l’adquisició de dades. Per a cada sessió de dades, un fitxer s'obre automàticament i s'anomena segons data i hora. A continuació, el bucle està llegint les dades del sensor. Les dades estan empaquetades en diversos bytes. Un conjunt de bytes s’identifica amb dos caràcters ASCII 170 i 171. Les dades següents es reorganitzen i s’omplen a les matrius de pols
Gràfics activats
'Obriu un fitxer de dades per escriure
fileName $ = FormatTime $ (t, "aaaa-MM-dd-kk-mm-ss") + ".dat"
Obre 1, fileName $, "w +" Imprimeix "Opened datafile"; fileName $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")
Writeln 1, "Time Dust2.5 Dust10"
'Empleneu la matriu amb les dades mesurades
dades $ = "" paquet $ = ""
índex = 0
Feu Mentre maxData> 0
BTRead 1, paquet $, 10
dades $ = dades $ + paquet $
Si Len (dades $)> = 10 Aleshores
Si (ASCII (esquerra $ (dades $, 1)) = 170) i (ASCII (dreta $ (dades $, 1)) = 171) Llavors
dustDataF (índex) = ASCII ($ mig (dades $, 2, 1))
dustDataF (índex) = (dustDataF (índex) + 256 * ASCII ($ mig (dades $, 3, 1))) / 10
dustData (índex) = ASCII ($ mig (dades $, 4, 1))
dustData (índex) = (dustData (índex) + 256 * ASCII ($ mig (dades $, 5, 1))) / 10
Writeln 1, FormatTime $ (Time (), "kk: mm: ss") + "" + Str $ (dustDataF (index)) + "" + Str $ (dustData (index))
dades $ = ""
maxData = maxData-1
índex = índex + 1
Si índex> 59, llavors índex = 0
dustData (índex) = 0
dustDataF (índex) = 0
Endif
Endif
DrawGraph ()
Espereu 100
Bucle
Tanca 1
Gràfics desactivats
Impressió CLS "Programa finalitzat"
Final
L'última part és una subrutina que es diu després de cada recepció de dades. Esborra la pantalla, torna a dibuixar el diagrama amb les dades reals emmagatzemades a les matrius de pols i marca de temps.
'Dibuixeu les coordenades, les etiquetes, les paparres i també les corbes de dades
Sub DrawGraph ()
En mode de gràfics, la pantalla s'esborra al color actual
Color 0, 0, 0
CLS
Color 0, 0, 100
'Establiu el color gràfic que s'utilitzarà per dibuixar les línies de la quadrícula
TextColor 100, 100, 100, 50
'TextColor és el color del títol principal de la quadrícula
TextColorA 100, 100, 100
'TextColorA s'utilitza per als títols de l'Eix i les anotacions de quadrícula.
'Estableix la mida del text del títol de l'eix
El títol principal de la quadrícula és dues vegades més gran que aquesta mida
Mida del text 20
FixDecimal 0
Estableix per mostrar 2 xifres decimals
PadDigits 2
"Dibuixa una quadrícula per al gràfic" Estableix l'interval i el títol de l'X & Y
Eix AxisX 0, 59, "Temps / s"
Eix Y 0, 10000, "ug / m3"
Graella 3, "Concentració de pols"
'Dibuixa gràfics de pols
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
Torna
Baixeu-vos el codi font aquí
Pas 6: prova
Enceneu el sensor i inicieu l'aplicació. A la llista de dispositius emparellats, trieu el que es digui "Sensor". Després de connectar el sensor, la pantalla començarà a mostrar les dades. Simultàniament s'assigna el fitxer de dades. Després d'acabar la moda, podeu utilitzar GnuPlot per mostrar les dades. Utilitzeu el fitxer "Test.gp" a GnuPlot per configurar GnuPlot per mostrar un fitxer de dades anomenat "Test.dat". També podeu trobar-lo aquí
Vegeu el vídeo per obtenir més detalls i proves. Diverteix-te molt i més idees!
Recomanat:
Visuino Com s'utilitza la modulació d'ample de pols (PWM) per canviar la brillantor d'un LED: 7 passos
Visuino Com utilitzar la modulació d’amplada de pols (PWM) per canviar la brillantor d’un LED: en aquest tutorial utilitzarem un LED connectat a Arduino UNO i Visuino per canviar la seva brillantor mitjançant la modulació d’amplada de pols (PWM). Vegeu un vídeo de demostració
Oxímetre de pols Arduino: 35 passos (amb imatges)
Oxímetre de pols Arduino: els oxímetres de pols són instruments estàndard per a configuracions hospitalàries. Utilitzant les absorbàncies relatives de l’hemoglobina oxigenada i desoxigenada, aquests dispositius determinen el percentatge de sang d’un pacient que transporta oxigen (un rang saludable és de 94-9
Sensor de pols usable: 10 passos (amb imatges)
Sensor de pols Wearable: Descripció del projecte Aquest projecte tracta de dissenyar i crear un dispositiu portable que tingui en compte la salut de l'usuari que el portarà. El seu objectiu és actuar com un exoesquelet que té com a funció relaxar i calmar l'usuari durant un
Làmpada LED del sensor de pols: 4 passos
Làmpada LED del sensor de pols: quan una persona va a dormir, la freqüència cardíaca disminueix un 8%. Per tant, la nostra làmpada proporcionarà una llum brillant quan l’usuari es vagi a dormir i, a mesura que disminueixi el pols, la brillantor de la làmpada s’esvairà fins que s’apagui quan l’usuari dormi. Una tira LED
Sensor de pols de Sant Valentí: 5 passos
Sensor de pols de Sant Valentí: basant-me en el treball dels altres, vaig crear aquest petit dispositiu per mesurar la freqüència cardíaca. Ara sabia que era convenient anar a fer forma de cor a partir de LEDs i així ho vaig fer. Al no tenir cap plantilla, era bastant despistat. Una mica d'experimentació va portar