Tutorial Simple de Circuitos Oscilador Astable Multivibrator
Esquemática:

Circuito:

Aquí esta el video:
Santiapps – Arduino, Raspberry Pi, Python, Internet Of Things, IoT, iOS, Android
Programming smart devices with the cloud for robotic intelligence solutions using Arduino, Raspberry Pi, Python, iOS, Android Internet Of Things Tank
Es muy común querer conectar nuestros proyectos Arduino a la nube. WiFi es una de las maneras en que podemos hacer esto. Claro también podemos usar GPRS y lo haremos mas adelante. Por ahora veamos como conectar nuestra Arduino a una WiFi shield y lograr conectividad a la web.
Requisitos:
Estaremos usando el modulo WiFi de Roving Networks basado en la WiFly.
Aquí podemos ver la WiFi shield (en azul) con su modulo WiFi Bee (en rojo). En este caso, dado que es una shield como la Grove Shield para sensores, hay Shields específicos para un tipo de board. Aquí vemos que ya esta montada sobre la UNO. Esto es importante a la hora de comprar porque hay Shields para distintas boards ya que el pinout (la configuración de pines) puede variar por milímetros de distancia en algunos casos. Esto no quiere decir que no podrás usar una WiFi Shield para MEGA en una UNO, aunque las distancias sean distintas entre pines. Si la tienes o la has comprado por error, simplemente sera necesario usar cables para llegar de un pin a otro.
El código lo pueden descargar aquí…Arduino WiFi Tutorial
Es necesario modificar los parámetros:
-mySSID
-myPassword
-site (aquí pueden poner google.com por ejemplo)
Para configurar el modulo es necesario conectarlo a la UNO, ajustar los pines a Normal, PC, SoftSerial y subir el sketch Blink. Luego ajustamos los pines a Normal, PC, UART y abrimos el Serial Monitor en 9600 bps y No Line Ending. Aqui ingresamos $$$ y recibimos el mensaje “CMD” sin los “”. Ahora cambiamos a Carriage Return and el Serial Monitor y podemos enviar los siguientes comandos:
set ip dhcp 1
set wlan ssid nuestrowifi
set wlan key nuestra clave wep
set wlan channel 6
save
reboot
Podemos ahora ver nuestros parámetros desde el Serial Monitor con el comando get ip y debería darnos algo así:
AOK
<4.00> get ip
IF=DOWN
DHCP=ON
IP=192.168.1.185:2000
NM=255.255.255.0
GW=192.168.1.1
HOST=192.168.1.1:2000
PROTO=TCP,
MTU=1524
FLAGS=0x7
TCPMODE=0x0
BACKUP=0.0.0.0
y ahora tratamos de unirnos a la red manualmente:
join nuestrowifi
Auto-Assoc nuestrowifi chan=6 mode=WEP SCAN OK
Joining nuestrowifi now..
<4.00> Associated!
DHCP: Start
DHCP in 1090ms, lease=86400s
IF=UP
DHCP=ON
IP=192.168.1.59:2000
NM=255.255.255.0
GW=192.168.1.1
Listen on 2000
Estamos listos para el sketch!
Al montar el código a la UNO (con la WiFi montada encima) podemos enviar el request al servidor y ver la data.
La conexión en sí no es complicada. Simplemente se monta la WiFi shield sobre la UNO. Una vez ensamblada se puede conectar la UNO a la pc y subir el código. Al correrlo se pueden ver las LEDs funcionando en la WiFi shield de la siguiente manera:
La data que aparece en el Monitor Serial se puede ver aquí:
Excelente! Ya podemos conectarnos al internet. Esto abre nuestro abanico de proyectos:
Ahora vamos a combinar la recolección de datos de sensores con la transmisión de esos datos a la web. Así iniciará el nacimiento de nuestro robot!
EXTRA: Si queremos usar el NTP necesitamos hacer:
wifly.setTimeAddress(“129.6.15.30″);//ntp-nist.ldsbc.net”); //28, 29 or 64.113.32.5 or 216.229.0.179
wifly.setTimePort(123);
wifly.setTimezone(7);
wifly.setTimeEnable(5); //maybe because we dont want it to set time on powerup
wifly.time();
wifly.save();
delay(1000);
// there must have been a line with MyTime that I erased
uptime = wifly.getUptime();
timezone = wifly.getTimezone();
rtc = wifly.getRTC();
Serial.print(“uptime: “);
Serial.println(uptime);
Serial.print(“timezone: “);
Serial.println(timezone);
Serial.print(“rtc: “);
Serial.println(rtc);
Serial.print(“MyTime from wifly getTime: “);
Serial.println(MyTime);
//Get time from wifi module
if (wifly.time()) { // My testing of rtc
//print time
delay(1000); // My testing of rtc below
//char *something = wifly.getTime(dataBufferToReceive,sizeof(dataBufferToReceive));
int something = wifly.getRTC();
Serial.print(“RTC from wifly getRTC: “);
Serial.println(something);
Serial.print(“Time of buf: “);
Serial.println(wifly.getTime(dataBufferToReceive, sizeof(dataBufferToReceive)));
} else {
Serial.println(“Failed to get time”);
}
Ahora vamos a querer medir la distancia entre nuestro sensor y el objeto ademas de hacer sonar el buzzer. Esto es mas util y parecido a un radar/sonar.
Requisitos:
Ahora si tenemos todos los componentes necesarios y conectados de la siguiente forma:
El Piezo Buzzer (cilindro negro en la esquina superior izquierda) se conecta asi:
Piezo (+) > Resistor de 220 Ohm – Color Fuchsia Fila 15
Piezo (-) > GND – Color Azul
Resistor > Pin 9 de MEGA – Color Naranja Fila 25
Mientras que el Sensor Ultrasonico se conecta asi:
VCC > 5V MEGA
GND > GND MEGA
Echo > Pin 12 MEGA
Trig > Pin 13 MEGA
Veamos el código:
#define trigPin 13
#define echoPin 12
#define buzzer 9
void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
long duracion, distancia;
digitalWrite(trigPin, LOW); // Enviamos corriente LOW
delayMicroseconds(2); // Esperamos
digitalWrite(trigPin, HIGH); //Enviamos corriente HIGH
delayMicroseconds(10); // Esperamos
digitalWrite(trigPin, LOW); // Nuevamente corriente LOW
duracion = pulseIn(echoPin, HIGH); // Escuchamos el echo
distancia = (duration/2) / 29.1; // Calculamos la distancia
if (distancia < 4) { // Si distancia es corta
tone(buzzer, 1000); //send 1khz sound signal
} else {
noTone(buzzer);
}
if (distancia >= 200 || distancia <= 0){ // Si distancia larga
Serial.println("Out of range");
} else {
Serial.print(distancia); //Escribirla
Serial.println(" cm");
}
delay(500);
}
Al correr este código y abrir el Monitor Serial, deberíamos ver una pantalla con las mediciones del objeto mas cercano que encuentra el sensor. En mi caso se mira así:
Como pueden ver el objeto mas cercano esta a 25cm. Al acercar un objeto frente al sensor, la distancia se va reduciendo hasta llegar al limite determinado de 4cm. En este momento el código instruye a la MEGA a enviar voltaje al Piezo Buzzer para hacerlo sonar.
Ahora veamos el resultado final se puede ver aquí:
Excelente! Ahora podemos comenzar a trabajar en un robot que se mueva de forma autónoma y no se estrelle contra obstáculos. Ahora falta agregarle movilidad con motores.