Mi Raspberry Pi 3

Posted by Juan Marcano | Posted in Electrónica, Hardware, Software | Posted on 05-03-2019

0

Ya hace algún tiempo vengo «cacharreando» mi raspi 3 como hobbie, usándolo como servidor y añadiendo varios sensores, he logrado en 2018 algunos avances desde que encontraba en la caja de mantequilla, se encuentra funcionando bastante estable.

Más imágenes

Caja personalizada

Tiene ahora una nueva caja plástica a la cual he añadido un trípode que permite direccionar la camara. Hasta ahora mi raspi tiene los siguientes sensores:

  • Cámara 5 mp.
  • Sensor de temperatura y humedad dht22.
  • Leds 5 mm: 1 x amarillo (status del programa de detección de movimiento con el sensor PIR),1 x rojo (pensado para indicar fallos, conexión al wi-fi por ejemplo), 1x RGB (uso general).
  • Matriz de led 8×8 basado en MAX7219 para mostrar mensajes varios.
  • 2 x pushbutton: los coloque para iniciar o detener servicios, hacer reboot,shutdown o general realizar cualquier acción que desee programar sin necesidad de acceder desde el teléfono o un computador.
  • Sensor PIR HC-SR501, que detecta movimiento.
  • Cámara 5Mp.
  • Buzzer activo.

AnyDesk y VNC

En lo que respecta a software decidí colocar entorno de escritorio para facilitar mover archivos, programar y otras operaciones además de ser un medio adicional de conexión alternativo al ssh. Puedo acceder al escritorio por dos medios, usando Anydesk y VNC . El vnc resulta ser bueno para conexiones locales pero excesivamente lento para conexiones fuera de ella. 

Open VPN

El ISP del que dispongo en este momento tiene mi ip publica bajo una NAT, lo cierto es que me era imposible acceder por fuera de la red local al raspi. Lo solucione finalmente arrendando un servidor VPS, en el cual tengo algunos servicios de los que hablaré después. Pero entre ello instalé un servidor Open VPN y cliente en el raspi creando una VPN, para acceder desde internet a cualquier puerto del raspi se realiza una redirección desde el servidor VPS hacia el raspi, una gran ventaja del servidor VPS es disponer de una IP fija además de configurar e instalar lo que se nos antoje.

Sensor de temperatura y humedad DHT-22

Modifiqué un programa en C que lee el sensor PIR y lo combiné con el programa del PIR en lo que respecta a la conexión a la base de datos (mysql) y creación del archivo JSON. Por ahora lo se ejecuta con CRON cada 15 minutos. Y genera un gráfico usando google charts:

http://140.82.6.248:81/pi_server/temp_hum_DHT22

Módulo de cámara 5 mp y motion

Finalmente compré la raspi-cámara más económica que encontré, sin embargo me sorprendió la calidad de vídeos y fotografías que brinda.

Instalé el software motion, bastante poderoso que permite realizar capturas en foto y video cuando se detecta movimiento. 

Permite realizar capturas snapshots cada cierto tiempo e incluso genera videos timelapse, es bastante configurable en el archivo motion.conf.

También hace streaming de video por lo que podemos visualizar desde la red local o internet.

https://motion-project.github.io/

Sensor PIR HC-SR501.

Ya había realizado un post acerca del sensor PIR, fué el primer sensor instalado, un programa en C almacena las detecciones en una base de datos (mysql)y se grafican con la ayuda de google charts:http://140.82.6.248:81/pi_server/movement_PIR/ 

Matriz de led 8×8 MAX7219

Relativamente fácil de usar con python y la librería https://pypi.org/project/max7219/ , muy util para mostrar texto en desplazamiento y me sorprendio que es legible si se selecciona adecuadamente la velocidad de desplazamiento y la fuente. También despliega símbolos CP437. La pantalla la he programado en conjunto a los push buttons.

Eso es todo por ahora, estaré mejorando este artículo a medida que agregue nuevas mejoras.

Dimmer para motor DC.

Posted by Juan Marcano | Posted in Electrónica, Hardware | Posted on 27-03-2017

0

This simple circuit was taken from a chinesse oven with conveyor belt, the conveyor speed can be regulated with a potentiometer in the front panel, the internal circuit board that control the DC motor it’s just a dimmer based on NTE5620 triac, .   The input voltage of the circuit is 220V AC, the circuit chop the ac wave and its rectified by a full wave bridge.

Oven with conveyor belt.

Schematic
Vista PCB(lado componentes).
3D view

 

Download (it comes with proteus 8.1 project file, ready to test, simulate and modify).

Triac options: NTE5620 BCR8PM  MAC15

DIAC: DB3

Sistema de programación de Trayectorias para el Manipulador MA2000

Posted by Juan Marcano | Posted in Electrónica, Hardware, Software | Posted on 25-06-2015

1

From my grade project (2013):

TRAJECTORY PROGRAMING SYSTEM FOR THE MA2000 ROBOT ARM:

The MA2000 its a six degree of freedom robot arm, 3 joints are moved by DC motors. L928 IC drive 3 motors, the 3 motors left were replaced with hobby servos. A control system was implemented using microcontroller DSPIC30F3011, the joints position were read using potentiometers and the microcontroller DAC. A PI controller was implemented using the dsPIC DSP libraries, the compiler was the C30 (academic version) . A PC software was developed using the QT libraries and the QT creator IDE. The software communicates with the controller and allows the dynamic adjustment of the PID controller and its capable of show graphically the dynamic response of each joint, this was programmed using the QWT library, the software allows the programming of «point to point» trajectories using a simple language and allows to record trajectories moving the robot arm by hand.  These trajectories are recorded in plain text and can be generated with tools like MATLAB and the Peter Corke robotics toolbox.

Wiki page (spanish):

Http://blog-j.marcano.net.ve/robotwiki


Juan Marcano

juan@marcano.net.ve

El MA2000 Es un brazo de 6 grados de libertad accionado por motores DC. Se  emplearon drivers L298 para manejar tres de los motores, los tres motores restantes se  reemplazaron por motores de modelismo. Se diseñó un sistema de control mediante el microcontrolador dsPIC30F3011 en el cual la la posición de cada articulación es medida mediante potenciómetros y se implementó  un controlador de posición PID independiente para tres articulaciones que utiliza el motor DSP del dsPIC mediante las librerías incluidas con el compilador C30 en su versión académica. Se desarrolló un software en el PC haciendo uso de las librerías Qt. El software se comunica con el microcontrolador y permite el ajuste dinámico del controlador PID y la visualización en tiempo real de la respuesta dinámica de cada articulación, esta característica se programó utilizando la librería QWT, el software también permitió la programación de trayectorias simples punto a punto mediante guiado o aprendizaje. El software es capaz de guardar las trayectorias en archivos de texto plano de tal que forma las trayectorias pueden ser generadas con otras herramientas tales como MATLAB y la Toolbox de robótica de Peter Corke.

Utilizando la libreria de Microchip para dsPICs: controlador PID

Posted by Juan Marcano | Posted in Electrónica, Software | Posted on 05-04-2011

0

Los dsPIC son DSC, ello significa que combinan las características de un MCU junto a las bondades de un DSP,  se caracterizan fundamentalmente por la prescencia de A/D rápidos (incluso con DMA en la familia 33f), presencia  de módulos especializados de PWM, y enfocados principalmente a la necesidad de operaciones matemáticas cíclicas a alta velocidad sobre todo en aplicaciones comúnmente denominadas  de ¨tiempo real¨, en fin: los DSC son muy versátiles, aunque la limitante a su uso y tal ves por ello su poca popularidad es:

–          Como todo micro nuevo requiere cierto tiempo de aprendizaje, y tal vez su uso no se justifique en la mayoría de aplicaciones, siendo tal vez más conveniente el uso de la familia de PICs 24 (muy versátil y funcional) o incluso uC más económicos si es que ya se ha acostumbrado, sin embargo la familia de PIC24 utiliza el mismo compilador C30 de MICROCHIP y la mayoría de módulos del los dsPICs guardan muchas similitudes con los uC de la familia de PICs 24 por lo que el salto de PICs 24 a dsPICs no resulta para nada complicado.

–          El costo es obviamente mayor para el dsPIC.aunque a veces resulta contradictorio que uC de la familia 18 con un rendimiento mucho menor, módulos menos versátiles y a su vez complicados de configurar, con mayores limitantes y de solo 8 bits tengan costos iguales e incluso mayores que los de familias de microcontroladores más versátiles e incluso más sencillos de programar como la familia 24, al menos en el super-limitado mercado nacional.

La familia de PIC24 comparte junto a los dsPIC el mismo compilador C30 ofrecido por microchip que en su versión académica puede dar resultados más que satisfactorios, con la típica posibilidad de incluir código en assembler si se considerase necesario. En fín cuestión de opiniones, de probar y comparar.

Dejando ya de lado esta pequeña introducción vayamos al grano y al verdadero motivo de este artículo:

Como utilizar un dsPIC para implementar un controlador PID?

La respuesta es simple: microchip nos brinda una librería de algoritmos que permite hacerlo haciendo uso del motor DSP y brinda el código fuente por lo que la podemos modificar si se nos antoja.

Es solo una de las muchas librerías que se incluyen junto al compilador C30, que como dijimos tiene un único propósito: aumentar la velocidad de las operaciones matemáticas. Entonces si deseamos implementar un PID con un dsPIC no es lo mas eficiente el uso del cálculo del controlador utilizando las instrucciones MCU (aunque no por ello inválido),pero un programa más eficiente debe hacer uso del motor DSP que lo disminuirá el tiempo ocioso de nuestro microcontrolador dejándolo libre para ejecutar otras tareas, despues de todo debemos sacarle el jugo al DSC y ello no resulta tan difícil:

La verdad es que aquí no hay ningún misterio, aparece documentación acerca del uso de la librería  en varios trabajos publicados en la red, en varios foros y en los documentos de microchip que suelen tener muchas versiones y la intención de este post es condensar un poco esa información.

Es necesario acotar que todos los archivos necesarios están en la carpeta del compilador C30 que ya deberia haber instalado, explore en la carpeta de instalación: los siguientes archivos y añádelos a tu proyecto en el MPLAB, o utilice el ¨Linker script¨ que viene con el ejemplo CE019_PID que a fin de cuentas es el que explica claramente con un ejemplo como se emplea la librería y que archivo debe añadir y en general todas las instrucciones a seguir.

El documento 16Bit_Language_Tool_Libraries Chapter 2–> control functions , brinda una introducción muy didáctica y condensada acerca de los PID, y explica con más detalle las 4 funciones en lenguaje C para implementar el PID, indicando inclusive el numero de ciclos que toma la ejecución de cada función.

Con estos 2 documentos debería ya poder empezar!

Como comentario adicional:

No olvide incluir la cabecera <dsp.h>  (echele un ojo al final del código) aunque personalmente prefiero en cualquier proyecto incluir todos los archivos de código fuente y cabeceras dentro de la carpeta del proyecto en el MPLAB.

Para mayor información aún nada mejor que revisar y estudiar un poco el código fuente de la funciones para PID que está escrito en assembler y está contenido en el archivo PID.s, nótese el uso de las instrucción MAC (multiplica y acumula) propia de los DSP. Las instrucciones en assembler para el dsPIC están aquí.

También es necesario el archivo dspcommon.INC

Para el uso de las instrucciones DSP es necesario estar claro con el uso de números fraccionales de 16 bits, también conocido como formato Q15, no es más que numeración de ¨punto fijo¨ (en analogía a punto flotante) pues la librería y el motor DSP emplea este formato. Para documentarse mejor acerca del formato Q15 revise en este este documento, es otra versión del documento ¨16 bit lenguaje tools¨, también tocan bien el tema en este libro.

Entrenadora para dsPIC30F3011

Posted by Juan Marcano | Posted in Electrónica, Entretenimiento | Posted on 20-02-2011

0

Luego de un poco de experiencia con estos microcontroladores con el proyecto del brazo robot y conexiones al protoboard muy propensas a fallas de conexión, la siguiente placa (nada del otro mundo) ha sido concebida fundamentalmente para facilitar programación, depuración, realizar pruebas e incluso como un módulo ya listo para emplear en tus proyectos.


Para ser utilizada junto a los microcontroladores dsPIC30F3011 y dsPIC30F4011 (tal vez sea compatible con otros PICs de 40 pines), la placa posee las siguientes características:

  • Conector ISCP: para conexión directa de un programador/depurador pickit2 o similar, basta conectar tu pickit para empezar a programar, depurar y realizar pruebas.
  • Todos los pines del microcontrolador disponibles a excepción de 2 (necesarios para la conexión de osciladores externos), aunque dependiendo de sus necesidades se pueden obviar terminales y reducir costos.
  • Los terminales del microcontrolador se han separado en grupos: Con enfoque hacia el uso de PWM y lectura de datos analógicos, 3 de las entrada analógicas (AN6, AN7 y AN8) del microcontrolador han sido provistas de terminales ¨tipo tornillo¨ para facilitar la conexión y desconexión, junto con su respectiva alimentación para tomar datos analógicos fácilmente (desde un potenciómetro por ejemplo), de igual manera todas las salidas de PWM y las entradas de alimentación, están disponibles mediante este tipo de terminales.
  • Pulsador de RESET y LED indicador de encendido.
  • Juan Marcano (Admin)

    email: juan@marcano.net.ve

Esquemático: L298 H bridge

Posted by Juan Marcano | Posted in Electrónica | Posted on 15-10-2010

1

Layout and schematic for Proteus, parallel configuration, fell free to improve, modify and simulate.

Layout y esquemático para puente H L298

Aquí dejo  este layout y esquemático para proteus del puente-H con L298 que diseñé hace tiempo en proteus, está configurado en paralelo. La configuración  es exactamente la que se indica en la hoja de datos.

Se diferencia de los demás que he visto en la red porque esta utiliza terminales con tornillo  los cuales se encuentran agrupados un costado de la placa debido a que me pareció los más conveniente para no obtener un enredo de cables al momento de conectar, ya que este PCB forma parte de una versión ampliada triple (3 puentes H). Se advierte que este PCB no es muy compacto.

Por supuesto este PCB de una sola cara está muy lejos de ser perfecto, tiene unos cuantos errores de diseño: no tiene plano de tierra, no es nada compacto, las pistas son extremadamente anchas y lleva unos cuantos puentes o ¨jumpers¨, pero realiza el trabajo.  Es libre de ser modificado y el esquemático sirve para hacer simulaciones realizando las modificaciones que crea pertinente o incluso crear un nuevo PCB:

Descargar/Download