?>/script>'; } ?> Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C. Widgets Magazine

Autor Tema: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.  (Leído 68845 veces)

0 Usuarios y 1 Visitante están viendo este tema.

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #20 en: 03-09-2017, 15:53 (Domingo) »
TEST de tensión de cada GPIO:

(Las imágenes se pueden ampliar pinchando sobre ellas)

Alimentación (R66 + TIERRA (GND)): (Obtengo 5V)  >:(



Cable BLANCO (R107=GPIO9=SDA) + TIERRA (GND): Obtengo 3,23 V  ??? :( (¿es demasiado bajo?) (Edito: después de retocar y mejorar el contacto, ya consigo 3,3V)


Cable MARRÓN (R109=GPIO10=SCL) + TIERRA (GND): Obtengo 3,26 ... 3,27 V  ???  :( (Edito: aquí también he logrado los 3,3V)


¿Son estos voltajes correctos?
En caso afirmativo.... ¿Alguna idea de qué puede estar pasando en la pantalla para no nconseguir ver los 16 cuadritos...? ¿Puede ser culpa de la baja tensión de los SDA y SCL? (aunque me parece raro, porqye yo creo que debería ser por alimentación...)
Las mediciones están hechas pinchando sobre el pegamento conductor, que cubre completamente los puntos GPIOs de la placa. Si estas tensiones son correctas, o al menos aceptables, el experimento este del pegamento conductor lo daré por concluido como éxito rotundo.

(Por si alguien tiene curiosidad, los pegotes amarillos son plastilina, que la utilizo para que los cables se queden quietecitos y se porten bien  ;D)

Como siempre y por supuesto, mil gracias.

PD: Estoy siguiendo el tutorial a ver qué consigo. De momento, en la parte de firmware, averiguar la base de los GPIO, donde a ti te sale 489, a mí me da 0,  :-\ Es un valor muy raro, no?  ???

Por cierto, otra pregunta: ¿Para qué sirve el jumper que hay en el controlador?
« Última modificación: 05-09-2017, 00:34 (Martes) por peperfus »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #21 en: 03-09-2017, 17:24 (Domingo) »
Al intentar esto, obtengo...


Y lo mismo con el otro kmod...

Y al reiniciar el router,
ls /dev/i2c*
no me encuentra nada.

PD: Mi open en este router es el: BARRIER BREAKER (14.07, r42625)
« Última modificación: 03-09-2017, 18:06 (Domingo) por peperfus »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #22 en: 04-09-2017, 02:13 (Lunes) »
Ok, he conseguido avanzar.
Actualizando a Chaos Calmer.

Citar
root@OpenWrt:~# dmesg | grep -E 'i2c|I2C'
[   13.520000] i2c /dev entries driver
[   13.540000] Custom GPIO-based I2C driver version 0.1.1
[   13.544000] i2c-gpio i2c-gpio.0: using pins 489 (SDA) and 490 (SCL)

Citar
root@OpenWrt:~# ls /dev/i2c*
/dev/i2c-0

Todo va genial, igual que tu tutorial, mismos datos, todo igual.... base 480...
hasta que:
Citar
root@OpenWrt:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
:'(

Ok, mira, después de hacer esto:
Citar
echo "489" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio489/direction
echo "490" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio490/direction

Citar
root@OpenWrt:~# ls /sys/class/gpio/
export       gpio489      gpio490      gpiochip480  unexport
Ahí están.

Pero después de reiniciar...
Citar
root@OpenWrt:~# ls /sys/class/gpio/
export       gpiochip480  unexport
Desaparecen.
Y si vuelvo a hacer los echos de export y direction, me dice:
Citar
write error: Device or resource busy

¡ Vamos, que ya falta poco !  ;D
« Última modificación: 04-09-2017, 22:17 (Lunes) por peperfus »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #23 en: 04-09-2017, 15:10 (Lunes) »
Si lo pruebo con LEDE:
Me atasco en:

Citar
Unknown package 'libi2c'.
Collected errors:
 * pkg_hash_fetch_best_installation_candidate: Packages for libi2c found, but in                                                                                        compatible with the architectures configured
 * opkg_install_cmd: Cannot install package libi2c.
(y las i2ctools, lo mismo)

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #24 en: 05-09-2017, 00:16 (Martes) »
Limpiando y retocando la unión de los cables con los gpios... he conseguido los 3,3 V en ambos, por lo que ahora la conexión eléctrica, deduzco que es prácticamente perfecta.
Sin embargo, sigue sin detectarme el i2c.
Si no encuentro solución, como tengo otro router igual (5387un) y otra pantallita también igual, lo intentaré con el otro, pero esta vez soldando (ya tengo estaño de 0,5 pedido) y a ver qué pasa.

raphik... ¿estás ahí? ¿me lees? ¿soy muy pesado  ^-^;D ;D

¿No hay nada que se te haya escapado en el tutorial, o algún error, algún olvido...?

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #25 en: 05-09-2017, 00:21 (Martes) »
Sí, hoy estoy conectado y te estoy leyendo.

Para ajustar la pantalla no hace falta conectar los cables SDA y SCL. Lo único que hay que hacer es girar con un destornillador la parte blanca central del potenciómetro azul hasta que se vean bien los cuadritos.


Los voltajes SDA/SCL deben rondar los 3.3V. Las tensiones que obtienes de 3.23 y 3.27 son perfectas. Por ahí, ningún problema.

El jumper "LED" retro-ilumina la pantalla. Si lo quitas, el LED de la pantalla se apaga. Supongo que en algún caso podría venir bien para conecta un pulsador que permita encender la pantalla justo cuando haya que hacer una lectura y el resto del tiempo mantenerla apagada.
« Última modificación: 05-09-2017, 00:22 (Martes) por raphik »

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #26 en: 05-09-2017, 00:30 (Martes) »
¿Has comprobado si los GPIOs funcionan bien?

Si tecleas en la consola
echo "1" > /sys/class/gpio/gpio489/value
deberías obtener un valor próximo a los 3.3V en el contacto SDA (GPIO9)

Para poner SDA a 0V, tecleas
echo "0" > /sys/class/gpio/gpio489/value

Lo mismo para SCL
echo "1" > /sys/class/gpio/gpio490/value  => pone GPIO10 a 3.3V
echo "0" > /sys/class/gpio/gpio490/value  => pone GPIO10 a 0V

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #27 en: 05-09-2017, 00:37 (Martes) »
Gracias por la respuesta...

No van. En todos los casos obtengo 3,3V.  :-\

(Además, tengo que hacerlo antes de reiniciar, porque en cuanto reinicio....)

root@OpenWrt:~# echo "0" > /sys/class/gpio/gpio490/value
-ash: can't create /sys/class/gpio/gpio490/value: nonexistent directory
« Última modificación: 05-09-2017, 00:44 (Martes) por peperfus »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #28 en: 05-09-2017, 00:46 (Martes) »
¿Quieres decir que los GPIOS están dañados?

La primera vez que lo intenté, lo hice con el soldador, ..... ¿lo habré quemado o algo por el estilo?

Estoy viendo en el hilo de gpios que hay más...
Voy a probar a usar otro entonces, no? ¿Puedo usar cualquiera?

Al final, lo que voy a hacer es.... ya que tengo otro router igual, lo volveré a intentar con el otro, que es "virgen", pero esta vez, lo haré directamente con el pegamento conductor. Esta noche me pondré con ello y mañana, que ya estará seco, haré las conexiones y las pruebas. Volveré con los resultados.
Si vuelve a fallar, pillaré otro router y esa vez ya sí lo haré con un buen soldador de punta fina, estaño de 0,5 (el que tengo ahora es de 1), una visera con lupa y luz y coraje.  >:D
« Última modificación: 05-09-2017, 14:49 (Martes) por peperfus »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #29 en: 05-09-2017, 14:17 (Martes) »
Algunas veces el bus I2C, necesita tener las señales con resistencias pullups a 3.3v.
¿Has probado a ponerlas?

Edito.
Aquí puedes ver un ejemplo. Es para 5v, pero tú necesitarías 3.3v: http://www.robot-electronics.co.uk/i2c-tutorial

Edito 2.
Algunas pantallas LCD necesitan un reset por software, antes de que presenten nada en pantalla. En tu caso, el bus I2C ni siquiera detecta el LCD, por lo que me inclino a pensar lo de las resistencias.
« Última modificación: 05-09-2017, 14:37 (Martes) por Tki2000 »

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #30 en: 05-09-2017, 16:20 (Martes) »
Algunas veces el bus I2C, necesita tener las señales con resistencias pullups a 3.3v.
¿Has probado a ponerlas?

Edito.
Aquí puedes ver un ejemplo. Es para 5v, pero tú necesitarías 3.3v: http://www.robot-electronics.co.uk/i2c-tutorial
...

Gracias por arrojar luz y perdón por la ignorancia.  :-[ Esto de los GPIOS es totalmente para mí, pero me llamó mucho la atención y el interés cuando vi que se le podía poner una pantallita al router para mostrar información...

Voy a leerme el tuto que has puesto, que tiene muy buena pinta y cuando avance algo, comento.

seny

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #31 en: 05-09-2017, 19:52 (Martes) »
..
(Además, tengo que hacerlo antes de reiniciar, porque en cuanto reinicio....)
..
Hola, En cada reinicio hay que exportar y declarar la dirección de los gpio, no queda guardado, lo que yo hago es incluir los comandos en /etc/rc.local
Saludos

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #32 en: 05-09-2017, 20:47 (Martes) »
Ya, pero es que ni siquiera me deja volver a exportarlos y declararlos. Me da el error de resource busy.

raphik, seny.... ¿vosotros habéis usado resistencias pull-up?

En caso afirmativo, ¿de qué valor/es? y ¿conectadas de dónde a dónde?

Me imagino que raphik, las habrás usado de cada línea (SDA y SCL) a VCC (5V en tu caso)...

Es lo que voy a probar. Voy a pillar unas de 1800 Ohm, como recomienda el tutorial comentado por Tki2000. Por cierto.... ¿con las de 1/4 de watio es suficiente? (Creo que eso se refiere a la cantidad de electricidad que soportan, ¿correcto? De electrónica no controlo)
 Y las colocaré entre SDA y 5V y SCL y 5V respectivamente.

danitool

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #33 en: 05-09-2017, 21:51 (Martes) »
Hola peperfus es improbable que quemes un GPIO con el soldador, las pistas de cobre con lo estrechas que son, con cierta longitud, no creo que sean capaces de transportar tanto calor hacia el SoC, ya tendrías que dejarlo mucho el tiempo el soldador dándole chicha al tema para que ocurriese.

Pero sí es más probable que puedas quemar un GPIO por voltage. Por lo que comentais el tema del I2C lo estais usando en 5V?, esto puede ocasionar problemas.

Comprueba que realmente has quemado los GPIOs como te han dicho poniendolos a nivel bajo y alto midiendo si los voltages cambian. Si es así cuando montes todo de nuevo con gpios que funcionen trata de usar 3.3 V para alimentar la pantalla I2C.

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #34 en: 05-09-2017, 22:48 (Martes) »
La duda viene entonces en ese caso... por qué a raphik le va y a mí no...

Voy a hacer tests y vuelvo con los resultados.
Gracias danitool

EDITO:
Resultados de las mediciones de tensión:
value (sda/scl)SDASCL
0/03,312,63
0/13,313,32
1/03,312,58
1/13,313,31

¿Debería cambiar VCC de 5V a 3,3V?
En caso afirmativo... si alguien me indica de dónde sacarlo se lo agradecería.

Edito:
Esto.... ¿Se los puedo coger prestados a la patilla de un LED o habría algún problema?
He encontrado un punto que los da. En la zona U29 (si la vista no me falla). Es un cuadradito dibujado con 3 puntitos, cerca del led de Internet. El punto más cercano al frontal del router, ese da 3,3V.

Pero si lo puedo coger de un LED, mejor, que es más fácil. Ahora que lo pienso, el led DSL también da los 3,3 y dado que en este router, no va el modem adsl en open.... pues digo yo que ese led no se usará para nada, ¿verdad?. Si me dais el OK, cojo VCC del led DSL.

Lo siento, no he podido resistirme. He conectado VCC a la patita positiva del led DSL (que no se enciende en ningún momento Se enciende durante un segundo al encender el router). Pero nada, lo mismo. La pantalla se enciende, con lo que le llega alimentación, pero en cuanto intento declarar de nuevo la movida del export, lo mismo:

Citar
echo "489" > /sys/class/gpio/export
sh: write error: Device or resource busy
« Última modificación: 06-09-2017, 01:02 (Miércoles) por peperfus »

danitool

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #35 en: 06-09-2017, 01:26 (Miércoles) »
Si los GPIOs están estropeados, que según parece con la tabla que has puesto es el caso, no te funcionará.

Busca otros GPIOs que sí funcionen. La alimentación de 3.3 voltios cógela del puerto serie directamente.

Aunque de todas formas no estoy seguro si tu display puede alimentarse con 3.3V. Si no se puede, habría que usar un level shifter, para convertir el nivel de tensión de cada línea de 3.3 V a 5V. Un divisor de tensión con dos resistencias igual funciona, sería la chapuza fácil.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #36 en: 06-09-2017, 09:54 (Miércoles) »
Ya, pero es que ni siquiera me deja volver a exportarlos y declararlos. Me da el error de resource busy.

raphik, seny.... ¿vosotros habéis usado resistencias pull-up?

En caso afirmativo, ¿de qué valor/es? y ¿conectadas de dónde a dónde?

Me imagino que raphik, las habrás usado de cada línea (SDA y SCL) a VCC (5V en tu caso)...

Es lo que voy a probar. Voy a pillar unas de 1800 Ohm, como recomienda el tutorial comentado por Tki2000. Por cierto.... ¿con las de 1/4 de watio es suficiente? (Creo que eso se refiere a la cantidad de electricidad que soportan, ¿correcto? De electrónica no controlo)
 Y las colocaré entre SDA y 5V y SCL y 5V respectivamente.

Da igual la resistencia y vataje que pongas. Por esas líneas van a circular señales sin apenas intensidad. No son de alimentación. Desde 1k hasta 10k debería funcionar.
El que tengas que usarlas o no, depende del modelo de router, y si las incluye ya o no. Si se supone que el router no va a usar I2C en esos pines, aunque sean los designados para hacerlo, se ahorrarán soldar esas resistencias para ahorrar costes. Por eso luego, si lo queremos usar para eso, tenemos que ponerlas nosotros.

La ignorancia puede ser nuestra mayor fuente de aprendizaje. Sólo hay que decidir qué hacemos con nuestra propia ignorancia.

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #37 en: 06-09-2017, 14:09 (Miércoles) »
Ok, entonces lo que haré será colocar las resistencias en cuanto me lleguen y coger los 3,3V del puerto serie. Volveré con resultados.

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #38 en: 06-09-2017, 19:30 (Miércoles) »
raphik, seny.... ¿vosotros habéis usado resistencias pull-up?
En caso afirmativo, ¿de qué valor/es? y ¿conectadas de dónde a dónde?
Me imagino que raphik, las habrás usado de cada línea (SDA y SCL) a VCC (5V en tu caso)...
Como digo en el primer post, alimento la pantalla con 5 Voltios.


El pin VCC de la plaquita expansora I²C lo conecto mediante el cable rojo al punto R66 del router.
El pin GND de la expansora I²C lo conecto mediante el cable negro al pin GND del router.


En cuanto a las líneas SDA y SCL, las conecto directamente, sin resistencias pull-up, de la placa expansora a los puntos R107 y R109 del router. Funcionan a 3'3 Voltios.


No puedo decir que todas las pantallas LCD se puedan conectar como yo lo he hecho, porque sólo tengo una: https://www.banggood.com/es/IIC-I2C-1602-Blue-Backlight-LCD-Display-Module-For-Arduino-p-950726.html

Como suele pasar, después de hacer la compra he visto otra igualita pero más barata en otro sitio: https://es.aliexpress.com/store/product/IIC-I2C-1602-Serial-Blue-Backlight-LCD-Display-For-Arduino-2560-UNO-AVR-A004-Free-Shipping/1185416_1738714643.html

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #39 en: 06-09-2017, 20:26 (Miércoles) »
Hecho. Pantalla(s) pedidas. Gracias por poner los enlaces y por la paciencia...

La misma que pediste. La he preferido pedir de banggood, aunque sea un poquito más cara, porque viene de Europa y llega antes.
Además, he pedido otra de 2004 (20 caracteres x 4 lineas).
También estoy esperando las resistencias para probarlas con mi pantalla actual.

De una manera u otra, con un material u otro, supongo que lo conseguiré.

Edito: la que tengo ahora mismo es esta.
« Última modificación: 06-09-2017, 20:38 (Miércoles) por peperfus »