Está en la página 1de 9

CARRERA DE ING.

SISTEMAS
P.F. Robótica

INFORME DE PROGRAMACIÓN 2.2


1. Información General:
1.1. Docente: ---------------
1.2. Alumno: Anthony Arteaga
1.3. Nivel: Octavo
1.4. Fecha: 20/06/2021

2. Tema de programa: Enviar y recibir datos por udp.


3. Instrucciones:
-El boton de RECIBIR ON activa la lectura de datos UDP y las muestra en las gráficas de
Temperatura y Campo Magnetico.

- El boton de RECIBIR OFF desactiva la lectura de datos UDP y las muestra en las gráficas de
Temperatura y Campo Magnetico, es decir, ya no aparecen más datos en las gráficas.

- El boton ENVIAR, envia la información del cuadro de texto por UDP, y enciende el LED
cuando envia 1 y se apaga cuando envia 0.
4. Rubrica:

1
CARRERA DE ING. SISTEMAS
P.F. Robótica

5. Procedimientos:

Código Arduino

# include<WiFi.h>
# include<WiFiUDP.h>

char nombrered[]="GERMAN_CNT";//nombre de la red


char clave[]="anthony1500"; //clave de la red
char ip[]="192.168.1.10";//ip del moento de la pc
int puertoremoto=7070;//definimos el Puerto remoto
int puertolocal=8888;//definimos el puerto local
char bufferlectura[50];
uint8_t bufferescritura[50];
WiFiUDP udp;
String cadena;
float t=0;
int cm=0;//definimos las variables a utilizar
int led=2;
void setup() {
Serial.begin(9600);
conectar();
udp.begin(puertolocal);
pinMode(led,OUTPUT);
}

void loop() {
t=temperatureRead();//datos de la temperature esp32
cm=hallRead();//datos del campo magnético esp32
int tamanobufer=udp.parsePacket();
memset(bufferlectura,0,50);
cadena=String(t)+"A"+String(cm)+"A";
memset(bufferescritura,0,sizeof(bufferescritura));

for(int i=0;i<cadena.length();i++){
bufferescritura[i]=(uint8_t)cadena[i];
}
udp.beginPacket(ip,puertoremoto);

udp.write(bufferescritura,cadena.length());

udp.endPacket();
delay(100);

if(tamanobufer){
udp.read(bufferlectura,tamanobufer);
Serial.println(bufferlectura);
int orden=bufferlectura[0]-48;
if(orden==1)
digitalWrite(led,HIGH);//segun sea 1 enciende , 0 apaga

2
CARRERA DE ING. SISTEMAS
P.F. Robótica

if(orden==0)
digitalWrite(led,LOW);

delay(100);

}
void conectar(){
WiFi.begin(nombrered,clave);
while(WiFi.status() !=WL_CONNECTED){
Serial.println(".");
delay(20);
}
Serial.println("conectado");
Serial.println(WiFi.localIP());
}

Código Matlab
function Tarea()
clc
clear all
close all
warning off
instrreset

Cudp=udp('192.168.1.2',8888,'localPort',7070,'LocalPortMode','manual');
pause(1)
fopen(Cudp);

figure('menubar','none','color','b','position',[550 200 400 355],'CloseRequestFcn',@cerrar)%[posX posY


Ancho Altura]
uicontrol('style','text','string','Tarea:Enviar y recibir de datos','position',[6 280 450
50],'Back','b','FontSize',14,'FontWeight','b');%titulo

texto=uicontrol('style','edit','position',[250 130 125 25],'fontSize',14);%caja de texto editable


uicontrol('style','push','position',[250 80 125
30],'fontSize',14,'string','Enviar','back','y','call',@enviar)%boton enviar 1 o 0 para encender el led
uicontrol('style','push','position',[250 210 125 30],'fontSize',14,'string','Recibir
ON','back','y','call',@encender)%boton recibir datos
uicontrol('style','push','position',[250 167 125 30],'fontSize',14,'string',' Recibir
OFF','back','y','call',@apagar)%boton para dejar de recibir datos

graficar=1;
t=37;
cm=0;
while(graficar==1)
flushinput(Cudp);
3
CARRERA DE ING. SISTEMAS
P.F. Robótica

lectura=fscanf(Cudp,'%fA%dA');
t=0;
cm=0;
subplot('position',[0.1 0.5 0.4 0.2])
plot(t);
title('TEMPERATURA')
subplot('position',[0.1 0.2 0.4 0.2])
plot(cm);
title('CAMPO MAGNETICO')
pause(0.1);
end
function encender(,)
while(graficar==1)
flushinput(Cudp);
lectura=fscanf(Cudp,'%fA%dA');
t(end+1)=lectura(1);
cm(end+1)=lectura(2);
subplot('position',[0.1 0.5 0.4 0.2])
plot(t);
title('TEMPERATURA')

subplot('position',[0.1 0.2 0.4 0.2])


plot(cm);
title('CAMPO MAGNETICO')
pause(0.1);

end
end
function apagar(,)
while(graficar==1)
flushinput(Cudp);
lectura=fscanf(Cudp,'%fA%dA');
t=0;
cm=0;
subplot('position',[0.1 0.5 0.4 0.2])
plot(t);
title('TEMPERATURA')

subplot('position',[0.1 0.2 0.4 0.2])


plot(cm);
title('CAMPO MAGNETICO')
pause(0.1);

end
4
CARRERA DE ING. SISTEMAS
P.F. Robótica

end

function cerrar(,)
graficar=0;
pause(0.2);
fclose(Cudp);
delete(Cudp);
closereq
end
function enviar(,)
fwrite(Cudp,texto.String);
end

end

Se empezó diseñando mediante código la ventana donde irán las funciones del programa, se
ajustó las dimensiones de la ventana para que este en el centro de la pantalla además se le
agrego el color de fondo a la ventana, se implementó un título, textos de la temperatura y el
campo magnético.
Este programa tiene la finalidad de mostrarme en dos graficas en el campo magnético y la
temperatura del esp32, además mediante los botones de recibir ON y recibir OFF es donde se
programó la función de enviar datos al momento que aplaste en recibir ON y deje de recibir
datos al momento de dar clic en recibir OFF, también tiene una caja de texto que me permite
enviar datos como 1 o 0, los cuales controlaran el encendido y apagado de un led.

5
CARRERA DE ING. SISTEMAS
P.F. Robótica

6. Resultados:

Imagen #1: interfaz del programa.

Imagen #2: encendido de un led.

6
CARRERA DE ING. SISTEMAS
P.F. Robótica

Imagen #3: encendido de un led.

Imagen #4: Apagado de un led.

7
CARRERA DE ING. SISTEMAS
P.F. Robótica

Imagen #5: Apagado de un led.

Imagen #6: Botón recibir datos.

8
CARRERA DE ING. SISTEMAS
P.F. Robótica

Imagen #7: Botón recibir datos.

Imagen #8: Botón dejar de recibir datos.

7. Autoevaluación:
Según mi criterio considero que me merezco la máxima nota debido esfuerzo aplicado
en esta tarea.

También podría gustarte