Pages: [1]   Go Down
Author Topic: Arduino Mega+ Bluethoot shild  (Read 834 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo
Ich hab das Arduino noch nicht lange. Ich besitze das Arduino Mega 2560 und versuche mich nun mit einem Bluetooth Shild (ITEAD Stuido BT Shield V2.2). Ich versuche nun eine einfache Anwendung (Led aktivieren mit 1 und deaktivieren mit 0). Eine Bluetooth Verbindung mittels Putty Terminal bekomme ich, aber leider passiert nichts wenn ich im Terminal 1 oder 0 eingebe.

Hier mein derzeitiger Code:

Code:
#include <SoftwareSerial.h>

#define RxD 0
#define TxD 1
char val;
int ledpin =13;
SoftwareSerial blueToothSerial(RxD,TxD);

void setup(){
  pinMode(ledpin,OUTPUT);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  setupBlueToothConnection();
  Serial.begin(115200); 
}

void loop(){
  digitalWrite(ledpin,LOW);
  Serial.println("LED aus");
  delay(2000);
  digitalWrite(ledpin,HIGH);
  Serial.println("LED ein");
  if(blueToothSerial.available()){
    blueToothSerial.print("Connection granted"); 
    val=blueToothSerial.read();
    Serial.println(val);
  }
 
  if(val=='0') 
  {
    digitalWrite(ledpin,LOW);
    delay(1000); 
    Serial.println("13 off");
  }
  if(val=='1') 
  {
    digitalWrite(ledpin,HIGH);
    delay(1000); 
    Serial.println("13 on");
  }
  delay(2000);
}

void setupBlueToothConnection()
{
 blueToothSerial.begin(115200); //Set BluetoothBee BaudRate to default baud rate 115200
 blueToothSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
 blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
 blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
 delay(2000); // This delay is required.
 blueToothSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable
 Serial.println("The slave bluetooth is inquirable!");
 delay(2000); // This delay is required.
 blueToothSerial.flush();
}
Die Ausgabe "The slave bluetooth is inquirable!" ist die erste Ausgabe die nicht angezeigt wird.
Stimmt etwas in meinem Code nicht, oder stimmt etwas mit der Verbindung nicht?

Hoffe mir kann hier jemand weiterhelfen

Feanur
« Last Edit: May 01, 2013, 08:19:14 am by Feanur » Logged

Germany
Online Online
Edison Member
*
Karma: 48
Posts: 2336
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Du belegst sowohl fürs Bluetooth-Shield als auch für die normale Kommunikation Pin 0 und 1, einmal per Software-Serial (BT) und einmal als Hardware-Serial.
Also Shield umjumpern auf Pin 3 und 4, Code anpassen und weiterbasteln - falls sich nicht noch ein Fehlerchen findet. smiley-wink
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für den Hinweis, werd ich dann gleich mal probieren
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok ich das mal probiert.
Stimmt das so?

Code:
#include <SoftwareSerial.h>

#define RxD 6
#define TxD 7


char val;
int ledpin =13;
SoftwareSerial blueToothSerial(RxD,TxD);

void setup(){
  Serial.begin(38400); 
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  pinMode(ledpin,OUTPUT);
  setupBlueToothConnection();

}

void loop(){

  if(blueToothSerial.available()){
    val=blueToothSerial.read();
    Serial.println(val);
  }
 
  if(val=='0') 
  {
    digitalWrite(ledpin,LOW); //turn Off pin 13
    delay(1000); 
    Serial.println("13 off");
  }
  if(val=='1') 
  {
    digitalWrite(ledpin,HIGH); //turn On pin 13
    delay(1000); 
    Serial.println("13 on");
  }
  delay(2000);
}

void setupBlueToothConnection()
{
 blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
 blueToothSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
 blueToothSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
 blueToothSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
 delay(2000); // This delay is required.
 blueToothSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable
 Serial.println("The slave bluetooth is inquirable!");
 delay(2000); // This delay is required.
 blueToothSerial.flush();
}

Jetzt sehe ich nur noch "The slave bluetooth is inquirable! die anderen Ausgabe bekomme ich nun nicht mehr. Aber das Programm macht leider immer noch nicht was es soll. Ich finde meine Fehler einfach nicht  smiley-cry
Logged

Germany
Online Online
Edison Member
*
Karma: 48
Posts: 2336
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Wie sieht denn die "Gegenstelle" aus? Wer sendet denn '1' oder '0'?
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ich machen das mit Putty (Console) gebe da 1 oder 0 ein und sende das, das müßte dich gehen oder
Logged

Germany
Online Online
Edison Member
*
Karma: 48
Posts: 2336
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Und Putty ist dann so konfiguriert, dass ein Com-Port einen BT-Adapter angesprochen wird? So schickst du ein Zeichen bei 38400 Baud und erwartest eine Rückmeldung im Serial Monitor der Arduino-IDE? Habe ich hoffentlich richtig verstanden?
Und da erscheint dann keinerlei Reaktion auf irgendeinen Tastendruck?

Dein Codeblock sollte ja zumindest irgendwas ausgeben:
Code:
if(blueToothSerial.available()){
    val=blueToothSerial.read();
    Serial.println(val);
  }
Logged

Mein Arduino-Blog: http://www.sth77.de/ - letzte Einträge: Teensy 3.0 - Teensyduino unter Window 7 - Teensyduino unter Windows 8

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hab bei Putty den Com Port (für BT, bei mir Com 6 ) eingestellt und auch die Baud rate ist eingestellt
Ja das sollte er machen, und er sollte auch das LED ein bzw ausschalten
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok hab mich mal weiter gespielt. Das Shield ist eingestellt und mein Code sieht folgendermaßen aus:

Code:
//simple LED Test
#include <SoftwareSerial.h>

#define RxD 6
#define TxD 7


int val=2;
int ledpin =13;
SoftwareSerial mySerial =  SoftwareSerial(RxD, TxD);

void setup(){
  mySerial.begin(38400);
  Serial.begin(9600); 
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
  pinMode(ledpin,OUTPUT); //pin 13 as output
 

}

void loop(){
  Serial.println(mySerial.available());
  if(mySerial.available()>0){
    val=mySerial.read();
    Serial.println(val);
    }
 
  if(val=='0')  //if '0' was received led 13 is switched off
  {
    digitalWrite(ledpin,LOW); //turn Off pin 13
    delay(1000);  //waits for a second
    Serial.println("13 off");
  }
  if(val=='1')  //if '1' was received led 13 on
  {
    digitalWrite(ledpin,HIGH); //turn On pin 13
    delay(1000);  //waits for a second
    Serial.println("13 on");
  }
  delay(2000);
}


Mein Problem ist das ich bei   Serial.println(mySerial.available()); immer 0 erhalte, wo liegt da mein Fehler?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

So nun habe ich meine Code nochmals ganz von vorne begonnen und hab alles auf einem UNO Board getestet. Alles ok. Doch sobald ich den Code auf mein MEGA (2560 R3) lade, funktioniert die Übertragung nicht mehr. An was kann es liegen? Die Einstellungen sind bei beiden Boards gleich.

Hier nochmals der Code:

Code:
#include <SoftwareSerial.h>
#define RxD 7
#define TxD 6

int ledpin=13;
int val=2;
SoftwareSerial mySerial = SoftwareSerial(RxD, TxD);

void setup(){
  mySerial.begin(38400);
  //Serial.begin(9600);
  pinMode(ledpin,OUTPUT);
  pinMode(RxD, INPUT);
  pinMode(TxD, OUTPUT);
}

void loop(){
  if(mySerial.available()>0){
    val=mySerial.read();
  }
  
  if(val=='0'){
    digitalWrite(ledpin,LOW);
    mySerial.println("LED OFF");
    delay(1000);
  }
  if(val=='1'){
    digitalWrite(ledpin,HIGH);
    mySerial.println("LED ON");
    delay(1000);
  }
}

« Last Edit: May 05, 2013, 11:09:56 am by Feanur » Logged

Pages: [1]   Go Up
Jump to: