Tag: bluetooth

Bluetooth – Android

LOFI Robot EDUBOX - zest edukacyjny do nauki robotyki i konstruowania robotów

W sklepie z aplikacjami Google Play dostępnych jest sporo aplikacji umożliwiających komunikację z Arduino przez bluetooth. Są one różnej jakości (często dość słabej) ale większość jest darmowa i kilka z nich jest całkiem użytecznych.

W tym artykule pokażę jak skonfigurować Arduino aby komunikowało się bezprzewodowo z Androidem. Od strony Androida skorzystamy z aplikacji Arduino BT Joystick Free, która umożliwia wykorzystanie smartfona/tablety jako prostego gamepada.

Interfejs aplikacji umożliwia wykorzystanie 10 przycisków i danych z akcelerometru (obrót urządzenia względem osi X, Y przyspieszenie wzg. osi Z).

Od strony Arduino możemy zaprogramować właściwie dowolne wykorzystanie danych, które otrzymujemy z aplikacji, w tym wypadku będziemy wykorzystywać ją jako kontroler pojazdu, ale jeśli chciałbyś wykorzystać Arduino jako inteligentny sterownik urządzeń w twoim domu, równie dobrze aplikacja Arduino BT Joystick może być również jego interfejsem (na tym polega moc OPEN SOURCE!),

Konfiguracja Androida

1. Ze sklepu Google Play zainstaluj aplikację Arduino BT Joystick Free
2. W ustawieniach telefonu otwórz preferencje bluetooth i wyszukaj dostępne urządzenia, jeśli modem HC-06 jest włączony powinien pojawić się na liście urządzeń jako LoFiRobot, sparuj go z telefonem. Jak numer PIN podaj 1234
3. Uruchom aplikację Arduino BT Joystick, na głównym ekranie aplikacji kliknij przycisk CONNECT, wyświetli się lista dostępnych połączeń, z której wybierz LoFiRobot (jeśli nie ma go na liście oznacza to, że modem nie został dobrze sparowany lub jest wyłączony)
4. Po połączeniu aplikacji z modułem bluetooth na ekranie aplikacji pojawi się komunikat, że połączenie zostało nawiązane a na module bluetooth czerwona dioda powinna zacząć świecić światłem ciągłym.

Konfiguracja Arduino

Podłączenie modemu bluetooth:
1. VCC – do +5V (plus zasilania)
2. GND – do GND (masa zasilania)
3. TXD (nadawanie) – do pinu cyfrowego nr 3
4. RXD (odbiór) – do pinu cyfrowego nr 2

Piny komunikacyjne (TXD i RXD) podłączamy tym razem do innych wejść na Arduino, dzięki czemu będziemy mieć możliwość podglądu komunikacji na komputerze przez kabel USB

Podłączenie elementów robota:

Konstrukcja robota, którym będziemy sterować może być dowolna, na potrzeby tego przykładu wykorzystamy podstawowy model pojazdu z zestawy NA KOŁACH. Dodatkowo dodamy mu klakson w postaciu buzzera i reflektory w postacio diod LED.

1. Silniki do pinów cyfrowych nr 9 i 10
2. Buzzer do pinu cyfrowego nr 4
3. Diody do pinu cyfrowego nr 5

Sterowanie

– krzyżyk ze strzałkami steruje ruchami silników
– przycisk TRÓJKĄT – steruje pinem cyfrowym nr 4 (klakson – buzzer)
– przycisk KWADRAT – steruje pinem cyfrowym nr 5 (światła – diody LED)

Kod do wgrania na Arduino:

/*

# = 35
= = 61

x = 120
y = 121
z = 122

b = 98

 */
#include <SoftwareSerial.h>
#include <Servo.h> 

 
Servo serwo_lewe;
Servo serwo_prawe;

SoftwareSerial mySerial(3, 2); // RX, TX


int button;


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

mySerial.begin(57600);
serwo_lewe.attach(10);
serwo_prawe.attach(9);

pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);

}

void loop() // run over and over
{

  if (mySerial.available()) {
   int val =  mySerial.read();
  
  if (val == 98) {
      if (mySerial.available()) 
   mySerial.read();
   
     if (mySerial.available()) 
    button =  mySerial.read();
    Serial.print("button = ");
   Serial.println( button);
  }

  }
  
  
  if (Serial.available())
    mySerial.write(Serial.read());
    

    if (button == 48)
      stop();
      
    if (button == 49)
      przod();
      
    if (button == 50)
      tyl();
      
       if (button == 51)
      lewo();
      
       if (button == 52)
      prawo();
      
            if (button == 55) {
      digitalWrite(5,HIGH);
            }
            else {
               digitalWrite(5,LOW);
            }
            
      if (button == 56) {
      digitalWrite(6,HIGH);
            }
            else {
               digitalWrite(6,LOW);
            }
}

void przod() {
      serwo_lewe.write(60);
  serwo_prawe.write(120);
}

void tyl() {
    serwo_lewe.write(180);
  serwo_prawe.write(0);
}

void lewo() {
  serwo_lewe.write(180);
  serwo_prawe.write(180);
}

void prawo() {
  serwo_lewe.write(0);
  serwo_prawe.write(0);
}

void stop() {
   serwo_lewe.write(89);
  serwo_prawe.write(89);
}

Bluetooth – konfiguracja

Moduł bluetooth, który wchodzi w skład zestawu NA KOŁACH to model HC-06, powszechnie wykorzystywany do komunikacji z Arduino. Egzemplarz dołączony do zestawy jest odpowiednio skonfigurowany do pracy ze Snap4Arduino (ma nadaną nazwę LoFiRobot i prędkość transferu ustawioną na 56700kbps)

Moduł bluetooth HC-06 może lączyć się z:
– komputerami wyposażonymi w nadajnik bluetooth
– smartfonami i tabletami z systemem Android (praktycznie wszystkie modele, które mają nadajnik bluetooth)

Niestety nie jest możliwe połączenie modemu HC-06 z systemem iOS (iPhone, iPad), gdyż tego rodzaju komunikacja jest w tym systemie zablokowana. Aby połączyć Arduino z urządzeniem iOS, konieczne jest użycie modemu w standardzie Bluetooth 4.0 LE (Low Energy).

Połączenie modułu bluetooth z Arduino

Moduł bluetooth - HC-06 - tył

Moduł HC-06 posiada cztery nóżki goldpin, opisane na tylnej ściance modułu, wpinamy je w płytkę prototypową i podłączmy odpowiednio do Arduino:
1. VCC – do +5V (plus zasilania)
2. GND – do GND (masa zasilania)
3. TXD (nadawanie) – do RX1 na Arduino (pin cyfrowy nr 0)
4. RXD (odbiór) – do TX1 na Arduino (pin cyfrowy nr 1)

Moduł bluetooth HC 06 - Arduino Leonardo

Parowanie z komputerem/smartfonem/tabletem

Podobnie jak w przypadku każdego innego urządzenia komunikującego się w standardzie bluetooth, aby połączyć go z innym urządzeniem należ najpierw wykonać tzw. PAROWANIE urządzeń, w tym celu:

1. Podłącz moduł HC-06 do zasilania – jego wbudowana czerwona dioda zacznie migać (mniej więcej dwa razy na sekundę)
2. Na komputerze lub urządzeniu mobilnym uruchom preferencje bluetooth i wyszukaj dostępne urządzenia, na liście powino pojawić się urządzenie o nazwie LoFiRobot (ewentualnie zamiast nazwy będzie surowy adres MAC urządzenia, mniej więcej taki 00-12-ab-34-cd-5e)
3. Połącz komputer/smartfon/tablet z urzadzeniem LoFiRobot a jako kod PIN podaj 1234
4. LoFiRobot powinien pojawić się na liście sparowanych urządzeń

Procedura parowania na pierwszy rzut oka może wyglądać na odrobinę pogmatwaną ale na szczęście wykonujemy ją tylko raz.

Połączenie ze Snap4Arduino

Aby Arduino mogło połaczyć się ze Snapem przy pomocy modemu bluetooth, konieczne jest wgranie na Arduino odpowiedniej wersji skryptu Firmata (standardowo używamy StandardFirmata), w tym celu:
1. Ściągnij biblioteki: FIRMATA BLUETOOTH + NEW PING i rozpakuj. Jest to wersja firmaty odpowiednio zmodyfikowana dla modemu bluetooth oraz wykorzystywana przez nią biblioteka NewPing.
2. Po rozpakowaniu powinienneś otrzymać katalog FirmataPlusLBT oraz NewPing, przenieś je do folderu (Windows) Moje Dokumenty\Arduino\libraries\ lub (Mac OS) Dokumenty\Arduino\libraries, jeśli w katalogu Arduino nie ma katalogu libraries, musisz go najpierw utworzyć
3. Uruchom program Arduino, jeśli wgrałeś bibliotekę FirmataPlusLBT w odpowiednie miejsce, program Arduino powinien Automatycznie wyszukać jej przykłady, otwórz skrypt: Plik->Przykłady->FirmataPlusLBT->FirmataPlusLBT i załaduj go na płytkę Arduino

Jeśli poprawnie wgrałeś skrypt FirmataPlusLBT i podłączyłeś moduł bluetooth do Arduino możesz go połączyć z programem Snap4Arduino w normalny sposób.
1. Uruchom program Snap4Arduino
2. Jeśli Arduino podłączone jest do komputera przez kabel USB odłącz go, tak aby Arduino działało samodzielnie (zasilane z baterii) i możliwe było połączenie tylko przez modem bluetooth
3. W zakładce Arduino kliknij przycisk Connect Arduino, program powinien automatycznie wyszukać modem bluetooth (ewentualnie należy wybrać go z listy dostępnych urządzeń, która rozwinie się pod przyciskiem Connect Arduino)
4.Jeśli modem bluetooth jest odpowiednio sparowany z komputerem/smartfonem w momencie gdy połączenie jest nawiązane dioda na modemie HC-06 zaczyna świecić światłem ciągłym
5. Jeśli pomimo dobrego połączenia z modemem HC-06 (czerwona dioda świeci ciągle) Snap4Arduino nie chce się połączyć z Arduino, być może źle wgrany jest skrypt FirmataPlusBLT, lub modem jest błędnie podłączony do arduino, częstym błędem jest nieodpowiednie podłączenie pinów TX i RX

TXD (modemu) -> RX1 (Arduino)
RXD (modemu) -> TX1 (Arduino)

Aby wrócić do połączenia Arduino ze Snap4Arduino przez kabel USB należy na płytkę ponownie wgrać skrypt StadnardFirmata (Plik->Przykłady->Firmata->StandardFirmata)