import network, time, _thread, random
from machine import Pin, ADC
from utelegram import Bot
from utime import sleep, sleep_ms
TOKEN = '6017546862:AAHmnMc9Q2Uj9_tlLkfx9b8C06Ed_R3tXyI'
bot = Bot(TOKEN)
led1 , led2, led3 = Pin(2, Pin.OUT), Pin(4, Pin.OUT), Pin(16, Pin.OUT)
ldr = ADC(Pin(36))
ldr.width(ADC.WIDTH_10BIT)
ldr.atten(ADC.ATTN_11DB)
lvw = ADC(Pin(39))
lvw.width(ADC.WIDTH_10BIT)
lvw.atten(ADC.ATTN_11DB)
br = ADC(Pin(34))
br.width(ADC.WIDTH_10BIT)
br.atten(ADC.ATTN_11DB)
Relay = Pin(15, Pin.OUT)
def conectaWifi(red, password):
global miRed
miRed=network.WLAN(network.STA_IF)
if not miRed.isconnected():
miRed.active(True)
miRed.connect(red, password)
print('connecting to', red +'...')
timeout=time.time()
while not miRed.isconnected():
if (time.ticks_diff (time.time (), timeout)>10):
return False
return True
if conectaWifi("Wokwi-GUEST", ""):
print('network config:', miRed.ifconfig())
print("conexion exitosa")
@bot.add_message_handler('Hola')
def help(update):
update.reply('''¡Bienvenido a Natural Detector!
¡Hola! Soy tu chatBot de Telegram, y estoy aquí para guiarte en tu experiencia en nuestra maqueta de playa a escala. Conectado a sensores de luz, vibración y nivel de agua, estoy preparado para brindarte información y responder a tus preguntas.
En este hermoso espacio virtual, podrás explorar y aprender sobre los diferentes aspectos de una playa. Desde la cantidad de luz solar que se refleja en la arena hasta las olas que rompen en la orilla, nuestra maqueta ofrece una experiencia inmersiva y educativa.
Si tienes curiosidad acerca de cómo funcionan los sensores o deseas obtener información detallada sobre algún fenómeno natural en particular, no dudes en preguntarme. Estoy aquí para ayudarte y proporcionarte datos interesantes sobre el ambiente costero.
Disfruta de tu visita a nuestra maqueta de playa y aprovecha al máximo esta oportunidad de aprender y divertirte. ¡No dudes en hacerme preguntas en cualquier momento! Estoy aquí para acompañarte en esta experiencia única.
¡Que tengas un fantástico día junto al mar!''')
@bot.add_message_handler('LDR')
def Luz(update):
update.reply('''El sensor de luz de Arduino es un dispositivo que permite medir la intensidad de la luz presente en su entorno. El sensor más comúnmente utilizado es el LDR (Light Dependent Resistor o resistor dependiente de luz), también conocido como fotocélula.
El LDR es un componente electrónico cuya resistencia varía en función de la cantidad de luz que incide sobre él. Cuanta más luz recibe, menor es su resistencia y viceversa. El sensor de luz de Arduino utiliza esta propiedad para detectar cambios en la intensidad lumínica y convertirlos en señales eléctricas que el microcontrolador puede leer y procesar.''')
@bot.add_message_handler('Vibración')
def Luz(update):
update.reply('''El sensor de vibración de Arduino es un dispositivo utilizado para detectar movimientos o vibraciones en su entorno. También se le conoce como sensor de choque o sensor de aceleración.
El sensor de vibración generalmente contiene un elemento piezoeléctrico que genera una señal eléctrica cuando se somete a una vibración o movimiento. Arduino puede utilizar esta señal para detectar y procesar la información sobre la vibración.''')
def lectura_sensores():
while True:
global lectura
lectura = ldr.read()
global lectura2
lectura2 = lvw.read()
global lectura3
lectura3 = br.read()
if lectura > 220:
led1.value(1)
led2.value(0)
led3.value(0)
elif lectura < 220 and lectura > 50:
led1.value(0)
led2.value(1)
led3.value(0)
elif lectura < 50:
led1.value(0)
led2.value(0)
led3.value(1)
print("Nivel de Sol: {}" .format(lectura))
print("Nivel de Agua: {}" .format(lectura2))
print("Movimiento: {}" .format(lectura3))
sleep(1)
_thread.start_new_thread(lectura_sensores,())
@bot.add_message_handler('Luz')
def Luz(update):
Relay.value(1)
update.reply("SE HIZO LA LUZ")
sleep(20)
Relay.value(0)
@bot.add_message_handler('Temblor')
def Luz(update):
if lectura3 > 1000:
update.reply("Esta temblando")
else:
update.reply("No esta temblando")
@bot.add_message_handler('Sol')
def sol(update):
if lectura > 220:
update.reply("Nivel de Sol no dañino")
elif lectura < 220 and lectura > 50:
update.reply("Nivel de Sol medio, se recomienda uso de bloqueador")
elif lectura < 50:
update.reply("Nivel de Sol dañino, se recomienda no estar expuesto a este")
bot.start_loop()
else:
print("Imposible conectar")
miRed.active(False)