Indholdsfortegnelse:

Sodial Dust Sensor på Android: 6 trin
Sodial Dust Sensor på Android: 6 trin

Video: Sodial Dust Sensor på Android: 6 trin

Video: Sodial Dust Sensor på Android: 6 trin
Video: LDR Sensor | LDR Project | LDR Sensor Project | LDR Working Principle | Light Dependent Resistor | 2024, Juli
Anonim
Sodial støv sensor på Android
Sodial støv sensor på Android

For et år siden havde en af mine venner en weekendworkshop om miljøovervågning. Målet med workshoppen var at opbygge en støvføler, der er forbundet til et hindbær -pi -kort, til at lægge måledata på en server, der leverede ofte opdaterede støvkoncentrationskort. Min ven spurgte, om der er en måde at få sensordataene direkte på sin smartphone til overvågning og logning. Så jeg gravede internettet til et datablad og så, at sensoren havde en simpel UART -grænseflade med 9600Baud 8N1 -protokol. Men hvordan tilslutter man en UART til en smartphone? Det er let. Jeg skulle bare bruge et af de allestedsnærværende små Bluetooth -moduler, der giver en emuleret komport på Android. Se nu hvordan jeg lavede det.

Trin 1: Hvad du har brug for

Hvad du har brug for
Hvad du har brug for
Hvad du har brug for
Hvad du har brug for

Du har brug for følgende dele

  • Et parringsstik JST XH 7-ben til Sodial-interface med ledninger. Jeg købte min på Ebay.
  • Et Bluetooth -modul HC05 eller 06 kompatibelt med UART -stik
  • En USB-seriel konverter med TTL-niveau-interface. Vi bruger dette til at give BT-modulet et unikt navn
  • Sodial SDS011 støvsensor. Jeg fik min fra Ebay
  • et stykke veroboard
  • USB-B stik
  • tråd
  • Et stykke træ til at montere alt på

Så skal du bruge nogle enkle værktøjer:

  • En pengesav til at skære træet
  • pincet
  • loddejern og lodde
  • trådskærer
  • Varm limpistol
  • Et stykke 8 mm silicium ærme (ikke på billedet)

Du kan downloade Sodial SDS011 datablad her Sodial SDS011 datablad

Trin 2: Forberedelse af Bluetooth -modulet

Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet
Forberedelse af Bluetooth -modulet

BT-modulet har en UART-grænseflade med TTL-niveau. Det kan omkonfigureres med "AT" -kommandoer, som vi gjorde med internetmodemer tilbage i oldtiden. For at tilslutte det til et terminalprogram på din maskine skal du tilpasse UART til din computer. Jeg brugte en USB-RS232-konverter, jeg købte hos Amazon. Jeg anbragte et stik til BT-modulet og dirigerede 3, 3V strømforsyningen og GND fra konverteren til BT-modulet. Derefter forbandt jeg de respektive TxD- og RxD -linjer i crossover. TxD fra USB-konverter til RxD fra BT-modul og omvendt.

Jeg har en linux -maskine og brugte cutecom. Efter tilslutning af USB-konverteren var komporten "ttyUSB0". Du kan finde komportnavnene i "/dev" -mappen på din linux -maskine. For Windows -brugere vil jeg anbefale "hterm". Det er let at betjene. Skriv "AT", og du skal få "AT" som svar. Skriv derefter "AT+NameSensor" for at give BT-modulet navnet "Sensor"

Trin 3: Montering af delene

Montering af delene
Montering af delene
Montering af delene
Montering af delene
Montering af delene
Montering af delene
Montering af delene
Montering af delene

Skær et stykke træ i en størrelse, der er egnet til at tage alle delene. Tilslut alle signaler som vist i skematisk. Det er en god idé at lægge et siliciumhylster om ledningerne for at beskytte dem. Lodde USB-B-stikket på perfboardet. Det bruges bare til strømforsyningen. Fastgør alle dele med skruer på træbunden. Til sidst limes kablerne fast for at fastgøre dem på træet.

Trin 4: Parring

Parring
Parring
Parring
Parring

Tænd sensorapplikationen ved at tilslutte en USB-strømforsyning. En rød LED på BT-modulet begynder at blinke. Prøv ikke at parre det med din Android -smartphone. Du skal indtaste en pinkode. Dette er "1234". Efter indtastning af koden skal din smartphone parres med BT-modulet.

Trin 5: Softwaren

Jeg kan godt lide at skrive Android -apps på selve målplatformen. det sparer dig for alt det emulering, du skal bekymre dig om, hvis du arbejder med Android Studio. Jeg fandt ud af tre egnede udviklingsværktøjer på selve Android

  • Mintoris Basic. En grundlæggende tolk med et stort sæt kommandoer til at pille rundt med næsten alt på Android. Du kan oprette genveje til dine apps. Mintoris basic indeholder ikke en compiler. Så du skal have installeret Mintoris på hver enhed, du bruger. Men du skal kun betale for det én gang (ca. 7 €)
  • Grundlæggende! Ekstremt god Grundlæggende tolk og kompilator (tilføjelse til nogle €). Næsten hooks på alt i Android, og du kan kompilere rigtige apps til at distribuere dem uden at have Basic! på målenheden. Desværre grundlæggende! mangler de fremragende diagramdiagramfunktioner i Mintoris
  • AIDE er en semi -professionel IDE til at lave Android -udvikling i Java på Android. Med AIDE har du den største fleksibilitet, men du skal lære java. AIDE har årlige omkostninger på omkring 50 €

Jeg valgte Mintoris. I dette afsnit giver jeg dig ikke en tutorial om programmering i Mintoris, men en kort beskrivelse af funktionsblokkene

I den følgende del deklareres tre arrays for de to sensordatalinjer og de respektive tidsstempler. Tidsstempeldataene bruges til mærkning af diagrammet x-akse. Sodial udsender to datastrømme, der hver er specificeret for en særlig partikelstørrelse. De to dustdata-arrays tager disse værdier.

WakeLock delvis

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Tekststørrelse 24

CLS

Popup "støvfølermåler (c) ARJ 2017"

Globalt dustData (), dustDataF (), timeStamp () Globalt indeks, valg, maxData, filnavn $

Dim timeStamp (59)

Dim støv Data (59)

Dim støv DataF (59)

Dim Menu $ (4) = "maks. 100 datasæt", "maks. 1000 datasæt", "maks. 5000 datasæt", "maks. 10000 datasæt", "Afslut"

'Start arrays

For i = 0 til 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Næste i

Derefter er en Liste -menu konfigureret. Dette giver brugeren et valg om at vælge den maksimale størrelse af data, der skal indsamles. Dette er blot en sikkerhedsafbryder for at forhindre smartphonen i at suge uendelige data til sig. Funktionerne BTgetPaired $ () giver en liste tilbage med alle parrede enheder på Android-enheden, deres navne og BT-adresse.

L ist Menu $ (), valg

'Vælg maksimal mængde, hvis data skal gemmes

runLevel = 1

Vælg valg

Case 0 maxData = 100

Sag 1 maxDate = 1000

Case 2 maxData = 5000

Case 3 maxData = 10000

Case 4 maxData = 0

Afslut Vælg

'' Tilslut sensor

dæmpet par $ (0)

par $ () = BTGetPaired $ ()

Hvis par $ (0) = "none" Så

Udskriv "Ingen parrede enheder fundet. Er BT tændt?" Udskriv "Program afsluttet"

Ende

Afslut Hvis

Listepar $ (), enhed $

navn $ = ItemExtract $ (enhed $, 0)

adresse $ = ItemExtract $ (enhed $, 1)

BTilslut 1, adresse $

'Vent på forbindelsen

Fremskridt TIL

Udskriv "Forsøger at oprette forbindelse til"; adresse $

For i = 1 til 20

Fremskridt i/2

Hvis BTGetstate (1) = 4 Afslut derefter vent 1000

Næste i

Fremskridt OFF

'Tilslut forbindelsen til BT -enheden efter succes

Hvis BTGetState (1) = 4 Print derefter "Tilsluttet" Ellers print "Kunne ikke oprette forbindelse til"; navngiv $

Udskriv "Program afsluttet"

Ende

Afslut Hvis

Den næste blok viser datakravet. For hver datasession åbnes en fil automatisk og navngives efter tidspunkt og dato. Derefter læser sløjfen sensordataene. Dataene er pakket i flere bytes. Et sæt bytes identificeres med to ASCII-tegn 170 og 171. Følgende data omorganiseres og fyldes i støv-arrays

Grafik til

'Åbn datafil for at skrive

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

Åbn 1, filnavn $, "w+" Udskriv "Åbnet datafil"; filnavn $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Fyld array med de målte data

data $ = "" pakke $ = ""

indeks = 0

Gør While maxData> 0

BTRead 1, pakke $, 10

data $ = data $+pakke $

Hvis Len (data $)> = 10 Så

Hvis (ASCII (Venstre $ (data $, 1)) = 170) & (ASCII (Højre $ (data $, 1)) = 171) Så

dustDataF (index) = ASCII (Mid $ (data $, 2, 1))

dustDataF (index) = (dustDataF (index)+256*ASCII (Mid $ (data $, 3, 1))))/10

dustData (index) = ASCII (Mid $ (data $, 4, 1))

dustData (index) = (dustData (index)+256*ASCII (Mid $ (data $, 5, 1))))/10

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

data $ = ""

maxData = maxData-1

indeks = indeks+1

Hvis indeks> 59 Så indeks = 0

dustData (indeks) = 0

dustDataF (indeks) = 0

Afslut Hvis

Afslut Hvis

DrawGraph ()

Vent 100

Sløjfe

Luk 1

Grafik slukket

CLS Udskriv "Program afsluttet"

Ende

Den sidste del er en underprogram, der kaldes efter hver datamodtagelse. Det rydder skærmen, tegner diagrammet igen med de faktiske data, der er gemt i støv- og tidsstempelarrays.

'Tegn koordinaterne, etiketterne, flåter og også datakurverne

Sub DrawGraph ()

'I grafiktilstand slettes skærmen til den aktuelle farve

Farve 0, 0, 0

CLS

Farve 0, 0, 100

'Indstil den grafiske farve, der skal bruges til at tegne gitterlinjerne

TextColor 100, 100, 100, 50

'TextColor er farven på gitterets hovedtitel

TextColorA 100, 100, 100

'TextColorA bruges til aksetitler og gitterkommentarer.

'Indstil størrelsen på aksetitelteksten

'Gitterets hovedtitel er 2x denne størrelse

Tekststørrelse 20

FixDecimal 0

'Indstillet til at vise 2 decimaler

PadDigits 2

'Tegn et gitter til grafen' Indstil område og titel for X & Y

Axis AxisX 0, 59, "Time/s"

Akse Y 0, 10000, "ug/m3"

Grid 3, "Støvkoncentration"

'Tegn støvgrafer

Farve 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Farve 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

Vend tilbage

Download kildekoden her

Trin 6: Test

Image
Image
Prøve
Prøve
Prøve
Prøve
Prøve
Prøve

Tænd sensoren, og start appen. Vælg en med navnet "Sensor" på listen over parrede enheder. Efter tilslutning af sensoren begynder skærmen at vise dataene. Samtidig tildeles datafilen. Efter afslutning af mode kan du bruge GnuPlot til at vise dataene. Brug filen "Test.gp" i GnuPlot til at konfigurere GnuPlot til visning af en datafil med navnet "Test.dat". Du kan også finde det her

Se videoen for flere detaljer og test. Hav en masse sjov og flere ideer!

Anbefalede: