Inhoudsopgave:
- Stap 1: Wat je nodig hebt
- Stap 2: De Bluetooth-module voorbereiden
- Stap 3: De onderdelen monteren
- Stap 4: Koppelen
- Stap 5: De software
- Stap 6: Testen
Video: Sodial Dust Sensor op Android - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Een jaar geleden had een vriend van mij een weekendworkshop over milieumonitoring. Het doel van de workshop was om een stofsensor op te bouwen die was aangesloten op een Raspberry Pi-bord om meetgegevens op een server te zetten die regelmatig bijgewerkte stofconcentratiekaarten leverde. Mijn vriend vroeg of er een manier is om de sensorgegevens rechtstreeks op zijn smartphone te krijgen voor monitoring en logging. Dus ik zocht op internet naar een datasheet en zag dat de sensor een eenvoudige UART-interface had met het 9600Baud 8N1-protocol. Maar hoe verbind je een UART met een smartphone? Nou, dat is makkelijk. Ik moest gewoon een van die alomtegenwoordige kleine Bluetooth-modules gebruiken die een geëmuleerde comport op Android bieden. Kijk nu hoe ik het gemaakt heb.
Stap 1: Wat je nodig hebt
Je hebt de volgende onderdelen nodig:
- Een bijpassende connector JST XH 7-pins voor de Sodial-interface met draden. Ik heb de mijne op Ebay gekocht.
- Een Bluetooth-module HC05 of 06 compatibel met UART-connector
- Een USB-serieel converter met TTL-niveau-interface. We gebruiken dit om de BT-module een unieke naam te geven
- Sodial SDS011 stofsensor. Ik heb de mijne van Ebay
- een stuk veroboard
- USB-B-connector
- draad
- Een stuk hout om alles op te monteren
Dan heb je een aantal eenvoudige hulpmiddelen nodig:
- Een houtzaag om het hout te zagen
- pincet
- soldeerbout en soldeer
- draadknipper
- Heet lijmpistool
- Een stuk 8 mm siliconen hoes (niet op foto)
U kunt de Sodial SDS011 datasheet hier downloaden Sodial SDS011 datasheet
Stap 2: De Bluetooth-module voorbereiden
De BT-Module heeft een UART-interface met TTL-niveau. Het kan opnieuw worden geconfigureerd met "AT"-commando's zoals we deden met internetmodems in de oudheid. Om het aan te sluiten op een terminalprogramma op uw machine, moet u de UART aanpassen aan uw computer. Ik heb een USB-RS232-converter gebruikt die ik bij amazon heb gekocht. Ik heb een connector voor de BT-module aangebracht en de 3, 3V voeding en GND van de converter naar de BT-module gerouteerd. Vervolgens heb ik de respectieve TxD- en RxD-lijnen in crossover aangesloten. TxD van USB-converter naar RxD van BT-module en vice versa.
Ik heb een linux-machine en gebruik cutecom. Na het aansluiten van de USB-converter was de comport "ttyUSB0". Je kunt de comportnamen vinden in de map "/dev" op je Linux-machine. Voor Windows-gebruikers zou ik "hterm" aanbevelen. Het is gemakkelijk te bedienen. Typ "AT" en u zou "AT" als antwoord moeten krijgen. Typ vervolgens "AT+NameSensor" om de BT-module de naam "Sensor" te geven
Stap 3: De onderdelen monteren
Snijd een stuk hout in een maat die geschikt is om alle onderdelen te nemen. Sluit alle signalen aan zoals aangegeven in het schema. Het is een goed idee om een siliconen hoes om de draden te doen om ze te beschermen. Soldeer de USB-B-stekker op het perfboard. Het wordt alleen gebruikt voor de voeding. Bevestig alle onderdelen met schroeven op de houten basis. Lijm tenslotte de kabels om ze op het hout te bevestigen.
Stap 4: Koppelen
Voorzie de sensortoepassing van stroom door een USB-voeding aan te sluiten. Een rode LED op de BT-module begint te knipperen. Probeer het niet te koppelen met je Android-smartphone. U dient een pincode in te voeren. Dit is "1234". Na het invoeren van de code moet uw smartphone worden gekoppeld met de BT-module.
Stap 5: De software
Ik schrijf graag Android-apps op het doelplatform zelf. het bespaart je al die emulatie-dingen waar je je druk om moet maken als je met Android Studio werkt. Ik ontdekte drie geschikte ontwikkelingstools op Android zelf
- Mintoris Basis. Een basisinterpreter met een uitgebreide reeks opdrachten om met bijna alles op Android te knutselen. U kunt snelkoppelingen maken voor uw apps. Mintoris basic bevat geen compiler. Je moet dus Mintoris hebben geïnstalleerd op elk apparaat dat je gebruikt. Maar je hoeft er maar één keer voor te betalen (ongeveer € 7)
- Basis! Extreem goede Basic interpreter en compiler (add-on voor ongeveer €). Sluit bijna alles in Android aan en je kunt echte apps compileren om ze te distribueren zonder Basic! op het doelapparaat. Helaas Basis! mist de uitstekende diagramfuncties van Mintoris
- AIDE is een semi-professionele IDE voor Android-ontwikkeling in Java op Android. Met AIDE heb je de grootste flexibiliteit, maar je moet Java leren. AIDE heeft jaarlijkse kosten van ongeveer 50€
Ik koos voor Mintoris. In deze sectie geef ik je geen tutorial over programmeren in Mintoris, maar een korte beschrijving van de functieblokken
In het volgende deel worden drie arrays gedeclareerd voor de twee sensordatalijnen en de respectieve tijdstempels. De tijdstempelgegevens worden gebruikt voor het labelen van de x-as van het diagram. De Sodial voert twee datastromen uit, elk gespecificeerd voor een speciale deeltjesgrootte. De twee dustdata-arrays nemen deze waarden aan.
WakeLock Gedeeltelijk
TekstKleur 100, 75, 10
TekstKleurA 50, 50, 50
TekstUitlijnen 0
Tekstgrootte 24
CLS
Popup "Stofsensormeter (c) ARJ 2017"
Globale dustData(), dustDataF(), timeStamp() Globale index, keuze, maxData, fileName$
Dim tijdstempel(59)
Dim stofData(59)
Dim stofDataF(59)
Dim Menu$(4) = "max. 100 datasets", "max. 1000 datasets", "max. 5000 datasets", "max. 10000 datasets", "Exit"
'Init de arrays'
Voor i = 0 tot 59
stofData(i) = 0
stofDataF(i) = 0
timeStamp(i)=i
volgende i
Vervolgens wordt een lijstmenu geconfigureerd. Dit geeft de gebruiker de keuze om de maximale grootte van de te verzamelen gegevens te selecteren. Dit is slechts een veiligheidsschakelaar om te voorkomen dat de smartphone eindeloze gegevens naar binnen zuigt. De Functies BTgetPaired$() geeft een lijst terug met alle gekoppelde apparaten op het Android-apparaat, hun namen en BT-adres.
L ist Menu$(), keuze
'Selecteer maximale hoeveelheid als gegevens moeten worden opgeslagen'
runLevel = 1
Selecteer keuze
Geval 0 maxData = 100
Geval 1 maxDatum = 1000
Geval 2 maxData = 5000
Geval 3 maxData = 10000
Geval 4 maxData = 0
Einde selecteren
''Sensor aansluiten
dim paar$(0)
paar$() = BTGetPaired$()
Als paar$(0) = "geen" Dan
Afdrukken "Geen gekoppelde apparaten gevonden. Is BT ingeschakeld?" Print "Programma beëindigd"
Einde
Stop als
Lijst paar$(), apparaat$
name$=ItemExtract$(apparaat$, 0)
address$=ItemExtract$(apparaat$, 1)
BTConnect 1, adres$
'Wacht op verbinding'
Voortgang AAN
Print "Proberen verbinding te maken met ";address$
Voor i = 1 tot 20
Vooruitgang i/2
Als BTGetstate(1)=4 Dan Afsluiten voor Wacht 1000
volgende i
Voortgang UIT
'Bij succes verbinding maken met het BT-apparaat
Als BTGetState(1) = 4 Print dan "Verbonden" Anders Print "Kan geen verbinding maken met ";name$
Print "Programma beëindigd"
Einde
Stop als
Het volgende blok toont de databehoefte. Voor elke datasessie wordt automatisch een bestand geopend en genoemd naar tijd en datum. Dan leest de lus de sensorgegevens. De gegevens zijn verpakt in verschillende bytes. Een set bytes wordt geïdentificeerd door twee ASCII-tekens 170 en 171. De volgende gegevens worden gereorganiseerd en ingevuld in de dust-arrays
Grafisch aan
'Open databestand om te schrijven'
fileName$ = FormatTime$(t, "jjjj-MM-dd-kk-mm-ss") + ".dat"
Open 1, fileName$, "w+" Print "Geopende datafile ";fileName$ Writeln 1, FormatTime$(Time(), "yy-MM-dd")
Schrijf 1, "Tijd Dust2.5 Dust10"
'Array vullen met de gemeten data'
data$="" pakket$=""
index=0
Do While maxData > 0
BTRead 1, pakket$, 10
data$=data$+pakket$
Als Len(data$) >= 10 Dan
Als (ASCII(Links$(data$, 1))=170) & (ASCII(Rechts$(data$, 1)) = 171) Dan
dustDataF(index)=ASCII(Midden$(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))
gegevens$=""
maxData = maxData-1
index=index+1
Als index>59 Dan index=0
dustData(index)=0
dustDataF(index)=0
Stop als
Stop als
TekenGrafiek()
Wacht 100
Lus
Sluiten 1
Grafisch uit
CLS Print "Programma beëindigd"
Einde
Het laatste deel is een subroutine die na elke dataontvangst wordt aangeroepen. Het wist het scherm, hertekent het diagram met de feitelijke gegevens die zijn opgeslagen in de stof- en tijdstempelarrays.
' Teken de coördinaten, de labels, ticks en ook de datacurves
Sub DrawGraph()
' In de grafische modus wordt het scherm in de huidige kleur gewist
Kleur 0, 0, 0
CLS
Kleur 0, 0, 100
' Stel de grafische kleur in die moet worden gebruikt om de rasterlijnen te tekenen
TekstKleur 100, 100, 100, 50
'TextColor is de kleur van de hoofdtitel van het raster'
TekstKleurA 100, 100, 100
' TextColorA wordt gebruikt voor Axis-titels en rasterannotaties.
' Stel de grootte van de titeltekst van de as in
' De hoofdtitel van het raster is 2x zo groot
Tekstgrootte 20
FixDecimaal 0
' Instellen om 2 decimalen weer te geven
PadCijfers 2
' Teken een raster voor de grafiek ' Stel het bereik en de titel van de X & Y in
Axis AxisX 0, 59, "Tijd/s"
AxisY 0, 10000, "ug/m3"
Raster 3, "Stofconcentratie"
' Teken stofgrafieken
Kleur 100, 0, 0
GraphXY timeStamp(), dustDataF()
Kleur 0, 100, 0
GraphXY timeStamp(), dustData()
TekstKleur 100, 0, 0
DrawText "PM2.5", 30, Int(ScreenY()-60), 90, 1
TekstKleur 0, 100, 0
DrawText "PM10", 30, Int(ScreenY()-150), 90, 1
TekstKleur 100, 100, 100, 50
Opbrengst
Download hier de broncode
Stap 6: Testen
Schakel de sensor in en start de app. Kies uit de lijst met gekoppelde apparaten degene met de naam "Sensor". Nadat de sensor is aangesloten, begint het scherm de gegevens weer te geven. Tegelijkertijd wordt het gegevensbestand toegewezen. Na het afronden van de mode kunt u GnuPlot gebruiken om de gegevens weer te geven. Gebruik het bestand "Test.gp" in GnuPlot om GnuPlot te configureren voor het weergeven van een gegevensbestand met de naam "Test.dat". Je kunt het ook hier vinden
Bekijk de video voor meer details en testen. Veel plezier en nog meer ideeën!
Aanbevolen:
Hoe Android-telefoons te recyclen voor BOINC of Folding Rig zonder batterijen te gebruiken: 8 stappen
Hoe Android-telefoons voor BOINC of Folding Rig te recyclen zonder batterijen te gebruiken: WAARSCHUWING: IK BEN IN GEEN ENKEL VERANTWOORDELIJK VOOR ENIGE SCHADE AAN UW HARDWARE DOOR DEZE GIDS TE VOLGEN. Deze gids is effectiever voor BOINC-gebruikers (persoonlijke keuze / redenen), het kan ook worden gebruikt voor VOUWEN Aangezien ik niet al te veel tijd heb, wil ik
Android Studio downloaden en gebruiken met Kotlin: 4 stappen
Android Studio downloaden en gebruiken met Kotlin: Hallo, ik hoop dat jullie allemaal gezond zijn tijdens deze pandemie. In deze tutorial leer ik je hoe je Android Studio kunt downloaden en je eerste app kunt draaien met Kotlin. Aan het einde van deze tutorial zou je moeten weten hoe je een eenvoudige app kunt downloaden en maken met Andro
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: 8 stappen
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: deze instructable legt uit hoe u uw eigen externe Bluetooth-compatibele GPS voor uw telefoon kunt maken, wat dan ook voor ongeveer $ 10. Materiaallijst: NEO 6M U-blox GPSHC-05 bluetooth-module Kennis van interface Blutooth Low energy-modulesArdui
Een Android-app maken met Android Studio: 8 stappen (met afbeeldingen)
Een Android-app maken met Android Studio: in deze zelfstudie leert u de basisprincipes van het bouwen van een Android-app met behulp van de Android Studio-ontwikkelomgeving. Naarmate Android-apparaten steeds gebruikelijker worden, zal de vraag naar nieuwe apps alleen maar toenemen. Android Studio is een eenvoudig te gebruiken (een
Samsung I600/Blackjack Screen Dust Fix: 4 stappen
Samsung I600/Blackjack Screen Dust Fix: Hallo allemaal, als u (zoals ik) een Samsung SGH-i600 (of blackjack in Amerika) heeft en merkt dat stof het apparaat binnenkomt en zich ophoopt in de linkerbovenhoek van het scherm - denk ik Ik heb een oplossing voor je. Voor afbeelding met vriendelijke toestemming van Tracy