Vamos a continuar con esta serie de introducción a este blog, en el día de hoy os traigo un ejemplo muy similar al anterior pero esta vez vamos a añadirle un sensor a nuestro circuito electrónico.
En mi caso usaré una resistencia dependiente de la luz o LDR que controlará el estado de un LED, como en la entrada anterior todo el proceso de control del circuito electrónico vendrá dado por un script en python al que comunicaremos con nuestro arduino.
Lista de materiales
- Una resistencia LDR
- Un diodo LED
- Un microcontrolador en mi caso el arduino UNO
- Una resistencia de 220Ω
- Una resistencia de 1kΩ
Comunicar sensores con python
El objetivo de este proyecto es el poder conectar diferentes sensores electrónicos, tales como detectores luminosidad, presencia, humo con nuestro ordenador, para ello escribiremos un script en python que nos permita recibir los datos provenientes de nuestro arduino y mandar una respuesta al mismo, en este caso usaremos una resistencia LDR , el valor analógico medido por nuestro controlador será enviado a nuestro PC y este actuará sobre la salida del LED cambiando su estado.
Esquema electrónico
A continuación te dejo el circuito esquemático que usaremos en este proyecto:
Código a ejecutar
'''
Script en python para controlar un LED mediante una resistencia LDR.
Este programa nos permite controlar el estado de un LED mediante la lectura
e interpretación de los valores recibidos por una LDR, esto es un ejemplo
básico donde el pricipal objetivo es el de poder enviar y recibir datos
del arduino a través del puerto serie
Autor: Alexdevrep
Fecha: 10/03/2024
Más contenido interesante en:
-Github: https://github.com/alexdevrep
-Instagram: https://www.instagram.com/alexdevrep/
-Mi blog de WordPress: https://eltallerdealexdevrep.000webhostapp.com/
'''
#Importamos las librerías necesarias
import serial
import time
# Iniciamos la conexión serial con el Arduino
arduino = serial.Serial('/dev/ttyACM0', 9600)
# Esperamos para que el Arduino se inicialice
time.sleep(2)
#Definimos la estructura de control de nuestro programa
while True:
#Declaramos la función que se encargará de enviar los datos al arduino
def sensor(value):
if value <20:
arduino.write(b'1')
elif value>20:
arduino.write(b'0')
# Esperamos a recibir datos del Arduino
if arduino.in_waiting > 0:
value = arduino.readline().decode('utf-8').strip()
value=int(value)
sensor(value) # Llamamos a la función previamente definida
time.sleep(1) # Esperamos un segundo antes de enviar el próximo dato
#Definimos la condición de salida del bloque
if value == 0:
print("No hay datos sufiencientes, cerrando el programa")
break
Y este es el código a compilar en nuestro IDE de Arduino:
/*
Script en python para controlar un LED mediante una resistencia LDR.
Este programa nos permite controlar el estado de un LED mediante la lectura
e interpretación de los valores recibidos por una LDR, esto es un ejemplo
básico donde el pricipal objetivo es el de poder enviar y recibir datos
del arduino a través del puerto serie
Autor: Alexdevrep
Fecha: 10/03/2024
Más contenido interesante en:
-Github: https://github.com/alexdevrep
-Instagram: https://www.instagram.com/alexdevrep/
-Mi blog de WordPress: https://eltallerdealexdevrep.com/
*/
// Definimos el pin de entrada e inicialñizamos su valor
int sensorLDR = A0;
int sensorValue = 0;
void setup()
{
// Inicializamos la comunicación serial
Serial.begin(9600);
// Declaramos el pin 2 como salida
pinMode(2, OUTPUT);
}
void loop()
{
// Leemos los datos del sensor y los guardamos en una variable
sensorValue = analogRead(sensorLDR);
// Imprimimos esos datos en el monitor serie y son enviados al script de python
Serial.println(sensorValue);
delay(1000);
// Comprobamos si hay datos disponibles para leer
if (Serial.available() > 0)
{
char receivedChar = Serial.read(); // Leemos el dato recibido
if (receivedChar == '1')
{
digitalWrite(2, HIGH);
}
else if (receivedChar == '0')
{
digitalWrite(2, LOW);
}
}
}
Vídeo del funcionamiento
A continuación te muestro un vídeo del funcionamiento de este proyecto:
Hasta aquí la entrada de hoy, ¿Qué te ha parecido? ¿Encuentras útil la posibilidad de comunicar sensores con el lenguaje Python? Para mí sin duda es genial, ya te mostraré los motivos en una entrada futura.Por el momento puedes consultar en mi blog la parte uno de arduino y python pinchando aquí. Recuerda que tienes más proyectos interesantes en mi perfil de GitHub. No olvides que puedes escribirme un comentario con todas tus dudas, estaré encantado de leerte 😀 Un saludo y hasta otra.