Acasă / Atelier / Microcontroler / Arduino / Un modul bluetooth si Arduino

Un modul bluetooth si Arduino

Seria experimentelor cu diverse module si o placa de dezvoltare (compatibila) Arduino a ajuns la modulul bluetooth in varianta ieftina, tip HC-06

Din neatentie, am comandat de pe eBay prima data doar placa adaptoare 5V la 3,3V, apoi si adevaratul modul bluetooth,
asa ca a trebuit sa apelez la un prieten cu mai multa experienta (Narcis de la MULTITEC), care mi-a lipirt in 2 minute cele 2 placi cu o „statie” clasica termostatata, pentru a nu apare posibilitatea defectarii modulului datorita inductiei, daca ar fi folosit un pistol de lipit.
Am gasit destul de putine informatii la http://english.cxem.net/arduino/arduino4.php (si instructables.com).
Primul test a fost acela in care am alimentat modului, cautandu-l cu un telefon… LED-ul rosu de pe modul se aprinde cu intermitenta cand modulul HC-06 nu este conectat cu alt dispozitiv bluetooth.

Numele modulului nostru este „linvor” si parola este „1234”.

Am incercat prima data exemplul care transmite de la Arduino prin bluetooth la calculator un mesaj de salut si numarul de mesaje, sketch-ul fiind:
int cnt = 0; // Counter
void setup() {
Serial.begin(9600); // Initialization
}
void loop() {
cnt++;
Serial.print(„Hello niq_ro from Arduino! Counter:”); // print message
Serial.println(cnt); // print counter
delay(1000); // wait 1 sec
}
 
IMPORTANT: Cand se incarca sketch-ul in Arduino modulul bluetooth trebuie deconectat (scos din mufa), dupa care se reconecteaza…
 
Apoi am modificat un pic programiorul, dar nesemnificativ din punct de vedere al functionarii
int cnt = 0; // Counter
void setup() {
Serial.begin(9600); // Initialization
}
void loop() {
cnt++;
Serial.print(„Hello niq_ro from Arduino!”);
Serial.print(‘n’);
Serial.print( „Counter: „); // print message
Serial.println(cnt); // print counter
Serial.print(‘n’);
delay(1000); // wait 1 sec
}
Singura diferenta fata de ce e in articolul rusesc este aceea ca nu am reusit sa conectez modulul bluetooth „linvor” cu modulul cuplat direct la calculator, folosind doar programul mentionat acolo (Tera Term VT), inainte trebuind sa pornesc si programul IVT Bluesoleil care sa faca conexiunea intre ele.
Am trecut la pasul doi, cu transmisie in ambele sensuri (aprinderea si stingerea unui LED conectat la Arduino de la tastatura, apoi afisarea starii pe ecranul calculatorului), folosind placuta cu LED-ul multicolor.
Sketch-ul este:
char incomingByte; // incoming data
int LED = 10; // LED pin
void setup() {
Serial.begin(9600); // initialization
pinMode(LED, OUTPUT);
Serial.println(„Press 1 to LED ON or 0 to LED OFF…”);
}
void loop() {
if (Serial.available() > 0) { // if the data came
incomingByte = Serial.read(); // read byte
if(incomingByte == ‘0’) {
digitalWrite(LED, LOW); // if 1, switch LED Off
Serial.println(„LED OFF. Press 1 to LED ON!”); // print message
}
if(incomingByte == ‘1’) {
digitalWrite(LED, HIGH); // if 0, switch LED on
Serial.println(„LED ON. Press 0 to LED OFF!”);
}
}
}
Am realizat si un filmulet numit Arduino and Bluetooth module(I):
Pentru a fi sigur ca am transmisie corecta prin bluetooth, am conectat pe Arduino la alt calculator (ca nu am avut alta sursa de alimentare) si am dat comenzi de pe calculatorul meu, primind si confirmarea starii LED-lui, apoi am alimentat pe Arduino de la un alimentator independent si l-am mutat la cca. 9m de calculator…
Filmuletul care prezinta modul de conectare si functionare la aceasta distanta se numeste Arduino and bluetooth module (II)

Pentru a „exploata” la maxim posibiltatile LED-lui multicolor d epe placuta mea, am modificat un pic sketch-ul, pentru a aprinde LED-ul rosu prin apasarea tastei 1, LED-ul albastru prin apasarea tastei 2, LED-ul verde prin apasarea tastei 3, respectiv stingerea lor prin apsarea tastei 0:
// adapted sketch from http://english.cxem.net/arduino/arduino4.php// by niq_ro from http://www.tehnic.go.ro &// http://nicuflorica.blogspot.com// version 3m0char incomingByte; // incoming dataint LED1 = 11; // red LED pin int LED2 = 10; // blue LED pin int LED3 = 9; // green LED pin

void setup() {
Serial.begin(9600); // initialization
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
Serial.println(„Press 1 to LED ON or 0 to LED OFF…”);
}

void loop() {
if (Serial.available() > 0) { // if the data came
incomingByte = Serial.read(); // read byte
if(incomingByte == ‘0’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
Serial.println(„All LEDs are OFF. Press 1 to RED LED ON! Press 2 to BLUE LED ON! Press 3 to GREEN LED ON!”); // print message
}
if(incomingByte == ‘1’) {
digitalWrite(LED1, HIGH); // if 0, switch LED on
Serial.println(„RED LED is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘2’) {
digitalWrite(LED2, HIGH); // if 0, switch LED on
Serial.println(„BLUE LED is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘3’) {
digitalWrite(LED3, HIGH); // if 0, switch LED on
Serial.println(„GREEN LED is now ON. Press 0 to have all LED OFF!”);
}

}
}

Am facut si un filmulet cu acest tip de program (sketch), care se numeste Arduino and bluetooth module (III)

Niste poze cu informatiile care le furnizeaza programul IVT BlueSoleil despre modulul meu:

si alte poze de la teste:

si un al patrulea filmulet numit Arduino and bluetooth module (IV)

Am marit numarul de posibiltati de combinare a culorilor,

 

sketch-ul devenind:

// adapted sketch from http://english.cxem.net/arduino/arduino4.php
// by niq_ro from http://www.tehnic.go.ro &
// http://nicuflorica.blogspot.com
// version 4m0 by Nicu FLORICA – 04.2013, Craiova – ROMANIA

char incomingByte; // incoming data
int LED1 = 11; // red LED pin
int LED2 = 10; // blue LED pin
int LED3 = 9; // green LED pin

void setup() {
Serial.begin(9600); // initialization
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
Serial.println(„Press 1 to 7 or 0 to RGB LED ON or OFF…”);
Serial.println(„adapted sketch by niq_ro from http://nicuflorica.blogspot.com”);
}
void loop() {
if (Serial.available() > 0) { // if the data came
incomingByte = Serial.read(); // read byte
if(incomingByte == ‘0’) {
digitalWrite(LED1, HIGH); // if 0, switch LED on
digitalWrite(LED2, HIGH); // if 0, switch LED on
digitalWrite(LED3, HIGH); // if 0, switch LED on
delay (100);
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
Serial.println(„All LEDs are OFF.”); // print message
Serial.println(„Press 1 to RED LED ON!”);
Serial.println(„Press 2 to BLUE LED ON!”);
Serial.println(„Press 3 to GREEN LED ON!”);
Serial.println(„Press 4 to RED & BLUE LEDs ON!”);
Serial.println(„Press 5 to RED & GREEN LEDs ON!”);
Serial.println(„Press 6 to BLUE & GREEN LEDs ON!”);
Serial.println(„Press 7 to RED & BLUE & GREEN LEDs ON!”);
}
if(incomingByte == ‘1’) {
// first all LEDs will be OFF
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED1, HIGH); // if 0, switch LED on
Serial.println(„RED LED is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘2’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED2, HIGH); // if 0, switch LED on
Serial.println(„BLUE LED is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘3’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED3, HIGH); // if 0, switch LED on
Serial.println(„GREEN LED is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘4’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED1, HIGH); // if 0, switch LED on
digitalWrite(LED2, HIGH); // if 0, switch LED on
Serial.println(„RED & BLUE LEDs is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘5’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED1, HIGH); // if 0, switch LED on
digitalWrite(LED3, HIGH); // if 0, switch LED on
Serial.println(„RED & GREEN LEDs is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘6’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED2, HIGH); // if 0, switch LED on
digitalWrite(LED3, HIGH); // if 0, switch LED on
Serial.println(„BLUE & GREEN LEDs is now ON. Press 0 to have all LED OFF!”);
}
if(incomingByte == ‘7’) {
digitalWrite(LED1, LOW); // if 1, switch LED Off
digitalWrite(LED2, LOW); // if 1, switch LED Off
digitalWrite(LED3, LOW); // if 1, switch LED Off
digitalWrite(LED1, HIGH); // if 0, switch LED on
digitalWrite(LED2, HIGH); // if 0, switch LED on
digitalWrite(LED3, HIGH); // if 0, switch LED on
Serial.println(„RED & BLUE & GREEN LEDs is now ON. Press 0 to have all LED OFF!”);
}
}
}

iar filmuletul, care prezinta functionarea se numeste Arduino and bluetooth module (V)

Sursă: Nicu FLORICA

Despre Nicu FLORICA

ELECTRONICA este prima pasiune a mea... am inceput pe la 7 ani cu un radio cu galena, in vacanta de vara, a fost o bucurie enorma sa aud in casti posturi de radio si in loc sa joc fotbal, ascultam la minunea facuta de mine.. Pasiunea asta mi-a fost insuflata de tata, dar mie nu mi-au placut niciodata televizoarele cu lampi, vazand ca se pot testa cu mana, dar nestiind exact unde am primic cateva socuri care m-au cam speriat... Am inceput sa studiez revistele Tehnium, incat pana in 1998 am colectia aproape completa, de multe ori ajungeam intr-un oras si primul loc vizitat era Anticariatul. Am si alte reviste, cat de cat complete: RET, Radio, Electronistul, etc Am construit destule montaje si scheme si marea mea placere e sa imbunatatesc performantele lor.... In revista Tehnium am publicat 2 articole, unul in 1/'95 numit LUMINA DINAMICA si altul in 1/'97 numit INDICATOR TRICOLOR CU LED... BICOLOR. mi-am facut un site numai cu multe scheme: http://www.tehnic.go.ro si activez pe http://www.elforum.ro, unde am ID-ul niq_ro (acest ID il folosesc in toate forumurile si site-urile).

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *