Programació amb MIT App Inventor

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Introducció

Estem en la segona versió: MIT App Inventor 2. Es tracta d'una aplicació ràpida de prototipat per fer fer aplicacions mòbils (Android). Tot el sistema està hostatjat al núvol.

Setting Up App Inventor

Hi ha tres opcions per treballar amb App Inventor:

  1. connectar el dispositiu Android i l'ordinador amb la wifi local
  2. a través del cable USB (pot ser una mica tricky)
  3. utilitzant l'emulador del dispositiu Android

Configuració i posta a punt

Configurant App Inventor amb la wifi

Hem d'apuntar el codi de 6 dígits per registrar l'aplicació, o bé el codi QR.

Configurant App Inventor amb el USB

To connect with USB, you need to first install the App Inventor setup software on your computer. (This is not required for the wifi method.)

Descarreguem i instal.lem Appinventor Setup installer Debian package:

$ sudo dpkg -i appinventor2-setup_2.3_all.deb

The software will be installed under /usr/google/appinventor.

Setting up a Device for Development

En el mòbil o tauleta: Enable USB debugging on your device by going to Settings > Developer options.

Note: On Android 4.2 and newer, Developer options is hidden by default. To make it available, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options.

If you're developing on Ubuntu Linux, you need to add a udev rules file that contains a USB configuration for each type of device you want to use for development. In the rules file, each device manufacturer is identified by a unique vendor ID, as specified by the ATTR{idVendor} property. For a list of vendor IDs, see USB Vendor IDs, below. To set up device detection on Ubuntu Linux: Per ex:

Log in as root and create this file: /etc/udev/rules.d/51-android.rules.

Use this format to add each vendor to the file:

    SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"

In this example, the vendor ID is for Motorola. The MODE assignment specifies read/write permissions, and GROUP defines which Unix group owns the device node.

Note: The rule syntax may vary slightly depending on your environment. Consult the udev documentation for your system as needed. For an overview of rule syntax, see this guide to writing udev rules.

Now execute:

$ chmod a+r /etc/udev/rules.d/51-android.rules

Starting aiStarter

The aiStarter program manages communication between the Web browser and the Android device. It must be running whenever people use the emulator or the USB cable; it does not need to be running when people are using the wireless companion. Whenever someone logs in to use App Inventor with the emulator or USB, they will need to start aiStarter. This can be done with the command:

/usr/google/appinventor/commands-for-Appinventor/aiStarter &
Listening on http://127.0.0.1:8004/

Ara hem d'instal.lar en el dispositiu l'app MIT AI2 Companion App (si és que no ho hem fet ja, doncs ja ho havia fet per a wireless)

Per comprovar que aiStarter està funcionant en la nostra màquina podem anar a:

i ara ja podem fer la primera aplicació. Anem a la pàgina dels projectes (cloud):

obrim o creem un projecte, i ara Connect > USB

NOTA. si he estat remenant amb la wifi, el que hem de fer és aturar del tot l'aplicació al mòbil i tornar a arrencar.

Primera aplicació: Hola món

Si seguim pas a pas, és fàcil de realitzar.

Build de l'aplicació, per distribuir-la

Tenim dues opcions: amb fitxer apk, o amb codi QR. El fitxer apk el puc distribuir per mail, traspassar-lo al mòbil, i instal.lar-lo.

Projectes

Bluetooth Server

En aquests exemples es demostra la comunicació via Bluetooth entre dos dispositius mòbils (mòbil i tauleta), un fa de servidor i l'altre de client. Part 1: Basic Bluetooth communications using App Inventor

Part 2: Sending numeric data using App Inventor Bluetooth communications

Aplicació mòbil (Android) per al Zowi via Bluetooth

Zowi app inventor.png

L'objectiu és fer una interfície bàsica de l'escala musical. En apretar les tecles de l'escala, farem sonar el Zowi, i també canviarem les ganyotes del Zowi.

Hem de pensar que el Zowi fa de servidor de Bluetooth, i que la nostra aplicació mòbil és el client, que es connecta al Zowi. En l'aplicació mòbil sortirà una llista desplegable amb tots els dispositius bluetooth a l'abast, i haurem d'escollir el Zowi (i en l'exemple següent podrem escollir la placa Zum).

L'aplicació mòbil envia missatges de text al servidor. Primer envia Client connectat, i d'aquesta manera el Zowi podrà assabentar-se de què s'ha establert una connexió. Després enviarà les notes Do, Re,... a mida que anem tocant els botons.

El codi per a App Inventor es pot exportar amb extenxió aia, i també es pot distribuir com una aplicació Android amb l'extensió apk.

Quant al codi bitbloq, està publicat al núvol amb diagrama de blocs, i el codi font queda: (TBD)


NOTA. Aquesta aplicació funciona tant en el Zowi com en el FreeAduino, però s'ha de programar amb el FreeAduino (també es podria fer amb el Arduino UNO). Actualment (maig 2016) no es poden afegir components individuals (com per ex bluetooth) directament al robot Zowi. Això fa que no pugui programar aspectes del Zowi com ara fer ganyotes. Però el que sí que puc fer és accedir als components individuals com ara els servos, etc. NOTA: en els blocs s'ha utilitzat un switch. El bronzidor no em deixa ficar el Do de dalt, i això es soluciona cercant en Avançat, on puc ficar els Herzis exactes.

Aplicació mòbil (Android) per a la placa Arduino ZUM via Bluetooth. Enviar dades: brunzidor

L'objectiu és fer una interfície bàsica de l'escala musical. En apretar les tecles de l'escala, farem sonar el bronzidor connectat a la placa.

L'aplicació amb App Inventor és la mateixa. Quan em connecto a un dispositiu, hauré d'escollir si em connecto al Zowi o a la placa ZUM. A la placa ZUM programo un codi que reaprofito del que he fet amb el ZOWI.

Codi bitbloq de la placa ZUM:

/***   Included libraries  ***/
#include <SoftwareSerial.h>
#include <BitbloqSoftwareSerial.h>


/***   Global variables and function definition  ***/
const int brunzidor_0 = 10;
bqSoftwareSerial bluetooth_0(0, 1, 19200);
String Bt = "";

/***   Setup  ***/
void setup() {
    //pinMode(led_0, OUTPUT);
}

/***   Loop  ***/
void loop() {
    Bt = bluetooth_0.readString();
    if (Bt == "Do") {
        tone(brunzidor_0, 262, 500);
        bluetooth_0.println("Do");
    } else if (Bt == "Re") {
        tone(brunzidor_0, 294, 500);
        bluetooth_0.println("Re");
    } else if (Bt == "Mi") {
        tone(brunzidor_0, 330, 500);
        bluetooth_0.println("Mi");
    } else if (Bt == "Fa") {
        tone(brunzidor_0, 349, 500);
        bluetooth_0.println("Fa");
    } else if (Bt == "Sol") {
        tone(brunzidor_0, 392, 500);
        bluetooth_0.println("Sol");
    } else if (Bt == "La") {
        tone(brunzidor_0, 440, 500);
        bluetooth_0.println("La");
    } else if (Bt == "Si") {
        tone(brunzidor_0, 494, 500);
        bluetooth_0.println("Si");
    } else if (Bt == "Do2") {
        tone(brunzidor_0, 523, 500);
        bluetooth_0.println("Do");
    }
}

Aplicació mòbil (Android) per a la placa Arduino ZUM via Bluetooth. Rebre dades del sensor d'ultrasons

Tenim un sensor connectat a la placa ZUM, per exemple, el sensor d'ultrasons. I en una aplicació mòbil hem de rebre en el mòbil, via bluetooth, la informació de les dades que llegim en el sensor.

Del sensor d'ultrasons del ZUM KIY, connectem ECH (vermell) al 4, i TRI (blau) al 5. El codi bitbloq:

/***   Included libraries  ***/
#include <SoftwareSerial.h>
#include <BitbloqSoftwareSerial.h>
#include <BitbloqUS.h>


/***   Global variables and function definition  ***/
US ultrasonidos_0(5, 4);
bqSoftwareSerial bluetooth_0(0, 1, 19200);
float distancia = 0;

/***   Setup  ***/
void setup() {}

/***   Loop  ***/
void loop() {
    distancia = ultrasonidos_0.read();
    bluetooth_0.println(distancia);
    delay(200);
}

El fitxer apk de l'aplicació App Inventor:


creat per Joan Quintana Compte, maig 2016

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines