Ihre Browserversion ist veraltet. Wir empfehlen, Ihren Browser auf die neueste Version zu aktualisieren.

Messwerte eines Sensors am Smartphone darstellen

Aufgabe

Am Smartphone soll die vom Arduino gemessene Temperatur dargestellt werden. 

Aufbau der Schaltung

Material

  • Arduino
  • Temperatursensor TMP36
  • HC-06
  • 1 Widerstand 1kOhm
  • 1 Widerstand 2kOhm
  • Breadboard
  • Leitungen

 

Beschreibung

Der Aufbau der Schaltung und die Erklärungen dazu entsprechen diesem Beispiel. Der Temperatursensor hat drei Anschlüsse:

Wenn man auf die flache Seite schaut:

  • Links: +5V
  • Rechts: GND
  • Mitte: Temperatursignal

Das Temperatursignal wird auf einen analogen Eingang, z.B. A1 gelegt

 

Als Temperatursignal gibt der Sensor Spannungen von 0V bis 2V aus, wobei 0V einer Temperatur von -50°C und 2V einer Temperatur von 150°C entspricht.

Diese Spannung muss am analogen Eingang eingelesen werden und dann in eine Temperatur umgerechnet werden.

Zum Ausprobieren kann der Temperatursensor vom Arduino mit Strom versorgt werden.

Wesentlich genauer ist er, wenn er eine eigene Spannungsversorgung (z.B. eine 9V Batterie) hat.

Wenn der Temperatursensor falsch angeschlossen wird, wird er sofort sehr heiß und dadurch  zerstört!!

 

Dazu kommt noch das HC-06 Modul, das wie gewohnt an VCC, GND, Pin 0 (RX) und Pin 1 (TX) über die Widerstände angeschlossen wird.

Bluetooth Electronics-Panel

Mit der App "Bluetooth Electronics" wird ein neues Panel geöffnet bzw. editiert:

"Edit" berühren öffnet das Fenster zum Bearbeiten des Panels - dort "Indicators" auswählen: 

Eine der Balkenanzeigen in das Fenster ziehen, hier ist es das Thermometer:

Das blaue Feld "Edit" berühren um die Eigenschaften der Anzeige zu ändern:

Zuerst kann man das "Reicieve Character" aussuchen. Das ist das Zeichen, welches die App braucht um die Daten für die Balkenanzeige zu erkennen. In diesem Fall ist es der Buchstabe 'T'. Die App erwartet also zuerst das Zeichen '*', dann  ein 'T'. Danach folgen die Zahlen, woraus die App die Balkenanzeige darstellt, also eine Zahl. Zum Abschluss muss noch das Zeichen '*' gesendet werden.

Durch Herunterscrollen kommt man zu den Eingabemasken zur Beschriftung der Balkenanzeige. Hier kann man Zahlen oder Texte angeben. Diese werden dann an der Balkenanzeige als maximal bzw. minimaler Wert geschrieben.

In den Feldern "Set gauge range" muss man angeben, bei welcher Zahl der minimale  und bei welcher Zahl der maximale Ausschlag sein soll. in diesem Beispiel heißt das:

  • wenn der Text *T0* gesendet wird, dann wird der Ausschlag der Balkenanzeige bei 0 sein,
  • wenn der Text *T50* gesendet wird, dann wird der Ausschlag der Balkenanzeige bei 50 sein,
  • wenn der Text *T12* gesendet wird, dann wird der Ausschlag der Balkenanzeige bei 12 sein, usw.

Noch weiter unten findet man eine Skalierung. Man kann angeben, wie viele Striche  auf der Skala zwischen dem maximalen Wert und dem minimalen Wert abgebildet werden sollen (Number of Major Divisions) und wie viele Striche auf der Skala zwischen den "Major Divisions" sein sollen (Sub Divisions).

Im Feld "Current Value" kann man den Wert angeben, den die Balkenanzeige zeigen soll, wenn es keine Werte zum Anzeigen gibt.

Durch berühren von "OK" kommt man wieder in das Panel:

Das ArduBlock-Programm

Bedeutung der einzelnen Blöcke

(Steht unter dem Block keine Erklärung, dann wurde er bereits in einem Tutorial erklärt)

Dieser Block wurde eigentlich schon hier erklärt. Es wird eine Variable erstellt. Der Wert der Variablen wird wie folgt berechnet: 

Zuerst wird die Spannung am analogen Eingang (zwischen 0V und 5V) gemessen. Diese Spannung wird in eine Zahl zwischen 0 und 1023 umgewandelt. Da unser Sensor maximal 2V Spannung an den Eingang anlegen kann (bei einer Temperatur von 150°C) sind also die Werte, die wir am analogen Eingang erhalten zwischen 0 und 410. 

Aus diesen Werten werden nun (Dreisatz) Temperaturen zwischen -50°C und 150°C errechnet.

 

An den seriellen Monitor und das das Bluetoothmodul werden folgende Zeichen gesendet:

  • zuerst ein '*', damit weiß die App, dass ein Befehl für sie folgt,
  • dann ein 'T', damit weiß die App, das gleich Zahlen für die Balkenanzeige folgen werden, 
  • dann der Wert der Variablen TEMPERATUR, also eine Zahl zwischen -50 und 150,
  • dann wird eine Leerzeile gesendet, die kann gelöscht werden, es funktioniert aber auch so...,
  • dann wird ein '*' gesendet. Dadurch weiß die App, dass das Signal für die Balkenanzeige zu Ende ist. 

 

Der Arduino-Sketch

 

 

int _ABVAR_1_TEMPERATUR;                                                        

void setup()


{
    Serial.begin(9600);
    _ABVAR_1_TEMPERATUR = 0;
}

void loop()
{
    _ABVAR_1_TEMPERATUR = map ( analogRead(A1) , 0 , 410 , -50 , 150 ) ;
    Serial.print( "*T" );
    Serial.print( _ABVAR_1_TEMPERATUR );
    Serial.println("");
    Serial.print( "*" );
    Serial.println("");
    delay( 2000 );
}

 

 

Während des Hochladens m u s s  das HC-06 Modul ausgesteckt werden, sonst klappt das Hochladen nicht!!!

Sobald der Sketch hochgeladen ist, kann man am Smatphobe verfolgen, wie die Temperatur im Thermometer angezeigt wird.

 

Ein Problem haben wir noch - Aufgabe

Es werden nur Temperaturen zwischen 0 und 50°C angezeigt. Das liegt daran, dass die App als kleinste Zahl im Feld "Set Gauge Range"  gerne eine 0 haben möchte und keine negativen Zahlen akzeptiert. 

 

Wenn also negative Zahlen angezeigt werden sollen, dann musst Du das Programm ändern. Entweder...

  • ... Du änderst die Temperatur von den Celsuiswerten in Kelvinwerte um.
  • ... oder Du führst noch eine zweite Umrechnung durch (mit dem "zuordnen" - Befehl, bzw. mit dem "map"-Befehl) und wandelst die Temperatur (von -50°c bis 150°C in Werte zwischen 1 und 100 um, die Du an das Bluetoothmodul sendest.

Cookie-Regelung

Diese Website verwendet Cookies, zum Speichern von Informationen auf Ihrem Computer.

Stimmen Sie dem zu?