Arduino (IoT): Simple Tutorial Arduino Android App: Parte I

Android Arduino App

Arduino Honduras Santiapps Marcio Valenzuela

Arduino Android App: Parte I

Muchos solicitan poder programar para Android y poder interactuar con Arduino.  Se puede con iOS y es donde tengo mas experiencia pero debo reconocer, BT de iOS SUCKS!  Así que enfoquemos esfuerzos en Android.

Requisitos:

  1. Computadora (mac)
  2. Modulo HC-05
  3. Android Studio (http://developer.android.com/sdk/installing/index.html?pkg=studio)
Arduino (Iot) Simple Tutorial Arduino Android Santiapps Marcio Valenzuela
Arduino (Iot) Simple Tutorial Arduino Android

Para comunicarnos con BT de Arduino ocupamos el Adapter:

private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();

y para usarlo debemos usar un Intent asi:

Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);

Una vez conectados usamos los dispositivos así:

private Set<BluetoothDevice>pairedDevices;
pairedDevices = BA.getBondedDevices();

 

En lugar de pegar el código descarguemos el proyecto.  Es necesario descargar Android Studio (y JDK7) y configurar AS usando Gradle.

Luego creamos un nuevo proyecto con Actividad vacía o en blanco, llamada MainActivity.java.  Estos son los archivos finales.  Si analizamos el código vemos alrededor de 24 imports para componentes básicos que necesitamos en Android como el grupo de imports para Bluetooth, el grupo de Intents, un grupo de Menu, un grupo de Views o Vistas y finalmente el grupo de java arrays o arreglos.

La actividad en si es muy sencilla, declaramos los botones y el BluetoothAdapter.  En el método onCreate los inicializamos.  Finalmente tenemos 2 métodos; uno de on y otro de off.  El método visible es para iniciar la búsqueda y el método list es para desplegar los dispositivos bluetooth cercanos.

Corremos la app en el celular y podremos buscar dispositivos con BT y conectarnos a ellos.  En la siguiente etapa veremos como enviar y recibir datos.  Es importante notar que esto funciona para modelos HC-05 los cuales son comunes en Arduino.

Arduino (IoT): Simple Tutorial iOS & Bluno Nano

iPhone App Arduino Santiapps

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial iOS & Bluno Nano

En este tutorial aprenderemos sobre la Bluno Nano pero con iPhone/iOS.

Requisitos:

  1. Computadora (mac)
  2. iPhone con iOS7+
  3. Xcode
  4. Bluno nano
  5. Breadboard
  6. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT: Simple Tutorial Bluno Nano Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Bluno Nano

 

Queremos ver como comunicarnos via BT usando la bluno nano.

Arduino…

[code]
void setup() {
Serial.begin(115200);  //initial the Serial
}
void loop() {
if (Serial.available())  {
Serial.write(Serial.read());//send what has been received
Serial.println();   //print line feed character
}
}[/code]

Android…

 BlunoDemoiOS.zip

Arduino (IoT): Simple Tutorial Stepper Motor con L293Dx2 Motor Shield

Arduino Autonomous Rover Technology Santiapps

Arduino Honduras Santiapps Marcio Valenzuela

Simple Tutorial Stepper Motor con L293D Motor Shield

 

Ya hemos manejado un stepper con el H-bridge L298N pero hay otras opciones de H-bridge.  En este caso usamos la L293D motor shield.  Esta es un motor shield que nos permite controlar varios motores a la vez; steppers, DC y servos.

Arduino IoT: Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Stepper L293D Motor Shield

Es importante ver las especificaciones de cada shield ya que hay muchas y todas se parecen!  En este caso la hoja técnica específica que provee hasta 600mA por canal.  Usaremos nuevamente la fuente de 9V para suplir el motor shield.

 

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO o equivalente.
  3. L293D motor shield
  4. Stepper 12V & 400mA bi-polar (30Ohm por fase)
  5. Battery pack de 6 batteries AA en serie
  6. 6 baterias AA
  7. Arduino IDE (https://www.arduino.cc/en/Main/Software)

Los motores tienen requerimientos especiales para poder.  Es importante recordar que es incompatible la necesidad alta de poder de los motores con las necesidades tan bajas de poder para circuitos de lógica como un microcontrolador.  Las opciones para nuestros proyectos de poder usando la shield L293D son:

USB = UNO + SHIELD

Podemos operar la shield y la UNO desde la USB de la computadora.  Esto no es muy recomendable porque solo son 5V y puede resultar en inestabilidad.

USB = UNO & Ext = SHIELD

Si queremos usar la USB para dar poder a la UNO y usar la fuente externa para el motor shield, debemos remover el jumper de la motor shield.  Este metodo es preferible a suplir poder desde la USB a ambos.

Ext = UNO(*) + SHIELD

Podríamos conectar la fuente de poder por el DC barrel jack de la UNO, la cual tiene un diodo de protección.  Este diodo protege contra polaridad reversada únicamente.  En este caso es necesario asegurar el uso del jumper de la motor shield.

Ext = UNO + SHIELD(*)

En este caso usamos la fuente externa para ambos pero en lugar de conectarla a la UNO, la conectamos a la motor shield.

En este caso para simplificar, operaremos la shield con 9V externos, para lo cual tiene una terminal de bloque marcada Ext donde podemos conectarla.

Recuerden que la fuente de poder de 9V esta compuesta de 6 baterias de 1.5V cada una.  Esto es muy diferente a usar una sola batería de 9V.  Esto se debe a la capacidad.  Ambas tienen un potencial de 9V, pero la energía almacenada en 1 sola batería de 9V es mucho menor a la energía almacenada en 6 veces ese numero de baterías!

 

Ahora veamos el setup:

Arduino (oT): Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino (oT): Simple Tutorial Stepper L293D Motor Shield

 

Siempre es mejor opción usar un stepper driver por el tema de la corriente.  Ahora veamos el proyecto.

El motor es el siguiente:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela

Hacemos nuestras conexiones así:

 

La L293D shield casa perfectamente sobre la UNO.

Terminales M1 ————-2 cables de 1 winding del stepper

Terminales M2 ————-2 cables del otro winding del stepper (bi-polares solo tienen 4 cables)

 

Si vamos a usar la USB para la UNO y el stepper, lo cual ensayamos según nuestra imagen de setup arriba,  simplemente conectamos la USB a la UNO, cargamos el sketch y lo dejamos correr.  Esto esta bien para fines de tutorial.  Sin embargo si vamos a usar la fuente de 9V externa, la conexión es así:

Arduino (oT): Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino (oT): Simple Tutorial Stepper L293D Motor Shield

La diferencia importante aquí es que conectamos las terminales del battery pack al Ext de la motor shield.  Aquí aparece el USB conectado a la UNO sin embargo esta desconectado de la computadora.

Y el coding es el siguiente:

[code]#include <AFMotor.h>
// Motor with 200 steps per rev (1.8 degree)
// to motor port #1 (M1 and M2)
AF_Stepper motor(200, 1);
void setup() {
// set up Serial library at 9600 bps
Serial.begin(9600);
Serial.println(“Stepper test!”);
motor.setSpeed(60); // 60 rpm
}
void loop() {
Serial.println(“Single coil steps”);
motor.step(200, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
delay(100);
Serial.println(“Double coil steps”);
motor.step(200, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
delay(100);
Serial.println(“Interleave coil steps”);
motor.step(200, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
delay(100);
Serial.println(“Micrsostep steps”);
motor.step(200, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
delay(100);
}[/code]

El coding muestra un poco mas de opciones sobre micro-stepping y la opción de interleave.

El resultado es el siguiente:

y

Ahora veamos …