Arduino Forum

International => Español => Proyectos => Topic started by: lightcalamar on Jan 16, 2017, 12:51 pm

Title: MDC v1.0 + FT810 Beta 11
Post by: lightcalamar on Jan 16, 2017, 12:51 pm
Hola a todos.

Después de tiempo les presento mi nuevo proyecto. En estos momentos esta en fase beta de su desarrollo, pero voy avanzando en el mismo.

(http://i.imgur.com/y4XEU6Y.jpg)


Se trata de un Multi Data Center, dicho de otra forma un centro de datos con varios sensores y una Radio de FM con RDS incluida.
En si se han presentado varios problemas, algunos solucionados y otros por resolver. A día de hoy consta de estos elementos;
Radio con chip SI4703
Pantalla FT800
Barometro BMP085
Sensor temperatura DHT22
Modulos RF 433 para temperatura exterior
Reloj DS1307
Amplificador 10+10W
Lector MP3 (que habla la pantalla)
Modulo GPS
y mas dispositivos sobre la improvisación.

(http://i.imgur.com/z3kB8mA.jpg?1)


En los créditos de esta versión 1.0 podré los nick´s de aquellos que me ayudaron.

SISTEMA UI (User Interface)

Sección Sistema.

Menús para acceder al control del mismo siendo;
Control de brillo de la pantalla. [SOLUCIONADO]
Diagnostico Buses I2C de los módulos. [SOLUCIONADO]
Función DIMMER. Brillo de la pantalla según ambiente luminoso. [POR RESOLVER]
Sistema Reset por Software. [POR RESOLVER] ([SOLUCIONADO]  20 - 01 - 2017)
Control Audio Spectrum. [SOLUCIONADO]
Estado de la memoria.[SOLUCIONADO]
Modificar reloj maestro del sistema[POR RESOLVER]

(http://i.imgur.com/39Mps1d.jpg)


(http://i.imgur.com/c9SIlfw.jpg)


(http://i.imgur.com/6gUXkbV.jpg)


(http://i.imgur.com/TGFKOkZ.jpg)



Seccion GPS.

Imprimir correctamente; longitud y latitud. [SOLUCIONADO]
Muestra hora y fecha, con puntos parpadeantes.[SOLUCIONADO]
Mostrar cuidad según coordenadas. [POR RESOLVER]
Grabar datos a memoria EEPROM.[POR RESOLVER]

(http://i.imgur.com/iztB0WZ.jpg)


Sección Estación Meteorológica.

Impresión temperatura y humedad interior. [SOLUCIONADO]
Impresión temperatura y humedad exterior.  Vía radio 433MHz. [SOLUCIONADO]
Exactitud impresión temperatura grados negativos. [POR RESOLVER]
Presión atmosférica.[SOLUCIONADO]
Actualización datos a 30 metros. [SOLUCIONADO]

(http://i.imgur.com/d1DQWJT.jpg)


Sección Radio FM.

Muestra la información RDS de la emisora.[SOLUCIONADO]
Sintonia fina. [SOLUCIONADO]
Sintonia próxima.[SOLUCIONADO]
Forzar "muting".[SOLUCIONADO]
Representar logotipos emisoras. [POR RESOLVER]
Indicación Stereo/Mono en pantalla con cartel. [SOLUCIONADO]
Forzar Mono.[SOLUCIONADO]
Seleccion 18 emisoras preseleccionadas (Presets).[SOLUCIONADO]
Indicación frecuencia con decimales (MHz).[SOLUCIONADO]
Subir canal +[SOLUCIONADO]
Bajar canal -.[SOLUCIONADO]
Mostrar indicador volumen numérico.[SOLUCIONADO]
Mostrar indicador frecuencia barra progreso.[POR RESOLVER]
Grabar datos volumen y frecuencia en EEPROM.[POR RESOLVER]

(http://i.imgur.com/a9ywZT9.jpg)


(http://i.imgur.com/F7kKkXH.jpg)


(http://i.imgur.com/q6igjjb.jpg)


(http://i.imgur.com/klD0Lv1.jpg)



Funciones extras del HARDWARE.

Modo salva-pantalla, función desvanecimiento (FADE).[POR RESOLVER] ([SOLUCIONADO] - 17-01-2017)
Modo recuperación pantalla sensor ultrasonidos.[POR RESOLVER]
Sonidos generados por la pantalla a los menús.[SOLUCIONADO]
Sonidos formato MP3 según funciones. [SOLUCIONADO]
Amplificador audio 10+10 watios.[POR RESOLVER]
Spectrum audio 14 bandas. [POR RESOLVER]
Vu-Meter audio, con 5 funciones. Modulo de 30 leds por canal. [SOLUCIONADO]

(http://i.imgur.com/pFy0379.jpg)



Futuribles.

Mostrar logotipos de emisoras en assets.
Poner fondos de imágenes en pantalla según funciones.
Cambiar fuentes grandes según función.


Materiales usados.

1 Pantalla FT800 de 5 pulgadas táctil resistiva
1 Lector serie MP3
1 Receptor-Emisor RF 433MHz
2 DHT22
1 EEPROM 24C32
1 DS1307
1 Modulo SI4703
1 Shiel buffer digital (cosecha propia)
1 Arduino modelo Nano (Emisor RF)
1 Arduino modelo MEGA
1 Modulo VU-Meter 30 led por canal.
1 Modulo BMP085


Se encuentra en fase beta 3. Adjunto fuentes del mismo. Cualquier sugerencia, duda y/o mejora es bienvenida. Agradezco a los usuarios; surbyte, TFTLCDCyg, Alfaville, RndMnkIII jamesbowman por su desinteresada ayuda. Tengo que depurar todavía el código. Estoy intentando dentro de las hojas de código, explicar, así como todo lo el conexionado del hardware.

A todo esto, no hay ningún botón, encoder etc.. todo desde la misma pantalla..

Editaré el mensaje para poner capturas y vídeo.
Hasta el próximo mensaje.

Editado 17-01-2017: Solucionado función FADE y Salva-Patanllas. Sección Hardware.
Editado 20-01-2017: Solucionado función reset por Software..
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 16, 2017, 01:00 pm
Un proyecto bonito y ambicioso.
Eres grande.

Voy a echar un ojo al ZIP e intentar comprender el flujo del programa por si puedo prestar alguna ayuda.

Saludos.
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 16, 2017, 05:06 pm
Posiblemente tenga errores, pero poco a poco. Gracias por tu interés Alfaville te lo agradezco mucho.

También dispondrá una función de ayuda tanto en diapositivas como hablado a través el lector serie MP3, de esta forma cuando vengan familiares y amigos a casa, dará el pego  :)  :)  :)

Estoy de momento liado con realizar el modulo definitivo del Amplificador de audio. En el próximo mensaje pondré los enlaces donde compré todo el material necesario.

Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 16, 2017, 05:18 pm
Errores tiene varios, que yo haya visto en un primer repaso.
Pero lo que me hace mas dificil el poder analizar el código es la aparente anarquia en los modulos usados.

Sirva como ejemplo que hay dos funciones <void setup()> con distinto contenido.

Estoy intentando darle formato para poderlo leer en condiciones (faltan algunas llaves }) porque si no me pierdo.

Creo que deberias distribuir la ejecucion desde el <void loop()>
Code: [Select]
void loop()
{
    funcion1();
    funcion2();
    funcion3();
    .
    .
    .
}
en lugar de usar el <while(1)> que creo no te va a funcionar en la mayoria de los casos, por ejemplo en <fade()> (hay mas), ya que haces un bucle do-while(1) que jamas alcanza la condicion de salida.

Repito que puedo estar equivocado porque no he podido poner orden en el codigo para analizarlo. En ello estoy.
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 16, 2017, 05:36 pm
Tienes razón. Pero hay un problema.
Estas pantallas, todo está construido sobre la librería Gameduino 2 (https://forum.arduino.cc/index.php?topic=419836.0) y es muy caprichosa a la hora de representar los datos en ellas. Es totalmente diferente a las convencionales. El usar el do while es porque de otra forma no se imprime nada, bueno sí pero entonces el orden es muy diferente. Los ejemplos de TFTLCDCyg fueron en los que me inspiré

Si te has fijado el loop ni lo uso esta en "blanco", es exacto, sin embargo no me hace falta.
Tengo que quitar todo lo que imprime por Serial, lo he conservado por controlar al dia de hoy posibles fallos.

También tengo que intentar reafinar el código. Actualmente me usa;

(http://i.imgur.com/qrvYH5U.jpg)


Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 16, 2017, 06:03 pm
Correcto, pero el sistema <do - while(1)> y los while(1) en general se prodigan tanto que no creo que sea operativo.

Por otro lado pese a los "caprichos" de la libreria Gameduino2, no deja de ser software y podrá manejarse como tal.
Lo que ocurre es que, a veces, no basta con copy-paste, ahora coloco esto aquí, etc,. sino que hay que replantearse el flujo del programa completamente.

Si me necesitas cuenta conmigo para optimizar y/o depurar el código.
No he usado muchas de las librerias que pones, pero eso no importaria para analizar el programa.
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 17, 2017, 10:35 pm
Correcto, pero el sistema <do - while(1)> y los while(1) en general se prodigan tanto que no creo que sea operativo.
Te equivocas amigo Alfaville.
Esto es porque lo mismo no has usado estas pantallas FT8xx o bien si quieres mas ejemplos, pantallas gráficas con la librería U8glib.

Imagínate que tienes un libro. Los libros tienen paginas, pues bien las paginas se pueden mirar unas u otras, y cuando se leen se tienen que hacer constantemente, es decir que leas las que desees, entonces interpretado en programación sería que tengan un loop, entonces si bien dices que no es operativo, como se hace?. Yo te lo digo con un <do .. while> no hay otra forma.

Muchas de las funciones que he realizado en mi proyecto, son los ejemplos de las librerías por defecto, estos me han ayudado como no a realizar un copy-plaste del mismo, pero claro adaptándolo a mi necesidad.

Cambiando de tema. He resuelto al menos hoy dos circunstancias; la función fade y el salva-pantalla a mi proyecto.

Ahora lo veo sencillo. Todo es buscar. No invento nada y es mas pongo los enlaces del mismo y de esta forma se aprende. La función fade (desvanecimeinto del brillo de la pantalla) entraba en loop continuamente, la solución es adaptar (porque en Google se encuentra de todo) detener una función concretamente HowTO Stop a loop Arduino (http://stackoverflow.com/questions/23096366/how-to-stop-a-loop-arduino), así el código me ha quedado de esta forma;
Code: [Select]

 boolean parar_fade = true;
void fade() {

   if(parar == true){
  
   GD.wr(REG_PWM_DUTY, 90);  
   delay(300);
   GD.wr(REG_PWM_DUTY, 80);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 70);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 60);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 50);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 40);  
   delay(200);
   GD.wr(REG_PWM_DUTY, 30);  
   delay(200);
   }
  parar_fade = false;  
   }


La función del salva-pantallas es y me da risa del porque no me funcionaba. Solo estaba en temporizar fuera del bucle <do ... while> las sentencias de inicio del mismo, luego realizar una comparación con un if  y ahora es operativa. He usado la librería de https://github.com/Mandragoratools/Temporizador (https://github.com/Mandragoratools/Temporizador) de este foro en este mensaje de Mandragoratools (https://forum.arduino.cc/index.php?topic=443401.0) y ha quedado de esta forma por ejemplo de mi función GPS;
Code: [Select]

void migps(){
     Temporizador tempo1;
     tempo1.temporizar(0,0,0,30,0);
     do{
    .....
    .....

    .....
             }
      if(tempo1.completado()){
          salva_pantalla();
     }
    GD.swap();
     }
   while(1);
}


Hasta el próximo mensaje.


Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 18, 2017, 02:50 am
Correcto lightcalamar no he utilizado nunca esas pantallas y por eso me parecia raro, pero si es así pues disculpa mi error.

Al menos de algo sirvio mi advertencia:

... en lugar de usar el <while(1)> que creo no te va a funcionar en la mayoria de los casos, por ejemplo en <fade()> (hay mas), ya que haces un bucle do-while(1) que jamas alcanza la condicion de salida.

Repito que puedo estar equivocado porque no he podido poner orden en el codigo para analizarlo. En ello estoy.
Cambiando de tema. He resuelto al menos hoy dos circunstancias; la función fade y el salva-pantalla a mi proyecto.

Ahora lo veo sencillo. Todo es buscar. No invento nada y es mas pongo los enlaces del mismo y de esta forma se aprende. La función fade (desvanecimeinto del brillo de la pantalla) entraba en loop continuamente...
Bueno, lo importante es que tu proyecto progrese de forma adecuada.

Seguire atento a tus mensajes sobre el mismo.
Saludos.
Title: Re: MDC v1.0 fase beta 3
Post by: TFTLCDCyg on Jan 18, 2017, 09:23 am
Wow no pensé que manejaras tantos elementos. Felicidades por el proyecto.

Claro que se puede emplear el loop principal como eje de programación, sin embargo cuando el sketch crece, nos acercamos al limite de instrucciones que estas pantallas pueden manejar: 2048 por vez, al alcanzarlo la pantalla deja de funcionar. En tanto nos familiarizamos mas con el funcionamiento de la líbreria del gameduino 2, es preferible dejar void loop al margen.

La mejor forma de evitar ese límite es creando funciones independientes, que solo se llaman cuando se les requiere y que además, nos brinden la posibilidad de mantener ciclos independientes a void loop. La mejor forma de conseguir funciones con esas características es usando la instrucción while(1){} dentro de ellas, se pueden usar otras instrucciones cíclicas, eso dependerá de que tan familiarizado esté el programador con ellas.

Para salir de los ciclos basta con asignar una instrucción que dependa de la pantalla táctil: texto, algún número, un botón, una imagen, etc, indicando que se llame otra función como por ejemplo la que corresponde al menu principal.
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 18, 2017, 09:33 am
@TFTLCDyg

Gracias por tu explicacion.

Me ha ahorrado desenterrar libros ya olvidados porque, al no saber el detalle de las pantallas, no lograba encontar una explicacion racional al tipo de programacion que lightcalamar está usando, obligandome a recomendar correcciones en su mayor parte innecesarias.

Dime cual es la última version funcional que usais de la libreria para descargarla e intentar "ponerme al dia"

Saludos
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 18, 2017, 10:53 am
Este es el enlace para GD2 y GD3 (https://forum.arduino.cc/index.php?topic=419836.0), lo que pasa tendrás que leer todo el hilo, pues hay varias versiones que TFTLCDCyg ha realizado.

Por cierto la familia irá creciendo. Tengo en mente poner mas módulos y/o sensores. De momento se me ha ocurrido realizar un display de 7 segmentos, en el inicio de la pantalla realizará un chequeo y dependiendo del numero que de, sabré que modulo no es reconocido y tengo fallos.

El bus I2C es muy malo cuando  falla algún modulo conectado, vamos se queda la pantalla en negro total y de esta forma puedo averiguar donde esta. A todo ello le voy a poner un sensor de ultrasonido mas para realizar un simple interruptor para activar mi modulo Spectrum.

Es que le he cogido manía en no poner botones ni pulsadores externos al proyecto. Todo táctil y funciones de movimiento.

 

Saludos.
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 18, 2017, 10:56 am
Rellenaremos huecos y le dare un repaso.

Gracias
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 18, 2017, 11:44 am
@lightcalamar

Por si fuera de ayuda, los enlaces que ofreces en hilo gameduino (https://forum.arduino.cc/index.php?topic=419836.0)  no funcionan.

Ambos tienen basura al comienzo:

http://"http//www.hotmcu.com/5-graphical-lcd-touchscreen-480x272-spi-ft800-p-124.html?cPath=6_16%22

 Quizás alguien los intente seguir como me ha pasado a mi (yo ya lo solucioné).
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 18, 2017, 12:07 pm
Si es verdad. Lo reporte a Hector que existía problemas en según que enlaces, me comento que no solo me pasaba a mi, es un problema general del foro. Aunque los edite pone al principio http://"http//www.hotmcu.com/, creo con enlaces cortos no pasa.
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 18, 2017, 12:16 pm
Mala suerte.

Por cierto he accedido a la pagina del modelo:  FT811 capacitiva (http://www.hotmcu.com/5-graphical-lcd-capacitive-touch-screen-800x480-spi-ft811-p-301.html?cPath=6_16%22)   buscando informacion y la verdad me he liado un poco.

Dime si este hilo es adecuado o continuo en el de la libreria Gameduino2...

Como verás mi link funciona .. jejeje.
Title: Re: MDC v1.0 fase beta 3
Post by: surbyte on Jan 18, 2017, 09:05 pm
Este error 
Quote
http://"http//www.hotmcu.com/5-graphical-lcd-touchscreen-480x272-spi-ft800-p-124.html?cPath=6_16%22
también me pasa a mi. La solución cuando me doy cuenta es usar el ultimo ícono de la derecha y darle un repaso y observar si se copió la url con o sin comillas y en el caso que esten editarlo.
Me pasa con Chrome, me pasa con Firefox.. 
Pero si cuando pego la URL uso pegar como texto sin formato va bien. Ahora no siempre me acuerdo.
Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 20, 2017, 04:49 pm
Buscando y buscando, logré encontrar esta simple función para realizar el Sistema de Reset por Software, sencillo y funcional;
Code: [Select]

    // --------------------------
    // FUNCION RESET
    void(* resetFunc) (void) = 0;
    resetFunc();
    // --------------------------


Esta es la fuente del código (http://stackoverflow.com/questions/31143021/how-to-reset-arduino-mega-2560-code-automatically)
Editado en mi primer mensaje para el sistema de reset.
Seguiremos...
Title: Re: MDC v1.0 fase beta 3
Post by: Alfaville on Jan 20, 2017, 07:50 pm
@lightcalamar

Cuidado con esa forma de hacer reset.

Segun lo que pretendas puede que no te funcione adecuadamente porque esa funcion se limita a hacer una llamada al vector 0 de la lista de vectores de interrupcion, obligando al software a saltar al punto de inicio del programa, pero NO inicializa ningun bit de los registros hardware de la MCU.

Dicho de otro modo, cuando pulsamos el reset fisico la MCU coloca todos los bits de sus registroa a un valor predeterminado (ports, SREG, etc,..) cosa que no hace esa funcion, por lo que, dependiendo del uso que le des, puede ocasionar problemas.

Tenlo en cuenta.

Para casos especiales puede usarse un pin como reset hardware.

Title: Re: MDC v1.0 fase beta 3
Post by: lightcalamar on Jan 25, 2017, 01:05 am
Añadida función PLAYER MP3 (25-01-2017)

Vía MP3-Serial , donde hay control de;
Volumen
fichero ascendente/descendente
Play
Stop
Equializador predefenido
Salida canales L+R al amplificador 10+10 Watios.

Seguiremos ...


Title: Nueva fase Beta 6
Post by: lightcalamar on Feb 16, 2017, 09:25 am
Retomamos el camino del proyecto.
He estado unos días despues de investigar de que forma de podrían poner imagenes (iconos) estos de 100x70 pixels como botones en el menu principal.

Ya no solo unos cuantos, sino lo que me permita la flash de Arduino MEGA. Concretamente para estas pantallas basadas en chip FT800Q enlace del mensaje numero 103 (http://forum.arduino.cc/index.php?topic=419836.90) logre tal solución. Imagenes en array.

Esta nueva versión beta 6, estoy remodelando totalmente la GUI del proyecto;

(http://i.imgur.com/ZTGvcuf.jpg)

Estan surgiendo algunas complicaciones, sin embargo las voy solventando. Dejo en el primer mensaje la citada nueva beta. Seguiremos....
Title: Re: MDC v1.0 fase beta 6
Post by: TFTLCDCyg on Apr 13, 2017, 12:30 am
Al pendiente del avance, por cierto ¿qué módulo GPS estas usando en tu proyecto?, ¿algún link para curiosear?

¿Has podido resolver el apartado de temperaturas bajo cero?.
Title: Re: MDC v1.0 fase beta 6
Post by: lightcalamar on Apr 13, 2017, 01:03 am
Uffff, lo tengo muy avanzado mi MDC.

Tuve problemas de solucionar interferencias con los módulos RF de 433MHz, y la temperatura bajo cero esta estancada, el mismo problema. He reformado totalmente la GUI de la FT800 y por lo visto, esta pantalla la tengo vendida de las 2 que me quedan, porque una me la quedaré y las he cambiado a la espera de recibir mis 3 nuevas FT810 y FT811

El radio de FM le he puesto un VFD para el RDS, algo espectacular, también cambié de modulo player MP3 con unos BY8001 y ayer me llegó 2 de JQ6500 no tienen nada que ver con los "famosillos DFRobotMP3" dicho de paso no entiendo como este ultimo se ha hecho tan popular si después estos que te describí son una maravilla. Tiene host USB o puedes usar una microSD.

Voy por la beta 18, a ver si saco tiempo (porque no paro de trabajar) y le dedico unos cuantos días.

El GPS que uso lo compré en esta tienda de Banggood (http://www.banggood.com/GY-NEO6MV2-Flight-Controller-GPS-Module-For-Arduino-EEPROM-MWC-APM-2_5-p-915384.html?rmmds=search)

Gracias por el interes y prometo volver a mi proyecto en breve... :)

Title: Re: MDC v1.0 fase beta 6
Post by: TFTLCDCyg on Apr 13, 2017, 08:58 am
Gracias, te entiendo, a veces los compromisos nos van alejando de los hobbies. Revisaré ese GPS.

PD: por cierto sigo pensando que deberías pasarte al teensy, vi por alli que tienes pendiente el analizador de espectro, pues bien, el audio shield para teensy... puede darte algo mucho mejor: acceso a los datos de una  transformada de fourier.

Videotutorial: uso del audio shield para teensy
 (https://www.youtube.com/watch?v=wqt55OAabVs)
Hace un tiempo me aventuré con algunas librerías FFT para arduino Due; el resultado es impresionante...

Video: FFT en arduino Due (https://www.youtube.com/watch?v=oPkEMbaD1Jw)

Uno mas... (https://www.youtube.com/watch?v=ZCT2dSNZhpY)
Title: Re: MDC v1.0 fase beta 6
Post by: lightcalamar on Apr 17, 2017, 10:19 am
Gracias por el consejo. De hecho mi Teensy 3.5 casi que será para un proyecto con FFT casi muy seguro por la rapidez. En este proyecto la velocidad no es lo principal y sigo adelante.

Después de estudiar muy, pero que muy mucho he optado por emigrar el proyecto con pantalla FT800 a FT810 y digo que ha sido muy meditado y con las consecuencias que me estoy encontrando (a ciencia cierta sabía los problemas) de transformación de las imágenes, textos, primitivas etc.. los quebraderos de cabeza con VextexTranslateX voy saliendo adelante.

Los Wigets desde luego aceptan cualquier resolución caso de 800x480 y son de agradecer, solo hay problemas en primitivas  el mismo marco "marcando" el contorno de la FT810 me ha costado sudor y lagrimas pero al final solucionado

Esta es la versión beta 11.

Adjunto en el primer mensaje el código de esta misma.

Aquí el inicio transformado;

(http://i.imgur.com/AOVqsXe.jpg)

Y esta captura por realizar;

(http://i.imgur.com/AKnac5q.jpg)

Y por lo visto caben mas iconos...