domingo, 30 de abril de 2023

Arduino Nano chino (con controlador CH340) funcionando en Windows y Linux

Introducción

Existen en el mercado distintos tipos de placas Arduino para la realización de infinidad de proyectos. Puedes consultar nuestra entrada de "iniciación a Arduino" para obtener más información acerca de los distintos modelos y características. Hasta ahora, nosotros hemos trabajado con Arduino Uno sin excesivos problemas. Sin embargo, últimamente nos topamos con que determinados tipos de placa no funcionaban correctamente en Windows y sobre todo en Linux, principalmente los Arduino NANO. Nos pusimos a investigar hasta que encontramos el problema y posteriormente la solución.

Arduino nano, pequeño y funcional

Arduino uno, para proyectos más voluminosos

Raíz del problema: controlador CH340 versus RS-232

Los controladores RS-232 y CH340 son dos tipos diferentes de chips utilizados para comunicar distintos aparatos mediante el puerto serie, y por tanto incluido en todas las placas Arduino para que estas puedan "hablar" con el PC. Aquí están las diferencias entre ellos:

El RS-232 es un estándar de comunicación serial ampliamente utilizado en la industria y su creación se remonta al año 1962 (aunque se ha ido revisando y actualizando constantemente hasta el día de hoy). Por otro lado, el CH340, mucho más moderno y barato, es un controlador USB a UART que permite la comunicación entre la placa Arduino y un puerto USB en la computadora. No sigue el estándar RS-232, sino que utiliza una comunicación UART (Universal Asynchronous Receiver-Transmitter).

Existen muchas diferencias entre RS-232 y CH340. Por ejemplo, el RS-232 utiliza voltajes positivos y negativos relativamente altos (hasta ±15V) para transmitir datos, lo que permite una mejor inmunidad al ruido y una mayor distancia de transmisión. En cambio, el CH340 utiliza niveles de voltaje TTL (Transistor-Transistor Logic) de 0V y 5V para representar los bits de datos.

El CH340 es un chip conversor USB a UART, lo que significa que se encarga de convertir la comunicación USB de la computadora en una señal UART que la placa Arduino pueda entender. Por otro lado, el RS-232 no requiere una conversión USB a UART, ya que utiliza un estándar de comunicación diferente.

Cuando comenzaron a crearse las primeras placas Arduino (italianas), se incluyó en su diseño al antiguo controlador estándar RS-232. Esto tenía la ventaja de proporcionar una comunicación más básica y directa a costa de un mayor consumo y un mayor precio. Posteriormente se diseñaron nuevas placas Arduino más económicas (procedentes principalmente de China) que hacían uso del controlador CH340.  La diferencia de precios entre una placa que utilizada el estándar RS-232 y otra que usa el CH340 puede ser de entre 10 y 15 euros en el mercado (las placas Arduino UNO originales tienen un precio de unos 15 euros frente a los 4 euros de las placas chinas con controlador CH340). Aquellas siguen usándose por razones de compatibilidad para determinados equipos antiguos que usan puertos serie estándar. La elección entre comprar una y otra por tanto depende de las necesidades específicas de comunicación, la compatibilidad de la placa Arduino que estés utilizando y del del precio.

La placa superior incluye el controlador RS-232.
La placa inferior incluye el controlador CH340.

Detalle del controlador CH340

Nosotros disponemos en el taller de los dos tipos de Arduino UNO. Sin embargo, todos nuestros Arduino NANO incluyen el controlador CH340.

Problema a la hora de utilizar los Arduino CH340

Hemos podido comprobar que cuando conectamos una placa Arduino con controlador CH340 al puerto USB del PC, este no siempre la reconoce. Y cuanto esto ocurre, el IDE de programación de Arduino no se comunica correctamente con la placa, con lo que genera errores como el siguiente:

Windows no dispone de forma nativa de los controladores necesarios para usar CH340. No entendemos la razón, pues hoy en día se trata de un controlador estándar usado en miles de productos. Por tanto, cuando conectamos una placa Arduino "china", esta no es reconocida y al intentar subir el programa a la misma se generan los errores antes mencionados.
El caso de Linux es distinto. Linux viene de serie con todos los drivers necesarios para usar CH340. Sin embargo, hemos podido comprobar que algunas placas Arduino UNO chinas son reconocidas perfectamente, pero la mayoría (si no todas) las placas Arduino NANO no son reconocidas. No entendíamos por qué pasaba esto. En nuestras pruebas hemos utilizado Ubuntu 20.04 y Ubuntu 22.04, y en ambos sistemas ocurría el mismo problema.

Soluciones encontradas

En Windows la solución es simple. Solamente debemos instalar el driver que maneja el controlador CH340. Podemos encontrarlo fácilmente en Internet, o descargarlo de este enlace.

Driver para instalación en Windows. Una vez descargado debemos ejecutarlo.

Durante la ejecución aparecerá esta pantalla.
Es posible que Windows, durante el proceso, nos solicite permiso para la instalación,
en cuyo caso debemos aceptar.

A continuación se mostrará esta pantalla. Entonces deberemos pulsar "Install"

Cuando finalice la instalación, se nos mostrará el siguiente mensaje.
Ya podremos usar Arduino sin problemas

Ahora, cuando conectemos la placa Arduino aparecerá el siguiente mensaje en Windows

En Linux (Ubuntu 20.04 y superiores) se incluye de serie el controlador CH34X. El problema en este sistema operativo es algo distinto. Todos los dispositivos que se conectan a un PC por el puerto USB incluyen de fábrica un par de códigos de identificación tanto del fabricante como del tipo de aparato, cada uno de ellos de 4 cifras (4+4 cifras en total). Pues bien, todos los Arduinos NANO con los que nos hemos encontrado hasta el momento tienen como código identificador el siguiente: 1a86-7523. Y ya es casualidad que exista otro aparato en el mercado con el mismo código (una especie de teclado Braille) que usa para comunicarse con el PC el controlador CH340. Linux viene preparado para reconocer este aparato, y cuando intentamos conectar un Arduino NANO con este código, se produce un conflicto de reconocimiento y todo falla.
Aparato Braille con controlador CH340 que entra en conflicto con Arduino NANO

Pues bien, simplemente hay que eliminar de cierta base de datos la información relativa al "aparato Braille" editanto para ello el fichero:

 /usr/lib/udev/rules.d/85-brltty.rules

y eliminando la siguiente línea de su interior:

ENV{PRODUCT}=="1a86/7523/*", ENV{BRLTTY_BRAILLE_DRIVER}="bm", GOTO="brltty_usb_run"

Podemos bien borrar la línea y guardar el fichero o bien ponerla en comentario, precediéndola del caracter "#". Una vez guardado el fichero, debemos reiniciar el sistema y listo.

Recuerda que para editar el fichero, debes tener permisos de administrador. Puedes abrir un terminal y teclear el siguiente comando:

sudo nano /usr/lib/udev/rules.d/85-brltty.rules

El comando sudo le dice al sistema que lo que vas a ejecutar (el comando nano) debe hacerse como administrador. Por eso, tras la ejecución se pedirá la clave de administración. Por otra parte, el comando nano invoca al editor NANO. Puedes usar cualquier otro editor de texto en lugar de NANO, como el gedit o el mcedit (siempre que los tengas instalados).

Es posible que en otras distribuciones de Linux exista una línea similar en alguno de los ficheros que se encuentran dentro del directorio /usr/lib/udev/rules.d/. Pero por el momento, esta solución nos ha servido para que nuestros Arduino NANO chinos funcionen perfectamente.

Configurar IDE para usar el Arduino correcto

Finalmente debemos recordar que debemos indicar en el IDE Arduino que tipo de placa estamos usando. En nuestro caso, para usar los pequeños Arduino NANO chinos, debemos seleccionar la información que se muestra en la siguiente imagen en donde ya aparece disponible el puerto USB correcto.
Parámetros de configuración de Arduino NANO en Linux


Autor:
Pablo Díaz Márquez


miércoles, 26 de abril de 2023

 

NUESTRO PEQUEÑOS-GRANDES EMPRENDEDORES


Los alumnos de 2º de ESO,  que cursan la materia de Tecnología, 
se han convertido diseñadores, y han aprendido, a través de
 las aplicaciones de Tinkercad y sketchup, a realizar diseños 
en 3D que después hemos impreso con nuestra impresora 3D. 

Además, aprovechando los conocimientos y destrezas adquiridos y en colaboración con los alumnos de 1ºBachillerato de la materia de Biología, que han a fabricado jabón, nuestros pequeños emprendedores han diseñando e impreso en 3D pequeños moldes con diferentes formas, que podrán aprovechar para obtener jabones con diseños muy originales




martes, 25 de abril de 2023

Trabajando con Arduino

 Los alumnos de 4º ESO, están trabajando con Arduino, hacen pequeños proyectos en los que utilizan sensores. Estos son algunos de los que están realizando:

  1. Sistema de seguridad con sensor de presencia: Los alumnos construyeron un sistema de seguridad que utiliza un sensor de presencia para detectar movimientos no deseados. Cuando el sensor detecta la presencia de alguien, se activa una alarma sonora y se encienden luces de advertencia.

  1. Control automático de iluminación con sensor LDR: En este proyecto, los estudiantes utilizaron un sensor de luz (LDR) para controlar automáticamente la iluminación de una habitación. Cuando la luz ambiental disminuye por debajo de un umbral establecido, Arduino activa las luces de la habitación.

  2. Estación meteorológica con sensor de temperatura y humedad: Los alumnos crearon una estación meteorológica que recopila datos de temperatura y humedad utilizando sensores específicos. Estos datos se muestran en una pantalla LCD y se pueden registrar para su análisis posterior.

  3. Seguimiento de movimiento con sensor PIR: En este proyecto, los estudiantes utilizaron un sensor de infrarrojos pasivo (PIR) para detectar movimientos. El Arduino interpreta las señales del sensor y activa diferentes dispositivos según el tipo de movimiento detectado, como encender luces o iniciar una grabación de video.

  4. Sistema de riego automático basado en la humedad del suelo: Los alumnos construyeron un sistema de riego automático que utiliza un sensor de humedad del suelo para determinar cuándo regar las plantas. Si el nivel de humedad del suelo cae por debajo de un umbral establecido, Arduino activa una bomba de agua para regar las plantas.

  5. Prueba y uso de matrices leds: Los alumnos están probando el funcionamiento de estas matrices para poder crear algún proyecto en el que utilizarlas.

Autora: Paqui Hernández Caballo