Mostrando entradas con la etiqueta electrónica. Mostrar todas las entradas
Mostrando entradas con la etiqueta electrónica. Mostrar todas las entradas

miércoles, 2 de marzo de 2022

Raspberry Pi - GPIO básico

Proyectos básicos

En este caso se presentarán 3 aplicaciones básicas en Raspberry Pi empleando diodos led, resistencias y pulsadores. Para el Raspberry Pi 4 modelo B, la distribución de sus 40 pines es:

EJERCICIO 01 - Encender y apagar un LED

El siguiente ejemplo encenderá un LED durante 5 segundos, luego lo apagará y así de forma consecutiva. Tener en cuenta que dependiendo del voltaje de funcionamiento del LED elegido se debe variar la resistencia para que este no resulte quemado y/o la luz se pueda apreciar.

Materiales:

  • Raspberry (Raspberry Pi 4 model B)
  • Led (Rojo con voltaje de 1.2v)
  • Protoboard
  • Cables dupont
  • Resistencia de 560 ohmnios

Diagrama de conexión:

Código

#Biblioteca GPIO para controlar los pines del Raspberry Pi
import RPi.GPIO as GPIO
#Biblioteca "time" útil para realizar pausas
import time

GPIO.setmode(GPIO.BCM)  #La numeración será según usar la numeración del chip BROADCOM
GPIO.setwarnings(False) #Se deshabilitan las advertencias cuando entramos en un bucle
GPIO.setup(21,GPIO.OUT) #Se indica que el PIN 21 es de salida

#Bucle infinito
while True:
    print("Encendido")        #Mensaje en pantalla
    GPIO.output(21,GPIO.HIGH) #El PIN 21 se enciende (HIGH)
    time.sleep(5)             #Se detiene 5 segundos
    print("Apagado")          #Mensaje en pantalla
    GPIO.output(21,GPIO.LOW)  #El PIN 21 se apaga (LOW)
    time.sleep(5)             #Se detiene 5 segundos
    GPIO.cleanup              #Se limpian los PINES

EJERCICIO 02 - Encender y apagar un LED con pulsador

El siguiente ejemplo encenderá un LED durante 5 segundos, luego lo apagará y así de forma consecutiva. Tener en cuenta que dependiendo del voltaje de funcionamiento del LED elegido se debe variar la resistencia para que este no resulte quemado y/o la luz se pueda apreciar.

Materiales:

  • Raspberry (Raspberry Pi 4 model B)
  • Led (Rojo con voltaje de 1.2v)
  • Protoboard
  • Pulsador
  • Cables dupont
  • Resistencia de 560 ohmnios

Diagrama de conexión:

Código

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
#Se indica expresamente que su estado por defecto es LOW (apagado)
GPIO.setup(21,GPIO.OUT,initial=GPIO.LOW)
#Se indica el PIN 20 como entrada. Además, configuración PULL DOWN
GPIO.setup(20,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)

while True:
    if GPIO.input(20): #Se evalúa si el boton es pulsado
        print("Pulsado")
        GPIO.output(21,GPIO.HIGH)
    else:
        GPIO.output(21,GPIO.LOW)
    GPIO.cleanup

EJERCICIO 03 - Encender y apagar un LED con pulsadores sin mantener presionado

El siguiente ejemplo encenderá un LED durante 5 segundos, luego lo apagará y así de forma consecutiva. Tener en cuenta que dependiendo del voltaje de funcionamiento del LED elegido se debe variar la resistencia para que este no resulte quemado y/o la luz se pueda apreciar.

Materiales:

  • Raspberry (Raspberry Pi 4 model B)
  • Led (Rojo con voltaje de 1.2v)
  • Pulsador
  • Protoboard
  • Cables dupont
  • Resistencia de 560 ohmnios

Diagrama de conexión:

Código

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(21,GPIO.OUT,initial=GPIO.LOW)
GPIO.setup(20,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
#Variable auxiliar
estado = False

while True:
    if GPIO.input(20):
        estado = not estado #Se invierte el valor si se presiona el botón
    if estado:
        print("Encendido")
        GPIO.output(21,GPIO.HIGH)
    else:
        print("Apagado")
        GPIO.output(21,GPIO.LOW)
    GPIO.cleanup

Plataforma Arduino

 Según la documentación oficial de Arduino:

"Arduino es una plataforma electrónica de código abierto basada en hardware y software fáciles de usar. Las placas Arduino pueden leer entradas (luz en un sensor, un dedo en un botón o un mensaje de Twitter) y convertirlo en una salida: activar un motor, encender un LED, publicar algo en línea. Puede decirle a su placa qué hacer enviando un conjunto de instrucciones al microcontrolador en la placa. Para ello se utiliza el lenguaje de programación Arduino (basado en Wiring ), y el Software Arduino (IDE) , basado en Processing."

Las ventajas que ofrece Arduino frente a otras plataformas es el costo al ser en comparación más baratas que otras, su IDE es multiplataforma (sistemas operativos Windows, Mac y Linux), el IDE es basado en Processing empleando el lenguaje C++ que permite agregar nuevas bibliotecas y expandír aún más la cantidad de componentes y sistemas con los que puede interactuar. Finalmente, tanto el hardware como el software es abierto y extensible.

Modelos de Arduino

Arduino UNO

Características

  • Voltaje de entrada: 6v - 20v
  • Voltaje recomendado: 7v - 12v
  • Voltaje de operación: 5v
  • Pines digitales de entrada y salida: 14 (6 con salida PWM)
  • Pines análogos de entrada y salida: 6
  • Dimensiones: 68.6 mm por 53.4 mm

Arduino NANO

Características

  • Voltaje de entrada: 7v - 12v
  • Voltaje de operación: 5v
  • Pines digitales de entrada y salida: 22 (6 con salida PWM)
  • Pines análogos de entrada y salida: 8
  • Dimensiones: 18 mm por 45 mm

Arduino MEGA

Características

  • Voltaje de entrada: 6v - 20v
  • Voltaje recomendado: 7v - 12v
  • Voltaje de operación: 5v
  • Pines digitales de entrada y salida: 54 (15 con salida PWM)
  • Pines análogos de entrada y salida: 16
  • Dimensiones: 101.52 mm por 53.3 mm

Existen otros modelos como:

  • Arduino Zero
  • Arduino Due
  • Arduino Leonardo
  • Arduino Micro
  • Arduino Yún

Cada uno con sus características propias y variantes. Además, de otros modelos orientados a IoT como el Arduino MKR

Fuentes:

domingo, 30 de mayo de 2021

Arduino y Processing - Encender y apagar un LED

 Diagrama de conexión


Código en Arduino

const int LED = 5;
char dato;

void setup() {
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
}

void loop() {
  if (Serial.available() > 0)
  {
    dato = Serial.read();
    if (dato == 'E') {
      digitalWrite(LED, HIGH);
    } else {
      digitalWrite(LED, LOW);
    }
  }
}

Código en Processing

import processing.serial.*;

Serial port;
String TITULO="Control de LED - Arduino";
PFont font;
int qx=150;
int qy=150;
int qr=50;
boolean state = false;
String texto;

void setup()
{  
  //println(Serial.list()); 
  port = new Serial(this, Serial.list()[0], 9600);
  size(300, 300);   
  font = createFont("Arial", 20, true);
  frameRate(10);
}

void draw()
{
  background(220, 220, 220); 
  textFont(font, 20);
  fill(0);
  textAlign(CENTER);
  text(TITULO, width/2, 60);

  fill(0);  
  stroke(0, 255, 0);

  if (mouseX > qx-qr  && mouseX < qx+qr && 
    mouseY > qy-qr && mouseY < qy+qr && mousePressed) {
    state=!state;
  }
  noStroke();
  if (state) {  
    fill(0, 0, 255);
    texto="ON";
    port.write('E');
  } else {  
    fill(255, 0, 0);
    texto="OFF";
    port.write('A');
  }  
  rectMode(RADIUS);
  rect(qx, qy, qr, qr);
  fill(0);
  text(texto, 150, 150);
}

Interfaz gráfica