Doriți să trimiteți un mesaj text de pe smartphone-ul Android pe placa Arduino? Acest articol vă spune cum să o faceți!
Ce ai nevoie
- Smartphone Android cu suport Mod USB gazdă (adică suport OTG) - majoritatea dispozitivelor care rulează Android 3.1 și o versiune ulterioară acceptă acest mod. Verificați-vă telefonul cu prin USB Gazdă aplicație de diagnosticare din Magazinul Play;
- Arduino - orice versiune. Voi folosi Uno R3;
- cablu USB pentru Arduino;
- Cablu USB OTG - ai nevoie de el pentru a conecta cablul USB Arduino la portul micro-USB al telefonului;
- Android Studio - trebuie să îl instalați. Este destul de ușor de făcut. Android Studio facilitează dezvoltarea aplicațiilor cu presupunerile și generarea de cod. Acesta este unul dintre cele mai bune IDE-uri. De asemenea, puteți folosi acest articol ca ghid Instalare Android IDE.
Componentele de bază ale unei aplicații Android
ÎN aplicație Android există trei fișiere principale:
MainActivity.java Aici se află codul Java executabil care controlează modul în care va funcționa aplicația. activity_main.xml Conține aspectul aplicației, adică componente: butoane, componente de afișare a textului etc. AndroidManifest.xml Aici definiți când trebuie să ruleze aplicația, ce permisiuni are nevoie și la ce hardware el trebuie să aibă acces.
Există mult mai multe fișiere, dar toate sunt conectate între ele folosind aceste trei.
O activitate poate fi caracterizată ca un ecran în care utilizatorul interacționează cu telefonul. Activitățile conțin widget-uri precum butoane, câmpuri de text, imagini etc. care ajută la transmiterea informațiilor. Acest tutorial va folosi o singură activitate, MainActivity, care va accepta intrarea utilizatorului pentru a le trimite către Arduino și, de asemenea, va afișa textul primit.
Aspect
Vom folosi același aspect ca aplicația USB și aplicația Bluetooth. Este simplu și conține widget-urile minime necesare pentru a testa conexiunea dintre dispozitive.
După cum puteți vedea, conține un widget EditText pentru a primi date de la utilizator, butoane pentru a porni conexiunea, a transfera date, a încheia conexiunea și a șterge TextView . Datele primite sunt afișate într-un TextView (spațiu gol sub butoane).
Aici este o parte din codul XML. Deoarece codul pentru butoane este similar, nu este afișat aici. Codul complet poate fi descărcat din linkul de la sfârșitul articolului.
Am folosit un RelativeLayout aici, ceea ce înseamnă că fiecare widget este poziționat în raport cu widget-urile din jurul lui. Aspectul poate fi recreat cu ușurință în fila Design, unde puteți glisa și plasa widget-uri oriunde doriți. Trebuie să descriem ce se va întâmpla atunci când butonul este apăsat. Pentru aceasta este folosită metoda onClick. Specificați numele metodei în codul XML pentru buton. Pentru a face acest lucru, adăugați linia:
Android:onClick="onClickMethod"
Acum treceți mouse-ul peste această linie și un avertisment similar cu acesta ar trebui să apară în stânga:
Faceți clic pe opțiunea „Creare onClick...”. Acest lucru va adăuga automat codul metodei onClick la MainActivity.java. Trebuie să faceți acest lucru pentru fiecare buton.
Biblioteca serială USB
Configurarea unei conexiuni seriale în Android necesită destul de multă muncă, deoarece necesită să configurați manual o mulțime de lucruri, așa că am găsit câteva biblioteci care fac totul automat. Am testat mai multe dintre ele și în cele din urmă m-am instalat pe biblioteca UsbSerial de la utilizatorul Github felHR85. Dintre bibliotecile similare pe care le-am găsit, este singura care este încă actualizată. Este destul de ușor de configurat și utilizat. Pentru a adăuga biblioteca la proiectul dvs., descărcați ultima versiune Fișier JAR pe Github. Plasați-l în subdirectorul libs al directorului de proiect. Apoi, în exploratorul de fișiere din Android Studio, faceți clic dreapta pe fișierul JAR și selectați „Adăugați ca bibliotecă”. Asta este!
Algoritm de execuție a programului
Aceasta este o scurtă prezentare a modului în care vom proceda. Fiecare activitate are o metodă onCreate(), care rulează atunci când activitatea este creată. Orice cod doriți să rulați la început trebuie plasat în această metodă. Rețineți că citirea de pe dispozitiv este asincronă, ceea ce înseamnă că va funcționa în fundal. Acest lucru este pentru a vă asigura că datele sunt primite cât mai repede posibil.
Deschiderea unei conexiuni
Mai întâi, să definim o metodă onClick pentru butonul Începe. Când faceți clic, trebuie să căutați toate dispozitivele conectate și apoi să verificați dacă VendorID-ul dispozitivului conectat (VendorID) este același cu VendorID-ul Arduino. Dacă se găsește o potrivire, utilizatorului trebuie să i se ceară permisiunea. Fiecare sclav dispozitiv USB are un ID de furnizor și un ID de produs, care pot fi utilizate pentru a determina ce drivere trebuie utilizate pentru acest dispozitiv. ID de furnizor pentru oricine Placi Arduino este egal cu 0x2341 sau 9025.
Public void onClickStart(View View) ( HashMap usbDevices = usbManager.getDeviceList(); if (!usbDevices.isEmpty()) ( boolean keep = true; for (Map.Entry intrare: usbDevices.entrySet()) (dispozitiv = intrare. getValue(); int deviceVID = device.getVendorId(); if (deviceVID == 0x2341) //Arduino Vendor ID (PendingIntent pi = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); usbManager.requestPermission(); device, pi); keep = false; else (conexiune = null; device = null; ) if (!keep) break ;
Acum să definim un BroadcastReceiver pentru a primi mesaje difuzate pentru a cere permisiunea utilizatorului și pentru a începe automat o conexiune când dispozitivul este conectat și pentru a închide conexiunea atunci când este deconectat.
// Difuzați receptorul de mesaje pentru a porni și închide automat o conexiune serială. privat final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() ( @Override public void onReceive(Context context, Intent intent) ( if (intent.getAction().equals(ACTION_USB_PERMISSION)) ( boolean acordat = intent.getExtras().getBoolean.(Usb). EXTRA_PERMISSION_GRANTED); if (acordat) (conexiune = usbManager.openDevice(dispozitiv); serialPort = UsbSerialDevice.createUsbSerialDevice(dispozitiv, conexiune); if (serialPort != null) ( if (serialPort.open()) ( //Setare parametrii seriali conexiuni. setUiEnabled(true); tvAppend(textView,"Serial Connection Open!\n"); else ( Log.d("SERIAL", "PORT NOT OPEN"); ) ) else ( Log.d("SERIAL", "PORT IS NULL");
) ) else ( Log.d("SERIAL", "PERM NU ACCORDAT"); ) ) else if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) ( onClickStart(startButton); ) else if (intent.getAction) ().equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) ( onClickStop(stopButton); ) ); );
Dacă prima condiție IF este îndeplinită și dacă utilizatorul a dat permisiunea, atunci începeți conectarea la dispozitivul al cărui ID de furnizor se potrivește cu ID-ul de furnizor de care avem nevoie. În plus, dacă se primește un mesaj difuzat despre conectarea sau deconectarea unui dispozitiv, apelați manual metodele onClick pentru butoanele Start și Stop. SerialPort este definit folosind dispozitivul și conexiunea ca argumente. Dacă aveți succes, deschideți SerialPort și setați parametrii corespunzători. Valorile parametrilor pentru Arduino Uno sunt: 8 biți de date, 1 bit de oprire, fără bit de paritate, controlul fluxului dezactivat. Rata baud poate fi 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 sau 115200 bps, dar vom folosi standardul de 9600 bps.
Primirea datelor de la dispozitiv
UsbSerialInterface.UsbReadCallback mCallback = nou UsbSerialInterface.UsbReadCallback() ( // Definiți o metodă de apel invers care este apelată la primirea datelor. @Override public void onReceivedData(byte arg0) ( String data = null; try ( data = new String(arg0, arg0) " UTF-8"); data.concat("/n"); catch (UnsupportedEncodingException(); ) );
Datele primite vor fi sub formă de octeți bruti. Va trebui să le re-codăm într-un format care poate fi citit, cum ar fi UTF-8. Acestea sunt apoi adăugate la TextView folosind metoda specială tvAppend(). Acest lucru se face în acest fel, deoarece orice modificare a interfeței cu utilizatorul poate fi făcută numai pe fir interfata utilizator. Deoarece acest apel invers va fi rulat ca un thread de fundal, nu poate afecta direct interfața cu utilizatorul.
Private void tvAppend(TextView tv, CharSequence text) ( final TextView ftv = tv; final CharSequence ftext = text; runOnUiThread(new Runnable() ( @Override public void run() ( ftv.append(ftext); ) )); )
Transferarea datelor pe dispozitiv
Transferul datelor este relativ simplu în comparație cu citirea datelor de pe un dispozitiv. Acesta este un simplu apel de funcție cu octeții de date care urmează să fie transmiși ca argument. Acest lucru va fi implementat în metoda onClick a butonului Trimitere.
SerialPort.write(string.getBytes());
Închiderea unei conexiuni
Pentru a închide conexiunea, pur și simplu închideți portul serial.
SerialPort.close();
Manifestul aplicației
Manifestul declară ce permisiuni suplimentare poate necesita aplicația. Singura permisiune de care avem nevoie este permisiunea de a face telefon usb gazdă. Adăugați următoarea linie la manifest:
Puteți forța aplicația să pornească automat adăugând un filtru de intenție la activitatea principală, MainActivity . Acest filtru de intenție va fi declanșat atunci când este conectat orice dispozitiv nou. Tipul de dispozitiv poate fi specificat explicit folosind ID-ul furnizorului și/sau ID-ul produsului din fișierul XML.
Observați linia " android:resource="@xml/device_filter ". Aceasta îi spune compilatorului că poate găsi proprietățile dispozitivului într-un fișier numit device_filter în directorul src/main/res/xml, așa că creați un subdirector " xml " în directorul src /main/res și plasați un fișier cu următorul conținut în el:
Testarea aplicației
Creați aplicația și rulați-o pe smartphone. Acum lansați Arduino IDE și configurați Arduino pentru a pur și simplu ecou orice va accepta placa prin portul serial. Iată un cod foarte simplu pentru a vă ajuta să faceți acest lucru:
Void setup() ( Serial.begin(9600); ) void loop() ( char c; if(Serial.available()) ( c = Serial.read(); Serial.print(c); ) )
Acum conectați Arduino la portul microUSB al telefonului dvs. folosind un cablu OTG. Aplicația ar trebui să se lanseze automat. Încercați să trimiteți ceva text și aceleași date vor fi returnate!
Concluzie
Acest articol arată cum poate comunica Arduino cu smartphone-ul tău. Iar posibilitățile de utilizare sunt nelimitate! În cazul în care sunt necesare date de la orice senzor care nu se numără printre cei încorporați în smartphone, puteți utiliza orice microcontroler pentru a citi datele de la acest senzor și a le transfera pe smartphone. Următorul articol vă va arăta cum să vă conectați smartphone-ul la Arduino folosind popularul modul bluetooth HC05.
Acest articol va descrie în detaliu crearea unei mici aplicații pentru sistemul de operare mobil Android și a unei schițe pentru Arduino. Arduino Uno va avea un scut wireless cu un modul Bluetooth. Aplicația se va conecta la modulul Bluetooth și va trimite o anumită comandă. La rândul său, schița va folosi această comandă pentru a aprinde sau a stinge unul dintre LED-urile conectate la Arduino.
Vom avea nevoie
Crearea unei aplicații Android
Necompletat
Dezvoltarea pentru sistemul de operare Android se realizează în mediul de dezvoltare ADT, Android Development Tools. Care poate fi descărcat de pe portalul pentru dezvoltatori Google. După descărcarea și instalarea ADT, nu ezitați să-l lansați. Cu toate acestea, este încă prea devreme pentru a începe dezvoltarea aplicației. De asemenea, trebuie să descărcați Android SDK versiunea cerută. Pentru a face acest lucru, trebuie să deschideți Android SDK Manager „Fereastră → Android SDK Manager”. În listă trebuie să selectăm SDK-ul de care avem nevoie, în cazul nostru Android 2.3.3 (API 10). Dacă nu aveți un telefon, atunci alegeți 2.3.3 sau mai mare; iar dacă există, o versiune care se potrivește cu versiunea sistemului de operare al telefonului. Apoi faceți clic pe butonul „Instalare pachete” pentru a începe procesul de instalare.
Odată ce descărcarea și instalarea sunt finalizate, începem să creăm aplicația. Selectați „Fișier → Nou → Proiect de aplicație Android”. Să umplem conținutul ferestrei așa cum se arată în figură.
Nume aplicație - numele aplicației care va fi afișat în Magazinul Google Play. Dar nu vom publica aplicația, așa că numele nu este deosebit de important pentru noi.
Nume proiect - numele proiectului în ADT.
Nume pachet - identificatorul aplicației. Ar trebui să fie compus după cum urmează: numele site-ului dvs. invers, plus un nume de aplicație.
În listele drop-down „Minimum Required SDK”, „Target SDK”, „Compile With”, selectați versiunea pe care am descărcat-o mai devreme. Versiunile mai noi ale SDK-ului acceptă teme grafice pentru aplicații, dar versiunile mai vechi nu. Prin urmare, în câmpul „Temă”, selectați „Niciuna”. Faceți clic pe „Următorul”.
Debifați „Creați pictograma de lansare personalizată”: în sensul acestui articol, nu ne vom concentra pe crearea unei pictograme de aplicație. Faceți clic pe „Următorul”.
În fereastra care apare, puteți selecta vizualizarea „Activitate”: vizualizarea a ceea ce va fi pe ecran la lansarea aplicației. Selectăm „Activitate goală”, ceea ce înseamnă că vrem să începem totul de la zero. Faceți clic pe „Următorul”.
Va exista o singură activitate în aplicația noastră, așa că nu trebuie să modificați nimic în fereastra care apare. Așa că faceți clic pe „Finish”.
Asta e, aplicația noastră este creată.
Configurarea emulatorului
Aplicațiile Android sunt depanate pe un dispozitiv real sau, dacă nu există, atunci pe un emulator. Haideți să le configuram pe ale noastre.
Pentru a face acest lucru, lansați „Fereastră → Manager dispozitiv virtual Android”. În fereastra care apare, faceți clic pe „Nou”. Completați câmpurile din formularul care apare. Depinde de ei câte și ce resurse va oferi emulatorul „telefonului”. Selectați valori rezonabile și faceți clic pe OK.
În fereastra Android Virtual Device Manager, faceți clic pe butonul „Start”. Aceasta va lansa emulatorul. Pornirea durează câteva minute. Asa ca ai rabdare.
Ca rezultat, veți vedea o fereastră de emulator similară cu aceasta:
Activitate de umplere
O activitate este ceea ce este afișat pe ecranul telefonului după lansarea aplicației. Pe el vom avea două butoane „Aprinde LED-ul roșu” și „Aprinde LED-ul albastru”. Să le adăugăm. În panoul „Explorator de pachete”, deschideți res/layout/activity_main.xml. Aspectul său va fi aproximativ același ca în captura de ecran.
Trageți 2 „ToggleButtons” pe formularul de ecran. Comutați la fila „activity_main.xml” și vedeți următorul cod:
activity_main_aiutogen.xmlAceasta nu este altceva decât Activitatea noastră, care nu este afișată ca grafic, ci descrisă în format XML.
Să clarificăm numele componentelor. Să modificăm câmpurile android:id după cum urmează.
De asemenea, le vom adăuga semnături, le vom schimba culoarea și dimensiunea textului. Codul de markup rezultat va arăta astfel:
activity_main.xmlAceleași modificări pot fi făcute în modul grafic folosind fila „Contur/Proprietăți”.
Cursa de probă
Putem rula aplicația nou creată pe emulator. Accesați setările de lansare „Run” → Run Configurations”, în partea stângă faceți clic pe „Android Application”. Apare o nouă configurație „New_configuration”. În partea dreaptă a ferestrei, selectați fila „Target” și selectați opțiunea „Launch on all compatible devices/AVD”.
Faceți clic pe „Aplicați” și apoi pe „Run”. Aplicația se va lansa în emulator.
Puteți apăsa butoane. Dar nu se va întâmpla nimic, din moment ce încă nu am scris instrumente de gestionare a clicurilor.
Pentru a rula aplicația pe un dispozitiv real, trebuie să activați opțiunea „Depanare USB” în setările sale și să o conectați la computer.
Pe un dispozitiv real, aplicația arată exact la fel.
Scrierea codului pentru Android
Editarea manifestului
Fiecare aplicație Android trebuie să spună sistemului ce drepturi trebuie să acorde. Drepturile sunt enumerate în așa-numitul fișier manifest AndroidManifest.xml. În ea trebuie să indicăm faptul că dorim să folosim Bluetooth în aplicația noastră. Pentru a face acest lucru, adăugați doar câteva rânduri:
AndroidManifest.xmlAdăugarea codului principal
Este timpul să dăm viață aplicației noastre. Deschideți fișierul MainActivity.java (src → ru.amperka.arduinobtled). Inițial conține următorul cod:
Pachetul MainActivityAutogen.java ru.amperka.arduinobtled ; import android.os.Bundle ; import android.app.Activity ;import android.view.Menu ;
clasa publică MainActivity extinde activitatea ( @Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate (savedInstanceState) ; setContentView(R.layout .activity_main ) ; ) @Override public boolean onCreateOptionsMenu(
Meniu
meniu) ( getMenuInflater() .inflate (R.menu .principal , meniu) ; return true ; ) )
Să adăugăm codul în funcție de ceea ce avem nevoie:
Vom activa Bluetooth dacă este dezactivat.
Vom procesa clicurile pe buton
Vom trimite informații despre ce buton a fost apăsat. Vom transfera un octet cu un număr din două cifre la Arduino. Prima cifră a numărului este numărul pinului la care este conectat un anumit LED, a doua este starea LED-ului: 1 - aprins, 0 - stins. Numărul comenzii se calculează foarte simplu: dacă se apasă butonul roșu, atunci se ia numărul 60 (pentru LED-ul roșu am ales al 6-lea pin al Arduino) și i se adaugă 1 sau 0, în funcție de dacă LED-ul ar trebui. acum fi activat sau nu. Pentru butonul verde totul este similar, doar că în loc de 60 se ia 70 (deoarece LED-ul verde este conectat la pinul 7). Drept urmare, în cazul nostru, sunt posibile 4 echipe: 60, 61, 70, 71. Să scriem cod care implementează tot ce s-a spus. Pachetul MainActivity.java ru.amperka.arduinobtled ; import java.io.IOException ; Pachetul MainActivity.java ru.amperka.arduinobtled ; import java.io.OutputStream ; import java.lang.reflect.InvocationTargetException; import android.widget.Toast ; import android.widget.ToggleButton ; Clasa publică MainActivity extinde implementările de activitate Vedere .OnClickListener(//Instanțe ale claselor noastre de butoane ToggleButton redButton; ToggleButton greenButton; //Socket-ul cu care vom trimite date către Arduino BluetoothSocket clientSocket; //Această funcție rulează automat când pornește aplicația@Override protected void onCreate(Bundle savedInstanceState) ( super .onCreate(savedInstanceState) ; setContentView(R.layout .activity_main ) ; //"Conectează" vizualizarea butonului din fereastra aplicației cu implementarea redButton = (ToggleButton) findViewById(R.id .toggleRedLed) ; greenButton = (ToggleButton) findViewById(R.id .toggleGreenLed) ; //Adăugați un „click listener” la buton redButton.setOnClickListener(this); greenButton.setOnClickListener(this);//Porniți bluetooth. Dacă este deja activat, nu se va întâmpla nimic Şir enableBT = BluetoothAdapter.ACTION_REQUEST_ENABLE ; startActivityForResult(new Intent(enableBT) , 0 ) ; //Vrem să folosim adaptorul bluetooth implicit BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); //Încercarea de a face aceste acțiuni incearca (//Dispozitivul cu această adresă este Bluetooth Bee //Adresa este determinată astfel: stabiliți o conexiune//între PC și modul (pin: 1234), apoi căutați în setări //adresa modulului de conectare. Cel mai probabil va fi similar. Dispozitiv BluetoothDevice = bluetooth.getRemoteDevice("00:13:02:01:00:09" );//Inițiază conexiunea cu dispozitivul Metodă//Inițiază conexiunea cu dispozitivul m = device.getClass().getMethod("createRfcommSocket", new Class(int.class));//Inițiază conexiunea cu dispozitivul clientSocket = (BluetoothSocket) m.invoke(dispozitiv, 1);//Inițiază conexiunea cu dispozitivul clientSocket.connect();//Dacă apar erori, trimiteți un mesaj în jurnal ) prinde ( IOException import android.os.Bundle ; SecurityException e) ( Log.d ("BLUETOOTH" , e.getMessage () ) ; ) catch ( NoSuchMethodException IllegalArgumentException@Override public void onClick( import android.widget.Toast ; v) ( //Încerc să trimit date incearca ( //Obțineți fluxul de ieșire pentru transferul de date OutputStream outStream = clientSocket.getOutputStream(); int valoare = 0 ; //În funcție de ce buton a fost apăsat,//modifică datele pentru trimitere if (v == redButton) ( valoare = (redButton.isChecked () ? 1 : 0 ) + 60 ; ) else if (v == greenButton) ( valoare = (greenButton.isChecked () ? 1 : 0 ) + 70 ; )//Scrieți date în fluxul de ieșire //adresa modulului de conectare. Cel mai probabil va fi similar. outStream.write(valoare); ) prinde ( e) ( //Dacă există erori, scoateți-le în jurnal Log.d ("BLUETOOTH" , e.getMessage (, OUTPUT) ; pinMode(7 , OUTPUT) ; ) void loop() ( //Dacă au sosit datele dacă (Serial.available() > 0) ( //Citiți octetul de intrare byte incomingByte = Serial.read(); //Obțineți numărul pin prin număr întreg, împărțind valoarea octetului primit la 10//și acțiunea de care avem nevoie obținând restul împărțirii la 2://(1 - aprinde, 0 - stinge)
digitalWrite(incomingByte / 10 , incomingByte % 2 );
) )
Concluzie
Caracteristicile umplerii schițelor Pentru a comunica Bluetooth-Bee cu controlerul, se folosesc aceiași pini (0 și 1) ca și pentru firmware. Prin urmare, la programarea controlerului, comutatorul „SERIAL SELECT” de pe „Wireless Shield” trebuie să fie setat în poziția „USB”, iar după ce clipește trebuie să fie readus în poziția „MICRO”. Rezultat În acest articol am învățat cum să creăm aplicații pentru sistem de operare
Android și transferați date prin Bluetooth. Acum, când apăsați un buton de pe ecranul unui telefon bazat pe sistemul de operare
sisteme Android
, starea LED-ului de pe placă se va schimba.
Puteți să vă dezvoltați ideea și să faceți o interfață mai ușor de utilizat pe Android, să controlați dispozitive mult mai complexe cu acesta, să publicați aplicații interesante în Android Market și multe, mult mai multe lucruri interesante!
În acest proiect vreau să arăt cum să încărcați o schiță pe Arduino folosind un dispozitiv obișnuit bazat pe sistemul de operare Android. Acest dispozitiv poate fi util pentru plăcile Arduino instalate permanent, cum ar fi controlerele de iluminat...
Pasul 1: Materiale și instrumente
Materiale:
Cablu USB-A la USB-B
Cablu USB la gazdă (cablu OTG)
Arduino
1 LED (pentru testare)
Dispozitiv Android, versiunea de sistem de operare Android 4.0.0+ (sau cu suport pentru modul gazdă)
Un cablu USB la gazdă este practic același cu un cablu USB, dar conectorul micro USB are rezistențe diferite. Rezistoarele interne permit dispozitivului Android să activeze modul USB-Host. În acest mod, puteți utiliza și unități flash USB sau alte dispozitive care acceptă o interfață USB. Aceasta este o caracteristică foarte utilă, iar acum puteți chiar să conectați o imprimantă USB.
Problema este că, odată ce un dispozitiv USB este conectat, acesta va primi energie de la dispozitivul gazdă, consumând astfel bateria.
Pasul 3: Conexiuni
Acesta este un pas foarte simplu și nu necesită multă atenție. Pur și simplu conectați cablul USB-A la USB-B la conectorul USB mamă al cablului gazdă. Apoi conectați conectorul USB-B la Arduino și Micro USB la dispozitivul Android.
Pasul 4: Pornirea Arduino
Toate conexiunile trebuie făcute așa cum se arată în fotografie. Apoi, puteți porni Arduino și încărcați cel mai recent cod descărcat în el. Am folosit schița Blink pe Arduino. Dacă Arduino nu pornește, atunci verificați dacă conexiunile sunt corecte.
Pasul 5: Aplicații
Acum Arduino este gata să descarce codul, dar dispozitivul dvs. Android nu este încă...
Să schimbăm această situație!
În acest moment, există două aplicații care vă permit să lucrați cu Arduino prin modul Gazdă.
Pentru a le descărca, accesați site-ul Play Store, apoi introduceți „Arduino” în bara de căutare. Apoi, faceți clic pe „Aplicații”, după care vor fi afișate doar aplicațiile. Avem nevoie de două aplicații: „ArduinoDroid” și „ArduinoCommander”. Instalați-le, apoi lansați „ArduinoDroid”. Această aplicație trebuie să actualizeze IDE-ul, ceea ce va dura ceva timp. Aplicația „ArduinoCommander” va fi necesară în continuare.
Notă: Nu este necesar să folosiți ambele aplicații în același timp, vreau doar să vă arăt cum funcționează ambele!
Pasul 6: ArduinoCommander, autorul programului Anton Smirnov
Ei bine, să începem cu aplicația ArduinoCommander. A fost dezvoltat de Anton Smirnov pentru Andorid versiunea 2.2 sau mai recentă.
Această aplicație este proiectată să funcționeze cu Arduino folosind un dispozitiv Android. Cu acesta, puteți schimba cu ușurință stările pinului (setat direct la înălțime mare sau scăzută), puteți încărca schițe sau puteți citi pinurile analogice în modul osciloscop.
Această aplicație este ușor de înțeles, chiar dacă controalele nu sunt standard. Detectează automat Arduino și funcționează foarte stabil.
Cu toate acestea, unele funcții nu funcționează. Sper că aceste erori vor fi remediate în versiunile viitoare ale aplicației. Încărcarea schiței a avut succes!
Dau acestei aplicații 4.0 din 5 stele.
Acum să aruncăm o privire rapidă la conectarea la Arduino.
Pasul 7: Partea 1
Alte opțiuni includ:
Ethernet
Bluetooth
Suplimente USB
Pasul 8: Partea 2
Acum faceți clic pe „Detectare automată”. Dispozitivul Android va căuta automat Arduino, apoi îl va afișa pe ecran. Acum să selectăm Arduino (doar să facem clic pe el).
Pasul 9: Partea 3
După finalizarea pasului anterior, Arduino nostru va fi afișat pe ecran. De obicei, este afișat în culoare și puteți face clic pe pini pentru a le schimba modul. Cu toate acestea, selecția modului nu a funcționat pentru mine și nu am putut rezolva această problemă; Poate că totul va funcționa pentru tine fără eșecuri. Când faceți clic pe colțul din dreapta jos, veți ajunge la un meniu care vă va permite să descărcați schițele de pe cardul SD. Această caracteristică funcționează foarte bine.
Pasul 10: ArduinoDroid
Acum să trecem la o altă aplicație care vă permite să încărcați schițe pe Arduino. Această aplicație se numește „ArduinoDroid” și funcționează pentru Android versiunea 4.2.2 sau mai recentă. Autorul acestei aplicații este și Anton Smirnov!
De mult timp, Google a făcut posibilă conectarea dispozitivelor Android prin USB la diferite microcontrolere prin deschiderea API-ului. Acum toți cei care sunt implicați în crearea diverselor proiecte pe Arduino se pot bucura, pentru că acum va fi mult mai ușor să depanați sistemul Android Arduino și, în principiu, să le reglementați interacțiunea.
Am început deja să prezentăm cititorilor posibilitățile de a combina un microcontroler și un smartphone - vezi.
Dar chiar și înainte de aceasta, diverse module au permis Android și Arduino să interacționeze cu ușurință. Să ne dăm seama cum puteți implementa un proiect care va fi controlat de pe un smartphone și ce este necesar pentru aceasta.
Unde pot folosi conexiunea dintre Android și Arduino?
În primul rând, trebuie să vă gândiți cum să utilizați capacitatea de a transmite un semnal de la Android la Arduino. La urma urmei, înainte de a studia orice materiale, fiecare persoană sănătoasă ar trebui să înțeleagă unde îl va duce în cele din urmă. Chiar dacă vorbim despre un hobby. Într-adevăr, capacitatea de a controla echipamentele de pe smartphone-ul tău a încetat de mult să fie percepută ca ceva extraordinar. În zilele noastre, majoritatea televizoarelor, frigiderelor și chiar a aspiratoarelor achiziționate de clasa de mijloc au capacitatea de a transfera date pe un smartphone.
Această soluție vă permite să simplificați semnificativ viața omului obișnuit, deoarece pentru același televizor nu este nevoie să cumpărați constant baterii pentru telecomandă și să o căutați dacă se pierde. Ne apropiem de locuințele inteligente prețuite, dar unii preferă să nu cumpere astfel de echipamente, ci să le proiecteze ei înșiși.
În acest caz, pachetul Android Arduino ar trebui luat în considerare în două variante:
- Control de la distanță al oricărui dispozitiv folosind un smartphone. Se mai numește și conexiune smartphone-MK. Toate aceleași echipamente, de exemplu, jaluzele glisante sau iluminatul din cameră, care vor fi oprite cu un singur clic. Dacă doriți să faceți aceasta din urmă, atunci nu este nevoie să schimbați cablajul sau să cumpărați lămpi inteligente speciale, care se pot arde după o lună. Este suficient să achiziționați un mic microcontroler Arduino, un modul de comunicare prin Internet sau Bluetooth fără fir și bandă electrică. După care va fi suficient să lipiți cel mai simplu circuit, care se închide dacă este trimis un semnal către MK.
Acest semnal va fi trimis de pe telefon, închideți contactele, iar lumina va începe să se aprindă. Pentru a evita problemele și pentru o securitate suplimentară a locuinței dvs., puteți scrie un script care poate deschide automat circuitul dacă dispozitivul de control este scos din vedere. Comutatoarele obișnuite vor funcționa în continuare, dar numai când circuitul este închis. - Transfer de date pentru informare sau comunicare MK-Smartphone. Aici nu mai controlezi unele echipamente, ci mai degrabă, dimpotrivă, diverse echipamente îți permit să primești anumite date pe smartphone. Primul lucru care îmi vine în minte și cea mai simplă aplicație este un senzor de mișcare. Acest modul este disponibil în senzori standard pentru microcontrolere Arduino cumpărarea lui nu va fi o problemă, așa cum va fi instalarea lui în pasaj. Apoi nu mai rămâne decât să scriem un cod, unul asemănător care există deja pe multe forumuri în limba engleză, care trimite un SMS sau un mesaj pe rețelele de socializare, precum și o utilitate specială dacă cineva traversează fasciculul infraroșu.
Puteți crea sisteme mai complexe și automatizate care vor transmite nu numai informații media despre apartamentul dvs., ci și să raporteze dacă legumele sau fructele se coace în sera de acasă. Totul depinde doar de imaginația inginerului însuși, dar baza tehnologiei este încă aceeași - transferul de date de la un dispozitiv la altul.
Deci ați ales un proiect potrivit și ați început să-l implementați. Modulele și microcontrolerele au fost deja comandate și, în timp ce sunt pe drum, puteți începe să dezvoltați software. La urma urmei, un Android gol nu interacționează cu Arduino folosind magia.
Aplicații Android pentru interacțiunea cu Arduino
Nu vom dezvolta utilitarul de la zero, deoarece aceasta nu este baza pentru programarea în Java. Cel mai simplu mod este să folosești motoare și medii gata făcute cu o interfață de utilizator, în care literalmente trebuie doar să adaugi 1-2 linii de cod pentru ca butonul să funcționeze. Desigur, o astfel de abordare limitează semnificativ funcționalitatea produsului final și afectează inevitabil creativitatea, dar va fi utilă celor care doresc să implementeze rapid un proiect simplu, fără probleme inutile.
Mai întâi, să ne uităm la cele trei fișiere de bază pe care le veți întâlni atunci când proiectați un program:
- MainActivity.java este întregul cod al aplicației în limba cu același nume, toate funcțiile și metodele pe care le scrieți sunt salvate aici.
- Activity_main.xml – aspect, după cum puteți ghici cu ușurință din extensia fișierului. Locația butoanelor, a textului și a altor componente interactive este stocată aici, care sunt apoi aduse la viață în cod.
- AndroidManifest.xml – Acest fișier se referă și la machete, dar într-o zonă ușor diferită. Acesta definește parametrii de bază pentru lansarea aplicației și permisiunile de care va avea nevoie. În cazul nostru, aceasta este necesitatea de a activa Bluetooth, deoarece prin intermediul acestuia vom comunica cu MK. Dacă realizați un senzor care trebuie să trimită informații pe o distanță lungă, atunci, în consecință, trebuie să porniți și să verificați funcționarea internetului wireless sau mobil.
Bazele recepției și transmiterii datelor
Pentru a înțelege cum va funcționa, în general, viitorul tău proiect, ar merita să studiezi fizica de bază a câmpurilor electromagnetice. Dar pentru a nu supraîncărca cu informații inutile, este suficient să înțelegem că astăzi transferul de date are loc în trei moduri principale:
- Prin intermediul unui cablu USB, care nu este potrivit peste tot, dar o opțiune bună pentru a configura proiectul.
- Prin Bluetooth și protocoalele conexe, de exemplu, recent a devenit populară utilizarea NTFS pentru a controla dispozitivele inteligente. Dar, din moment ce vorbim despre un proiect pe Arduino MK, ne vom concentra pe bluetooth.
- Prin internet wireless. Nu este nimic nou aici, de fapt, mobilul sau microcontrolerul tău acționează ca un server care primește și procesează datele primite, apoi efectuează calcule sau acțiuni și trimite un răspuns.
Acestea sunt principalele metode de transmitere și primire a informațiilor trebuie doar să o alegeți pe cea potrivită. Pentru proiectele care nu vor fi utilizate pe distanțe lungi, cea mai bună opțiune în ceea ce privește volumul codului și ușurința de configurare este Bluetooth.
Ce componente pot fi necesare pentru interacțiune?
Am menționat deja mai sus că pentru un proiect pe Arduino, care presupune utilizarea uneia dintre metodele de transmitere a datelor la distanță, este necesară achiziționarea de module suplimentare. Din nou, Bluetooth este cea mai bună alegere. Acest modul vă permite să primiți și să trimiteți semnale cu o anumită frecvență, care sunt preluate de majoritatea smartphone-urilor și, în consecință, nu ar trebui să apară probleme. Puteți alege unul dintre dispozitivele prezentate în linia principală Arduino, sau analogi chinezești, care vor fi mult mai ieftine.
Unul dintre modulele pe care le puteți lua este Bluetooth Bee, care poate fi achiziționat de la multe magazine, de la DFRobot.
Totul depinde de sistemul specific și de „Lățimea de bandă” necesară în acesta. La urma urmei, dacă este o cameră de supraveghere video, atunci fluxul de date trebuie transmis continuu și în cantități mari. Iar pentru un simplu senzor de mișcare, cel mai ieftin modul Wi-Fi este suficient. Este același lucru cu dispozitivele automate de acasă inteligente.
Atunci când alegeți fiecare componentă, luați în considerare nevoile dvs. și ceea ce veți implementa în proiect și nu plătiți în exces pentru caracteristicile de care nu aveți nevoie.
Configurarea conexiunii
Deci, acum ați creat și instalat deja o aplicație sau un analog gata făcut pe smartphone pentru a vă controla microcontrolerul cu Arduino, atunci trebuie să:
- Porniți modulul Bluetooth în sine, alimentându-l de la rețea sau de la baterie.
- Lansați aplicația pe telefon și găsiți dispozitivul dorit.
- Conectați-vă la modulul Bluetooth utilizând parola implicită sau cea pe care ați setat-o când faceți intermitent Arduino.
- Dați primele comenzi și vedeți cum reacționează sistemul la ele.
Merită să spunem aici că există multe aplicații pentru Arduino pe Google Play, în articolul următor vom arăta 7 dintre ele.
Cel mai simplu exemplu
Pentru a înțelege aproximativ cum ar trebui să funcționeze proiectul finalizat, vom da un exemplu folosind același supliment pentru lampă.
- Vă conectați la sistem prin intermediul smartphone-ului.
- Apăsați un buton și circuitul se deschide sau se închide.
- Lumina apare sau dispare.
- Apăsați din nou butonul de pe smartphone și are loc efectul opus.
Desigur, pentru a face acest lucru, trebuie mai întâi să închideți circuitul aprinzând becul folosind un întrerupător de perete. Dar acesta este doar un exemplu condiționat a ceea ce poate fi realizat folosind această tehnologie.
În lecțiile care urmează, ne vom opri mai detaliat asupra interacțiunii dintre smartphone-uri și microcontrolere, iar împreună cu tine vom face câteva lecții utile.
În acest tutorial veți învăța cum să utilizați un modul bluetooth și o aplicație MIT pentru a crea o conexiune serială fără fir între un telefon Android și o placă arduino. Acest articol descrie cum să vă conectați, să scrieți o schiță arduino care poate accepta și trimite comenzi de bază și cum să creați singur o aplicație. Se presupune că sunteți deja familiarizat cu unele dintre elementele de bază, ați realizat mai multe proiecte arduino și sunteți familiarizat cu IDE-ul arduino. Dacă ați încercat comunicarea în serie cu o placă arduino, totul ar trebui să fie complet clar. Dacă aveți probleme sau întrebări, nu ezitați să întrebați pe pagina de discuție.
DESPRE CE ESTE ARTICOLUL?
Acțiuni
1. Utilizați următorul cod pentru arduino
Simțiți-vă liber să-l schimbați. Aspectul important aici este viteza de transmisie - asigurați-vă că se potrivește cu viteza de transmisie a modulului dvs. - verificați fișa de date sau utilizați comenzile AT pentru aceasta.
- const int ledPin = 2; // pinul pe care LED-ul este atașat la octet serialA; void setup() ( // inițializați comunicarea serială: Serial.begin(19200); //baud rate — asigurați-vă că se potrivește cu modulul pe care l-ați primit: // inițializați ledPin-ul ca ieșire: pinMode(ledPin, OUTPUT) ; ) void loop() ( if (Serial.available() > 0) (serialA = Serial.read();Serial.println(serialA);) comutator (serialA) (cazul 1: digitalWrite(ledPin, HIGH); break ; cazul 2: digitalWrite(ledPin, LOW);
2. Dacă tot ce vrei este să obții aplicația și să vezi cum funcționează
descărcați aplicația și apoi descărcați-o pe telefon. Îl puteți descărca de la -> https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing. Telefonul dvs. trebuie să permită instalarea de aplicații din surse terțe.
3. Dacă doriți să schimbați aplicația, vă rugăm să accesați
- http://appinventor.mit.edu/explore/learn.html pentru a afla cum să vă pregătiți computerul și să instalați software-ul de dezvoltare de aplicații. Odată ce l-ați pus în funcțiune, faceți cel puțin una sau două dintre lecțiile principale. Mai jos este aplicația folosită aici. Îl puteți încărca în App Inventor și apoi îl puteți descărca pe telefon sau îl puteți modifica. https://drive.google.com/folderview?id=0B_PfPoEotOF8N2JwT3RSX011SjQ&usp=sharing
Lucruri de care vei avea nevoie
- placa arduino
- modul serial bluetooth (modul btm222 cu regulator încorporat a fost folosit în acest articol)
- Singura parte problematică aici este modulul bluetooth. Există diferite module pe tot internetul, așa că asigurați-vă că verificați rezultatul în fișa de date pe care o aveți, deoarece poate varia. De asemenea, rețineți că există două clase generale de module bluetooth: Clasa 1 are o rază de acțiune de aproximativ 100 de metri. Clasa 2 are o rază de acțiune de aproximativ 10 metri. Dacă vă întrebați că sunt pe deplin compatibile și puteți obține doar 100 de metri dacă ambele dispozitive acceptă acea rază
- Modulul serial bluetooth folosit aici are următorii pini de la stânga la dreapta (împământare, RX, TX, neconectat, VCC). Evident, pământul și VCC merg la pământ și respectiv pinul + 5V pe arduino. Deoarece vom primi date prin modul și apoi le vom trimite la placa arduino, trebuie doar să folosim pinul TX de pe modul. Rulați un fir de la acest pin la ieșirea RX de pe placa arduino. Led-ul este controlat folosind PIN-ul 2 pe Arduino.
- LED
- rezistență (100 ohmi)
- fire
- consiliu de dezvoltare
- Acest tutorial poate fi puțin dificil pentru tine dacă ești începător. Dacă nu ați încercat niciodată comunicarea în serie cu o placă arduino sau nu ați făcut cel puțin majoritatea exemplelor de schițe arduino, atunci urmați unele dintre tutorialele mai ușoare și reveniți la ele mai târziu.