LU9CBL

LU9CBL
LU9CBL

domingo, 12 de noviembre de 2017

Pantalla 3,5 pulgadas para Rapsberry Pi 3



Hace un tiempo buscando en internet había visto varios comentarios respecto de la utilidad de agregarle a la RaspberryPI una pantalla táctil. Mi principal objetivo es que cada vez que necesitaba hacer algo via gráfica, tenía que conectarla a la tele (ya que mis monitores no tienen entrada HDMI). Esto también conlleva el problema de tener ocupada la tele, lo cual no siempre es una posibilidad, sobre todo cuando se vive en familia.


Por ese motivo y mirando en los locales que tengo cerca del trabajo, puntualmente uno llamado Electrocomponentes [1] que es donde compre la RaspberryPi3 hace un tiempo, vi que tenía dos alternativas (teniendo en cuenta mi presupuesto). La primera era una pantalla de 2,5 pulgadas original de Element14 que costaba unos $1600. La segunda opción más económica, era una de 3,5 pulgadas pero genérica, la cual costaba la mitad (aproximadamente $800). En resumen fui por la opción económica.

Otra ventaja realmente importante respecto de otras opciones de pantalla es que la misma se conecta a la raspi mediante los puertos GPIO, y de ahí mismo también toma la alimentación. Hay otras versiones las cuales se alimentan mediante un cable usb, y con un adaptador especial de HDMI, pero ocupar un USB para alimentar la pantalla, cuando la placa solo trae 4 para usar, no era una opción en mi caso.

La instalación es realmente simple, y fue tomada de este link [2].

Como ya tenía el sistema operativo corriendo en al SD, porque ya estaba funcionando, directamente fui al paso 3 del instructivo:

Desde la consola, se ejecuta:
git clone https://github.com/Elecrow-keen/Elecrow-LCD35.git

Luego se procede a instalar el driver:
cd Elecrow-LCD35
sudo ./Elecrow-LCD35

Para finalizar se realiza el reinicio mediante el comando reboot:
sudo reboot

¡Y listo!
Así de simple, y tenemos ya operativa la pantalla.



¡Saludos!
Mati LU9CBL

Referencias:
[2] https://www.elecrow.com/wiki/index.php?title=3.5_Inch_480x320_TFT_Display_with_Touch_Screen_for_Raspberry_Pi

ACTUALIZACIÓN 03/02/2018

Una vez instalado aparece el siguiente mensaje, el cual excplica como volver a utilizar el HDMI en caso de requerirlo a futuro.

**********************Wellcome to use Elecrow pitft Setup******************
*                                                                                                                                       *
*              Switch to 3.5 inch LCD.  Example: sudo ./Elecrow-LCD35                          *
*    [Angle]   Support rotation: 0/90/180/270. Example: sudo ./Elecrow-LCD35 270   *
*    hdmi      Switch to HDMI.          Example: sudo ./Elecrow-LCD35 hdmi                *
*    A         Print about the author.  Example: sudo ./Elecrow-LCD35 A                        *
*    H         Print this help.         Example: sudo ./Elecrow-LCD35 H                             *
*                                                                                                                                       *
*    NOTE:     Only support Elecrow 3.5 Inch LCD.                                                       *
*                                                                                                                                       *
*                                                                            V1.0                                                   *
**********************************************************************
 

lunes, 13 de marzo de 2017

Ya un año de tu partida Fer LU2BPM (SK)



Hace un año ya, recibíamos la terrible noticia de la partida de un amigo de esos que no hay en todas partes. Fue y será por mucho siempre, una persona única, que siempre proporcionaba alegría en todos los ámbitos en los cuales participaba. Personalmente me toco conocerlo en el mundo de la radio, por ser uno de los integrantes del Grupo Dx Norte y realmente se lo extraña en cada concurso o actividad que uno desarrolla.



Para todos aquellos que no tuvieron la posibilidad de conocerlo, les dejo unos videos que demuestran la pasión que tenía por la actividad.





Fer sea donde sea que estés en este momento, sabe que te seguimos recordando con cada concurso o actividad que realizamos. Esperanos allá arriba para recibirnos cuando nos toque partir, y de esa manera alegrarnos nuevamente.
Mati LU9CBL

domingo, 4 de diciembre de 2016

Baliza de CW con Arduino Pro Mini [Parte 1]

Hace unos días, Claudio LU7DW, me comento la necesidad que tenia de armarse una baliza para la banda de 10 metros (28 MHz), para lo cual necesitaba hacer con algún PIC o Arduino que pueda realizar la manipulación del mensaje de la misma. A raíz de esto, buscando un poco en mi baúl de electrónica, decidí realizarlo en un Arduino Pro Mini, debido a su costo y su simplicidad de uso.



Aún no decidimos sobre qué equipo será instalado, pero como para ir avanzando en la codificación fue que se realizó una prueba preliminar. Se utiliza el pin 13 que ya posee un led incorporado para poder realizar la visualización de la manipulación.

Se utilizará en principio un LM7805 para poder darle los 5v que necesita la placa desde los 13,8 VCC del equipo que se elija, y se utilizará un transistor como conmutador para la secuencia de TX aplicada a su base (en principio se utilizará un 2N2222 y una resistencia en su colector, emisor conectado a masa).

A continuación se adjunta el código generado para que sobre el PIN 13 se emita los caracteres en telegrafía “VVV de LU7DW/BCN LU7DW/BCN GF05 GF05”. Se utiliza una única constante de tiempo en la variable cteTiempo declarada dentro de void loop() {} por lo que al modificar ese parámetro se aumenta y se disminuye la velocidad de tx, manteniendo las relaciones de espacio entre caracteres / palabras y entre sonidos cortos / largos.


Código Generado:
// Realizado por LU9CBL - Mat - 01/12/2016
// MENSAJE PARA BALIZA LU7DW:
// VVV de LU7DW/BCN LU7DW/BCN GF05 GF05
// Cada 20 segundos

int ledPin = 13; // LED en el pin digital 13
int cte;
int cteTiempo;
int cteTiempoLargo;

void setup() {
 
  // Configura el pin 13 como salida
  pinMode(ledPin, OUTPUT);
 
}

void loop() {
 
  // Declaro la constante de tiempo
  cte = 50;

  // Llamo a la función de la licencia de la baliza
  vvvde(cte);
  lu7dw(cte);
  lu7dw(cte);
  gridLocator(cte);
  gridLocator(cte);

  //ESPERA ENTRE MENSAJES (20 Segundos == 20000)
  delay(20000);
 
}

void vvvde(int cteTiempo){

  cteTiempoLargo = 3 * cteTiempo;

  //V
  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //V
  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //V
  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //D

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);
 
  delay(cteTiempoLargo);

  //E

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

}

void lu7dw(int cteTiempo){

  cteTiempoLargo = 3 * cteTiempo;

  //L
  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);
 
  //U
  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //7

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);
 
  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);
 
  delay(cteTiempoLargo);
 
  //D

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);
 
  delay(cteTiempoLargo);

  //W

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

// "/"

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //B

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);
 
  delay(cteTiempoLargo);

  //C

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //N

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

}


void gridLocator(int cteTiempo){

  cteTiempoLargo = 3 * cteTiempo;

  //G

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //F
  digitalWrite(ledPin, HIGH);   // activa el LED
  delay(cteTiempo);             // espera el tiempo de constante
  digitalWrite(ledPin, LOW);    // desactiva el LED
  delay(cteTiempo);             // espera el tiempo de constante

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //"0"

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempoLargo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

  //"5"

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  digitalWrite(ledPin, HIGH);
  delay(cteTiempo);
  digitalWrite(ledPin, LOW);
  delay(cteTiempo);

  delay(cteTiempoLargo);

}