Bluetooth vadība. Vadība, izmantojot Bluetooth Arduino vadība, izmantojot Bluetooth no viedtālruņa

Bluetooth- Tas, iespējams, ir visizplatītākais saziņas veids nelielos attālumos, ko izmanto lielākā daļa mūsdienu elektronisko ierīču. Tālruņa austiņas, austiņas, tastatūras un peles, printeri un Dievs zina, kādi citi sīkrīki. Pirms kāda laika bluetooth tika popularizēts kā līdzeklis failu pārsūtīšanai starp tālruņiem. Galvenās BT priekšrocības ir laba izturība pret platjoslas traucējumiem un ieviešanas vienkāršība. Pirmais nozīmē, ka virkne ierīču, kas atrodas vienā vietā, var vienlaikus sazināties viena ar otru, netraucējot viena otrai. Otrais palīdzēja plaši izmantot Bluetooth DIY vidē un kopumā visās vidēs. Personīgi es izmantoju BT, lai vadītu robotus no sava viedtālruņa. Pakalpojumā Google Play jau ir vairākas lietojumprogrammas ar lietotājam draudzīgu interfeisu tieši šiem nolūkiem. Mūsu MakeItLab hackspace dalībnieki izmanto Bluetooth, lai attālināti vadītu gaismu un savāktu telemetrijas datus no kvadrokopteriem. Vislētākos Bluetooth moduļus mūsdienās var saukt par HC-05 un HC-06. Tie ir plaši pieejami Ķīnas tiešsaistes veikalos un ebay. Atšķirības starp tām ir tādas, ka pirmais var darboties gan pakārtotā, gan galvenajā režīmā. Otrā ir tīri vergu ierīce (bet to var labot!). Citiem vārdiem sakot, HC-06 pats nevar noteikt pārī savienotu ierīci un izveidot saziņu ar to, tas var tikai paklausīt kapteinim. Abu ierīču pamatā ir CSR BC417 mikroshēma, kas atbalsta Bluetooth versiju 2.0 ar ātrumu līdz 3 Mbit/s. Tieši šie moduļi tiks apspriesti tālāk.

1. Izpildes iespējas

Parasti moduļus pārdod kā divas kopā pielodētas plāksnes. Mazākais ir rūpnīcas modulis, ko plaši izmanto dažādās elektroniskās ierīcēs. Liels - īpaša dizaina šalle DIY. Šādi izskatās mazākā plate ar BC417 mikroshēmu:
Un šeit ir DIY moduļi HC-05 un HC-06:
Savā viltīgajām vajadzībām es parasti izmantoju HC-05, jo to cena daudz neatšķiras no HC-06 un ļauj bez problēmām savienot divas ierīces. Piemēram, jūs varat izgatavot robotu un tālvadības pulti tam. Parasti saņemu moduļus no Ķīnas, tieši tādus kā kreisajā bildē, bet dažreiz bez pogas. Ļoti izplatīta ir arī cita maketa šalles versija. Atšķirībā no iepriekš redzamajiem, tiem nav EN kājiņas, bet ir KEY kāja, kas ir nedaudz ērtāka.
Pinout Tātad, par ko ir atbildīgas kājas visās moduļa opcijās?
  • LV — ieslēgt/izslēgt moduli;
  • VCC - +5V barošana;
  • GND - zemējums;
  • TXD, RXD - UART interfeiss saziņai ar kontrolieri;
  • STATE - statusa indikators;
  • KEY - pēda, lai ieietu AT komandu režīmā.
Modulis ir konfigurēts AT komandu režīmā, kas tiek aktivizēts, izmantojot KEY kāju. Tāpēc daudziem laimīgiem moduļa īpašniekiem var rasties jautājums: kā rīkoties, ja esmu saskāries ar moduli bez ATSLĒGAS? Patiesībā, protams, šī kāja atrodas uz mazā dēļa, bet tā vienkārši nav novirzīta uz lielā dēļa. Dievs zina, kāpēc ķīnieši tā rīkojās, bet problēma ir viegli atrisināma. KEY kāja aug no šejienes:

2. Savienojums ar Arduino Uno

Kāju nav daudz, tāpēc neapjuksi. Mēs izveidojam savienojumu ar Bluetooth ar Arduino Uno saskaņā ar šādu shēmu:
Bluetooth GND VCC TXD RXD ATSLĒGA
Arduino Uno GND +5V 10 11
Mēs savienojam TX un RX ar GPIO 10. un 11. posmiem, jo ​​aparatūras UART 0. un 1. daļā būs aizņemtas, sazinoties ar datoru. Darba režīmā KEY nekur nav pieslēgts, tāpēc tabulā es to nepievienoju GPIO ar Arduino kājām.

3. Sprieguma līmeņu savienošana pārī

Mazās Bluetooth moduļa plates loģiskais spriegums ir 3,3 volti. Tas nozīmē, ka Arduino Uno var vai nu izdegt savus portus, vai vienkārši pārraidīt signālus nepareizi. Par laimi, vairumā gadījumu lielam dēlim ir viss, lai no tā izvairītos. Iepriekš minētos moduļus var viegli savienot ar Arduino, bez liekām problēmām. Pat neskatoties uz to, ka paši ražotāji uz šalles uzrakstīja brīdinājumu par signāla līmeni 3,3 volti. Tomēr dažās situācijās var būt nepieciešams uzstādīt sprieguma dalītāju Arduino TX - BT RX līnijā, lai pazeminātu loģikas līmeni. Patiesībā, pat ja viss darbojas bez sadalītāja, kārtības labad labāk to ievietot. Dalītāja ķēde ir zemāka:

4. Arduino sagatavošana

Lai sāktu iestatīšanu, mums Arduino ir jāaugšupielādē papildu skice. Būtībā tā ir atkārtotāja programma, kas apmainīsies ar datiem starp datora termināli un Bluetooth moduli. Programma ir ārkārtīgi vienkārša: #include #iekļauts int gLedPin = 13; int gRxPin = 10; int gTxPin = 11; SoftwareSerial BTSerial (gRxPin, gTxPin); void setup() ( # 38400 - metodei Nr. 1, 9600 - metodei Nr. 2 BTSerial.begin(38400); Serial.begin(9600); delay(500); ) void loop() ( if (BTSerial. pieejams( )) ( Serial.write(BTSerial.read()); ) if (Serial.available()) ( BTSerial.write(Serial.read()); ) ) Augšupielādējiet skici Arduino un pārejiet uz nākamo solis.

5. Termināļa sagatavošana

Varat izmantot Arduino IDE iebūvēto porta monitoru kā termināli, vai arī varat izmantot jebkuru citu. Es izmantoju trešās puses termināli TeraTerm. Pirms savienojuma izveides ir jāveic divi svarīgi iestatījumi:
  • bodu ātrums: 9600;
  • rindas padeves rakstzīme: CR+LF.
Lūk, kā izskatās TeraTerm iestatījumi:
Kad viss ir pareizi konfigurēts, izveidojiet savienojumu ar COM portu un pārbaudiet savienojumu. Visas turpmākās manipulācijas ir racionāli sadalīt divās daļās: pakārtotajam modulim HC-06 un galvenajam HC-05.

6. HC-06 iestatīšana

Pārbauda savienojumu

Pēc tam, kad modulim tiek piegādāta strāva, gaismas diode sāks enerģiski mirgot:
Tagad dodieties uz termināli un ierakstiet komandu: AT Atbildot uz to, modulim mums ir jāpasaka: Labi Mūsu nākamā komanda prasīs modulim tā versiju: AT+VERSIJA? Mēs iegūstam kaut ko līdzīgu: OKLinvor1.5 Vai tas izdevās? Ja nē, pārbaudiet:
  1. Savienojuma ātrums ar moduli, kas iestatīts tulkotāja programmā: saziņai ar vergu ātrumam jābūt 9600.
  2. Rindas plūsmas rakstzīmju iestatījumi: neaizmirstiet par CR+LF!
  3. Vai pēc katras komandas nospiežam Enter? Nekad nevar zināt...

Noderīgas komandas

Bluetooth pakārtotajam modulim ir tikai trīs konfigurējami parametri:
  • komanda, lai mainītu ierīces paroli: AT+PIN<пароль>
  • ātruma maiņa: AT+BAUD<скорость>
  • mainīt ierīces nosaukumu: AT+NAME<имя>
Piemēram, lai mainītu paroli, ko mēs rakstām: AT+PIN4321 Kopumā tas ir gatavs! Tagad jūs varat izveidot savienojumu ar moduli, piemēram, no viedtālruņa. Tas tiks apspriests mana stāsta otrajā daļā.

7. HC-05 iestatīšana

Pārslēgšanās uz AT komandu režīmu

Lai piekļūtu galvenā moduļa iestatījumiem, tas ir jāpārslēdz uz AT komandu režīmu. Ir divas metodes, kuras varat izmantot, lai ievadītu šo režīmu (es vienmēr izmantoju pirmo). Pirmā metode:
  1. Atvienojiet moduli no barošanas avota.
  2. Uz KEY kājas pieliekam +3,3V signālu.
  3. Mēs ieslēdzam moduli.
Šajā opcijā valūtas maiņas kurss ar moduli ir iestatīts uz 38400. Otrā metode
  1. Mēs ieslēdzam moduli.
  2. Kājai pieliekam +3,3V KEY signālu;
Šajā gadījumā valūtas maiņas kurss ar moduli būs vienāds ar iestatījumu iestatīto standarta kursu. Noklusējums ir 9600. Pēc veiksmīgas pārslēgšanās uz AT komandu režīmu moduļa gaismas diode sāks mirgot reizi divās sekundēs.

HC savienojuma pārbaude

Pārbaudīsim HC-05 komandu režīmu tāpat kā vergu moduļa gadījumā: >>: AT <<: Labi >>: AT+VERSIJA? <<: +VERSIJA:2.0-20100601

HC-05 iestatīšana kā vergu

Lai moduli pārvērstu par vergu, jums būs jāpalaiž vairākas komandas: Atiestatīt iepriekšējos iestatījumus: AT+ORGL Pārī savienoto ierīču atiestatīšana: AT+RMAAD Paroles iestatīšana: AT+PSWD=1234 Vergu režīma iespējošana: AT+ROLE=0 Turklāt varat uzzināt ierīces adresi (nepieciešama pārī savienotā moduļa konfigurēšanai): AT+ADDR? Atbildot uz to, mēs saņemam pašu adresi: ADDR=12:6:143117 Pēc iestatīšanas atvienojiet KEY kāju no +3,3 V un restartējiet moduli. Gatavs!

HC-05 iestatīšana par galveno

Modulis nāk no rūpnīcas kā vergu, un, lai padarītu to par galveno, jums būs jāizpilda šādas komandas. Atiestatīt iepriekšējos iestatījumus: AT+ORGL Pārī savienoto ierīču atiestatīšana: AT+RMAAD Galvenā režīma iespējošana: AT+ROLE=1 Restartēt pēc lomas maiņas: AT+RESET Ja mēs vēlamies savienot vergu un galveno, mēs rakstām šādas komandas: Slave paroles iestatīšana: AT+PSWD=1234 Norādiet pārī savienoto ierīci: AT+PAIR=<адрес>,<таймаут> (piemērs: AT+PAIR=12,6,143117,5) Mēs saistām ar konkrētu adresi: AT+BIND=<адрес> (piemērs: AT+BIND=12,6,143117) Mēs aizliedzam izveidot savienojumu ar citām adresēm: AT+CMODE=0 Gatavs! Tagad modulis ir savienots ar vergu, un katru reizi, kad tas tiek ieslēgts, tas mēģinās izveidot savienojumu ar to.

Šajā rakstā tiks sīki aprakstīta neliela Android mobilās operētājsistēmas lietojumprogrammas izveide un Arduino skice. Arduino Uno būs bezvadu vairogs ar Bluetooth moduli. Lietojumprogramma izveidos savienojumu ar Bluetooth moduli un nosūtīs noteiktu komandu. Savukārt skice izmantos šo komandu, lai iedegtu vai izslēgtu kādu no Arduino savienotajām gaismas diodēm.

Mums vajadzēs

Android lietojumprogrammas izveide

Tukšs

Android OS izstrāde tiek veikta ADT izstrādes vidē Android Development Tools. Kuru var lejupielādēt no Google izstrādātāju portāla. Pēc ADT lejupielādes un instalēšanas palaidiet to. Tomēr vēl ir pāragri sākt izstrādāt lietojumprogrammu. Jums ir arī jālejupielādē vajadzīgās versijas Android SDK. Lai to izdarītu, jums ir jāatver Android SDK pārvaldnieks “Logs → Android SDK pārvaldnieks”. Sarakstā ir jāatlasa mums nepieciešamais SDK, mūsu gadījumā Android 2.3.3 (API 10). Ja jums nav tālruņa, izvēlieties 2.3.3 vai jaunāku versiju; un ja ir - versija, kas atbilst tālruņa OS versijai. Pēc tam noklikšķiniet uz pogas "Instalēt pakotnes", lai sāktu instalēšanas procesu.

Kad lejupielāde un instalēšana ir pabeigta, mēs sākam lietojumprogrammas izveidi. Atlasiet “Fails → Jauns → Android lietojumprogrammu projekts”. Aizpildīsim loga saturu, kā parādīts attēlā.

    Lietojumprogrammas nosaukums - lietojumprogrammas nosaukums, kas tiks parādīts Google Play veikalā. Bet mēs negrasāmies publicēt pieteikumu, tāpēc nosaukums mums nav īpaši svarīgs.

    Projekta nosaukums - projekta nosaukums ADT.

    Pakotnes nosaukums - lietojumprogrammas identifikators. Tam jābūt veidotam šādi: jūsu vietnes nosaukums atpakaļ, kā arī lietojumprogrammas nosaukums.

Nolaižamajos sarakstos “Minimāli nepieciešamais SDK”, “Mērķa SDK”, “Komplektēt ar” atlasiet versiju, kuru lejupielādējām iepriekš. Jaunākās SDK versijas atbalsta lietojumprogrammu grafiskos motīvus, bet vecākas versijas neatbalsta. Tāpēc laukā “Tēma” atlasiet “Nav”. Noklikšķiniet uz "Tālāk".

Noņemiet atzīmi no izvēles rūtiņas “Izveidot pielāgotu palaidēja ikonu”: šajā rakstā mēs nekoncentrēsimies uz lietojumprogrammas ikonas izveidi. Noklikšķiniet uz "Tālāk".

Parādītajā logā varat atlasīt skatu “Darbība”: skatu uz to, kas tiks parādīts ekrānā, kad programma tiks palaista. Mēs izvēlamies “Tukša darbība”, kas nozīmē, ka mēs vēlamies visu sākt no nulles. Noklikšķiniet uz "Tālāk".

Mūsu lietojumprogrammā būs tikai viena darbība, tāpēc jums nekas nav jāmaina parādītajā logā. Tāpēc vienkārši noklikšķiniet uz "Pabeigt".

Tas arī viss, mūsu lietojumprogramma ir izveidota.

Emulatora iestatīšana

Android lietojumprogrammas tiek atkļūdotas reālā ierīcē vai, ja tādas nav, tad emulatorā. Konfigurēsim savējo.

Lai to izdarītu, palaidiet “Logs → Android virtuālo ierīču pārvaldnieks”. Parādītajā logā noklikšķiniet uz "Jauns". Aizpildiet parādītās veidlapas laukus. No viņiem atkarīgs, cik un kādus resursus emulators nodrošinās “tālrunim”. Izvēlieties saprātīgas vērtības un noklikšķiniet uz Labi.

Android virtuālo ierīču pārvaldnieka logā noklikšķiniet uz pogas Sākt. Tādējādi tiks palaists emulators. Startēšana aizņem dažas minūtes. Tāpēc esiet pacietīgi.

Rezultātā jūs redzēsit emulatora logu, kas ir līdzīgs šim:

Aizpildīšanas darbība

Aktivitāte ir darbība, kas tiek parādīta tālruņa ekrānā pēc lietojumprogrammas palaišanas. Uz tā mums būs divas pogas “Iedegties sarkanā gaismas diode” un “Iedegties zilā LED”. Pievienosim tos. Panelī Package Explorer atveriet res/layout/activity_main.xml. Tās izskats būs aptuveni tāds pats kā ekrānuzņēmumā.

Velciet 2 “ToggleButtons” uz ekrāna formu. Pārslēdzieties uz cilni “activity_main.xml” un skatiet šo kodu:

activity_main_aiutogen.xml xmlns: rīki = android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom= android:paddingLeft= android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop = "@dimen/activity_vertical_margin" tools:context = "Galvenā darbība" > android:id="@+id/toggleButton1" android:layout_alignParentLeft="patiess" android:layout_alignParentTop="true" android:text="ToggleButton" /> android:id="@+id/toggleButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView1" android:layout_alignParentRight="patiess" android:text="ToggleButton" /> >

Tas nav nekas vairāk kā mūsu darbība, kas netiek attēlota kā grafika, bet gan aprakstīta XML formātā.

Padarīsim skaidrākus komponentu nosaukumus. Mainīsim laukus android:id šādi.

android:id="@+id/toggleRedLed" ... android:id="@+id/toggleGreenLed" ...

Mēs tiem arī pievienosim parakstus, mainīsim krāsu un teksta izmēru. Iegūtais iezīmēšanas kods izskatīsies šādi:

activity_main.xml "http://schemas.android.com/apk/res/android" xmlns: rīki = "http://schemas.android.com/tools" android:layout_width="fill_parent" android:paddingBottom= "@dimen/activity_vertical_margin" android:paddingLeft= "@dimen/activity_horizontal_margin" android:paddingRight= "@dimen/activity_horizontal_margin" android:paddingTop = "@dimen/activity_vertical_margin" tools:context = "Galvenā darbība" android:weightSum="2" android:orientation="horizontal" > android:id="@+id/toggleRedLed" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#FF0000" android:textOff="OFF" android:textOn="ON" android:textSize="30dp" /> android:id="@+id/toggleGreenLed" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_weight="1" android:background="#00FF00" android:textOff="OFF" android:textSize="30dp" android:textOn="ON" /> >

Tās pašas izmaiņas var veikt grafiskajā režīmā, izmantojot cilni "Outline/Properties".

Izmēģinājuma brauciens

Mēs varam palaist jaunizveidoto lietojumprogrammu emulatorā. Dodieties uz palaišanas iestatījumiem “Palaist” → Palaist konfigurācijas, kreisajā pusē noklikšķiniet uz “Android lietojumprogramma”. Parādās jauna konfigurācija “New_configuration”. Loga labajā pusē atlasiet cilni “Mērķis” un atlasiet opciju “Palaist visās saderīgās ierīcēs/AVD”.

Noklikšķiniet uz "Lietot" un pēc tam uz "Palaist". Lietojumprogramma tiks palaista emulatorā.

Jūs varat nospiest pogas. Bet nekas nenotiks, jo mēs vēl neesam uzrakstījuši klikšķu apstrādātājus.

Lai lietojumprogrammu palaistu reālā ierīcē, tās iestatījumos ir jāiespējo opcija “USB atkļūdošana” un jāpievieno tā datoram.

Reālā ierīcē lietojumprogramma izskatās tieši tāpat.

Koda rakstīšana Android ierīcēm

Manifesta rediģēšana

Katrai Android lietojumprogrammai ir jāpaziņo sistēmai, kādas tiesības tai ir jāpiešķir. Tiesības ir norādītas tā sauktajā manifesta failā AndroidManifest.xml. Tajā mums jānorāda fakts, ka vēlamies savā lietojumprogrammā izmantot Bluetooth. Lai to izdarītu, vienkārši pievienojiet tikai dažas rindiņas:

AndroidManifest.xml "http://schemas.android.com/apk/res/android" package="ru.amperka.arduinobtled" android:versionCode="1" android:versionName="1.0" > android:minSdkVersion="10" android:targetSdkVersion="10" /> "android.permission.BLUETOOTH"/> "android.permission.BLUETOOTH_ADMIN"/>
android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > android:nosaukums = "ru.amperka.arduinobtled.MainActivity" android:label="@string/app_name" > > "android.intent.category.LAUNCHER" /> > > > >

Galvenā koda pievienošana

Ir pienācis laiks iedvest dzīvību mūsu lietojumprogrammā. Atveriet failu MainActivity.java (src → ru.amperka.arduinobtled). Sākotnēji tajā ir šāds kods:

MainActivityAutogen.java pakotne ru.amperka.arduinobtled ; importēt android.os.Bundle ; importēt android.app.Activity ;

importēt android.view.Menu ;

    publiskā klase MainActivity paplašina darbību ( @Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; ) @Override public Būla onCreateOptionsMenu(

    Izvēlne

    izvēlne) ( getMenuInflater() .inflate (R.menu .main , menu) ; return true ; ) )

Pievienosim kodu atbilstoši tam, kas mums nepieciešams:

Mēs ieslēgsim Bluetooth, ja tas būs izslēgts.

Mēs apstrādāsim pogu klikšķus

Mēs nosūtīsim informāciju par to, kura poga tika nospiesta. Mēs pārsūtīsim uz Arduino vienu baitu ar divciparu skaitli. Skaitļa pirmais cipars ir tapas numurs, pie kura ir pievienota konkrēta gaismas diode, otrais ir gaismas diodes stāvoklis: 1 - ieslēgts, 0 - izslēgts. Komandas numurs tiek aprēķināts ļoti vienkārši: Ja tiek nospiesta sarkanā poga, tad tiek ņemts skaitlis 60 (sarkanajam LED mēs izvēlējāmies Arduino 6. tapu) un tam tiek pievienots 1 vai 0, atkarībā no tā, vai LED vajadzētu tagad ir ieslēgts vai nē. Zaļajai pogai viss ir līdzīgi, tikai 60 vietā tiek ņemts 70 (jo zaļā gaismas diode ir savienota ar 7. tapu). Rezultātā mūsu gadījumā ir iespējamas 4 komandas: 60, 61, 70, 71. Uzrakstīsim kodu, kas realizē visu teikto. MainActivity.java pakotne ru.amperka.arduinobtled ; importēt java.io.IOException ; MainActivity.java pakotne ru.amperka.arduinobtled ; importēt java.io.OutputStream ; imports java.lang.reflect.InvocationTargetException; importēt java.lang.reflect.Method ; importēt android.app.Activity ; imports ToggleButton redButton; ToggleButton greenButton;//ligzda, ar kuru mēs nosūtīsim datus uz Arduino BluetoothSocket klientaSocket;//Šī funkcija tiek palaista automātiski, kad lietojumprogramma tiek startēta @Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate(savedInstanceState) ; setContentView(R.layout .activity_main ) ;//"Savienojiet" pogas skatu lietojumprogrammas logā ar implementāciju redButton = (ToggleButton) findViewById(R.id .toggleRedLed ) ; greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed ) ; //Pievienojiet pogai “klikšķu klausītāju”. redButton.setOnClickListener(this); greenButton.setOnClickListener(this); //Ieslēgt Bluetooth. Ja tas jau ir iespējots, nekas nenotiks Stīga enableBT = Bluetooth Adapter.ACTION_REQUEST_ENABLE ; startActivityForResult(new Intent(enableBT) , 0 ) ; //Mēs vēlamies izmantot noklusējuma Bluetooth adapteri BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); //Mēģina veikt šīs darbības mēģināt (//Ierīce ar šo adresi ir mūsu Bluetooth Bee //Adrese tiek noteikta šādi: izveidot savienojumu //starp datoru un moduli (pin: 1234) un pēc tam meklējiet iestatījumus//savienojuma moduļa adrese. Visticamāk, ka būs līdzīgi. BluetoothDevice ierīce = bluetooth.getRemoteDevice("00:13:02:01:00:09" ) ;//Sākt savienojumu ar ierīci Metode m = device.getClass().getMethod("createRfcommSocket", new Class(int.class)); clientSocket = (BluetoothSocket) m.invoke(ierīce, 1); clientSocket.connect(); clientSocket = (BluetoothSocket) m.invoke(ierīce, 1); //Ja rodas kļūdas, izvadiet ziņojumu žurnālā clientSocket = (BluetoothSocket) m.invoke(ierīce, 1); ) noķert ( clientSocket = (BluetoothSocket) m.invoke(ierīce, 1); IOIzņēmums DrošībaIzņēmums e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) noķert ( NoSuchMethodException importēt android.os.Bundle ; IllegalArgumentException IllegalAccessException InvocationTargetException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ;)//Parādīt ziņojumu par veiksmīgu savienojumu importēt java.lang.reflect.Method ; Toast.makeText(getApplicationContext(), "CONNECTED", Toast.LENGTH_LONG).show(); ) @Override public Būla onCreateOptionsMenu( izvēlne) ( // Uzpūst ēdienkarti; tas pievieno vienumus darbību joslai, ja tāda ir. getMenuInflater() .inflate (R.menu .main , menu) ; atgriezt patiesu ; //Atkarībā no tā, kura poga tika nospiesta, //mainīt datus nosūtīšanai if (v == redButton) ( vērtība = (redButton.isChecked () ? 1 : 0 ) + 60 ; ) else if (v == greenButton) ( vērtība = (greenButton.isChecked () ? 1 : 0 ) + 70 ; ) //Ierakstiet datus izvades straumē outStream.write(vērtība); Metode) noķert ( e) (//Ja ir kļūdas, izvadiet tās žurnālā Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7, OUTPUT) ; ) void loop() (//Ja dati ir atnākuši if (Serial.available() > 0) (//Nolasīt ienākošo baitu baits incomingByte = Serial.read(); //Iegūstiet PIN numuru ar veselu skaitli, dalot saņemtā baita vērtību ar 10 //un nepieciešamā darbība, iegūstot dalījuma atlikumu ar 2://(1 — iedegas, 0 — izslēdzas)

digitalWrite(incomingByte / 10 , incomingByte % 2 ) ;

) )

Skiču aizpildīšanas iezīmes

Lai sazinātos ar Bluetooth-Bee ar kontrolieri, tiek izmantoti tie paši kontakti (0 un 1), kas programmaparatūrai. Tāpēc, programmējot kontrolieri, slēdzim "SERIAL SELECT" uz "Wireless Shield" jābūt iestatītam pozīcijā "USB" un pēc mirgošanas tas jāatgriež pozīcijā "MICRO".

Rezultāts

Secinājums

Šajā rakstā mēs uzzinājām, kā izveidot lietojumprogrammas Android operētājsistēmai un pārsūtīt datus, izmantojot Bluetooth. Tagad, nospiežot pogu uz Android operētājsistēmas tālruņa ekrāna, displeja LED stāvoklis mainīsies.

Var attīstīt savu ideju un izveidot lietotājam draudzīgāku interfeisu uz Android, ar to vadīt daudz sarežģītākas ierīces, publicēt foršas aplikācijas Android Market un vēl daudz, daudz interesanta! .

Ļoti bieži jūsu projektos ir nepieciešama tālvadības pults vai datu pārsūtīšana no tālruņa sīkrīkiem. Viena no populārākajām un izplatītākajām datu apmaiņas metodēm, izmantojot Bluetooth

Šodien mēs apskatīsim vienkāršus piemērus, kā savienot Bluetooth

  • moduli uz Arduino un konfigurējiet tālvadības pulti no sava tālruņa.
  • Mums būs nepieciešams:

MALE-MAMA vadu komplekts HC-06 Bluetooth

Pievienojiet Bluetooth Bluetooth
Arduino mikrokontrollera modulis ir visērtākais, izmantojot MALE-MAMALE vadu. RXD
Arduino TXD
GND GND
Pin 1 (TX) VCC

Pin 0 (RX) 5V -> RXD ,Esiet uzmanīgi, jums ir nepieciešams izveidot savienojumu -> TXD .

TX

RX Modulis sazinās, izmantojot tos pašus RX un TX portus kā USB.

Int val; int LED = 13; void setup() ( Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); ) void loop() ( if (Serial.available()) ( val = Serial.read(); / / Kad rakstzīme ir "1", ieslēdziet LED if (val == "1") ( digitalWrite(LED, HIGH); ) // Kad rakstzīme ir "0", izslēdziet LED if (val == "0") ( digitalWrite (LED, LOW ); ) ) )

Pēc tam, kad skice ir ierakstīta un Bluetooth Modulis ir savienots ar Arduino, varat pāriet uz nākamo soli.

Bluetooth savienojuma izveide ar tālruni

Kā arduino barošanas avotu vēlams izmantot nevis USB, bet gan ārējo 9 V barošanas avotu.

  1. Ieslēdziet Bluetooth savā tālrunī un meklējiet jaunas ierīces
  2. Mēs atrodam traucējumu sarakstā " HC-06" un izveidojiet savienojumu ar to.
  3. Tālrunis prasīs PIN kodu. jums jāievada " 1234 "vai" 0000 "
  4. Urrā. Ierīce ir pievienota.

Tagad tālrunī ir jālejupielādē Bluetooth terminālis. Apskatīsim Android platformas piemēru.



Jūs varat instalēt dažādus Bluetooth termināļus, parasti tie atšķiras tikai ar dažādu dizainu, funkcionalitāte nemainās. Varat arī atrast iOS produktu termināli.

Pēc termināļa instalēšanas mēs to palaižam, atlasām mūsu Bluetooth moduli HC-06 un izveidojam savienojumu ar to.

Ir pienācis laiks izmēģināt projektu darbībā. Terminālī ierakstām skaitli “0” un nosūtām. LED L, kas atrodas uz arduino plates blakus tapai 13, vajadzētu nodziest. Tagad mēs nosūtām numuru “1” caur termināli, un L LED vajadzētu iedegties.

Darba demonstrēšana:


Mājas darbs:

  • Mainiet skici tā, lai gaismas diode iedegtos un nodziest, izmantojot to pašu komandu, piemēram, “G”.
  • Pievienojiet skici un iemāciet tai pārveidot teksta datus, kas nāk, izmantojot Bluetooth, digitālos datos un ieviest dimēru, iedegt LED, izmantojot PWM, ar noteiktu spilgtumu no 0 līdz 254, kas nāk caur Bluetooth.

Vai jums ir nepieciešams attālināti vadīt savu Arduino plati un apmainīties ar datiem ar citām Bluetooth ierīcēm? Bluetooth moduļi HC-05, HC06 palīdzēs tikt galā ar šo uzdevumu.

Raksta pirmajā daļā mēs runāsim par to, kā izveidot bezvadu savienojumu starp Arduino un datoru, bet otrajā daļā - kā izveidot savienojumu starp Arduino un Android tālruni. .

Šis raksts būs neatņemama sastāvdaļa turpmākajā tālvadības automašīnas montāžā.

Komponenti atkārtošanai (pirkt Ķīnā):

HC-05/06 moduļi ir tukši Bluetooth ar papildu vadiem.

Proti: tie ir uzstādīti uz pamatnes, uz kuras ir stabilizators no 5 līdz 3,3 voltiem, LED, kas norāda moduļa statusu (vai savienojums ir izveidots vai nē), un kondensatori uz elektropārvades līnijām. Uz tāfeles ir uzstādīts arī mosfet tranzistors (Q1), kas vajadzības gadījumā var pārraut Bluetooth barošanas ķēdi, tādējādi to izslēdzot, taču tas mūsu pārskatā netiks izmantots.

No priekšpuses modulis izskatās šādi

Savienojuma izveide ar Arduino

Bluetooth HC-05/06 Pievienojiet Bluetooth
VCC +5V
GND GND
TX RX
RX TX

Kad modulim tiek pieslēgta strāva, iebūvētā gaismas diode sāk mirgot.

1) Ar datoru (WIN7 operētājsistēma)

2) Ar tālruni (ANDROID OS)

Abos gadījumos mums būs jāizpilda 2 darbības: savienot pārī moduli un ierīci, vadīt caur kādu termināli.

1. daļa. Savienojuma izveide ar datoru (WIN7)

Ja jūsu datorā nav iebūvēta Bluetooth, varat to izmantot. To atrast sakaru veikalos vai radio tirgos nav grūti.

Pēc Bluetooth draiveru instalēšanas varat sākt strādāt.

. 1. darbība

Dodieties uz vadības paneli, noklikšķiniet uz Bluetooth ikonas un atlasiet "Rādīt Bluetooth ierīces"

Pēc kāda laika dators veiks meklēšanu, un jūs redzēsit savu moduli (Jūsu modulim var būt cits nosaukums).

Atlasiet otro opciju - “Ievadiet ierīces savienošanas pārī kodu”

HC-06 šis kods ir 1234

Ar šo attēlu viss beidzas.

Un pēc tam ir vēl viens

Pirmais iestatīšanas posms ir pabeigts

Ja aizmirstat, kuru COM portu esat identificējis kā Bluetooth, vienmēr varat to uzzināt, veicot šādas darbības:

Darbības

P.S. Vai arī skatieties ierīču pārvaldniekā

. 2. cēliens

Datu pārsūtīšanai var izmantot jebkuru termināli. Es izmantoju vienkāršo un bezmaksas "Termītu".

Kā piemēru mainīsim Arduino platē iebūvētās LED "LED 13" stāvokli. Tas ieslēgsies, saņemot simbolu “W”, un izslēgsies, kad tiek saņemts “S”. Tālāk redzamā skice ir jāaugšupielādē Arduino platē. Ielejot dēlī, jums ir jāatvieno strāvas padeve no Bluetooth moduļa, pēc uzpildīšanas pievienojiet vēlreiz.

programmas koda piemērs:

int val; int LED = 13; nederīgs iestatīšana () { Seriāls.begin(9600); pinMode(LED, OUTPUT); ) spēkā neesošs cilpa() ( ja ( Seriāls.available()) (val= Seriāls.lasīt(); // Kad simbols "W" iedegas LED if (val == "W") ( digitalWrite (LED, HIGH);) // Kad simbols "S" izslēdz LED if (val == "S" ) ( digitalWrite (LED, LOW ); ) ) ) Atveriet programmu " Termīts"

Iestatījumos atlasiet mūsu portu, ātrumu (9600).

Varat arī pārbaudīt moduli bez Arduino, vienkārši saīsinot TX un RX tapas. Termītu zīmes nosūtīja rakstzīmes zilā krāsā un saņemtās rakstzīmes zaļā krāsā. Tie. ja mēs nosūtījām ar īssavienotām tapām un saņēmām to pašu, tas nozīmē, ka modulis darbojas pareizi. Tas ir parādīts zemāk esošajā fotoattēlā.

2. daļa. Savienojuma izveide ar tālruni (Android)

Testa objekts būs Samsung Galaxy Ace 2 tālrunis ar Android operētājsistēmu.

. 1. darbība

Savienojuma izveide ar tālruni

. 2. cēliens

Kā termināli atkal izvēlēsimies vienkāršu un bezmaksas, bet šoreiz “Bluetooth Terminal”

P.S. Ja nevarat izveidot savienojumu, atvienojiet strāvas padevi no Bluetooth un izveidojiet savienojumu vēlreiz.

Mēs izstrādājam Android lietojumprogrammu, lai kontrolētu Arduino slodzi. Bet, kā jūs visi saprotat, jūs vienkārši nevarat savienot vienu ar otru - jums ir nepieciešams saziņas kanāls, un kāds mums ir vispieejamākais un lētākais kanāls? Bluetooth, protams! Mēs par to runāsim tālāk.
Šodien risinām ražošanas jautājumus - savienojam HC-06 Bluetooth moduli. Tā galvenā atšķirība no HC-05 ir tā, ka tas ir nolietots un nodrošina tikai nepieciešamās minimālās iespējas.

Kopumā HC-06 var uzskatīt par bezvadu UART paplašinātāju. Tā kā mēs to savienojam no datora, izmantojot Bluetooth, mēs to redzam kā COM portu, un, pieslēdzoties kontaktiem, mums ir tīrs UART. Gandrīz viss, kas nāk no vienas puses, nāk ārā no otras. Izņemot AT komandas no kontaktiem.

AT komandas ir veco modemu mantojums, kas datēts ar 1977. gadu. Tās ir īsas virknes komandas, piemēram, “AT”, “AT-NAME”, “AT-PIN”. Parasti komandas ievadīšanu pabeidz ar taustiņu Enter. Taču šoreiz viss ir nedaudz savādāk, un visa komanda jāsaņem aptuveni vienas sekundes laikā. Šī iemesla dēļ programmas, kas ļauj mums rakstīt tieši no tastatūras uz portu, nav piemērotas konfigurēšanai (varat mēģināt no starpliktuves, taču pastāv problēmas). Mums ir nepieciešama iespēja nosūtīt visu virkni uz signālu.

Bruņots COM porta rīkkopa, mēs iestatījām ātrumu uz 9600 un atbilstošo porta numuru. Tālāk mēs sagatavojam pirmo rindu “AT”. Mēs to nosūtām un saņemam atbildi “OK”. Tā jau ir laba zīme. Nejaucām RX un TX un nekļūdījāmies ar ātrumu. Pēc tam, iespējams, vēlēsities piešķirt savam modulim nosaukumu. Mēs rakstām: “AT-NAMEhome” un atbildē saņemam kaut ko līdzīgu “OKhome”. Mēs mainām piekļuves kodu šādi: “AT-PIN010203”, un mēs saņemam: “OKsetpin”
Nu tad. Tas pabeidz sākotnējo iestatīšanu.

Nepalaidiet garām atjauninājumus! Abonējiet mūsu grupu