Go Down

Topic: Bluetooth mit itead shild (Read 1 time) previous topic - next topic

mehlwurm

Hi,
ich experimentiere mit Bluetooth. Ich habe ein Arduino UNO und das iteadstudio Shild.
(http://store.iteadstudio.com/images/produce/Shield/BTshieldv2.2/BTShieldV2.2_DS.pdf)
Zum Testen der Verbindung möchte ich nun über Bluetooth die LED13 auf dem Arduino an und aus machen.

Es hat einen UART Multiplexer um den RX und TX Pin zu stecken.

TX 0 0 1 0 0 0
D0 0 0 1 0 1 0
RX 0 0 0 0 1 0

auf der Platine ist auch aufgeschrieben:  [D0],D1,D4,D5,D6,D7

Ich gehe davon aus das es dann die Digitalen Pins sind. Bei meiner jumper konfiguration müsste es also TX = 4 und RX = 6 sein.

Mein Code ist
Code: [Select]
#include <SoftwareSerial.h>

//SoftwareSerial mySerial(10, 11); // RX, TX
#define rxPin 6
#define txPin 4

SoftwareSerial Bluetooth(rxPin, txPin);

int ledPin = 13;
int BT_val;

void setup() 
{
  //Bluetooth
  Bluetooth.begin(115200);
 
  pinMode(ledPin, OUTPUT);
}

void loop() // run over and over
{

// BLUETOOTH //
  while (Bluetooth.available() == 0)
    Bluetooth.println("Bluetooth connected");
    BT_val = Bluetooth.read() - '0';
   
  if(BT_val == 1) {
    Bluetooth.print("LED is on");
    digitalWrite(ledPin, HIGH); 
  }
  else if(BT_val == 0) {
   Bluetooth.print("LED is off");
   digitalWrite(ledPin, LOW);
  }
  else {
   Bluetooth.print("Invalid!");
  }
}


Ich arbeite auf einem Mac und hab nun die Arduino Software offen, das Shield gepaird und die Serielle Konsole offen mit 115200 Baud. Wenn ich nun eine 1 oder irgend was sende - passiert gar nichts!
Ok, natürlich ist das Arduino Board noch per USB angeschlossen um halt mit der Konsole ein Feedback zu bekommen, aber es müsste doch trotzdem etwas passieren.

Zum weiteren Testen habe ich mit Processing auch ein kleines Tool das auf 115200 Baud per klick eine 1 oder 0 sendet. Allerdings passiert damit auch nichts. Weder auf der Konsole noch leuchtet die LED!

Code: [Select]
import processing.serial.*;

Serial myPort;
String input;

boolean farbe = false;
void setup()
{
  //Alle Ports ausgeben und den richitgen auswählen
  println(Serial.list());
  //Index entsprechend setzten
  String portName = Serial.list()[8]; // [8] "/dev/tty.itead-DevB"
  myPort = new Serial(this, portName, 115200);
  //Erstes Einlesen wegwerfen
  input = myPort.readStringUntil('\n');
  input =null;

  size(200,200);
  background(0);
  smooth();
}
void draw()
{
  if(farbe)
  {
    background(255,0,0);
    myPort.write("1");
  }
  else
  {
    background(0);
    myPort.write("0");
  }
}
void mousePressed()
{
  farbe = !farbe;
}


Bin langsam am verzweifeln, kann mir jemand bitte helfen?

mehlwurm

mmhh keiner eine Idee... Ich bin mit Bluetooth noch ein Anfänger, habe aber gefunden das man natürlich noch beim Adruino Programm den Serial Port auf tty-itead-dev8 umschalten müsste.

Trotzdem bekomme ich gar nichts. Ich habe nun auch erstmal versucht überhaupt dort etwas empfangen zu können.

Code: [Select]
#include <SoftwareSerial.h>

//SoftwareSerial mySerial(10, 11); // RX, TX
#define rxPin 2
#define txPin 4

SoftwareSerial Bluetooth(rxPin, txPin);
void setup() 
{
  Bluetooth.begin(115200);
}

void loop()
{
  Bluetooth.println("test text");
  delay(1000);
}


Also Shield ist auch gekoppelt und Serial Monitor ist nun auch auf dem richtigen Port. Aber trotzdem bekomme ich meine println nicht. Was funktioniert nicht?? Bitte ich steh total auf dem schlauch. Glaube aber immer noch das es mit den Pins zu tun hat - auch wenn ich schon fast alle kombinationen versucht habe.

mehlwurm

Habe ein Video gefunden aber leider wird dort ein anderes Bluetooth Shield genutzt.
https://www.youtube.com/watch?v=g0pSfyXOXj8

Darin wird folgendes erklärt:

BT            Arduino
RX <--------> TX
TX <--------> RX

miteinander verbunden werden. Laut Arduino Uno beschreibung ist RX auf DigitalPin 0 und TX auf DigitalPin 1. Wenn die Jumper folgend gesteckt werden

TX 100000
D0 110000
RX 010000

(denke entspricht: TX = 0; RX = 1)

dauert es zwar ewig das der Serial Monitor sich aktiviert aber auch dieses ist ohne Erfolg.

Hoffe jemand wird sich finden der mir helfen kann.


mehlwurm

kann wirklich keiner helfen??

dertester

Stimmt denn überhaupt die Baud-Rate?
Mein Bluetooth modul (ohne den shield) werkelt nur bei 9600. Ich glaube mal was gelesen zu haben, das man das teilweise vorher testen muss/einstellen muss.

Dein Ansatz mit Softserial ist schon gut. Wenn du USB dran hast geht mein Bluetooth modul z.b. gar nicht auf pin0 und 1. Ich nehm immer 2&3 bzw welche ohne pwm ;)

Ich hab auch immer wieder Probleme Rx/tx auseinanderzuhalten. Ich steck das einfach immer um wenns net klappt. Kann sein das du den BLuetooth Shield dann einmal vom Strom nehmen musst weil sich das Modul aufhängt dabei.

Auch musste drauf achten ob es 3.3V oder 5V will :) und ob ggf. auch dein Pairing device funktioniert.

Es gibt im learning auf arduino.cc unter commuication nen Beispiel wo glaub das was auf Serial reinkommt auf Bluetooth serial ausgegeben wird und andersrum.
Das kannste auch mal testen um ggf. Fehler in eine Richtung auszuschließen :)

Praktisch auch immer wenn du Softserial nutzt dir alles parallel auf Serial auszugeben am Serialmonitor um einfach sicher zu sein das auch dein Restcode stimmt.


Also ich würde:
1.Baudraten durchtesten
2.Verkabelung checken und auch rx/tx tauschen wenn ich mir eig. ziemlich sicher bin.
3.mein Programm mal checken und immer alles auf Serial parallel ausgeben lassen.

Go Up