Tabla de contenido:
- Suministros
- Paso 1: Configuración del sistema operativo Raspberry Pi 3/4
- Paso 2: Descarga, configuración y ejecución de las bibliotecas necesarias del panel LED RGB
- Paso 3: compilar, configurar y probar la aplicación GUI de Ledboard Pi
- Paso 4: instalación y configuración del punto de acceso WiFi
- Paso 5:
Video: Ledboard Pi: 5 pasos (con imágenes)
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-03 02:59
La pantalla Ledboard Pi es el resultado de años de experiencia, aprendizaje y desarrollo; pero también, el resultado de tener las herramientas adecuadas (hardware, software, firmware) en este momento adecuado: Raspberry Pi 4 (con Raspberry Pi 3 también funciona) con su velocidad, memoria y capacidad inalámbrica, el maravilloso proyecto Raspberry Pi LED Matrix Display basado en las bibliotecas rpi-rgb-led-matrix y rpi-fb-matrix (para manejar muchos paneles LED RGB comerciales a través de GPIO) para mostrar la salida de video de Raspberry Pi en una gran pantalla de matriz LED RGB (para este instructable, la resolución es 96x64 usando 6 paneles Sparkfun 32x32). Todo esto se controla con una aplicación GUI programada usando lazarus ide en un escritorio openbox muy liviano instalado sobre una imagen de Raspbian Buster Lite y, finalmente, muestra lo que sea que tu imaginación pueda programar: un marcador multideportivo, una señalización digital o un reproductor de video.; No hay límites. Este proyecto, controlado por cualquier computadora, es capaz de ejecutar VNC Viewer, porque el servidor VNC también está instalado en Rasbian Buster Lite de Raspberry Pi 4.
A partir de mañana, intentaré explicar en detalle cada paso para que este proyecto funcione.
Suministros
Necesitamos para este proyecto:
Hardware
- Una Raspberry Pi 3 o mejor, Raspberry Pi 4 con su fuente de alimentación de 5 V y 2,5 A
- Una placa de unidad de panel de matriz LED RGB Electrodragon para Raspberry Pi
- Seis paneles LED 32x32 RGB de Sparkfun
- Una fuente de alimentación de 40 A y 5 V
- Un marco rectangular de aluminio de 3 metros de 82,5 mm x 38 mm
- Un corte de acrílico tamaño 576 mm x 384 mm A
- Un corte de película polarizada
Software
- biblioteca hezeller rpi-rgb-led-matrix
- Biblioteca Adafruit rpi-fb-matrix
- Imágenes de raspbian buster lite o realtimepi-buster-lite
- Abrir caja
- Para control de pc / laptop / Raspberry Pi 3 o 4, Real VNC Viewer para Windows o Linux o Raspbian
- Lazarus IDE para raspbian buster lite
- Aplicación Leboard Pi
continuará…
Paso 1: Configuración del sistema operativo Raspberry Pi 3/4
Una vez que tenemos las partes de hardware, necesitamos obtener las cosas del sistema operativo:
Primero, debemos obtener el sistema operativo para Raspbian 3/4. en mi caso, decido usar buster lite en tiempo real; pero también puede utilizar la versión Raspbian Buster Lite. Luego, debe transferir esta imagen a una tarjeta micro SD usando balenaEtcher.
Luego, necesitamos conectar una pantalla HDMI y un teclado USB y un cable de red cat5 conectado a
Raspberry Pi 3/4 RJ45; Entonces, podemos buscar la IP de Raspberry Pi 3/4 para realizar la configuración inicial: IP de red, cableada e inalámbrica. Usé el escáner de ip avanzado. Ahora, a través de raspi-config, active el servidor SSH para conectarse de forma remota usando Putty para completar el resto de la configuración de Ledboard Pi.
Ahora, sobre la versión lite, vamos a instalar un entorno de escritorio ligero con openbox.
sudo apt-get install --no-install-recomienda xserver-xorg x11-xserver-utils xinit openbox
Luego, instale lightdm (administrador de inicio de sesión)
sudo apt-get install lightdm
Activar realvncserver desde raspi-config
sudo raspi-config> Opciones de interfaz> vncserver> activar vncserver
Aquí, una vez activado el vnceserver, usaremos VNC Viewer. En este, el escritorio a configurar en la conexión es 0, ej. Si la IP es 192.168.100.61, la conexión es "192.168.100.61:0"
Necesitamos un enlace entre la computadora / computadora portátil de control y el Ledboard Pi, por lo que es necesario instalar samba para transferir el código fuente, archivos, imágenes, videos, etc
sudo apt-get install samba samba-common-bin -y
Asegúrese de que su usuario sea el propietario de la ruta que está intentando compartir a través de Samba
sudo chown -R pi: pi / home / pi / share
Tome una copia del archivo compartido original de samba
sudo cp /etc/samba/smb.conf /etc/samba/smb.bak
Edite el archivo de configuración de samba
sudo nano /etc/samba/smb.conf
Deje el grupo de trabajo como WORKGROUP (o asígnele el nombre que desee)
#wins support = no
para ganar apoyo = sí
Luego ….
# Este es el nombre de la carpeta compartida con la que se mostrará cuando navegue
[ledboardpi] comentario = ledboardPi ruta de carpeta compartida = / home / pi / Compartir crear máscara = 0775 máscara de directorio = 0775 solo lectura = no navegable = sí público = sí forzar usuario = pi solo invitado = no
Ahora, podemos acceder a la carpeta "home / pi / share" en la ruta / home / pi desde otra computadora.
Para administrar el sistema de archivos usando una aplicación de interfaz gráfica de usuario, vamos a instalar pcmanfm
sudo apt-get install pcmanfm
Paso 2: Descarga, configuración y ejecución de las bibliotecas necesarias del panel LED RGB
Primero, instale los requisitos previos
sudo apt-get update
sudo apt-get install -y build-essential git libconfig ++ - dev sudo apt-get install libgraphicsmagick ++ - dev libwebp-dev -y sudo apt-get install python2.7-dev python-pillow -y
Luego, descargue y compile hzeller rpi-rgb-led-matrix
wget
descomprimir master.zip cd rpi-rgb-led-matrix-master / && make
Además, descargue e instale rpi-fb-matrix
Debe clonar este repositorio con la opción recursiva para que también se clonen los submódulos necesarios. Ejecute este comando:
clon de git --recursivo
hacer
Nota: reemplace la biblioteca rpi-rgb-led-matrix descargada anteriormente en la carpeta rpi-fb-matrix
Ahora, vamos a probar esas bibliotecas, recuerde, rpi-fb-matrix depende de rpi-rgb-led-matrix
cd rpi-fb-matriz
cd rpi-rgb-led-matrix sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led- no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 0 sudo./demo --led-chain = 3 --led-parallel = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh - led-brillo = 80 -D 1 runtext.ppm sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" - -led-no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 2 runtext.ppm sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led -show-refresh --led-shine = 80 -D 3 sudo./demo --led-chain = 3 --led-parallel = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = " regular "--led-no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 4 sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 5 sudo./demo --led-chain = 3 --led-paralelo = 2 --led- slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 6 sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 7 sudo./demo --led-chain = 3 --led-parallel = 2 --led- slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 8 sudo./demo --led-chain = 3 --led-paralelo = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 9 sudo./demo --led-chain = 3 --led-pa rallel = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" --led-sin-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 10 sudo./demo --led-chain = 3 --led-parallel = 2 --led-slowdown-gpio = 4 --led-gpio-mapping = "regular" - led-no-hardware-pulse --led-pwm-lsb-nanoseconds = 180 --led-show-refresh --led-shine = 80 -D 11
Todo funciona bien.
Ahora, la biblioteca rpi-fb-matrix. Esto mostrará una parte (96x64) de la pantalla en los paneles LED RGB basados en Ledboard Pi
cd / home / pi / rpi-fb-matrix
RECUERDE, copie la última versión de la biblioteca rpi-rgb-led-matrix en la carpeta rpi-fb-matrix. MUY IMPORTANTE
hacer limpia
Haz todo
Esos últimos comandos, para las bibliotecas rpi-fb-matrix y rpi-rgb-led-matrix…..
Para el rpi-fb-matrix es necesaria una configuración correcta de matrix.cfg (renombré davenew.cfg para este instructable), lea, analice para proyectos personalizados con diferente número de paneles LED RGB …
Configuración de pantalla de matriz de LED // Defina todo el ancho y alto de la pantalla en píxeles. // Este es el _total_ ancho y alto del rectángulo definido por todos los // paneles encadenados. El ancho debe ser un múltiplo del ancho de píxeles del panel (32), // y la altura debe ser un múltiplo de la altura de píxeles del panel (8, 16 o 32). display_width = 96; display_height = 64; // Defina el ancho de cada panel en píxeles. Siempre debería ser 32 (pero // en teoría se puede cambiar). ancho_panel = 32; // Define la altura de cada panel en píxeles. Suele ser 8, 16 o 32. // NOTA: ¡Cada panel de la pantalla _debe_ tener la misma altura! No puede mezclar // paneles de 16 y 32 píxeles de alto, por ejemplo. altura_panel = 32; // Defina el número total de paneles en cada cadena. Cuente todos los // paneles que estén conectados y ponga ese valor aquí. Si está utilizando // múltiples cadenas paralelas, cuente cada una por separado y elija el valor // más grande para esta configuración. longitud_cadena = 3; // Defina el número total de cadenas paralelas. Si usa Adafruit HAT, // solo puede tener una cadena, así que quédese con el valor 1. El Pi 2 puede admitir hasta // hasta 3 cadenas paralelas, consulte la biblioteca rpi-rgb-led-matrix para obtener más información: // https://github.com/hzeller/rpi-rgb-led-matrix#chaining-parallel-chains-and-coordinate-system paralelo_count = 2; // Configure cada panel de matriz de LED. // Esta es una matriz bidimensional con una entrada para cada panel. La matriz // define la cuadrícula que subdividirá la pantalla, por lo que, por ejemplo, una pantalla de tamaño 64x64 // con paneles de 32x32 píxeles sería una matriz de configuraciones de panel de 2x2. // // Para cada panel debe establecer el orden en el que está dentro de su cadena, es decir, el // primer panel de una cadena es order = 0, el siguiente es order = 1, etc. También puede // establecer un rotación para cada panel para tener en cuenta los cambios en la orientación del panel // (como cuando 'serpentea' una serie de paneles de un extremo a otro para tramos de cable más cortos). // // Por ejemplo, la siguiente configuración define esta pantalla de cuadrícula de paneles y // su cableado (comenzando desde el panel superior derecho y serpenteando hacia la izquierda, hacia abajo y // hacia la derecha hasta el panel inferior derecho): // _ _ _ / / | Panel | | Panel | | Panel | // | orden = 2 | <= | orden = 1 | <= | order = 0 | <= Cadena 1 (de Pi) // | rotar = 0 | | rotar = 0 | | rotar = 0 | // | _ | | _ | | _ | // _ _ _ // | Panel | | Panel | | Panel | // | orden = 2 | <= | orden = 1 | <= | order = 0 | <= Cadena 2 (de Pi) // | rotar = 0 | | rotar = 0 | | rotar = 0 | // | _ | | _ | | _ | // // Observe que la cadena comienza en la parte superior derecha y serpentea hacia la parte inferior // derecha. El orden de cada panel se establece como su posición a lo largo de la cadena, // y la rotación se aplica a los paneles inferiores que están volteados con respecto // a los paneles encima de ellos. // // No se muestra, pero si usa cadenas paralelas, puede especificar para cada entrada // en la lista de paneles un 'paralelo = x;' opción donde x es el ID de una // cadena paralela (0, 1 o 2). paneles = (({orden = 2; rotar = 0; paralelo = 0;}, {orden = 1; rotar = 0; paralelo = 0;}, {orden = 0; rotar = 0; paralelo = 0;}, { orden = 2; rotar = 0; paralelo = 1;}, {orden = 1; rotar = 0; paralelo = 1;}, {orden = 0; rotar = 0; paralelo = 1;})) // Por defecto el La herramienta rpi-fb-matrix cambiará el tamaño y reducirá la pantalla // para adaptarse a la resolución de los paneles de visualización. Sin embargo, puede tomar // una copia específica de píxeles perfectos de una región de la pantalla configurando las coordenadas x, y // de píxeles de la pantalla a continuación. Se copiará un rectángulo del tamaño exacto de la pantalla // (es decir, display_width x display_height píxeles) de la pantalla // comenzando en las coordenadas x, y proporcionadas. Comente esto para deshabilitar // este comportamiento de recorte y, en su lugar, cambie el tamaño de la pantalla hasta la visualización de la matriz. crop_origin = (0, 0)
Paso 3: compilar, configurar y probar la aplicación GUI de Ledboard Pi
Necesitamos un IDE de programación para crear una aplicación GUI (Ledboard Pi). Luego, elijo "Lazarus IDE" muy similar a Delphi / C ++ Builder que usé en el sistema operativo Windows
sudo apt-get install lazarus-ide
Una vez instalado, simplemente ejecute:
lazarus-ide
Abriendo el proyecto Ledboard Pi, luego compílelo para obtener la aplicación Ledboard Pi. Antes de abrir esta aplicación, cree un directorio llamado LEDBOARD_APP en la ruta / home / pi, luego copie la aplicación Ledboard Pi en este
Ahora, vamos a agregar un enlace en el menú contextual del cuadro abierto. Cómo, necesitamos el obmenu, también xterm usando el enlace Putty, entonces:
sudo apt-get install obmenu xterm
Ahora, podemos usar la terminal y el obmenu dentro de la ventana de vncviewer:
- Llamar a xterm desde el menú contextual
- Abrir obmenu desde xterm
Agregar nuevo artículo: Ledboard Pi
- Elija Nuevo artículo
- nombrarlo Ledboard Pi
- ejecutar sudo nice -n -15 / home / pi / LEDBOARD_APP / LEDBOARD
- Descargue el "horn. WAV", luego, usando la ubicación de samba vinculada a la red "\ ledboardpi / ledboardpi \" cópielo y cámbiele el nombre al entorno realtimePi como "horn.wav". Este archivo, una vez renombrado, debe copiarse en la carpeta / home / pi.
- Hecho, debe poder ejecutar Ledboard Pi tan bien como ve en videos e imágenes.
Paso 4: instalación y configuración del punto de acceso WiFi
Este proyecto fue diseñado para ejecutarse usando el visor realvnc desde una computadora portátil conectada de forma inalámbrica a la Raspberry Pi 3/4. Entonces, este es el paso final para que funcione y diga "hasta la vista baby" a la pesadilla cableada.
Configuración del software
sudo apt-get update
sudo apt-get install hostapd isc-dhcp-server
servidor DHCP
Sea prudente y siempre haga una copia de seguridad de la configuración predeterminada
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.default
Edite el archivo de configuración predeterminado
sudo nano /etc/dhcp/dhcpd.conf
Comenta las siguientes líneas …
opción nombre-dominio "ejemplo.org";
opción servidores de nombres de dominio ns1.example.org, ns2.example.org;
leer:
#option nombre-dominio "ejemplo.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
… y descomentar esta línea
#autoritario;
… leer:
autoritario;
… desplácese hacia abajo en la parte inferior del archivo y escriba las siguientes líneas:
subred 192.168.42.0 máscara de red 255.255.255.0 {
rango 192.168.42.10 192.168.42.50; opción dirección de transmisión 192.168.42.255; enrutadores opcionales 192.168.42.1; tiempo de arrendamiento predeterminado 600; tiempo máximo de arrendamiento 7200; opción nombre de dominio "local"; opción servidores de nombres de dominio 8.8.8.8, 8.8.4.4; }
Configuremos wlan0 para IP estática
Primero, apáguelo …
sudo ifdown wlan0
… manténgalo seguro y cree un archivo de respaldo:
sudo cp / etc / network / interfaces /etc/network/interfaces.backup
… Edite el archivo de interfaces de red:
sudo nano / etc / network / interfaces
… Edite en consecuencia para leer:
directorio-fuente /etc/network/interfaces.d
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 iface wlan0 inet dirección estática 192.168.42.1 netmask 255.255.255.0 post-up iw dev $ IFACE set power_save off
… cierra el archivo y asigna una IP estática ahora
sudo ifconfig wlan0 192.168.42.1
Hecho…
Hostapd
Crea un archivo y edítalo:
sudo nano /etc/hostapd/hostapd.conf
Modifique ssid con un nombre de su elección y wpa_passphrase a una autenticación WiFi
interfaz = wlan0
ssid = LedboardPi hw_mode = g canal = 6 macaddr_acl = 0 auth_algs = 1 ignore_broadcast_ssid = 0 wpa = 2 wpa_passphrase = davewarePi wpa_key_mgmt = WPA-PSK wpa_pairwise = TKIP rsn_pairwise = CCMP
Configuremos la traducción de la dirección de red
Crea un archivo de respaldo
sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup
editar el archivo de configuración
sudo nano /etc/sysctl.conf
… Descomentar o agregar al final:
net.ipv4.ip_forward = 1
# … y actívelo inmediatamente:
sudo sh -c "echo 1> / proc / sys / net / ipv4 / ip_forward"
… modificar las iptables para crear una traducción de red entre eth0 y el puerto wifi wlan0
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELACIONADO, ESTABLECIDO -j ACEPTAR sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
… haz que esto suceda al reiniciar ejecutando
sudo sh -c "iptables-save> /etc/iptables.ipv4.nat"
… y editando de nuevo
sudo nano / etc / network / interfaces
… agregando al final:
hasta iptables-restore </etc/iptables.ipv4.nat
Nuestro archivo / etc / network / interfaces ahora se verá así:
directorio-fuente /etc/network/interfaces.d
auto lo
iface lo inet loopback allow-hotplug eth0 iface eth0 inet dirección estática 192.168.100.61 máscara de red 255.255.255.0 puerta de enlace 192.168.100.1 allow-hotplug wlan0 iface wlan0 inet dirección estática 192.168.42.1 máscara de red 255.255.255.0 red 192.168.42.0 difusión 192.168.42.255 fuente- directorio /etc/network/interfaces.d
Probemos nuestro punto de acceso ejecutando:
sudo / usr / sbin / hostapd /etc/hostapd/hostapd.conf
Su hotspot está en funcionamiento: intente conectarse a él desde una computadora o un teléfono inteligente. Cuando lo haga, también debería ver alguna actividad de registro en su terminal. Si está satisfecho, deténgalo con CTRL + C
Limpiemos todo: sudo service hostapd start sudo service isc-dhcp-server start
… y asegúrese de que estemos en funcionamiento:
sudo service hostapd status
sudo service isc-dhcp-server status
… configuremos nuestros demonios para que se inicien en el momento del arranque:
sudo update-rc.d hostapd habilitar
sudo update-rc.d isc-dhcp-server enable sudo systemctl unmask hostapd sudo systemctl unmask isc-dhcp-server
… Reinicia el pi
sudo reiniciar
Ahora debería poder ver su pi WiFi, conectarse y acceder a Internet. Como comparación rápida, la transmisión de videos 4k consumirá aproximadamente el 10% de la CPU pi, así que … utilícelo en consecuencia.
Como beneficio adicional, si desea verificar lo que está sucediendo en su punto de acceso WiFi, consulte el archivo de registro:
tail -f / var / log / syslog
Paso 5:
El caso.
Diseño
Para esta parte, utilicé el programa de diseño SketchUp 3D. Diseño 3D de la caja de aluminio de Ledboard Pi
Para ello, utilicé perfiles de aluminio rectangulares comunes de 82,5 mm x 38 mm, algunos ángulos y algunos tornillos. El apoyo fue fundado por mi Madre en la calle, en vano. Tiene ruedas como se muestra en las imágenes.
Recomendado:
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática Este / Oeste: 11 pasos (con imágenes)
Oficina con pilas. Sistema solar con paneles solares y turbina eólica con conmutación automática de este a oeste: El proyecto: Una oficina de 200 pies cuadrados debe funcionar con baterías. La oficina también debe contener todos los controladores, baterías y componentes necesarios para este sistema. La energía solar y eólica cargará las baterías. Hay un pequeño problema de solo
Cómo: Instalación de Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: 7 pasos (con imágenes)
Cómo: Instalar Raspberry PI 4 Headless (VNC) con Rpi-imager e imágenes: planeo usar este Rapsberry PI en un montón de proyectos divertidos en mi blog. No dudes en comprobarlo. Quería volver a usar mi Raspberry PI, pero no tenía un teclado ni un mouse en mi nueva ubicación. Ha pasado un tiempo desde que configuré una Raspberry
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: 6 pasos (con imágenes)
Inteligencia artificial y reconocimiento de imágenes con HuskyLens: ¡Hola, chicos! Akarsh aquí de CETech. En este proyecto, vamos a echar un vistazo a HuskyLens de DFRobot. Es un módulo de cámara impulsado por inteligencia artificial que es capaz de realizar varias operaciones de inteligencia artificial como el reconocimiento facial
Reconocimiento de imágenes con placas K210 y Arduino IDE / Micropython: 6 pasos (con imágenes)
Reconocimiento de imágenes con placas K210 y Arduino IDE / Micropython: ya escribí un artículo sobre cómo ejecutar demostraciones de OpenMV en Sipeed Maix Bit y también hice un video de demostración de detección de objetos con esta placa. Una de las muchas preguntas que la gente ha hecho es: ¿cómo puedo reconocer un objeto que la red neuronal no está tr
Cómo desmontar una computadora con sencillos pasos e imágenes: 13 pasos (con imágenes)
Cómo desmontar una computadora con sencillos pasos e imágenes: esta es una instrucción sobre cómo desmontar una PC. La mayoría de los componentes básicos son modulares y se quitan fácilmente. Sin embargo, es importante que se organice al respecto. Esto ayudará a evitar que pierda piezas y también a que el reensamblaje sea más fácil