?>/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 68800 veces)

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

raphik

  • Visitante
Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« en: 24-04-2016, 23:09 (Domingo) »
Este proyecto tiene por objeto la instalación de una pantalla LCD en cualquier router OpenWrt que disponga de dos GPIO libres.

A) EL HARDWARE

A.1) Pantalla.

Para este proyecto utilizo una pantalla 1602 comprada en una tienda china y un router AR-5387un.


Por la parte de detrás de la pantalla hay un expansor de bus I²C, un Philips PCF8574T, que permite su conexión con el router con sólo cuatro cables (GND, VCC, SDA y SCL).



A.2) Cables y soldaduras.

Se le quita la tapa al router. Se suelda el cable SDA (naranja) en el punto R107 (GPIO9) y el cable SCL (verde) en el punto R109 (GPIO10).


El cable GND (negro) se puede soldar al GND del puerto serie (0 voltios). El cable VCC (rojo) lo he soldado en el punto R66, que da +5 Voltios. Igual se puede alimentar a +3'3 voltios, pero no lo he probado.


A.3) Ajuste del contraste.

Ya se puede conectar la pantalla al router. Lo normal es que la pantalla se ilumine y no se vea nada. Hay que ajustar el contraste con el potenciómetro azul hasta que se vean nítidamente los 16 cuadritos de la primera fila.



B) EL FIRMWARE

B.1) GPIO.

Para poner en marcha los GPIO hay que averiguar su "base". Desde una terminal de OpenWrt.
Código: [Seleccionar]
cat /sys/class/gpio/gpiochip*/base | head -n1
480
El valor devuelto (480) es la base, un valor que se suma al GPIO para obtener su valore real. El GPIO9 es en realidad el 489 y el GPIO10, el 490.

Para poder utilizar los GPIO  se exportan y se declaran "de salida".
Código: [Seleccionar]
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

Se puede comprobar que los GPIO funcionan correctamente con un polímetro o con un led y una resistencia de 330 Ohmios en serie.
Código: [Seleccionar]
#SDA (GPIO9) a 3.3V y a 0V.
echo "1" > /sys/class/gpio/gpio489/value
echo "0" > /sys/class/gpio/gpio489/value
#SCL (GPIO10) a 3.3V y a 0V.
echo "1" > /sys/class/gpio/gpio490/value
echo "0" > /sys/class/gpio/gpio490/value


B.2) Bus I²C.

Para que el par de GPIO funcionen como bus I²C hay que instalar un par de paquetes, "montar" el bus y reiniciar el router.
Código: [Seleccionar]
opkg update
opkg install kmod-i2c-gpio-custom
opkg install kmod-gpio-pcf857x
echo "i2c-gpio-custom bus0=0,489,490" > /etc/modules.d/59-i2c-gpio-custom
echo "i2c-gpio" > /etc/modules.d/60-i2c-gpio
reboot

Una vez reiniciado el router, se puede comprobar que OpenWrt detecta el bus.
Código: [Seleccionar]
dmesg | grep -E 'i2c|I2C'
[   14.092000] i2c /dev entries driver
[   14.112000] Custom GPIO-based I2C driver version 0.1.1
[   14.120000] i2c-gpio i2c-gpio.0: using pins 489 (SDA) and 490 (SCL)

Una comprobación adicional devuelve el punto de montaje del bus.
Código: [Seleccionar]
ls /dev/i2c*
/dev/i2c-0

En la nuevas compilaciones de OpenWrt no viene el paquete i2c-tools, que incluye las herramientas i2cdetect, i2cdump, i2cget e i2cset. Afortunadamente, sirven las BB v14.07. Para descargar e instalar.
Código: [Seleccionar]
cd /tmp
wget http://downloads.openwrt.org/barrier_breaker/14.07/brcm63xx/generic/packages/oldpackages/libi2c_2013-12-15-1_brcm63xx.ipk
wget http://downloads.openwrt.org/barrier_breaker/14.07/brcm63xx/generic/packages/oldpackages/i2c-tools_2013-12-15-1_brcm63xx.ipk
opkg install libi2c_2013-12-15-1_brcm63xx.ipk i2c-tools_2013-12-15-1_brcm63xx.ipk

Para enviar datos a un dispositivo hay que saber primero en qué dirección está. Se utiliza la herramienta i2cdetect. El parámetro "-y" es para evitar que el comando dé un mensaje de aviso y "0" es el bus (que se obtiene con el comando  ls /dev/i2c*).
Código: [Seleccionar]
i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 3f
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --  
OpenWrt detecta un dispositivo en la dirección hexadecimal 0x3F.

Puenteando los contactos A0, A1 y A2, se le puede asignar a la expansora cualquier dirección de entre ocho disponibles. El bus I²C es realmente potente, porque permite conectar un gran número de dispositivos con sólo cuatro cables.

(Foto de Jesús Echevarría. http://www.jechavarria.com/2013/03/11/how-to-interface-8-lcd-displays-with-two-wires/)


NOTA AL MARGEN.-
Lo explicado hasta ahora bien podría servir como base para otros proyectos. Las salidas P0 a P7 del chip PCF8574 se pueden hacer conmutar a voluntad, lo que permitiría controlar, por ejemplo, 8 relés con sólo 2 GPIO. Y como se pueden apilar en paralelo hasta 8 expansoras, se podrían controlar hasta 64 relés con sólo 2 GPIO. Cada módulo expansor cuesta en ebay algo menos de 1€.



NOTA ACLARATORIA.-
Volviendo a las pantallas LCD, es de observar que las placas expansoras de bus I²C no están normalizadas. Las patillas P0 a P7 del PCF8574 pueden estar conectadas de muy distintas formas a los puntos 1 a 16 de la pantalla LCD. Esto es importante, porque un mismo programa podría funcionar correctamente con una pantalla determinada y con otra no. En este proyecto la correspondencia es la de la foto. La patilla P3 enciende o apaga el led que ilumina el fondo de la pantalla.



C) EL SOFTWARE

Para enviar texto al LCD utilizo un script. Hay que activarle el atributo "ejecutable" para poder utilizarlo como si fuese un comando.
Código: [Seleccionar]
#!/bin/sh
# 2016 :p raphik
# Comando para LCD HD44780 + expansor I2C PCF8574T
# Sintaxis 1: se utiliza para inicializar el LCD una sola vez, antes de enviar cualquier texto
#                 lcd_write <init>
# Sintaxis 2: se utiliza para enviar texto. La primera fila es la 0. La primera columna es la 0.
#                 lcd_write <fila> <columna> <texto>
#
func_init()
{
# Inicializa el display para modo 4-bit, 16x2 caracteres:
func_LCD I 0x33; func_LCD I 0x32; func_LCD I 0x28; func_LCD I 0x0C; func_LCD I 0x01
}

func_LCD()
{
  local nibb; local data
  if [ $1 == "I" ]; then
    data=$2
    nibb=$(($data/0x10*0x10)); i2cset -y $BUS $ADDRESS $(($nibb+$INST_SET)) $(($nibb+$INST_SEND))
    nibb=$(($data%0x10*0x10)); i2cset -y $BUS $ADDRESS $(($nibb+$INST_SET)) $(($nibb+$INST_SEND))
  fi
  if [ $1 == "C" ]; then
    data=$(printf "0x%02x" "'$2")
    nibb=$(($data/0x10*0x10)); i2cset -y $BUS $ADDRESS $(($nibb+$CHAR_SET)) $(($nibb+$CHAR_SEND))
    nibb=$(($data%0x10*0x10)); i2cset -y $BUS $ADDRESS $(($nibb+$CHAR_SET)) $(($nibb+$CHAR_SEND))
  fi
}

func_row_col() # esta función posiciona el cursor tanto en pantallas de 2x16 como de 4x20
{
  local base ;
  if [ $1 == 0 ]; then base=0x00; fi
  if [ $1 == 1 ]; then base=0x40; fi
  if [ $1 == 2 ]; then base=0x14; fi
  if [ $1 == 3 ]; then base=0x54; fi
  func_LCD I $((0x80+$base+$2))
}

func_print_string() # escribir una cadena
{
  local i=0
  while [ $i -lt ${#1} ]; do
    func_LCD C "${1:$i:1}"
    let i++
  done
}

# SCRIPT
if [ "$#" -eq 0 ]; then
  printf "\n  lcd_write ver. 1.01 2016 :p raphik\n"
  printf "Sintaxis 1: lcd_write <init>\n"
  printf "Sintaxis 2: lcd_write <fila> <columna> <texto>\n\n"
  return
fi

  BUS=0
  ADDRESS=0x3F
  INST_SET=0x0C
  INST_SEND=0x08
  CHAR_SET=0x0D
  CHAR_SEND=0x09

if [ $1 == "init" ]; then
  func_init
  return
fi

func_row_col $1 $2
func_print_string "$3"
return
# SCRIPT

Un ejemplo de uso del script: visualizar el porcentaje de calidad del enlace wifi.
Código: [Seleccionar]
./lcd_write.sh init
./lcd_write.sh 0 2 "Quality Link"
./lcd_write.sh 1 5 "$(cat /proc/net/wireless | awk 'NR==3 {printf "%0.2f %% \n", $3/70*100}')"



Saludos.
« Última modificación: 05-10-2017, 08:55 (Jueves) por raphik »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #1 en: 25-04-2016, 12:41 (Lunes) »
¡¡¡Buen aporte raphik!!!.
Le pongo chincheto unos días, y lo incorporo al índice de hilos relevantes...

 >:( >:( >:(

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #2 en: 26-04-2016, 19:30 (Martes) »
jejeje

Impresionante!!!

No hay nada como el saber...   >:(  >:(  >:(

edudi

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #3 en: 27-04-2016, 01:53 (Miércoles) »
Yo alucino, esto de los proyectos con los GPIO'S está siendo exponencial, ...pedazo de aportazo. Para mi al menos acabas de abrir nuevos horizontes (la pantalla LCD), ....y q pa colmo q con 2 GPIO's controlar 64 relés, elimina limitaciones x completo en ese ámbito.

Lo has descrito y documentado magníficamente, con sus fotos, códigos, vaya, todo hecho. Remesa de sombreros.

 >:(    ¡¡¡Enhorabuena!!!    >:(


Aprovecho para preguntar: ¿Es posible de alguna forma dotar a los routers con OpenWRT de entrada y salida de audio? Vaya, una tarjeta de sonido de alguna forma (la cual desconozco) para funciones básicas: grabar sonidos u oír en directo por un micrófono (me parece más fácil esto, pero no sé si es posible) y/o el hecho de q le conectemos un speaker de PC (para pitidos o sonidos de baja calidad) o si se pudiera adaptar un Jack para conectarle unos altavoces..... Es algo q se me ha pasado x la cabeza hace un mes, ... ¿se os ocurre si es posible con alguna interfaz intermedia? En vista de lo conseguido x raphik, ya no veo sino la falta de conocimientos o la limitación de la imaginación, q suele estar ahí.

Hacéis q esto esté cogiendo formas y opciones muy superiores a Raspberry, Arduino, etc ... Sobretodo a nivel reutilización y a el bajo coste. Ya los routers cuentan con muchas interfaces extras: WiFi, Repetidor WiFi, 7 USB's en el caso del HG556a, etc ...

Saludos a todos

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #4 en: 27-04-2016, 08:12 (Miércoles) »
Yo alucino, esto de los proyectos con los GPIO'S está siendo exponencial, ...pedazo de aportazo. Para mi al menos acabas de abrir nuevos horizontes (la pantalla LCD), ....y q pa colmo q con 2 GPIO's controlar 64 relés, elimina limitaciones x completo en ese ámbito.

Lo has descrito y documentado magníficamente, con sus fotos, códigos, vaya, todo hecho. Remesa de sombreros.

 >:(    ¡¡¡Enhorabuena!!!    >:(


Aprovecho para preguntar: ¿Es posible de alguna forma dotar a los routers con OpenWRT de entrada y salida de audio? Vaya, una tarjeta de sonido de alguna forma (la cual desconozco) para funciones básicas: grabar sonidos u oír en directo por un micrófono (me parece más fácil esto, pero no sé si es posible) y/o el hecho de q le conectemos un speaker de PC (para pitidos o sonidos de baja calidad) o si se pudiera adaptar un Jack para conectarle unos altavoces..... Es algo q se me ha pasado x la cabeza hace un mes, ... ¿se os ocurre si es posible con alguna interfaz intermedia? En vista de lo conseguido x raphik, ya no veo sino la falta de conocimientos o la limitación de la imaginación, q suele estar ahí.

Hacéis q esto esté cogiendo formas y opciones muy superiores a Raspberry, Arduino, etc ... Sobretodo a nivel reutilización y a el bajo coste. Ya los routers cuentan con muchas interfaces extras: WiFi, Repetidor WiFi, 7 USB's en el caso del HG556a, etc ...

Saludos a todos

Este hilo tiene ya bastante tiempo, y está en los hilos relevantes : [Tutorial] Receptor de radio Wi-Fi con OpenWrt
Yo he conseguido con éxito poner una SoundBlaster externa. Con respecto a lo del micrófono y grabar, ya no sabría decirte si es posible. Supongo que sí.

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #5 en: 27-04-2016, 12:45 (Miércoles) »
¡Gracias por vuestros comentarios!

El bus I²C de Philips se diseñó para facilitar la comunicación entre componentes alojados en televisores y reproductores de DVD. Está claro que también se puede utilizar para conectar dispositivos por cable. Pero... ¿implementa un protocolo fiable? Me refiero a si es o no es redundante, a si detecta y corrige o no errores de transmisión... Supongo que para ponerle una pantallita al router está bien, pero no sabría deciros si es prudente utilizarlo en proyectos más críticos.

Saludos.

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #6 en: 27-04-2016, 14:33 (Miércoles) »
¡Gracias por vuestros comentarios!

El bus I²C de Philips se diseñó para facilitar la comunicación entre componentes alojados en televisores y reproductores de DVD. Está claro que también se puede utilizar para conectar dispositivos por cable. Pero... ¿implementa un protocolo fiable? Me refiero a si es o no es redundante, a si detecta y corrige o no errores de transmisión... Supongo que para ponerle una pantallita al router está bien, pero no sabría deciros si es prudente utilizarlo en proyectos más críticos.

Saludos.

Que yo sepa no tiene corrección de errores, y el protocolo es más complejo que el SPI, por lo tanto los errores son más difíciles de identificar y recuperar. Una máquina de estados, para el protocolo I2C a bajo nivel, tiene más estados que una SPI. Yo utilizaría ese protocolo para leer sensores y transferir algún que otro byte, pero poca cosa más. Para una pantalla LCD viene fenomenal.

Por hacer un poco el friki...:

La salida VGA de las tarjetas gráficas comunican el DDC por el protocolo I2C.
Podemos transformar la salida I2C en un dispositivo GPIO, para hacerlo más interesante:
http://flipthatbit.net/2011/04/interfacing-i2c-the-easy-way/
http://hackaday.com/2014/06/18/i2c-from-your-vga-port/
http://blog.atx.name/twilight-vga-i2c-breakout-board/

Si en lugar de la VGA utilizamos nuestro router, mejor, ¿no?...  ;D
« Última modificación: 27-04-2016, 14:35 (Miércoles) por Tki2000 »

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #7 en: 27-04-2016, 18:37 (Miércoles) »
El problema de SPI es que no admite direccionamiento por software: cuando hay más de un dispositivo esclavo hay que ensanchar el bus una línea por dispositivo.


Desconozco el bus CAN, de Bosch. Se utiliza en automoción, así que presumiblemente es fiable. Por lo que parece está soportado por OpenWrt.


Tampoco conozco el 1-wire, de Dallas Semiconductor. También parece soportado por OpenWrt.


¡Qué bueno lo de las VGA! Gracias por compartirlo.

Saludos.
« Última modificación: 27-04-2016, 20:51 (Miércoles) por raphik »

Desconectado Tki2000

  • Moderador
  • *
  • Mensajes: 2247
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #8 en: 27-04-2016, 19:16 (Miércoles) »
El problema de SPI es que no admite direccionamiento por software: cuando hay más de un dispositivo esclavo hay que ensanchar el bus una línea por dispositivo.
Por eso es más sencillo implementarlo a bajo nivel. Cuantas menos líneas utilicemos, más complejo es el protocolo.
De todas formas, con dos dispositivos SPI, podemos utilizar los que queramos. Utilizamos el primer dispositivo SPI para hacer de demultiplexador y hacer el Slave Select del dispositivo final que queramos (si transmitimos un 4 al demultiplexador, seleccionará el Slave Select 4), y el segundo dispositivo SPI, para transmitir los datos directamente al dispositivo que hayamos selccionado antes (en este caso al dispositivo 4)..., si lo utilizas bien, no necesitamos más de 5 líneas para manejar los dispositivos que queramos..., incluso si me apuras, 4.

Haciéndome más el friki, algunas tarjetas de red PCI, e incluso algunas gráficas nVidia, podemos utilizarlas como programadoras de memoria SPI.  ;D
https://www.flashrom.org/Supported_hardware#PCI_Devices

raphik

  • Visitante

edudi

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #10 en: 30-04-2016, 16:44 (Sábado) »
@ eludi https://foro.seguridadwireless.net/openwrt/te-habla-tu-router/

Saludos.

Yosss, que bueno, me acabas de dar la solución al proyecto que tengo entre manos con esto de que "hable el Router":

Quiero montar un sistema de videovigilancia con 2 webcams con detección de movimiento (con el Motion y unas PS2 y PS3 EyeToy ya probadas), unos altavoces a modo de mensajes de voz para asustar, jajaja, un Zumbador (altavoz de alarma) activado por 1 GPIO y si el micro también me funciona mejor que mejor, todo esto visionable y controlable desde fuera de casa con el móvil y teniendo avisos por correo, y en breve por wasap (va a salir una SIM de no sé que compañía en Sept. que es gratuita con 200MB y 200 minutos de voz "suficiente para este uso". Si quieres más hay que pagar, pero imagino que serán precios competitivos a más no poder). ¿Quien regala a día de hoy un 2º número de Tlfno con 200 MB y 200 minutos de voz?

La parte del micro me es bastante vital para poder oir también lo que hay en el ambiente (ya que estoy fuera de la finca 6 días) o para si se detectan sonidos bruscos o cambiantes dentro de la casa: se activaría mediante una programación básica a modo de "sonido sospechoso" y guarde esos momentos, los cuales se suben a un FTP. Por último trataría de que fuera en streaming el audio IN del micro, para si quiero ver las cámaras en algún momento en concreto y oir tb el sonido si lo deseo ...puede parecer una bobería, pero no lo es en mi caso al menos. No hay nada como saber cuando está pasando el camión del pescado o el de los helados, jeje. No ahora en serio, mi familia tiene una cueva en el sur que no vamos sino los fines de semana, con sus 2 placas solares, 2 bancos de baterías y sus reguladores (las baterías son AGM y GEL de ahí que sean 2 circuitos independientes) y todo está orientado a ese fin (la única pega que le veo es que se conecta a la wifi del pueblo "que es libre y gratuita" y no sé como acceder a los puertos para acceder/manejar todo esto, ...aun no he indagado sobre esto de los puertos aquí).

También como extra quiero añadir el uso de unos sensores infrarrojos (si alguien pasa/corta activa la alarma) y ultrasonidos (para cambios o movimientos en el habitáculo). Tengo los esquemas, archivos de los circuitos impresos y componentes de las PCB's dando un 1 ó un 0 probadas y funcionando, tendría que volver a imprimirlas y comprar sus componentes o buscar algo en China semejante (lo hicimos en el proyecto de fin de ciclo), los cuales irían como entradas a 2 GPIO's para aumentar el número de sistemas de seguridad.

Bueno, más que agradecido de todos estos aportes. Saludos a todos, sois muy buenos tanto en lo que hacéis como en lo que compartís. Si alguien necesita los esquemas de las PCB's para los ultrasonidos e infrarrojos que lo diga y lo subo aquí, eso si son a escala muy pequeña, pero bueno, todo es escalable.


PD: raphik, ....soy edudi no eludi, jajaj....me sentí eludido.

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #11 en: 01-05-2016, 21:41 (Domingo) »
@ eludi https://foro.seguridadwireless.net/openwrt/te-habla-tu-router/

Saludos.

Yosss, que bueno, me acabas de dar la solución al proyecto que tengo entre manos con esto de que "hable el Router":

Quiero montar un sistema de videovigilancia con 2 webcams con detección de movimiento (con el Motion y unas PS2 y PS3 EyeToy ya probadas), unos altavoces a modo de mensajes de voz para asustar, jajaja, un Zumbador (altavoz de alarma) activado por 1 GPIO y si el micro también me funciona mejor que mejor, todo esto visionable y controlable desde fuera de casa con el móvil y teniendo avisos por correo, y en breve por wasap (va a salir una SIM de no sé que compañía en Sept. que es gratuita con 200MB y 200 minutos de voz "suficiente para este uso". Si quieres más hay que pagar, pero imagino que serán precios competitivos a más no poder). ¿Quien regala a día de hoy un 2º número de Tlfno con 200 MB y 200 minutos de voz?

La parte del micro me es bastante vital para poder oir también lo que hay en el ambiente (ya que estoy fuera de la finca 6 días) o para si se detectan sonidos bruscos o cambiantes dentro de la casa: se activaría mediante una programación básica a modo de "sonido sospechoso" y guarde esos momentos, los cuales se suben a un FTP. Por último trataría de que fuera en streaming el audio IN del micro, para si quiero ver las cámaras en algún momento en concreto y oir tb el sonido si lo deseo ...puede parecer una bobería, pero no lo es en mi caso al menos. No hay nada como saber cuando está pasando el camión del pescado o el de los helados, jeje. No ahora en serio, mi familia tiene una cueva en el sur que no vamos sino los fines de semana, con sus 2 placas solares, 2 bancos de baterías y sus reguladores (las baterías son AGM y GEL de ahí que sean 2 circuitos independientes) y todo está orientado a ese fin (la única pega que le veo es que se conecta a la wifi del pueblo "que es libre y gratuita" y no sé como acceder a los puertos para acceder/manejar todo esto, ...aun no he indagado sobre esto de los puertos aquí).

También como extra quiero añadir el uso de unos sensores infrarrojos (si alguien pasa/corta activa la alarma) y ultrasonidos (para cambios o movimientos en el habitáculo). Tengo los esquemas, archivos de los circuitos impresos y componentes de las PCB's dando un 1 ó un 0 probadas y funcionando, tendría que volver a imprimirlas y comprar sus componentes o buscar algo en China semejante (lo hicimos en el proyecto de fin de ciclo), los cuales irían como entradas a 2 GPIO's para aumentar el número de sistemas de seguridad.

Bueno, más que agradecido de todos estos aportes. Saludos a todos, sois muy buenos tanto en lo que hacéis como en lo que compartís. Si alguien necesita los esquemas de las PCB's para los ultrasonidos e infrarrojos que lo diga y lo subo aquí, eso si son a escala muy pequeña, pero bueno, todo es escalable.


PD: raphik, ....soy edudi no eludi, jajaj....me sentí eludido.

Hola edudi...

Con este programa , puedes estar a la escucha desde una tarjeta de sonido con entrada de micrófono se encuentra en los repositorios de oldpackages en BB.

Si quieres pruébalo y dinos como va...
Código: [Seleccionar]
opkg update
opkg install http://downloads.openwrt.org/barrier_breaker/14.07/brcm63xx/generic/packages/oldpackages/listener_1.7.2-1_brcm63xx.ipk

 ;)

edudi

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #12 en: 02-05-2016, 00:35 (Lunes) »

Hola edudi...

Con este programa , puedes estar a la escucha desde una tarjeta de sonido con entrada de micrófono se encuentra en los repositorios de oldpackages en BB.

Si quieres pruébalo y dinos como va...
Código: [Seleccionar]
opkg update
opkg install http://downloads.openwrt.org/barrier_breaker/14.07/brcm63xx/generic/packages/oldpackages/listener_1.7.2-1_brcm63xx.ipk

 ;)


Buenas, ....ya quisiera yo tener la suerte de tener aquí y ahora una tarjeta de sonido USB para hacerlo, pero no es el caso.

¿Alguien que tenga una tarjeta de sonido/pincho USB podría probar esto que comenta Fitch?

Instalar    listener    1.7.2-1    This program listens for sound. If it detects any, it starts recording automatically and also automatically stops when things become silent again.

Es como el Motion (webcams - detección de movimiento) pero para micrófono, muy curioso. La opción automatizada para grabar si hay un sonido está hecha, ....el oir en streaming es un poco ambioso, no me corre prisa. De todas formas desde que pueda la instalo en un 14.07 que ahora mismo el que tengo es un snapshots/trunk y las dependencias me están matando todo el rato. Más que nada por ver el archivo de configuración, capaz que tiene la opción de streaming, no me sorprendería la verdad. Si alguien lo instala, podría publicarlo aquí? Y si no es aquí, en este otro Post donde habla y usa explícitamente una tarjeta de sonido como salida de audio:

https://foro.seguridadwireless.net/openwrt/te-habla-tu-router/


También me surje la duda de qué pincho USB de sonido comprar (como las publicadas aquí) x si será reconocida y manejable,,,vaya que no exista el driver OpenWRT para la misma. Entiendo que para las sound blaster USB sea más normal que si, pero las publicadas aquí, ...sería o al igual me equivoco, casi como tirar barro a la pared: comprar, rezar y si hay suerte poder trabajar con ella porque está soportada.


Gracias por el aporte !!


PD: Disculpen que se me estén cruzando un poco los post unos con otros con respecto a los GPIO's, pero mi proyecto abarca un par de cosas que están en 3 post... sorry
« Última modificación: 02-05-2016, 00:40 (Lunes) por edudi »

Ficht

  • Visitante
Re:
« Respuesta #13 en: 02-05-2016, 00:44 (Lunes) »
El precio está sobre el euro x tarjeta...
El programa es válido par trunk también... (Probado)
Ahora tengo mucho lío y no tengo casi tiempo para hacer un tuto... Pruebalo sin miedo... Jajaja.

Enviado desde mi Y635-L01 mediante Tapatalk


peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #14 en: 10-08-2017, 21:32 (Jueves) »
Hola, esto mola mucho !!!

Me está picando el gusanillo para intentar montar la pantallita esta. Tengo unas dudas...

1) Lo de los puertos GPIO.... apenas lo conozco... según tengo entendido son una especie de puntos que dan voltaje o pueden emitir o recibir datos... ¿correcto?

2) Lo de la pantalla LCD.... he visto en ebay que algunas van tal cual y otras llevan una tarjetita electrónica "adaptador IIC/I2C".... eso no está explicado, por lo que pregunto: ¿hace falta el adaptador ese?
En las fotos parece que sí sale, que es donde se conectan los cambles que luego se sueldan a la placa del router. En ese caso.... ¿cómo se comunica ese adaptador con la pantallita LCD...?

¿Esto me valdría? (Aquí viene la pantallita y el adaptador):
http://www.ebay.es/itm/LCD-1602-Pantalla-AZUL-adaptador-IIC-I2C-compatible-arduino-Display-P0021-/201612141571?hash=item2ef1052403:g:8T8AAOSwbYZXcOM~


Como router voy a utilizar el mismo que usas aquí, raphik, para copiar tu procedimiento y hacerlo más fácil.

Gracias.

EDITO: Ok, acabo de ver que por lo visto se comunica por los pines que tiene arriba..., ya que he visto otra versión que venden con el adaptador ya soldado, que supongo que será el que usa raphik. Me pillo entonces el que viene ya soldado:
http://www.ebay.es/itm/Pantalla-LCD-1602-AZUL-IIC-I2C-Pines-Soldados-arduino-Display-P0010-/201517724201?hash=item2eeb647229:g:iakAAOSwe7BWuadX
« Última modificación: 11-08-2017, 01:12 (Viernes) por peperfus »

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #15 en: 11-08-2017, 10:17 (Viernes) »
Hola, peperfus.

Respondo a tus dudas.

1) Veo que lo has pillado: los puertos GPIO (General Purpose Input/Output) son unas patillas o contactos (pines, en la jerga) que tienen los procesadores para comunicarse con el exterior. En este proyecto se controla una pantalla LCD -dotada de expansor I²C- mediante dos GPIOs libres que el router no uliliza.

2) Mira la foto de debajo. Típicamente, el manejo de una pantalla LCD se hace a través de los pines RS, RW, E, P4, P5, P6 y P7. Manejar una pantalla LCD directamente desde el router supondría la utilización de 7 GPIOs. ¡Demasiadas!


Afortunadamente, existe el protocolo I²C y los expansores de bus, que permiten manejar hasta 8 pines con tan sólo 2 GPIOs. Los módulos LCD pueden comprarse sueltos o con expansores ya soldados, lo que simplifica enormemente su conexión. El que se utiliza en este proyecto es de los que trae el expansor.


Copio y pego del primer post:
Citar
Por la parte de detrás de la pantalla hay un expansor de bus I²C, un Philips PCF8574T, que permite su conexión con el router con sólo cuatro cables (GND, VCC, SDA y SCL).
Dos de los cables (GND y VCC) son para dar energía eléctrica al conjunto y los otros dos (SDA y SCL) para su manejo mediante conexión a sendas GPIOs libres del router.

En relación a la compra, la mía me costó una pasta en Banggood, pero luego las he visto más baratas en otros sitios. En fin, no siempre se da con el chollo.
https://es.aliexpress.com/store/product/LCD1602-I2C-LCD-1602-module-Blue-screen-PCF8574-IIC-I2C-for-arduino-LCD1602-Adapter-plate/221555_32820779011.html

Saludos.

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #16 en: 15-08-2017, 11:34 (Martes) »
Gracias por las respuestas.
Ya lo tengo casitodo bastante claro. Las pantallas las tengo encargadas (me he pedido 2) y tengo un 5387 aquí y otro de camino también. Lo he pedido todo por duplicado por si me cargo alguno, o si los dos me quedan bien, pues olé, jejeje.

La mayor dificultad va a ser la soldadura. Veo que los GPIOS son puntos muy pequeños y me da un pelín de pánico soldar un cable ahí. ¿Podrías explicar brevemente los pasos?
He soldado cable con cable, eso es lo más fácil del mundo, pero soldar un cable a un punto tan enano no sé cómo hacerlo. Voy a suponer que:

1) Se estaña el cable.
y 2) se aplica el soldador al punto y enseguida se toca con el cable el punto.

¿Es así? ¿Es necesario flux?
GRACIAS
Igual me animo hoy a intentarlo.

--------------------------------
Edito (añado):

Joder, que bajón... acabo de abrir el router para ver la placa y los GPIOs.... y no son pequeños... son diminutos. Esto para mí va a ser enormemente difícil  :-\
Y eso que tengo estación de soldadura con varias puntas, y 3er brazo con lupa...
En fin; ya veremos, pero lo dicho... más que soldar un cable ahí, parece que lo que haya que soldar sea un hilo finito y para soldarlo.... vaya tela.

Raphik, por favor, consejos. Aún soy virgen  ^-^ en este tipo de soldadura.
« Última modificación: 15-08-2017, 11:48 (Martes) por peperfus »

Ficht

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #17 en: 15-08-2017, 13:44 (Martes) »
Gracias por las respuestas.
Ya lo tengo casitodo bastante claro. Las pantallas las tengo encargadas (me he pedido 2) y tengo un 5387 aquí y otro de camino también. Lo he pedido todo por duplicado por si me cargo alguno, o si los dos me quedan bien, pues olé, jejeje.

La mayor dificultad va a ser la soldadura. Veo que los GPIOS son puntos muy pequeños y me da un pelín de pánico soldar un cable ahí. ¿Podrías explicar brevemente los pasos?
He soldado cable con cable, eso es lo más fácil del mundo, pero soldar un cable a un punto tan enano no sé cómo hacerlo. Voy a suponer que:

1) Se estaña el cable.
y 2) se aplica el soldador al punto y enseguida se toca con el cable el punto.

¿Es así? ¿Es necesario flux?
GRACIAS
Igual me animo hoy a intentarlo.

--------------------------------
Edito (añado):

Joder, que bajón... acabo de abrir el router para ver la placa y los GPIOs.... y no son pequeños... son diminutos. Esto para mí va a ser enormemente difícil  :-\
Y eso que tengo estación de soldadura con varias puntas, y 3er brazo con lupa...
En fin; ya veremos, pero lo dicho... más que soldar un cable ahí, parece que lo que haya que soldar sea un hilo finito y para soldarlo.... vaya tela.

Raphik, por favor, consejos. Aún soy virgen  ^-^ en este tipo de soldadura.

Ánimo, se puede soldar.

Un puequeño truco, igual que pre-estañas la punta del cable, yo también pre-estaño el punto donde está el GPIO, de manera que si es muy pequeño, lo convierto en mas grandesillo, y así con un toque del soldador al cable encima del punto, ya queda fijado, acto seguido, enruto el cable y lo pego a la placa con silicona térmica para que no estire del punto, pues pudiera arrancar la pista o el punto de cobre del circuito impreso.
El soldador, tengo uno destinado a esto, con la punta limada y preparada para estas dimensiones, de tal manera que es un 25% mas delgado que la patilla de un chip del router, a todo esto, este soldador es de baja temperatura.

Cada uno tiene sus trucos  y mañas, pero bueno, espero que algo de esto te sirva.

raphik

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #18 en: 17-08-2017, 06:44 (Jueves) »
... Veo que los GPIOS son puntos muy pequeños y me da un pelín de pánico soldar un cable ahí. ¿Podrías explicar brevemente los pasos?...Raphik, por favor, consejos...

Sí que son pequeños. Por eso, como dice Fitch, el estañado previo del cable y del punto de soldadura por separado es fundamental. El estaño que yo utilizo es el que generalmente se adquiere en tiendas de suministros electrónicos, que ya incorpora fundente. No utilizo flux.

La técnica que utilizo para estañar el cable es la misma que para la placa de circuito impreso.
1º calentar el cobre con el soldador.
2º fundir el es estaño sobre el cobre. Nunca sobre el soldador. Se trata de que el estaño se adhiera al cobre, por eso hay que aproximar la varilla de estaño al cobre, que debe estar lo suficientemente caliente para que funda.


Imagen tomada sin permiso de su autor de la página http://www.profesormolina.com.ar/electronica/soldadura/soldadura.htm

Hay que tener en cuenta:
- en el caso del cable, es conveniente calentar la punta del cable, para evitar que se funda la funda aislante.
- en el caso de la placa, hay que procurar no calentarla más de lo necesario para evitar que se desprenda la pista de cobre. Lo ideal sería poder controlar la temperatura del soldador. Mi soldador no tiene control de temperatura y lo hago a ojímetro. Alguna vez me he cargado la placa de cobre por sobrecalentamiento, sobre todo las antiguas de baquelita.

Una vez estañados por separado los dos elementos (cable y placa),
1º colocar el cable sobre la placa ejerciendo una suave presión. Se trata de mantener lo más fija posible la posición del cable sobre la placa, sin que se mueva.
2º acercar el soldador al punto de unión cable-placa hasta que el estaño se funda y la unión quede firme. Suele bastar con el estaño que ya tienen el cable y la placa, sin que sea necesario un aporte extra.

Antes de ponerte con el router, es recomendable que practiques con alguna placa de desecho que tengas por ahí.

Saludos y buena suerte.

peperfus

  • Visitante
Re: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
« Respuesta #19 en: 03-09-2017, 13:23 (Domingo) »
Hola, de momento voy a intentarlo con pegamento conductor; a ver que tal va.

Después de haber pegado los cables a los puntos, consigo esto:


Pero no se ven los cuadraditos en la pantalla, ni si quiera ajustando el contraste...

¿Podrías desconectar tus cables de SDA y SCL de tu pantallita y decirme si se ven los cuadraditos sin esos cables?

Gracias

Edito: Bueno, ajustando el contraste al máximo y fijándose bien en la pantalla, parece que sí se aprecian, pero con una intensidad tan débil que son casi invisibles...
« Última modificación: 03-09-2017, 13:34 (Domingo) por peperfus »