Inhaltsverzeichnis:
- Schritt 1: Was Sie brauchen
- Schritt 2: Vorbereiten des Bluetooth-Moduls
- Schritt 3: Montage der Teile
- Schritt 4: Koppeln
- Schritt 5: Die Software
- Schritt 6: Testen
Video: Körperstaubsensor auf Android - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
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
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
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
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
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
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:
So installieren Sie Windows 95 auf einem Android-Telefon: 3 Schritte
So installieren Sie Windows 95 auf einem Android-Telefon: Wollten Sie schon immer Windows 95 auf Ihrem Android-Gerät ausführen? Die Emulation ist ein sehr schwieriger Prozess, zum Glück hat Windows 95 nur sehr wenige Anforderungen. Am Telefon funktioniert es perfekt wie am Computer, wenn jemand das Betriebssystem auf dem
So installieren Sie Windows auf Ihrem Android-Telefon: 5 Schritte
So installieren Sie Windows auf Ihrem Android-Telefon: Wollten Sie schon immer Windows XP auf Ihrem Android-Gerät ausführen? Haben Sie schon einmal darüber nachgedacht, ein Desktop-Betriebssystem auf Ihrem Handy auszuführen? Sie benötigen die Limbo-Anwendung, um Windows auf Ihrem Telefon zu installieren. Mit dieser Anwendung können Sie Windows 98 / ME / CE /… installieren
So kopieren Sie Spielstände auf einfache Weise auf eine Microsoft- oder Drittanbieter-MU.: 9 Schritte
So kopieren Sie Spielstände einfach auf eine Microsoft- oder Drittanbieter-MU.: Original-Tutorial HIER CD, die es einfach macht, genau das zu tun. Dies ist kein vollständiges Softmod-Tutorial, dies
Wie zeichne ich einen Computerbildschirm auf einem Mac auf?: 7 Schritte
Wie zeichne ich den Computerbildschirm auf dem Mac auf?: Wie zeichne ich den Bildschirm auf dem Mac auf? Wollten Sie schon immer etwas aufzeichnen, was auf Ihrem Computer oder Telefon passiert? Vielleicht sehen Sie sich ein Video an und möchten einen Clip aufnehmen; Vielleicht versuchst du jemandem zu zeigen, wie man etwas macht, und ein Video würde es schaffen
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: 6 Schritte
Stativ-Kopf auf Einbeinstativ-Kopf Adapter auf 43 Cent. Wörtlich.: Kurze Version meiner Geschichte: Ich habe eine Kamera gekauft, sie kam mit einem Bündel an Zubehör, darunter ein Samsonite 1100 Stativ. Ich habe ein Einbeinstativ. Ich möchte sehr bald Fotos mit einem Schwenkkopf auf dem Einbeinstativ machen und hatte keine 40 $, um ein L