Inhaltsverzeichnis:

Körperstaubsensor auf Android - Gunook
Körperstaubsensor auf Android - Gunook

Video: Körperstaubsensor auf Android - Gunook

Video: Körperstaubsensor auf Android - Gunook
Video: Un-Armed Pirates, Intruders, & Thieves:Self Defense for Sailboats (Patrick Childress Sailing #43) 2024, Juli
Anonim
Körperstaubsensor auf Android
Körperstaubsensor auf Android

Vor einem Jahr hatte ein Freund von mir einen Wochenendworkshop zum Thema Umweltüberwachung. Das Ziel des Workshops war es, einen Staubsensor aufzubauen, der mit einem Raspberry Pi Board verbunden ist, um Messdaten auf einem Server zu speichern, der häufig aktualisierte Staubkonzentrationskarten bereitstellt. Mein Freund fragte, ob es eine Möglichkeit gibt, die Sensordaten zur Überwachung und Protokollierung direkt auf sein Smartphone zu bekommen. Also suchte ich im Internet nach einem Datenblatt und sah, dass der Sensor eine einfache UART-Schnittstelle mit 9600Baud 8N1-Protokoll hatte. Aber wie verbindet man einen UART mit einem Smartphone? Nun, das ist einfach. Ich musste nur eines dieser allgegenwärtigen kleinen Bluetooth-Module verwenden, die einen emulierten Comport auf Android bieten. Jetzt sehen Sie, wie ich es gemacht habe.

Schritt 1: Was Sie brauchen

Was du brauchst
Was du brauchst
Was du brauchst
Was du brauchst

Sie benötigen folgende Teile

  • Ein Gegenstecker JST XH 7-polig für die Sodial-Schnittstelle mit Drähten. Ich habe meine bei Ebay gekauft.
  • Ein Bluetooth-Modul HC05 oder 06, das mit dem UART-Anschluss kompatibel ist
  • Ein USB-Seriell-Wandler mit TTL-Pegel-Schnittstelle. Damit geben wir dem BT-Modul einen eindeutigen Namen
  • Sodial SDS011 Staubsensor. Ich habe meine von Ebay
  • ein Stück Veroboard
  • USB-B-Anschluss
  • Kabel
  • Ein Stück Holz, um alles darauf zu montieren

Dann benötigen Sie einige einfache Werkzeuge:

  • Eine Bucksaw zum Schneiden des Holzes
  • Pinzette
  • Lötkolben und Lötzinn
  • Kabelschneider
  • Heißklebepistole
  • Ein Stück 8mm Silikonhülle (nicht auf dem Bild)

Sie können das Sodial SDS011-Datenblatt hier herunterladen Sodial SDS011-Datenblatt

Schritt 2: Vorbereiten des Bluetooth-Moduls

Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls
Vorbereiten des Bluetooth-Moduls

Das BT-Modul verfügt über eine UART-Schnittstelle mit TTL-Pegel. Es kann mit "AT"-Befehlen umkonfiguriert werden, wie wir es in alten Zeiten mit Internet-Modems gemacht haben. Um es mit einem Terminalprogramm auf Ihrem Computer zu verbinden, müssen Sie den UART an Ihren Computer anpassen. Ich habe einen USB-RS232-Konverter verwendet, den ich bei Amazon gekauft habe. Ich habe einen Stecker für das BT-Modul angebracht und die 3, 3V Stromversorgung und GND vom Konverter zum BT-Modul geführt. Dann habe ich die jeweiligen TxD- und RxD-Leitungen gekreuzt verbunden. TxD vom USB-Konverter zu RxD vom BT-Modul und umgekehrt.

Ich habe einen Linux-Rechner und benutzte cutecom. Nach dem Anschließen des USB-Konverters lautete der Comport "ttyUSB0". Sie finden die Comport-Namen im Verzeichnis "/dev" auf Ihrem Linux-Rechner. Für Windows-Benutzer würde ich "hterm" empfehlen. Es ist einfach zu bedienen. Geben Sie "AT" ein und Sie sollten "AT" als Antwort erhalten. Geben Sie dann "AT+NameSensor" ein, um dem BT-Modul den Namen "Sensor" zu geben.

Schritt 3: Montage der Teile

Montage der Teile
Montage der Teile
Montage der Teile
Montage der Teile
Montage der Teile
Montage der Teile
Montage der Teile
Montage der Teile

Schneiden Sie ein Stück Holz in einer Größe, die für die Aufnahme aller Teile geeignet ist. Schließen Sie alle Signale wie im Schaltplan angegeben an. Es ist eine gute Idee, eine Silikonhülle um die Drähte zu legen, um sie zu schützen. Löten Sie den USB-B-Stecker auf das Perfboard. Es wird nur für die Stromversorgung verwendet. Alle Teile mit Schrauben am Holzsockel befestigen. Zum Schluss die Kabel heiß kleben, um sie auf dem Holz zu befestigen.

Schritt 4: Koppeln

Paarung
Paarung
Paarung
Paarung

Versorgen Sie die Sensoranwendung mit Strom, indem Sie ein USB-Netzteil anschließen. Eine rote LED am BT-Modul beginnt zu blinken. Versuchen Sie nicht, es mit Ihrem Android-Smartphone zu koppeln. Sie müssen einen PIN-Code eingeben. Dies ist "1234". Nach Eingabe des Codes sollte Ihr Smartphone mit dem BT-Modul gekoppelt sein.

Schritt 5: Die Software

Ich schreibe gerne Android-Apps auf der Zielplattform selbst. Es erspart Ihnen all die Emulationssachen, um die Sie sich kümmern müssen, wenn Sie mit Android Studio arbeiten. Ich habe drei geeignete Entwicklungstools auf Android selbst herausgefunden

  • Mintoris Basic. Ein einfacher Interpreter mit einem reichhaltigen Satz von Befehlen, um mit fast allem auf Android herumzubasteln. Sie können Verknüpfungen für Ihre Apps erstellen. Mintoris Basic enthält keinen Compiler. Sie müssen also auf jedem Gerät, das Sie verwenden, Mintoris installiert haben. Aber Sie müssen es nur einmal bezahlen (ca. 7€)
  • Basic! Extrem guter Basic Interpreter und Compiler (Add-on für einige €). Fast alles in Android einhaken und Sie können echte Apps kompilieren, um sie zu verteilen, ohne Basic zu haben! auf dem Zielgerät. Leider Basic! fehlen die hervorragenden Diagrammfunktionen von Mintoris
  • AIDE ist eine semiprofessionelle IDE für die Android-Entwicklung in Java auf Android. Mit AIDE haben Sie die größte Flexibilität, müssen aber Java lernen. AIDE hat jährliche Kosten von ca. 50€

Ich habe mich für Mintoris entschieden. In diesem Abschnitt werde ich Ihnen kein Tutorial zur Programmierung in Mintoris geben, sondern eine kurze Beschreibung der Funktionsblöcke

Im folgenden Teil werden drei Arrays für die beiden Sensordatenleitungen und die jeweiligen Zeitstempel deklariert. Die Zeitstempeldaten werden zur Beschriftung der x-Achse des Diagramms verwendet. Das Sodial gibt zwei Datenströme aus, die jeweils für eine spezielle Partikelgröße spezifiziert sind. Die beiden Staubdaten-Arrays nehmen diese Werte an.

WakeLock teilweise

Textfarbe 100, 75, 10

TextColorA 50, 50, 50

Textausrichtung 0

Textgröße 24

CLS

Popup "Staubsensor Meter (c) ARJ 2017"

Global dustData(), dustDataF(), timeStamp() Globaler Index, Auswahl, maxData, fileName$

Dimmzeitstempel(59)

Schwacher StaubDaten(59)

Schwacher StaubDataF(59)

Dim Menu$(4) = "max. 100 Datensätze", "max. 1000 Datensätze", "max. 5000 Datensätze", "max. 10000 Datensätze", "Exit"

'Initiere die Arrays

Für i = 0 bis 59

StaubDaten(i) = 0

StaubDatenF(i) = 0

Zeitstempel(i)=i

Als nächstes

Als nächstes wird ein Listenmenü konfiguriert. Dies gibt dem Benutzer die Wahl, die maximale Größe der zu sammelnden Daten auszuwählen. Dies ist nur ein Sicherheitsschalter, um zu verhindern, dass das Smartphone endlose Daten aufsaugt. Die Funktionen BTgetPaired$() gibt eine Liste mit allen gekoppelten Geräten auf dem Android-Gerät, deren Namen und BT-Adresse zurück.

Liste Menü$(), Auswahl

'Maximalbetrag auswählen, wenn Daten gespeichert werden sollen

runLevel = 1

Auswahl auswählen

Fall 0 maxData = 100

Fall 1 maxDate = 1000

Fall 2 maxData = 5000

Fall 3 maxData = 10000

Fall 4 maxData = 0

Auswahl beenden

''Sensor verbinden

dunkles Paar$(0)

pair$() = BTGetPaired$()

Wenn Paar$(0) = "keine" Dann

Drucken Sie "Keine gekoppelten Geräte gefunden. Ist BT eingeschaltet?" Drucken "Programm beendet"

Ende

Endif

Listenpaar$(), Gerät$

name$=ItemExtract$(device$, 0)

address$=ItemExtract$(device$, 1)

BTConnect 1, Adresse$

'Auf Verbindung warten

Fortschritt EIN

Print "Versuche, eine Verbindung zu ";Adresse$. herzustellen

Für i = 1 bis 20

Fortschritt i/2

Wenn BTGetstate(1)=4, dann Exit For Wait 1000

Als nächstes

Fortschritt AUS

'Bei Erfolg mit dem BT-Gerät verbinden

If BTGetState(1) = 4 Then Print "Connected" Else Print "Konnte keine Verbindung zu ";name$. herstellen"

Drucken "Programm beendet"

Ende

Endif

Der nächste Block zeigt die Datenerfassung. Für jede Datensitzung wird automatisch eine Datei geöffnet und nach Uhrzeit und Datum benannt. Dann liest die Schleife die Sensordaten. Die Daten sind in mehrere Bytes gepackt. Ein Satz von Bytes wird durch zwei ASCII-Zeichen 170 und 171 identifiziert. Die folgenden Daten werden reorganisiert und in die Dust-Arrays gefüllt

Grafik an

'Datei zum Schreiben öffnen

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

Open 1, fileName$, "w+" Print "Opened datafile";fileName$ Writeln 1, FormatTime$(Time(), "yy-MM-dd")

Writeln 1, "Time Dust2.5 Dust10"

'Array mit den gemessenen Daten füllen

Daten$="" Paket$=""

Index=0

Tun Sie, während maxData > 0

BTRead 1, Paket$, 10

Daten$=Daten$+Paket$

Wenn Len(data$) >= 10 Then

Wenn (ASCII(Links$(Daten$, 1))=170) & (ASCII(Rechts$(Daten$, 1)) = 171) Dann

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))

Daten$=""

maxData = maxData-1

index=index+1

Wenn Index>59 Dann Index=0

StaubDaten(index)=0

StaubDatenF(index)=0

Endif

Endif

DrawGraph()

Warte 100

Schleife

Schließen 1

Grafik aus

CLS Print "Programm beendet"

Ende

Der letzte Teil ist ein Unterprogramm, das nach jedem Datenempfang aufgerufen wird. Es löscht den Bildschirm, zeichnet das Diagramm mit den aktuellen Daten, die in den Staub- und Zeitstempel-Arrays gespeichert sind, neu.

' Zeichnen Sie die Koordinaten, die Beschriftungen, Häkchen und auch die Datenkurven

Unter DrawGraph()

' Im Grafikmodus wird der Bildschirm auf die aktuelle Farbe zurückgesetzt

Farbe 0, 0, 0

CLS

Farbe 0, 0, 100

' Legen Sie die Grafikfarbe fest, die zum Zeichnen der Rasterlinien verwendet werden soll

Textfarbe 100, 100, 100, 50

'TextColor ist die Farbe des Haupttitels des Rasters

TextColorA 100, 100, 100

' TextColorA wird für Achsentitel und Rasteranmerkungen verwendet.

' Größe des Achsentiteltexts einstellen

'Der Haupttitel des Rasters ist 2x so groß

Textgröße 20

FixDezimal 0

' Auf Anzeige von 2 Dezimalstellen einstellen

PadDigits 2

' Zeichnen Sie ein Gitter für den Graphen ' Legen Sie den Bereich und den Titel des X & Y fest

Achse AxisX 0, 59, "Zeit/s"

AchseY 0, 10000, "ug/m3"

Raster 3, "Staubkonzentration"

'Staubdiagramme zeichnen

Farbe 100, 0, 0

GraphXY timeStamp(), dustDataF()

Farbe 0, 100, 0

GraphXY timeStamp(), dustData()

Textfarbe 100, 0, 0

DrawText "PM2.5", 30, Int(ScreenY()-60), 90, 1

Textfarbe 0, 100, 0

DrawText "PM10", 30, Int(ScreenY()-150), 90, 1

Textfarbe 100, 100, 100, 50

Zurückkehren

Laden Sie hier den Quellcode herunter

Schritt 6: Testen

Image
Image
Prüfen
Prüfen
Prüfen
Prüfen
Prüfen
Prüfen

Schalten Sie den Sensor ein und starten Sie die App. Wählen Sie aus der Liste der gekoppelten Geräte das Gerät mit dem Namen "Sensor". Nach dem Anschließen des Sensors beginnt der Bildschirm mit der Anzeige der Daten. Gleichzeitig wird die Datendatei zugewiesen. Nach Abschluss der Mode können Sie GnuPlot verwenden, um die Daten anzuzeigen. Verwenden Sie die Datei "Test.gp" in GnuPlot, um GnuPlot für die Anzeige einer Datendatei namens "Test.dat" zu konfigurieren. Findest du auch hier

Weitere Informationen und Tests finden Sie im Video. Viel Spaß und weitere Ideen!

Empfohlen: