Tabla de contenido:

¿TinyLiDAR en un Pi ?: 9 pasos (con imágenes)
¿TinyLiDAR en un Pi ?: 9 pasos (con imágenes)

Video: ¿TinyLiDAR en un Pi ?: 9 pasos (con imágenes)

Video: ¿TinyLiDAR en un Pi ?: 9 pasos (con imágenes)
Video: Technical Presentation of tinyLiDAR's Command Terminal Sketch 2024, Mes de julio
Anonim
¿TinyLiDAR en un Pi?
¿TinyLiDAR en un Pi?

¡Hola de nuevo!

Bueno, ahora que ha pasado un tiempo de calidad con tinyLiDAR y su Arduino, su Raspberry Pi tal vez se sienta un poco solo;)

El pi tiene un puerto I2C, ¿verdad? Entonces, ¿por qué no conectarlo y probarlo allí? Buen plan, pero si ya lo ha intentado, es posible que haya notado que los datos se ven un poco extraños.

Sí, el pi ya ha incorporado 1.8K pull-ups, por lo que tendrá que cortar las almohadillas I2C en tinyLiDAR para sacar los 4.7K pull-ups del circuito; consulte el manual de referencia para obtener más detalles. Pero esta no es la razón de los datos extraños.

Esto se debe a que el bus I2C del pi no cumple exactamente las especificaciones. Ha sido así desde que se introdujo por primera vez el pi debido al conjunto de chips Broadcom. Desde el principio, no han admitido adecuadamente una función I2C llamada "alargamiento del reloj".

Puede leer más sobre este error de h / w aquí.

Paso 1: ¿Qué es el estiramiento del reloj?

¿Qué es el estiramiento del reloj?
¿Qué es el estiramiento del reloj?

Como sabrá, el bus I2C consta de 3 cables. Estos son para reloj (SCL), datos (SDA) y terreno común. El reloj y las líneas de datos son del tipo de colector abierto / drenaje abierto, lo que significa que necesitan resistencias pull-up conectadas a un riel de suministro positivo para darles un nivel lógico alto. Para obtener una lógica baja, cualquier dispositivo en el bus puede bajar la línea a tierra común.

Según el estándar I2C, el dispositivo maestro es el que suministra la señal de reloj en la línea SCL, pero si esta velocidad es demasiado rápida, entonces el dispositivo esclavo puede ralentizarlo simplemente manteniendo presionada la línea del reloj hasta que esté listo para tratar. con la información. Esto es lo que llamamos "estiramiento del reloj".

Oficialmente, el alargamiento del reloj se incluyó como una característica opcional en el estándar I2C, pero es una característica muy común que es necesaria para la mayoría de los esclavos "inteligentes" que necesitan algo de tiempo adicional para proporcionar datos de sensores, etc.

Paso 2: un poco de ayuda de los cerdos que vuelan

Para solucionar este error de I2C h / w, encontramos una pequeña biblioteca gratuita llamada "pigpio". Es una biblioteca muy popular, rápida y liviana escrita en C. Se ejecuta como un demonio en segundo plano para Raspberry Pi y nos permite controlar el I2C y cualquier GPIO fácilmente desde Python. La biblioteca trata los puertos I2C más como GPIO y, por lo tanto, ha pasado por alto el error de estiramiento del reloj I2C. Como todo el software en pi, la biblioteca pigpio está a solo una simple "inclusión" de distancia, ¡así que vamos!

Paso 3: TL; Versión DR

Configurar PiEnable SSH para iniciar sesión con Putty Instalar la biblioteca pigpio Obtener el archivo zip tinyLiDAR Descomprimir y ejecutar desde Putty

Opcional:

Configurar SublimeText con WinSCP

Paso 4: instalación

Instalación
Instalación

Para nuestra Raspberry Pi 3, utilizamos el sistema operativo estándar New Out Of the Box Software (NOOBS Lite v2.4). Contiene una versión predeterminada de Python ya instalada para nosotros lista para codificar. Puede descargar el sistema operativo desde aquí.

Una vez instalado en una tarjeta micro SD, debe conectar un teclado y un monitor para que pueda iniciar sesión en el pi por primera vez:

Nombre de usuario: pi Contraseña: frambuesa

Luego, puede iniciar un servidor shell seguro (SSH) con estos comandos:

sudo systemctl habilitar sshsudo systemctl iniciar ssh

A continuación, necesitaremos la dirección IP del pi en su red para que podamos iniciar sesión con PuTTY. Para obtener esto, simplemente escriba:

nombre de host -I

Y busque una dirección de formato IPv4 (para nuestra configuración era: 192.168.0.27)

Los pasos anteriores permitirán que pi se ejecute "sin cabeza", lo que significa que no necesitará volver a escribir en este teclado y tampoco necesitará un monitor de video. Iniciaremos sesión a través de la red a través de una conexión SSH segura en el futuro. El comando anterior hace que el servidor SSH se inicie automáticamente cada vez que se enciende el pi. Esto es conveniente para nosotros mientras estamos codificando, pero podría ser un riesgo de seguridad más adelante (ser paranoico es bueno), así que cuando esté listo, puede deshabilitar esta función SSH de inicio automático usando este comando:

sudo systemctl deshabilitar ssh

Este comando debe escribirse en el teclado conectado al pi, por supuesto.

PuTTY es un programa de terminal que se requiere para emitir comandos desde la PC al pi, por lo que debe obtener la última copia desde aquí.

Instale e inicie PuTTY. Deberá escribir la dirección IP de arriba en la entrada del Nombre de host y usar la configuración SSH predeterminada. Dé a la sesión el nombre que desee y presione guardar. Luego presione cargar y haga clic en ABRIR para iniciar una sesión.

Debería llevarte a la pantalla de inicio de sesión de pi. Utilice su mismo nombre de usuario y contraseña que utilizó anteriormente.

Paso 5: instala Pigpio

Ahora, lo único que necesitamos instalar después de esto sería la biblioteca pigpio y podemos hacerlo usando los siguientes comandos.

Sugerencia: simplemente puede copiar [ctrl + c] y pegar [clic derecho del mouse] estos y cualquier otro comando en la terminal PuTTY

sudo apt-get update

sudo apt-get install pigpio python-pigpio python3-pigpio

Paso 6: Opcional: Configuración del sistema de desarrollo

Opcional: configuración del sistema de desarrollo
Opcional: configuración del sistema de desarrollo

Así que aquí hay un consejo que puede ayudarlo a ahorrar algo de tiempo en su mundo de desarrollo de código. Realmente odiamos a los editores de texto basados en Unix. La interfaz de usuario es normalmente torpe y las fuentes apestan. GNU nano es casi soportable pero ninguno es tan refinado como SublimeText que puedes descargar desde aquí

Tenemos un entorno de desarrollo basado en Windows y nos encanta usar este editor de texto siempre que sea posible. Entonces, el consejo aquí es configurar su sistema para poder usar este editor de texto profesional de forma nativa en su escritorio de Windows para codificar directamente en su pi sin cabeza.

¿Cómo? Usando una aplicación gratuita llamada WinSCP que puede descargar desde aquí

Paso 7: Configuración de WinSCP

Configuración de WinSCP
Configuración de WinSCP
Configuración de WinSCP
Configuración de WinSCP

WinSCP es un programa seguro de transferencia de archivos que ofrece una representación gráfica de los archivos presentes en su rpi, como lo que ve en el administrador de archivos de su PC con Windows.

Así que continúe e instale los dos programas anteriores también ahora.

A continuación, tendrá que hacer algunos ajustes para que todos funcionen correctamente.

Para WinSCP, puede hacer clic en NUEVO sitio. Usaremos la configuración SFTP predeterminada y solo necesita ingresar la dirección IP (para el nombre de host) de su pi y el nombre de inicio de sesión (para el nombre de usuario). Puede optar por dejar la contraseña vacía si lo desea; se le solicitará la contraseña cada vez que inicie sesión.

A continuación, haga clic en el botón Avanzado y luego haga clic en el lado izquierdo para la configuración del Shell de entorno. En el lado derecho, cambie el menú desplegable "Predeterminado" a la opción "sudo su -". Esto permitirá que los cambios se escriban en su pi sin errores de permiso cuando presione guardar desde SublimeText.

Establezca SublimeText como editor predeterminado en WinSCP

Para hacer esto, haga clic en el botón Herramientas en la pantalla de configuración de inicio de sesión de WinSCP donde inició su cuadro de diálogo NewSite. Las dos capturas de pantalla muestran cómo está configurado, pero básicamente hará clic para configurar la preferencia Editores y Agregar un editor que será un editor externo. A continuación, puede buscar el archivo.exe de la ubicación de este editor en su computadora.

Paso 8: (w) obtener el código

(w) obtener el código
(w) obtener el código

Una vez hecho esto, inicie sesión con WinSCP y PuTTY.

Ahora que estamos listos, podemos iniciar nuestro código tinyLiDAR.

Cree un directorio llamado tinyLiDAR en su directorio home / pi.

Puede hacerlo haciendo clic con el botón derecho en el lado derecho de la pantalla de WinSCP y seleccione Nuevo / Directorio.

Ahora en la terminal PuTTY puedes escribir

cd t

y presione el tabulador para permitir que complete automáticamente su comando para llegar al directorio tinyLiDAR.

Una vez aquí escriba lo siguiente:

wget

para obtener los archivos directamente de nuestro servidor. Luego podemos descomprimirlos escribiendo

descomprimir r

y presiona tab para autocompletar el nombre nuevamente

Para ejecutarlo, simplemente escriba

python tlgui.py

Y su tinyLiDAR responderá a todos sus comandos en el pi:)

Paso 9: Nota para los futuros piratas informáticos

Continúe y eche un vistazo debajo del capó haciendo doble clic en cualquiera de los archivos de código de WinSCP. Son los que tienen extensión.py. Los archivos deberían abrirse en SublimeText directamente en su PC. Cambie lo que quiera y luego presione guardar. Sus cambios se guardarán directamente en su pi.

Cuando esté listo, vuelva a ejecutarlo usando la tecla de flecha hacia arriba para el último comando escrito o simplemente escríbalo nuevamente y presione enter:

python tlgui.py

Es posible que haya notado que el diseño de la GUI de Terminal se ve un poco mejor que la versión de Arduino. Es porque PuTTY admite caracteres Unicode, por lo que pudimos usar algunos caracteres de control de cursor adicionales para que se vea más refinado.

También hay un comando agregado aquí (en comparación con la versión de Arduino) que es "dc" para la función de lectura continua. Pruébelo y vea lo que piensa.

¡Eso es todo!

Gracias por leer y disfruta hackear el pi:)

Recomendado: