KKM: BLUETOOTH MODUL HM-10

KKM: BLUETOOTH MODUL HM-10-Uncategorized

Početnik si s Dasduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala tvrtke soldered na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Dasduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

Bluetooth modul HM-10 omogućava Bluetooth 4.0(BLE 4.0) komunikaciju između Vašeg projekta i drugog Bluetooth uređaja; npr. mobitela. Konekcija s Dasduinom je uistinu jednostavna putem serijske komunikacije, a modul radi na standardnom naponu od 3.3V i 5V. Ovaj modul funkcionirat će s iOS6 i većim sustavima te s Android 4.3 i većim.

Karkateristike:
• Bluetooth standard: 4.0
• funkcionira s iOS6 i većim te Android 4.3 i većim
• Napon: 3V – 6V
• Struja: 60uA – 400uA
• Antena: na tiskanoj pločici
• Dimenzije: 43mm x 16mm

KAKO RADI?

Bluetooth modul HM – 10 je vrlo svestran ima više verzija i možemo ga koristiti u raznim kombinacijama kao što su : HM – 10 i Mobilni uređaj, HM – 10 i HM – 10, HM – 10 i PC… itd. Ova verzija je montirana na breakout pločici koja izlaže napajanje i UART veze za pinove koji su prikladni za rad. Breakout pločica uključuje 3.3v regulator snage koji ih čini 5V kompatibilan. Te bi trebao imati na umu da je RX pin je još uvijek 3.3v i kada koristite 5v Dasduino trebali pretvoriti Dasduinov 5v TX na 3.3v za HM-10 RX.

Opis pinova
STATE – Stanje konekcije
LOW – kada nije spojen. HIGH kada je spojen
VCC – Napajanje 3.6v do 6v
GND – Uzemljenje
TXD – Serial UART transmit
RXD – Serial UART receive
BRK – Break pin. Kada je konekcija aktivna, postavljajući BRK pin na LOW prekida konekciju. Kada nema konekcije postavljajući BRK pin na HIGH ili LOW nema nikakvog učinka.

LED na HM – 10 modulu
Na pločici modula ugrađena je LEDioda koja signalizira konekciju. Kada LED trepće tada čeka konekciju, osvijetli se na pola sekunde i pola sekunde bude ugašena. LED ostane osvijetljena kada je konekcija uspostavljena i ponovo počne treptati kada konekcije nema. On u osnovi prikaziju uspostavljanje veze s drugim uređajem i tako uključuje LED kako bi se prikazao status veze. Nakon što je uparivanje završeno, veza se zatvara i LED se isključuje.

Ponašanje LED-a može se promijeniti pomoću naredbe PIO1.
“AT + PIO10 ″ – Zadana postavka. Kada nije spojen, LED treperi 500 ms, 500 ms. Kada je spojen, LED svijetli.
“AT + PIO11 ″ – Kada nije spojen, LED je isključen. Kada je spojen, LED svijetli.

Bluetooth 4 BLE
BLE nije nadogradnja na Bluetooth Classic, već je drugačiji sustav s različitim namjenama uporabe. BLE djeluje na vrlo različit način od ranijeg Bluetootha. BLE je dizajniran za primjene s niskom razinom energije i to postiže korištenjem rijetkih malih paketa podataka. To zapravo nije dizajnirano za kontinuirane veze i velike količine podataka. Za to je Bluetooth Classic bolji izbor. U suštini, BLE postiže svoju nisku potrošnju energije tako što je ne često povezuje, za razliku od Bluetooth Classic-a koji održava stalnu vezu.

Postoje 2 načina kako BLE uređaji mogu međusobno razgovarati; Broadcaster + Observer i, Central + Peripheral. HM-10 može koristiti obje metode.
Kod Broadcaster + Observer-a nema standardne veze, emiter, obično neka vrsta senzora, šalje periodične signale (reklamne pakete) koje Observer sluša. Emiter obično ne zna je li nešto slušao ili ne.
Scenarij Central + Peripheral više je (ali ne baš isti) kao klasična veza. Kada Centralni (glavni) uređaj pronađe periferni (slave) uređaj s kojim se želi spojiti, inicira vezu i preuzima glavnu ulogu u upravljanju vezom i tajmingom.

HM-10 Usluge i značajke
BLE je sve o uslugama i karakteristikama i kao i svi BLE uređaji, HM-10 ima skup usluga i svaka usluga ima skup povezanih značajki. Značajke su tamo gdje su vrijednosti, neke su READ, neke su WRITE, a neke su READ i WRITE.

Sve usluge na HM-10 su unaprijed definirane osim jedne. Ovo je prilagođena usluga koja ima jednu prilagođenu karakteristiku. Unaprijed definirane usluge i karakteristike su one u kojima UUID i ime određuju Bluetooth upravljačka tijela. Na primjer, karakteristika 0x2A00 je naziv uređaja i kada uređaj ima tu karakteristiku, uvijek bi trebao biti naziv uređaja

Potpuni popis unaprijed definiranih usluga možete pronaći OVDJE, a popis karakteristika je OVDJE.

HM-10 koristi prilagođenu karakteristiku za slanje i primanje podataka koje prima preko serijskog UART sučelja. Djeluje tako što postavlja vrijednost prilagođene karakteristike vrijednosti podataka koje treba prenijeti. Zatim šalje obavijest udaljenom uređaju i kaže da su dostupni novi podaci.
Kada kažete HM-10 da prenosi “HELLO”, prvo postavlja vrijednost prilagođene karakteristike na “HELLO”, a zatim šalje obavijest koja govori udaljenom uređaju “Hej, imam nove podatke, dođi i uzmi Udaljeni uređaj skenira obavijesti i kada ga primi zna da postoji nova vrijednost, tako da čita podatke, a zatim šalje natrag poruku “Hvala, imam je”.
Prilagođena karakteristika može sadržavati do 20 znakova, što znači slanje niza duljih od 20 znakova, a HM-10 dijeli podatke na 20 znakovnih segmenata i šalje ih po jedan sve dok ih ne ostane.

SERVICE 1
UUID: 00001800-0000-1000-8000-00805F9B34FB
GENERIC ACCESS
• UUID: 00002A00-0000-1000-8000-00805F9B34FB
• DEVICE NAME
• READ

• UUID: 00002A01-0000-1000-8000-00805F9B34FB
• APPEARANCE
• READ

• UUID: 00002A02-0000-1000-8000-00805F9B34FB
• PERIPHERAL PRIVACY FLAG
• READ/WRITE

• UUID: 00002A03-0000-1000-8000-00805F9B34FB
• RECONNECTION ADDRESS
• READ/WRITE

• UUID: 00002A04-0000-1000-8000-00805F9B34FB
• PERIPHERAL PREFERRED CONNECTION PARAMETERS
• READ

SERVICE 2
UUID: 00001801-0000-1000-8000-00805F9B34FB
GENERIC ATTRIBUTE
• UUID: 00002A05-0000-1000-8000-00805F9B34FB
• SERVICE CHANGED
• INDICATE

SERVICE 3
UUID: 0000FFE0-0000-1000-8000-00805F9B34FB
CUSTOM SERVICE
• UUID: 0000FFE1-0000-1000-8000-00805F9B34FB
• CUSTOM CHARACTERISTIC
• READ/WRITE/NOTIFY

Glavni dio korisničke UUID usluge (FFE0) te glavni dio prilagođene karakteristike UUID (FFE1) može se promijeniti putem AT naredbi. Može se dodati i druga karakteristika, prema potrebi.

KAKO POVEZATI?

Sada ćemo pokazati jedan vrlo jednostavan sklop Dasduina s HM – 10 koji će preko mobitela osvjetljavati i gasiti LEDiodu. Za ovaj sklop će nam biti potrebni Bluetooth HM – 10, Dasduino, LEDioda, par žica za spajanje i naravno, mobilni uređaj.

VCC HM – 10 spajamo na 5v ili 3.3v Dasduina, GND na GNDRXD spajamo na digitalni pin 11 Dasduina, a TXD na digitalni pin 10.

Da bismo kontrolirali sklop, trebat će nam uređaj s kojim ćemo ga upravljati, npr. mobitel. Trebat će nam jedna od aplikacija za upravljanje bluetooth uređajem preko mobitela, u ovom primjeru ćemo koristiti aplikaciju Serial Bluetooth Terminal koju možete skinuti preko trgovine play za android.

Ako ste uspješno spojili i kopirali kod, tada kada se spojite s vašim mobilnim uređajem, na terminalu aplikacije bi trebali dobiti poruku „Bluetooth veza je ukljucena“.
S komandom „on“ osvijetlit ćete LEDiodu ugrađenu na Dasduinu i na breadboardu i dobiti poruku „Ukljucen je!“, a s komandom „off“ isključit ćete ih dobiti ćete poruku „Iskljucen je!

ARDUINO LIBRARY I KOD

Za ovaj kod trebat će vam SoftwareSerial biblioteka, koju možete skinut OVDJE.

// Koristimo biblioteku Software Serial
#define softserial
// inicijalizacija LEDioda
const int LED  = 13;
const int LED_ext  = A0;
#ifdef softserial
  #include „SoftwareSerial.h“ //u slučaju da kod neradi umjesto
                  //navodnika stavite srelice
  const int BTRX = 10; 
  const int BTTX = 11; 
  SoftwareSerial SerialBT(BTRX, BTTX);
#else
  HardwareSerial SerialBT = Serial1;
#endif
// Slanje poruke
String msg;
// Setup za upostavljanje veze se HM - 10
void setup() {
  SerialBT.begin(9600);
  SerialBT.println("Bluetooth veza je ukljucena");
  pinMode(LED, OUTPUT);
}
//Petlja
//Pričekajte poruku u svakoj iteraciji
//Analizirajte poruku,
//i uključi i isključi LED
void loop() {
  if (SerialBT.available()){      // podaci su u:
     msg = SerialBT.readString(); // Pročitaj poruku
     if (msg == "on") {
         digitalWrite(LED, HIGH);
         digitalWrite(LED_ext, HIGH);
         SerialBT.print("LED na Pin ");
         SerialBT.print(LED);
         SerialBT.println("Ukljucen je!");
      }
      else
      if (msg == "off") {
         digitalWrite(LED, LOW);
         digitalWrite(LED_ext, LOW);
         SerialBT.print("LED na Pin ");
         SerialBT.print(LED);
         SerialBT.println(" Iskljucen je!");
      }
      else {
         SerialBT.print("Komanda  nepoznata komanda");
      }
    }
}