Archivo de la categoría: Arduino

ArduBrazo V

Brazo-Muñeca

Con la construcción de esta pieza llegamos a la muñeca, solo nos faltaría una pequeña pieza que realizaría el juego de la muñeca y la pinza.

Esta pieza al igual que las anteriores se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Brazo-Muñeca 1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista FreeCad Delantera

Vista FreeCad Posterior

Conjunto Vistas FreeCad

Vista 3D FreeCad

Vista Pieza 01

Vista Pieza 02

Vista Pieza 03

Perspectiva 01
Perspectiva 02
Perspectiva 03
Perspectiva 04

 

 

 

ArduBrazo IV

Programando el Arduino

Bueno ya es hora de poner los servos y ver que tal funciona la parte del brazo construido hasta ahora.

He elegido un Arduino Mega, no por que necesitaba muchos recursos, sino por que era el que tenía libre, el resto los tenía ocupados con otros proyectos. Así que si tenéis un arduino Uno o Leonardo, también os vale.

He preferido realizar la programación para los cinco servos y así ya la tengo para los restos de grados de libertad que aún no están disponibles.

El programa de Arduino se basa en los siguiente:

  • Capturo por el puerto serie una cadena de caracteres
  • Separo en cinco tramos la cadena
  • Convierto la cadena en valor numérico
  • Los envío a servo para su posicionamiento. El posicionamiento lo realiza de manera progresiva para dar más suavidad al mismo.

Ahora utilizo el monitor serie del IDE del programa del Arduino para el envío de la cadena, pero en el futuro, lo realizaré con un programa realizado en Java.

Esquema Práctico Simplificado:

 

Extracto del Programa Arduino:

Recibir Cadena

Separar y Convertir en Enteros

Posicionar Servos

Foto:

Código Fuente  Arduino Completo

ArduBrazo_01.ino

Vídeo resumen:

ArduBrazo III

Tercer Grado de Libertad

La realización de esta pieza al igual que las anteriores se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
 

Tercer Grado

 

1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista FreeCad Delantera

Vista FreeCad Posterior

Vista Conjunto FreeCad

Vista 3D FreeCad

ArduBrazo_3ª_01

Composición Delantera

ArduBrazo_3ª_02

Composición Trasera

ArduBrazo II

Segundo Grado de Libertad

La realización de esta pieza al igual que la anterior se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
 

 

Segundo Grado

 

 

1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista 01

Vista 02

Vista 03

Vista 04

Vista de Conjunto

Vista 3D

Vistas en FreeCad

 

Poniéndolo Expresión al ArduRobot

Bueno, ya era hora de poner una cabeza al ArduRobot. He aprovechado la anterior entrada para realizar una iniciación al control de un LCD con Arduino.

Como bien sabéis la placa que controla el Robot es un Arduino UNO y éste tiene sus salidas casi saturadas, por lo que para el control del LCD he tenido que utilizar otro controlador. Es el Arduino Nano.

Para que el ordenador me reconociese el Arduino Nano, he tenido que instalar unos driver exprofeso para esta placa (puede ser por que el procesador es Chino :)). Los Arduino Nano chinos suelen llevar el chip ch340 en vez el FTDI. En el Fórum de Arduino puedes encontrar más información al respecto

Le he dado muchas vueltas a que expresiones quería que tuviese el robot y al final he decidido que con cinco expresiones para empezar podría ser suficiente:

  • Normal
  • Triste
  • Feliz
  • Enfadado
  • Sorpresa

En el futuro dotaré al robot de más expresiones.

Para dotar de expresión al Robot, he utilizado la posibilidad que me ofrece la librería “Adafruit_GFX.h” de representar imágenes Bitmap. Más abajo podréis ver un ejemplo de un bitmap de una cara de sorpresa.

Con la impresora 3D he realizado una carcasa que utilizo para meter en su interior al Arduino Nano y la pantalla LCD.

Representación 3D de la Cabeza

Circuito Práctico.

Programa Arduino

Ejemplo del Código del PROGMEM CaraSorpresa

Fotos

Visión 3D del ArduRobot

Códigos Fuente

Cabeza_Robot.ino

Vídeo resumen:

Pantalla LCD Nokia 5110

En esta entrada trataré de explicar como utilizar el LCD del Nokia 5110. Es una pantalla pequeñas, de 1.5″, pero tienen buena legibilidad. Su resolución es de 84 x 48 pixel, internamente emplea un controlador PCD8544 desarrollado por Philips, un controlador de bajo consumo diseñado para manejar pantallas monocromas de 48 filas y 84 columnas. Para mayor legibilidad estos displays suelen incorporar una luz trasera (back light).

Sus características se pueden encontrar aquí.

La configuración de pines que voy a utilizar es:

Número de Pin

Nombre de Pin Arduino Pin Función de Pin Notas

1

RST

3

Reset

10kΩ

2

CE

4

Chip Selection (Selección de chip)

10kΩ

3 DC 5

Data/Commands choice

10kΩ

4

DIN

6

Serial data in

10kΩ

5

CLK 7

Serial clock

10kΩ

6

VCC

3,3 Vcc

Positive power supply (Alimentación positiva) 2.7V a 3.3V

7

LIGHT

GND

LED backlight supply Conectar a GND para máximo brillo

8

GND

GND

Ground (Tierra)

Existen varias librerías que funcionan con este LCD. Aquí explicaremos la librería más común para este modelo, “ Adafruit PCD8544 Nokia 5110 LCD library “. Esta librería posee una gran variedad de gráficos, entre ellos círculos, líneas, cuadros, triángulos, además de varios tipos de fuentes y la posibilidad de imprimir imágenes como logos o figuras.

Esta librería requiere de la instalación adicional de la librería gráfica “ GFX “ para su utilización.

En la siguiente dirección podréis ver un resumen de algunos de los procedimientos que tiene la librería “Adafruit_GFX.h”.

Circuito Práctico.

Programa Arduino

Fotos

Plano general del Circuito

Detalle de la Pantalla LCD

Códigos Fuente

LCD_Nokia_5110.ino

Vídeo resumen:

Escudo de Ethernet W5100 – IV – Lector de Tarjetas SD

Vamos a conectar un arduino duemilanove con un escudo Ethernet W5100 y utilizaremos la posibilidad que nos ofrece el citado escudo de “Lector de Tarjetas SD”. Aunque quiero advertiros que tenemos ciertas limitaciones, debido a la librería actualmente existente.

La primera de ellas es que podemos leer y escribir en la tarjeta, pero no formatearla, esto se debe realizar desde un ordenador.

La segunda es que aunque el  ordenador puede manejar varios formatos de sistema de archivos, la librería, por ahora solo soporta FAT16 y FAT32. En principio si se usa FAT32 se podría usar una tarjeta de hasta 32Gb. Otra de las limitación, son los nombres de los archivos, solo pueden utilizar los antiguos formatos de 8 caracteres para el nombre y tres para la extensión (sin acentos, ñ´s, espacios en blanco, etc).

El Shield Ethernet y la librería, controlan el acceso a Ethernet y a la SD Card por SPI, por lo que no podemos usar los pines  que corresponden a la gestión el bus SPI.

Para comprobar que la tarjeta está bien formateada, que todo esta correcto y que podemos usarla, existe un ejemplo suministrado por el programa (CardInfo ) que nos puede servir para éste fin. Asegurémonos que la SD esta formateada, grabamos en ella algunos ficheros (con nombre 8.3), la introducimos en el lector del Shield y encendemos el Arduino. El resultado debe ser algo similar a esto:

Realizaré uno programa con tres módulos diferenciados:

  1. Introducir/Grabar un dato en un archivo de la tarjeta SD
  2. Leer los datos grabados en un archivo en la tarjeta SD
  3. Borrar el archivo

El archivo donde vamos a realizar la grabación es “TEST.TXT”

Modulo de Grabar

Asignamos un valor analógico, abrimos el archivo, grabamos el valor en dicho archivo y cerramos el archivo.

Módulo de Leer

Abrimos el archivo, leemos el archivo y cerramos el archivo.

Módulo de Borrar archivo

Borramos el archivo

Circuito Práctico.

Programa Arduino

Fotos

Códigos Fuente

Manejar_SD.ino

Vídeo resumen:

 

Escudo de Ethernet W5100 – III

En este caso el control lo realizaré a través de una aplicación creada con “App Inventor”.

Como solo es un ejemplo he decidido realizar la implementación de tres salida digitales y dos entradas analógicas, simulando la temperatura de dos estancias de una casa.

La programación es muy fácil, para las salidas digítales, se trata de realizar un “Get” con uno de estos códigos:

  • OnXXX para encender la estancia
  • OffXXX para apagar la estancia

Módulo de Control de un Led con AppInventos.

Para las entradas analógicas simuladas, se implementa un “Web” dentro de la aplicación y se referencia a la dirección del servidor web (192.168.1.177).

Esquema de los LED

Circuito teórico

Circuito Práctico.

Programa Arduino

AppInventos

Aspecto Simulado

Captura de Pantalla desde un móvil

Archivo aia de AppInventor.

Casa_Domotica_I.aia

App de la Aplicación.

Casa_Domotica_I.apk

Códigos Fuente  Arduino

Ethetnet_AppInventor.ino

Vídeo resumen:

Escudo de Ethernet W5100 – I

Vamos a conectar un arduino duemilanove con un escudo Ethernet W5100 y realizaremos un servidor Web.

Cuando conectamos un Arduino Ethernet Shield en un Router, éste le asigna una dirección IP dentro de tu propia Red que se encuentre libre, es decir, una identificación que le permite diferenciar a tu Arduino del resto de ordenadores y demás elementos que tengas conectados a la red local de tu casa. Si no conocemos esa IP, el sistema dejará de funcionar. Para solucionar esto, lo que realizamos es asignarle mediante programación un IP conocida que se encuentre libre en nuestra Red Local con los siguientes pasos:

  1. Pulsa el botón de inicio.
  2. En la barra de búsquedas, escribe “cmd” y ejecuta el programa encontrado.
  3. Te habrá salido otra ventana de fondo negro.
  4. Escribe en ella “ipconfig”.
  5. Vamos a mirar si la dirección IP 192.168.1.177 se encuentra libre
  6. Escribe ping 192.168.1.177

ip_sin_ocupada

IP Libre

ip_ocupada

IP Ocupada

Todas los dispositivos que conectas a tu red poseen un número identificativo “MAC”, de cara a la red, es como su DNI. Al igual que la IP, no debe haber otro dispositivo con el mismo MAC. El MAC de tu Arduino puede ser fijado por ti, por defecto puede ser: byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }, salvo que tengas especial interés por utilizar otra.

Vamos a crear un página Web con seis enlaces, tres enlaces encenderán un LED, o otros tres lo apagarán de la siguiente forma:

  1. Cargamos las librerías y realizamos la asignaciones de la dirección IP, MAC y puerto del servidor.codigo_libreria_ip_mac
  2. Establecemos los pines de Salida para los LED
  3. Inicializamos la conexión Ethernet
  4. Creamos una conexión Cliente
  5. Creamos la página Web
  6. Y por último evaluamos si ha sido pulsado algún enlace

Esquema de los LED

semaforo_ethernet

Circuito teórico

semaforo_ethernert_bb

 

Circuito Práctico.

vista_general_02

Programa Arduino

codigo_ethernet

Página Web

pagina_web_led

Códigos Fuente  Arduino

ConexionEthernet.ino

Vídeo resumen:

 

Polímetro 2

Basándome en la entrada anterior, he construido una simulación de lo que podría ser un polímetro.

Las características son la siguientes:

Intensidad entro 0 y 5 A

Tensión entre 0 y 5 V

Resistencia, lo he dejado para un posterior cálculo, aunque basándose en la ley de Ohm la implementación es muy sencilla.

Desarrollo en Arduino.

Está basado en la entrada anterior (https://ardubasic.wordpress.com/2016/10/01/midiendo-intensidad/) y lo que hace es sacar la media de las medidas que realiza el sensor. Anteriormente el sensor debe estar calibrado.

codigo_medida

Desarrollo en Visual Basic

Está basado en la entrada (https://ardubasic.wordpress.com/2013/11/04/comunicacion-con-visual-basic/) . Lo que he realizado es una mejora del diseño y la introducción de un sensor medidor de intensidad. He aumentado a tres las lecturas y el registro de los datos utilizando lo explicado en la entrada ( https://ardubasic.wordpress.com/2015/11/01/exportando-a-excel-los-valores/ ).

Obtener datos

obtener_datos_arduino

Se realiza una escritura del carácter ASCII 10 para que el Arduino mande los datos. Leyéndolos la aplicación a continuación.

Representar en la Pantalla de Medida

representar_en_pantalla

Dependiendo de la escala y el parámetro que hemos seleccionado, realiza la representación en pantalla.

Representación Gráfica.

representar_graficamente

Se realizan los cálculos para que la representación se realice entre unos puntos definidos.

Configuración del SerialPort.

serialport

En el cuadro verde, señalo el puerto de comunicación de la aplicación con Arduino.

En el cuadro azul, señalo el parámetro “DtrEnable” que debe ser True para el Arduino Leonardo, si no se realiza así, hay problemas en la comunicación, envía datos pero no recibe. Si es otra placa distinta esta última consideración, no se tiene que tener en cuenta.

Código Arduino

codigo_arduino

Circuito Teórico

polimetro_2_bb

Fotos

tension

Midiendo tensión y registrando los datos

intensidad

Midiendo Intensidad y registrando los datos

Código Fuente  Arduino Completo

Polímetro_2.ino

Proyecto VB 2015

Polímetro_Arduino.zip

Vídeo resumen: