El toque capacitivo es un medio simple para detectar la entrada del usuario midiendo la constante dieléctrica. Si es diferente a una medición de referencia, entonces se puede usar como entrada. En el pasado, hemos utilizado un Sensor táctil MPR121 para activar un evento usando un Raspberry Pi Pico. El MPR121 es un sensor Stemma QT confiable que viene en varios factores de forma para pinzas de cocodrilo y calibres de cable estándar. Nos encanta tanto que lo ponemos en nuestra lista de la mejor página de complementos de Stemma QT y Grove. Pero, ¿hay alguna manera de hacerlo sin usar una placa de sensores?
Con solo un trozo de cable y una resistencia de 1 Mega Ohm en una banana, podemos crear nuestra propia interfaz táctil y tener un refrigerio saludable. En este tutorial, usaremos el plátano para encender y apagar un LED.
¿Por qué algo tan simple? Aprender a encender/apagar un LED es la mejor manera de comprender cómo funciona cada parte de su proyecto. Claro que podríamos convertir el plátano en una barra espaciadora y jugar pájaros voladores, utilícelo para abrir una ventana del navegador y haga «Rick-roll» a un amigo o inicie un robot para hacer una carrera loca hacia la puerta. Pero antes de que podamos hacer eso, debemos entender cómo y por qué funcionan las cosas, y el humilde LED es una forma económica y fácil de hacerlo.
Para este proyecto necesitarás
Construyendo el circuito
Hay dos partes en el circuito: la entrada y la salida. La entrada es una banana (opcional), conectada a GPIO 16 en el Raspberry Pi Pico mediante un cable de puente largo. GPIO 16 también tiene un Resistencia de 1 megaohmio para conectarlo a GND. Esta es una resistencia pulldown y asegura que el pin GPIO vea una referencia constante de 0V. Sin él, la entrada sería errática. Este proceso se puede repetir para múltiples entradas, sus únicos límites son los pines GPIO, resistencias de 1 Mega Ohm y bananas.
La salida es un LED simple con la pata larga (ánodo) conectada a GPIO 15 y la pata corta (cátodo) conectada a GND a través de una resistencia de 100 ohmios.
El plátano se puede reemplazar con cualquier cosa que sea conductora. Se pueden utilizar papel de aluminio, plastilina y otras frutas/verduras como insumos. También puede renunciar a los insumos culinarios por cables desnudos. En ciertos casos esto funciona mejor.
Construya el circuito y verifique dos veces sus conexiones antes de continuar.
Configuración de CircuitPython
Elegimos CircuitPython para este proyecto por dos razones clave. Uno, es tan fácil de usar y entender. Nuestro código es fácil de leer, depurar y podemos escribirlo en cualquier dispositivo, incluso un Chromebook. Dos, CircuitPython tiene el módulo Touchio que facilita la creación de entradas táctiles usando GPIO. Pero antes de que podamos comenzar el proyecto, debemos escribir la última versión de CircuitPython en Raspberry Pi Pico.
1. Vaya a la página oficial de CircuitPython para el Frambuesa Pi Pico y descargue la última versión de la imagen del firmware UF2. En el momento de escribir esto, esto era CircuitPython 8.10. Hemos elegido Raspberry Pi Pico porque no necesitamos Wi-Fi, pero este proyecto podría usarse para activar un evento web, para eso necesitará un frambuesa pi pico w.
2. Mientras mantiene presionado el botón BOOTSEL, conecte el Raspberry Pi Pico a su computadora. Aparecerá una nueva unidad, RPI-RP2.
3. Copie el archivo CircuitPython UF2 descargado a RPI-RP2. Esto escribirá CircuitPython en el almacenamiento flash interno del Pico. Aparecerá una nueva unidad, CIRCUITPY.
Escribir el código
Para escribir el código, usamos Thonny en Windows 10. Puede usar el editor de texto que elija, pero Thonny tiene una excelente integración con CircuitPython (y MicroPython), lo que hace que sea muy fácil de usar. Lo mejor de todo es que es gratis y fácil de instalar en dispositivos Windows, macOS y Linux.
Escribir el código
1. Descargar e instalar Thonny si no lo tienes ya. Thonny es un editor de Python que cubre Python 3, MicroPython y CircuitPython.
2. Abra Thonny y vaya a Herramientas >> Opciones.
3. Seleccione Intérprete, luego configure el intérprete como CircuitPython, transfiéralo a automático y haga clic en Aceptar. Thonny ahora se conectará al Pico que ejecuta CircuitPython.
4. Haga clic en Archivo >> Abrir y seleccione el dispositivo CircuitPython. Luego seleccione código.py. CircuitPython utiliza Code.py como el archivo principal de un proyecto. Está configurado para ejecutarse automáticamente cuando se enciende el Pico.
5. Elimina cualquier código en code.py. Si necesita el código, asegúrese de hacer una copia de seguridad en su computadora.
6. Importa cuatro módulos de código necesarios para que el proyecto funcione. Touchio se usa para crear una entrada táctil capacitiva usando un pin GPIO. El tiempo controla cuánto tiempo se detendrá el código entre acciones. La placa se usa para trabajar con el GPIO, importar usando * significa que no tenemos que incluir el nombre del módulo. Digitalio se utiliza para controlar el estado de un pin. Puede ser una entrada o una salida.
import touchio
import time
from board import *
from digitalio import DigitalInOut, Direction
7. Cree un objeto, led y configure el pin GPIO en GP15, y luego configúrelo para que sea una salida. Esto asegurará que cuando se active el LED, la corriente fluirá desde el pin GPIO 15 al ánodo del LED. Como el cátodo está conectado a GND a través de la resistencia de 100 ohmios, el circuito completo encenderá el LED.
led = DigitalInOut(GP15)
led.direction = Direction.OUTPUT
8. Cree un objeto, led_state y almacene el valor entero 0 dentro de él. Este objeto se utilizará para registrar el estado actual del LED. Puede estar desactivado (0) o activado (1).
led_state = 0
9. Crear un objeto, touch_pin para hacer una conexión entre el código y el pin GPIO físico.
touch_pin = touchio.TouchIn(GP16)
10 Cree un bucle para ejecutar continuamente el código.
while True:
11 Dentro del ciclo, cree una función de impresión que informará el estado actual del pin de entrada táctil. Usamos %s para usar el valor almacenado en touch_pin.value y convertirlo en una cadena para concatenar con el texto.
print("The pin state is %s" % touch_pin.value)
12 Escriba una prueba condicional para comprobar si se ha tocado la entrada y si el LED está apagado. Ambas pruebas tienen que pasar para que pase la prueba condicional.
if touch_pin.value == True and led_state == False:
13 Configure el LED para que se encienda, luego actualice el objeto led_state a 1, para que el código sepa que el LED está encendido. Dormir medio segundo para evitar rebotes accidentales (doble pulsación). Este código solo se ejecutará si pasa la prueba condicional.
led.value = True
led_state = 1
time.sleep(0.5)
14 Cree una prueba condicional para comprobar si se ha tocado la entrada y si el LED está actualmente encendido. Este código apagará el LED.
elif touch_pin.value == True and led_state == True:
15. Apague el LED, actualice el objeto led_state para que el código sepa que el LED está apagado, y luego pausa de medio segundo.
led.value = False
led_state = 0
time.sleep(0.5)
dieciséis. Fuera de las pruebas condicionales, pero aún dentro del bucle, pausa el código durante 0,1 segundos. Cada vez que el ciclo itera, se detendrá durante 0,1 segundos, esto es útil para marcar el ritmo del código del proyecto.
time.sleep(0.1)
17 Guarde el código en code.py en el dispositivo CircuitPython (Frambuesa Pi Pico).
18. El código debería ejecutarse automáticamente, si no haga clic en Detener y luego en Ejecutar.
19 Toca la banana para encender o apagar el LED.
Listado completo de códigos
import touchio
import time
from board import *
from digitalio import DigitalInOut, Direction
led = DigitalInOut(GP15)
led.direction = Direction.OUTPUT
led_state = 0
touch_pin = touchio.TouchIn(GP16)
while True:
print("The pin state is %s" % touch_pin.value)
if touch_pin.value == True and led_state == False:
led.value = True
led_state = 1
time.sleep(0.5)
elif touch_pin.value == True and led_state == True:
led.value = False
led_state = 0
time.sleep(0.5)
time.sleep(0.1)