Arduino & Bluetooth Linvor V1.5

Wireless Bluetooth RS232 TTL Transceiver Module

Recent m-am apucat sa ma joc cu placile Arduino bazate pe procesorul ATmega328. Am comandat o placa originala si o placa de la alt producator ca sa vad diferenta. Din punct de vedere “Lucratura” se vede diferenta, insa, si diferenta de pret este pe masura. Functional identic.

Placut impresionat de “jucarie”. Instalare simpla chiar si pe platforme Linux, documentatie buna, OpenSource si ce ma uimit cu adevarat este debug-erul.

Intre timp comandasem si o placa bluetooth cu cipset BC417, un OEM numit linvor cu firmware V1.5

Am zis ca o asemenea jucarie este utila pentru remote debuging sau alte aplicatii in care ai nevoie sa “scuipi” ceva valori mai la distanta. Zis si facut. Dupa 3 zile de studiu am reusit sa pun treba in miscare, asa ca o documentez aici pentru orice eventualitate.

  • Alimentare la 3.3 V conform specificatiei ! A se respecta !
  • Teoretic lucreaza cu TTL 3.3V si pe RX / TX insa acest modul tolereaza si TTL de 5V. Se pare ca sunt modele care se ard la TTL 5V
  • Configurabil prin comenzi AT (doar daca nu este sincronizat cu un echipament bluetooth)
  • Acest modul lucreaza doar in mod Slave. Cf. specificatiei se poate inlocui firmware-ul (a se cauta HC-05)

Modulul se poate utliza ca bridge transparent de conexiune seriala. In linux se va utiliza Blueman bluetooth management utility care stie sa ridice si un port serial peste bletooth. Am testat si alte utilitare, dar nu au functionat corespunzator.

Am scris un mic programel care ia pachetele de pe interfata seriala arduino (pin 0,1) si o muta pe pin 2,3 pentru a comunica cu placa BT.
Cu ajutorul acestui cod se poate testa conectivitatea dupa cum urmeaza:
screen (terminal) pe interfata /dev/ttyACM01 ce se ridica la conectarea placii arduino si
screen pe /dev/rfcomm0 – interfata seriala ridicata de conexiunea BT.

Practic cele doua terminale vor comunica prin placa arduino.

#include < NewSoftSerial.h >
NewSoftSerial mySerial(2, 3);
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
}
void loop()
{
if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}