Innehållsförteckning:

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

Video: Sodial Dust Sensor på Android: 6 steg

Video: Sodial Dust Sensor på Android: 6 steg
Video: Дневник хранящий жуткие тайны. Переход. Джеральд Даррелл. Мистика. Ужасы 2024, November
Anonim
Sodial Dust Sensor på Android
Sodial Dust Sensor på Android

För ett år sedan hade en vän till mig en helgworkshop om miljöövervakning. Målet med workshopen var att bygga upp en dammsensor ansluten till ett hallon pi -kort för att lägga mätdata på någon server som tillhandahåller ofta uppdaterade dammkoncentrationskartor. Min vän frågade om det finns ett sätt att få sensordata direkt på sin smartphone för övervakning och loggning. Så jag grävde internet efter ett datablad och såg att sensorn hade ett enkelt UART -gränssnitt med 9600Baud 8N1 -protokoll. Men hur ansluter man en UART till en smartphone? Det är lätt. Jag var bara tvungen att använda en av de allestädes närvarande små Bluetooth -modulerna som ger en emulerad komport på Android. Se nu hur jag gjorde det.

Steg 1: Vad du behöver

Vad du behöver
Vad du behöver
Vad du behöver
Vad du behöver

Du behöver följande delar

  • En passande kontakt JST XH 7-polig för Sodial-gränssnittet med ledningar. Jag köpte min på Ebay.
  • En Bluetooth -modul HC05 eller 06 kompatibel med UART -kontakt
  • En USB-seriell omvandlare med TTL-gränssnitt. Vi använder detta för att ge BT-modulen ett unikt namn
  • Sodial SDS011 dammsensor. Jag fick min från Ebay
  • en bit veroboard
  • USB-B-kontakt
  • tråd
  • En träbit att montera allt på

Då behöver du några enkla verktyg:

  • En bågsåg för att hugga veden
  • pincett
  • lödjärn och löd
  • avbitartång
  • Lim pistol
  • En bit 8 mm kiselhylsa (inte på bilden)

Du kan ladda ner Sodial SDS011 -databladet här Sodial SDS011 -datablad

Steg 2: Förbered Bluetooth -modulen

Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen
Förbereder Bluetooth -modulen

BT-modulen har ett UART-gränssnitt med TTL-nivå. Det kan omkonfigureras med "AT" -kommandon som vi gjorde med internetmodem sedan tidigare. För att ansluta den till ett terminalprogram på din maskin måste du anpassa UART till din dator. Jag använde en USB-RS232-omvandlare som jag köpte på Amazon. Jag applicerade en kontakt för BT-modulen och dirigerade 3, 3V strömförsörjning och GND från omvandlaren till BT-modulen. Sedan kopplade jag respektive TxD och RxD linjer i crossover. TxD från USB-omvandlare till RxD från BT-modul och vice versa.

Jag har en linuxmaskin och använde cutecom. Efter anslutning av USB-omvandlaren var komporten "ttyUSB0". Du hittar komportnamnen i katalogen "/dev" på din Linux -maskin. För Windows -användare rekommenderar jag "hterm". Det är lätt att använda. Skriv "AT" så får du "AT" som svar. Skriv sedan "AT+NameSensor" för att ge BT-modulen namnet "Sensor"

Steg 3: Montering av delarna

Montering av delar
Montering av delar
Montering av delar
Montering av delar
Montering av delar
Montering av delar
Montering av delar
Montering av delar

Skär en träbit i en storlek som är lämplig för att ta alla delar. Anslut alla signaler enligt schemat. Det är en bra idé att sätta en silikonhylsa runt ledningarna för att skydda dem. Löd USB-B-kontakten på perfboard. Den används bara för strömförsörjningen. Fixera alla delar med skruvar på träbasen. Slutligen varmlim kablarna för att fixa dem på träet.

Steg 4: Parning

Parning
Parning
Parning
Parning

Driv sensorprogrammet genom att ansluta en USB-strömförsörjning. En röd lysdiod på BT-modulen börjar blinka. Inget försök att para ihop det med din Android -smartphone. Du måste ange en pinkod. Detta är "1234". Efter att du har angett koden ska din smartphone paras med BT-modulen.

Steg 5: Programvaran

Jag gillar att skriva Android -appar på själva målplattformen. det räddar dig från alla de emuleringsgrejer du måste bry dig om du arbetar med Android Studio. Jag fick reda på tre lämpliga utvecklingsverktyg på själva Android

  • Mintoris Basic. En grundläggande tolk med en rik uppsättning kommandon för att pyssla med nästan allt på Android. Du kan skapa genvägar för dina appar. Mintoris basic innehåller inte en kompilator. Så du måste ha installerat Mintoris på varje enhet du använder. Men du behöver bara betala för det en gång (ca 7 €)
  • Grundläggande! Extremt bra Grundtolk och kompilator (tillägg för några €). Nästan hakar på allt i android och du kan kompilera riktiga appar för att distribuera dem utan att ha Basic! på målenheten. Tyvärr Basic! saknar Mintoris utmärkta diagramdiagramfunktioner
  • AIDE är en semi -professionell IDE för att göra Android -utveckling i Java på Android. Med AIDE har du största möjliga flexibilitet men du behöver lära dig java. AIDE har årliga kostnader på cirka 50 €

Jag valde Mintoris. I det här avsnittet kommer jag inte att ge dig en handledning i programmering i Mintoris utan en kort beskrivning av funktionsblocken

I den följande delen deklareras tre matriser för de två sensordatalinjerna och respektive tidsstämplar. Tidsstämpeldata används för att märka diagrammets x-axel. Sodial matar ut två dataströmmar var och en specificerad för en speciell partikelstorlek. De två dustdata-arrays tar dessa värden.

WakeLock delvis

TextColor 100, 75, 10

TextColorA 50, 50, 50

TextAlign 0

Textstorlek 24

CLS

Popup "Dammsensormätare (c) ARJ 2017"

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

Dim timeStamp (59)

Dim damm Data (59)

Dim damm Data (59)

Dimmeny $ (4) = "max. 100 datamängder", "max. 1000 datamängder", "max. 5000 datamängder", "max. 10000 datamängder", "Avsluta"

'Starta matriserna

För i = 0 till 59

dustData (i) = 0

dustDataF (i) = 0

timeStamp (i) = i

Nästa i

Därefter är en listmeny konfigurerad. Detta ger användaren ett val att välja den maximala storleken på data som ska samlas in. Detta är bara en säkerhetsbrytare för att förhindra att smarttelefonen suger in oändliga data. Funktionerna BTgetPaired $ () ger tillbaka en lista med alla parade enheter på Android-enheten, deras namn och BT-adress.

L ist Meny $ (), val

'Välj max mängd om data ska lagras

runLevel = 1

Välj val

Fall 0 maxData = 100

Fall 1 maxDate = 1000

Fall 2 maxData = 5000

Fall 3 maxData = 10000

Fall 4 maxData = 0

Avsluta Välj

'' Anslut sensor

dimpar $ (0)

par $ () = BTGetPaired $ ()

If pair $ (0) = "none" Då

Skriv ut "Inga parade enheter hittades. Är BT aktiverat?" Skriv ut "Program avslutat"

Slutet

Endif

Listpar $ (), enhet $

namn $ = ItemExtract $ (enhet $, 0)

adress $ = ItemExtract $ (enhet $, 1)

BTC Connect 1, adress $

'Vänta på anslutning

Framsteg PÅ

Skriv ut "Försöker ansluta till"; adress $

För i = 1 till 20

Framsteg i/2

Om BTGetstate (1) = 4 Avsluta sedan för vänta 1000

Nästa i

Framsteg AV

'Efter framgång, anslut till BT -enheten

Om BTGetState (1) = 4 Skriv sedan ut "Ansluten" Annat utskrift "Det gick inte att ansluta till"; namn $

Skriv ut "Program avslutat"

Slutet

Endif

Nästa block visar datakravet. För varje datasession öppnas en fil automatiskt och namnges efter tid och datum. Sedan läser slingan sensordata. Data är packade i flera byte. En uppsättning byte identifieras med två ASCII-tecken 170 och 171. Följande data omorganiseras och fylls i damm-matriser

Grafik på

'Öppna datafilen för att skriva

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

Öppna 1, filnamn $, "w+" Skriv ut "Öppnad datafil"; filnamn $ Writeln 1, FormatTime $ (Time (), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Fyll matrisen med de uppmätta data

data $ = "" paket $ = ""

index = 0

Gör medan maxData> 0

BTRead 1, paket $, 10

data $ = data $+paket $

Om Len (data $)> = 10 Då

Om (ASCII (Left $ (data $, 1)) = 170) & (ASCII (Right $ (data $, 1)) = 171) Sedan

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

index = index+1

Om index> 59 Sedan index = 0

dustData (index) = 0

dustDataF (index) = 0

Endif

Endif

DrawGraph ()

Vänta 100

Slinga

Stäng 1

Grafik av

CLS Skriv ut "Program avslutat"

Slutet

Den sista delen är en subrutin som anropas efter varje datamottagning. Det rensar skärmen, ritar om diagrammet med de faktiska data som lagras i damm- och tidsstämpeln.

'Rita koordinaterna, etiketterna, fästingarna och även datakurvorna

Sub DrawGraph ()

'I grafikläge rensas skärmen till den aktuella färgen

Färg 0, 0, 0

CLS

Färg 0, 0, 100

'Ställ in den grafikfärg som ska användas för att rita rutlinjerna

TextColor 100, 100, 100, 50

'TextColor är färgen på rutnätets huvudtitel

TextColorA 100, 100, 100

'TextColorA används för axeltitlar och rutnoteringar.

'Ange storleken på axeltiteltexten

'Rutnets huvudtitel är 2x den här storleken

Textstorlek 20

FixDecimal 0

'Ställ in för att visa 2 decimaler

PadDigits 2

'Rita ett rutnät för grafen' Ställ in intervallet och titeln på X & Y

Axel AxisX 0, 59, "Time/s"

Axel Y 0, 10000, "ug/m3"

Rutnät 3, "Dammkoncentration"

'Rita dammgrafer

Färg 100, 0, 0

GraphXY timeStamp (), dustDataF ()

Färg 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

Lämna tillbaka

Ladda ner källkoden här

Steg 6: Testa

Image
Image
Testa
Testa
Testa
Testa
Testa
Testa

Slå på sensorn och starta appen. Från listan över parade enheter väljer du den som heter "Sensor". Efter anslutning av sensorn börjar skärmen med att visa data. Samtidigt tilldelas datafilen. Efter avslutad mode kan du använda GnuPlot för att visa data. Använd filen "Test.gp" i GnuPlot för att konfigurera GnuPlot för att visa en datafil med namnet "Test.dat". Du hittar det också här

Se videon för mer information och testning. Ha mycket roligt och fler idéer!

Rekommenderad: