Actualizado: Cómo hacer una red de escáner de tableta USB con memoria usando una Raspberry Pi. Video conferencia y texto

Dado que las publicaciones sobre Raspberry Pi han llegado hoy, insertaré mis cinco centavos. Hace unos días publiqué una conferencia en Youtube con una demostración de cómo hacer un dispositivo para escanear con una unidad de red desde una Raspberry Pi y un escáner USB usando SANE, Samba y WiringPi, siendo dueño de un pequeño electricista y bash. Todo lo que se demuestra se utiliza en la vida real, aunque de una forma algo adaptada. Invito a los que estén interesados ​​a mirar ... bueno, y criticar aquí en los comentarios y karma. :) La



conferencia duró casi 2 horas, por lo que probablemente sea mejor verla directamente en Youtube; hay una tabla de contenido en la descripción del video. El video irá seguido de una transcripción de texto en forma abreviada (especial para Habr).



Feliz lectura o visualización. :)







Descripción del problema y concepto de la solución.



Comencemos con los datos iniciales. Tenemos un escáner normal (en mi caso Canon CanoScan LiDE 120) que se conecta al puerto USB de la computadora y puede escanear en la computadora. Pero aquí, por ejemplo, aparece una segunda computadora, y con la necesidad general de escanear, cambiar el escáner entre computadoras cada vez es un inconveniente. ¿Qué hacer? Sí, ahora hay impresoras multifunción en red, pero por alguna razón, esta no es una opción para nosotros.



Para resolver el problema, esencialmente necesitamos equipar un lugar separado para el escáner, organizar una unidad de red, conectar todas las computadoras de nuestra red doméstica y enseñarle al escáner a escanear en esta misma unidad de red. El usuario en el proceso de escaneo estará cerca del escáner, presione los botones y cambie las hojas escaneadas; no necesita correr a la computadora cada vez para dar un comando para escanear. Y luego, cuando se escanee todo lo que necesita, irá a su computadora, copiará o transferirá los archivos escaneados desde la unidad de red a sí mismo y continuará trabajando con ellos.



Entonces, elegimos un lugar para colocar el escáner, le traemos un cable desde el enrutador de nuestra red local (WiFi también es posible, pero lo dejaremos opcional), colocamos un enchufe para la fuente de alimentación de 220V, y ¿qué sigue?



En teoría, el escáner debe estar conectado a una computadora. Pero comprar e instalar una computadora separada para estos fines es costoso y no está justificado. Bueno, necesitará un teclado y un mouse con monitor, también necesitan espacio. Al mismo tiempo, no tenemos nada especial, escaneamos principalmente un formato (A4). Así que miremos hacia algo más portátil.



En nuestro proyecto utilizamos una computadora de placa única Raspberry Pi 2 Modelo B. Aunque no es nueva ni muy potente, su potencia nos alcanza para la tarea, realmente no consume energía, bueno, GPIO nos vendrá bien.



Para aquellos que quieran repetir todo inmediatamente sobre la base del escáner existente, les recomiendo que primero vayan al sitio web del proyecto SANE, vaya a la lista de dispositivos compatibles y asegúrese de que el proyecto admita adecuadamente el modelo de escáner específico. De lo contrario, los esfuerzos y, posiblemente, el dinero pueden volar por la tubería. Además, puede valer la pena organizar una máquina (virtual o real) con Debian 10 (más precisamente, la versión actual en el momento de verificar la versión a partir de la cual la Fundación Raspberry Pi hizo el sistema operativo) y estar cuerdo y verificar el trabajo usando la utilidad scanimage; si todo es normal, probablemente funcionará con frambuesas.



Auxiliar necesario



En cuanto a la fuente de alimentación de la frambuesa y el escáner, en el proyecto de demostración utilizo un cargador MicroUSB normal de dos amperios. Pero, si se supone que las frambuesas funcionan las 24 horas, no recomiendo usarlas. Esta no es su tarea, y no es un hecho que una carga en particular no fallará si no proporciona una corriente tan pequeña durante un tiempo prolongado en modo 24/7. Es mejor no ahorrar dinero y tomar una unidad de fuente de alimentación patentada o adaptar otra adecuada para tal trabajo.

Además, no recomiendo conectar el escáner con un cable USB de gran longitud o de cualquier origen. Esto se debe a más de seis meses de experiencia operativa; una sorpresa puede ocurrir en el momento más inoportuno.



En cuanto a la memoria de "disco", en las frambuesas, como saben, se utilizan tarjetas microSD. El décimo sistema operativo Raspberry Pi cabe en una tarjeta de 4 gigas. Pero todavía tendremos un software instalable decente allí, además de una carpeta de red para escaneos. Así que concéntrate en al menos 8; En el proyecto se utilizan 16. Además, para la grabación inicial de la imagen del sistema operativo, necesitará una computadora con un lector de tarjetas, al que se puede conectar la tarjeta. Usé un adaptador para un lector de tarjetas SD integrado en la computadora portátil.



También necesitamos un cuerpo. Hay muchas opciones. En la variante que se muestra, utilicé una caja no original de mayor grosor; esto hizo posible montar un esquema de dos botones y un LED proporcionado por el proyecto en la cubierta superior (más sobre esto más adelante), y la altura de la caja fue suficiente para botones, y para una frambuesa, y para conectores BLS para conectar a los pines GPIO. Este cuerpo está hecho de plexiglás. Así se ve con el circuito ensamblado, pero sin la frambuesa:







ahora uso este estuche para depuración y demostraciones, y en la versión de combate la frambuesa se adjunta en un panel eléctrico dedicado junto con la fuente de alimentación y se usa al mismo tiempo para otra tarea, y el circuito está montado en una caja pequeña separada, que se conecta a la frambuesa con un cable telefónico plano de cuatro núcleos.



Otro problema con las frambuesas es calentar el corazón. Si planea trabajar todo el día, pegamos un pequeño radiador con algo conductor de calor adecuado.



Preparando una tarjeta de memoria



Comencemos a preparar la tarjeta de memoria. Recientemente, la Fundación Raspberry Pi no solo cambió el nombre de Raspbian a Raspberry Pi OS, sino que también lanzó un programa llamado Raspberry Pi Imager para Windows, macOS y Ubuntu. Descarga este programa, instálalo en tu computadora y ejecútalo.



En primer lugar, en la ventana del programa, haremos Choose OS. Hay muchas opciones. De forma predeterminada, se ofrece Raspberry Pi OS (32 bits), pero es con un escritorio, y para dos, el escritorio es regular. Por lo tanto, vamos a Raspberry Pi OS (otro) y seleccionamos la opción lite allí; apenas necesitamos nada más que la línea de comandos. Luego colocamos y seleccionamos una tarjeta de memoria y escribimos una imagen en ella. Este proceso se muestra en el video a las 00:12:15 .



Configuración inicial



Puede poner la tarjeta de memoria en la frambuesa e ir a su configuración. Para hacer esto, además de poder, una red con Internet y un escáner, necesitamos conectar un teclado USB y un monitor con un cable HDMI (para la cuarta generación de frambuesas, existe MicroHDMI). Conectamos la fuente de alimentación al final. Y recuerde la seguridad al trabajar con partes conductoras abiertas, especialmente si la frambuesa no está en el estuche y la fuente de alimentación es cuestionable en términos de contacto eléctrico con 220V.



Encienda, inicie, inicie sesión con el inicio de sesión pi predeterminado y la contraseña de frambuesa. El proceso de configuración en el video comienza a las 00:18:43 .



En primer lugar, asegúrese de trabajar con sudo apt update y sudo apt upgrade. En el momento de grabar el video, el repositorio ofreció actualizar 30 paquetes, aunque grabé la imagen de la tarjeta de memoria justo antes de la configuración inicial. Aparentemente, no se recopila cada vez que se actualiza el repositorio.



Además, si lo desea, resolvemos el problema de los cuadrados en la consola en lugar de las letras rusas. Llamamos a sudo dpkg-reconfigure console-setup y recorremos los menús. Establecemos (o dejamos) los siguientes parámetros:



  • Codificación para usar en la consola - UTF-8
  • Juego de caracteres para admitir - Adivina el juego de caracteres óptimo
  • Tamaño de fuente: 8 x 16




Primera vez que reiniciamos. Hacemos esto de manera regular, a través de sudo reboot. Inicie sesión nuevamente, ejecute sudo raspi-config y proceda a la configuración inicial de los parámetros. Realizamos las siguientes tareas en él:



  1. ( : System options — Password )
  2. SSH (Interface options — SSH)
  3. (Localisation options — Locale; en_GB.UTF-8 UTF-8, en_US.UTF-8 UTF-8 ru_RU.UTF-8 UTF-8, )
  4. (Localisation options — Timezone; , )
  5. (Advanced options — Expand filesystem).




Después de eso, seleccione Finalizar. El programa ofrecerá reiniciar, lo cual hacemos.



Luego iniciamos sesión nuevamente (esta vez con una nueva contraseña), vamos a sudo raspi-config, seleccionamos Opciones de localización y luego Teclado. El programa de instalación del teclado ya escribirá en ruso.



En el modelo de teclado, como estándar, seleccionamos “Ordenador ordinario con 105 teclas (Int.)



En el diseño, primero seleccione“ Otro ”, luego“ Ruso ”y luego la opción (solo“ Ruso ”o algo más adecuado para el teclado existente).



A continuación, seleccione el método para cambiar diseños y otras teclas diferentes, si lo desea. Todo cambiará lo suficientemente rápido. Permanece en el menú principal de raspi-config para ir a Finalizar. No volveremos a esta utilidad.



Instalación y configuración de software adicional utilizado por el proyecto





Hacemos sudo apt install wirepi samba sane. Agregué a mc a esta lista (y a la conferencia) y le muestro cómo trabajar con él, pero esto es una cuestión de preferencia puramente personal, no me impongo a nadie.



Luego (preferiblemente en la mayoría de los casos) configure la dirección IP permanente en malinka. Creo que es mejor hacer esto en un enrutador, pero si esto no es posible, puede establecer la configuración de red estática editando /etc/dhcpcd.conf después del comentario Ejemplo de configuración de IP estática. El paquete dhcpcd se incluye con el sistema operativo Raspberry Pi listo para usar, no es necesario instalarlo.



La siguiente tarea es crear un directorio para almacenar archivos de escaneo. Elegí este caso y creé el directorio / var / scanned. Este directorio necesita tener esos permisos para que samba pueda trabajar con él.



Ahora, por supuesto, estamos configurando samba. Vamos a /etc/samba/smb.conf y registramos la configuración global y la sección con los datos del nuevo recurso de red y la ruta al directorio que creamos allí. El video lo muestra a las 00:41:51 . Pero, por supuesto, los detalles de la red pueden dar ciertas diferencias con respecto a la configuración que se proporciona allí.



Después de la configuración, se recomienda encarecidamente reiniciar la frambuesa y verificar la unidad de red desde la computadora. Desde allí, en la mayoría de los casos, necesitará acceso completo a los archivos del directorio.



Antes de la transición a la costura y la programación, nos quedan dos tareas: decidir sobre la parte de hierro y primero determinar los parámetros para el programa de escaneo.



Empecemos por la parte de hierro. Para hacer esto, ejecute gpio readall. Malinka mostrará la numeración de los pines en el conector GPIO en las columnas Físicas y su propósito en las columnas Nombre. Para el circuito, necesitamos tres puertos GPIO y un cable común (en la columna Nombre, se llama 0v; hay muchos de ellos en el conector, pero no necesitamos tanto, simplemente elija uno de ellos). Anotamos sus nombres y números en el conector. Para mí, elegí GPIO.1 en el pin número 12, GPIO.2 en el pin 13 y GPIO.3 en el pin 15. Conectaré el cable común al pin número 9.



imagen



Ahora decidamos por el escáner, que ya tenemos conectado a USB. Haciendo sudo sane-find-scanner. Si el escáner no está visible con esta utilidad, puede haber un problema con el escáner, la frambuesa, el cable o la fuente de alimentación; esto debe abordarse por separado. Ahora haga sudo scanimage –help | menos y ver las opciones permitidas para nuestro dispositivo. Para mí, escribiré las opciones l, t, x, y, resolución y formato. Estas opciones irán a la línea de comandos del programa de escaneo.



Esto completa la configuración inicial de la frambuesa. Antes de montar el circuito, la frambuesa debe estar apagada. Esto, si alguien no recuerda, se hace con el comando sudo shutdown –h now. Después de un tiempo, la imagen de la pantalla desaparecerá y todos los LED de la frambuesa se apagarán, excepto el LED de encendido. Esto significará que el sistema ha terminado de funcionar, puede apagar la energía y comenzar a hacer manualidades.







GPIO en frambuesas es solo digital (es decir, dos niveles 0 y 1) y puede funcionar en tres modos: solo una entrada (se llama al modo), una entrada con una resistencia pull-up con una resistencia de 50-65 kilo ohmios (llamada) y una salida (llamada). Usaremos los dos últimos modos.



Como escribí anteriormente, necesitaremos conectar dos botones a través de GPIO (llamémoslos "Inicio" y "Detener") y un LED. Naturalmente, para limitar la corriente, deberá conectar una resistencia limitadora en serie con ella; Elegí una resistencia de salida con un valor nominal de 2,2 kiloohmios y una potencia de disipación de 0,25 W; esto suele ser suficiente. El diagrama de conexión resulta como sigue:







Basado en el uso del modo up, recuerde que cuando se presiona el botón, se leerá el valor 0 de la entrada GPIO, y cuando se suelta - 1. Ambos botones están normalmente abiertos, sin fijación.



No me detendré en los detalles de la ejecución aquí, sobre todo porque anteriormente mostré una foto del caso terminado, donde ya estaba todo. Por razones de seguridad, solo recomendaría elegir botones cuyas partes exteriores sean todas de plástico, para no sobresalir con las partes conductoras expuestas. Me conecté a los pines GPIO con conectores BLS de un solo pin, similares a los que se usan en las carcasas de las computadoras; Para esta demostración, simplemente tomé un montón de cables de proyectos de Arduino con conectores adecuados, seleccioné cuatro multicolores, corté los extremos innecesarios, los limpié y soldé a los detalles. Otra opción es usar un conector de cable plano de doble fila de 40 pines, o incluso un trozo de un cable IDE antiguo de discos duros o unidades de CD, si alguien tiene algo más. Esta opción, por cierto, también es adecuada para cajas de altura estándar;tienen una ranura para tal bucle para salida al exterior.



Bueno, y también, recuerdo, sufrí con el hecho de que en las placas frambuesa (en cualquier caso, 2 modelo B y 3 modelo B) no se indica la numeración de los pines del conector GPIO. Lo arreglaré ahora; estos dos modelos no tienen diferencias al respecto.







Implementación de la parte de software





La parte del software se implementa (¡tadam!) En forma de dos scripts bash: un script de configuración y otro de trabajo. Una explicación detallada del algoritmo y la implementación del diagrama de flujo está en el video a las 01:08:30 . No creo que tenga sentido entrar en detalles aquí; Los códigos fuente de los scripts se pueden descargar aquí y estudiarlos en su tiempo libre.



El lanzamiento del script de trabajo principal se escribe para iniciar en /etc/rc.local. Lo único: primero tuve que registrar el cambio del directorio de trabajo al directorio con scripts. Pero no hay nada terrible aquí, no interfiere con seguir trabajando. Y, por supuesto, no olvide agregar el ícono & después del comando de inicio, de lo contrario, habrá problemas al iniciar el sistema.



Bueno, en realidad solo quedaba mostrar el proceso de escaneo real, así como las conexiones ssh y ajustar los parámetros, tal como estaba conmigo. Puede verlo en el video a las 01:41:04 .



De alguna manera sucedió. En la versión de combate, de las diferencias, solo el escaneo va a un NAS separado, por lo que los scripts se modifican ligeramente. Y así, creo, los escaneos incluso se pueden enviar al mensajero con un bot en algún lugar, solo habría un deseo de comprender la API correspondiente y hacer algo así en curl. Hay muchas opciones. Buena suerte con la implementación. :)



All Articles