lunes, 22 de noviembre de 2021

2. Internet de las Cosas: Enviando Twitter desde Arduino vía ThingSpeak

 1.- Daos de alta en https://thingspeak.com/

2.- Ahí dentro, podemos abrir un Canal para registrar los datos enviados. O hacer un link a una cuenta de Twitter para que escriba por nosotros un tweet cuando se le mande una URL. Para ambas cosas, hay que generar una URL con una clave (KEY) que nos darán en la página. 

Por ejemplo, para enviar el dato de la temperatura "69" a un canal (y luego verlo a través de una aplicación móvil), la cadena sería:

https://api.thingspeak.com/update?api_key=xxxxxxxxxx&field1=69

Por ejemplo, para enviar el tweet "Hola Mundo", la cadena sería:

https://api.thingspeak.com/apps/thingtweet/1/statuses/update?api_key=XXXXXXXXXXXXX&status=Hola Mundo


3.- El código básico del programa sería el siguiente:

#include <WiFiUdp.h>  //librerías necesarias para iniciar el wifi 

#include <ESP8266WiFi.h> //librerías necesarias para manejar el ESP8266

#include "DHT.h"  //Instalar dht sensor library de adafruit


const char* host = "api.thingspeak.com"; //declaramos el servidor al que nos conectaremos

const int httpPort = 443;


const char* ssid= "nombre_red"; //poner nombre y password de red

const char* password="pass_red";


String url; //variables donde irá la URL que enviará el arduino

String arg; 


WiFiClientSecure client; //declaramos el cliente


DHT dht(D5, DHT22); //iniciamos el dht


int humedad,temperatura;


void setup() 

{

  //iniciamos la wifi

  WiFi.begin(ssid, password);   

  while(WiFi.status()!=WL_CONNECTED) delay(200);

  client.setInsecure();

  //iniciamos el sensor

  dht.begin();             

}

 

void loop() 

{

    delay(3600000); //espera una hora


    humedad = dht.readHumidity();     //leemos humedad

    delay(2000);

    temperatura = dht.readTemperature(); //leemos temperatura

    

    //enviamos la URL con la KEY de ThingSpeak

    while (!client.connect(host, httpPort)) delay(200);

    url = "/apps/thingtweet/1/statuses/update?api_key=XXXXXXXXXXXXX&status="; //Sustituir XXXXX... por la Key de ThingSpeak

    arg = "Temperatura " + String(temperatura) + "%0AHumedad " +String(humedad);

    client.print(String("GET ") + url + arg + " HTTP/1.1\r\n" +

                "Host: " + host + "\r\n" +

               "Connection: close\r\n\r\n");

    client.stop();

}



Instalación ESP8266 en Windows y conexión a Wifi

1. Añadir el soporte de tarjetas ESP8266 al IDE de Arduino
Archivo -> Preferencias -> Gestor URL de tarjetas adicionales…
 http://arduino.esp8266.com/stable/package_esp8266com_index.json

2. Instalar el paquete de placas ESP8266 en el IDE
Herramientas -> Gestor de Tarjetas
Buscar el paquete “ESP8266 by Community” e instalar

3. Instalar el driver CH340 (USB-SERIAL) en el ordenador, o el driver CP2102 (según la placa que tengamos)

4. Para seleccionar la placa en el IDE (Herramientas):
Placa “NodeMCU 1.0 12E Module”
Debug Port “Serial”
Programador “USBtinnyISP”


5.- El programa básico para conectar a una wifi es el siguiente:

#include <ESP8266WiFi.h>
const char* ssid= "red";   //datos de la red
const char* password="contraseña";
WiFiClient client;
void setup()
{
pinMode(D4, OUTPUT);
digitalWrite(D4, 1); //Apaga el LED integrado
WiFi.begin(ssid, password);                      //iniciamos la conexión
while( WiFi.status()!=WL_CONNECTED) delay(500);  //hacemos la petición de entrada en la red
}
void loop()
{
digitalWrite(D4, 0); //Enciende el LED integrado
}

domingo, 21 de noviembre de 2021

Sesión III, Práctica 8: Sensores ultrasonidos en C

 #include <SoftwareSerial.h>

#define echoPin 7
#define trigPin 8
long duracion, distancia;
void setup()
{
 pinMode(trigPin, OUTPUT);
 pinMode(echoPin, INPUT);
 Serial.begin(9600);
 while (!Serial) {}
 Serial.println("Placa conectada");
}
void loop()
{
 digitalWrite(trigPin, LOW);
 delayMicroseconds(2);
 digitalWrite(trigPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(trigPin, LOW);
 duracion = pulseIn(echoPin, HIGH);  //mide la duración del pulso hasta recibir el eco
 distancia = duracion/58.2;                    //pasa la duración del pulso a cm     

Serial.print(distancia);
Serial.println(" cm");
}

domingo, 14 de noviembre de 2021

Sesión II, Práctica 6: Cargando un programa en la placa

 int pinled;

int pausaIda=500;
int pausaVuelta=500;

void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
 for (pinled = 9; pinled <= 13; pinled++)
  {
    digitalWrite(pinled, HIGH);  
    delay(pausaIda);                 
    digitalWrite(pinled, LOW);   
  }
      
for (pinled = 13; pinled >= 9; pinled--)
  {
     digitalWrite(pinled, HIGH);  
     delay(pausaVuelta);                 
     digitalWrite(pinled, LOW);   
  }
}

martes, 28 de mayo de 2019

Profundiza 8: Drones

Al terminar la sesión 7 a unos alumnos se les ocurrió algo: Si ya sabemos construir y programar coches controlados por bluethoot, incluso mejorarlos con funciones concretas para hacer carreras… ¿por qué no aprendemos cómo funciona un dron para intentar construir uno y programarlo?

Hemos dejado un espacio de dos semanas para que los alumnos/as investiguen los tipos de dron que existen y qué módulos necesitamos para incluirlos en el chasis. Además, se han adquirido los elementos esenciales que durante este tiempo han determinado que necesitaremos para maquetar uno:
- Micro motores y hélices.
- Un acelerómetro que nos proporcionará el ángulo de inclinación del sistema.
- Un dron didáctico para observar su funcionamiento mediante la investigación.


Hemos visto los tipos de drones que existen, y con dos de ellos en las mesas del taller, hemos hecho un esquema de su funcionamiento y hemos determinado los módulos necesarios para que se mantengan en el aire en una posición estable.


La primera tarea que hemos hecho ha consistido en programar el acelerómetro que poseen estas máquinas: para ello hemos tomado el ángulo de inclinación X e Y que el módulo 6050 nos ofrecía para visualizarlo por el puerto serie. Con la condición "IF", bastante trabajada en sesiones anteriores, hemos programado el giro de un motor de dron en función del ángulo de inclinación medido:



Hemos afinado la respuesta del motor según las observaciones hechas de los drones que hemos probado en el patio del Centro... aún queda mucho para poder realizar uno funcionalmente completo pero, los alumnos/as se han quedado con la tarea de pensar en diseños de carcasas de drones y la forma de programarlos para el curso que viene.


¡Gracias a tod@s por haber participado en Profundiza 2019!


Foto tomada desde nuestro dron en el patio del Centro

martes, 7 de mayo de 2019

Profundiza 7: Carreras de Bluethoot

La sesión anterior nos gustó tanto que el mismo alumnado ha pedido en la sesión del 7 de Mayo mejorar la programación Bluethoot de sus coches.

El objetivo ha sido echar una carrera entre los equipos, para lo que hemos hecho un circuito en el patio con obstáculos.



Los ajustes han consistido concretamente en añadir nuevas funciones a los botones de la aplicación del móvil, y ajustar la velocidad de cada eje del coche para afrontar mejor las rectas y curvas del circuito. Principalmente se ha mejorado la escritura analógica en los motores para el ajuste del ancho de pulso con el que giran las ruedas.

A pesar de todo... sólo ha habido un ganador: ¡incluso intercambiando los coches!

lunes, 6 de mayo de 2019

PROFUNDIZA 6: Módulos bluethoot

En la sesión del día 6 de Mayo hemos permitido los móviles en el insti: vamos a emparejarlos con el módulo Bluethoot que lo conectará a Arduino.

Hemos introducido el módulo explicando cómo se emparejan los dispositivos y cómo se comunican con la placa a través de la comunicación serial.

Tras alimentar el módulo, hemos realizado el emparejamiento con el móvil. A continuación hemos instalado una aplicación en la que se nos ofrecen distintas pantallas con botones y otras formas de interacción (a través de los sensores de inclinación del mismo) y se han sincronizado el carácter que envían por el puerto serie con el programa en C que se ha redactado en el IDE de Arduino.

Así, hemos asignado las letras "a" para avanzar, "i" izquierda...


Una vez en marcha, a varios grupos se les ha ocurrido la idea de incluir el modo "turbo" asignando un botón en el que la velocidad de lo motores sea la máxima.

¡Hemos echado carreras por los pasillos del instituto!