ยซEl reloj mayaยป

Reloj maya realizado con piktochart

Correspondencia entre numerales cefalomorfos y la cosmologรญa maya.

Cuenta la leyenda maya que los primeros en tener relaciones sexuales fueron el sol y la luna. Al recibir la patada de un venado, ella obtiene una hendidura por la cual el sol realiza la primera penetraciรณn (Puente, 2010). A partir de este acto surgen trece dioses. Estos trece dioses estรกn asociados a los primeros numerales mayas en sus ยซvariantes de cabezasยป. Se menciona que de estos trece, dos de ellos fueron los creadores de los demรกs (Ibarra, 2018).

La manera en la que construyen los numerales restantes y asรญ completar los necesarios para su sistema vigesimal โ€“se requieren de veinte sรญmbolos en un sistema vigesimalโ€“ , parece aludir al paso de estos primeros dioses por el inframundo. Al componerse tomando las caracterรญsticas de los numerales del 14-19 y las del dios de la muerte. Incluso hay una forma alternativa de representar al 13. Ademรกs del pรกjaro-serpiente, el trece se puede formar utilizando los atributos del jeroglรญfico del 3 y el 10, dios de la muerte. De esta manera el sistema es consistente con los nombres de los numerales en maya clรกsico, en donde hay 12 nombres distintos para 1-12 y para 13-19 se utilizan los mismos nombres de 3-9, agregรกndoles la terminaciรณn laju’n, correspondiente a 10. En diversas lenguas mayenses laj se puede traducir como ยซfinalยป (Puente, 2010).

(Maya Number System & Math, 2019)

Es interesante que los primeros dos dioses โ€“o nรบmerosโ€“ no tienen representaciรณn en el mundo de los muertos. Quizรกs esto seรฑale la importancia de estos primeros dos nรบmeros-dioses y podrรญa indicar que son los creadores mencionados en la mitologรญa que menciona Ibarra (2018).

El cero representaba tanto el vacรญo como lo completo o finalizado. Tanto el inicio cรณmo el fin (Blume, 2011).

Trece es un nรบmero de suma importancia en la cosmovisiรณn maya, hace referencia a los trece niveles del cielo. Los niveles corresponden a trece posiciones que toma el sol durante su travesรญa celeste, paso que forma la figura de una pirรกmide de base cuadrada โ€“caracterรญstica de las culturas de Anรกhuac โ€“ cada nivel tiene un dios protector (El devenir en el mundo subterrรกneo, s. f.).

Para los mayas, la tierra es un plano que se extiende en cuatro direcciones. Se encuentra entre el cielo y las aguas del inframundo. Es representado mediante una tortuga sobre la cual crece un รกrbol sagrado โ€“ceiba o maรญzโ€“ extendiendo sus ramas hacia el cielo y sus raรญces hacia las profundidades del reino de los muertos (El devenir en el mundo subterrรกneo, s. f.).

En la parte inferior, existen otros nueve niveles por los que el sol pasaba durante la noche, niveles considerados del inframundo (El devenir en el mundo subterrรกneo, s. f.).

Existe una correspondencia entre los primeros trece numerales mayas, sus dioses y sus trece niveles del cielo. Parecen insinuarse algunas correspondencias en los numerales restantes y los nueve niveles del inframundo. Se hace alegorรญa a la muerte o final para componer los numerales 13-19 que llamaremos ยซcompuestosยป, como si los mismos dioses del cielo estuvieran en su paso por el inframundo recordรกndonos que ยซcomo es arriba es abajoยป.

Considerando que los mayas tenรญan un dรญa cero para cada mes en su calendario solar โ€“aunque en realidad no es un cero sino el final de un mes y al mismo tiempo el inicio de otroโ€“ y que este representa tanto inicio como fin (Blume, 2011). Parece sobria la idea de que este deba tener un lugar tanto en la morada de los vivos como en la de los muertos. Por otro lado el numeral del 12 es el punto medio entre los dioses del cielo y del inframundo โ€“es tambiรฉn final e inicioโ€“, por lo que se podrรญa decir lo mismo respecto a pertenecer a los dos mundos.

Siguiendo este modelo, parece que todo se acomoda de manera natural. Los siete dioses muertos quedan en el inframundo. El dios en la posiciรณn mas alta del cielo, es el mismo que el de la posiciรณn mas baja en el mundo de los muertos โ€“en su representaciรณn de inframundoโ€“. Tanto en los numerales correspondientes con los niveles del cielo como con los del inframundo, este dios divide los grupos de manera equitativa.

En el grupo de los vivos, se encuentra entre seis numerales menores y seis mayores.

En el grupo de los muertos, se encuentra entre cuatro menores y cuatro mayores.

De esta forma tenemos 13 niveles en la parte superior โ€“reino de los cielosโ€“, representados por los dioses 0-12, y 9 niveles en la parte inferior โ€“reino de los muertosโ€“ representados por los dioses 12-0 โ€“este รบltimo cero se puede pensar al cero como final, como un ciclo completoโ€“ acomodando a todas las representaciones ยซmuertasยป en el inframundo. Los dioses 0 y 12 actรบan de manera dual, mediadores de mundos.

Referencias

Blume, A. (2011). Maya Concepts of Zero. Proceedings of the American Philosophical Society, 155(1), 51-88

El devenir en el mundo subterrรกneo. (s. f.). Recuperado 4 de febrero de 2021, de http://www.revista.unam.mx/vol.13/num11/art108/?fbclid=IwAR01VMHxuTQ-l-cXQUKnniOf45yI0_DHBEShGGnY7ijwersTMMgiUUkJzck


Ibarra, L. (2018). The Mayan Gods: An Explanation from the Structures of Thought. Journal of Historical Archaeology & Anthropological Sciences, 3. https://doi.org/10.15406/jhaas.2018.03.00071


Kettunen, H., & Helmke, C. (s. f.). 11th European Maya Conference Malmรถ, December 4thโ€“9th, 2006. 121.


Maya Number System & Math. (2019, octubre 17). Planet Archaeology. https://planetarchaeology.co.uk/maya-number-system/


Puente, F. B. (2010). Tsik: Los nรบmeros y la numerologรญa entre los mayas. Instituto Nacional de Antropologรญa e Historia.

Cultivando informaciรณn de la web

ยซManitas de budaยป
[Fotografรญa de Miguel Andrade]. (Rancho Viejo, Veracruz. 2019).

Minando artistas amigos

Antes que nada le doy las gracias a mi compaรฑera de vida y mejor amiga Ladrรณn de Mar, quien me asistiรณ en la grabaciรณn del video siguiendo la actividad generando dudas y aclaraciones.

Preรกmbulo

Que tal queridas personas. Espero que se encuentren llenas de salud y amor en estos tiempos de cambio. Esta entrada del blog fue inspirada por el canal de facebook Coronatv (@CoronaTV2020) y particularmente por una lectura realizada por Hunaac-cel: Mรบsico, rapero y distinguido miembro del grupo. La lectura fue acerca de โ€œLa dictadura de los datos: La verdadera historia desde dentro de Cambridge Analytica y cรณmo el Big Data, Trump y Facebook corrompieron la democracia, y cรณmo puede volver a pasarโ€, libro de Brittany Kaiser, y nos platicรณ un poco acerca de cรณmo se crean perfiles psicolรณgicos a partir de la informaciรณn que dejamos tirada como basura en redes sociales (sรญ, likes y toda esa mierda). Resulta escalofriante la exactitud con la que pueden conocernos una vez que tienen suficientes datos, como recomendaciรณn podemos dar ยซMe gustaยป y ยซSeguirยป a cosas que no nos gustan para que no tengan un perfil tan preciso. Hacer esto tambiรฉn ayuda a que la informaciรณn que se te presente (noticias, anuncios, etc.) no estรฉ sesgada al tema definido de forma algorรญtmica como ยซde tu agradoยป.


Al finalizar esta actividad habremos aprendido:

  1. Algo de programaciรณn
  2. Raspar informaciรณn de la web
  3. codificar y ejecutar un script

Introducciรณn


Hoy platicaremos un poco acerca de cรณmo extraer informaciรณn de la red, utilizaremos el lenguaje de programaciรณn R. Este lenguaje de programaciรณn tiene un enfoque al anรกlisis estadรญstico y ha evolucionado tanto que ya puedes hacer casi cualquier cosa con su ayuda. Los invito a visitar este par de pรกginas web que construรญmos con R.

Coronavirus (Web app para ver tasa de infectados/muertos que raspa informaciรณn diariamente de OMS)

Nicรณmaco (Web app para analizas nรบmeros naturales y jugar con espirales de nรบmeros primos)

Instalaciรณn

Si no tienes R puedes descargarlo aquรญ:

para Windows:

https://cran.r-project.org/bin/windows/base/

para Mac:

https://cran.r-project.org/bin/macosx/

instale R y prosiga con la actividad.


Resumen

Comenzaremos con un ejercicio sencillo obteniendo informaciรณn de la URL

http://www.discogs.com

El cual es una base de datos de la mรบsica. Pero, la idea al fondo de esta actividad, es sembrar los conocimientos bรกsicos para que cada quien pueda hacer sus propios proyectos de cultivo de datos.

En esta actividad, construiremos un script (archivo con serie de lรญneas de cรณdigo que realiza una tarea especรญfica al ser ejecutado) que al ejecutarlo nos pida el nombre de una artista y el programa automรกticamente entre a la pรกgina del artista en discogs y extraiga la informaciรณn de artistas que han colaborado con el artista buscado. A continuaciรณn agrego una captura de una ejecuciรณn del script en donde gรฉnero la lista de ยซartistas amigosยป o ยซcolaboradoresยป de el artista buscado: Lassi Nikko.

La actividad es sencilla y se realiza paso a paso de manera que pueda seguirse sin mucho esfuerzo y esta destinada a cualquier pรบblico, sin importar si tiene o no conocimientos de programaciรณn. El video se realiza junto con un asistente que nos apoyarรก con generar dudas y preguntas durante la actividad de manera que sirva de ayuda a cualquiera que llegue a frenar su avance en la actividad debido a confusiรณn o mal interpretaciรณn.

Actividad

Video de actividad, sรญguenos en Youtube.

Si eres de los que prefiere leer, aquรญ puedes consultar la actividad desarrollada en forma textual, que tambiรฉn puede servir como material de apoyo para resolver alguna duda del video.

http://www.mediafire.com/file/8wt0u9bsnhc3658/Mining_artist_friends.html/file

Dicho esto, no dejen de escribir con sus dudas, comentarios, sugerencias, correcciones. Las cuales leo y contesto con mucho gusto.

Me despido con los mejores deseos para todos ustedes.

โ€“ Atl Tlachinolli

Afina tu Arduino con una escala igualmente temperada eligiendo tu propia entonaciรณn

ยกLiberate del La a 440 Hz!

ยกHola a todos amigos!

Espero encontrarlos muy bien en este caluroso mes de marzo.

He aquรญ un Arduino muy barroco al que le encanta tararear Bach. Lo interesante de este Arduino es que es capaz de afinar la escala a partir de un La medio ingresado por el usuario, con ayuda de la funciรณn tuneScale() se genera una escala igualmente temperada de 12 notas como output a partir de dicho ยซlaยป medio, recibido como input.

Para este sketch, basta cambiar el valor de la4 en la lรญnea de cรณdigo nรบmero 12.

De esta manera nuestro Arduino rompiรณ la jaula de la entonaciรณn en ยซLa 440 Hzยป a la que se le habรญa querido encasillar en una precoz etapa del bosquejo.

La motivaciรณn para escribir este cรณdigo fue escuchar las diferencias de afinaciรณn en escalas igualmente temperadas al elegir un La medio en el intervalo [400,450]Hz como ยซguรญa de afinaciรณnยป. Pues, se sabe que la afinaciรณn con un la de 440 Hz, no fue normalizada sino hasta 1995 con ISO 16, antes del cual se consideraba aceptable cualquier ยซlaยป del intervalo [400,450]Hz, siendo un La de alrededor de 430 Hz el predominante en muchas escuelas.

Funciรณn para afinar escala a partir de La medio ingresado (A4)

La curiosidad de escuchar una misma melodรญa con variaciones en la afinaciรณn de la escala igualmente temperada, fue motivaciรณn suficiente para escribir el siguiente bosquejo con el cual puedes elegir el valor de tu la medio o ยซguรญa de afinaciรณnยป para despuรฉs apreciar un fragmento del hermoso preludio No.1 en do mayor, parte del clavecรญn bien temperado, escrito por el maestro Bach.

A continuaciรณn se comparte el bosquejo de Arduino para su propio deleite:

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//  Tune me & I Play you Bach โ€“ Arduino Bach player with user defined tuning โ€“ tlachinolliatl@gmai.com /////
//  Visit our life Blog at:                                                                            /////   
//                         http://www.atl.travel.blog                                                         ///// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// The inspiration behind this code was to hear the differences in equal temperament tuning  varying the value of the key note A4   ////
// standardly tuned at 440 Hz with some controversy about better harmonic generation with 432 cicles per second (Hz).               ////
//  Overall, there was a tendency towards the end of the 18th century for the frequency of the A above middle C to be in the range  ////
// of 400 to about 450 Hz.                                                                                                          ////  
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// change following value for tuning the scale
double la4 = 400; // checar como puede modificar este valor el usuario durante ejecuciรณn
//recomendaciรณn: definir los tiempos, h de half: d, w, h, q
int h=250; // aquรญ solo se definiรณ h, ya que para esta melodรญa no habrรก variaciรณn de tiempo en las notas.
// cent function recieves number of cents n and returns proportion factor to use it in tuneScale function to create user tuned scale
double centFactor(int n){
    double proportion;
    double power;
    power = (double)n/12; // por no hacer el casting todo valรญa nepe
    proportion = pow(2, power);
    return proportion;
  }
// The Tune function
double * tuneScale(double la4){
    static double  scale[12]; // arreglo para guardar las notas generadas
    // a partir de middleA podemos obtener Do de una octava mas arriba, que es la que utilizaremos
    // por medio de la siguiente formula de Cents, introducida por Alexander Ellis en 1875
    // b = a*2^(n/1200) 
    // se obtiene cualquier nota b por medio de la nota a y el numero n de cents en el intervalo de a hasta b
    double do5;
    do5 = la4*centFactor(3);
    for (int i = 0; i < 12; i++) {
      scale[i] = do5*centFactor(i);
   }
  return scale;
  }
double * scale = tuneScale(la4); // creation of the scale from tuneScale function and predefined la4
double  C = scale[0], //definimos las frecuencias de las notas
        Cs = scale[1],
        D = scale[2],
        Ds = scale[3],
        E = scale[4],
        F = scale[5],
        Fs = scale[6],
        G = scale[7],   
        Gs = scale[8],
        A = scale[9],
        As = scale[10],
        B = scale[11], 
        PAU = 30000; //pausa

int random_tonal_row, random_note = 0;        
// array of 15 tonal rows consisting of 16 notes each
double melody[15][16] = { // consider array as [number of melody rows][number of notes on each melody row]

  // The Well-Tempered Clavier, BWV 846: Prelude No. 1 in C major (Fragment)

                   { C/2, E/2, G/2, C, E, G/2, C, E, C/2, E/2, G/2, C, E, G/2, C, E },
                   
                   { C/2, D/2, A/2, D, F,  A/2, D, F, C/2, D/2, A/2, D, F,  A/2, D, F },
                   
                   { B/4, D/2, G/2, D, F, G/2, D, F, B/4, D/2, G/2, D, F, G/2, D, F },
                   
                   { C/2, E/2, G/2, C, E, G/2, C, E, C/2, E/2, G/2, C, E, G/2, C, E} ,

                   { C/2 , E/2 , A/2 , E, A, A/2, E, A, C/2 , E/2 , A/2 , E, A, A/2, E, A },

                   { C/2, D/2, Fs/2, A/2, D, Fs/2, A/2, D, C/2, D/2, Fs/2, A/2, D, Fs/2, A/2, D },

                   { B/4, D/2, G/2, D, G, G/2, B/2, G, B/4, D/2, G/2, D, G, G/2, B/2, G },

                   { B/4, C/2, E/2, G/2, C, E/2, G/2, C, B/4, C/2, E/2, G/2, C, E/2, G/2, C },

                   { A/4, C/2, E/2, G/2, C, E/2, G/2, C, A/4, C/2, E/2, G/2, C, E/2, G/2, C },

                   { Fs/4, A/4, D/2, A/2, C, D/2, A/2, C, Fs/4, A/4, D/2, A/2, C, D/2, A/2, C },

                   { G/4, B/4, D/2, G/2, B/2, D/2, G/2, B/2, G/4, B/4, D/2, G/2, B/2, D/2, G/2, B/2 },

                   { G/4, As/4, E/2, G/2, Cs, E/2, G/2, Cs, G/4, As/4, E/2, G/2, Cs, E/2, G/2, Cs },
                     
                   { F/4, A/4, D/2, A/2, D, D/2, A/2, D, F/4, A/4, D/2, A/2, D, D/2, A/2, D }, 

                   { F/4, D/2, F/2, Gs/2, B/2, F/2, Gs/2, B/2, F/4, D/2, F/2, Gs/2, B/2, F/2, Gs/2, B/2 },

                   { E/4, C/2, E/2, G/2, C, E/2, G/2, C, E/4, C/2, E/2, G/2, C, E/2, G/2, C }
                   
                   };

void setup() {
  // put your setup code here, to run once:
  pinMode(11, OUTPUT); // fija pin 11 como salida
  Serial.begin(9600); //for freakin' printin'
}

void loop() {
  for (int i = 0; i < 15; i++) {  
    //random_tonal_row = random(0,15); // definimos renglon tonal de manera aleatoria. Para random(min,max) el mรญnimo es inclusivo mientras el maximo es exlcusivo
    Serial.println();
     // imprimimos en serial para rescatar posibles combincaciones interesantes al utilizar random
    //Serial.print(":");
      for(int j = 0 ; j < 16; j++){
        Serial.print(melody[i][j]);
        //random_note = random(0,17); // 17 no existe es para agregar posible pausa
        //Serial.print(random_note);
        Serial.print("\t"); // tabulador para distinguir renglones tonales de mas de dos digitos
        tone(11, melody[i][j]); //da el tono a la frecuencia de la nota del ciclo, le pasamos el renglon tonal aleatorio para las 16 notas o podemos pasarle tambiรฉn random note.
        delay(h);//se mantiene con la nota el tiempo definido, para tiempos mas complejos se puede hacer un arreglo similar a melody
        noTone(11); //finaliza la nota
      }
  }
  //Serial.println();
}

El cรณdigo anterior pueden descargarlo en el enlace compartido a continuaciรณn:

ยกHaz clic aquรญ para descargar Arduino_i_play_u_bach sketch!

Cualquier pregunta, duda, aclaraciรณn o recomendaciรณn acerca del cรณdigo por favor hรกganla saber escribiendo un correo en la secciรณn de contacto.

Aquรญ pueden escuchar un par de grabaciones de audio con fines demostrativos donde se compara la apreciaciรณn de un fragmento de BWV 846: Prelude No. 1 in C major ejecutado con una escala igualmente temparada en la entonaciรณn normalizada con A4 = 440 Hz seguida de una entonaciรณn de 400 Hz. ยฟCual te parece mas armรณnica?

Escuchar BWV 846 afinado en base a ยซlaยป medio de 400Hz

Escuchar BWV 846 afinado en base a ยซlaยป medio de 440Hz

Ejercicios propuestos:

  1. Modifica el cรณdigo para que la melodรญa sea reproducida al revรฉs.
  2. Modifica el cรณdigo para que se reproduzcan los renglones tonales de forma aleatoria.
  3. Modifica el cรณdigo para que reproduzca las notas de la melodรญa de forma aleatoria.

ยกSaludos y feliz primavera!

Aplicaciones web educativas en R

R Shiny: herramienta en potencia para facilitar el proceso de enseรฑanza-aprendizaje

ยกHola a todos amigos!

En esta hermosa tarde de noviembre, aprovecharemos para platicarles un poco acerca del lenguaje de programaciรณn R y la poderosa librerรญa Shiny, con la cual puedes diseรฑar tu propia aplicaciรณn web interactiva de manera increรญblemente sencilla, te invitamos a conocer el poder de R Shiny probando la siguiente app, con la que podrรกs conocer entre otras cosas, las propiedades de los primeros diez millones de nรบmeros naturales:

https://atltl.shinyapps.io/niko/


En la imagen de portada (al inicio), se muestra una grafica de pastel con cinco rebanadas, las cuales representan la proporciรณn de los factores primos del numero 123123, los cuales son:
3, 7, 11, 13 y 41.

Si hacemos el producto de los factores primos de un numero, reconstruimos el numero original:

3 x 7 x 11 x 13 x 41 = 123123


Nota curiosa:

ยฟRecuerdan algo asรญ como?

ยซEl orden de los factores no altera el productoยป

Esta oraciรณn habla especรญficamente de una multiplicaciรณn (producto). Los factores no son mas que los elementos que se multiplican. Pero esto no aplica para cualquier operaciรณn. Por ejemplo, en la divisiรณn. Cuando no hay alteraciรณn por el orden de operado, decimos que la operaciรณn es conmutativa.


La aplicaciรณn fue bautizada con el nombre ยซNicรณmacoยป, en honor al filรณsofo y matemรกtico Nicรณmaco de Gerasa (primero en clasificar los nรบmeros naturales en abundantes, deficientes y perfectos, segรบn la suma de sus divisores propios) te permite conocer tanto los divisores propios de un nรบmero como la suma de los mismos. Obtener los factores primos y su clasificaciรณn segรบn de Gerasa, entre otras cosas.

Con Nicรณmaco, podemos introducir los conceptos de nรบmero natural, numero primo y compuesto, de divisores y factores, entre otros, de una manera didรกctica, interactiva y divertida. Aprovechando la tecnologรญa que ofrece la amplia paqueterรญa de librerรญas de R y unas cuantas funciones propias.

Ademรกs, Nicรณmaco contiene un espiral de Ulam interactivo, con el que se puede, una vez comprendidas las definiciones de nรบmeros primos y compuestos (y saber que no existe una ยซfรณrmulaยป para obtener el n-รฉsimo primo) sumergirnos en la curiosidad visual del aparente orden en el caos de distribuciรณn primal sobre estos fabulosos espirales, donde podrรก controlar tanto el nรบmero de vueltas cรณmo el nรบmero de entradas.

Espiral con 7107 entradas, 2470 vueltas.

A continuaciรณn presentamos una intrigante animaciรณn del espiral de Ulam que se obtuvo variando el numero de entradas mientras se mantenรญa un numero de vueltas constante, con 10 capturas por segundo…

Aquรญ dejamos el script con las funciones que se utilizaron para generar gifs de este tipo.
A la funciรณn create_gif() se le indica intervalo [a,b] y numero de vueltas. Se crean (b-a) imรกgenes en el directorio de trabajo en el que se encuentre. Con las que puede generar un gif con ayuda de una aplicaciรณn como PicGif (OSX).

## Script que genera b-a graficas para creac gif
## Function that plots Ulam Arquimedian Spiral (Pseudo Stach spiral, Stach gives 1 turn por cada cuadrado perfecto)
prime.spiral <- function(obs,vueltas){
  vueltas <- vueltas * 2  
  data.frame(x = seq(0, vueltas * pi, length.out = obs), primo = sapply(1:obs,chkp)) %>% mutate(theta = x %% (2 * pi), r = x) %>%
  ggplot() + aes(x = theta, y = r, colour = primo) +
  coord_polar(start = - pi / 2, direction = - 1) + 
  ggtitle(expression(Espiral~r == theta)) + geom_point() +
  ylim(0, vueltas * pi) + xlim(0, 2 * pi) +
  labs(x = NULL, y = NULL)
}

create_gif <- function(a,b,vueltas){
	v <- a:b
	for(n in v){
		myplot <- prime.spiral(n, vueltas) 
		png(paste("plot", n, ".png", sep = ""))
		print(myplot)
		dev.off()
	}
}

Se recomienda crear una carpeta especial para almacenar los archivos png creados por create_gif() y asignarla como directorio de trabajo. Una vez hecho esto basta con introducir las funciones anteriores y hacer:

create_gif(num_entradas_inicial, num_entradas_final, num_vueltas)

Ejemplo:

create_gif(100, 150, 20)

crea (150-100) = 50 imรกgenes de un espiral de veinte vueltas. iniciando con 100 entradas y aumentando de una en una hasta 150. Con estas 50 imรกgenes se puede crear un gif como el mostrado arriba con ayuda de algรบn software que genere gifs a partir de un conjunto de imรกgenes, software muy comรบn hoy en dรญa.

ยกEspero que les haya parecido interesante y les deseo lo mejor!

โ€“Atl Tlachinolli

Como acelerar tu cรณdigo de R

Fi de Euler en la mirilla
โ€“Toc toc… โ€“ยฟQuiรฉn es? โ€“Fi de Euler…

Deja de escribir ยซR a la Cยป y aprovecha la verdadera velocidad de R

ยกMira este video si no estas de humor para leer!

Resumen

Para escribir cรณdigo veloz en R tomamos en cuenta tres cosas:

  • Pruebas lรณgicas
  • Subconjuntos
  • Ejecuciones simultaneas de elementos de un objeto

El cรณdigo que las utilice en lugar de ciclos for con condiciones if serรก por lo general mรกs rรกpido.

Esto pasa por que R, a diferencia de lenguajes como C, no compila antes de ejecutar. Durante la compilaciรณn, la computadora optimiza el uso de la memoria para los ciclos for, es por eso que corren rรกpido en C, pero en R, debemos hacer uso de las Pruebas lรณgicas, Subconjuntos y Ejecuciones simultaneas de elementos para sacar provecho de sus caracterรญsticas y asรญ obtener el mayor beneficio (la mayorรญa de las veces).


Se optimizaron las funciones del paquete R Qurra, obteniendo una mejora notoria en tiempo de ejecuciรณn, mediante el uso de estos tres principios. Tambiรฉn se obtienen los primeros 1000 valores de la funciรณn Fi de Euler en tan solo veinte segundos (en un equipo del 2009).

Introducciรณn

En la entrada anterior compartimos un pequeรฑo paquete de funciones de R, resultado de un ejercicio de iniciaciรณn realizado despuรฉs de repasar la sintaxis y conceptos fundamentales. Aunque las funciones cumplieron su cometido, estรกbamos cayendo en una mala costumbre tรญpica de programadores que se mudan de lenguajes cรณmo C a R.

G. Grolemund, autor de Hands-On R Programming, libro excelente que comparto a continuaciรณn:

https://rstudio-education.github.io/hopr/

dirรญa que estรกbamos ยซhablando R con acento de Cยป…

Es decir, utilizando un montรณn de ciclos for con condiciones if dentro (sin tomar en cuenta que R no compila) en lugar de aprovechar las caracterรญsticas que hacen a R tan poderoso, en una palabra, la vectorizaciรณn. Se re-escribiรณ el cรณdigo del paquetito de funciones pero ahora sรญ, ยซa la Rยป, e hicimos luchar las distintas versiones de funciones chkprime para verificar que se haya conseguido una mejora en tiempo de ejecuciรณn.

Procedimiento

Se escribiรณ una segunda versiรณn del paquete de funciones R Qurra, la cual se comparte a continuaciรณn:

rqurra2.0.R

intentando evitar ciclos for con condiciones if dentro y se tratรณ de implementar todo mediante pruebas lรณgicas, subconjuntos y ejecuciรณn simultรกnea de elementos.

Se escribiรณ la funciรณn fight para hacer competir a la familia de funciones chkprime, tomando el tiempo que demoran en hallar los primos en los intervalos:

[1,1000] , [1,10000] y [1,100000]

y observar las mejoras en tiempo de ejecuciรณn.

La funciรณn regresa un data frame listo para utilizarse para graficar en ggplot (paquete de R).

se escribiรณ la funciรณn phi que recibe n natural como argumento y regresa phi(n) donde phi es la funciรณn Fi de Euler, funciรณn de suma importancia en teorรญa de nรบmeros y el sistema de cifrado RSA.

Resultados

En este video se muestra como correr el script y utilizar las funciones, asรญ como resultados y conclusiones:

Grรกfica de comparaciรณn de velocidad de familia de funciones chkprime* (realizada con ggplot2 y data frame que regresa la funciรณn fight), observe que a pesar de que el tiempo de ejecuciรณn de la familia es muy similar para una longitud de 1000 (punto de partida), a medida que seguimos avanzando observamos que la funciรณn chkprime ยซa la Cยป (en rojo) se empieza a quedar atrรกs y es rebasada incluso por la chkprime.r (en verde) que estรก muy poco optimizada (por no decir otra cosa).


Comparaciรณn de tiempo de ejecuciรณn entre familia de funciones que encuentran primos
Comparaciรณn de velocidad de la familia de funciones chkprime

Con ayuda de la funciรณn testrlpr reloaded, la cual revisa si un par de nรบmeros son primos relativos entre si, se diseรฑรณ la funciรณn phi, que regresa el valor de la funciรณn Fi de Euler, es decir, le pasas un natural como argumento y te regresa la cantidad o cardinalidad del conjunto de primos relativos de ese nรบmero que sean menores que el mismo. Se obtuvieron los primeros diez mil valores de la funciรณn para realizar la grรกfica siguiente.

Grรกfica de primeros 10000 valores de funciรณn Fi de Euler, creada con ggplot.
(obtenidos en aprox. 110 minutos con la funciรณn phi en cpu Intel i5 2.4Ghz con 4 GB de RAM)


Grรกfica de primeros 10000 valores de la funciรณn fi de Euler
La funciรณn fi se relaciona con el sistema de cifrado RSA, el cual ocupa primos enormes para el encriptado

Conclusiones

A pesar de todo, no hay que pensar que es malo usar ciclos for en R, pero recordar este par de consejos podrรญa ser รบtil:

  1. Si observas un ciclo for con un if dentro, lo mas seguro es que puedas remplazarlo con operaciones de subconjuntos y condiciones lรณgicas y este serรก mas veloz.
  2. Si es necesario utilizar un ciclo for, trata de minimizar su bloque de cรณdigo para que se realice lo menos posible dentro del mismo.

En R la mayorรญa de las funciones estรกn vectorizadas, por lo que al aplicarlas a un vector se hace a todos los elementos del vector al mismo tiempo, evitando demoras, mientras un loop for lo harรญa uno por uno (y sin el boost que le darรญa la compilaciรณn), esta es la causa por la cual es preferible evitarlos de ser posible, en la mayorรญa de los casos.

Una parte muy importante de la programaciรณn en cualquier lenguaje es la reutilizaciรณn de cรณdigo. En la ciencia de datos, es prudente aprovechar tambiรฉn cualquier informaciรณn ya existente antes de generarla uno mismo, asรญ se logra completar proyectos en menor tiempo. Por ejemplo, seguro en algรบn lugar en la red podemos encontrar los primeros diez mil (o mรกs) valores de la funciรณn Fi de Euler. Nosotros hubieramos podido ahorrar los 110 minutos que se tardรณ la funciรณn phi en hallar los primeros diez mil valores que utilizamos para la grรกfica. Tambiรฉn pudimos haber utilizado alguna funciรณn para checar primos disponible en la red en lugar de perder tiempo escribiendo las nuestras… Pero la idea de escribir estos pequeรฑos paquetes de funciones, es que nos sirva de ejercicio para: acostumbrarnos a la sintaxis de R, entender el manejo de las estructuras de control que ofrece R para despuรฉs poder comprender, modificar y unir cualquier cรณdigo que hallemos y que el tiempo que perdimos en escribir estos ยซpaquetitos de funcionesยป se recupere a la hora de solucionar las tareas de cรณdigo del futuro. Lo que queremos decir es; si todavรญa no te sientes como un experto de R, es mejor que escribas unas cuantas funciones por ti mismo antes de querer reutilizar cรณdigo ya existente. Asรญ cรณmo crear algunos vectores, matrices, listas y marcos de datos para acostumbrarse a su manejo y filtrado.

ยกLos mejores deseos para todos ustedes!

โ€“ Atl Tlachinolli

Programaciรณn en R

Los primeros cuatro primos se encuentran entre el uno y el diez. Si los sumas, el resultado es 17

Nรบmeros: primos, primos relativos perfectos y amigos

Aprendiendo R con curiosidades matemรกticas

Preรกmbulo

ยฟQuรฉ tal Tlachinollis?

En lo personal, por acรก se podrรญa decir que somos mas adeptos de ANSI C pero debemos comentar que nos estamos enamorando de R. Este poderoso, intuitivo y eficaz lenguaje, te permite aprender a programar evitando conceptos complicados como declaraciรณn de variables, apuntadores y asignaciรณn de memoria, es la herramienta perfecta para el estudiante de ciencias e ingenierรญas o para cualquiera con una curiosidad inherente por los nรบmeros.

Confesaremos ser novatos en R, lo poquito que hemos escrito son unas funciones muy sencillas para el manejo de tablas generadas por sistemas de rastreo deportivo ZXY (ZXY Sport tracking systems), las cuales pueden hallarse aquรญ:

R ZXY Sport Tracking data edition tools

esto ya fue hace tres aรฑos y a hachazos, sin saber mucho de R se fue implementando en unos tres dรญas por que asรญ fue el plazo de trabajo, hicimos lo que se pidiรณ… pero digamos que sin aprender de forma adecuada, o al menos como hubiรฉsemos deseado en caso de haber tenido mas tiempo.

Ahora estamos desempolvando o mรกs bien re-aprendiendo con paciencia y con ayuda de un par de libros excelentes para iniciarse, los cuales se encuentran en la red en varios sitios, aquรญ les dejo la lista con los enlaces por si les interesa:

La mejor manera de aprender es con las manos a la obra. Despuรฉs de refrescarnos un poco de la sintaxis de R para quitarnos el chip ANSI C, algunos resultados fueron las siguientes funciones que sirven para revisar curiosidades matemรกticas como nรบmeros primos, nรบmeros perfectos, nรบmeros amigos y primos relativos, que son funciones muy bรกsicas que presentan un buen ejercicio para el aprendizaje de un nuevo lenguaje de programaciรณn, ademรกs pueden llegar a ser de utilidad para estudiantes de cursos cรณmo fundamentos de รกlgebra . En fin, quisimos compartirlas, esperamos que a alguien le sean รบtiles.


Cรณdigo

A continuaciรณn se muestra el cรณdigo fuente y explicaremos como pueden usarse las funciones para pasar un buen rato.

ยกHรกgalo usted mismo!

Tan solo copie y pegue el siguiente cรณdigo en la consola de R y presione introducir, con lo que estarรก listo para jugar con las funciones :

# R Qurra packet
# functions to test primes, relative primes, perfect and friend numbers
# This package may be useful for undergraduate students in Fundaments of Algebra courses
# where you are usually introduced deeply into this concepts and their properties
# tlachinolliatl@gmail.com
#########################################################################

# Function that checks for primality
# returns TRUE in case n prime, FALSE instead
# try checking primality for first 100 natural numbers like this:
# > chkrprime(1:100)
chkprime <- function(x){
	primo <- vector()
	j <- 1
	for(n in x){
		primo[j] <- T
		for(i in 2:(sqrt(n))){
			if(n%%i==0 && n!=2){
				primo[j] <-F
				break
			}
		}
	j <- j+1		
	}
return(primo)
}
# Function that returns a list of proper divisors of a given set of numbers
# divp stands for (div)isores (p)ropios
#
divp <- function (x){
	k <- 1
	lista <- list()
	for(n in x){
		divisores <- vector()
		j <- 1	
		for(i in 2:(n/2)){
			if(chkprime(n)) break # not looping if n is prime
			if(n%%i==0){
				divisores[j] <-i
				j <- j+1
			}
		}
	lista[[k]] <- c(1,divisores)
	k <- k + 1			
	}
return(lista)
}

# Function that checks if a pair of numbers are friends between them
# if friends, testfrnd returns TRUE, else it will return FALSE
#
#  Muhammad Baqir Yazdi found the pair (9363584,9437056) in the XVII century 
# Checking this pair took a couple of minutes for my old Intel Core 2 Duo at 2.13 GHz
# Try with  (1184, 1210) for faster computation
testfrnd <- function(x,y){
	divpx <- unlist(divp(x)) # is the same divp(x)[[1]]?
	divpy <- unlist(divp(y))
	sumx <- sum(divpx)
	sumy <- sum(divpy)
	if(sumx==y && sumy==x){
		return(T)
	}else return(F)
}
#Function that checks if two numbers x,y are relative primes between them
# i.e. MCD(x,y) = 1 i.e. they have no common proper divisors between them !=1
# if relative primes, testrprime returns TRUE, else it will return FALSE
testrlpr <- function(x,y){
	divpx <- unlist(divp(x))
	divpy <- unlist(divp(y))
	if(length(divpx)==1 && divpx[1]==1 || length(divpy)==1 && divpy[1]==1){
		return(T)
	}else
	if(any(divpx[2:length(divpx)]==divpy[2:length(divpy)])){
		return(F)
	}else return(T)
}

#Function that checks if a number is perfect
# i.e the sum of his proper divisors (including one) add up to the same number
# Example: proper divisors of 6 are 1, 2, 3 wich sum 1+2+3 = 6 the number itself
# RETURNS TRUE IF NUMBER IS PERFECT FALSE INSTEAD 
# Find the perfectos between 1:10000 with a crazy R loop like this:
# > for(i in 1:10000) if(testprfc(i)) print(i)
# be patient it may take a while
testprfc <- function(x){
	divpx <- unlist(divp(x))
	sumx <- sum(divpx)
	if(sumx==x){
		return(T)
	}else return(F)
}


En el siguiente video se muestra como sacarle un poco de jugo a estas funciones desde la consola de R, lo cual puede ser una prรกctica para cualquiera que se estรฉ iniciando en este lenguaje:

Si tienes comentarios para mejorar el cรณdigo o algรบn consejo de R relacionado con las funciones anteriores serรก muy apreciado.

ยกNos despedimos con los mejores deseos!


De los nรบmeros he aprendido:

ยซSi quieres llegar a ser perfecto comienza por ser tu propio amigoยป

โ€“ E.P. del Cerro


Bracalete de Coralillo

ยซEl ombligoยป – Jerald

Primer cuento de la serie, ยซLa escalera infinitaยป de E.P. del Cerro.

Acerca del autor

E.P. del Cerro es un poeta y escritor mexicano independiente que realiza su obra cerca de Xico, Veracruz. Autodidacta y misterioso, se le puede encontrar al pie de la montaรฑa, bajo la sombra de los encinos, donde escribe durante horas sus andanzas y recuerdos de la juventud, en un intento de hacer conciencia y poder servir a generaciones al porvenir. Dicen que habita en una cueva cercana de la zona, en un terreno muy escabroso en el que es complicado el ingreso incluso para los adeptos a la exploraciรณn salvaje.

La escalera infinita

E.P del Cerro ha estado escribiendo ya desde hace unos 10 aรฑos y la idea principal en su mente es un libro llamado ยซLa escalera infinitaยป donde se compilan distintos relatos llenos de fantasรญa, magia y poderosos alcaloides. Desde la indefenso THC hasta el maligno Tolueno. ยซBracalete de coralilloยป es tan solo uno de las numerosas aventuras de este intrincado autor. Lo recomendamos ampliamente. A continuaciรณn agregamos un fragmento de el mencionado cuento y un link para descargar el archivo pdf con la historia completa.

Bracalete coralillo (fragmento)

El cielo estaba despejado. Por un instante la maรฑana pareciรณ estar suspendida en el tiempo… no se escuchaba ningรบn ruido alrededor. El sol se elevaba majestuoso y esparcรญa seda dorada entre los verdes cerros, mรบltiples aves se regocijaban con su calor mientras acicalaban sus plumajes tornasol. Mรกs a lo lejos se hallaban unas ardillas recibiendo el baรฑo vital que les ofrecรญa el benรฉvolo astro. Todo estaba lleno de una gratitud y alegrรญa que podรญa ser apreciada inclusive con los sentidos adormecidos.

Era una dicha estar presente en ese momento. Un mundo lleno de impredecibles instantes que mantienen el suspenso. En cada paso… en cada respiro.

Con los aรฑos aprendes a dejarte llevar… a abandonar la imagen que tienes de ti mismo y permitirte ser moldeado por los acontecimientos que experimentas en esta incesante marea de emociones que nos gusta llamar vida. โ€“ E.P. del Cerro.

Link de descarga

Click aquรญ para descargar cuento competo ยซBracalete de Coralillo.pdfยป

Espero que tengan un poco de tiempo para darle una leรญda y nos comenten que les pareciรณ. Saludos.

Grรกfica y regresiรณn local de temperatura interna LG M2762D

Se observa un comportamiento logarรญtmico con una posible asรญntota en y = 35ยบC tras dos horas de funcionamiento despuรฉs de la reparaciรณn de Pierre y Atl mod.

Graficando datos capturados por sensor LM35 en Arduino Monitor Serie

Mah xipano

Problema

Insatisfechos con las grรกficas obtenidas por el Arduino Serial Plotter, con sus raras escalas y repleta de interferencias generadas por las variaciones de voltaje (capturadas por el sensor LM35 durante los registros), decidimos hacer nuestras propias grรกficas en R.

Resumen

Se modificรณ nuestro bosquejo de Arduino, de modo que lo รบnico que se imprimiera en el Monitor Serie fueran pares ordenados X1, X2.
Donde X1 = segundos transcurridos y X2 = temperatura registrada en tiempo X1.
Despuรฉs se realizaron tres pruebas, dos con un tiempo de 3600 segundos y una de 7200 (con distintos aparatos: Apple Tv, Philips DVD, Wii U), durante las cuales se registraron las medidas de temperatura por segundo con el bosquejo mencionado, todas las pruebas fueron realizadas con una luz de fondo al 100%. A continuaciรณn se copio la informaciรณn del Monitor Serie y se guardรณ en un archivo de texto con extensiรณn .csv para su futura exportaciรณn a R en donde se realizaron las graficas respectivas junto con una regresiรณn local de el paquete lattice encontrado en librerรญa de R.

La televisiรณn pudo utilizarse por un periodo de 2h sin alcanzar los 35ยบC (temperatura mรกxima de funcionamiento recomendada en el manual de usuario oficial de LG).

Existen diferencias en el comportamiento del aumento de la temperatura interna dependiendo del equipo que se estรฉ utilizando o quizรกs dependiendo de la naturaleza de las imรกgenes presentadas durante las pruebas, aparentemente, el menor aumento de temperatura por unidad de tiempo se obtiene mediante transmisiรณn por RGB observando videos en youtube, mientras el mayor se observa jugando Wii U conectado mediante HDMI. Dicho esto, aclaramos que la afirmaciรณn del pรกrrafo anterior sigue siendo vรกlida en ambos casos.

Requerimientos

  1. Computadora, Arduino, Sensor LM35, R.
  2. Bosquejo de Arduino para capturar datos:
    Bosquejo
  3. Archivo de datos capturados en extensiรณn .csv, se obtiene con bosquejo anterior
    Ejemplo
  4. Script de R para graficar datos con regresiรณn local:
    Script

Procedimiento

Con el sensor LM35 instalado en el interior de la TV, aislado y apartado lo suficiente para evitar cortos circuitos (ver esta entrada para mas informaciรณn). Se importรณ el nuevo bosquejo a nuestro Arduino, el cual se colocรณ en la parte posterior del televisor de manera que pudieramos conectar el LM35 (hicimos una perforaciรณn en la parte trasera de la tele para dar salida a los cables del LM35 instalado adentro) y se realizaron tres experimentos para los cuales se mantuvo abierto el Monitor Serie de Arduino y al finalizar cada experimento se copio la informaciรณn del Monitor en Serie y se pasรณ a un archivo de texto para guardarla con extensiรณn .csv para despuรฉs importarlas a R.

Se obtuvieron estos tres archivos:

https://www.mediafire.com/folder/23vzusy97i6eg/

Despuรฉs se realizรณ el script de R que se presenta a continuaciรณn:

  
#R Plot - Graficando regresiรณn local a partir de medidas con interferencia
#Medidas de temperatura de interior de TV LG m2762d tomadas con transistor LM35
#instalado en su interior, datos capturados con Arduino.
#Bosquejo de Arduino, apunta un par ordenado x,y donde x = segundo, y = temperatura
#en el monitor en serie. Uno por lรญnea, estos datos fueron despuรฉs copiados y pegados
#En un editor de texto y guardados con extensiรณn .csv para su futura manipulaciรณn en R
#EL SIGUIENTE SCRIPT ESTร DESARROLLADO PARA GRAFICAR LOS DATOS CAPTURADOS JUNTO CON UNA
#REGRESIร“N LOCAL. LA FINALIDAD ES LA PRESENTACIร“N DE UNA CURVA DE TEMPERATURA
#CONTRA TIEMPO PARA ESTE EQUIPO DESPUร‰S DE LA REPARACIร“N DE PIERRE Y MODIFICACIร“N ATL
#CON EL OBJETIVO DE PREVER FUTURAS PROBLEMรTICAS EN LA PLACA DEL INVERSOR
#COMO USAR:
#
#------------------------------------------------------------------------------------
#Importando archivo:
#/Users/Administrador/Desktop/prueba_temperatura_8_jul_appletv
plotdata <- read.csv("directorio_de_archivo/archivo.csv")


#Graficando con regresiรณn local (LOESS) con ayuda de lattice (librerรญa de R)

#importando libreria de lattice
library(lattice)


#panel function pa' paintar pimped lรญneas
panel_fn <- function(x, y, ...)
{
    panel.xyplot(x, y,col = "cornflowerblue" ...)
    panel.xyplot(x, y, type = "smooth", col = "gray33", lwd ="4", ...)
    #panel.abline(v = 3600, col="darkorange")
    panel.abline(h = 35, col="orangered")
	
}


#plotting you menso!

xyplot(plotdata$X2 ~ plotdata$X1, panel = panel_fn, pch=".", cex = "2",xlab = "Etiqueta X", ylab = "Etiqueta Y" , main = "Tรญtulo principal", xlim=c(0, max(plotdata$X2)), ylim = c(20,40) )



  

Basta sustituir <directorio_de_archivo/archivo.csv> por la ruta hacia tu archivo en la primera lรญnea del cรณdigo y correr el script para obtener la grรกfica.

Resultados

Prueba 1. Apple TV, aprox 60 minutos

Lรญnea naranja-roja horizontal en y = 32ยบC. Supuesta asรญntota segรบn entrada anterior bajo una prueba por RGB de 1 hora 40 minuots. Aquรญ ya la estรก alcanzando en 1 hora. ยฟEs RGB mรกs cool?

Prueba 2. Philips DVD, aprox 60 minutos

Se puede apreciar que a pesar de que la Prueba 2 iniciรณ a una temperatura menor que la Prueba 1, se alcanzรณ la misma temperatura al cabo de 1 hora.
ยฟA quรฉ se debe?

Prueba 3. Wii U, aprox 2 horas

Aparentemente se calienta mas rรกpido con Wii U. Podemos ver que en menos de una hora ya se rebasรณ la ยซasรญntotaยป de 32ยบC. Tambiรฉn podemos ver que no parecen existir interferencias, debe ser por el convertidor AC/DC del Wii U.
ยฟBonito no?

Conclusiones

Todavรญa no estamos seguros de nada en especรญfico pero podrรญamos afirmar lo siguiente:

O utilizar la televisiรณn por RGB es lo que menos genera estrรฉs por temperatura y utilizarla con Wii U es lo que mรกs.

ร“ cada vez se estรก calentando mรกs rรกpido nuestra televisiรณn.

Debemos mencionar que en la prueba de 2 horas se comenzรณ a percibir un olor peculiar cรณmo a plancha caliente alrededor del segundo 6000. No era un olor a quemado, pero tampoco muy agradable. Pienso que quizรกs es buena idea dejar reposar la PCB dentro de agua destilada despuรฉs de la reparaciรณn y limpieza (nosotros utilizamos alcohol isopropรญlico para limpiar despuรฉs de las reparaciones) para eliminar cualquier residuo quรญmico que pudiera despedir gases no deseables.

Secuela

En un par de semanas mรกs, dรกndole uso a nuestra televisiรณn vamos a abrirla nuevamente para ver el estado de nuestra PCB del inversor (pieza reparada) y de una vez crearemos un manual con instrucciones para realizar la reparaciรณn de Pierre y la modificaciรณn de Atl paso por paso, reuniendo las recomendaciones y advertencias que se conocieron durante la experimentaciรณn documentada en este, nuestro Blog de Vida.


Por otro lado, me parece intrigante la belleza que presentan los patrones de interferencias en las pruebas de Apple Tv y Philips DVD, y estamos pensando en traducir algunas secciones superiores de estas interferencias para escucharlas en forma de mรบsica.

Ahรญ hay un mensaje oculto…

ยกSaludos amigos!

โ€“Atl Tlachinolli

DivX hack en LG M2762DL (Norte Amรฉrica).

ยฟPuede EAX31549701 con IC LGE1864C-LF reproducir video desde USB ยซservice onlyยป?

ยฟPor que no es posible hacer este ยซhackยป en equipos fuera de la Uniรณn Europea?

A LG Electronics no le bastรณ con hacer inversores defectuosos cรณmo el PLLM-M901D y violar los acuerdos de las licencias de software libre GPL y LGPL en versiones de firmware ( software de la tele) del 2009 al 2011. Sino que ademรกs decidieron vender la peor versiรณn de FLATRON m2762d en Amรฉrica, Asia y Australia (la triple A).

Sin mencionar que las actualizaciones que lanzaron no eran, por lo general, para parchar problemas del firmware sino para bloquearlo mรกs, de modo que los usuarios fueramos incapaces de modificar opciones para las cuales, antes de la actualizaciรณn, se tenรญa un acceso sencillo.


En la secciรณn de secuela de la entrada anterior, mencionรฉ que quizรก era posible modificar el televisor desde el menรบ de servicio para obtener lectura de imรกgenes, mรบsica y video desde la entrada USB en la parte posterior que dice ยซservice onlyยป. Y en efecto, esto ha sido logrado anteriormente pero solo en televisores europeos…

La razรณn por la cual no funciona en modelos de otros continentes es por que la placa principal de audio y video es en esencia diferente para los modelos europeos. En la siguiente imagen vemos una comparaciรณn de ambas:

Audio/Video Main board americana EAX31549701 (izquierda) y su prima europea EAX61341504 (derecha).

La diferencia mas problemรกtica en el caso de querer meter el firmware europeo en una americana es el mismรญsimo chip principal, la europea trae un  LMD9201A-LF-SD y la americana un LGE1864C-LF, a continuaciรณn se muestra una comparaciรณn de los dos IC’s:

XD ENGINE EUROPEO (IZQUIERDA), XD ENGINE AMERICANO (DERECHA) AMBOS PARA LG TV M2762DL

Esta parece ser la causa principal (seguro otros IC’s distintos ayudan) de que la televisiรณn quede inservible al intentar ยซflashearยป el firmware europeo en una televisiรณn de otro continente y tambiรฉn por la cual no es fรกcil encontrar instrucciones para esta modificaciรณn en nuestros modelos, ya que seguramente el chip no es tan bueno (su velocidad) como para reproducir video desde la USB.

Asรญ que dejaremos esto por la paz y pues si alguien sabe cรณmo lograr utilizar el USB en una FLATRON m2762dl americana por favor explรญquenos.

Debo mencionar que en LG se negaron a proporcionarme un firmware actualizado para este equipo, asรญ como cualquier informaciรณn al respecto, como muestro en la siguiente captura:

LG no guarda firmware descontinuado ni aporta informaciรณn acerca de este.

Asรญ que cualquiera que haya bloqueado su m2762d intentando activar reproducciรณn de video por USB por medio de firmware europeo en un aparato americano (o cualquier otro motivo), no cuenten con la ayuda de LG para regresar su equipo al funcionamiento. Tendrรกn que cambiar todo el AV mainboard… o que algรบn buen samaritano proporcione el firmware original (yo podrรญa hacerlo si es que alguien lo necesita para el modelo en cuestiรณn) e intentar flashearlo por Serial cable (RS232).

La รบnica versiรณn americana de firmware que pude encontrar en la web fue el 4.30.01 y no estoy seguro si sea compatible para m2762dl, si alguien me puede ayudar con esto, aquรญ comparto el firmware americano de LG que hallรฉ disponible:

https://www.mediafire.com/file/538ic7a5wqzj1ry/US_IC102_V4.30.01_flash.epk

ยกSaludos!

LG M2762D: luz de fondo en 100% minimiza sobrecalentamiento.

Si crees en ti mismo y de veras quieres algo, vas y lo consigues โ€“ Andy Ruiz Jr.

Mantener brillo automรกtico desactivado y luz de fondo a 100% en todos los perfiles

Mah cualli yohualli

Resumen

Hola amigos de Atl Tlachinolli, nos complace informarles que todo indica que se logrรณ alcanzar la meta de poder utilizar la televisiรณn por periodos entre 90 y 120 minutos sin rebasar una temperatura elegida por seguridad de 32ยบC, resulta que una configuraciรณn con luz de fondo al nivel mรกximo reduce el estrรฉs generado por el calor. A continuaciรณn presento el video de la evidencia:

Conclusiรณn

Nuestras recomendaciones tras la reparaciรณn de Pierre y la modificaciรณn de Atl son que se mantenga desactivado el brillo automรกtico y se configure la luz de fondo en 100% para todos los perfiles con el objetivo de alargar la vida del televisor (si, todavรญa mas).

En el manual de usuario de este televisor, el cual agrego a continuaciรณn

https://atl.travel.blog/wp-content/uploads/2019/07/esp.pdf

se puede encontrar la temperatura mรกxima de uso, que es de 35ยบC. Por lo que creemos que podrรญamos utilizar la TV por quizรกs una hora mรกs en el mejor de los casos antes de llegar a 35ยบC, sumando un total de tres horas de uso posibles antes de alcanzar esta temperatura, lo cual es un tiempo bastante cordial para entretenimiento, se podรญa decir que hasta excesivo. Por lo mencionado, creemos que no serรก necesario la instalaciรณn de ventiladores que se habรญa propuesto anteriormente, a menos que queramos organizar un maratรณn… lo cual no estarรญa mal, pero por lo mientras lo dejaremos ahรญ.


Secuela

Y al final del dรญa, parece que ese puerto USB ยซinutilยป que mencione, que se encuentra en la parte trasera del televisor, puede que no sea tan inรบtil… Todavรญa no estoy seguro pero quizรกs sea posible hacer una modificaciรณn desde el menรบ de servicio (menรบ para servicio tรฉcnico oculto) para conseguir utilizar este puerto para la visualizaciรณn de imรกgenes, reproducciรณn de mรบsica e incluso pelรญculas contenidas en el USB insertado.

A continuaciรณn presento un enlace que habla acerca de el tema:

https://www.elotrolado.net/hilo_jaquear-lg-lh-y-lf-para-reproducir-mkv-a-traves-del-usb_1298198

Originalmente, el mรฉtodo se presentรณ para los modelos XXLHYYYY y XXLF25YY.

Pero entre los comentarios encontramos alguien que afirma que tambiรฉn funciona para m2762-pz, a continuaciรณn agrego una captura del comentario mencionado:

ยฟFuncionarรก para nuestra m2762d-pc?

Serรญa genial poder ver pelรญculas con una USB desde nuestra TV resucitada.

En el mismo enlace, encontramos la informaciรณn para entrar al menรบ de servicio

Pudimos entrar al menรบ de servicio con el mรฉtodo presentado en la imagen anterior, pero no existรญa la opciรณn ยซTooloptionsยป, a continuaciรณn presento la informaciรณn del menรบ de servicio de mi LG m2762d-pc


LG FLATRON M2762D

ENTER SERVICE MENU?

PRESS MENU IN CONTROL AND IN TV SET UNTIL PASSWORD ASKED
ENTER 0000
SERVICE MENU APPEAR

SERVICE MENU INFORMATION


MODEL : M2762DUPM/LPL27_LM270WF1
S/W VER : 3.01.0
UTT : 19956
ADC CAL.
RGB : OK
YPbPr(SD) : OK
YPbPr(HD) : OK
00 HDCP : OK (5b,2e,0d,f8,c1)
โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.โ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆโ€ฆ.
AREA OPTION: MEXICO
POWER OFF HISTORY
SS CONTROL
BAUD RATE 9600
AUDIO EQ ON
CHANNEL MUTE OFF
SYNC LEVEL
DTV SNR&DVI/HDMI Status

later i tried to enter same menu but entered this ONE instead
not really sure if i did something different

ADC CALIBRATION : RGB
ADC AJUST
SUB B/C ADJUST
W/B ADJUST
WHITE PATTERN : OFF
2HOUR OFF : ON
UART DOWNLOAD
FACTORY MODE : OFF
DEBUG MODE : OFF


Supongo que el firmware es demasiado viejo, leรญ que con el 3.15 funcionaba para otros modelos de m2762d, el gran problema es que esta entrada es tan vieja como la tele… por lo que todos los enlaces estas muertos. He estado navegando por doquier sin poder hallar este archivo…

ยฟAlguien que tenga esta TV que pueda ayudarme a revisar la versiรณn de su firmware?

En caso de que sea alguna funcional para la modificaciรณn serรญa maravilloso que pudiera extraer el firmware siguiendo las instrucciones de el siguiente enlace:

http://openlgtv.org.ru/wiki/index.php/How_to_backup_TV_firmware

o en su defecto

ยฟAlguien tendrรก el firmware 3.15 para m2762d que nos pueda compartir?

Tlazohcamati miyac

โ€“Atl Tlachinolli