Mostrando entradas con la etiqueta control. Mostrar todas las entradas
Mostrando entradas con la etiqueta control. Mostrar todas las entradas

lunes, 28 de marzo de 2022

DISEÑO Y CONSTRUCCIÓN DE UN CONTROLADOR DE FOCOS RESIDENCIAL VIA WiFi CON EL ESP-01 (ESP8266).

 

DISEÑO Y CONSTRUCCIÓN DE UN CONTROLADOR DE FOCOS RESIDENCIAL
 VIA WiFi CON EL ESP-01 (ESP8266).

Ing. Alfredo Segura, marzo de 2022.


Luego de leer y estudiar con interés el proyecto de seta43 en su página: http://seta43.blogspot.com/search?q=esp8266
“ESP8266 WebServer. Encender LED desde navegador” que resultó buenísimo, me di a la tarea de modificar un poco la programación en Arduino para, dejar solamente un pin de control, el cual activa un transistor BC548, y éste a su vez, un relé de 5VCD, cuyas terminales de contacto controlan un foco o lámpara de que tengo en mi casa.
Por supuesto hice una tarjeta electrónica por cada uno de los focos a controlar desde WiFi, aprovechando mi modem de banda ancha:


En cada tarjeta se ha insertado una fuente de poder de 5.1VCD, extraída de un cargador chino muy económico y bastante confiable:

Lleva un ESP-01, el cual aún es de costo bajo (unos 2 euros), el cual es programado con el IDE de Arduino, eligiendo la tarjeta Generic ESP8266 Module:

Nota: He leído que es mejor elegir la “Upload Speed: a 57600”, para este módulo en particular, sin embargo podrán hacerse pruebas con velocidades más altas.
Además se ha colocado un Regulador de 3.3V a 800 mA, como el AMS1117 de montaje superficial, que considero ideal para esta aplicación.
La salida GPIO0 del ESP-01 se lleva mediante una resistencia de 10K a la base de un transistor NPN, BC548, cuyo colector excita a un relé de 5VCD. El transistor se protege con un diodo 1N4148 conectado en su colector y tierra (masa), polarizado inversamente, el cual absorberá los picos transitorios negativos, que la bobina del Relevador produce, tanto al energizarse como al desconectarse.
Los contactos del relevador, COM y NO (Común y Normal Open), se alambran para encender el Foco o Lámpara a controlar.
El diagrama de las tarjetas es el siguiente:


Cada ESP-01, se programa con el archivo ESP-01_FocoOnOffWiFi.ino al cual se le pone una IP diferente. Por ejemplo, si el modem de Internet de nuestra casa tiene la IP 192.168.0.1, se eligen las IP como:

192.168.0.195, para controlar un foco en el patio trasero
192.168.0.196, para controlar un foco en el patio delantero
192.168.0.197, para controlar un foco en el comedor
192.168.0.198, para controlar un foco en la sala


Finalmente, debe armarse una tarjeta similar a las demás, a la cual no se le colocarán las resistencias de 10K, 38K, el transistor BC548, el Diodo 1N4148, y el relé. Ésta tarjeta funcionará como LandWeb, desde la cual se podrán acceder todas las direcciones de los focos a controla.
Elegí la IP de esta LandWeb como 192.168.0.201, cuyo ESP-01 se programa con el archivo de Arduino ESP-01_FocoWeb.ino, el cual contiene una simple página html, en donde están los links de cada uno de los ESP-01’s que controlan focos. Esta página html contiene lo siguiente:



En mi caso, que tengo un hogar bastante modesto, tengo los focos de cada zona en zócalos como el siguiente:

Éste zócalo tiene la ventaja de que cuenta con un gran espacio en su interior, en donde cabe perfectamente la tablilla electrónica, y al ser de plástico, la señal WiFi del ESP-01 no se bloquea.
Finalmente el modo de conectar la tablilla electrónica y los cables del foco, dentro de éste zócalo, se muestra a continuación. Hay que aclarar que el programa de Arduino está pensado, para que en el momento en que se accione el interruptor propio del foco ( el cual ha de estar seguramente en la pared de cada habitación o zona), éste se encienda, tal como lo haría el propio interruptor sin nuestro dispositivo. Así que luego desde un smartPhone, se accede a la IP 192.168.0.201 que es la LandWeb, que hemos de tener encendida (y en su respectiva caja, en algún lugar de la casa), desde donde podremos controlar el resto de los focos de la casa, que tengamos preparados con este dispositivo.

Este proyecto se pone a disposición de los entusiastas electrónicos, para que lo utilicen tal cual, lo modifiquen para mejorarlo, o les de ideas para nuevos proyectos.

PROGRAMAS



Ing. Alfredo Segura
Marzo de 2022.



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


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




lunes, 13 de abril de 2020

Arduino control salidas con JAVA


Arduino
Control salidas

JAVA


En un montaje anterior arseta.html había realizado un controlador de salidas mediante una placa Arduino.
Estaba realizado en Gambas (VB Linux), en esta ocasión lo realizo en JAVA.
Normalmente o trabajo en C, C++, y Basic.
El trabajo que he tenido que realizar para programarlo en JAVA a sido increíble.
Intentar encontrar fuentes donde existan ejemplos sobre la programación de los puertos serie en JAVA a sido muy difícil.
Cuando encontraba algo, estaba semicompletado o no funcionaba realmente.
En una de mis múltiples búsquedas encontré:
    http://josedeveloper.com/2012/01/28/comunicacion-serial-java-y-arduino/
Además de proporcionar los programas completos, enseñaba como compilar los programas sin errores.


Circuito.


Programa JAVA funcionando.


En cuanto al programa realizado para el arduino, los códigos se basan en anteriores montajes míos, son del tipo: petición de dato a través del interface serie, y respuesta por parte del arduino a través del mismo interface serie.
Por ejemplo:
     SET 8,0          Apagar pin 8  

    SET 8,1          Encender pin 8
El que quiera puede mandar los comandos por el teminal y mandarlos con SEND, harán el mismo efecto.
En la parte del Arduino, está preparado para que entienda desde los pin 14 al 19, que corresponden a A0 - A5 , pero no están implementados en la interface JAVA.
El cansancio de programar este programa en JAVA, me hizo que no realizara la comprobación del estado real de las salidas, estaba harto.
Para colmo, en teoría se puede empaquetar todo en un único fichero *.jar, pero yo no lo he conseguido.
Para hacer mas fácil la compilación y ejecución del programa, he realizado dos ficheros de comandos BASH   ./copile y ./run .
Lo que parece fácil de C o C++ , se hace muy complicado en JAVA, como el manejo de ficheros o puertos serie.
Está realizado en el entorno de Debian 10 , por lo cual el arduino debe encontrarse en /dev/ttyUSB0 , lo normal es que  buscase automáticamente donde está conectado el arduino, pero lo he simplificado.
Si por casualidad estuviese en otro sitio, deberemos indicarlo en la línea de comandos. ./run /dev/ttyUSB1 .

Espero que les sirva este programa para vuestros proyectos.

PROGRAMA-JAVA-ARDUINO

Saludos.
Juan Galaz

Bibliografía:
http://josedeveloper.com/2012/01/28/comunicacion-serial-java-y-arduino/

miércoles, 18 de marzo de 2020

Arduino Control salidas. wxwidgets - Portable - Linux _ Windows

Página principal
Arduino
Control salidas

wxwidgets
Portable - Linux _ Windows


En un montaje anterior arseta.html había realizado un controlador de salidas mediante una placa Arduino.
Estaba realizado en Gambas (VB Linux), en esta ocasión lo realizo en wxwidgets, tanto en Linux como en Windows.
Además aprovechando la oportunidad he realizado una nueva versión de Linux,  versión portable.
Esta versión funciona tanto en 32bits como en la versión 64bits.

Circuito.


Funcionando en Windows 10


Funcionando en Linux ,versión portable.

En algunos Windows, el puerto virtual Serie lo coloca muy alto, me encontrado en algunas ocasiones que estaba en Com23, el programa solo mira si existe entre el Com1 y Com5. Si es vuestro caso deberéis cambiar el lugar  para que este en el rango buscado. Se hace como administrador y en configuración de los puertos serie.
En la versión Windows la detección de los puertos se hace un poco lenta, debéis esperar algo (3-4 segundos).


PROGRAMA LINUX -WINDOWS

Saludos.
Juan Galaz



Bibliografía:

Arduino_Uno 1.0.1  programado por Rolfdahl-skogstade