ARDUINO Bluetooth Smartphone

Die Vernetzung von einzelnen Hardwarekomponenten ist ein aktuelles Thema. Bisher kommunizierten sogenannte „embedded system“ (->in der Regel kleinere uController) über leitungsgebundene Schnittstellen wie virtuelle COM Schnittstelle mit einem PC. Auf dem PC werden die Daten visualisiert. Diese Art der Kommunikation zwischen uC und PC ist heute noch üblich. Inzwischen gibt es jedoch weitere Schnittstellen wie Ethernet, WIFI, und auch Bluetooth.

Für den Anfänger beginnt man mit der seriellen Schnittstelle (COM). Unter virtueller COM-Schnittstelle versteht man eine Verbindung über ein USB Kabel mit dem Protokoll der seriellen Schnittstelle. Auf der Seite des uC braucht man dafür einen speziellen Controller, ein sogenannter FDTI Chip, auf der Seite des PCs einen dazu passenden Softwartreiber. Wenn das klappt, dann sieht man im Gerätemanager des PCs bei den COM Schnittstellen den Controller und kann dann einfach die Daten im PC auswerten, die vom Controller kommen. Am einfachsten, man nutzt auf PC Seite eine Visualisierungssoftware wie Profilab oder LabVIEW, oder ähnliches.

Nun ist es möglich die Daten der seriellen Schnittstelle  auch drahtlos zu übertragen. Das geht einfach und effektiv über die drahtlose Bluetooth-Schnittstelle. Auf der Seite des uControllers benötigt man einen Adapter, z.B. ein HC-06 Modul.

roboter-bausatz HC06   Hier kann man das Modul in Deutschland gut beschaffen. Fairer Preis.
Hier ein paar Beispiele aus dem Netz:

arduino uni Hannover  Guter Einstieg in das Thema, auch die AT-Befehle werden erklärt, damit man das Bluetooth-Modul konfigurieren kann. Der Unterschied HC05 und HC06 kann man auch nachlesen.
 shelvin    Die Konfiguration des HC06 Bluetooth Moduls wird gezeigt. Man kann in dem Bluetooth-Modul den Namen, das Passwort die Daten der seriellen Schnittstelle einstellen. Das ist ziemlich wichtig! Dazu muss man zuerst eine Software auf den Arduino aufspielen, dann das Modul an TxD und RxD vom Arduino gekreuzt verbinden und dann im Seriell Monitor von Arduino die AT-Befehle eingeben. Das beschreibt dieser Link.
funduino  Einfacher Einstieg mit einfacher Handy-App

Eine sehr gute App für Android Geräte:  Keuwl  Diese App kann man selbst gestalten mit einer grafischen Oberfläche. Die App ist kostenfrei. Am Anfang muss man sich etwas eindenken ist dann aber sehr flexibel und kann tolle Oberflächen „zaubern“.

DSCN2841

Ein Beispiel: Hier wird eine Kommunikation zum Smartphone aufgebaut.

/* Software von http://www.keuwl.com
Software angepasst von G. Neumaier Offenburg
Das Programm sendet einen digitalen Wert zum Smartpone auf die App von Keuwl
Dort ist eine Anzeige LED die schwarz oder grün anzeigt, abhängig vom Pin7 am Arduino
-> die Farbe bei Kewl folgt der  24bit Angabe: RGB  Rot Grün Blau mit jeweils einem Wert
0..255
-> R0G0B0  ist schwarz,R0G150B0  ist helles grün
Pin6 und 5 sind LED angeschlossen, werden von Schaltern auf der App angesteuert.
HArdware: ArduinoUNO, Bluetooth Modul HC06, 1Poti an A0 ein Schalter/Taster
an Pin7
2 LEDs an Pin 6 und 5
*/

 

String colors[]={"R0G0B0","R0G150B0"}; //in der App: Farbe der angesteuerten LED 
int interval=100; //Gives the serial link and app a chance to process data
float voltage; //Assumes 0-1023 range over 5V
int farbe;
char BluetoothData; // the Bluetooth data received
void setup() {
 //Initiate Digital pins as Inputs
 // for(int i=2;i<=13;i++) pinMode(i, INPUT); 
 pinMode(7, INPUT);
 pinMode(6, OUTPUT);
  pinMode(5, OUTPUT);
 //Initiate Serial for Bluetooth Communication
  Serial.begin(9600); 
}

void loop()
{
  //Read Digital Pin6 and Send results over Bluetooth
  //the colour of the LED ist 24bit each colour (RedGreenBlue)has 8bit
  farbe= digitalRead(7);  //  Pin7:  0 or 1

   Serial.print("*P"+colors[farbe]+"*"); //Im array colors wird schwarz oder grün ausgewählt
   
  //Read Analogue Pin and Send Result over Bluetooth
    Serial.print("*A"); //A0 spricht Anzeige in der App an
      voltage=analogRead(0)/204.6;   //1023/5=204,6  10bit auf 8bit Analogeingang: A0
      Serial.print(String(voltage)+","); //Nun wird der Wert gesendet 0,00...5,00
    Serial.print("*");
    Serial.write (10); //for serial Monitor new_line

//Date receive from Bluetooth HC06  Zwei Schalter von Keuwl-App werden abgefragt
    if (Serial.available())
 { BluetoothData=Serial.read(); //Get next character from bluetooth
  
    if(BluetoothData=='R') // Red Button Pressed in the App
    { digitalWrite(6,1); //Turn digital out 6   to High
    }

    if(BluetoothData=='r') // Red Button Released in the App
    {      digitalWrite(6,0);
    }
        if(BluetoothData=='B')// Blue Button Pressed
    { digitalWrite(5,1); //Turn digital out 5 to High 
    }

    if(BluetoothData=='b') // Blue Button Released
    {digitalWrite(5,0); 
    }
  }//End serial aviable
    delay(interval);  //Pause before taking next measurement
}

 

Advertisements