Aplicación de ZigbeeV1
Aplicación de ZigbeeV1
Aplicación de ZigbeeV1
Aplicación de Zigbee
Fecha: 13/11/2021
Grupo: Click or tap here to enter text.
Integrantes:
Albert Josue Valencia Santacruz
Paralelo: 101
Profesor: Ing. Nestor Arreaga
Objetivo
Realizar una pequeña aplicación con el protocolo Zigbee para el control de escenarios
domóticos mediante la configuración de un sistema embebido.
Duración
Noventa (90) minutos.
Materiales y herramientas
• Proteus Professional 8, Arduino y Virtual Serial Port Tools.
Procedimiento
Paso 1: Elaboración del circuito esquemático
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
m) Crear un código llamado Receptor.ino, y agregar las siguientes líneas dentro de la
función setup().
Serial.begin(9600);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
n) Dentro de la función loop(), programe un código que lea los datos desde la interfaz
Serial y cumpla con las siguientes condiciones:
o Si el usuario presiona la tecla 1, la lámpara se enciende y se presenta el
mensaje “Lámpara encendida”.
o Si el usuario presiona la tecla 2, la lámpara se apaga y se presenta el
mensaje “Lámpara apagada”.
o Si el usuario presiona cualquier otra tecla, la lámpara no cambia su estado y
se presenta el mensaje “Tecla inválida, intente otra vez”.
Tenga en cuenta que debe manipular la salida de los pines conectados al RELAY con la
función digitalWrite(pin,state);
q) Seleccionar Create Local Bridge, y crear un puente entre los puertos seriales COM1
y COM2.
r) En el proyecto de Proteus, ZigbeeEmisor, dar doble clic sobre el módulo Xbee y
establecer COM 1 en la opción Physical port. También cargar el archivo binario del
código CustomKeypad al ARDUINO UNO, dar doble clic sobre el componente y
luego ir a la opción Program File (el archivo debe terminar en formato
.ino.standard.hex).
s) En el proyecto de Proteus, ZigbeeReceptor, dar doble clic sobre el módulo Xbee y
establecer COM 2 en la opción Physical port. También cargar el archivo binario del
código Receptor al ARDUINO UNO, dar doble clic sobre el componente y luego ir a
la opción Program File (el archivo debe terminar en formato .ino.standard.hex).
t) Ejecutar. primero la simulación de ZigbeeEmisor y después ZigbeeReceptor. Probar
la funcionalidad de la aplicación.
Colocar capturas del resultado.
Presionar 1
Presionar 2
w) Una vez creado el nuevo dispositivo en blanco, damos clic en él y entramos para
crear una nueva variable de tipo raw, el nombre de esta puede ser “Encendido”,
que es como yo la he nombrado en la figura.
x) Luego de eso damos clic en la variable y vamos a modificar su rango para que
vaya de 1 a 2.
y) Luego iremos a Dashboard, en caso de no tener uno creamos uno nuevo y allí
agregaremos un “Indicator widget”.
int dataCheck = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pserial.begin(9600); //Inicializo puerto virtual serial
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
Serial.println("BIENVENIDO");
Serial.println("Presione la tecla 1 para encender");
Serial.println("Presione la tecla 2 para apagar");
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()){
char data = Serial.read();
Serial.print(data);
Serial.print(" ==========> ");
if(data == '1'){
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
pserial.write(1); //Envío dato de encendido python por puerto serial
virtual
Serial.println("Lampara encendida");
}else if(data == '2'){
digitalWrite(8,LOW);
digitalWrite(9,LOW);
pserial.write(2); //Envío dato de apagado a python por puerto serial
virtual
Serial.println("Lampara apagada");
}else{
Serial.println("Elija 1 para encender y 2 para apagar.");
}
}
}
if __name__ == '__main__':
dato = 0.0
try:
print("Conectando con el puerto serial...")
arduino = serial.Serial('COM5', 9600, timeout=2.0) #En caso de usar
otro puerto sustuir el valor COM5
time.sleep(1)
except:
print("Fallo en la conexión con arduino(Proteus)")
try:
print("Conectando con API...")
api = ApiClient(token='TOKEN DE SU DISPOSITIVO') #Token de su
Dispositivo
while True:
enc = arduino.read()
print(enc)
if len(enc) > 0:
dato = int.from_bytes(enc, byteorder='big', signed=False)
print("Encendido(1 si, 2 no):", end=" ")
print(dato)
newTemp = encendido.save_value({'value': dato})
Reto
Agregar un sensor de temperatura DHT22/11 en el proyecto ZigbeeEmisor para controlar a
un ventilador FAN-DC en ZigbeeReceptor. Si la temperatura es mayor a 24°C, encender el
ventilador, caso contrario apagarlo. Adicional a esto el valor de temperatura medido por el
sensor debe ser enviado a Ubidots y mostrado en un “Thermometer widget”.
Conclusiones
La configuración de la luz para que se encienda y apague se realizo mediante un sistema
embebido por Zigbee.
Recomendaciones
Tener en cuenta que se debe actualizar e instalar la nuevas librerías del Arduino IDE, no
olvidar los archivos: ino – hex – standard, para el respectivo Arduino que se encuentre en el
Proteus.
Rúbrica de evaluación
Criterio Excelencia Desarrollado En desarrollo Inicial
Los códigos
Los códigos presentados Los códigos
Los códigos presentados presentados
Código no se adecuan al presentados son
funcionan exitosamente presentan errores de
funcionamiento requerido incorrectos
sintaxis
Presenta solo una
Presenta todas las Presenta las capturas, No presenta capturas
captura del
capturas y se evidencia el pero no se evidencia el del funcionamiento de
Capturas funcionamiento de lo
funcionamiento de lo funcionamiento de lo lo realizado en la
realizado en la
realizado en la práctica realizado en la práctica práctica
práctica
Da su opinión tomando en
Da su opinión tomando Da su opinión Da su opinión sin
cuenta las actividades
en cuenta las actividades tomando en cuenta tomar en cuenta las
realizadas y sus
realizadas, sus las actividades actividades realizadas,
Conclusiones argumentos son válidos
argumentos son válidos, realizadas, pero o, no presenta las
dando a conocer
pero no menciona carece de argumentos conclusiones
información relevante
información relevante detallados solicitadas
tratada durante la práctica
Completa el reto de forma Completa el reto, pero no Completa el reto, pero
No completa el reto
Reto exitosa y presenta las presenta el no presenta las
solicitado
evidencias completas funcionamiento solicitado evidencias completas