Tabla de contenido:

RPi 3 Starboard / Generador de partículas: 6 pasos (con imágenes)
RPi 3 Starboard / Generador de partículas: 6 pasos (con imágenes)

Video: RPi 3 Starboard / Generador de partículas: 6 pasos (con imágenes)

Video: RPi 3 Starboard / Generador de partículas: 6 pasos (con imágenes)
Video: La primer humanoide robot del mundo 🤖😳😱 #robot #robotics #robots #robotandroide #androide #humanoide 2024, Mes de julio
Anonim
Image
Image
Ensamble la placa LED
Ensamble la placa LED

¿Te aburres con tu Raspberry Pi? ¿Estás listo para comandar las fuerzas elementales del universo, convocando y eliminando fotones a voluntad? ¿Solo quieres algo interesante para colgar en tu sala de estar, o un proyecto elegante para publicar en Facebook para mostrarle a Denise que lo estás haciendo bien estos días, muchas gracias? ¿Estás atrapado en una simulación por computadora y desperdicias las horas hasta que te liberen o te eliminen? Si alguno o todos estos lo describen, entonces [voz del locutor] ¡Bienvenido!

Este tutorial le mostrará cómo ensamblar y configurar una pantalla de generador de partículas usando una Raspberry Pi 3 y algunos paneles de matriz RGB. Le tomará entre una y dos horas, y el producto terminado será de aproximadamente 30 "x8" (sin incluir el Pi) y se puede montar en la pared. Es una decoración genial para una sala de estar, una oficina, una sala de juegos o cualquier otro lugar que desee colocar.

Antes de comenzar, esto es lo que necesitará y cuáles son los costos aproximados:

  • Rpi 3 + Tarjeta SD + Estuche + Fuente de alimentación: $ 70 (de Canakit, pero probablemente pueda obtener las piezas más baratas si las compra por separado).
  • Matriz de LED RGB 4x 32x32 (preferiblemente p6 en interiores con escaneo 1/16): $ 80- $ 100 enviados en Alibaba o Aliexpress; $ 160 en Adafruit o Sparkfun.
  • Sombrero Adafruit RGB Matrix: $ 25
  • Fuente de alimentación 5V 4A: $ 15
  • Clips impresos en 3D: $ 1,00 (estos son para conectar los paneles y colgarlos en la pared; si no tiene acceso a una impresora 3D, puede usar una tira de enrasado para mantenerlos juntos y algunos soportes de la ferretería para cuélgalo de la pared. Traté de encontrar los archivos de diseño o los.stls de estos, pero parece que se han ido de la tierra. Sin embargo, los clips son bastante fáciles de modelar).
  • 14 tornillos M4x10: $ 5ish
  • Cuatro cables IDC 4x8 y tres cables de alimentación para las matrices RGB (¡no sé cómo se llaman!). Estos deberían haber sido incluidos con sus paneles LED.
  • Total: alrededor de $ 200, más o menos.

El proyecto no requiere que usted suelde o tenga ningún conocimiento específico de programación; asume que sabe cómo escribir una imagen en una tarjeta microSD. Si no está seguro de cómo hacerlo, la base Raspberry Pi tiene un buen tutorial aquí.

También asume que tienes un conocimiento básico de cómo hacer cosas desde la línea de comandos en Linux, y el tutorial del código asume que conoces los conceptos básicos de Python (pero no necesitas seguir el tutorial del código para poder compilar y ejecute el generador de partículas.) Si se queda atascado en cualquiera de los pasos, no dude en hacer una pregunta o publicar en / r / raspberry_pi (que también es, supongo, la audiencia principal de este instructivo)

Paso 1: ensamble la placa LED

Ensamble la placa LED
Ensamble la placa LED

Primero, ensamblará los paneles LED individuales de 32x32 en un panel grande de 128x32. Deberá mirar sus tableros y encontrar las pequeñas flechas que indican el orden de conexión; en el mío, están cerca de los conectores IDC HUB75 / 2x8. Asegúrese de que las flechas apunten desde donde se conectará el Rpi (hacia la derecha en la foto de arriba) a lo largo de la placa.

También necesitará conectar los cables de alimentación. La mayoría de estos cables tienen dos conectores hembra que se conectan a las placas y un conjunto de terminales de horquilla que se conectan a la fuente de alimentación. Los paneles con los que estoy trabajando tienen los indicadores de 5V y GND casi completamente ocultos debajo de los conectores, pero los cables solo se conectan en una dirección. Querrá asegurarse de que está conectando todos los 5V juntos y todos los GND juntos, porque si los enciende al revés, es casi seguro que los freirá.

Debido a que los cables de alimentación incluidos con mis placas eran tan cortos, tuve que extender uno insertando las clavijas del terminal de horquilla en el conector de otro (esto es bastante sencillo, es posible que tenga que doblar los terminales de horquilla ligeramente hacia adentro, pero yo ' he incluido una imagen por si acaso). Terminé con dos juegos de terminales de horquilla y un conector IDC de 2x8 a la derecha de mi placa LED ahora alargada.

También notará que tengo dos pernos que no están unidos a nada en ninguno de los extremos del tablero; estos estarán en la parte superior una vez que todo se dé la vuelta y se usarán para sujetarlo a la pared.

Entonces, una vez que haya conectado todos los paneles con clips, cables IDC 2x8 y cables de alimentación, ¡estará listo para pasar al siguiente paso!

Paso 2: prepara la Raspberry Pi

A continuación, dejará la placa LED a un lado (por ahora) y preparará el Pi 3 para ejecutarlo. Usaremos Raspbian Stretch Lite y la biblioteca de matrices RGB de hzeller (en lugar de la biblioteca de matrices de Adafruit, que es más antigua y no se mantiene).

Primero, querrá escribir la imagen de Raspbian Lite en una tarjeta SD; Una vez que haya hecho esto, continúe y conecte un monitor y un teclado al pi y enciéndalo. (También puede hacer esto sin cabeza, ya sea a través de ssh o un conector en serie, pero si esa es la forma en que lo hace, probablemente no necesite que le diga cómo hacerlo). Necesitará una conexión a Internet para esto.; Si tiene wifi, conecte el Pi a su red inalámbrica editando /etc/wpa_supplicant/wpa_supplicant.conf y ejecutando wpa_cli -i wlan0 reconfigure. (Si nunca ha hecho esto, puede obtener instrucciones aquí).

Una vez que esté conectado a Internet, actualizaremos la configuración del repositorio dpkg y descargaremos las bibliotecas que necesitamos ejecutando los siguientes comandos:

sudo apt-get update

sudo apt-get install git python-dev python-pil

clon de git

Ahora tenemos que compilar e instalar el código de la matriz. Entonces irás a la carpeta que contiene la biblioteca:

matriz-led-rpi-rgb-cd

y compílelo (esto puede llevar un minuto):

hacer && hacer build-python

e instale los enlaces de Python:

sudo make install-python

Si obtiene algún error al compilar el código de la biblioteca, regrese y asegúrese de haber instalado python-dev y python-pil correctamente. Los enlaces de Python no se compilarán sin ambos paquetes instalados.

También deberá desactivar la salida de sonido de su Pi (el sonido integrado interfiere con el código de la matriz) editando /boot/config.txt. Busque la línea que dice dtparam = audio = on y cámbiela a dtparam = audio = off.

Si todo se compiló correctamente (recibirá algunas advertencias sobre los protoipos Wstrict), su pi debería estar listo para ejecutar la placa matriz. Continúe y apáguelo (sudo shutdown now), desenchúfelo y conectaremos la placa de luz al pi en el siguiente paso.

Paso 3: Conecte Pi + Matrix Hat + Placa LED

Conecte Pi + Matrix Hat + Placa LED
Conecte Pi + Matrix Hat + Placa LED

Entonces, ahora que su Pi está apagado y desenchufado, conectemos el sombrero de la matriz al pi y la placa LED al sombrero de la matriz. Si su Pi aún no está en su estuche, ahora es un buen momento para ponerlo allí.

Instale el sombrero de la matriz alineándolo con los pines GPIO en el Pi y empujándolo suavemente hacia abajo con fuerza uniforme en ambos lados. Asegúrese de que los pines estén alineados correctamente, de modo que los encabezados hembra del sombrero cubran exactamente los pines GPIO del pi. Si lo desalinea, no es una catástrofe; simplemente jálelo suavemente hacia atrás y enderece los pasadores que se hayan doblado.

Una vez que se haya puesto el sombrero, coloque el Pi a la derecha de la placa LED ensamblada (verifique nuevamente las conexiones de alimentación y asegúrese de que las flechas apunten desde el Pi hacia abajo a lo largo de la placa) y conecte el IDC cable al sombrero de matriz.

A continuación, querrá conectar los terminales de horquilla para la alimentación en el bloque de terminales del sombrero de la matriz. Tiene dos conectores de pala por lado, pero ambos deberían encajar bien. Afloje los tornillos primero y, esto debería ser evidente, asegúrese de colocar los terminales de 5V en el lado etiquetado + (estos deben ser rojos, pero, nuevamente, verifique sus conectores y no asuma que se fabricaron correctamente) y los terminales GND (estos deben ser negros) en el lado etiquetado -. Una vez que estén allí, apriete los tornillos en la parte superior del bloque de terminales y debería tener algo que se parezca a la imagen del encabezado para este paso.

Ahora, es posible que haya notado que esta configuración en particular deja la mitad de la terminal de horquilla a cada lado expuesta, flotando apenas unos milímetros por encima del sombrero de matriz (y no mucho más lejos entre sí). Y, las terminales de horquilla estarán muy pronto llevando varios voltios y varios amperios de potencia bruta. ¿Es esto (puedo oírte preguntar desde el otro lado de la pantalla) realmente la forma correcta de hacerlo? ¿Es, (te inclinas más cerca y susurras), una buena idea?

Y la respuesta es (respondo, encogiéndome de hombros): no, no lo es. La forma correcta de hacerlo sería pelar los terminales de horquilla de los cables de alimentación y volver a engarzarlos en el conector correcto para ese bloque de terminales (o dejarlos como cables desnudos y conectarlos sin un conector en el bloque). De lo contrario, puede colocar un tubo termorretráctil alrededor del lado expuesto del conector de horquilla o simplemente envolverlo con cinta aislante. Pero el mundo está caído y el hombre es vago y vanidoso, así que no he hecho eso.

Pero, envueltos o desenvueltos, los terminales de horquilla están conectados al bloque de terminales y estamos listos para pasar al siguiente paso.

Paso 4: prueba la matriz RGB

Ahora que su Pi está conectado a la placa de luz, voltee la placa y vuelva a encenderla. Puede alimentar el sombrero de la matriz después de que el Pi esté enchufado; Sin embargo, si enciende el sombrero antes que el Pi, el Pi intentará arrancar sin suficiente corriente y se quejará amargamente (y puede provocarle un pánico en el kernel y no arrancar en absoluto).

Si tiene problemas para hacer que el Pi arranque con el sombrero de matriz puesto, asegúrese de que está usando una fuente de alimentación lo suficientemente robusta para el Pi (2A + debería ser bueno) e intente enchufar tanto la fuente de alimentación para el sombrero como para el Pii en la misma regleta o cable de extensión y enciéndalos juntos.

Una vez que el Pi se haya iniciado, estamos listos para probar las matrices. Vaya a donde están las muestras de enlace de Python (cd / rpi-rgb-led-matrix / bindings / python / samples) y pruebe el generador de bloques rotativos con el siguiente comando:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Debe ejecutarlo como sudo porque la biblioteca de matrices necesita acceso de bajo nivel al hardware en la inicialización. El -m especifica la forma en que los paneles están conectados al pi (en este caso, un sombrero adafruit) y el --led-chain especifica, lo adivinó, cuántos paneles hemos encadenado. Las filas y columnas por panel tienen un valor predeterminado de 32, por lo que estamos bien allí.

Ahora, una vez que haya ejecutado el programa, sucederá una de dos (o, en realidad, una de tres) cosas:

  • No pasa nada
  • Obtienes un bonito bloque giratorio en el medio de tu tablero de luces.
  • El panel de luz funciona, eh, creo, pero se ve … raro (la mitad es verde, algunas filas no se iluminan, etc.)

Si no sucede nada, o si el panel se ve extraño, presione ctrl + c para salir del programa de muestra, apague el pi y verifique todas sus conexiones (cable IDC, alimentación, asegúrese de que ambas fuentes de alimentación estén conectadas, etc.) También asegúrese de que el sombrero esté conectado correctamente; si eso no lo soluciona, llévelo a un panel (asegúrese de usar --led-chain 1 cuando lo pruebe) y vea si uno de los paneles puede estar dañado. Si ESO no funciona, consulte los consejos de solución de problemas de hzeller. si ESO AÚN no funciona, intente publicar en / r / raspberry_pi (o en los foros de Adafruit, si obtuvo sus paneles de Adafruit, o intercambio de pila, etc., etc.)

Si funciona, pero aún se ve extraño (tal vez como la imagen del encabezado de esta sección) después de haber verificado las conexiones, es posible que tenga todo conectado correctamente, que los paneles estén funcionando correctamente, pero que Algo más está funcionando. sobre. Lo que nos llevará a nuestro siguiente paso, más una desviación que un paso, en la multiplexación y las velocidades de escaneo. (Si su tablero LED funciona bien y no está interesado en el funcionamiento interno de estos paneles, no dude en omitir el siguiente paso).

Paso 5: Tasas de multiplexación y escaneo (o: un desvío momentáneo en el camino a la tumba)

Entonces, uno de los errores que cometí cuando ordené mi primer juego de paneles de Alibaba es que obtuve paneles para exteriores (¿por qué no ?, pensé, ¡son impermeables y más brillantes!). Y, cuando los conecté a mi sombrero de matriz, las cosas parecían … no estaban bien.

Para entender por qué es así, nos tomaremos un minuto para mirar a Phil Burgess de la descripción de Adafruit de cómo funcionan estos paneles. Notarás que Burgess señala que los paneles no encienden todos sus LED a la vez, encienden conjuntos de filas. La relación entre la altura del panel en píxeles y el número de filas que se iluminan a la vez se denomina velocidad de exploración. Entonces, por ejemplo, en un panel de 32x32 con escaneo de 1/16, dos filas (1 y 17, 2 y 18, 3 y 19, etc.) se iluminan a la vez, en todo el tablero, y luego el controlador repite. La mayoría de las bibliotecas que controlan matrices RGB están diseñadas para paneles donde la velocidad de escaneo es la mitad de la altura en píxeles, es decir, controlan dos filas de LED a la vez.

Los paneles para exteriores (y algunos paneles para interiores, asegúrese de consultar las especificaciones antes de realizar el pedido) tienen tasas de escaneo que son 1/4 de la altura en píxeles, lo que significa que esperan que se conduzcan cuatro líneas a la vez. Esto los hace más brillantes (lo cual es bueno) pero hace que muchos códigos estándar no funcionen con ellos (lo cual es malo). Además de eso, tienden a tener los píxeles desordenados internamente, lo que requiere transformar los valores xey en el software para abordar los píxeles correctos. ¿Por qué están hechos de esta manera? No tengo ni idea. ¿Lo sabías? Si es así, por favor dígame. De lo contrario, tendrá que seguir siendo un misterio.

Entonces, si tienes uno de estos extraños paneles para exteriores, ¡probablemente estés de suerte! hzeller agregó recientemente soporte para configuraciones comunes de este tipo de paneles a su biblioteca. Puede leer más sobre esto en la página de github del proyecto, pero puede pasar --led-multiplexing = {0, 1, 2, 3} al código de muestra (es posible que también deba fingir que tiene un cadena de doble longitud de paneles de media longitud) y debería funcionar.

Sin embargo, hay algunos patrones de transformación de píxeles que no son compatibles, y (adivinen qué) ¡mis paneles tienen uno de ellos! Entonces, tuve que escribir mi propio código de transformación (yo también, por alguna razón, tengo que decirle a la biblioteca que actúe como si tuviera ocho paneles de 16x32 encadenados). que es como sigue:

def transformPixels (j, k): effJ = j% 32

effK = k% 32

modY = k

modX = j

#modX y modY son las X e Y modificadas;

#effJ y effK se aseguran de transformarnos dentro de una matriz de 32x32 antes de presionar

si ((effJ)> 15):

modX = modX + 16

si ((effK)> 7):

modY = modY - 8

modX = modX + 16

si ((effK)> 15):

modX = modX - 16

si ((effK)> 23):

modY = modY - 8

modX = modX + 16

# Luego, los empujamos a la ubicación correcta (cada x + 32 mueve un panel)

si (j> 31):

modX + = 32

si (j> 63):

modX + = 32

si (j> 95):

modX + = 32

retorno (modX, modY)

Si tiene un panel como el mío, esto podría funcionar. Si no es así, tendrás que escribir el tuyo propio, así que, ya sabes, buena suerte y suerte.

Paso 6: el programa de estribor (o: volver a la pista y listo para píxeles)

Ahora que tiene sus matrices operativas y listas para funcionar, todo lo que tiene que hacer es poner el programa de estribor en su Pi y prepararlo para funcionar. Asegúrese de estar en el directorio de inicio del usuario pi (cd / home / pi) y ejecute el siguiente comando:

clon de git

debería tener una nueva carpeta, estribor, que contiene tres archivos: LICENCIA.md, README.md y estribor_s16.py. Pruebe el programa de estribor ejecutándolo a través de Python:

sudo python./starboard_s16.py

y debería hacer que un montón de partículas se muevan a diferentes velocidades y se descompongan a diferentes velocidades. Cada 10, 000 tics más o menos (puede ir al script de Python para editar / cambiar esto) cambiará de modo (hay cuatro: RGB, HSV, Rainbow y Greyscale).

Entonces, ahora lo único que queda por hacer es hacer que el código de estribor se ejecute al inicio. Lo haremos editando (con sudo) /etc/rc.local. Lo que desea hacer es agregar la siguiente línea justo antes de "salir 0" en el script:

python /home/pi/starboard/starboard_s16.py &

Después de hacer eso, reinicie el pi; una vez que se ejecute a través de la secuencia de inicio, ¡el script starboard_s16.py debería iniciarse de inmediato!

Si desea hurgar en el script, no dude en hacerlo: tiene licencia GNU GPL 3.0. Si el script no se ejecuta para usted, o si tiene problemas con él, no dude en hacérmelo saber o enviar un error en github, ¡y veré qué puedo hacer para solucionarlo!

Lo último que podría querer hacer es configurar SSH en el pi, para que pueda iniciarlo de forma remota y apagarlo de forma segura. Definitivamente querrás cambiar tu contraseña (a través del comando passwd), y puedes encontrar instrucciones para habilitar ssh (también desde la línea de comando) aquí.

Recomendado: