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);   
  }
}