Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
23-02-2018, 21:28 (Viernes)
Inicio Ayuda Reglas Buscar Ingresar Registrarse
Noticias:
Descubierto fallo de seguridad en routers Sercomm H500-S de Vodafone

Videos Downloader




+  Seguridad Wireless - Wifi
|-+  Equipos y materiales
| |-+  Puntos de acceso, routers, switchs y bridges
| | |-+  Openwrt & LEDE (Moderadores: jar229, Noltari, Pteridium, Tki2000)
| | | |-+  Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.
0 Usuarios y 2 Visitantes están viendo este tema. « anterior próximo »
Páginas: 1 2 3 4 5 6 [7] Ir Abajo Imprimir
Autor Tema: Proyecto GPIO: Manejo de una pantalla LCD vía bus I²C.  (Leído 12178 veces)
Tki2000
Moderador
*
Desconectado Desconectado

Mensajes: 1774


Ver Perfil
« Respuesta #120 : 03-12-2017, 16:59 (Domingo) »

Hola.
Aquí estoy peleando con un LCD que ya no se por donde...

El comando i2cdetect da una salida un poco loca ¿a que puede deberse =así a priori=?

Citar
root@LEDE:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77

A mí me suena a parasitismo en el cableado.
¿Has mirado si poniendo las resistencias pull-up se mejora la señal?
Comprueba que los pines estén bien soldados.
En línea

No habrás entendido algo, hasta que seas capaz de explicárselo a tu abuela...
Hacemos pantallas con píxeles casi invisibles, para luego ampliar la letra porque no la vemos... Bonita paradoja...
Creamos analfabetos tecnológicos con una velocidad pasmosa. Todo el mundo "maneja" tecnología, casi nadie sabe lo que tiene entre las manos, pero todo el mundo opina.
El analfabetismo, antes, pasaba desapercibido. Ahora, se transmite por Internet y las redes sociales.
Ficht
*******
Desconectado Desconectado

Mensajes: 538



Ver Perfil
« Respuesta #121 : 03-12-2017, 18:21 (Domingo) »

Hola.
Aquí estoy peleando con un LCD que ya no se por donde...

El comando i2cdetect da una salida un poco loca ¿a que puede deberse =así a priori=?

Citar
root@LEDE:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77

A mí me suena a parasitismo en el cableado.
¿Has mirado si poniendo las resistencias pull-up se mejora la señal?
Comprueba que los pines estén bien soldados.


El problema debe ser ese, parasitismo, es posible que tenga que ver con algún relé interno de la placa (o diodos) en esos GPIO's, la pantalla la mudé al bus=0-I2C y ahí si le gusta, funciona bien.
Del cableado... jajaja ni me hables, por suerte tenía dos LCD iguales (mismo problema) y una de ellas la despiecé buscándole la música... el bus=1-I2C si me trabaja con un sensor de temperatura BMP280 correctamente, por eso buscaba el error en la pantalla (por tonto que suene... llevándome bien  Azn )

Ahora me pelearé para que el script suelte " ºC " y  "mbar"  Wink
En línea
peperfus
******
Desconectado Desconectado

Mensajes: 300


Ver Perfil WWW
« Respuesta #122 : 03-12-2017, 21:05 (Domingo) »

...
...
El problema debe ser ese, parasitismo, es posible que tenga que ver con algún relé interno de la placa (o diodos) en esos GPIO's, la pantalla la mudé al bus=0-I2C y ahí si le gusta, funciona bien.
Del cableado... jajaja ni me hables, por suerte tenía dos LCD iguales (mismo problema) y una de ellas la despiecé buscándole la música... el bus=1-I2C si me trabaja con un sensor de temperatura BMP280 correctamente, por eso buscaba el error en la pantalla (por tonto que suene... llevándome bien  Azn )

Ahora me pelearé para que el script suelte " ºC " y  "mbar"  Wink

Eso es muy pero que muy interesante. ¡¡ Documentación y tutorial para seguir por favor !!
Esto es una droga !
 Grin

Precisamente hace unos días hice un "detector de tormentas casero", por menos de 2...3 € con una simple botellita de agua y un cuentagotas, siguiendo un videotutorial que encontré en youtube. Lo del medidor de mbar me vendría de lujo para saber la presión exacta a la que funciona el "inventillo".
« Última modificación: 03-12-2017, 21:08 (Domingo) por peperfus » En línea

Vendo routers Livebox 2.1 ARV7519RW22-A-LT Flasheados con openwrt/lede nuevos "a estrenar". Sólo desprecintados y usados una vez para flashearlos. Incluye accesoarios originales: transformador, latiguillo de red y latiguillo rj11.
Por 10 € (+ gastos de envío.)
Interesados enviar mensaje privado.
Ficht
*******
Desconectado Desconectado

Mensajes: 538



Ver Perfil
« Respuesta #123 : 03-12-2017, 21:42 (Domingo) »

...
...
El problema debe ser ese, parasitismo, es posible que tenga que ver con algún relé interno de la placa (o diodos) en esos GPIO's, la pantalla la mudé al bus=0-I2C y ahí si le gusta, funciona bien.
Del cableado... jajaja ni me hables, por suerte tenía dos LCD iguales (mismo problema) y una de ellas la despiecé buscándole la música... el bus=1-I2C si me trabaja con un sensor de temperatura BMP280 correctamente, por eso buscaba el error en la pantalla (por tonto que suene... llevándome bien  Azn )

Ahora me pelearé para que el script suelte " ºC " y  "mbar"  Wink

Eso es muy pero que muy interesante. ¡¡ Documentación y tutorial para seguir por favor !!
Esto es una droga !
 Grin

Precisamente hace unos días hice un "detector de tormentas casero", por menos de 2...3 € con una simple botellita de agua y un cuentagotas, siguiendo un videotutorial que encontré en youtube. Lo del medidor de mbar me vendría de lujo para saber la presión exacta a la que funciona el "inventillo".

Aquí hay un par de fotos, pero aun estoy en fase de desarrollo.... jajaja
El numero de 4 dígitos es temperatura, y en de 6 es presión atmosférica en milibares.
Edito: agregando fecha y hora.

                                         

Tanto la pantalla verde "16x1" como el sensor, trabajaron perfectamente en el bus=1 I2C, pero la azul 16x2 no hubo manera (de locura)

EDITO_2: ========>

Bueno; jugando con las pantallas lcd y el sensor de temperatura y presión BMP280...

El sensor queda instalado en la dirección 0x76 del bus I2C (en este caso el 0)
La lectura del sensor es fácil,  la hoja de características describe las direcciones donde leer los estados tanto de temperatura como de presión, dados en ºC y kPa. GitHub

Por otra parte, el sensor, está soportado por el kernel de linux y disponible en openwert/LEDE, solo hay que activarlo en "make kernel_menuconfig"=>"Device Driver"=> <*>Industrial I/O support=>Pressure sensors=> <*> Bosh sensortec BPM280..... de esta manera se puede leer de forma nativa con una simple línea.
(supongo que agregando los módulos manualmente podría funcionar, pero ni idea)

Desde la línea de comando, indicando la dirección del dispositivo para que se cargue el driver y se cree el dispositivo "/dev/iio:device0"

Código:
echo "bmp280 0x76" > /sys/bus/i2c/devices/i2c-0/new_device

Luego, para leer el sensor lo hago de esta manera.
Código:
root@LEDE:~# echo "scale=2; $(cat /sys/bus/iio/devices/iio:device0/in_temp_input)/1000" | bc
18.88    #valor en ºC

root@LEDE:~# echo "scale=2; $(cat /sys/bus/iio/devices/iio:device0/in_pressure_input)*10/1" | bc
1013.61    #valor llevado a mbar

El script que estoy usando para que salga en el LCD es el sig: pero claro es un poco improvisado y tendría que buscar la manera de arreglar un problema, que hasta ahora no se ha visto, pero que cuando bajen los milibares de 1000 a 900 si que lo veré y es que al bajar la cifra de 7 a 6, el último caracter que es una "r", no se borrara. Arreglado, tonto de mi, entrecomillando la línea y dejando un espacio al final... (edito tb el codigo.)
tampoco he dado con un código que pinte en la pantalla "ºC" (he puesto *C) parece que (\337) o (\223) debería de pintarlo, pero creo que usando las librerias de Py ¿? no me he preocupado mas de esto
Código:
#!/bin/sh
./lcd init
while true; do
./lcd 0 0 "$(echo "scale=2; $(cat /sys/bus/iio/devices/iio:device0/in_temp_input)/1000" | bc)*C "
sleep 0.5
./lcd 0 11 $(date +"%d-%m")
sleep 0.5
./lcd 1 0 "$(echo "scale=2; $(cat /sys/bus/iio/devices/iio:device0/in_pressure_input)*10/1" | bc)mbr "
sleep 0.5
./lcd 1 11 $(date +"%H:%M")
sleep 9
done

Es este momento estoy intentando utilizar los trigger's del sensor, intentando adaptarme a esta guía IIO buffers and triggers pero no se estructura de la misma manera en openwrt/LEDE con lo cual no funciona y bueno, por aquí ando pegándole cabezazos a ver qué me sale.
« Última modificación: 11-12-2017, 15:21 (Lunes) por Ficht » En línea
raphik
******
Desconectado Desconectado

Mensajes: 481



Ver Perfil
« Respuesta #124 : 23-12-2017, 13:30 (S?bado) »

El mapa de caracteres de estos LCDs es:


El carácter que más se aproxima a º es el bx1101111 (223 en decimal y 0xDF en hexadecimal). Actualmente no tengo ninguna pantalla conectada al router y no puedo hacer pruebas, pero si te apetece podrías probar tú mismo si este código:
Código:
./lcd 0 0 "▀C"
Sólo hay que copiar y pegar.

Saludos.
En línea
Ficht
*******
Desconectado Desconectado

Mensajes: 538



Ver Perfil
« Respuesta #125 : 23-12-2017, 15:08 (S?bado) »

El mapa de caracteres de estos LCDs es:


El carácter que más se aproxima a º es el bx1101111 (223 en decimal y 0xDF en hexadecimal). Actualmente no tengo ninguna pantalla conectada al router y no puedo hacer pruebas, pero si te apetece podrías probar tú mismo si este código:
Código:
./lcd 0 0 "▀C"
Sólo hay que copiar y pegar.

Saludos.

Sale la letra "beta dos espacios y C" así (ß  C)
Yo he estado jugando con esta tabla del libro que recomendaste (muy bueno por cierto, de lo mejor que he leído referente al tema lcd) pero aún así, no he dado con el caracter apropiado.
Aún estoy en la fase de comprensión de tu script y sus funciones ...  Grin Grin
En línea
peperfus
******
Desconectado Desconectado

Mensajes: 300


Ver Perfil WWW
« Respuesta #126 : 23-12-2017, 22:31 (S?bado) »

No sé por donde leí que se podía definir tu propia tabla de caracteres, "dibujándolos", pero no puedo ayudar más.
En línea

Vendo routers Livebox 2.1 ARV7519RW22-A-LT Flasheados con openwrt/lede nuevos "a estrenar". Sólo desprecintados y usados una vez para flashearlos. Incluye accesoarios originales: transformador, latiguillo de red y latiguillo rj11.
Por 10 € (+ gastos de envío.)
Interesados enviar mensaje privado.
raphik
******
Desconectado Desconectado

Mensajes: 481



Ver Perfil
« Respuesta #127 : 04-01-2018, 20:52 (Jueves) »

@Fitch
El truco para escribir el carácter º consiste en pasarle al script su valor octal (que es \337).

Código:
./lcd 0 0 "Temperatura 19\337C"



Solución encontrada en http://todomarino.com/forum/temas/como-poner-el-s%C3%ADmbolo-de-%C2%BA-grados-en-la-temperatura.88667/

Saludos.
En línea
Ficht
*******
Desconectado Desconectado

Mensajes: 538



Ver Perfil
« Respuesta #128 : 06-01-2018, 01:03 (S?bado) »

@Fitch
El truco para escribir el carácter º consiste en pasarle al script su valor octal (que es \337).

Código:
./lcd 0 0 "Temperatura 19\337C"



Solución encontrada en http://todomarino.com/forum/temas/como-poner-el-s%C3%ADmbolo-de-%C2%BA-grados-en-la-temperatura.88667/

Saludos.

Hola raphik; al parecer en ese formato de línea, el script no interpreta los valores mas allá del caracter entrecomillado, como texto tal cual, solo que la barra \ la convierte a simbolo de yen ¥  escribiendo en pantalla
Citar
Temperatura 19¥337C
No se si el camino sería algo así  
Código:
./lcd 0 0"Temperatura 19 $printf("%c" 0xdf)C" #esto está mal expresado, pero probaré a ver que saco
 

Mirando un poco sobre printf me da la idea de que esto debería funcionar Huh?
Código:
./lcd2 0 0 "Temperatura $(printf "%p" 0xdf )     "
pero no, no funciona este formato. ademas, ahora creo que usar printf es una redundancia   con el propio script que ya lo hace

Tal vez el camino sea, sacar el código del simbolo en el teclado japones, y creo que el script lo sacaría perfectamente en pantalla... no?
« Última modificación: 06-01-2018, 12:13 (S?bado) por Ficht » En línea
edudi
*****
Desconectado Desconectado

Mensajes: 193


Ver Perfil
« Respuesta #129 : 19-01-2018, 04:59 (Viernes) »

Buenas a tod@s, hacía tiempo que no aparecía de forma más explícita.

Me encanta este HILO, dotar al router de más opciones, y ya lo de ponerle sensores: de temperatura y presión, es lo más.

En breve me pido un puente de I2C para empezar a probar todo esto que tengo varias pantallas de 16x2.

Me picó la curiosidad de entrar porque recordaba algo de manejar por I2C usando menos pines GPIO, ya que hoy estuve con una compi montando una pantalla de 2.2 táctil para arduino y ....se me encendió la duda típica:

¿ Y esto lo podrá manejar un router ?




Features:
- Arduino library: UTFT
- Driver IC: ILI9225
- Touch screen type: resistive touchscreen.
- Touch Pen: length is 9cm;
- Resolution: 176X220, 16-bit (262,000) color
- Display size: 2.2 inch;
- Operating voltage: 3.3V;
- Logic level: 3.3V;
- Operating current: the maximum is 150mA
- LED pin can connect to external backlight control circuit to control the brightness of backlight. You can connect it to GND to turn on the backlight all day.
- Very suitable for digital photo frame, oscilloscope, function generator, detection system monitor

Compatibility: Because the logic level is 3.3V, it is compatible with 3.3V Arduino board, you need to add a level conversion circuit if you use a 5V Arduino Board (Arduino UNO R3 / Arduino Mega2560 / Arduino Leonardo).

Package Includes:
1 x Touch Screen Expansion Board
1 x Touch Pen


Realmente no me interesa de forma excesiva la tactilidad, pero si la pantalla en color y en esas dimensiones ó más. Me suena ver algo de eso en pequeño no sé si era con OpenWRT, con el icono del sombrero en gif o algo así, pero para reencontrarlo me está siendo difícil.

Estaría brutal, que por GPIO se le pudiera ya no solo poner una pantalla de 16x2 sino algo aun más avanzado, mayor y en color.

A lo posteado: Muy buenos avances y de gran utilidad.



======================== Asunto que se me quedó en el tintero páginas atrás ==============

Por cierto, por fin me ha llegado la tarjeta de sonido USB con jacks de altavoz y micro, el altavoz va bien de momento, el micro probé el paquete: Listener     y, funciona el programa, aunque hay que corregir algunas cosas en el archivo de configuración y crear unas carpetas que se ve que está exportado tal cual.

Carpeta a crear:


/usr/local/etc     y copiar el archivo: listener.conf      (que se aloja en /etc      a la carpeta creada)


Archivo de configuración:


wav_path = /tmp/
fname_template = listener-%h-%y%m%d-%H%M%S.wav
devname = /dev/dsp
detect_level = 1
min_duration = 10
rec_silence = 5
max_duration = 60
min_triggers = 2
sample_rate = 8000
channels = 1
format=wav
amplify = off
start_amplify = 1.5
max_amplify = 10.0
fixed_amplify = no
safe_after_filter = no
one_shot = no

#compression = a-law
#filter = ./my_filter2.so.0.1 0 3000.0 1.0


La forma de funcionar tal cual está es:

root@GPIO_Solar:~# listener

listener v1.7.2, (C)2003-2005 by folkert@vanheusden.com
Path:          /tmp/
Device:        /dev/dsp
Level:         1
Min duration:  10.000000
Max duration:  60.000000
Samplerate:    8000
Channels:      1
Number of seconds record before sound starts: 2
Start amplify: 1.500000
Max. amplify:  10.000000

root@GPIO_Solar:~#



Se lanza y se queda en segundo plano devolviendo el prompt. Tal como viene el archivo de configuración ya que es como el motion el mecanismo, si detecta sonido se activa y graba un audio de como mínimo 10 sg y máximo 60 sg, pero está grabando siempre, por lo que iré probando e imagino que con el campo detect_level = 1, se calibrará al gusto.

Lo típico para cerrarlo:       killall listener             (y deja de crear archivos si detecta, el tamaño es 10 kb x sg, de momento las pruebas con #compression = a-law, descomentado, hace que el archivo no se pueda reproducir. Sería bueno que grabase directamente en mp3, o en su defecto convertirla al acabar con otro programa a mp3 (esto último si es sencillo))


Y estas son sus opciones:

root@GPIO_Solar:~# listener --help
listener: invalid option -- -
listener v1.7.2, (C)2003-2005 by folkert@vanheusden.com

Usage: listener [options]
-C<compression>  Set WAV compression    -e<command>      Script to call after recording
-r<rate>         Sample rate            -m<min_duration> Mini. duration to record (samples)
-b<rec_silence>  how many seconds to keep recording after no sound is heard
-c<configfile>   Configfile to use      -x<max_duration> Max. duration to record (seconds)
-w<wave-dir>     Where to write .WAVs   -d<device>       DSP device to use (/dev/dsp)
-z<channels>     Number of channels (1 (default) or 2)
-t<format>       Output format (see manual)
-y<command>      Script to call as soon as the recording starts
-F               use a fixed amplification factor
-p               Read from pipe (together with splitaudio)
-f               don't fork into the background
-l<detect_level> Detect level           -a<pidfile>      file to write the pid in
-s               Be silent              -h               This help text

-o               exit after 1 recording
root@GPIO_Solar:~#



Las funciones que más me gustan son:

- Las de ejecutar un script al iniciar una grabación si detecta sonido o al acabar la grabación.
- La del formato, habría que buscar si admite otros formatos de audio o al igual se refiere al formato del nombre del archivo.
- El factor de amplificación, muy curioso



Iré probando y si veo una configuración adecuada lo comento. Un saludo y gracias por tanto conocimiento y bien documentado Wink
En línea
Páginas: 1 2 3 4 5 6 [7] Ir Arriba Imprimir 
« anterior próximo »
Ir a:  


Ingresar con nombre de usuario, contraseña y duración de la sesión

Las cookies de este sitio web se usan para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar el tráfico. Además, compartimos información sobre el uso que haga del sitio web con nuestros partners de redes sociales, publicidad y análisis web, quienes pueden combinarla con otra información que les haya proporcionado o que hayan recopilado a partir del uso que haya hecho de sus servicios
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más
Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines
SMFAds for Free Forums