Innehållsförteckning:
- Steg 1: Vad du behöver
- Steg 2: Förbered Bluetooth -modulen
- Steg 3: Montering av delarna
- Steg 4: Parning
- Steg 5: Programvaran
- Steg 6: Testa
Video: Sodial Dust Sensor på Android: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
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
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
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
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
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
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:
Hur man skapar en Android -app med Android Studio: 8 steg (med bilder)
Hur man skapar en Android -app med Android Studio: Denna handledning lär dig grunderna i hur du bygger en Android -app med utvecklingsmiljön för Android Studio. I takt med att Android -enheter blir allt vanligare kommer efterfrågan på nya appar bara att öka. Android Studio är en enkel att använda (en
The Dust Ruffler (Sumo Bot): 4 steg
The Dust Ruffler (Sumo Bot): Verktygs- och materiallista Verktygen och materialen som används för att konstruera Dust Ruffler är mycket okomplicerade och lätta att skaffa. Elektronik: Batteripaket, kontinuerlig rotation med högt vridmoment (x3), mottagare och fjärrkontroll. 3x2 'ark skumkärna x-a
Arduino Dust Study: 8 steg
Arduino Dust Study: Hur skulle det vara att bo på Mars? Är luften andningsbar? Är det säkert? Hur mycket damm finns det? Hur ofta är stormarna? Har du någonsin undrat svaret på någon av dessa frågor?
Arduino Powered Dust Particles Monitoring Station: 4 steg (med bilder)
Arduino Powered Dust Particles Monitoring Station: Du kan ganska enkelt bygga en DIY Internet of Things -enhet som övervakar dammföroreningar i ditt hem för mindre än $ 50 och få ett meddelande när dammnivån blir för hög så att du kan lufta rummet, eller du kan ställa in det utanför och få ett meddelande om det är
Samsung I600/Blackjack Screen Dust Fix: 4 steg
Samsung I600/Blackjack Screen Dust Fix: Hej alla, om ni (som jag) har en Samsung SGH -i600 (eller blackjack i Amerika) och har märkt att damm kommer in i enheten och samlas i det övre vänstra hörnet av skärmen - tror jag Jag har en fix för dig. Före bilden med vänligt tillstånd från Tracy