Taula de continguts:

Sensor de pols de sodi a Android: 6 passos
Sensor de pols de sodi a Android: 6 passos

Vídeo: Sensor de pols de sodi a Android: 6 passos

Vídeo: Sensor de pols de sodi a Android: 6 passos
Vídeo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, De novembre
Anonim
Sensor de pols de sodi a Android
Sensor de pols de sodi a Android

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

Què necessites
Què necessites
Què necessites
Què necessites

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

Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
Preparació del mòdul Bluetooth
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

Muntatge de les peces
Muntatge de les peces
Muntatge de les peces
Muntatge de les peces
Muntatge de les peces
Muntatge de les peces
Muntatge de les peces
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

Emparellament
Emparellament
Emparellament
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

Image
Image
Prova
Prova
Prova
Prova
Prova
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: