domingo, 26 de mayo de 2019

Programando Arduino con Scracth.

Seguimos avanzando en las prácticas con 4º ESO. Esta vez nos hemos atrevido con Scratch for Arduino (S4A), que no es más que una versión modificada del lenguaje de bloques Scratch, que permite la interacción con el hardware libre Arduino. Creado por el equipo de Smalltalk del Citilab en 2010 e implementa bloques específicos para manejar los sensores y actuadores de Arduino, este entorno nos pareció muy útil y conveniente para introducir a nuestros alumnos en esta programación y trabajar durante unos días, previos a programar Arduino, para que nuestro brazo robot realice sus movimientos con sus cuatro servomotores.
Para usar este software, debemos instalar el entorno S4A en los equipos portátiles del aula-taller y también un firmware específico de S4A en la memoria de la placa de Arduino, que será el que realice la comunicación con el software del PC, informando a este de la situación de cada entrada y salida en todo momento. Estos pasos están muy bien explicados e la página de descargas de S4A.
La interfaz de S4A es muy parecida a la de Scratch 1.4, aunque con algunas diferencias que los alumnos ha ido descubriendo con el desarrollo de  pequeños proyectos que tenían que resolver.
Programa de bloques de S4A que permite controlar a Arduino
El primer bloque permite inicializar las variables asociadas a las posiciones de los servos, así como los ángulos iniciales de los mismos. Hay que cambiar las posiciones (aquí 10, 10, 10) según en qué punto queramos que el brazo robot se posicione inicialmente. Las variables "hombro", "horizontal" y "pinza" contendrán en todo momento los ángulos de las articulaciones del brazo (servos) y se podrán modificar con los distintos eventos asociados a distintas pulsaciones de teclas. Estas variables actualizarán constantemente los ángulos reales de los servos en el bucle "por siempre" inicial. 
En los bloques siguientes (en el centro de la imagen), asociados a distintos eventos del teclado, vamos situando los servos manualmente mediante la modificación de los ángulos contenidos en las variables antes citadas, para colocarlos en las posiciones que necesitemos. Además, fijándonos en los valores que aparecen en la ventana de ejecución, arriba a la derecha de la pantalla, tomaremos los ángulos extremo hasta donde puede llegar la articulación correspondiente, para luego poder calibrar el movimiento de forma exacta.
Ventana de ejecución a la derecha de la imagen
Y por último con el bloque de la derecha, permitimos realizar movimientos fijos de prueba cada vez que pulsemos la tecla espaciadora.

Brazo robot controlado mediante código de bloques S4A

sábado, 25 de mayo de 2019

NORBA-STATION: Potenciómetro

Para aprender a utilizar las salidas analógicas, hemos aprendido a programar un potenciómetro con arduino. Normalmente un potenciómetro tiene 3 patillas, una irá conectada a tierra (GND), otra a 5V y la otra a un pin analógico de la tarjeta Arduino. Descubrimos también que existen 2 tipos de potenciómetros, unos lineales y otros rotativos. En esta práctica usaremos uno rotativo. Por otra parte, también aprendimos que en Arduino hay 6 entradas analógicas (A0-A5). Internamente, Arduino tiene un conversor analógico-digital que cambia la tensión recibida a un número entero. Los valores van desde 0V =0 a 5V=1023 . Los valores intermedios se calculan de manera proporcional. Lo primero que hicimos fue conectar el potenciómetro según lo visto y abrir un programa de ejemplo que trae el propio IDE de Arduino, llamado AnalogReadSerial, que es el siguiente:


Como podemos ver en el programa, hay que configurar la comunicación serie entre nuestro arduino y el ordenador a 9600 bits de información por segundo, eso se hace con la instrucción Serial.begin (9600) En el loop, se crea una variable llamada sensorValue donde se recogerá el valor de la entrada analógica donde está conectado el potenciómetro (la A0) Con la otra instrucción Serial.println(sensorValue) lo que se hace es imprimir en pantalla el valor que va recogiendo la variable. Para verlo, tenemos que sacar el monitor serie en el IDE. Aquí podemos observar cómo al mover el potenciómetro, van variando los valores de 0 a 1023 La práctica siguiente consistía en hacer variar la velocidad de parpadeo en función de cómo usemos el potenciómetro. El esquema es:






Y por último, con el mismo montaje, hicimos un cambio en el código para que la intensidad de brillo de nuestro led esté en función de los valores del potenciómetro. El programa sería el siguiente:




NORBA-STATIONS. Sensor DTH11 y pantalla LCD

Como habíamos indicado en la entrada anterior, ahora se va a conectar el sensor a una pantalla LCD para que se puedan visualizar los datos que lee.

#include <LiquidCrystal.h>
#include <DHT.h>


int SENSOR = 2;

int VO = 3;
int RS = 4;
int E = 5;
int D4 = 6;
int D5 = 7;
int D6 = 8;
int D7 = 9;

int temp;
int humedad;

DHT dht (SENSOR, DHT11);
LiquidCrystal lcd (RS, E, D4, D5 ,D6, D7);

void setup(){
  dht.begin();

  lcd.begin(16, 2);
  analogWrite(VO, 50); //contraste
}

void loop(){
    humedad = dht.readHumidity();
    temp = dht.readTemperature();

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Temperatura: ");
    lcd.print(temp);
    lcd.print("C");
    lcd.setCursor(0,1);
    lcd.print("Humedad: ");
    lcd.print(humedad);
    lcd.print("%");

    delay(15000);
}

Y el resultado es:

IMG-20180604-WA0010

IMG-20180604-WA0020



NORBA-STATIONS. Sensor de temperatura y humedad DTH11

Con el sensor DTH11, vamos a medir la temperatura y la humedad del ambiente usando la placa arduino. El sensor DTH11 tiene las siguientes conexiones:




Como se puede ver en la imagen, son muy sencillas, una patilla irá a tierra (GND), otra a 5 V (VCC) y la del medio a un pin digital (en nuestro caso al pin 2). El código desarrollado para hacerlo funcionar ha sido :

miércoles, 22 de mayo de 2019

NORBA LANDER 2: vehículo lunar controlado por control remoto IR / Bluetooth

Durante las últimas semanas el grupo de 3ºB del IES Norba Caesarina está realizando el diseño y construcción de un vehículo lunar. Tras un estudio de cómo debería ser un vehículo lunar, sus características técnicas, movimientos, sensores que deben instalarse en el mismo,  nos hemos marcado una serie de objetivos para definir nuestro prototipo definitivo.

 

     Después de realizar los diferentes diseños o bocetos de los vehículos, teniendo en cuenta las premisas establecidas al principio del proyecto, los alumnos de cada uno de los grupos se ha distribuido el trabajo. Dentro de cada uno de los grupos (seis alumnos por grupo) se diferencian los siguientes trabajos:
  • Construcción del vehículo: se diseña y construye la estructura del vehículo (una vez definido el diseño definitivo).
  • Memoria: particularidades en la estructura del vehículo como la amortiguación, la transmisión del movimiento entre motor y eje principal, y la localización de las placa protoboard y arduino.
  • Programación con Arduino: código del programa para controlar el vehículo por IR (Infrarrojos). 
      Para la construcción del vehículo se han utilizado diversos materiales del taller como madera, metal (sujeción de motores, ejes) o plástico (caucho), siempre teniendo en perspectiva posibles materiales reciclados o reutilizados.
     En el equipo de diseño específico de cada uno de los grupos se evalúa las consideraciones sobre amortiguación, compartimentación dentro del vehículo (situación de los controles, fuente de alimentación, paracaídas...), situación de cada uno de los elementos fundamentales como motores o ruedas.
      Por último, dos miembros de cada grupo está realizando un estudio sobre el código para la placa de Arduino. En primer lugar, se realizará una simulación con el programa Tinkercad (primero se controlarán diodos led por IR y más adelante se controlarán el o los motores). Finalmente, se implementará en una placa real, para posteriormente situarla en el propio vehículo.

      La situación de las placas, sensores y fuente de alimentación se preverá en el diseño y construcción del prototipo de vehículo lunar.








PRIMERA PARTE:

Tras el estudio de las conexiones de los motores (análisis del funcionamiento de un puente H para controlar dos motores) y la colocación de un Bluetooth con sus conexiones correspondientes, se procede a probar, en una práctica más sencilla, y en paralelo el funcionamiento de un Bluetooth para encender los dispositivos más sencillos (diodos leds).

CONTROLAR EL BLUETOOTH (ENCENDIDO DE DOS DIODOS LEDS CON BLUETOOTH -ARDUINO-)

Ficha de códigos (pdf) para controlar dos diodos led.