0% encontró este documento útil (0 votos)
107 vistas21 páginas

Solución Arduino

Este documento presenta una lista de comandos AT importantes para configurar y usar un módulo WiFi ESP8266. Algunos comandos clave incluyen AT+CWMODE para establecer el modo WiFi, AT+CWJAP para conectarse a una red, AT+CIPSTART para iniciar una conexión TCP o UDP, y AT+CIPSEND para enviar datos a través de una conexión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
107 vistas21 páginas

Solución Arduino

Este documento presenta una lista de comandos AT importantes para configurar y usar un módulo WiFi ESP8266. Algunos comandos clave incluyen AT+CWMODE para establecer el modo WiFi, AT+CWJAP para conectarse a una red, AT+CIPSTART para iniciar una conexión TCP o UDP, y AT+CIPSEND para enviar datos a través de una conexión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Solución:

//TRASMISOR
void setup() {
Serial.begin(19200);
pinMode(13,INPUT);
}

void loop() {
if(digitalRead(13)==HIGH){
Serial.print("Hola Mundo");
delay(200);
}

***************************************************************

//RECEPTOR

String dato;

void setup() {
Serial.begin(19200);
}

void loop() {
while(Serial.available()){
dato=Serial.readString();
Serial.println(dato);
}

}
//PROBLEMA EJEMPLO DE COMUNICACIÓN
SERIAL:

void setup(){

Serial.begin(9600);

Serial.available(); //Consulta si hay datos de llegado

void loop(){}

Solución;

//Problema número 2, Solución:

char dato;

void setup(){
Serial.begin(9600);
}

void loop(){
if(Serial.available()>0){
dato=Serial.read();
Serial.print(dato);
}

Solución:
//Problema numero 3, Solución:

String dato=""; //Cadena de datos


boolean estado=0;

void setup(){
Serial.begin(9600);
}

void loop(){
estado=0;
while(Serial.available()){
char caracter=Serial.read();
dato.concat(caracter);
estado=1;
delay(5);
}

if(estado==1){
Serial.println(dato);
dato="";
}

Solución:
COMANDO: CALCULADORA
Ingrese primer numero:
Ingrese Segundo numero:
Menu: Suma, resta, producto o división
COMANDOS: SUM, RES, PROD, DIV
Respuesta: XXX

//Problema numero 4, Solución:

String dato=""; //Cadena de datos


boolean estado=0;
int numero, numero1, numero2;

void setup(){
Serial.begin(9600);
}

void loop(){
estado=0;
while(Serial.available()){
char caracter=Serial.read();
dato.concat(caracter);
estado=1;
delay(5);
}
if(estado==1){
//Serial.println(dato);
if(dato=="CALCULADORA"){Serial.print("Ingrese el primer numero: ");}
if(dato=="SUM"){numero=numero1+numero2; Serial.print("Respuesta:
"); Serial.println(numero); numero1=0;}
if(dato=="REST"){numero=numero1-numero2; Serial.print("Respuesta:
"); Serial.println(numero);numero1=0;}
if(dato=="PROD"){numero=numero1*numero2;
Serial.print("Respuesta: "); Serial.println(numero);numero1=0;}
if(dato=="DIV"){numero=numero1/numero2; Serial.print("Respuesta:
"); Serial.println(numero);numero1=0;}

numero=dato.toInt();
if(numero!=0){
if(numero1!=0){numero2=numero;Serial.println(numero2);}
else{numero1=numero;
Serial.println(numero1);
Serial.print("Ingrese el segundo numero: ");
}
}

dato="";
}

}
TERCERA CLASE:
17/04

MÓDULO BLUETOOH
Existen dos clases o tipos de módulos (antenas) bluetooth: modulo HC-06
(Esclavo), Módulo HC-05 (Maestro o esclavo)
CLASE 24 ABRIL 2020

NIVELES LOGICOS:
Azul: Arduino
Verde: Bluetooth
La solución para la comunicación es bajar el nivel del arduino 5v a 3.3v
DIVISOR DE VOLTAJE

TAREA
ENVIAR INFORMACIÓN VÍA BLUETOOTH DESDE LA LAPTOP HASTA EL
ARDUINO Y QUE SE VISUALICE EN UNA PANTALLA LCD

COMANDOS AT-ESP8266
Lista de comandos:
Comando Respuesta Función

AT - Probar iniciación correcta

AT OK Prueba si el módulo responde correctamente

AT+RST - Reinicia el módulo

AT+RST OK Resetéa el módulo

AT+CWMODE - Modo Wifi

+CWMODE:(1-3)
AT+CWMODE=? Lista los modos validos
OK

+CWMODE:modo
Pregunta en que modo AP esta actualmente el
AT+CWMODE?
módulo
OK

AT+CWMODE=mo OK Establece el módulo en el modo dado


1 = Modo estación (cliente)

do 2 = Modo AP (huésped)

3 = Modo AP + Estación (modo dual)

AT+CWLAP - Lista APs disponibles

Lista los Acess Points disponibles para


conectarse.

ecn: codificación, puede ser:

0 = Abierto

1 = WEP

AT+CWLAP:ecn,ssid,r
ssi,mac 2 = WPA PSK
AT+CWLAP

OK 3 = WPA2 PSK

4 = WPA WPA2 PSK

ssid: String que contiene el SSID del AP

rssi: Fuerza de la señal

mac: String que contiene la dirección MAC

+CWLAP:ecn,ssid,rssi,
AT+CWLAP=ssid,m mac Busca Acess Points disponibles para
ac,ch conectarse con las condiciones especificadas
OK

AT+CWJAP - Unirse a un Access Point


+ CWJAP:ssid
Imprime el SSID al que el módulo esta
AT+CWJAP?
conectado
OK

AT+CWJAP=ssid,p El módulo se conecta al la red con el nombre


OK
wd ssid indicado y la contraseña pwd suministrada

AT+CWQAP - Desconectarse de una Access Point

Se desconecta de la red que esta actualmente


AT+CWQAP OK
conectado

AT+CWSAP - Configurar el softAP del módulo

+CWSAP:ssid,pwd,ch,
ecn
AT+CWSAP? Pregunta la configuración actual del softAP

OK

AT+CWSAP=ssid,p OK Configura el softAP con


wd,ch,ecn

ssid: String con el nombre de la red

pwd: Contraseña, no mayor a 64 caracteres

ch: Canal inalámbrico

ecn: Tipo de codificación

1 = Abierto

2 = WPA_PSK
3 = WPA2_PSK

4 = WPA_WPA2_PSK

AT+CIPSTATUS - Información acerca de la coneción

status:

2 = Se obtuvo IP

3 = Conectado

4 = Desconectado

STATUS:status id: ID de la conexión en caso de multiconexión


(1-4)

+CIPSTATUS:id,type,a
AT+CIPSTATUS
ddr,port,tetype type: Tipo de conexión, "TCP" o "UDP"

OK addr: Dirección IP de la conexión

port: Numero del puerto

tetype:

0 = El módulo corre como cliente

1 = El módulo corre como servidor

AT+CIPMUX - Habilitar o deshabilitar multiples conexiones

AT+CIPMUX=mode OK mode:
0 = Conexión unica

1 = Múltiples conexiones, hasta 4

+CIPMUX:mode
AT+CIPMUX? Imprime el mode, el modo de conexión actual
OK

AT+CIPSTART - Establece una conexión TCP o registra un puerto UDP e inicia la conexión

(cliente)

Empieza una conexión como cliente (en modo


conexión única)

type: puede ser "TCP" o "UDP"


AT+CIPSTART=typ
OK
e,addr,port
addr: String que contenga la dirección IP
remota

port: String que contenga el puerto remoto

OK Empieza una conexión como cliente (En modo


AT+CIPSTART=id,t conexión múltiple)
ype,addr,port
id: ID de la conexión (1-4)

[+CIPSTART:(id)
(“type”),(“ip address”),
AT+CIPSTART=? (port)] Lista los posibles comandos

OK
AT + CIPCLOSE - Cierra la conexión TCP o UDP

AT+CIPCLOSE=? OK

Cierra la conexión TCP o UDP con el ID "id" en


AT+CIPCLOSE=id OK
modo conexión múltiple

Cierra la conexión TCP o UDP para modo de


AT+CIPCLOSE OK
conexión única

AT+CIPSEND - Enviar datos (SERVIDOR)

AT+CIPSEND=? OK

Establece la longitud de datos a enviarse


AT+CIPSEND=leng
SEND OK (máximo 2048). Para un envío normal (modo
th
conexión única)

Establece la longitud de datos a enviarse en la


AT+CIPSEND=id,le
SEND OK conexión número "id". Para un envío normal
ngth
(modo conexión múltiple)

Envía datos sin adornos cada 20ms. El módulo


retorna ">" después ejecutar el comando, si se
AT+CIPSEND
recibe el comando "+++" se regresa al modo
comando.

AT+CIFSR - Obtener la dirección IP local

AT+CIFSR=? OK

AT+CIFSR +CIFSR:ip Retorna la dirección IP local del módulo como


cliente.
OK

AT+CIFSERVER -
Configurar como
servidor

Configura el módulo como servidor donde el

modo:

AT+CIPSERVER= 0 = Borrar servidor


OK
mode[,port]

1 = Crear servicio

puerto: numero del puerto, por defecto es el


333

AT+CIOBAUD Cambiar la velocidad de transmisión serial

+CIOBAUD:(9600-
921600) Nos informa que las velocidades de
AT+CIOBAUD=?
transmisión permitidas están en este rango
OK

+CIOBAUD:baudrate
Nos indica que el módulo está actualmente
AT+CiOBAUD?
configurado a 'baudrate'
OK

Configura la velocidad de transmisión a


AT+CIOBAUD=bau 'baudrate'
OK
drate
ejemplo:

#include <SoftwareSerial.h>
// arduino Rx (pin 3) ---- ESP8266 Tx
// arduino Tx (pin 2) ---- ESP8266 Rx
SoftwareSerial esp8266(2,3);

void setup()
{
Serial.begin(9600); // monitor serial del arduino
esp8266.begin(9600); // baud rate del ESP8255

pinMode(13,OUTPUT);
digitalWrite(13,LOW);

sendDataAT("AT+RST\r\n",2000); // resetear módulo


sendDataAT("AT+CWMODE=1\r\n",1000); // configurar como cliente
sendDataAT("AT+CWJAP=\"Xiomi Note
11\",\"HousePando$1\"\r\n",8000); //SSID y contraseña para unirse a red
sendDataAT("AT+CIFSR\r\n",1000); // obtener dirección IP
sendDataAT("AT+CIPMUX=1\r\n",1000); // configurar para multiples
conexiones
sendDataAT("AT+CIPSERVER=1,80\r\n",1000); // servidor en el
puerto 80
}
void loop(){
if(esp8266.available()){
if(esp8266.find("+IPD,")){
delay(1500);
int conexionID = esp8266.read()-48; // Obtiene el ID del cliente
(1,2,3..)

esp8266.find("led="); // bucar el texto "led="


int state = (esp8266.read()-48); // Obtener el estado del pin a mostrar
digitalWrite(13,state); // Cambiar estado del pin

while(esp8266.available()){
char c = esp8266.read();
Serial.print(c);
}

//responder y cerrar la conexión para que el navegador no se quede


cargando
// página web a enviar

sendWep("<h1 style='text-align: center;'>CURSO ARDUINO ONLINE


ATIY<br/><img style='display: block; margin-left: auto; margin-right: auto;'
src='https://i.blogs.es/fc0fc9/650_1000_gi01a201312292200/450_1000.p
ng' alt='' width='99' height='113' /></h1>",conexionID);
sendWep("<br><br/>",conexionID);
sendWep("<p style='text-align: center;'><a
href=\"/led=1\"\"><button><strong>ENCENDER LED
</strong></button></a></p>",conexionID);
sendWep("<p style='text-align: center;'><a
href=\"/led=0\"\"><button><strong>APAGAR LED
</strong></button></a><br/></p>",conexionID);

//"<input type='button' name='boton' value='Boton'


style='width:70px; height:25px'>"
// comando para terminar conexión (FIN)
String comandoCerrar = "AT+CIPCLOSE=";
comandoCerrar+=conexionID;
comandoCerrar+="\r\n";
sendDataAT(comandoCerrar,3000);
}
}
}
/*
Enviar comando al esp8266 y verificar la respuesta del módulo, todo esto
dentro del tiempo timeout
*/
void sendDataAT(String comando, const int timeout){
long int time = millis(); // medir el tiempo actual para verificar timeout
esp8266.print(comando); // enviar el comando al ESP8266
while( (time+timeout) > millis()) {
while(esp8266.available()) {
char c = esp8266.read(); // leer el siguiente caracter
Serial.print(c);
}
}
return;
}

/*FUNCION PARA ENVIAR PAGINA WEB*/

void sendWep(String mensajeWep, int pcID){


String envioAT="AT+CIPSEND=";
envioAT+=pcID;
envioAT+=",";
envioAT+=mensajeWep.length();
envioAT+="\r\n";
sendDataAT(envioAT,250);
sendDataAT(mensajeWep,250);
}

También podría gustarte