Controlul Unei Drone Prin Bluetoth
CONTROLUL UNEI DRONE PRIN BLUETOTH
4.1PREZENTAREA GENERALĂ A APLICAȚIEI
Prezint astfel macheta realizată practic, de control a unei drone prin bluetoth, pentru a proteja circuitul electronic dar și pentru aspectul vizual.
Fig. 4.1 Prezentarea generală a dronei
Poză cu circuiteledronei
Principalele componente folosite pentru realizarea montajului sunt:
Arduino UNO, model R3;
Driver motoare L298 versiunea 2, tip shield;
Conector Bluetooth Mate Silver pentru Arduino (clasa 2, 10 metri);
Mini-Dronă
La acestă listă se adaugă elementele auxiliare:
Alimentator extern Arduino, reglabil;
Elemente luminoase tip LED;
Elemente de conexiune – mufe;
Radiator driver de motoare.
Macheta a fost realizată pe o placă din plagaj de dimensiuni: 60 cm x 40 cm, pe care au fost montate elementele precizate mai sus, în următoarea ordine:
Mini – drona cu elementele de conexiune;
Arduino UNO, model R3;
Driver motoare L298 versiunea 2, tip shield;
Conector Bluetooth Mate Silver pentru Arduino;
Elemente luminoase tip LED, conectate la alimentator extern Arduino, reglabil.
4.2 COMPONENTE HARDWARE
4.2.1.Arduino UNO, model R3
Arduino UNO, are în componență microntrollerul ATmega 168 în care voi încărca codul pentru comanda mini – dronei.
Poza 1 arduino simplu
Poza 2 simplu
Poza 3 shield bagat
În placa Arduino se va conecta driverul de motoare de tip shield, având rolul de a transmite funcțiile de control pentru motoarele mini – dronei.
4.2.2.Shield driver de motoare L298N
Prezint descrierea driverului de motoare L298N.
Driverul de motoare L298N incorporează 2 punți H intr-un singur pachet de 15 pini, așa cum este prezentat în imaginile următoare :
Schema următoare prezintă cum este controlat un astfel de modul. 6 biți sunt folosiți pentru a controla cele două motoare. 4 biți determină direcția motoarelor și 2 biți determină starea motoarelor (pornit/oprit). 1 bit este folosit pentru voltajul de referință, alt bit pentru alimentarea motoarelor. Incă 4 biți sunt folosiți pentru conexiunea motoarelor, iar restul de 3 biți sunt GND.
Driverul L298N constă în 4 amplificatoare operaționale, folosite în pereche câte două pentru a modifica polaritatea pentru a controla motoarele
Trebuie menționat că un dezavantaj al acestei unități este lipsa protecției la spikuri de voltaj. Pentru aceasta, pe placă au fost folosite 8 diode Schotky 1N5819, câte 4 pentru fiecare motor.
Viteza de rotație a motoarelor este controlată prin PWM, așa cum este explicat în capitolul următor.
Valorile maxime absolute ce se pot aplica acestei unități sunt:
Funcțiile pinilor sunt explicate în tabelul următor:
Conectarea și controlul motoarelor se realizează astfel:
4.2.3.Modulul Bluetooth RN-42
Acest model de modem Bluetooth funcționează excelent și este foarte ușor de utilizat, datele scrise pe pinii RX/TX sunt disponibile la receptor. Din acest punct de vedere se poate considera ca și cum pinii RX/TX sunt conectați prin fire obișnuite între emițător și receptor.
Modemul dispune de un modul de clasă 2 RN-42 și are regulatoare de tensiune pe placă, astfel încât poate fi alimentat între 3.3V și 6 V.
Specificații:
– modem Bluetooth clasa 2
– 10-20 metri distanță de transmisie
– consum mediu 25 mA
– 4dBm ieșirea transmițătorului
– 80dBm sensivitate pentru recepție
– conexiune sigură, criptare 128 biți
– frecvență 2402~2480 MHz
– modulare FHS/GFSK : 79 de canale la intervale de 1MHz
– tensiune de alimentare 3.3 – 6 V
– rată de transfer între 2400-115200 bps
– antena inclusă pe placă
– auto-descoperire/conectare
Dispozitivul a fost configurat cu rata de transfer de 115200 bps.
Modulul bluetooth este conectat la placa Arduino prin shield-ul de motoare având următoarele conexiuni:
Pentru alimentare VCC la VCC-ul lui Arduino
GND-GND a lui Arduino
RTS-0 și CTS-1sunt conectați în scurt
TX la RX a lui Arduino
RX la TX a lui Arduino
Configurația pinilor acestui modem este prezentată în imaginea următoare:
Schema electrică – Modul bluetooth RN-42
4.2.4.Comunicația Bluetooth RN-42
“Bluetooth” este o tehnologie wireless pentru schimb de date pe distanțe mici, între dispozitive fixe sau mobile, folosind unde radio criptate, în banda ISM, între 2400 și 2480 MHz, prin crearea unei rețele personale (PAN -Personal Area Network) cu grad ridicat de securitate. A fost creată în anul 1994, de către compania de telefonie mobilă Ericsson și a fost inițial concepută ca o alternativă wireless pentru cablurile seriale RS-232.
Emblema Bluetooth
Cu ajutorul unei rețele de tip Bluetooth se poate face schimb de informații între dispozitive electronice ce au implementată această tehnologie, precum laptopuri, calculatoare personale, telefoane mobile, camere foto/video, imprimante.
Bluetooth este un protocol standard de înlocuire a comunicației prin fir proiectat pentru consum mic de putere și pe distanțe mici, care depind de clasa de putere, așa cum e prezentat în tabelul de mai jos:
Raza efectică depinde de condițiile de propagare, configurarea antenei, baterie și alte influențe. De obicei, raza de comunicație a unui aparat înzestrat cu un modul de clasă 2 poate fi mărită atunci când comunică cu un aparat cu modul de clasă 1, prin mărirea sensibilității dispozitivului de clasă 1.
Versiuni :
Bluetooth v1.0 și v1.0B
o aceste versiuni au avut multe probleme tehnice și producătorii au avut mari probleme pentru a face dispozitivele interconectabile.
Bluetooth v1.1
o ratificat ca standard IEEE 802,15,1-2002
o au fost corectate multe erori
o a fost adăugat un indicator al puterii semnalului
o a fost adăugată posibilitatea de folosire a canalelor necriptate
Bluetooth v1.2
o conexiune mai rapidă
o descoperire mai rapidă
o a fost mărită viteza de transmisie, până la 721 kbit/s
Bluetooth v2.0
o implementată în 2004
o viteză de transmisie de până la 3 ori mai mare, teoretic de 3,2Mbps, dar rata de transfer efectivă de 2,1 Mbit/s
o consum de energie mai mic, aproape la jumătate
o rata erorilor de transmisie mult mai scăzută
Bluetooth v2.1
o implementată în 2007
o securitate mai simplu de implementat,dar mai eficientă
o îmbunătățirea legăturii între dispozitive
o reducerea consumului
Bluetooth v3.0
o implementată în 2009
o viteză de transmisie mult mărită, de până la 24Mbit/s
Bluetooth v4.0
o implementată în iunie 2010
o consum de energie redus
o reducerea costurilor de fabricare
o securitate îmbunătățită
Pentru a evita interferența cu alte protocoale ce folosesc banda 2.45GHz, protocolul Bluetooth divide banda în 79 de canele, fiecare având 1MHz și schimbă canalele, în medie, de 800 de ori pe secundă.
Logo-ulBluetooth
4.3 Aplicații
4.3.1 Amarino
Amarino este un toolkit dezvoltat pentru smartphonuri bazate pe sistemul de operare Android.
Acest pachet include o aplicație Android și o bibliotecă ce se atașează softului Arduino, cu ajutorul căruia se programează microcontrollerul ATmega168, așa cum este descris în capitolul următor.
Amarino este constituit practic din 3 mari părți:
o aplicația pentru telefon – ”Amarino 2.0”
o biblioteca pentru Arduino – ”MeetAndroid”
o o bibliotecă de evenimente pentru aplicația Android – ”Amarino Plug-in Bundle”
Pentru interconectarea telefonului cu circuitul din mașină, se urmăresc următorii pași:
1. Se intalează aplicația ”Amarino” în telefon
2. Se deschide aplicația ”Amarino”
Aplicatia Amarino 2.0
Adaugareamodulului Bluetooth RN-42
4.3.2 AndroidBluetoothDrona
Am realizataceastaaplicatie in mediul de programare Eclipse Juno avandrolul de a comandaturatiilemotoarelorsidirectia de miscare a mini-dronei.
Pentru a porniaplicatiaapasampeBluetootDrona.
Aplicatia BluetoothDrona
Conectareaaplicatiei la modulul Bluetooth RN-42
Nu suntconexiuni active
Conexiunea la arduinoaesuat
In imaginea de maisusesteprezentataincercarea de conexiune la modului Bluetooth RN-42 cu adresa de mac specifica.
Pentru crearea aplicatiei a fost nevoie de adaugarea de librarii specifice fiecarei componente:
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
Libraria widget este folosita pentru skeebar-uri avand rolul de a seta directia de mers,turatia motoarelor si intensitatea ledului. Codul folosit pentru butoanele de comanda este urmatorul:
@Override
publicvoid onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// nu trimite foarte multe comenzi pentru ca Arduino se blocheaza
if (System.currentTimeMillis() – lastChange > DELAY ){
updateState(seekBar);
lastChange = System.currentTimeMillis();
}
}
@Override
publicvoid onStartTrackingTouch(SeekBar seekBar) {
lastChange = System.currentTimeMillis();
}
@Override
publicvoid onStopTrackingTouch(SeekBar seekBar) {
updateState(seekBar);
}
privatevoid updateState(final SeekBar seekBar) {
switch (seekBar.getId()){
case R.id.SeekBarRed:
red = seekBar.getProgress();
updateRed();
break;
case R.id.SeekBarGreen:
green = seekBar.getProgress();
updateGreen();
break;
case R.id.SeekBarBlue:
blue = seekBar.getProgress();
updateBlue();
break;
}
}
privatevoid updateAllColors() {
// trimite date la Arduino
updateRed();
updateGreen();
updateBlue();
}
privatevoid updateRed(){
Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'o', red);
Trimite comanda catre arduino in functie de cum este deplasat butonul de fata-spate
}
privatevoid updateGreen(){
Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'p', green);
Trimite comanda catre arduino in functie de cum este deplasat butonul pentru deplasare sau stationare.
}
privatevoid updateBlue(){
Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'q', blue);
Trimite comanda catre arduino pentru a varia tensiunea ledului si implicit intensitatea luminoasa a acestuia.
}
import at.abraxas.amarino.Amarino;
Libraria amarino este folosita pentru comunicatia intre aplicatia android si placa arduino.
privatestaticfinal String DEVICE_ADDRESS = "00:06:66:71:54:AE"; // TOROBOT
finalint DELAY = 150;
SeekBar redSB;
SeekBar greenSB;
SeekBar blueSB;
//View colorIndicator;
int red, green, blue;
long lastChange;
/** Called when the activity is first created. */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Amarino.connect(this, DEVICE_ADDRESS);
// get references to views defined in our main.xml layout file
redSB = (SeekBar) findViewById(R.id.SeekBarRed);
greenSB = (SeekBar) findViewById(R.id.SeekBarGreen);
blueSB = (SeekBar) findViewById(R.id.SeekBarBlue);
//colorIndicator = findViewById(R.id.ColorIndicator);
// register listeners
redSB.setOnSeekBarChangeListener(this);
greenSB.setOnSeekBarChangeListener(this);
blueSB.setOnSeekBarChangeListener(this);
}
@Override
protectedvoid onStart() {
super.onStart();
// load last state
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
red = prefs.getInt("red", 0);
green = prefs.getInt("green", 0);
blue = prefs.getInt("blue", 0);
// set seekbars and feedback color according to last state
redSB.setProgress(red);
greenSB.setProgress(green);
blueSB.setProgress(blue);
//colorIndicator.setBackgroundColor(Color.rgb(red, green, blue));
new Thread(){
publicvoid run(){
try {
Thread.sleep(6000);
} catch (InterruptedException e) {}
Log.d(TAG, "update colors");
updateAllColors();
}
}.start();
}
@Override
protectedvoid onStop() {
super.onStop();
// save state
PreferenceManager.getDefaultSharedPreferences(this)
.edit()
.putInt("red", red)
.putInt("green", green)
.putInt("blue", blue)
.commit();
// stop Amarino's background service, we don't need it any more
Amarino.disconnect(this, DEVICE_ADDRESS);
}
In codul prezentat mai sus avem setarea adresei mac a modulului bluetooth RN-42 si etapele de initializare pentru aplicatiei, conectarea la modul, activarea bluetooth-ului telefonului, activarea butoanelor de comanda in ultima lor pozitie si oprirea aplicatiei prin deconectarea de la modlul bluetooth.
Pentru conectarea la arduino BluetoothDrona foloseste in spate aplicatia Amarino instalate pe telefonul cu android avand rolul de a realiza tranferul de date intre aplicatia android si arduino.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Controlul Unei Drone Prin Bluetoth (ID: 162246)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
