################################################################################
# Nombre del Archivo: main.py
# Autores:
# Luis Mardueno 19211677
# Mayra Itzel Bamaca Hernandez 2021185
# Cesar Andree Morales Castillo 20211816
# Sencion Salas Jose Oscar 20212430
# Alan Fernando diaz Garduño 18210990
# Gutierrez Mora Karime Isabel 19211653
# Dennies victor Sanchez Rompelotto C19212433
# Alvarez Lopez Alex Omar 20211753
# Correo: [email protected]
# Fecha: 03/Noviembre/2023
# Institución: Tecnológico Nacional de México (TECNM) - Campus ITT
# Curso: Sistemas Programables
#
# Objetivo:
# Este programa está diseñado para que muestre información del Módulo GPS en una pantalla OLED.
#
# Historial de Revisiones:
# 11/9/2023 Luis Mardueno - Creado
# 11/9/2023 Luis Mardueno - modificaciones
# Enlace a Wokwi :
# https://wokwi.com/projects/380970436102188033
#
# Licencia:
# Este programa es software libre y puede ser redistribuido y/o modificado bajo los términos de la Licencia Pública General GNU
# como está publicado por la Free Software Foundation, ya sea la versión 3 de la Licencia, o (a tu elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; incluso sin la garantía implícita de
# COMERCIALIZACIÓN o APTITUD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia Pública General GNU para obtener más detalles.
#
# Deberías haber recibido una copia de la Licencia Pública General GNU junto con este programa. Si no es así, consulte <http://www.gnu.org/licenses/>.
#
################################################################################
from machine import Pin, I2C, UART
from ssd1306 import SSD1306_I2C
import sys
import time
import gps
from umqtt.simple import MQTTClient
pix_res_x = 128
pix_res_y = 64
# Configuración de Adafruit IO
ADAFRUIT_IO_URL = 'io.adafruit.com'
ADAFRUIT_USERNAME = 'ginathunder'
ADAFRUIT_IO_KEY = 'aio_vRmV707rvqNUXe1mafeUcuBFWNom'
# Definición de funciones
def init_i2c(scl_pin, sda_pin):
# Initialize I2C device
i2c_dev = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin), freq=200000)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()]
if not i2c_addr:
print('No I2C Display Found')
sys.exit()
return i2c_dev
def get_longitude():
# Función para obtener la longitud del GPS
# Suponiendo que gps.position() devuelve la longitud
return gps.position().longitude
def send_to_adafruit(longitude):
# Función para enviar la longitud a Adafruit IO
# Conexión MQTT a Adafruit IO
client = MQTTClient(ADAFRUIT_USERNAME, ADAFRUIT_IO_URL, user=ADAFRUIT_USERNAME, password=ADAFRUIT_IO_KEY)
client.connect()
# Publicar la longitud en el feed correspondiente en Adafruit IO
feed_topic = f'{ADAFRUIT_USERNAME}/feeds/longitud'
client.publish(feed_topic, str(longitude))
# Cerrar la conexión
client.disconnect()
# Código principal
if __name__ == '__main__':
# Establecer conexión con el GPS
gps = GPS() # Suponiendo que tienes una clase GPS definida
# Obtener la longitud del GPS
longitude = get_longitude()
# Enviar la longitud a Adafruit IO
send_to_adafruit(longitude)