====== Bluetooth kommunikációs modulok ====== ===== HC-05 ===== {{anchor:hc05}} A [[hu:comm:bus_bluetooth#bluetooth|Bluetooth]] egy vezeték nélküli kommunikációs szabvány, rövid távolságok áthidalására. A készülékek a 2,4-2,485 GHz-es ISM sávon forgalmaznak, az átvitel maximális távolsága általában 10 méter körül alakul. A HC-05 modul a Cambridge Silicon Radio BC417 2,4 GHz-es BlueTooth Radio chipén alapul. Ez egy összetett chip, amely külső, 8 Mbit flash memóriát használ. ==== A HC-nn sorozat jellemzői ==== * Míg a HC-05 beállítható Master és Slave modulnak is, addig a HC-06 kizárólag Slave-ként alkalmazható * A HC-05-nek 6, míg a HC-06-nak 4 lába van * Ügyelni kell arra, hogy a modulok általában 3,3V tápfeszültséggel üzemelnek. Az 5V-os bemenet teljesen modulgyártó függő. * A modulok kétféle működési móddal rendelkeznek: "AT Parancs" mód / Normál mód * Sokszor magát a modult un. "breakout" lapokon forgalmazzák. Ezeken nincsenek lábak, csak forrasztási pontok. * [[hu:comm:start#baudrata|Baudráta]]: 9600 bps, Adatok: 8 bit, Stop Bitek: 1 bit, Paritás: Nincs, Kézfogás: Nincs * Jelszó: 1234 * Eszköz neve: HC-05 / HC-06 ^HC-05 fent^HC-05 lent| |{{:wiki:arduino:hc_05_front.png?200|HC-05 fent}}|{{:wiki:arduino:hc_05_back.png?200|HC-05 lent}}| ==== A HC-05 lábkiosztása ==== ^port^funkció| |KEY|Ha a tápellátás bekapcsolása előtt HIGH állapotban van, bekapcsolja az "AT Parancs" módot. A LED lassan villog (2 másodpercenként).| |VCC|+5 táp| |GND|grund| |TXD|Jelek átadása az Arduino felé. 3.3V HIGH szint!| |RXD|Soros adatok fogadása az Arduino felől| |STATE|Kapcsolat létrejött jelzés| ==== "AT Parancs" mód ==== A Parancs mód kétféle módon aktiválható - A modul tápjának bekapcolása **után** a "KEY" portra kapcsoljon 5v-ot. Ekkor a modul az előre beállított baudráta szerinti sebességgel érhető el a parancs módban. Ez előnyös,ha az Arduino-ról szeretné küldeni a parancsokat. - A modul tápjának bekapcsolása **előtt** a "KEY" portra kapcsoljon 5v-ot. Ekkor a modul 38.400 baud-os parancsmódba kerül. A paraméterezéshez használja a lenti "**BlueToothCommandUtility**" programot. ==== BlueToothCommandUtility ==== A modult előzőleg kösse össze az Arduino-val az alábbiak szerint * GND a GND-hoz * Arduino Pin 2 a HC-05 TXD-hez * Arduino Pin 3 a HC-05 RXD-hez * Arduino Pin 4 a HC-05 KEY-hez * Arduino Pin 5+6 a HC-05 VCC táphoz A program: /* YourDuino.com Example: BlueTooth HC-05 Setup - WHAT IT DOES: - Sets "Key" pin on HC-05 HIGH to enable command mode - THEN applies Vcc from 2 Arduino pins to start command mode - SHOULD see the HC-05 LED Blink SLOWLY: 2 seconds ON/OFF Sends, Receives AT commands For Setup of HC-05 type BlueTooth Module NOTE: Set Serial Monitor to 'Both NL & CR' and '9600 Baud' at bottom right - SEE the comments after "//" on each line below - CONNECTIONS: - GND - Pin 2 to HC-05 TXD - Pin 3 to HC-05 RXD - Pin 4 to HC-05 KEY - Pin 5+6 to HC-05 VCC for power control - V1.02 05/02/2015 Questions: terry@yourduino.com */ /*-----( Import needed libraries )-----*/ #include /*-----( Declare Constants and Pin Numbers )-----*/ #define HC_05_TXD_ARDUINO_RXD 2 #define HC_05_RXD_ARDUINO_TXD 3 #define HC_05_SETUPKEY 4 #define HC_05_PWR1 5 // Connect in parallel to HC-05 VCC #define HC_05_PWR2 6 // Connect in parallel to HC-05 VCC /*-----( Declare objects )-----*/ SoftwareSerial BTSerial(HC_05_TXD_ARDUINO_RXD, HC_05_RXD_ARDUINO_TXD); // RX | TX /*-----( Declare Variables )-----*/ //NONE void setup() /****** SETUP: RUNS ONCE ******/ { pinMode(HC_05_SETUPKEY, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode pinMode(HC_05_PWR1, OUTPUT); // Connect in parallel to HC-05 VCC pinMode(HC_05_PWR2, OUTPUT); // Connect in parallel to HC-05 VCC digitalWrite(HC_05_SETUPKEY, HIGH); // Set command mode when powering up Serial.begin(9600); // For the Arduino IDE Serial Monitor Serial.println("YourDuino.com HC-05 Bluetooth Module AT Command Utility V1.02"); Serial.println("Set Serial Monitor to 'Both NL & CR' and '9600 Baud' at bottom right"); Serial.println("Vcc Power Up DELAY"); delay(2000); Serial.println("Applying VCC Power. LED should blink SLOWLY: 2 Seconds ON/OFF"); digitalWrite(HC_05_PWR1, HIGH); // Power VCC digitalWrite(HC_05_PWR2, HIGH); delay(2000); Serial.println("Enter AT commands in top window."); BTSerial.begin(38400); // HC-05 default speed in AT command mode }//--(end setup )--- void loop() /****** LOOP: RUNS CONSTANTLY ******/ { // READ from HC-05 and WRITE to Arduino Serial Monitor if (BTSerial.available()) Serial.write(BTSerial.read()); // READ Arduino Serial Monitor and WRITE to HC-05 if (Serial.available()) BTSerial.write(Serial.read()); }//--(end main loop )--- /*-----( Declare User-written Functions )-----*/ //NONE //*********( THE END )*********** ==== Bluetooth AT parancsok jegyzéke ==== 1 AT Test UART Connection 2 AT+RESET Reset Device 3 AT+VERSION Querry firmware version 4 AT+ORGL Restore settings to Factory Defaults 5 AT+ADDR Query Device Bluetooth Address 6 AT+NAME Query/Set Device Name 7 AT+RNAME Query Remote Bluetooth Device’s Name 8 AT+ROLE Query/Set Device Role 9 AT+CLASS Query/Set Class of Device CoD 10 AT+IAC Query/Set Inquire Access Code 11 AT+INQM Query/Set Inquire Access Mode 12 AT+PSWD Query/Set Pairing Passkey 13 AT+UART Query/Set UART parameter 14 AT+CMODE Query/Set Connection Mode 15 AT+BIND Query/Set Binding Bluetooth Address 16 AT+POLAR Query/Set LED Output Polarity 17 AT+PIO Set/Reset a User I/O pin 18 AT+MPIO Set/Reset multiple User I/O pin 19 AT+MPIO? Query User I/O pin 20 AT+IPSCAN Query/Set Scanning Parameters 21 AT+SNIFF Query/Set SNIFF Energy Savings Parameters 22 AT+SENM Query/Set Security & Encryption Modes 23 AT+RMSAD Delete Authenticated Device from List 24 AT+FSAD Find Device from Authenticated Device List 25 AT+ADCN Query Total Number of Device from Authenticated Device List 26 AT+MRAD Query Most Recently Used Authenticated Device 27 AT+STATE Query Current Status of the Device 28 AT+INIT Initialize SPP Profile 29 AT+INQ Query Nearby Discoverable Devices 30 AT+INQC Cancel Search for Discoverable Devices 31 AT+PAIR Device Pairing 32 AT+LINK Connect to a Remote Device 33 AT+DISC Disconnect from a Remote Device 34 AT+ENSNIFF Enter Energy Saving mode 35 AT+EXSNIFF Exit Energy Saving mode ==== Bluetooth AT hibakódok ==== 0 Command Error/Invalid Command 1 Results in default value 2 PSKEY write error 3 Device name is too long (>32 characters) 4 No device name specified (0 length) 5 Bluetooth address NAP is too long 6 Bluetooth address UAP is too long 7 Bluetooth address LAP is too long 8 PIO map not specified (0 lenght) 9 Invalid PIO port Number entered A Device Class not specified (0 lenght) B Device Class too long C Inquire Access Code not Specified (0 lenght) D Inquire Access Code too long E Invalid Iquire Access Code entered F Pairing Password not specified (0 lenght) 10 Pairing Password too long (> 16 characters) 11 Invalid Role entered 12 Invalid Baud Rate entered 13 Invalid Stop Bit entered 14 Invalid Parity Bit entered 15 No device in the Pairing List 16 SPP not initialized 17 SPP already initialized 18 Invalid Inquiry Mode 19 Inquiry Timeout occured 1A Invalid/zero lenght address entered 1B Invalid Security Mode entered 1C Invalid Encryption Mode entered ==== HC-05 példaprogram ==== A lenti példaprogramot [[http://www.instructables.com/id/Remotely-Control-LED-using-HC-05-Bluetooth-Arduino/|innen]] másoltam. Először is, össze kell kötni * A modul VCC lábát az Arduino 3.3V kimenetével (ne az 5V-tal!) * Grund a grundhoz * A modul Rx lábát az Arduino Tx lábával * A modul Tx lábát az Arduino Rx lábával {{:wiki:arduino:arduino_hc_05_example.jpg|HC-05 példaprogram}} A példaprogram: /* Arduino Turn LED On/Off using Serial Commands Created April 22, 2015 Hammad Tariq, Incubator (Pakistan) It's a simple sketch which waits for a character on serial and in case of a desirable character, it turns an LED on/off. Possible string values: a (to turn the LED on) b (tor turn the LED off) */ char junk; String inputString=""; void setup() // run once, when the sketch starts { Serial.begin(9600); // set the baud rate to 9600, same should be of your Serial Monitor pinMode(13, OUTPUT); } void loop() { if(Serial.available()){ while(Serial.available()) { char inChar = (char)Serial.read(); //read the input inputString += inChar; //make a string of the characters coming on serial } Serial.println(inputString); while (Serial.available() > 0) { junk = Serial.read() ; } // clear the serial buffer if(inputString == "a"){ //in case of 'a' turn the LED on digitalWrite(13, HIGH); }else if(inputString == "b"){ //incase of 'b' turn the LED off digitalWrite(13, LOW); } inputString = ""; } } ==== Források ==== https://arduino-info.wikispaces.com/BlueTooth-HC05-HC06-Modules-How-To \\ http://www.instructables.com/id/Remotely-Control-LED-using-HC-05-Bluetooth-Arduino/ ===== HC-06 ===== {{anchor:arduino_hc06}} ^HC-06 fent^HC-06 lent| |{{:wiki:arduino:hc_06_front.png?200|HC-06 fent}}|{{:wiki:arduino:hc_06_back.png?200|HC-06 lent}}| A HC-06 modul technikailag megegyezik a fenti HC-05-tel, azzal a külömbséggel, hogy csak slave-ként alkalmazható, azaz a "STATE" és "KEY" portok nem használhatók az esetében.