Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-23 14:40
¡Hola! Aquí hay un pequeño proyecto genial que puede hacer en una sola tarde y luego usarlo a diario. Está basado en la Raspberry Pi Zero W y te ayudará a estacionar tu auto perfectamente en todo momento.
Aquí está la lista completa de las piezas que necesitará:
- Raspberry Pi Zero W (llamaremos a esto 'rpi' o 'pi' en este artículo)
- Tarjeta micro SD de 4GB o más para el sistema operativo pi
- Dos módulos de sensor de distancia de tiempo de vuelo tinyLiDAR
- Panel LED 32x32 RGB (hay muchos fabricantes para esto con diferentes tonos de puntos, por ejemplo, puede usar el Adafruit 1484 o similar, simplemente busque 'Matriz LED 32x32' en Google). Nuestro panel tenía un paso de 6 mm.
- 25 pies de cable CAT5
- Aproximadamente 22 cables de puente de clavija de encabezado macho a macho de color
- Fuente de alimentación microUSB de 5v 2Amp (cargador de teléfono celular) ¿Todo listo? ¡Vamos!
TL; DR Resumen
- Descarga Raspbian Lite OS para el rpi
- Configure el pi para que se ejecute sin cabeza a través de WiFi con una IP estática
- Configure el entorno de desarrollo de su PC con PuTTY, WinSCP y, opcionalmente, SublimeText con complemento FTP
- Descargue, cree y vincule el controlador del panel LED
- Descarga e instala pigpio
- Descarga nuestro código Python
- Conecte el panel de pantalla LED de 32x32
- Haga el cable de extensión CAT5 para el sensor lateral tinyLiDAR
- Paso opcional (pero solo para usuarios avanzados): haz un baile rápido y feliz cuando todo esté funcionando;)
Paso 1: ¿Qué es un Pi Zero W?
Indudablemente has oído hablar de la Raspberry Pi, pero ¿qué diablos es una pi 'Zero W'?
Raspberry Pi Zero y Zero W fueron adiciones más recientes a la familia Pi que significaron más para IoT y otras aplicaciones integradas de bajo costo. Son versiones reducidas de la placa pi original, pero aún con un potente procesador de 1 GHz. Aquí tienes una buena comparación de todos los modelos.
El beneficio para nosotros al elegir el Pi Zero W aquí sobre otras placas controladoras es que podemos programarlo fácilmente en el lenguaje Python de nivel superior mientras seguimos usando los controladores rápidos del panel LED C / C ++. También tiene un precio atractivo de solo $ 10 USD.
Tenga en cuenta que, dado que esta placa es una versión simplificada de un pi completo, algunas cosas han cambiado. En particular, se ha eliminado el conector ethernet, el conector HDMI se ha cambiado a un tamaño mini y los cuatro puertos USB se han simplificado a un solo tipo micro USB. Hay otro conector micro USB a bordo, pero es solo para alimentar la placa. La eliminación de todos los conectores USB de tamaño completo introduce algunas complejidades. Es decir, ¿cómo se puede conectar un teclado y un mouse? Los concentradores y periféricos USB estándar utilizan conectores tipo A, no micro.
Entonces, ¿qué podemos hacer?
¡Podemos quedarnos sin cabeza!
No, no queremos volvernos locos, sino utilizar una alternativa a la configuración normal por cable directo. Sin cabeza significa "hacer un túnel" en la pi de forma remota mediante una conexión de red de shell seguro (SSH). Para este proyecto usaremos el enfoque sin cabeza a través de WiFi. De ahí la razón por la que elegimos la versión W del pi cero en lugar del aún menor costo pi cero.
Tenga en cuenta que también hay otra forma de ejecutar pi en modo sin cabeza usando algo llamado VNC. Sin embargo, necesita un software VNC especial que se ejecute en su PC, ya que proporciona un escritorio gráfico virtual completo en su PC. No requerimos (y realmente no queremos) el escritorio para nuestro proyecto, por lo que nos ceñiremos al método SSH más simple.
Paso 2: Scotty, ¡necesitamos más energía
El panel de matriz de LED de 32x32 puede, por sí solo, tomar varios amperios de corriente. ¡En serio! Es por eso que la mayoría de estos paneles incluyen algunos cables de alimentación de aspecto robusto para alimentarlos. Afortunadamente para nosotros, no necesitaremos una fuente de alimentación masiva para este proyecto. Pudimos alimentar todo este sistema con solo un cargador de teléfono celular microUSB de 5v / 2amp de repuesto que teníamos por ahí. La razón de la corriente más baja es porque usamos gráficos relativamente simples y, por lo tanto, no encendemos la mayoría de los LED. Si está pensando en hacer animaciones o usar video / gráficos brillantes, definitivamente debería considerar alimentar el panel con una fuente de alimentación separada.
Paso 3: Colocación del sensor y software
¿Notó que estamos usando dos tinyLiDAR en este sistema en lugar de solo uno? Como se muestra en el diagrama de configuración del garaje, uno se coloca delante del automóvil y el otro se coloca a lo largo de un lado del automóvil.
El sensor lateral detectará si se desvía del centro al estacionar el automóvil y, por supuesto, el sensor delantero le indicará cuándo debe detenerse.
La pantalla LED de 32x32 lo ayudará mostrando flechas para avanzar, izquierda o derecha y una pantalla de cuenta regresiva con esquinas de colores para indicar qué tan lejos aún tiene que conducir. Eche un vistazo a nuestro breve video para todos los estados de visualización.
Plan de juego
En pocas palabras, estamos usando la popular biblioteca hzeller C para el controlador LED, Python para el código de control y la biblioteca pipgpio C para el control I2C adecuado de nuestros sensores.
Python es un lenguaje de alto nivel súper fácil que puede editar fácilmente en cualquier editor de texto. Normalmente usamos SublimeText y para este proyecto también usamos un complemento FTP muy útil que nos permite editar los archivos de script directamente en el pi. Este es un paso opcional ya que solo es necesario si desea editar el código. Más detalles están disponibles al final de este artículo.
Todas las placas rpi, como sabrá, no admiten de forma nativa el alargamiento del reloj I2C. Entonces usamos la biblioteca pigpio nuevamente para este proyecto para controlar los sensores tinyLiDAR, pero esta vez con un ligero giro …
Múltiples tinyLiDARs
Cuando compra un tinyLiDAR, siempre se establece en la dirección esclava predeterminada de 0x10. Esto está bien para cuando está usando un solo sensor, pero si tiene más de uno en el bus, tal vez sea un problema si escribe un comando en 0x10 y todos responden.
Entonces tenemos 3 opciones aquí:
Primero, podemos usar el comando (tinyLiDAR) "R" para escribir una nueva dirección de esclavo en el sensor conectado al bus I2C. Luego repita esto para cada sensor. Fijación, escritura y desconexión física de cada sensor para este procedimiento. tinyLiDAR almacenará la dirección dada en su memoria no volátil incorporada. La dirección persistirá incluso después de apagar y encender hasta que la borre emitiendo el comando RESET.
La segunda opción es utilizar la conveniente función de asignación automática que creamos como un objetivo extenso en la campaña de IGG. Esto implica enviar el comando "AR" y luego señalar con el dedo a cada sensor individualmente para asignar automáticamente direcciones I2C secuenciales a los sensores individuales de forma similar a la primera opción, pero no es necesario desconectar físicamente cada sensor para hacer esto.
La tercera opción es la que estamos usando aquí en este proyecto y es posible gracias a la librería pigpio. Para implementar el estándar I2C correctamente, pigpio bitbangs el GPIO. Entonces, debido a esto, podemos crear fácilmente buses I2C separados en casi cualquier par de pines GPIO de repuesto.
Por lo tanto, no es necesario reprogramar las direcciones esclavas para los múltiples sensores LiDAR. Podemos usar un bus separado para cada uno:)
Tenga en cuenta que el bus I2C que se ejecuta a 100 Kbps es bastante robusto. ¡Estamos usando un cable Ethernet CAT5 simple para ejecutar el bus I2C hacia el sensor tinyLiDAR lateral que está a 25 pies de distancia sin ningún componente repetidor activo! Los detalles del cableado del sensor se muestran arriba.
De acuerdo, suficiente jibber jabber, ¡comencemos a descargar el código!
Paso 4: Configurar el Pi
Precaución: El pi utiliza un sistema de archivos Linux, por lo que es mejor realizar los siguientes pasos en un sistema basado en Linux. Puede terminar formateando su tarjeta SD si hace esto en Windows. Usamos el impresionante y gratuito escritorio Ubuntu 18.04 que se ejecuta en un entorno virtual en una PC con Windows 10, pero puedes probar algo similar.
Primero deberá descargar el sistema operativo de raspberrypi.org y luego grabarlo en su tarjeta microSD. Así que sigue estos pasos:
(1) En Ubuntu, vaya aquí y tome la imagen de Raspbian Lite. Guárdelo en su carpeta de descargas.
(2) A continuación, descargue la utilidad de escritura de tarjetas Etcher SD. Para su información, el enlace de descarga oficial de Etcher para la versión de Linux en su página de inicio no funcionó para nosotros, por lo que usamos el método que se describe aquí en su lugar:
En resumen, los pasos descritos en el enlace fueron:
Agregue el repositorio de Etcher en Debian:
echo "deb https://dl.bintray.com/resin-io/debian estable etcher" | sudo tee /etc/apt/sources.list.d/etcher.list
Confíe en la clave GPG de Bintray.com:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
Actualice e instale:
sudo apt-get update
sudo apt-get install etcher-electron
Una vez completado, puede continuar e iniciar Etcher desde su escritorio de Ubuntu. Te pedirá el archivo de origen (que pones en la carpeta de descargas). El siguiente paso en Etcher es elegir el destino correcto. Etcher hace un buen trabajo al detectar su tarjeta micro SD, pero debería estar paranoico aquí. Para verificar que está encontrando el destino correcto, intente expulsar la tarjeta microSD haciendo clic en expulsar en la ventana del explorador de archivos de Ubuntu y verifique que desaparece como la opción de destino dentro de Etcher. Luego, vuelva a colocarlo y continúe con el paso final, que es escribir el archivo en esta tarjeta microSD.
Espere un momento hasta que esté listo y luego continúe.
Paso 5: tiempo de WiFi
Bien, ahora es el momento de ingresar los detalles de su WiFi.
Consejo: siempre puede copiar (Ctrl + C) y pegar (clic derecho, pegar) la información de este artículo en la pantalla del terminal PuTTY en lugar de escribir los comandos. Consulte el final de este artículo para ver también varios comandos útiles de Linux.
Cuando Etcher termine de escribir en la tarjeta micro SD, aparecerán 2 unidades como se muestra arriba. Uno se llama boot el otro se llama rootfs
Necesitamos usar el administrador de archivos para ir a la carpeta de arranque y crear un archivo llamado wpa_supplicant.conf.
Para hacer este paso, puede simplemente hacer clic en el lado izquierdo donde dice arranque y luego en el lado derecho de la pantalla puede hacer clic derecho en el fondo blanco y elegir Abrir en Terminal.
Esto abrirá una ventana de terminal (similar a CMD en Windows) donde puede escribir lo siguiente:
sudo nano wpa_supplicant.conf Sugerencia: Deberá ingresar la contraseña de su sistema Linux para que pueda ejecutarse como Superusuario. Esto es necesario o de lo contrario no podrá guardar los archivos cuando haya terminado de editar
El comando anterior lanzará el editor de texto "nano" donde puede ingresar la siguiente información:
país = EE. UU.
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1 network = {ssid = "WiFi_SSID" scan_ssid = 1 psk = "WiFi_Password" key_mgmt = WPA - PSK}
Nota: Recuerde reemplazar WiFi_SSID y WiFi_Password con su propio nombre y contraseña de red WiFi.
Cuando haya terminado, simplemente haga clic en Ctrl + X para salir y responda Sí para escribir el archivo al salir.
Nuestro siguiente paso es crear un archivo vacío llamado ssh. Para hacer esto, simplemente escribimos lo siguiente en la ventana de la terminal:
toque ssh
Ahora necesitamos darle a nuestro pi una dirección IP estática para que sepamos dónde está cada vez que queramos conectarnos a él. Escriba lo siguiente en la ventana de la terminal:
sudo nano /etc/dhcpcd.conf
Esto debería abrir el editor de texto nano nuevamente y podemos agregar este texto al final del archivo:
interfaz wlan0
dirección_ip estática = 192.168.0.enrutadores estáticos = 192.168.0.1 servidores_nombre_de_dominio estáticos = 192.168.0.1 8.8.8.8
Nota: Esto supone que su prefijo de red es 192.168.0. Si tiene 192.168.1, etc., utilice su red en su lugar. El servidor de nombres de dominio 8.8.8.8 es para Google y aquí es opcional.
Escriba 'salir' en la Terminal para cerrarlo. Luego, haga clic derecho sobre el nombre de inicio en el lado izquierdo de la ventana del Administrador de archivos y seleccione Expulsar.
Ahora puede conectar esta tarjeta microSD a su pi y conectar el cable de alimentación microUSB para alimentar su pi.
Si todo va bien, el LED verde parpadeará durante un tiempo como si estuviera accediendo a una unidad de disco duro y debería iniciar sesión en su red WiFi. Espere aproximadamente un minuto para que se estabilice y espere a que el LED se vuelva verde fijo.
Para verificar que todo funcionó, podemos intentar hacer ping.
Así que escribe la línea de abajo y busca una respuesta.
ping 192.168.0.200
En Ubuntu debería obtener algo similar a esto:
ping 192.168.0.200
PING 192.168.0.200 (192.168.0.200) 56 (84) bytes de datos. 64 bytes de 192.168.0.200: icmp_seq = 1 ttl = 128 tiempo = 752 ms 64 bytes de 192.168.0.200: icmp_seq = 2 ttl = 128 tiempo = 5.77 ms 64 bytes de 192.168.0.200: icmp_seq = 3 ttl = 128 tiempo = 7.33 ms ^ C --- 192.168.0.200 estadísticas de ping --- 3 paquetes transmitidos, 3 recibidos, 0% de pérdida de paquetes, tiempo 2001ms rtt min / avg / max / mdev = 5.777 / 255.346 / 752.922 / 351.839 ms
Tenga en cuenta que el ping continúa funcionando hasta que presione Ctrl + C para salir.
En Windows debería obtener algo como esto:
ping 192.168.0.200
Haciendo ping a 192.168.0.200 con 32 bytes de datos: Respuesta desde 192.168.0.200: bytes = 32 tiempo = 4ms TTL = 64 Respuesta desde 192.168.0.200: bytes = 32 tiempo = 5ms TTL = 64 Respuesta desde 192.168.0.200: bytes = 32 tiempo = 6ms TTL = 64 Respuesta de 192.168.0.200: bytes = 32 tiempo = 5ms TTL = 64 Estadísticas de ping para 192.168.0.200: Paquetes: Enviado = 4, Recibido = 4, Perdido = 0 (0% de pérdida), Tiempos de ida y vuelta aproximados en milisegundos: Mínimo = 4 ms, Máximo = 6 ms, Promedio = 5 ms
¿Todo está bien? Adelante…
Paso 6: Iniciar sesión
Ahora que tenemos conectividad con el pi, queremos enviarle comandos. Pero, ¿cómo? ¡PuTTY por supuesto! Puede descargar PuTTY desde aquí Configuración de PuTTY Después de descargar el software PuTTY, cree un perfil para su pi con la siguiente información:
Nombre de host (o dirección IP): 192.168.0.200 Tipo de conexión: SSH Dele un nombre a este perfil en Sesiones guardadas y presione Guardar. Puede utilizar el nombre que desee, por ejemplo, "rpizw_200".
Para iniciar sesión, simplemente selecciónelo de la lista y presione Cargar. Luego presione Abrir. Ingrese el nombre de usuario y la contraseña para iniciar sesión:
nombre de inicio de sesión: pi
Contraseña predeterminada: frambuesa
Aquí hay una sesión de muestra que se muestra en PuTTY cuando inicia sesión:
iniciar sesión como: pi
[email protected]'s contraseña: Linux raspberrypi 4.14.34+ # 1110 Lun 16 de abril 14:51:42 BST 2018 armv6l Los programas incluidos con el sistema Debian GNU / Linux son software libre; los términos de distribución exactos para cada programa se describen en los archivos individuales en / usr / share / doc / * / copyright. Debian GNU / Linux viene SIN ABSOLUTAMENTE NINGUNA GARANTÍA, en la medida en que lo permita la ley aplicable. Último inicio de sesión: [fecha y hora] de 192.168.0. [Dirección IP] SSH está habilitado y no se ha cambiado la contraseña predeterminada para el usuario 'pi'. Este es un riesgo de seguridad: inicie sesión como usuario 'pi' y escriba 'passwd' para establecer una nueva contraseña.
La primera vez que inicie sesión, le advertirá que aún no ha cambiado la contraseña. Debería cambiarlo por algo fuerte pero fácil de recordar, así que siga adelante y cámbielo escribiendo passwd y siga las instrucciones.
A continuación, deberíamos actualizar el software en la pi escribiendo esto:
sudo apt-get update && sudo apt-get upgrade
Esto descargará las actualizaciones que necesite de su conexión a Internet. Responda SÍ si se le solicita que permita que continúe y luego déle tiempo para que se actualice.
En este momento, probablemente también deberíamos apagar el sonido en el pi, ya que tiene una mala juju con la biblioteca de controladores LED. Copie, pegue las siguientes líneas una a la vez y presione enter después de cada línea:
cd ~
gato << EOF | sudo tee /etc/modprobe.d/blacklist-rgb-matrix.conf blacklist snd_bcm2835 EOF sudo update-initramfs -u
La salida será algo como esto:
pi @ raspberrypi: ~ $ cd ~
pi @ raspberrypi: ~ $ cat <> blacklist snd_bcm2835>> EOF blacklist snd_bcm2835 pi @ raspberrypi: ~ $ sudo update-initramfs -u pi @ raspberrypi: ~ $
Luego tenemos que reiniciar el pi para que los cambios surtan efecto, así que escriba lo siguiente:
sudo reiniciar ahora
Por supuesto, la conexión se interrumpirá cuando el pi se reinicie para que pueda cerrar PuTTY. Intente volver a iniciar sesión un minuto más tarde.
Ahora es el momento de obtener un administrador de archivos FTP gráfico llamado WinSCP. Puede descargar WinSCP desde aquí
WinSCP se parece mucho al archivo mangager en Windows y Ubuntu. Nos permite arrastrar y soltar archivos fácilmente desde y hacia el pi y crear directorios con solo un clic derecho del mouse.
Una vez descargado, deberá configurar un perfil para su pi.
Configuración de WinSCP En la ventana emergente de inicio de sesión, seleccione Nuevo sitio. Utilice la siguiente configuración para la sesión:
Protocolo de archivo: SFTP Nombre de host: 192.168.0.200 Nombre de usuario: pi Contraseña: {la contraseña a la que cambió la predeterminada en el paso PuTTY anterior}
En Configuración avanzada del sitio, vaya a Entorno | Directorios e ingrese / home / pi para el directorio remoto y lo que quiera para la configuración del directorio local.
En Configuración avanzada del sitio, vaya a Entorno | Shell y elija sudo su - en la lista desplegable Shell.
Luego presione Guardar.
Mantenga abiertos tanto WinSCP como PuTTY mientras realiza los siguientes pasos
Vaya a la terminal PuTTY e ingrese lo siguiente:
cd ~
Esto nos llevará a nuestro directorio de inicio dentro de pi.
Ahora podemos tomar la biblioteca de controladores LED de github. Para usar el último código, necesitaremos extraer el repositorio, por lo que debemos instalar la utilidad git.
Ingrese esto en PuTTY:
sudo apt-get install git
Responda S para continuar y nos llevará unos segundos instalar git desde Internet.
La salida debería verse así:
pi @ raspberrypi: ~ $ sudo apt-get install git
Leyendo listas de paquetes… Listo Construyendo árbol de dependencias Leyendo información de estado… Listo Se instalarán los siguientes paquetes adicionales: git-man liberror-perl Paquetes sugeridos: git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn Se instalarán los siguientes NUEVOS paquetes: git git-man liberror-perl 0 actualizado, 3 recién instalado, 0 para eliminar y 0 no actualizado. Necesita obtener 4, 848 kB de archivos. Después de esta operación, se utilizarán 26,4 MB de espacio adicional en disco. ¿Quieres continuar? [S / n] y Obtenga: 1 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf liberror-perl all 0.17024-1 [26.9 kB] Obtenga: 2 https://muug.ca/mirror/ raspbian / raspbian stretch / main armhf git-man all 1: 2.11.0-3 + deb9u3 [1, 433 kB] Get: 3 https://muug.ca/mirror/raspbian/raspbian stretch / main armhf git armhf 1: 2.11.0-3 + deb9u3 [3, 388 kB] Obtenido 4, 848 kB en 5s (878 kB / s) Seleccionando el paquete liberror-perl no seleccionado previamente.(Leyendo la base de datos … 34363 archivos y directorios instalados actualmente.) Preparándose para descomprimir … / liberror-perl_0.17024-1_all.deb … Desempaquetando liberror-perl (0.17024-1) … Seleccionando el paquete git-man previamente no seleccionado. Preparándose para descomprimir… / git-man_1% 3a2.11.0-3 + deb9u3_all.deb… Desempaquetando git-man (1: 2.11.0-3 + deb9u3)… Seleccionando el paquete git previamente no seleccionado. Preparándose para descomprimir… / git_1% 3a2.11.0-3 + deb9u3_armhf.deb… Desempaquetando git (1: 2.11.0-3 + deb9u3)… Configurando git-man (1: 2.11.0-3 + deb9u3)… Configurando liberror-perl (0.17024-1)… Procesando disparadores para man-db (2.7.6.1-2)… Configurando git (1: 2.11.0-3 + deb9u3)…
Ahora regrese a WinSCP y navegue hasta la carpeta / home / pi. Luego, en el lado derecho de esta ventana de WinScp, haga clic derecho y elija crear un nuevo directorio llamado "estacionamiento"
De vuelta en la pantalla PuTTY, puede escribir ls para confirmar que acaba de crear una nueva carpeta en el pi. Luego ingrese esto:
cd p [TAB]Consejo: si presiona la tecla TAB, se completará automáticamente el nombre parcial.
Presione la tecla Intro para ingresar a este directorio.
pi @ raspberrypi: ~ $ cd parking /
pi @ raspberrypi: ~ / estacionamiento $ ls
Ahora podemos obtener los archivos del controlador ingresando lo siguiente en PuTTY:
clon de git
La salida se verá así:
pi @ raspberrypi: ~ / parking $ git clone
Clonación en 'rpi-rgb-led-matrix'… remoto: Contando objetos: 3740, hecho. remoto: Total 3740 (delta 0), reutilizado 0 (delta 0), paquete reutilizado 3740 Objetos receptores: 100% (3740/3740), 20,61 MiB | 1,32 MiB / s, hecho. Resolución de deltas: 100% (2550/2550), hecho.
Ahora compile los archivos del controlador LED entrando en este nuevo directorio 'rpi-rgb-led-matrix' y escribiendo el comando make:
cd r [TAB]
hacer Y así se veía en nuestro tablero
pi @ raspberrypi: ~ / estacionamiento $ cd rpi-rgb-led-matrix /
pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $ make make -C./lib make [1]: Ingresando al directorio '/ home / pi / parking / rpi-rgb-led-matrix / lib' g ++ - I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-unused-parameter -fno-exceptions -c -o gpio.o gpio.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o led-matrix.o led-matrix.cc g ++ -I../ incluir - Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o opciones-initialize.o opciones-initialize.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o framebuffer.o framebuffer.cc g ++ -I../ include -Wall -O3 -g - fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o thread.o thread.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = ' "regular" '-Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o bdf-font.o bdf-fon t.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o graphics.o graphics.cc g ++ - I../ incluir -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o transformador.o transformador.cc g ++ -I../ incluir -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o led-matrix-co led-matrix-c.cc cc -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -c -o mapeo-hardware.o mapeo-hardware.c g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o content-streamer.o content-streamer.cc g ++ -I../ include -Wall -O3 - g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excepciones -c -o pixel-mapper.o pixel-mapper.cc g ++ -I../ include -Wall -O3 -g -fPIC -DDEFAULT_HARDWARE = '"regular"' -Wextra -Wno-parámetro-no utilizado -fno-excep tions -c -o multiplex-mappers.o multiplex-mappers.cc ar rcs librgbmatrix.a gpio.o led-matrix.o options-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers.o g ++ -shared -Wl, -soname, librgbmatrix.so.1 -o librgbmatrix.so.1 gpio.o led -matrix.o opciones-initialize.o framebuffer.o thread.o bdf-font.o graphics.o transformer.o led-matrix-co hardware-mapping.o content-streamer.o pixel-mapper.o multiplex-mappers. o -lpthread -lrt -lm -lpthread make [1]: Saliendo del directorio '/ home / pi / parking / rpi-rgb-led-matrix / lib' make -C examples-api-use make [1]: Entrando en el directorio ' / home / pi / parking / rpi-rgb-led-matrix / examples-api-use 'g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o demo-main. o demo-main.cc make -C../lib make [2]: Ingresando al directorio '/ home / pi / parking / rpi-rgb-led-matrix / lib' make [2]: Saliendo del directorio '/ home / pi / parking / rpi-rgb-led-matrix / lib 'g ++ demo-main.o -o demo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o minimal-example.o minimal-example.cc g ++ minimal-example.o - o ejemplo-mínimo -L../ lib -lrgbmatrix -lrt -lm -lpthread cc -I../ include -Wall -O3 -g -Wextra -Wno-unused-parameter -c -o c-example.o c- example.c cc c-example.o -o c-example -L../ lib -lrgbmatrix -lrt -lm -lpthread -lstdc ++ g ++ -I../ include -Wall -O3 -g -Wextra -Wno-unused- parámetro -c -o texto-ejemplo.o texto-ejemplo.cc g ++ texto-ejemplo.o -o texto-ejemplo -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall - O3 -g -Wextra -Wno-parámetro-no utilizado -c -o scrolling-text-example.o scrolling-text-example.cc g ++ scrolling-text-example.o -o scrolling-text-example -L../ lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-parámetro-no utilizado -c -o reloj.o reloj.cc g ++ reloj.o -o reloj -L.. / lib -lrgbmatrix -lrt -lm -lpthread g ++ -I../ include -Wall -O3 -g -Wextra -Wno-parámetro-no utilizado -c -o ledcat.o ledcat.cc g ++ le dcat.o -o ledcat -L../ lib -lrgbmatrix -lrt -lm -lpthread make [1]: Saliendo del directorio '/ home / pi / parking / rpi-rgb-led-matrix / examples-api-use' pi @raspberrypi: ~ / estacionamiento / rpi-rgb-led-matrix $
Nuestro siguiente paso será vincular la biblioteca de matrices RGB a Python. Usamos el Python 2 predeterminado para este proyecto. Entonces, para hacer este enlace ingresamos la siguiente línea una a la vez como antes:
sudo apt-get update && sudo apt-get install python2.7-dev python-pillow -y
hacer build-python sudo hacer install-python
Nota: Puede ignorar con seguridad la única advertencia sobre '-Wstrict-prototype' que aparece al ejecutar las dos declaraciones make. Los comandos make tardan un par de minutos en ejecutarse y no dicen nada mientras están ocupados. Así que no temas, tu pi debería volver pronto;)
Aquí hay una salida parcial de la primera declaración make:
construcción de la extensión de 'gráficos'
arm-linux-gnueabihf-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-estricto-aliasing -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -fPIC -I../../ include -I / usr / include / python2.7 -c rgbmatrix / graphics.cpp -o build / temp.linux- armv6l-2.7 / rgbmatrix / graphics.o -O3 -Wall cc1plus: advertencia: la opción de línea de comando '-Wstrict-prototypes' es válida para C / ObjC pero no para C ++ arm-linux-gnueabihf-g ++ -pthread -shared -Wl, -O1 -Wl, -Bsymbolic-functions -Wl, -z, relro -fno-estricto-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix -map = / build / python2.7-kKRR4y / python2.7-2.7.13 =. -fstack-protector-strong -Wformat -Werror = format-security -Wl, -z, relro -Wdate-time -D_FORTIFY_SOURCE = 2 -g -fdebug-prefix-map = / build / python2.7-kKRR4y / python2.7 -2,7,13 =. -fstack-protector-strong -Wformat -Werror = format-security build / temp.linux-armv6l-2.7 / rgbmatrix / graphics.o -L../../ lib -lrgbmatrix -o./rgbmatrix/graphics.so make [1]: Saliendo del directorio '/ home / pi / parking / rpi-rgb-led-matrix / bindings / python' pi @ raspberrypi: ~ / parking / rpi-rgb-led-matrix $
A continuación, instalaremos la biblioteca pigpio C. Para hacer esto correctamente, necesitamos hacerlo desde la fuente, así que solo ingrese las siguientes líneas:
cd ~
sudo rm -rf PIGPIO wget abyz.me.uk/rpi/pigpio/pigpio.zip descomprimir pigpio.zip cd PIGPIO make sudo make install rm pigpio.zip
La instalación anterior tarda unos 3 minutos.
Ahora es el momento de obtener nuestros archivos de proyecto de Python. Introduzca la siguiente:
cd ~
cd / home / pi / parking / rpi-rgb-led-matrix / bindings / python / samples wget https://s3.amazonaws.com/microedco/tinyLiDAR/Raspberry+Pi/tinyL_parking.zip unzip -j tinyL_parking.zip rm tinyL_parking.zip
Luego, para ejecutarlo, escriba lo siguiente:
sudo python parking.py
Pero no es necesario que hagas esto ahora mismo, ya que todavía tenemos que conectarlo todo …
Paso 7: cables
Como se mencionó anteriormente, alimentamos el panel LED con el mismo adaptador de corriente que alimenta el pi. Para hacer esto, tendrá que empalmar los fuertes cables rojo y negro a los pines del cabezal macho para que puedan conectarse a los pines 2 y 9 del conector pi de 40 pines.
Desconecte la alimentación del pi ahora y conecte el panel LED según el diagrama ilustrado de arriba. Mantenga el pin 2 desconectado por ahora.
NOTA: El panel de matriz de LED a veces puede encenderse en un estado funky. Si esto sucede, puede descargar su fuente de alimentación severamente sin importar la capacidad actual que tenga. Notamos esto durante el desarrollo en nuestro suministro de banco que puede proporcionar más de 4 amperios. La solución a esto es ejecutar el código pi primero y luego conectar el pin 2 para encender el panel LED. De esta manera, el panel debería aparecer en un estado de bajo consumo, ya que elimina los estados aleatorios de los LED. La corriente de reposo (todos los LED apagados) para nuestro panel LED era de solo 50 mA a 5 V.
CAT5
Usamos un cable ethernet CAT5 de 25 pies y lo modificamos para conectarlo a los pines del cabezal pi en un extremo y aceptar los pines del conector GROVE en el otro lado para que pudiéramos extender la distancia para colocar nuestro sensor tinyLiDAR lateral. Las fotos de arriba muestran este cable antes y después de las modificaciones. Ignore los colores de los cables de las clavijas del encabezado, ya que no están correlacionados con los diagramas. Solo asegúrese de conectar su sistema como se muestra en los diagramas de conexión ilustrados que se muestran anteriormente en el paso 3.
Paso 8: ¡Enciéndelo
La secuencia de encendido inicial adecuada debe ser conectar el cargador microUSB al pi y esperar a que los LED azules de los sensores tinyLiDAR parpadeen rápidamente para mostrar que están tomando medidas. Esto prueba que el código funciona correctamente.
A continuación, puede conectar lenta pero firmemente el pin 2 para el suministro del panel LED. ¡Tenga cuidado de no fallar mientras hace esto! Si el panel LED muestra algunos LED brillantes congelados, entonces probablemente haya fallado, así que desconecte la alimentación microUSB del pi y espere unos segundos para intentar la secuencia de encendido nuevamente.
Para ejecutar el código, ingrese lo siguiente:
cd / home / pi / parking / rpi-rgb-led-matrix / bindings / python / samples
sudo python parking.py
Si todo va bien, debería obtener una pantalla similar a la que se muestra en el video.
Eche un vistazo rápido al código parking.py para comprender qué límites usamos. El valor predeterminado para el sensor frontal es 200 mm. Como el rango del sensor es de 11 mm a 2 m, es una buena idea mantener la distancia nom_parked_Front en 200 mm o más. El sensor lateral nom_parked_Side está configurado en 600 mm. Vea la imagen de arriba para ver el código Python que muestra estas opciones de configuración.
Si todo está funcionando, puede seguir adelante y montar el sistema en su garaje y ajustar los parámetros anteriores según sea necesario. Dado que su pi está conectado a su WiFi, siempre puede ingresar y editar la configuración de distancia según lo necesite para la configuración de su garaje particular mientras aún está montado.
¿Esto es ahora?
¡Sí, sí lo es! - hora de hacer tu baile feliz:)
¡Gracias por leer y disfruta de tu nuevo asistente de estacionamiento!
Paso 9: Paso opcional y comandos útiles
Paso opcional: complemento FTP para texto sublime
Para editar los archivos de script de Python directamente en el pi, podemos instalar el complemento FTP llamado Sublime SFTP de Wbond. Puede descargar este complemento siguiendo las instrucciones aquí
Para configurar este complemento, debemos configurar las credenciales de FTP en Archivo | SFTP / FTP | Configuración del servidor….
Para nuestra configuración usamos:
"tipo": "sftp", "sync_down_on_open": verdadero, "sync_same_age": verdadero, "host": "192.168.0.200", "usuario": "pi", "contraseña": "YOUR_RPI_PASSWORD_HERE", "puerto": "22", "ruta_remota": "/ home / pi /", "permisos_archivo": "664", "permisos_directorios": "775", Utilice Ctrl + S o Archivo | Guardar para guardar esta información. Se le pedirá un nombre para llamar a esta configuración. Simplemente lo llamamos "rpizw_0_200"
Ahora para iniciar sesión en pi desde SublimeText, vaya a Archivo | SFTP / FTP | Examinar servidor…
Seleccione de la lista de opciones que aparecen. Deberá elegir el perfil con el nombre que especificó anteriormente;) Siga las instrucciones para navegar por las carpetas y editar el archivo deseado.
Extras útiles
Comandos de Linux útiles para usar en pi.
Antes de desconectar el pi, SIEMPRE asegúrese de apagarlo para que no se dañe el archivo de su tarjeta microSD. Ingrese este comando:
sudo apagar ahora
y espere a que se apague el LED verde antes de desconectar la alimentación. De manera similar, para reiniciarlo, puede ingresar:
sudo reiniciar ahora
Para listar archivos en un directorio, use esto:
ls
Puede encontrar otros comandos útiles de Linux aquí
Recomendado:
Sistema de estacionamiento inteligente basado en IoT con NodeMCU ESP8266: 5 pasos
Sistema de estacionamiento inteligente basado en IoT usando NodeMCU ESP8266: Hoy en día, encontrar estacionamiento en áreas concurridas es muy difícil y no existe un sistema para obtener los detalles de la disponibilidad de estacionamiento en línea. Imagínese si puede obtener la información de disponibilidad de espacios de estacionamiento en su teléfono y no tiene roaming para verificar t
Asistencia de estacionamiento Fácil reparación / diagnóstico: 4 pasos
Fácil reparación / diagnóstico del asistente de estacionamiento: Bueno, comencemos, tengo un Chevrolet Avalanche 2010 y tiene 4 sensores de asistente de estacionamiento en su parachoques trasero. Este intratable se puede utilizar en un vehículo a mi leal saber y entender, si tiene el frente o Rea o ambos. Así que fui a mi favorito
Sistema de asistencia basado en huellas dactilares y RFID con Raspberry Pi y base de datos MySQL: 5 pasos
Sistema de asistencia basado en huellas dactilares y RFID con Raspberry Pi y base de datos MySQL: video de este proyecto
SISTEMA DE ASISTENCIA BASADO EN RFID UTILIZANDO ARDUINO Y GSM: 5 Pasos
SISTEMA DE ASISTENCIA BASADO EN RFID UTILIZANDO ARDUINO Y GSM: Este proyecto utiliza tecnología RFID para tomar nota de cada estudiante que ingresa al aula y también para calcular el tiempo que reside en la clase. En este sistema propuesto, a cada estudiante se le asigna una etiqueta RFID. El proceso de asistencia puede ser
Asistencia de estacionamiento en reversa en el garaje usando un sensor de seguridad y un circuito analógico existentes: 5 pasos
Asistente de estacionamiento en reversa en el garaje usando un sensor de seguridad y un circuito analógico existentes: sospecho que muchos inventos en la historia de la humanidad se hicieron debido a las quejas de las esposas. La lavadora y el frigorífico ciertamente parecen candidatos viables. Mi pequeño " invento " descrito en este Instructable es un dispositivo electrónico