En las dos primeras revisiones ( 1 , 2 ), le presentamos la composición y las características principales del kit NR05 Digital Laboratory de la serie Alphabet of the Electronics Worker .
Hemos dicho repetidamente que las posibilidades de reclutamiento no se limitan a aquellas experiencias y proyectos que incluyen el manual de capacitación. ¡Las posibilidades del conjunto son mucho más amplias!Consideremos cómo puede implementar el control de dispositivos ejecutivos desde su teléfono inteligente o tableta utilizando el Laboratorio Digital.La comunicación entre el teléfono inteligente y el módulo Arduino instalado en la placa de expansión se implementará utilizando la tecnología Bluetooth. Por supuesto, esto limitará la capacidad de controlar de forma inalámbrica la distancia de unos 10 metros, pero en casa, a menudo no se requiere más. Basado en esta tecnología, puede controlar con éxito robots simples o dispositivos de automatización del hogar, y su teléfono o teléfono inteligente servirá como un panel de control universal gratuito que puede reprogramarse fácilmente para resolver mejor la tarea.En Internet puede encontrar varios proyectos que le permiten conectar Arduino con un teléfono a través de Bluetooth, y dichos proyectos ciertamente ayudarán a dominar el principio de dicha comunicación, pero su principal inconveniente es la incapacidad de adaptar la funcionalidad del programa de control y su apariencia a las necesidades específicas del usuario.Seguiremos el camino de un poco más complicado, pero más universal: escribiremos programas para el teléfono y para Arduino por nuestra cuenta. Esto lo ayudará a comprender el principio de escribir tales aplicaciones y usarlo en su desarrollo.Primero, expliquemos en qué principio se basa la conexión que utilizaremos. Como sabe, cuando el módulo Arduino está conectado a una computadora, se configura un puerto serie virtual, un puerto COM, en la computadora. Se utiliza para cargar bocetos en Arduino, así como para intercambiar información entre una computadora y el microcontrolador Arduino. También en la placa Arduino hay dos contactos combinados con los pines D1 y D0 y designados RX y TX, respectivamente, la transmisión (Recibir) y la recepción (Transmisión) de la interfaz estándar UART.Después de haber conectado el adaptador Bluetooth-UART a estos contactos (el módulo HC-05 resultó estar a nuestra disposición, no está incluido en el kit) obtenemos un canal de comunicación de hardware entre el dispositivo conectado por Bluetooth al adaptador y Arduino.Por lo tanto, al escribir información de un dispositivo en el puerto serie y leerla desde otro (esto se puede hacer en dos direcciones), podemos organizar el intercambio de información entre dispositivos. La velocidad de dicho intercambio entre Arduino y un teléfono inteligente en el caso de usar el módulo HC-05 será de 57600 baudios.Para mayor claridad, utilizamos un LED RGB y un servoaccionamiento, ambos controlados por señales PWM.Aquí está el diagrama de conexión de los componentes del proyecto:
Para controlar los elementos ejecutivos, transferiremos desde el teléfono inteligente una determinada letra que determina a qué elemento está destinado el comando y un número que corresponde al parámetro del comando. El parámetro puede ser una figura que determina si algún actuador debe activarse o desactivarse, o una figura que define el parámetro PWM.Damos el texto del programa para Arduino. El programa recibe datos del adaptador Bluetooth, los descifra y realiza las acciones necesarias: enciende o apaga el LED, ajusta su brillo o el ángulo de rotación del servoeje.El texto está equipado con una cantidad suficiente de comentarios para comprender la lógica del programa:Spoiler// LCD-
#include <Servo.h>
#include <LiquidCrystal.h>
// 5
// get_key
#define NUM_KEYS 5
int adcKeyVal[NUM_KEYS] = {30, 150, 360, 535, 760};
// LCD-
LiquidCrystal lcd(A1, A2, A3, 2, 4, 7);
//
Servo servo;
int btValue; // BT-
char command; // , COM-
void setup() {
// COM- bluetooth, , -
Serial.begin(57600);
Serial.flush();
Serial.setTimeout(4);
// LCD (16 , 2 )
lcd.begin(16, 2);
lcd.clear();
lcd.print(«Master Kit-READY»);
delay(2000);
lcd.clear();
// 3-
servo.attach(3);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
}
void loop() {
int key = get_key(); // ,
// , COM-
//
if (key > 0){
Serial.print(key);
delay(500);
}
// , bluetooth,
if (Serial.available() > 0) {
// ()
command = Serial.read();
// ( )
btValue = Serial.parseInt();
// LCD , bluetooth
lcd.setCursor(0,0);
lcd.print(command);
lcd.print(' ');
lcd.print(btValue);
lcd.print(" ");
delay(10);
switch (command) {
case 'P': // P,
pinSwitch(btValue);
break;
case 'S': // S — c 1 ( )
pwm5(btValue);
break;
case 'M': // — 2 ( )
servo3(btValue);
break;
}
}
}
//
void pinSwitch(int Pin){
digitalWrite(Pin, !digitalRead(Pin));
}
// 5 ( )
void pwm5(int pwmValue){
analogWrite(5, pwmValue);
}
// 3
void servo3(int angleValue){
int angle = map(angleValue, 0, 180, 5, 180);
servo.write(angle);
}
//
int get_key()
{
int input = analogRead(A6);
int k;
for(k = 0; k < NUM_KEYS; k++)
if(input < adcKeyVal[k])
return k + 1;
return 0;
}
Ahora, tomemos un programa para un teléfono inteligente, que debería transmitir un comando con un parámetro. Usaremos las capacidades del proyecto MIT App Inventor para esto.MIT App Inventor es un entorno de programación desarrollado en el Massachusetts Institute of Technology (MIT). Se utiliza para desarrollar aplicaciones para dispositivos móviles (teléfonos inteligentes y tabletas) que se ejecutan en el sistema operativo Android.Este no es un lenguaje de programación en el sentido generalmente aceptado; al usarlo, no necesita escribir código de texto en forma de líneas. El programa se forma en forma de bloques que se muestran en la pantalla, que simplemente se arrastran y se apilan como rompecabezas. Si los bloques encajan de acuerdo con la lógica del programa, se "pegan", si no encajan, no se pueden conectar. Inicialmente, este método de programación fue desarrollado para educar a los estudiantes, por lo que es bastante simple de aprender. Por supuesto, como en todos los idiomas, tiene sus propias sutilezas y trucos, pero el sitio tiene suficiente información y ejemplos para dominar el idioma. Muchos programas están disponibles en el sitio en el dominio público.Para utilizar el entorno de programación de App Inventor, disponible en ai2.appinventor.mit.edu, debe tener una cuenta de Google con la que esté autorizado en el sitio web del proyecto. El programa se crea en cualquier navegador. La computadora que ejecuta este navegador debe estar constantemente conectada a Internet. El teléfono inteligente o tableta en el que se instalará el programa creado con App Inventor debe tener una versión del sistema operativo Android de al menos 4.0.En el navegador, crea el diseño (apariencia) y la lógica del programa en forma de bloques, en el mismo lugar el proyecto terminado se compila en un archivo ejecutable con la extensión apk. Este archivo se puede descargar y ejecutar en un dispositivo móvil de varias maneras. Quizás el más conveniente de estos métodos es instalar la aplicación MIT AI2 Companion en el dispositivo móvil (está en Play Market). App Inventor genera un código QR que contiene un enlace a la aplicación que creaste, y AI2 Companion lo lee e instala (o actualiza). Incluso puede dibujar y cargar su propio icono para iniciar su aplicación. Por lo tanto, App Inventor le permite crear aplicaciones totalmente funcionales e intuitivas para Android. Aunque su código no es óptimo, pero la conveniencia,La simplicidad y la velocidad de crear tales aplicaciones en muchos casos compensan este inconveniente.La aplicación que funciona en nuestro proyecto se carga en la galería MIT AI2 Appiventor con el nombre BToothHC05.La aplicación le permite encontrar un dispositivo Bluetooth, conectarse a él, genera comandos con parámetros y los envía al dispositivo conectado, lee los datos del dispositivo y muestra el número del botón presionado en la placa de expansión.El diseño de la pantalla se ve de acuerdo con la siguiente imagen:
Hay elementos (cuadrados verdes que simbolizan las imágenes insertadas) que no tienen funcionalidad, pero sirven como separadores para mejorar la apariencia.Si fue al sitio web de AppInventor y se encuentra en el entorno de programación en modo Diseñador, al hacer clic con el botón derecho en el elemento de diseño correspondiente, verá sus propiedades a la derecha. Después de cambiar al modo Bloques, puede ver todos los bloques de la aplicación que se está desarrollando.De hecho, casi todos los bloques son controladores de eventos: presionar un botón en la pantalla táctil, cambiar el control deslizante del deslizador, activar un temporizador, cambiar la inclinación del teléfono (sí, ¡casi todos los sensores de un dispositivo móvil se pueden usar en App Inventor!).Considere el propósito funcional de cada bloque.
En este bloque, cuando hace clic en el botón de pantalla Conectar / Desconectar (evento Button4Connect.Click), el dispositivo Bluetooth se desconecta (llame a BluetoothClient1.Disconnect) si ya está conectado (BluetoothClient1.IsConnected), el texto del botón cambia a "Desconectado" y su color cambia a gris, o llamando a la lista de dispositivos posibles para conectarse (ListPicker1.Open) si no hay conexión. Como puede ver, ¡el bloque es bastante legible desde el punto de vista incluso de un programador novato!
En estos tres bloques (de arriba a abajo):- asigne una variable global (todos los bloques lo "verán") switch1 para cambiar los modos de funcionamiento: deslizador o inclinación;- al llamar a la lista de dispositivos ListPicker1 para la conexión, queremos mostrar sus direcciones y nombres;- al elegir un dispositivo de la lista ListPicker1, conéctese a él, cambie el color del botón y muestre el texto Conectado al nombre del dispositivo. El nombre del dispositivo se forma a partir de una secuencia de caracteres larga; Se toman 8 personajes a partir del 18.
Los tres bloques que se muestran arriba envían a través de la conexión establecida los caracteres "P5", "P9" y "P6", que deben activar o desactivar el color rojo, verde o azul del LED, respectivamente.
Cuando se desliza el control deslizante Slider1, que controla el brillo del color rojo del LED, este bloque envía el símbolo "S" y los números correspondientes a la posición del control deslizante.
Cuando Slider2, que controla el servo, se desplaza, si el modo correspondiente está activado (switch1 = 0), enviamos el carácter M y la posición del deslizador.
Si el modo de operación del sensor de inclinación está activado, la unidad envía M y un ángulo de inclinación de + 90 grados para controlar el servoaccionamiento.
Esta unidad cambia los modos de funcionamiento del servo desde el control deslizante o el sensor de inclinación y, en consecuencia, cambia el texto del botón (Texto) y su color (Color de fondo).
Estos dos bloques son activados por un evento de temporizador. El primer bloque (Clock1) cada 0.1 segundos (este intervalo se establece en las propiedades del temporizador Clock1) verifica si hay datos sobre si se ha presionado el botón de la placa de expansión. Si se presionó el botón, dentro de 1 segundo (segundo bloque - Reloj2) se muestra información sobre el número del botón presionado en la pantalla del teléfono inteligente.Ahora veremos en el video cómo sucede realmente el LED y el control del servo desde el teléfono inteligente de acuerdo con nuestros programas.Del mismo modo, se puede controlar un número suficientemente grande de actuadores conectados al Arduino. Esto no requiere un gran trabajo del programador cuando se usa AppInventor, y la programación de Arduino es bastante simple y clara. Puede agregar o eliminar fácilmente bloques de programas innecesarios y obtener la funcionalidad que necesita.Como puede ver en este material, la placa de expansión del kit de Laboratorio Digital le permite utilizar los módulos adicionales Arduino de manera muy conveniente y visual.SolicitudComenzando en el entorno de programación MIT AppInventor.Como ya escribimos, para trabajar en el proyecto AppInventor necesitas una cuenta de Google. Si tiene un teléfono inteligente en Android, lo más probable es que ya tenga dicha cuenta. Si no, puede obtenerlo yendo a Google a través del siguiente enlace .A continuación, vaya al sitio web de AppInventor y haga clic en el enlace Crear aplicaciones, ubicado en la esquina superior derecha de la página principal del sitio web, vaya al sitio web del entorno de programación.Como ilustración, a continuación hay un enlace a un video corto que demuestra la creación de un programa simple que muestra texto cuando hace clic en un botón formado en la pantalla táctil de un teléfono inteligente.