aparate foto profesionale aparate foto profesionale

Translate

vineri, 31 august 2012

IOIO pentru Android – ghidul incepatorului


Platforma IOIO este un dispozitiv special creat pentru a permite telefonului tau Android sa interactioneze cu lumea din jur (lumea fizica). Mai precis, IOIO se conecteaza la telefon prin intermediul unui cablu USB si ofera un API prin care poti citi o multitudine de tipuri de senzori (temperatura, umiditate, presiune atmosferica, nivel de alcool in aerul respirat, forta de apasare, tag-uri RFID, distante, nivel de iluminare, prezenta umana sunt doar cateva exemple) sau poti controla motoare si servomotoare pentru a realiza actiuni fizice asupra mediului inconjurator.
Acest document este un ghid de utilizare pentru platforma IOIO pentru Android, scris pentru utilizatorii care sunt la primele lor aplicatii Android. Obiectivul acestui tutorial este de a demonstra cum poti sa scrii o aplicatie simpla care sa comunice cu platforma IOIO.
Pentru acest tutorial, ai nevoie de urmatoarele :
  • un telefon capabil sa ruleze Android (cel putin 1.5)
  • o platforma IOIO< pentru Android
  • cablu USB al telefonului
  • o sursa de tensiune de 5 V cu un curent de cel putin 1 Amper (vezi mai multe la finalul articolului despre cum sa alimentezi platforma IOIO). Aceasta sursa poate fi un simplu alimentator cu care alimentezi router-ul sau switch-ul.

Cum iti instalezi mediul de dezvoltare Android

Primul pas este sa instalezi Android SDK. Este recomandat sa instalezi de asemenea si Eclipse IDE + ADT plugin. Poti gasi un tutorial foarte bun despre cum sa realizezi acest pas  aici .

HelloIOIO – aplicatie exemplu

Pentru a importa aplicatia exemplu HelloIOIO, urmareste pasii urmatori :
  1. Descarca fisierul HelloIOIO.zip si dezarhiveaza-l in locatia unde iti vei pastra proiectele Android.
  2. Deschide Eclipse, alege File -> Import, apoi selecteaza “Existing projects into workspace”. Apasa apoi “Next”

Vei vedea fereastra de mai jos. Selecteaza optiunea “Select root directory” si alege directorul in care ai dezarhivat aplicatia HelloIOIO la pasul 1. Selecteaza proiectul tau din lista (vei avea o singura intrare), si apoi apasa “Finish”.


  1. In acest moment ar trebui sa ai deja proiectul HelloIOIO importat in Eclipse. Daca te uiti cu atentie, vei vedea ca exista un mic “x” de culoare rosie langa numele proiectului, care te avertizeaza ca exista erori de compilare. Ca sa fixezi aceste erori, este necesar sa adaugi libraria IOIO la proiectul Eclipse, ca in pasul urmator.
  2. 5. Fisierul zip IOIOLi.zip contine toate librariile necesare care iti permit sa comunici cu platforma IOIO din telefonul mobil. Descarca acest fisier si dezarhiveaza-l. Mai departe, urmeaza exact pasii 2 si 3 de mai sus pentru a incarca acest nou proiect in Eclipse, doar ca in loc de fisierul HelloIOIO vei folosi fisierul IOIOLib. Dupa ce ai adaugat si IOIOLib in workspace, selecteaza proiectul HelloIOIO, si in partea de sus selecteaza “Project -> Properties”. Selecteaza apoi “Android” din lista din stanga. In sectiunea “Library” apasa “add”, si adauga apoi libraria “IOIOLib”. Ar trebui sa vezi libraria IOIOLib marcata cu un mic mark verde, ca mai jos.



Tot la acest pas asigura-te ca “Project Build Target” este setat corespunzator cu versiunea de Android pe care o folosesti.
Urmatorul pas este sa te asiguri ca aplicatia ta are permisiuni de a utiliza Internet-ul. Pentru acest lucru, deschide fisierul AndroidManifest.xml, alege tab-ul “permissions” apoi alege “Add -> Usage Permissions”. Alege la “name” valoarea “android.permission.INTERNET”, ca in imaginea de mai jos.


Dupa acest pas (si dupa ce ai salvat proiectul), ecranul tau ar trebui sa arate ca mai jos.


In cele ce urmeaza nu vei avea nevoie sa modifici nimic din proiectul “IOIOLib”, asa ca sugestia mea este sa il minimizezi. Fisierul care contine codul sursa pentru aplicatia ta este in “HelloIOIO -> src -> ioio.examples.hello -> MainActivity.java” . Fa un dublu click pe fisierul MainActivity.java si ar trebui sa se deschida in editare, exact ca mai jos.


In aceasta fereastra poti scrie codul pentru aplicatia ta Android. Mai departe, poti testa direct aceasta aplicatie pe telefonul Android (sari direct la sectiunea “Setarea IOIO” pentru asta), sau poti citi in continuare ca sa afli mai multe.
Fisierul “MainActivity.java” contine codul care comunica cu platforma IOIO. Daca vrei sa schimbi UI-ul aplicatiei tale, va fi necesar sa modifici fisierul “res -> layout -> main.xml”. Fisierul “main.xml” in aplicatia HelloIOIO descrie o interfata care arata ca mai jos.



Pentru mai multe detali despre cum sa configurezi layout-urile XML, vezi aplicatia “hello world example” pe developer.android.com, sectiunea “Upgrade the UI to XML Layout”.

Codul sursa din aplicatia HelloIOIO

In acest moment totul este configurat ca sa poti scrie cod. Exemplul pe care l-ai importat afiseaza un buton pe ecran, care buton modifica starea ledului de control de pe placa IOIO. Acest exemplu demonstreaza unul dintre cele mai simple lucruri care se pot face cu platforma IOIO (control de led-uri). Continutul fisierului “MainActivity.java” este mai jos.
[java]
package ioio.examples.hello;
import ioio.examples.hello.R;
import ioio.lib.api.DigitalOutput;
import ioio.lib.api.exception.ConnectionLostException;
import ioio.lib.util.AbstractIOIOActivity;
import android.os.Bundle;
import android.widget.ToggleButton;
/**
* This is the main activity of the HelloIOIO example application.
*
* It displays a toggle button on the screen, which enables control of the
* on-board LED. This example shows a very simple usage of the IOIO, by using
* the {@link AbstractIOIOActivity} class. For a more advanced use case, see the
* HelloIOIOPower example.
*/
public class MainActivity extends AbstractIOIOActivity {
private ToggleButton button_;
/**
* Called when the activity is first created. Here we normally initialize
* our GUI.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button_ = (ToggleButton) findViewById(R.id.button);
}
/**
* This is the thread on which all the IOIO activity happens. It will be run
* every time the application is resumed and aborted when it is paused. The
* method setup() will be called right after a connection with the IOIO has
* been established (which might happen several times!). Then, loop() will
* be called repetitively until the IOIO gets disconnected.
*/
class IOIOThread extends AbstractIOIOActivity.IOIOThread {
/** The on-board LED. */
private DigitalOutput led_;
/**
* Called every time a connection with IOIO has been established.
* Typically used to open pins.
*
* @throws ConnectionLostException
*             When IOIO connection is lost.
*
* @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#setup()
*/
@Override
protected void <strong>setup</strong>() throws ConnectionLostException {
led_ = ioio_.openDigitalOutput(0, true);
}
/**
* Called repetitively while the IOIO is connected.
*
* @throws ConnectionLostException
*             When IOIO connection is lost.
*
* @see ioio.lib.util.AbstractIOIOActivity.IOIOThread#loop()
*/
@Override
protected void <strong>loop</strong>() throws ConnectionLostException {
led_.write(!button_.isChecked());
try {
sleep(10);
} catch (InterruptedException e) {
}
}
}
/**
* A method to create our IOIO thread.
*
* @see ioio.lib.util.AbstractIOIOActivity#createIOIOThread()
*/
@Override
protected AbstractIOIOActivity.IOIOThread createIOIOThread() {
return new IOIOThread();
}
}
[/java]
Codul de mai sus este suficient de comentat incat sa nu insist prea mult asupra a ceea ce face.
Mai jos gasesti doua link-uri cu informatii utile pentru a scrie cod pentru IOIO :

Cum compilezi, incarci si rulezi aplicatia

Ori de cate ori modifici in aplicatie si salvezi modificarile, mediul de dezvoltare creaza un nou fisier Hello.apk Fisierul .apk este un fisier comprimat Android Package file, similar cu fisierele .zip si .jar, acest fisier fiind folosit pentru a instalarea aplicatiei pe telefonului Android. Acest fisier poate fi gasit in cadrul proiectului HelloIOIO, in folderul “bin”.
Mai jos sunt pasii pentru a face sa ruleze acest exemplu pe un telefon N1 Android care ruleaza o versiune de Android 2.3.3
  1. Activeaza “USB debbuging” (Setting -> Applications -> Development -> Enable USB Debugging).
  2. Instaleaza fisierul .apk. Cel mai simplu mod de a face acest lucru este sa cuplezi telefonul la calculator. Driverele pentru telefon le gasesti in “Program Files -> android-sdk -> extras -> google -> usb_driver). Click dreapta apoi pe proiectul HelloIOIO in Eclipse, si alege “Run As -> Android Application”. Fisierul .apk este in acest moment instalat pe telefonul Android. Poti acum deconecta telefonul de la calculator.
  3. Pregateste platforma IOIO. Singurul lucru pe care va trebui sa il faci pentru exemplu HelloIOIO este sa alimentezi platforma IOIO. Indiferent de proiect, IOIO are nevoie de o alimentare externa intre 5 si 15 V. Cel mai simplu este sa folosesti un alimentator obisnuit utilizat in mod normal pentru routere, caruia ii elimini mufa rotunda si pastrezi doar cele doua fire (daca ai nevoie de ajutor la pasul acesta, cei de la robofun.ro vor fi fericiti sa te ajute).





Odata ce ai platforma IOIO alimentata, poti cupla telefonul mobil la IOIO prin cablul USB. Telefonul ar trebui sa arate ca acum debug-ul prin USB este disponibil (in bara de notificari). In plus, telefonul ar trebui sa afiseze ca se incarca. Daca nu vezi ambele notificari, modifica valoarea potentiometrului marcat “chg” plasat langa mufa USB. Acest potentiometru seteaza cat curent este folosit de catre IOIO pentru a incarca telefonul mobil.


  1. Ruleaza aplicatia HelloIOIO si apasa pe buton, si ar trebui sa vezi ca led-ul galben marcat pe placa “stat” se aprinde si se stinge.
Gata, tocmai ai rulat prima ta aplicatie pe IOIO :) Acum ai putea sa ma intrebi, si ce e asa de cool ca aprind un led cu telefonul ? Well, asta este doar inceputul :) Folosind IOIO si telefonul Android, poti realiza ORICE proiect (doar ca avantajul este ca programezi pe Android, unde deja stii cum merg lucrurile). Mai jos am pus doar cateva sugestii de proiecte.
  • robot controlat de un telefon cu Android (telefonul pe post de creier al robotului, este interfatat prin IOIO cu senzori Sharp de distanta si comanda cele doua motoare direct prin IOIO. Telefonul poate fi in acelasi timp conectat la Internet, astfel incat robotul poate primi comenzi / transmite date catre un server web.
  • “Retroid Showcase” – un dispozitiv compus dintr-un mecanism de ceas controlat cu IOIO – vezi aici filmul de prezentare
  • “Wall Printer” – un dispozitiv compus din 6 markere controlate prin intermediul a 6 servomotoare, capabil sa tipareasca text pe un perete – http://liatsegal.blogspot.com/2011/05/wall-printer.html
  • senzori de alcool conectati la telefon, care sa foloseasca informatia despre cat esti de beat intr-o aplicatie funny :)
  • senzor de forta prinsi pe o manusa si conectati la IOIO pentru a crea urmatorul dispozitiv inovator de interactiune om-masina – http://vimeo.com/4044436
  • senzori de presiune atmosferica, temperatura, umiditate conectati prin IOIO la telefonul mobil si capabil astfel sa inregistreze log-uri complexe.
  • iti poti extinde display-ul telefonului mobil oricand cu unul dintre LCD-urile seriale de aici – http://www.robofun.ro/lcd
  • poti conecta 6-10 senzori de lumina la IOIO si apoi facand sinteza de sunet prin telefonul mobil sa obtii o harpa fara coarde .
  • poti sa adaugi led-uri, butoane, servomotoare la placa IOIO, pe care sa le folosesti pentru a transmite diverse informatii culese de pe Internet de catre telefonul mobil (cum ar fi numarul de emailuri din inbox, cate reply-uri ai pe Twitter, and so on).
Daca ti-am starnit interesul, platforma IOIO o gasesti in Romania la http://www.robofun.ro/ioio. Pentru orice fel de neclaritati lasa-mi te rog un comentariu mai jos, voi reveni cu raspunsul cat de curand pot.









Niciun comentariu:

Trimiteți un comentariu

wibiya widget