martes, 13 de abril de 2021

Control de tren RC por infrarrojos


 
Control de Tren RC
Infrarrojos

Mando TV LG
MX1616
Arduino


Hace tiempo que tenía en mi mente hacer un controlador de tren RC.
Hace tiempo había realizado una serie de montajes sobre control de vehículos RC utilizando
nRF24L01 y L293D. CAR_L293D versión .
Lo que si tenía claro es que debía ser lo mas sencillo posible, por lo que no quería utilizar control por radiofrecuencia.
En otro montaje posterior había creado un controlador de LED mediante un mando de TV.
irc-seta 
El utilizar el mando de una TV LG simplifica mucho el proyecto, solo hace falta crear la parte receptora.

La parte receptora esta compuesta por un par de LEDS que indica la dirección, y un controlador de motores en H.
El módulo tiene un CHIP MX1616 que tiene un doble controlador para dos motores, solo se utiliza 1 solo controlador para cambiar la dirección de giro del motor del tren. El CHIP está formado por interruptores MOS  de baja resistencia, calor mínimo, sin disipador de calor, tamaño pequeño, bajo consumo de energía, es ideal para baterías,  ideal para usar en coches inteligentes a batería, coches de juguete, robots. Voltaje de alimentación de 2V ~ 10V, y una corriente de 1.5A.


MX1616

ESQUEMA DE MONTAJE.




CIRCUITO MONTADO




Debido a la poca capacidad de la máquina del tren, solo he podido meter el módulo MX1616, alimentado con las 2 pilas de 1.5V .
Se sacan 3  cables , GND, IN3,IN4, que serán los utilizados para controlar la dirección de la máquina.

// ___SETA43  _____
// 13/04/2021 _____
//Mando Infrarojo LG

#include <IRremote.h>

#define PinIR   4
#define OUT1 2
#define OUT2 3

IRrecv irrecv(PinIR);

decode_results results;
int codeType = -1;

void setup()
{
  Serial.begin(9600);
  pinMode(13, OUTPUT); 
  pinMode(OUT1, OUTPUT);pinMode(OUT2, OUTPUT); 
  Serial.println("HABILITAR IR-TREN");
  irrecv.enableIRIn(); // Start the receiver
 
}

void loop() {
  if (irrecv.decode(&results))
  {
    digitalWrite(13, HIGH);
    codeType = results.decode_type;

    switch (codeType)
    {
      case RC5:
        Serial.print("Received RC5: "); Serial.println(results.value & 255);
        break;
       
      case NEC:
        Serial.print("Received NEC: "); Serial.println(results.value & 255);
        Serial.println("-----------");
       
        switch (results.value & 255)
        {        
          case 253:
              digitalWrite(OUT1, LOW);
              delay(100);         
              digitalWrite(OUT2, HIGH);
            break;
          case 125:
              digitalWrite(OUT2, LOW);
              delay(100);
              digitalWrite(OUT1, HIGH);
            break;
          case 221:
              digitalWrite(OUT2, LOW);
              digitalWrite(OUT1, LOW);
            break;
        }
      break;
      default:
        Serial.print("Unexpected codeType ");
        Serial.print(codeType, DEC);
        Serial.println("---");
        break;
    }

    irrecv.resume(); // Receive the next value
    digitalWrite(13, LOW);
  }
  delay(20);
}


Como se puede observar, el arduino está alimentado con una batería externa de 3.6V , esto es debido a que los 3V de las 2 baterías no son suficientes para que funcione el arduino.

He utilizado los códigos IR del mando LG correspondientes a las flechas de arriba y abajo, junto con la de OK que para el tren.
De esta forma no crean conflictos si la TV LG está apagada.

La alimentación es uno de los problemas a que me he enfrentado, si hubiese tenido 3 baterías de 1.5, 4.5V en total, no hubiera sido necesario doble alimentador. Que cada uno busque su solución dependiendo del tipo de tren que tenga.

VÍDEO


Saludos.
Juan Galaz


Bibliografía:

16/10/2019 - Arduino - COPIADOR CÓDIGOS INFRARROJOS. IRcopy
02/10/2019 - Arduino - EMISOR INFRARROJOS. EmisorIR
17/09/2019 - Arduino - RECEPTOR INFRARROJOS. irc-seta
14/02/2018 - Arduino - Coche teledirigido, mando 3 ejes, nRF24L01, L293D. CAR_L293D versión
13/12/2017 - Arduino - Coche teledirigido con fpv , nRF24L01 , L293D. CAR_L293D
28/11/2017 - Arduino - Coche teledirigido con fpv , nRF24L01 , Arduino. CAR_RELE
https://arduinodiy.wordpress.com/2019/11/02/mx1508-vs-l9110s-vs-l293-motordriver-board/

 

domingo, 11 de abril de 2021

DISEÑO DEL CIRCUITO ELECTRÓNICO PARA ACTIVAR UN DISPLAY DE UN VIEJO DVD/BLUETOOTH

DISEÑO DEL CIRCUITO ELECTRÓNICO PARA
ACTIVAR UN DISPLAY DE UN VIEJO DVD/BLUETOOTH


Ing. Alfredo Segura


He desechado una unidad DVD/Bluetooth que comenzó a fallar. Por supuesto he reciclado algunas de sus partes, entre ellas el Display.


Este Display cuenta con el circuito integrado SC6928B, el cual se puede controlar mediante las líneas STB, CLK y DI/O.
El Puerto USB que se muestra en la imagen es para otro uso del aparato DVD/Bluetooth. Por otra parte, los tres botones si interactúan con el Chip, pero en mi proyecto no se les da uso.
El primer paso es identificar en el conector y en relación a las patillas del CI SC6928B las conexiones de GND, Vcc, STB, CLK y DI/O, es decir 5 cables que deben ser seleccionados, soldados y en el otro extremos de los mismos conectar un “peine” de contactos, debidamente encapsulado en plástico.


Nota:  Para cualquier fabricación de este tipo de conectores, he usado barras de polietileno con pistola caliente. Una vez derretido el plástico se aplica en el conector ya armado y enseguida se coloca entre dos metales gruesos y limpios para que quede debidamente “aplanado”.
El segundo paso es echar mano del Datasheet del CI SC6928B para analizar la manera en que la información es enviada/recibida desde un controlador. En mi proyecto el controlador será una PC, y el puerto de control será el Paralelo 0x378 para un primer modo.
En un segundo modo, haré los diseños en este mismo tratado para la comunicación por USB bajo Windows usando una interface con PIC.
Debido a que únicamente haremos que el SC6928B reciba datos para mostrarlos en el Display, a continuación se muestra el diagrama de tiempos y señales, obtenido del Datasheet:

Y de acuerdo al mismo Datasheet, el SC6928B debe recibir 4 comandos específicos en el siguiente orden:


Y ¿Cómo son los comandos?

Comando 1: Comando para el ajuste del Modo del Display.


Comando 2: Comando para el ajuste del Dato.



Comando 3:  Comando para el ajuste de la Dirección.


Comando 4:  Comando para el Control del Display.


¿Que sigue?
Sigue hacer el programa en Visual Basic para controlar el Puerto Paralelo de la PC y ofrecer las señales descritas de STB, CLK y DI/O para el SC2968B, mediante los pines 2 = D0, 3 = D1 y 4 = D2, mientras que de la fuente de 5VCD se obtiene la alimentación para el Display.
En el Display y con el programa en VB, podremos mostrar textos hasta de 6 caracteres, pero con la ventaja de que podemos hacer scroll a la izquierda para mostrar muchas palabras, las cuales pueden estar en un archivo de texto en la PC e invocarlo para mostrarlo una sola vez, o como un banner.
También podemos mostrar la hora de la PC, programando lo necesario en VB. Los entusiastas que vean este proyecto podrán usar el lenguaje que más les acomode, por lo que este Proyecto será su guía para incluso, hacer más cosas.
En la carpeta descargada encontrarán todo el software del proyecto en VB6.



Y ahora con USB:

Quizá tu PC ya no tenga puerto Paralelo. Por ese motivo hice la interface para poder usar este Display a través de USB.
Para hacer esa interface he usado el PIC18f14k50, porque tiene un módulo USB listo para usar, además de ser un circuito con 10 pines por lado y ocupar poco espacio. Lleva un cristal de cuarzo de 12 MHz el cual alimenta un PLL interno en el PIC para multiplicarse por un factor de 4 y ofrecer una frecuencia para dicho módulo USB de 48 MHz.



Es claro observar que la tarjeta electrónica con el PIC18f14k50 sirve como interface entre cualquier PC o laptop con un puerto USB y el SC2968B que sigue actuando con las 3 señales de control en paralelo. El PIC se encarga de esa conversión.
En el paquete de descarga se encuentra el programa en C++ del PIC (y también en *.hex) para que el entusiasta lo estudie, lo modifique y haga las modificaciones que le plazcan.

Diagrama de la tablilla interface:



Está claro que la alimentación de +5VCD que proviene del cable USB de la PC o laptop sirve para la alimentación del PIC18F14k50, del Chip SC6928B y del Display ya que no consumen demasiada corriente.
Como siempre, hay que respetar los colores en el cable USB, que son como se muestra a continuación:



D- siempre está al lado de +5VDC y es cable blanco.

Tablilla PCB de la Interface USB para el Display SC6928B y una PC o Laptop.



PROGRAMAS


México, Abril de 2021


sábado, 10 de abril de 2021

ESP32-CAM WEBCAM

 

ESP32-CAM
ESP32
WEBCAM


Este es mi segundo contacto con el ESP32, y cometí un error de principiante.
Cuando hice el montaje conecte la alimentación de 5V al pin Vcc, es una consecuencia de los muchos montajes con arduino.
Estuvo así durante 5 segundos, antes de darme cuenta del error cometido.
El ESP32 funciona a 3.3V que es su Vcc, y tenía que haber conectado los 5V al pin de 5V del ESP32.
El módulo ESP32 dispone de un regulador que transforma los 5V a los 3.3V que necesita el ESP32.
No se estropeo,  sigue funcionando, pero ha cambiado algo internamente, en algunas ocasiones no hace falta dar el botón BOOT para que cargue el programa.

Para instalar el entorno ESP32 debemos seguir los pasos de mi anterior montaje,
esp32a.html
Y seleccionamos la placa que tenemos, en mi caso es Al Thinker ESP-CAM.


Leemos el programa  desde el menú  Archivos->Ejemplos->ESP->Camera-CameraServer
Veremos que es un programa que funciona para varios tipos de módulos de cámara ESP32.
Debemos cambiar el programa comentando y descomentando  nuestro módulo.

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

Ahora nos queda indicar la red a la que debemos conectarnos y su contraseña.

const char* ssid = "MI_ROUTER";
const char* password = "MI_CONTRASEÑA";

Ya solo queda compilar nuestro programa y subirlo a la placa.

Aquí tenemos dos posibilidades según la placa que hayamos comprado.
Si solo hemos comprado el módulo ESP32-CAM , debemos de tener un convertidor USB->Serie para programar el módulo.


Puede que hayáis pedido junto con el módulo ESP32-CAM otro pequeño módulo adaptador  USB->Serie para el ESP32-CAM.

 
Yo recomiendo este último caso debido a que posee dos botones de BOOT y RESET para su programación por solo 2€ mas.
Además dispone del conector USB con el que podemos alimentar todo el conjunto.


    UDR ->TX
    UDT ->RX



Para programar el módulo debemos en el entorno IDE dar el botón Subir.
Después de unos segundos de compilar el programa nos aparece en la consola  Conectando......

Ahora debemos pulsar el botón RESET mientras tenemos pulsado el botón BOOT (Pin ID0).
Tenemos saber que el pulsar el botón es llevarlo a Cero o GND , en el vídeo no tengo pulsadores lo hago conectando y desconectando el pin a GND.
Cuando en la consola vemos que esta cargando el programa, ya podemos de dejar pulsado BOOT.
Esperamos un tiempo y vemos el porcentaje de programa subido.
Una vez subido el programa, nos pide un RESET, en algunas placas lo hace automáticamente.



Con el
módulo adaptador  USB->Serie para el ESP32-CAM , todo se hace mucho mas fácil al dispones de los botones de BOOT y RESET.
El proceso es el mismo,
debemos pulsar el botón RESET mientras tenemos pulsado el botón BOOT (Pin ID0), y cuando el programa empieza a cargar, soltamos el botón BOOT .

Si todo fue bien nos aparecerá en la consola serie el siguiente mensaje:

Como podemos ver, nos aparece la dirección donde en cualquier navegador podemos ver la WEBCAM.


Si solo queremos ver la webcam colocamos la dirección:  http://192.168.1.150:81/stream
Para capturar una imagen: ffmpeg -i http://192.168.1.150/capture -c copy -y imagen.jpg

El consumo del módulo depende de la resolución de la cámara.

No trasmisión    100mA

Resolución
320x240      180mA
1024x768     200mA
1600x1200    230mA


Esto es normal debido a que con imágenes grandes se necesita mas utilización del procesador.

VÍDEO

Espero que le haya gustado este tutorial, aunque seguro que existe mejores tutoriales.

Saludos.
Juan Galaz


Bibliografía:
esp32a.html
https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
https://www.profetolocka.com.ar/2020/07/09/programando-el-esp-32-con-el-arduino-ide/
https://www.prometec.net/presentando-el-esp32/
https://scientric.com/2019/11/07/esp32-cam-stream-capture/
https://learn.circuit.rocks/esp32-cam-with-rtsp-video-streaming
espaa.html
espb.html



jueves, 8 de abril de 2021

ESP32 BLINK


 

ESP32

BLINK


Este es mi primer contacto con el ESP32, es el hermano mayor de ESP8266 con el cual tomé contacto en:
espaa.html
espb.html
Existen multitud de páginas que explican mucho mejor que yo todas sus características , ver bibliografía.
Hay diferentes módulos del ESP32, y varían los pins y características.
Lo primero es instalar la placa ESP32 en la IDE del Arduino.
Añadir : https://dl.espressif.com/dl/package_esp32_index.json  en Gestor de URLs.....

Buscar esp32 e instalar.

Seleccionar vuestra tarjeta. En mi caso es ESP32 Dev Module.

Leemos el programa y compilamos.
En Linux nos puede ocurrir un error, que aunque tengamos instalado python nos salga un error de que no lo encuentra.
    exec: "python": executable file not found in $PATH
La solución es hacer un enlace, en Ubuntu 20 se hace con:
    sudo ln -s /usr/bin/python3 /usr/bin/python
Otro error fue que no tenía instalado la librería serial de python, en Ubuntu 20 lo hago con:
    sudo apt-get install python3-serial
Ahora si todo fue bien compilará e instalará.

Para mis prácticas he utilizado el ESP32-WROOM-32D, aunque en los esquemas utilice otro módulo, por lo que los pins varían.
int ledPin = 2;
void setup()
{
  pinMode(ledPin, OUTPUT);
}
void loop()
{
  digitalWrite(ledPin, HIGH);
  delay(1000);
  digitalWrite(ledPin, LOW);
  delay(1000);
}

El primer proyecto es el parpadeo de un LED.




En algunos modelos de ESP32 como la placa de Althinker nos son capaces de entrar en modo de programación automática.
Cada vez que programamos el módulo debemos pulsar el botón BOOT.
Para los que quieran solucionar esta pega, se puede solucionar colocando un condensador de 22uF del pin EN a GND




Este será  el primero de una serie de artículos con el ESP32.

VÍDEO

Saludos.
Juan Galaz

Bibliografía:
https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
https://www.profetolocka.com.ar/2020/07/09/programando-el-esp-32-con-el-arduino-ide/
https://www.prometec.net/presentando-el-esp32/


miércoles, 7 de abril de 2021

FreeCAD -Teclado para Arduino

FreeCAD
Teclado para Arduino


En un montaje anterior había realizado una calculadora con arduino. CALCULADORA

Como se puede ver los pulsadores y componentes se ve. Aunque funciona bien, en el aspecto estético deja que desear.
Mi intención en este montaje es realizar en 3D una cubierta en PLA con la impresora ENDER 3.
Lo primero y lo mas difícil es diseñarlo con FreeCAD

Aunque funciona bien FreeCAD, en algunos momentos se vuelve inestable, impidiendo en algunos momentos modificar el diseño.
Este diseño tiene muchas capas y el programa se arrastra en algunos momentos.
El primer prototipo quedo bien, pero debía realizar algunas modificaciones.

Primer prototipo.

Después del primer prototipo diseñe el prototipo final.




Después del diseño se imprimió en ENDER 3 con el programa CURA.

Una vez impreso se colocó un papel impreso plastificado.


Como podemos observar queda mucho mas estético.
Si hubiese diseñado otra vez el teclado, adelgazaría la hoja superior de 1mm a 0.6mm para que el tacto del teclado fuese mejor.

El diseño con FreeCAD es un poco pesado, pero es el que conozco, seguro que existe otros programas mejores.

FICHEROS

Saludos.
Juan Galaz

Bibliografía:

ardcal.html

martes, 6 de abril de 2021

Control Remoto universal para aparatos eléctricos o electrónicos

Control Remoto universal
para aparatos eléctricos o electrónicos
Autor:
Alfredo Segura Celedón



Este es el segundo proyecto que no es mio y que publico en mi página web.
Todo el proyecto es de Alfredo, los ficheros son tal cual como me los mandó.

Este proyecto es muy interesante, ya que se ha elegido un Control Remoto universal para controlar el encendido y apagado de aparatos eléctricos o electrónicos a distancia. En lo particular lo he dispuesto para apagar y/o encender la luz de mi recámara, durante la noche, ya que el apagador principal está cerca de la puerta, pero alejado de la cama.

El control remoto usado es un Mitzu modelo MRC-ZN4 el cual tiene un costo muy bajo en las tiendas departamentales, y cuyo protocolo de emisión infrarroja es de un protocolo muy común en televisores y otros aparatos (SIRC).

En cuanto al socket para el foco de la recámara, o al aparato que haya que controlar, se hacen las siguientes adaptaciones:

1.- Se diseña y se construye una pequeña tarjeta electrónica que consiste de un microcontrolado PIC12f629, un Cristal de Cuarzo de 12 MHz, un sensor IR (infrarrojo) VF838 o similar, un Relevador (Relay) de 5 VCD con dos polos y un tiro (C, NO, NC), algunos resistores, 1 diodo 1N4148, 3 Transistores BC548B y 2 capacitores de 22 pF.

Se hace uso de una fuente de 5 VCD de cualquier teléfono celular, con al menos 500 mA.

El programa del PIC12f629 se anexa a este proyecto y se puede compilar con PCW o cualquiera otro y grabar el PIC con el grabador con que se cuente.

El programa con el PIC12F629 detecta la señal infrarroja del Control Remoto MITZU del cual se usan solamente dos botones:

a) POWER para encender/apagar el dispositivo remoto
b) CH -, para encender/apagar cualquier otro control en el mismo dispositivo remoto

En mi proyecto, como ya mencioné, el dispositivo remoto es el foco de una recámara, cuyo socket cuenta con la electrónica descrita y un juego de leds blancos, que iluminan tenuemente la habitación, para no molestar a tu pareja de cama.

Mas información en el fichero: 12f629_mitzu2.txt



Esquema.


Estudio de la señal.


Señal de infrarroja.


Circuito montado.


Circuito impreso.


PROGRAMAS

Autor:   Alfredo Segura, Queretaro Mexico, agosto de 2019