BlueTooth shielc panel nem működik teljesen
BlueTooth shielc panel nem működik teljesen
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
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.
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.
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.
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.
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.
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.
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.
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 fájlban
részt
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:
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.txtKód: Egész kijelölése
avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2
Kód: Egész kijelölése
avrispmkii.name=AVRISP mkII
avrispmkii.communication=serial
avrispmkii.protocol=stk500v2
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);
}
}