Indoor Environmental Quality Station + Bluetooth + Thingspeak

10 Schritt:Schritt 1: Datenlogging Umweltinformationskette Schritt 2: Arduino und Sensoren Schritt 3: Verdrahtung Schritt 4: Arduino Code Schritt 5: Thingspeak Datalogging und Visualisierung Schritt 6: Übertragen der Information Schritt 7: USB in den Computer (Processing) Variante Schritt 8: Bluetooth zu Computer (Processing) Variante Schritt 9: USB zum Smartphone (Android) Variante Schritt 10: Fazit und Verbesserungsvorschläge

Indoor Environmental Quality Station + Bluetooth + Thingspeak
Diese Instructable beschreibt eine Station zur Indoor Environmental Quality (IEQ) zu messen. Dies ist ein Maß an Komfort, der von mehreren Faktoren wie beaufschlagte
Innenwetter einschließlich Temperatur, Feuchtigkeit (Druck möglich gewesen wäre als auch) Geräuschpegel Raumluftqualität. Das ursprüngliche Ziel des Projektes war es, IEQ im Zimmer meines Babys zu überwachen. Allerdings kann eine solche IEQ Station für verschiedene Anwendungen verwendet werden, wie zum Beispiel die Überprüfung, ob alle Zimmer sind gut belüftet und mit der richtigen Temperaturregelung. Und ich werde eine Variation, die Sie im Freien zu ergreifen, um eine Wetterstation machen zu zeigen!

Ein solches Projekt wird in mehreren Schritten, einer Kette entlang der die Informationen Träger über verschiedene Plattformen, vom Sensor bis zur Oberfläche zusammengesetzt ist. Zwar gibt es viele Tutorials im Internet, fand ich, dass sie eher auf einen Schritt oder der anderen zu konzentrieren. Deshalb mit diesem Instructable, mein Ziel ist, zu zeigen, wie diese verschiedenen Steine ​​zusammenpassen von A bis Z.

Ich hoffe, es wird begeistern und Ihnen helfen, Ihr eigenes Projekt zu bauen. ! Wie immer - wenn Sie dieses Instructable, Stimmen, Favoriten, und Kommentare werden sehr geschätzt Schritt 1: Datenlogging Umweltinformationskette



Mehrere Schritte sind für eine Datenaufzeichnung Projekt berücksichtigt werden. Die logische Kette:

1) Sensoren: die Werte von Interesse sind, welcher Sensor zu wählen?
2) Plattform: wo sind die Sensoren angeschlossen?
3) Logging: Wo werden die Daten gespeichert?
4) Kommunikation: Wenn die Antwort auf 3) nicht "vor Ort", dann, wie die Daten übertragen?
5) Display: Wie werden die Daten für den Benutzer in einem unders Form dargestellt?

Die nächsten Schritte umfassen diese Fragen und zeigen die Antworten habe ich realisiert:

2) Plattform: Arduino
3) Datalogging auf Thingspeak
4) Änderung a) Kommunizieren in direkte serielle Kommunikation mit dem Computer mit USB-Kabel
Variation b) die Bluetooth-Kommunikation mit Computer-
Variation c) Bluetooth Kommunikation mit Android Smartphone
5) Web-Display aus Thingspeak
Schritt 2: Arduino und Sensoren

Indoor Environmental Quality Station + Bluetooth + Thingspeak
Soweit der Plattform betrifft, war ein Arduino Uno ein Kinderspiel. Günstig, einfach, mit einem Steckbrett Prototyp, und tot einfach zu programmieren.

Sensoren sind jedoch eine härtere Wahl. Sie reichen von der Low-End, billige Art von eBay, um teurer Ausrüstung von spezialisierten Websites. Mein Projekt war alles über Lern ​​/ Tests, also ging ich für diverse Sensoren, aber billig. Es war gut für mich, aber ich würde es nicht empfehlen, wenn Sie planen, das Beste aus Ihrem IEQ Station. Ein paar Euro mehr einen wirklichen Unterschied in Bezug auf Zuverlässigkeit und Nützlichkeit zu machen!

Wie auch immer, hier ist was ich verwendet, einschließlich der Preise von Lieferanten www.robotshop.com/eu. Natürlich fühlen sich frei, um Ihre persönlichen Bedürfnisse anpassen, sind die verschiedenen Codes in den nächsten Seiten sehr flexibel in Bezug auf die Datenquellen.
Temperatursensor TMP36 ist von Arduino Starter-Paket. Sehr gute Empfindlichkeit in diesem Zusammenhang ausreichend. Temperatur- und Feuchtigkeitssensor DHT11 (4,46 €). Der Feuchtigkeitssensor erfasst Trends (dh nach oben geht, wenn man in seine Richtung bläst), aber ich war nicht in der Lage, um es gegen ein anderes Referenz kalibrieren. Die Temperatur Teil ist jedoch seltsam und unzuverlässig. Die TMP36 ist viel besser zu diesem Job. Man könnte auch an die DHT22, 9,95 €, hoffentlich von besserer Qualität. Leuchtkraft: Standard-Fotowiderstand von Arduino Starter-Box. Ausreichend in diesem Kontext. Ambiant Luftqualität: Seeedstudio VOC (flüchtige organische Verbindungen) Sensor (14,26 €), Erfassen Moleküle wie formaldehyse, alccol, etc ... Ich habe nicht in der Lage, es mit einem bekannten Referenz kalibrieren gewesen, noch habe ich die Wirkung getrennt gemessen jedes Schadstoffs. Allerdings habe ich die Variationen gefunden, wenn die Menschen geben / verlassen den Raum sehr beeindruckend. Hier wird der nächste Schritt sein, um zu testen, ob es fehlende Belüftung in einem Raum voller Ikea Möbel, die Formaldehyd freisetzen zu erkennen.

Umgebungsgeräusche: Getestet habe ich sowohl die DFRobot (6,67 €) und die elektronische Ziegel (1,87 €). Beide auf dem gleichen Sensor, aber mit zusätzlichen Komponenten zur Filterung auf der DFRobot eins. Die Empfindlichkeit dieser Sensoren scheint niedrig zu holen "Umgebungslärm" auf, im Gegensatz zu plötzlichen lauten Geräuschen. Die DFRobot macht einen etwas besseren Job auf sie. Schritt 3: Verdrahtung

Indoor Environmental Quality Station + Bluetooth + Thingspeak
Hier ist die Stromlaufpläne, entsprechend dem Code in der nächsten Seite. Sorry für die ungenaue Darstellung der Sensor sieht, die, die ich verwendet, sind nicht in FritzingStep 4: Arduino Code

Die beigefügte Code führt die folgenden Aktionen aus:

- Es die Bibliothek für den DHT11, die heruntergeladen werden können lädt hier

- In den Schlaufenteil, alle 30s, liest es die Sensoren 5-mal, und der Mittelwert der Werte. Für Schallsensoren, schien es mir besser auf den Maximalwert anstelle eines durchschnittlichen verwenden. Fühlen Sie sich frei, es zu ändern, wenn sie nicht das Gefühl, das Richtige für Sie.

- Dann schreibt es an der seriellen Schnittstelle eine Zeile der folgenden Grammatik zusammen:

("Name einer Variablen" + "," + "Wert der Variablen" + ";") für alle Variablen dann Zeilenumbruch.

Diese Grammatik (wie auch die Namen der Variablen, die Sie verwenden, abhängig von Ihrem Setup wollen) übernimmt in den nächsten Schritten der Kette durchgeführt werden, wenn "etwas" liest von der seriellen Schnittstelle.

Wir werden herausfinden, was kann dieses "etwas", aber zuerst, lassen Sie uns über datalogging.Step 5 sprechen: Thingspeak Datalogging und Visualisierung

Indoor Environmental Quality Station + Bluetooth + Thingspeak

Indoor Environmental Quality Station + Bluetooth + Thingspeak

Indoor Environmental Quality Station + Bluetooth + Thingspeak

Thingspeak ist eine große Datenlogging-Service, mit dem Ziel, dass das "Internet der Dinge". Zwar gibt es andere ähnliche Dienste gibt, ist Thingspeak Toten einfach einzurichten und für die Bedürfnisse dieses Projektes geeignet.

Nach dem Erstellen eines Thingspeak acccount schafft man dann eine neue "Channel", in dem man alle Variablen braucht definieren. Wichtig zu bemerken ist die Feldnummern in der Registerkarte "Channel". Diese gehen in die nächste Stufe eingesetzt werden.

Der zweite wichtige Punkt ist die API-Schlüssel, der in der entsprechend benannten Register "API-Schlüssel" gefunden werden kann.

Die Möglichkeit, Daten in Ihren Thingspeak Kanal laden ist so einfach wie openning eine URL. Die Dokumentation beschreibt die vollwertige GET und POST-Kommandos, aber die URL ist eine einfachere Version. Wenn die API-Schlüssel ist ABC123456789, um die URL das Feld 1 und 2 mit den Werten 10 und 20 zu aktualisieren ist die folgende:
"Http://api.thingspeak.com/update?key=ABC123456789&field1=10&field2=20".

Sie können eine solche URL in einem Browser, um den Effekt auf Ihrem Kanal zu sehen geben, aber natürlich auch die Datenaufzeichnung wird verlangen, dass wir automatisch diese Anrufe.

Sie können in der Abbildung, die es dient auch als webbasierte Visualisierungstool (privat oder öffentlich) zu sehen. Eigentlich könnte man diese Instructable einen Schritt weiter zu drücken und GET-Befehle abrufen und die Daten (zur Analyse oder anderes), aber ich entschied mich, mich auf diese Web-Visualisierung zu begrenzen.
Schritt 6: Übertragen der Information

Der nächste Schritt ist das Bindeglied zwischen "mein Arduino sendet Daten über die serielle Schnittstelle" und "Thingspeak empfängt die Daten und aktualisiert eine ziemlich Diagramm".

Dieser Link kann viele verschiedene Dinge sein. Ich habe versucht, 3 Varianten
a) direkt über USB-Kabel an einen Computer, lesen Sie mit einer Verarbeitungscode
b) über Bluetooth an einen Computer
c) über Bluetooth mit einem Smartphone.

Weitere Möglichkeiten habe ich nicht umsetzen
- Wifi (Schirm zu teuer)
- Speicherung auf SD-Karte übertragen Sie dann (auch manuell) Schritt 7: USB in den Computer (Processing) Variante

In dieser Version ist, hört ein Verarbeitungs Skizze einfach an die serielle Schnittstelle, und aggregiert Daten in eine URL, wenn die serielle Schnittstelle Daten hat.

Dann die URL, die Thingspeak Update löst öffnet sie.

Beachten Sie die beiden wichtigsten Felder, die Arduino und Thingspeak verlinken:
Etiketten [] entspricht den Variablennamen in Ihrem Arduino Code definiert
Felder [] entspricht dem Feld Zahlen im Thingspeak Kanal.

Die API-Schlüssel und diese Felder sind die einzigen Dinge zu ändern, um auf Ihre project.Step 8 anzupassen: Bluetooth zu Computer (Processing) Variante

Indoor Environmental Quality Station + Bluetooth + Thingspeak
Bei dieser Variante sowohl die Arduino und Verarbeitungscode gleich sind. Änderungen werden auf der Hardware-Seite: Hinzufügen eines Bluetooth-Modul auf Ihre Station und ein Bluetooth-Dongle an den Computer als auch, wenn sie nicht bereits mit einer ausgestattet. Auch das Hinzufügen einer 9V-Batterie, da der Sender wird nicht aus dem Kabel mit Strom versorgt werden.

Ich würde Leute wie mich, die nicht dem Löten werden, da sie die 3 Jahre alt sind, um für einen BT-Modul auf einem Breakout-Board gehen zu beraten. Eingabe von "HC-05 Bluetooth-Transceiver" auf eBay wird Ihnen 10-15 € Module führen, inklusive Versand aus China.

Ein Kopfschmerz ich mit mir hatte, war, dass die meisten Breakout-Boards sind so verdrahtet, dass der Rx-Pin des Moduls ist es, auf die Tx der Arduino und Tx auf Rx verdrahtet werden. Meins war Rx Rx und Tx Tx - dauerte eine Weile, um es herauszufinden.

Wenn Sie den Akku anschließen, kann Ihr Computer sie erkennen (suchen Sie nach HC05 Name). Anschluss Passwort sollte vom Lieferanten gegeben werden, aber es ist in der Regel 1234 oder 0000 A COM (Serial) Port sollte openned werden, die die serielle Schnittstelle bei der Verarbeitung zu verwenden.

Eine zweite Kopfschmerz, mit Windows 7, ist, dass der Computer möglicherweise nicht in der Lage, über diesen Port kommunizieren. Eine Lösung für mich war es, "vorwärts" der Bluetooth-COM-Anschluss (sagen COM10) zu einem anderen virtuellen Port (sagen COM4) mit VPSE . Die neue Schnittstelle (COM4) können nun in Verarbeitung gelesen werden. Ich weiß nicht, warum es funktioniert!

Schritt 9: USB zum Smartphone (Android) Variante

Indoor Environmental Quality Station + Bluetooth + Thingspeak
In dieser letzten Variante, werden wir ein Android-Smartphone, anstatt einen Computer zwischen dem Arduino Station und Thingspeak verwenden, um als Übertragungs Rad handeln. In meinem persönlichen Fall ist der Hauptgrund für diese Lösung, dass unsere Computer zu Hause ist ein wenig laut, und wir wollen nicht, dass es in der Nacht aktiv zu verlassen. Aber noch interessanter ist, in können Sie Ihre IEQ Station auf dem Spielfeld und machen es zu einer Wetterstation!

Also, was ist in dieser App? Ich habe versucht, den Code so viel wie ich konnte sagen, aber hier sind ein paar Higlights.

Die Benutzeroberfläche ist sehr einfach - ein Textbereich, um den Bluetooth-Status, eine Liste der BT-Geräten erkannt wird, und einen zweiten Textbereich, wo die von der seriellen Schnittstelle lesen Daten angezeigt zu bestätigen. Die Haupttätigkeit UploadThingspeakAppActivity aktiviert BT wenn nicht bereits aktiviert ist, sucht nach BT-Geräte in Reichweite, zeigt sie in einer Liste an. Wenn ein BT-Gerät ausgewählt ist, erstellt es eine Buchse, mit einer Kennung UUID genannt (für eine serielle Schnittstelle, ist die UUID verwenden 00001101-0000-1000-8000-00805F9B34FB) Die Verbindung wird in einem separaten Thread, ConnectedThread verwaltet. Dies ist eine empfohlene Vorgehensweise, um zu vermeiden das Einfrieren der Anwendung. Die Instanz von ConnectedThread ist für alle Kommunikationsaufgaben sowohl mit der IEQ Station und Thingspeak verantwortlich. Es verbindet sich mit dem Sockel und hört auf den Kommunikations Zeichen um Zeichen. Bei Erreichen Ende der Zeile, die erforderlich ist, um URL zu aktualisieren Thingspeak bildet, und öffnet sie. Beachten Sie, wie die Felder String Etiketten [] und String Feldern [] stellen die Verbindung zwischen dem Arduino-Code und Ihre Thingspeak Channel, in der gleichen Weise wie in die Verarbeitungscode. Die Manifest-Dateien erfordert die Berechtigung, um die Smartphone Bluetooth und Internet-Funktionen mit zu verwenden

<Nutzt-Erlaubnis Android: name = "android.permission.BLUETOOTH" />
<Nutzt-Erlaubnis Android: name = "android.permission.BLUETOOTH_ADMIN" />
<Nutzt-Erlaubnis Android: name = "android.permission.INTERNET" />
Ein letzter Punkt: in der Layout-keepScreenOn = "true": die Benutzerschnittstelle offen mit android gehalten. Dies verhindert, dass Android vom Anhalten der Anwendung und schneiden Sie die Verbindung. Beachten Sie, dass die Umstellung auf eine andere Anwendung auch schaltet den Anschluss. Und selbstverständlich, ist es vorzuziehen, das Telefon an das Ladegerät angeschlossen, während im Einsatz zu halten, denn Bluetooth + Schirm immer auf der Batterie zieht extrem schnell!

Schritt 10: Fazit und Verbesserungsvorschläge

Dieses ist das Ende dieses Instructables. Ich möchte insbesondere zwei Tutorials, die inspiriert und half mir gutschreiben

Arduino zu Verarbeitung Wetterstation von Larsi
Bluetooth Serial Port Kommunikation auf Android von Nononux

Es gibt viele andere Ideen, die in ein solches Projekt durchgeführt werden könnten, wie beispielsweise Wi-Fi-Konnektivität, SD-Karte Datenspeicherung, Datenanalyse, etc ...

Einer der kritischen würde Energieeinsparung, denn 9V-Batterien sind sehr schnell abgelassen. Ich habe versucht, implementiert die Funktion von Sleepy JeeLib Bibliothek , mit wenig Erfolg. Es spart Energie durch Ausschalten des UART (serielle) Port, der sich verwirrt die Kommunikation beim Neustart. Ich bin für Anregungen und enlightments von meinem geschätzten Lesern offen!