martes, 27 de abril de 2021

ROBOT INTELIGENTE CONTROLADO POR BLUETOOTH


ROBOT INTELIGENTE CONTROLADO POR BLUETOOTH

Ing. Alfredo Segura

En el anterior proyecto habíamos realizado un ROBOT INTELIGENTE Y CONTROLADO POR INFRARROJOS.

Ahora voy a exponer como migrar este mismo proyecto para que sea controlado por Bluetooth.

Se va a requerir descargar e instalar desde Play Store, la App "Serial Bluetooth Terminal" (la llamaré SBT en adelante) en un SmartPhone y declarar los botones como a continuación se indica, todo en modo texto:

M1 con 0
M2 con 1
M3 con 2
M4 con 3
M5 con 4
M6 queda libre para un entusiasta que desee programar algo mas.



Al robot se le incorpora una tarjeta "SP32 DEV MODULE", a la cual se le envía el programa desde el IDE de Arduino "arana1.ino", el cual controlará un Driver H tipo L293D, un buzzer y recibirá vía bluetooth los comandos del 0 al 4
que se interpretarán de la siguiente manera:

COMANDO        FUNCION

0        Girar a la Derecha
1        Girar a la Izquierda
2        Detenerse completamente
3        Avanzar
4        Retroceder

Cuando está en funcionamiento el robot, desde el SmartPhone y haciendo uso de SBT se hacen las siguientes acciones:

1.- Encender el Bluetooth del SmartPhone
2.- En ajustes del SmartPhone, emparejar el robot, cuyo nombre es ESP32-CAR
3.- En SBT oprimir el ícono de Menú y elegir ESP32-CAR
4.- Esperar a que se conecte SBT con ESP32-CAR (es inmediato)
5.- Comenzar a enviar los comandos con M1 a M4

El robot tiene "vida propia", es decir se desplaza hacia adelante y cuando choca con un obstáculo, sus "antenas" detectan ese evento, enviando un nivel bajo a los pines GPIO34 y GPIO35 que son Entradas en el ESP32. Esto hará que el robot haga la siguiente secuencia de movimientos:

1.- Se detiene
2.- Manda un beep
3.- Retrocede
4.- Gira en el sentido contrario a la antena que detectó el obstáculo
5.- Avanza

En cualquier momento se puede interactuar con el robot para darle las instrucciones que el operario desee, pues el canal bluetoot está siempre disponible.

En caso de que el robot entre en un "callejón sin salida", está programado para que cada 13 segundos aproximandamente haga una secuencia similar a la detección de un obstáculo, aunque no haya evento de choque con antena. Esto se hace para sacar el robot de dicho callejón. Esta función es controlada por uno de los Timers del propio ESP32 debidamente programado en el propio software "arana1.ino"

El operario puede detener la marcha del robot con M2, y así se queda indefinidamente. Incluso el Timer no tiene efecto en este estado. Sólo el operario puede sacar al robot del estado detenido, ya sea aplicando alguna otra tecla diferente de M2 o bien activando físicamente cualquiera de las dos antenas.

Para montar el ESP32, se usan las mismas 2 pilas de 3.6VCD para dar 7.2VCD, pero ahora es conveniente usar un regulador 7805 con encapsulado TO-220, pues la demanda de corriente es mayor que la usada por el PIC16F87A.

El L293D sigue alimentándose con los 7.2VCD de ambas pilas en serie.

Las salidas digitales del ESP32 que son de 3.3V a nivel alto, son capaces de activar correctamente las entradas del L293D.

Es conveniente usar un buzzer que emita su sonido al aplicarle su voltaje de activación, mediante un transistor NPN que es controlado por el pin 27 del ESP32 DEV MODULE.

Se proporciona un listado de pinouts del ESP32 DEV MODULe, el cual tiene 15 pines por lado para dar un total de 30. No confundir esos pines con los del microcontrolador ESP32-WROOM-32D que está montado en la tablilla ESP32 DEV MODULE. Solamente algunos de los pines del microcontrolador son cableadas en el ESP32 DEV MODULE.

Se recomienda estudiar la rutina de control del Timer, sobre todo para calcular los tiempos en que se desborda el registro del timer usado y la participación del pre-escalador propio del ESP32.





PROGRAMAS


México, 2021


 

viernes, 23 de abril de 2021

ESP32 - SENSORES - OLED SSD1306Z - Servidor WEB

ESP32-  SENSORES

OLED  SSD1306Z
Servidor WEB
Temperatura/Humedad  DHT 22  (AM2302)
Temperatura 18B20
LUZ LDR


Este proyecto está realizado para poner en práctica un montón de montajes juntos, y practicar con el ESP32.
Está formado por 3 sensores, luz (LDR), temperatura y humedad ( DHT 22  (AM2302) ), sensor de temperatura (18B20).
Los datos se representan en un OLED (SSD1306Z) , además de tener un servidor WEB donde también se visualizan los datos en cualquier navegador.

Esquema eléctrico.


Circuito montado.


Pantalla OLED.


Datos en un navegador.

La construcción de este montaje fue  añadiendo y rediseñando montajes anteriores realizados con placas de arduino.

El primer paso era colocar la pantalla OLED 
SSD1306Z utilizando una librería propia que se añade con:
    #include "olex.h"
    #include <Wire.h>

El primer contacto con esta pantalla la tuve en el montaje arolet.html donde cree la librería.

Seguí añadiendo una LDR, que solo se necesita un conversor A/D . He utilizado el PIN34 (ADC6) , aunque probé con otros pins, pero cuando añadí el servidor web, funcionaban mal. Este funciona PIN perfectamente.

Como primer sensor de temperatura he utilizado el DHT 22  (AM2302) , además proporciona porcentaje de humedad. Para esto utilizo la librería  #include "DHT.h"  de   https://learn.adafruit.com/dht   .
Este sensor lo he empleado bastante por su bajo precio. ar433.html   raspb.html.

Como segundo sensor de temperatura he utilizado el 18B20 , muy barato y fácil de usar, junto con la posibilidad de poner varios en la misma línea de comunicaciones. Para su funcionamiento he utilizado una función creada por mi hace varios años int getTemp(void) . Este sensor lo he utilizado en varios montajes:  colorl.html , arwifi.html .

Como también quiero tener un reloj con la hora, he aprovechado el ejemplo que viene con el ESP32, SimpleTime.
En este ejemplo se toma la fecha y hora del servidor de internet pool.ntp.org , para luego ajustarnos a nuestra zona horaria. En el caso de la zona horaria de España  es +1h , o 3600 segundos.
En este caso también he añadido algo mio, los días de la semana.
En el ejemplo SimpleTime utilizaba en su configuración la IP dinámica que proporciona el router. Como a mi no me gustaba que cambiase la IP cada vez que se conectase, la he cambiado a IP estática, en mi caso 192.168.1.150
Si se quiere seguir utilizando la IP dinámica, comentar la línea:  #define IP_STATIC

Una vez montados todos los sensores, y ver que sus datos se representan bien en el OLED, nos toca crear el servidor WEB.
En un montaje anterior con el ESP8266  espb.html , había creado un servidor para encender y apagar LED.
En este caso lo he adaptado para visualizar los datos de sensores en un navegador.

Este proyecto me ha servido para ponerme en contacto con el ESP32, y ver todas sus posibilidades.
Espero que les haya gustado.


PROGRAMAS Y LIBRERÍAS

Saludos.
Juan Galaz

Bibliografía:
https://randomnerdtutorials.com/esp32-dht11-dht22-temperature-humidity-sensor-arduino-ide/
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/


 

lunes, 19 de abril de 2021

ROBOT INTELIGENTE Y CONTROLADO POR INFRARROJOS


PROYECTO CON PIC 16F876A PARA CONVERTIR UN PROTOTIPO K-550 STEREN ® EN UN
ROBOT INTELIGENTE Y CONTROLADO POR INFRARROJOS.

Ing. Alfredo Segura

Hace tiempo, cuando incursioné en el mundillo de los microcontroladores, me vino la idea de hacer un robot con cierto grado de “inteligencia”. Así que me fijé en el prototipo de la marca Steren ® K-550.
 

Puse manos a la obra y lo primero que quité fueron las “patas” sustituyéndolas con ruedas. También eliminé la tarjeta original que tiene circuitos integrados de lógica combinacional TTL, que lo hace muy predecible en sus movimientos de fábrica. Yo lo necesitaba más dinámico, por ejemplo que tuviera sensores de “choque”, que lo hicieran retroceder y luego avanzar en la dirección opuesta al obstáculo. Que diera reversa en caso de estar atrapado en un callejón sin salida. Que tuviera un beep para avisar de un cambio de estado y finalmente que pudiera ser controlado con un dispositivo remoto por rayo infrarrojo, eligiendo algún Control Remoto de bajo costo y muy común en el mercado.

El resultado es el siguiente:

El PIC 16F876A se encarga de todas las actividades del robot. Sensa los Switches de “Choque” que están al frente del vehículo. No puse sensores en la parte trasera, pero algún entusiasta que retome este proyecto, podrá hacer las modificaciones que guste. Produce el Beep para el zumbador. Procesa la señal IR (infrarroja) del receptor VF838 y controla los 2 motores brush que vienen de origen junto con el sistema de engranajes para reducir la velocidad. Para producir un giro a la derecha o a la izquierda, los motores se pueden excitar, ya sea dejando uno sin funcionar y el otro activado, o bien ambos activados, girando en sentidos opuestos entre ellos, con lo que se obtienen giros más efectivos.

He usado 2 pilas de 3.6 VCD de iones de litio, extraídas de una vieja batería de laptop. Estas pilas tienen una gran capacidad de amperaje, y pueden darle vida al aparato por muchas horas. El total del voltaje es de 7.2 VCD, con los cuales se alimenta el Driver L293D (Puente H doble) que excita a los 2 motores. Para el PIC, he usado un regulador positivo LM78L05, pues no se demanda mucha corriente en el procesamiento.

La siguiente foto muestra la disposición de componentes:

Las ruedas en los ejes se disponen para que sólo una de las delanteras y sólo una de las traseras esté fija a su respectivo eje, mientras que las otras giran libremente. Esto facilita el giro del vehículo.

En el paquete de descarga, se encuentran el diagrama de conexiones del PIC con sus sensores, actuadores y demás componentes. Se proporciona el código en Cpp y *.Hex del PIC 18F876A, comentado debidamente para que algún entusiasta lo modifique a su gusto.

Por supuesto hay que hacerse del datasheet del PIC 16F876A para una mejor comprensión durante los experimentos y desarrollo de este proyecto.

Toda la placa es perforada y cuenta con su interruptor general de apagado/encendido (SW ON/OFF). También se han dejado 5 pines cerca del PIC16F876A para reprogramarlo cuantas veces sean necesario, y evitar desmontarlo de la placa. Por supuesto quedaría muy bien si se le fabrica su placa PCB.

El Control Remoto que yo he usado es in Mitzu-MRC-ZN4 que se puede encontrar en tiendas departamentales o tiendas electrónicas y es de muy bajo costo. Además es del tipo Universal, por lo que se le puede programar el código que más se adapte al entusiasta programador.

En un proyecto anterior que aparece en este mismo blog, se hace un estudio completo sobre la aplicación IR (infrarroja) con el sensor VF838 y un PIC, de tal manera que se puede analizar por analogía aquel proyecto para el desarrollo de éste.

En la parte inferior del vehículo, casi no hay cambios, excepto por la colocación de los Micro Switches con unos pequeños resortes para que luego de un obstáculo, los “para-choques” vuelvan a su posición original, luego de liberarse de un obstáculo.



Diagrama del Proyecto:

El Control Remoto Mitzu MRC-ZN4 se programa dejando presionada la tecla TV por más de 3 segundos hasta que el LED rojo quede encendido fijo. Entonces se introduce el código 923 (en mi caso). Al introducir el tercer dígito, se apaga el LED, quedando grabado ese código.

Se usan las teclas CH+ para avanzar el vehículo, CH- para retroceder, Vol+ para girar a la derecha, Vol- para girar a la izquierda, MUTE para detenerse. La tecla 1 para emitir una señal SOS telegráfica. Tecla 2 emite una “CQ” en telegrafía. Tecla 3, emite beeps cuya duración va disminuyendo. Tecla 4 girar constantemente a la derecha. Tecla 5 girar constantemente a la izquierda.

Todas estas funciones están almacenadas en el PIC16F876A y queda para el entusiasta hacer los cambios que crea adecuados. En el mismo código en C++ que está comentado, están explicadas todas las funciones.

La programación para el PIC la realicé en PCW (Pic Compiler for Windows) y el programador utilizado es el USP-3.0. Se puede usar cualquiera que se tenga a mano.

Espero que sea de su completo interés, ya que puede usarse para varias aplicaciones de control para otro tipo de aparatos electrónicos.


Mando utilizado.


PROGRAMAS


México, Abril de 2021


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