Innholdsfortegnelse:

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

Video: Sodial Dust Sensor på Android: 6 trinn

Video: Sodial Dust Sensor på Android: 6 trinn
Video: Стяжка от А до Я. Ровный пол. Тонкости работы. Все этапы. 2024, Juli
Anonim
Sodial Dust Sensor på Android
Sodial Dust Sensor på Android

For et år siden hadde en venn av meg en helgworkshop om miljøovervåking. Målet med verkstedet var å bygge opp en støvsensor koblet til et bringebær -pi -brett for å sette måledata på noen servere som ga ofte oppdaterte støvkonsentrasjonskart. Vennen min spurte om det er en måte å få sensordataene direkte på smarttelefonen for overvåking og logging. Så jeg gravde internett etter et datablad og så at sensoren hadde et enkelt UART -grensesnitt med 9600Baud 8N1 -protokollen. Men hvordan koble en UART til en smarttelefon? Vel, det er lett. Jeg måtte bare bruke en av de allestedsnærværende små Bluetooth -modulene som gir en emulert komport på Android. Se nå hvordan jeg klarte det.

Trinn 1: Det du trenger

Hva trenger du
Hva trenger du
Hva trenger du
Hva trenger du

Du trenger følgende deler

  • En sammenkoblingskontakt JST XH 7-pinners for Sodial-grensesnittet med ledninger. Jeg kjøpte min på Ebay.
  • En Bluetooth -modul HC05 eller 06 kompatibel med UART -kontakt
  • En USB-seriell omformer med grensesnitt på TTL-nivå. Vi bruker dette til å gi BT-modulen et unikt navn
  • Sodial SDS011 støvsensor. Jeg fikk min fra Ebay
  • et stykke veroboard
  • USB-B-kontakt
  • metalltråd
  • Et treverk å montere alt på

Da trenger du noen enkle verktøy:

  • En motorsag for å kutte veden
  • pinsett
  • loddejern og loddetinn
  • wire cutter
  • Varm limpistol
  • Et stykke 8 mm silikonhylse (ikke på bildet)

Du kan laste ned Sodial SDS011 -databladet her Sodial SDS011 -datablad

Trinn 2: Klargjøring av Bluetooth -modulen

Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen
Forbereder Bluetooth -modulen

BT-modulen har et UART-grensesnitt med TTL-nivå. Det kan omkonfigureres med "AT" -kommandoer som vi gjorde med internettmodemer tilbake i antikken. For å koble den til et terminalprogram på maskinen må du tilpasse UART til datamaskinen. Jeg brukte en USB-RS232-omformer jeg kjøpte på Amazon. Jeg brukte en kontakt for BT-modulen og dirigerte 3, 3V strømforsyningen og GND fra omformeren til BT-modulen. Deretter koblet jeg de respektive TxD- og RxD -linjene i crossover. TxD fra USB-omformer til RxD fra BT-modul og omvendt.

Jeg har en linux -maskin og brukte cutecom. Etter tilkobling av USB-omformeren var komporten "ttyUSB0". Du finner komportnavnene i "/dev" -katalogen på din Linux -maskin. For Windows -brukere vil jeg anbefale "hterm". Den er enkel å betjene. Skriv "AT", og du bør få "AT" som svar. Skriv deretter "AT+NameSensor" for å gi BT-modulen navnet "Sensor"

Trinn 3: Montering av delene

Montering av delene
Montering av delene
Montering av delene
Montering av delene
Montering av delene
Montering av delene
Montering av delene
Montering av delene

Skjær et treverk i en størrelse som er egnet for å ta alle delene. Koble til alle signaler som angitt i skjemaet. Det er en god idé å sette et silisiumhylse rundt ledningene for å beskytte dem. Lodd USB-B-pluggen på perfboardet. Den brukes bare til strømforsyningen. Fest alle delene med skruer på trebunnen. Til slutt varm lim kablene for å fikse dem på treet.

Trinn 4: Sammenkobling

Sammenkobling
Sammenkobling
Sammenkobling
Sammenkobling

Slå på sensorprogrammet ved å koble til en USB-strømforsyning. En rød LED på BT-modulen begynner å blinke. Ikke prøv å koble den til din Android -smarttelefon. Du må skrive inn en PIN -kode. Dette er "1234". Etter at du har tastet inn koden, bør smarttelefonen din kobles til BT-modulen.

Trinn 5: Programvaren

Jeg liker å skrive Android -apper på selve målplattformen. det sparer deg for alt det emuleringene du må bry deg om hvis du jobber med Android Studio. Jeg fant ut tre passende utviklingsverktøy på selve Android

  • Mintoris Basic. En grunnleggende tolk med et rikt sett med kommandoer for å tinke rundt med nesten alt på Android. Du kan lage snarveier for appene dine. Mintoris basic inneholder ikke en kompilator. Så du må ha installert Mintoris på hver enhet du bruker. Men du trenger bare å betale for det en gang (ca 7 €)
  • Grunnleggende! Ekstremt god Grunnleggende tolk og kompilator (tillegg for noen €). Nesten kroker på alt i Android, og du kan kompilere ekte apper for å distribuere dem uten å ha Basic! på målenheten. Dessverre grunnleggende! mangler de utmerkede diagramdiagramfunksjonene til Mintoris
  • AIDE er en semi -profesjonell IDE for Android -utvikling i Java på Android. Med AIDE har du den største fleksibiliteten, men du må lære java. AIDE har årlige kostnader på omtrent 50 €

Jeg valgte Mintoris. I denne delen vil jeg ikke gi deg en opplæring i programmering i Mintoris, men en kort beskrivelse av funksjonsblokkene

I den følgende delen deklareres tre matriser for de to sensordatalinjene og de respektive tidsstemplene. Tidsstempeldataene brukes til å merke x-aksen til diagrammet. Sodial sender ut to datastrømmer hver spesifisert for en spesiell partikkelstørrelse. De to støvdata-matrisene tar disse verdiene.

WakeLock delvis

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Tekststørrelse 24

CLS

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

Global dustData (), dustDataF (), timeStamp () Global index, choice, maxData, fileName $

Dim timeStamp (59)

Dim støv Data (59)

Dim støv DataF (59)

Dimmeny $ (4) = "maks. 100 datasett", "maks. 1000 datasett", "maks. 5000 datasett", "maks. 10000 datasett", "Avslutt"

'Start oppsettene

For i = 0 til 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Neste jeg

Deretter er en Liste -meny konfigurert. Dette gir brukeren et valg om å velge maksimal størrelse på data som skal samles inn. Dette er bare en sikkerhetsbryter for å forhindre at smarttelefonen suger til seg endeløse data. Funksjonene BTgetPaired $ () gir tilbake en liste med alle sammenkoblede enheter på Android-enheten, navnene deres og BT-adressen.

L ist Meny $ (), valg

'Velg maks mengde hvis data skal lagres

runLevel = 1

Velg valg

Sak 0 maxData = 100

Sak 1 maxDate = 1000

Case 2 maxData = 5000

Case 3 maxData = 10000

Case 4 maxData = 0

Avslutt Velg

'' Koble til sensor

dim pair $ (0)

par $ () = BTGetPaired $ ()

If pair $ (0) = "none" Da

Skriv ut "Ingen sammenkoblede enheter funnet. Er BT slått på?" Skriv ut "Program avsluttet"

Slutt

Slutt om

Listepar $ (), enhet $

name $ = ItemExtract $ (enhet $, 0)

adresse $ = ItemExtract $ (enhet $, 1)

BTC Connect 1, adresse $

'Vent på tilkoblingen

Fremgang PÅ

Skriv ut "Prøver å koble til"; adresse $

For i = 1 til 20

Fremgang i/2

Hvis BTGetstate (1) = 4 Avslutt deretter vent 1000

Neste jeg

Fremgang AV

'Etter suksess koble til BT -enheten

Hvis BTGetState (1) = 4 Skriv ut "Tilkoblet" Annet utskrift "Kan ikke koble til"; navngi $

Skriv ut "Program avsluttet"

Slutt

Slutt om

Den neste blokken viser datakravet. For hver datasession åpnes en fil automatisk og navngis etter tid og dato. Deretter leser sløyfen sensordata. Dataene er pakket inn i flere byte. Et sett med byte identifiseres med to ASCII-tegn 170 og 171. Følgende data omorganiseres og fylles inn i støv-matriser

Grafikk på

'Åpne datafilen for å skrive

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

Åpne 1, filnavn $, "w+" Skriv ut "Åpnet datafil"; filnavn $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Fyll matrisen med de målte dataene

data $ = "" pakke $ = ""

indeks = 0

Gjør While maxData> 0

BTRead 1, pakke $, 10

data $ = data $+pakke $

Hvis Len (data $)> = 10 Da

Hvis (ASCII (Venstre $ (data $, 1)) = 170) & (ASCII (Høyre $ (data $, 1)) = 171) Da

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

Slutt om

Slutt om

DrawGraph ()

Vent 100

Løkke

Lukk 1

Grafikk av

CLS Skriv ut "Program avsluttet"

Slutt

Den siste delen er en subrutine som kalles etter hver datamottak. Det tømmer skjermen, tegner diagrammet med de faktiske dataene som er lagret i støv- og tidsstempelarrayene.

'Tegn koordinatene, etikettene, flåttene og også datakurvene

Sub DrawGraph ()

'I grafikkmodus sletter skjermen til gjeldende farge

Farge 0, 0, 0

CLS

Farge 0, 0, 100

'Still inn grafikkfargen som skal brukes til å tegne rutenettlinjene

TextColor 100, 100, 100, 50

'TextColor er fargen på rutenettet hovedtittel

TextColorA 100, 100, 100

'TextColorA brukes for aksetitler og rutenettkommentarer.

'Angi størrelsen på aksetittelteksten

'Hovedtittelen på rutenettet er 2x denne størrelsen

Tekststørrelse 20

FixDecimal 0

'Sett til å vise 2 desimaler

PadDigits 2

'Tegn et rutenett for grafen' Angi området og tittelen på X & Y

Axis AxisX 0, 59, "Time/s"

Akse Y 0, 10000, "ug/m3"

Rutenett 3, "Støvkonsentrasjon"

'Tegn støvgrafer

Farge 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Farge 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

Komme tilbake

Last ned kildekoden her

Trinn 6: Test

Image
Image
Test
Test
Test
Test
Test
Test

Slå på sensoren og start appen. Velg den som heter "Sensor" fra listen over sammenkoblede enheter. Etter tilkobling av sensoren begynner skjermen å vise dataene. Samtidig blir datafilen tildelt. Etter å ha fullført moten kan du bruke GnuPlot til å vise dataene. Bruk filen "Test.gp" i GnuPlot til å konfigurere GnuPlot for å vise en datafil med navnet "Test.dat". Du finner den også her

Se videoen for mer informasjon og testing. Ha det gøy og flere ideer!

Anbefalt: