Arduino IoT: Simple Tutorial de Controlador Relay Remoto WiFi Parte 1

Arduino IoT Arduino (IoT): Simple Tutorial de Infrarojo (IR) Receptor/Transmisor by Santiapps Marcio Valenzuela
Arduino IoT Arduino (IoT): Simple Tutorial de Infrarojo (IR) Receptor/Transmisor

Arduino (IoT): Simple Tutorial de Controlador Relay Remoto WiFi Parte 1

 

Mucha gente me pide una manera de controlar remotamente un set de relays.  Asi que vamos a explorar el uso de una Arduino UNO + WiFi Shield.  Tenemos que correr un http server en la UNO (via la shield) para poder enviarle http requests a ese server con una IP fija en el router de Tigo que este ruteada a la IP fija interna de la UNO.  Esto requiere una UNO + WiFi shield + un router.

Basicamente vamos a hacer que la IP de Tigo en nuestro router sea dirigida a la computadora que queremos, en este caso la Arduino WiFi.  De esta manera cuando alguien visite la IP de nuestro router, sera dirigido a la Arduino WiFi:

Arduino IoT Tutorial Arduino WiFi Shield controlled relay by Santiapps Marcio Valenzuela
Arduino IoT Tutorial Arduino WiFi Shield controlled relay

Pasos

  1. Configurar Arduino WiFi Shield para conectarse a nuestra red Wifi ((https://www.youtube.com/watch?v=6izD9Gf5aSE)).  Los pasos básicamente son:
    1. Conectar WiFi shield a UNO
    2. PC, Soft, Normal
    3. Subir Blink Sketch
    4. PC-> UART & Serial Monitor 9600 NL & send $$$ (reply CMD)
    5. Switch to Carriage Return (Use ‘get everything’ to get config)
    6. ***set ip a 192.168.0.99 (and reserver it for this mac)
    7. set ip dhcp 0
    8. save
    9. reboot
    10. set wlan phrase…
    11. set wlan ssid…
    12. set wlan join 1
    13. save
    14. Reservar IP para MAC en Router
  2. Carga sketch de Servidor a Arduino UNO
    1. set back to Normal, PC, SS to upload server sketch to test browser access
    2. Agregar if else para reconocer name como comando para encender o apagar
  3. Configurar Router
    1. Router IP publico a IP privada de la WiFi shield

Ahora navegar a la ip e ingresar koko y recibir:


StFree memory: 1002
setPrompt hasnt been called
Starting
Free memory: 1002
setPrompt hasnt been called
Already joined network
MAC: 00:06:66:6f:33:a1
IP: 192.168.1.65
Netmask: 255.255.255.0
Gateway: 192.168.1.1
DeviceID: Wifly-WebServer
Ready
wifly.available! 🙂
Got GET request
Sent index page
wifly.available! 🙂
Unexpected: GET /favicon.ico HTTP/1.1
Sending 404
wifly.available! 🙂
Got POST
Sent greeting page

Arduino IoT Tutorial Arduino WiFi Shield controlled relay by Santiapps Marcio Valenzuela
Arduino IoT Tutorial Arduino WiFi Shield controlled relay
Arduino IoT Tutorial Arduino WiFi Shield controlled relay by Santiapps Marcio Valenzuela
Arduino IoT Tutorial Arduino WiFi Shield controlled relay

Arduino (IoT) Video Serie: Kit de Carro Parte 4 (IR)

Arduino Honduras Santiapps Marcio Valenzuela

Arduino (IoT) Video Serie: Kit de Carro Parte 4 (IR)

Este es el codigo final:

#include "AFMotor.h"
#include "IRremote.h"

AF_DCMotor motor1(1, MOTOR12_64KHZ); // create motor #1, 64KHz pwm
AF_DCMotor motor2(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor motor3(3, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
AF_DCMotor motor4(4, MOTOR12_64KHZ); // create motor #2, 64KHz pwm

int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Motor test!");
  irrecv.enableIRIn(); // Start the receiver

  motor1.setSpeed(200);     // set the speed to 200/255
  motor2.setSpeed(200);     // set the speed to 200/255
  motor3.setSpeed(200);     // set the speed to 200/255
  motor4.setSpeed(200);     // set the speed to 200/255
}

void loop() {

  //Recibir & Analizar codigo recibido
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);

      if (results.value == 0x2C2E80FF){
        Serial.println("forward");
        forward();
        delay(2000);
        brake();
      } else if (results.value == 0x5A1A483D){
        Serial.println("backward");
        backward();
        delay(2000);
        brake();
      } else if (results.value == 0x9578646A){
        Serial.println("left");
        left();
        delay(1000);
        brake();  
      } else if (1==1) {
        Serial.println("right");
        right();
        delay(1000);
        brake();  
      }

      irrecv.resume(); // Receive the next value
  } 
}

void forward(){
  Serial.println("running forward");
  motor3.run(FORWARD);   
  motor4.run(FORWARD);     
}
void backward(){
  Serial.println("running backward");
  motor3.run(BACKWARD);    
  motor4.run(BACKWARD);    
}
void left(){
  motor3.run(FORWARD);   
}
void right(){
  motor4.run(FORWARD);    
}
void brake(){
  motor1.run(RELEASE);    
  motor2.run(RELEASE);    
  motor3.run(RELEASE);    
  motor4.run(RELEASE);      
}