BlueTooth shielc panel nem működik teljesen

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

BlueTooth shielc panel nem működik teljesen

Hozzászólás Szerző: pentike »

Sziasztok!

Nem nagyon sikerül teljesen jól beállítanom a BT shield panelemet. Eddig ami sikerült:

Avr chip nélkül oda-vissza megy a kommunikáció. Amit az usb oldalon beküldök, megjelenik a BT végén és fordítva.
A +++ hatására OK -t ír, de onnantól kezdve további parancsra nem reagál, csak echozza a begépelt karaktereket.
[szerk:] ha pl. ATD? -t küldök neki akkor egy A betűt ad csak vissza.

Avr chipet betéve a program által küldött üzenetek megjelennek mind az usb termilában, mind a BT terminálban. Az USB terminálról tudok üzenetet küldeni a programnak, de a BT terminálba gépelt ugyanolyan parancsokra nem reagál.

Ha van valakinek tapasztalata a panellel, írja le, hogy minek hogy kéne működnie.

Köszi!
pentike
A hozzászólást 1 alkalommal szerkesztették, utoljára pentike 2012. szeptember 30. vasárnap, 19:29-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A HW sorosportot használod vagy a Szoftveresből valamelyiket?
A Tx/Rx lábak jól vannak bekötve?
A BT modul sebessége 19200 bps. Az arduino alatt is 19200 bps-re nyitod meg a csatornát?
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

A HW soros portot használom mindkét esetben.

Ha nincs betéve az AVR chip, akkor BT RX - Arduino RX, BT TX - Arduino TX a bekötés. Ha be van téve, akkor pont a fordítottja.

A chipen nem Arduino fut, hanem saját program ami kb a következő:
while(1) {
printf("getchar:");
char c = getchar();
printr("got char: %d\n");
_delay_ms(1000);
}

Ez folyamatosan 48-at ad eredményül, de ha elkezdek adatot küldeni a bluetooth-on, akkor átvált 0-ra. A port 19200 baud-ra van állítva és usb soros porton ezzel a beállítással teljesen jól működik.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A 48 az a 0 kódja :(
na innentől nem tudom mi lehet a hiba....

De mi van, ha a BT modul nélkül írsz a Arduino modulnak? Ekkor ugye a RX lábán veszi a jelet....

Rx-be és utána a Tx lábán kiadja.... (BT modul ekkor ne legyen rajta!)
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Ha nincs bedugva a BT modul, akkor USB soros porton keresztül teljesen jól kommunikál.

Ha be van dugva a BT Arduino TX - BT RX és Arduino RX - BT TX beállítással, akkor is jól megy az USB kommunikáció, de a BT csak azokat a szövegeket írja ki amiket az AVR küld. Az AVR nem kap értelmes karaktereket a BT -tól, tehát csak az egyik irány működik.

Nem lehet valami illesztési probléma? Azt olvastam, hogy a 3.3V-os BT modul nem mindig tudja meghajtani rendesen az AVR lábát.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Hozzászólás Szerző: Robert »

A 3.3V-os kimenet ha nem hajtja meg az 5V-os AVR lábát, akkor hibás az AVR :).

Keresztkérdés: SoftSeriallal próbáltad a BT modult? Jó lenne látni, hogy az AVR nem dolgozza fel, vagy a BT-ből nem jön ki az adat jól...
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

A SoftSeriallal nem próbáltam. A BlueTooth-ból kijön az adat, ha az AVR nincs bedugva. Amit a BT oldalon beküldök, az szépen kijön az USB-n és viszont.

A helyzet az, hogy kölön-külön ugyanazokkal a port beállításokkal a BT - az AT parancsoktól eltekintve - és az AVR is működik, csak valahogy együtt nem akar menni.
Avatar
pentike
DrótVégénSzéndarab
Hozzászólások: 21
Csatlakozott: 2010. november 6. szombat, 6:00

Hozzászólás Szerző: pentike »

Kipróbáltam, SoftSeriallal működik. Sajnos a 3-as lábra nem reagál, de a 2,4 lábakkal jó.

Az Arduino bootloader visszatöltésével volt egy kis gondom, mert alapból nem jó az stk500v2 beállítása az arduino-ban.
Módosítani kellett a

Kód: Egész kijelölése

hardwares/arduino/programmers.txt
fájlban

Kód: Egész kijelölése

avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2
részt

Kód: Egész kijelölése

avrispmkii.name=AVRISP mkII
avrispmkii.communication=serial
avrispmkii.protocol=stk500v2
usb helyett serialra és úgy már simán feltöltötte.

Ezután az alábbi kicsit módosított Arduino példaprogrammal teszteltem:

Kód: Egész kijelölése

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 4); // RX, TX
int c =0;

void setup()  
{
 // Open serial communications and wait for port to open:
  Serial.begin(19200);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  
  Serial.println("Goodnight moon!");

  // set the data rate for the SoftwareSerial port
  mySerial.begin(19200);
  mySerial.println("Hello, world?");
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available()) {
    c = Serial.read();
    Serial.write(c);
     mySerial.write(c);
  }
}
Válasz küldése