jueves, 17 de diciembre de 2015

SERVER WEB CON ESP8266 Y ARDUINO NANO Servidor de temperatura ds18B20

Página principal

SERVER WEB CON ESP8266 Y ARDUINO NANO
Servidor de temperatura
ds18B20


Este montaje es la continuación de mi anterior montaje SERVER WEB CON ESP8266 Y ARDUINO MEGA .
Para entender este montaje conviene leer el anterior
Cuando realice el montaje con arduino Mega, siempre me quedó el motivo por el cual no funcionaba en un arduino normal.
Después de investigar, descubrí el motivo, y era la poca memoria RAM de que dispone el arduino normal.
Mirando por internet encontré la página  http://booleanbite.com/web/optimizacion-de-memoria-de-nuestro-codigo-de-arduino/ donde explicar la forma de optimizar la memoria RAM del arduino.
La primera es colocar delante de las cadenas que se impriman.    Serial.print(F("Hola Mundo"));
La segunda es utilizar prog_char en vez de char en cadenas de caracteres que no se vayan a modificar.
Lo que se consigue es que estas cadenas se almacenen en la memoria de programa, liberando RAM.
Otra de las cosas que he cambiado es utilizar cadenas de caracteres en vez de String , de esta forma se reduce bastante el tamaño del programa.
He utilizado alguna que otra trampa para adaptar señales TTL de 3.3V a 5V utilizando solo una resistencia de 330 ohmios.
He asumido que existe la resistencia de 1K entre las señales RX y TX del adaptador usb/serie a el arduino, y de esta forma poder conectar el ESP8266 al arduino, y de está forma poder utilizar la comunicación hardware del arduino.
Importante, mientras este conectado el ESP8266 al arduino, no se puede programar el arduino, por lo cual debeis desconectar los pin TX y RX del ESP8266 al programar el arduino.
Para obtener 3.3V he utilizado dos diodos en serie que reducen la tensión de 5V a 3.6V .
Para saber que IP tiene nuestro servidor de temperatura, y luego dejarlo como IP estática en nuestro router, hacemos un chequeo de nuestra red.


En Linux y como root.
nmap -sP 192.168.0.1-254

Starting Nmap 6.00 ( http://nmap.org ) at 2015-12-17 06:55 UCT
Nmap scan report for 192.168.0.1
Host is up (0.00079s latency).
MAC Address: xx:67:xx:19:D9:1A (Unknown)
Nmap scan report for 192.168.0.150
Host is up.
Nmap scan report for 192.168.0.151
Host is up (0.077s latency).
MAC Address: xx:91:xx:34:46:C3 (Hangzhou Yulong Conmunication Co.)
Nmap scan report for 192.168.0.160
Host is up (0.099s latency).
MAC Address: 18:FE:34:9C:CB:C1 (Unknown)
Nmap done: 254 IP addresses (4 hosts up) scanned in 48.12 seconds




 
Esquema del circuito.


Prototipo del circuito.


Montaje eléctrico.



Montaje eléctrico.


Si queremos ver lo que ocurre, debemos de conectar una consola (convertidor_ USB->serie_TTL).
Ping 10 RX y 11 TX.
WIFI_CONECTAR
_ok_AT+CWMODE=1
_error_setamodem2
_ok_setamodem2
_ok_AT+CWMODE=3
_ok_AT+CIFSR
AT+CIFSR 
192.168.4.1
192.168.0.157

OK

_ok_AT+CIPMUX=1
_ok_AT+CIPSERVER
_ok_AT+CIPSTO=15
FIN_WIFI
ERRORES de conexion=0
_ok_conectado
22,3 22,1 

Consola.


Visión de los distintos sensores (hasta 4) en un navegador.
El primer sensor está a temperatura ambiente, el segundo en el congelador.


PROGRAMA

Saludos.
Juan Galaz
Bibliografía:

SERVER WEB CON ESP8266 Y ARDUINO MEGA
http://granabot.es/modulo-wifi-esp8266/
http://www.prometec.net/arduino-wifi/
http://83.56.32.125/esp8266.html
http://seta43.duckdns.org/electro.html
http://arduino-pda-control.blogspot.com.es/
http://booleanbite.com/web/optimizacion-de-memoria-de-nuestro-codigo-de-arduino/


domingo, 29 de noviembre de 2015

Orange PI PC - Primeros pasos en una instalación.



Mirando por internet encontré una alternativa a la famosa Raspberry Pi, es más barata y rápida que las primeras versiones de dicha placa.
Existen varios tipos de placas, dependiendo si tienen conectores vga, wifi de serie, conectores sata, micrófono, o numero de usb.
Como no quería gasta mucho dinero, elegí la más barata, Orage PI PC, 15€.
Orage PI PC , no tiene wifi,vga, sata,  y solo tiene 3 usb.
Pero tiene todo lo necesario para que funcione:

CPU    H3 Quad-core Cortex-A7 H.265/HEVC 4K
GPU    ·Mali400MP2 GPU @600MHz . ·Supports OpenGL ES 2.0
Memory (SDRAM)    1GB DDR3 (shared with GPU)
10/100M Ethernet RJ45
Video Outputs        3.5 mm Jack and HDMI , Supports simultaneous output of HDMI and CVBS
Three USB 2.0 HOST, one USB 2.0 OTG


Si queréis emplear wifi, no penséis que sirve cualquier adaptador usb wifi como pasa con la raspberry, solo funcionan los 8188eu y 8192c, y en android solo el 8188eu. Por lo que si queréis wifi comprar  Orage PI PC 2.
La alimentación se toma de un conector de 5V (2A) ,no es usb, es difícil que lo tengáis, por lo que recomiendo que lo compréis, yo casualmente lo tenía.
Preguntas frecuentes

Primeros pasos.
Mi intención es instalar Debian para hacer las pruebas.
Visitamos la página: http://www.orangepi.org/downloadresources/ , y vamos a la sección de nuestra placa Orange Pi PC. Aquí  bajamos la imagen de Debian 8 with XFCE Desktop para instalarla.
La imagen es OrangePI_Jessie_Xfce.img.xz , esta imagen está comprimida, y tenemos dos opciones para instalarla en una SD en linux.
La fácil es utilizar el programa gnome-disks desde root.
La segunda opción es descomprimir la imagen.gz que no creará un archivo con extensión .img.
Ahora instalamos la imagen.img a la SD con la orden:
    dd if=OrangePI_Jessie_Xdfce.img of=/dev/sdx bs=1M oflag=direct
donde /dev/sdx es el lugar donde se encuentra la SD. Para saber donde se encuentra la SD se teclea  fdisk -l y nos mostrará los diferentes discos y su localización.
Todo esto lo debemos hacer siendo root, tener paciencia, tarda tiempo en escribir la SD dependiendo de la clase que sea (4) (10).
En esta página del foro se puede encontrar algo en español:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=33
En ingles:
http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342

Una vez instalada la imagen en la SD nos creará dos particiones:
BOOT donde se instalan las imágenes uImage del kernel y los script.bin (configuraciones)
Linux donde se encuentra el propio sistema operativo.
Lo primero que debemos hace  para que funcione nuestra placa bien es seleccionar la configuración correspondiente para nuestra placa. Para la placa  Orage PI PC tenemos 4 opciones, yo he utilizado script.bin.OPI-2_1080p50 .
Esto se hace de la siguiente forma:
    cp script.bin.OPI-2_1080p50 script.bin
Yo personalmente utilizo el explorador de archivos, es bastante más fácil y rápido.

Todo preparado para el primer arranque, hdmi conectado a la Tv, SD con el sistema operativo instalado, teclado y raton conectado al USB ,y red conectada. Conectamos la alimentación y esperamos como salen los primeros caracteres de arranque de linux.
Nos encontramos ante la petición de usuario y contraseña. Existen dos usuarios ya creados.
orangepi    contraseña: orangepi
root        contraseña: orangepi

Entramos con el usuario orangepi y nos encontramos con un escritorio Xfce.


Lo primero es cambiar la configuración del teclado, entramos en Settings->Keyboard , cambiamos la localización del teclado.
Si queremos cambiar la configuración del teclado en los terminales gráficos, tecleamos como root, la orden:
dpkg-reconfigure locales

Ahora ya podemos cambiar la contraseña desde la consola con la orden: password  , donde nos pedirá la antigua contraseña y la nueva.
Si queremos crear un usuario nuevo o cambiar la contraseña graficamente vamos al menu Settings->Users and Groups


Desde consola y como root podemos crear un usuario nuevo (seta) con la orden: addusers seta

Veremos que cuando entramos en la consola como root o orangepi , nos salda la opción de poder utilizar toda la SD para el sistema. Cuando se instala la imagen en la SD se crea una partición de solo 2 o 3 Gb, si tenemos una SD de 8Gb desaprovecharíamos 5Gb, con la orden sudo fs_resize ,se redimensiona la partición para utilizar toda la SD.

Para que inicie automáticamente un usuario, debemos configurar el gestor de arranque  lightdm .
Entramos en consola como root  y editamos el fichero de configuración con la orden:
pluma /etc/lightdm/lightdm.conf
y editamos las líneas siguientes:
autologin-user=seta
autologin-user-timeout=20
Donde seta es el usuario que se inicia automáticamente, y 20 son los segundos que tarda en iniciarse automáticamente.

Otra cosa que me gusta hacer es instalar un servidor de escritorios remotos. Con el instalador de aplicaciones Synaptic instalamos x11vnc. Ahora  desde consola indicamos la contraseña del servidor de escritorio remoto, x11vnc  -storepasswd .
Para lanzar el escritorio remoto desde consola , x11vnc -forever -usepw -display :0 -ultrafilexfer


Como quiero que el servidor se lance automáticamente al iniciar sesión lo añado a los programas que arranca automáticamente al inicio.
En el menú Settings->Session and Startup el programa x11vnc y con todas la opciones como se ve en la imagen.

Samba
Me gusta compartir ficheros entre los distintos tipos de ordenadores que tengo, por lo que suelo instalar samba. La configuración que tengo en todos mis ordenadores es la misma, no es la mejor ni la más segura pero funciona bien. Grupo de trabajo:SETARED  y directorio compartido para todo /aa  , este directorio hay que crearlo como root y darle los permisos de lectura y escritura.
El fichero /etc/samba/smb.conf es el siguiente:

[global]
    workgroup = SETARED
    server string = %h server
    security = SHARE
    map to guest = Bad User
    obey pam restrictions = Yes
    pam password change = Yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
    unix password sync = Yes
    syslog = 0
    log file = /var/log/samba/log.%m
    max log size = 1000
    dns proxy = No
    usershare allow guests = Yes
    panic action = /usr/share/samba/panic-action %d
    idmap config * : range =
    idmap config * : backend = tdb
    hide dot files = yes
    unix extensions = yes

[homes]
    comment = Home Directories
    valid users = %S
    create mask = 0700
    directory mask = 0700

[aa]
    comment = aaHPservidor
    path = /aa
    read only = No
    guest ok = Yes
#    hide dot files = No

[printers]
    comment = El comentario que guste.
    path = /var/spool/samba
    guest ok = Yes
    printable = Yes
    print ok = Yes
    browseable = No


Resumen de pruebas en Debian 8
La impresión es bastante buena en general, la reproducción de sonido a través del hdmi es perfecta, la reproducción de películas se hace difícil al no poder redimensionar. El programa transmission de descarga de programas funciona perfectamente. En los programas que utilizan la librería SDL no he podido que funcione el sonido. Todo lo que no emplee aceleración 3D funciona bien. Aunque el chip soporte OpenGL ES 2.0 , no está implementado en linux.
Es una pena que esta placa pueda dar mucho, pero como no está implementada en Debian 8 se quede algo corta para multimedia. Espero que esto cambie a mejor

Android
La instalación  se debe hacer desde un programa bajo Windows, desde linux no es posible.
http://www.orangepi.org/Docs/SDcardinstallation.html#Install_Android_OS_image
Al arrancar nos encontramos un sistema android completo, con programas de reproducción multimedia que funcionan a las mil maravillas, varios emuladores (N64) que funcionan perfectamente, de lujo.

Yo personalmente creo que esta placa está creada para correr android y la han reconvertido para utilizarla con linux.
Espero que este pequeño artículo le sirva a alguien.

Saludos.
Juan Galaz

martes, 24 de noviembre de 2015

Marcador controlado por bluetooth. Display de 8 caracteres. MAX7219-Arduino

Página principal


Marcador controlado por bluetooth.
Display de 8 caracteres.
MAX7219
Arduino


xsetaseta@gmail.com

Continuando con los anteriores montajes  Marcador controlado por bluetooth y Marcador controlado por bluetooth - 4 caracteres , ahora hago lo mismo, pero con un display de 8 caracteres utilizando un módulo que emplea el MAX7219.

El MAX7219 incorpora todo lo necesario para manejar 8 displays, comunicándose con el arduino mediante el interface SPI.
Para el manejo del MAX7219 mediante el arduino existe una librería bastante buena llamada LedControl que se puede emplear fácilmente.
Como siempre, yo me complico un poco, y prefiero realizar mis propias rutinas de manejo de circuitos, de esta forma entiendo mejor el funcionamiento de los mismos.
He realizado una serie de rutinas para el manejo del MAX7219 que se incorporan en el propio programa arduino, no hace falta ninguna librería añadida. Debo de decir que partes de mis rutinas las he sacado de la librería LedControl, pero cambiándolas mucho.


Para la introducción de textos se emplea la consola del arduino o un terminal serie, o el convertidos serie-bluetooth el cual se puede manejar a distancia. el HC05 es un simple modulo que emplea la comunicación serie (Tx/Rx), en nuestro caso utilizaremos un puerto serie por software mediante los pins A0 y A1 del arduino. En el módulo original HC05 viene a una velocidad de 9600 y con la contraseña 1234.
Para poder cambiar el nombre y contraseña debemos entrar en modo de comandos AT.  Para usar los comandos AT el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). En mi caso que tengo botón, pulso el botón y entro en modo configuración.
Para comprobar que todo está bien, prueba a escribir AT+
Debes recibir un “OK” .
Cambiar el nombre del dispositivo: AT+NAME:nuevoNombre
Cambiar contraseña a 5555: AT+PSWD:5555 Ver la versión: AT+VERSION
Para salir del modo AT después de configurar todo, quito la alimentación y la vuelvo poner, ahora está con la nueva configuración.
Como existe diferente tipo de módulos, he mantenido las dos resistencias que adaptan los niveles TTL de 5V a los de 3.3V, aunque en muchos módulos no hacen falta.

Esquema del circuito





Circuito montado

Para el control mediante un teléfono android recomiendo ver mi anterior montaje Marcador controlado por bluetooth.

PROGRAMAS

Saludos.
JUAN GALAZ

Bibliografía:

http://www.cecilioruiz.com/bluetooth-arduino/
http://diymakers.es/arduino-bluetooth/
http://www.martyncurrey.com/arduino-bluetooth-control/
http://www.martyncurrey.com/hc-05-fc-114-and-hc-06-fc-114-part-3-master-mode-and-auto-connect/
http://seta43.duckdns.org/arduan1.html
http://diymakers.es/arduino-bluetooth/
http://english.cxem.net/arduino/arduino4.php
http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/step1/How-to-use-ArduDroid/
http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS
http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
http://www.basic4ppc.com/
http://www.extremadura-web.es/Blog/2012/10/29/comunicacion-bluetooth-serie-arduino-y-basic4android/
http://iesromerovargas.es/recursos/elec/sol/basic4android.htm

miércoles, 18 de noviembre de 2015

Grabador de datos gps XM37-1612 en SD. Tracker Arduino Pro Micro

Página principal


Grabador de datos gps XM37-1612 en SD.
Tracker Arduino Pro Micro


xsetaseta@gmail.com

Continuando con el montaje Grabador de datos gps , ahora utilizo el Arduino Pro Micro para hacer todo el circuito mas compacto. Además alimento todo el circuito con una batería recargable de 3,7V. De esta forma se puede meter todo en una caja eléctrica de plástico estanca.
Debemos tener cuidado ahora en la alimentación, las SD funcionan con voltajes de entre 3V a 3,7V ,no aguanta los 5V. Antes de programar el micro, debemos quitar la SD para que no se estropee.

Esquema del circuito.


Todos los componentes del circuito.

Los componentes conectados.

Vista superior

Vista inferior

He aumentado el tiempo entre tomas a 10 segundos, de esta forma se reduce bastante el tamaño del archivo.
También he añadido un tercer led que indica si la SD está bien conectada.
Además he hecho que parpadee el led de REC cuando se graba un dato.
Como vemos en la imagen he utilizado una batería recargable de 500mAh. Si el circuito consume 45mA , con esta batería tenemos una autonomía de 11 horas.
Se necesita el programa en Gambas (VB de linux) para tratar los datos y convertirlos en un fichero con formato kml, este se encuentra en el anterior montaje Grabador de datos gps .


PROGRAMA ARDUINO


Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html

lunes, 16 de noviembre de 2015

Grabador de datos gps XM37-1612 en SD. Tracker Arduino

Página principal


Grabador de datos gps XM37-1612 en SD.
Tracker Arduino


xsetaseta@gmail.com


En mis anteriores montajes había utilizado el XM37-1612 para visualizar los datos del gps en un PC y en un LCD Nokia. Ahora en este montaje he realizado un grabador de datos de gps, almacenando los datos en una SD para su posterior tratamiento.
También he realizado un programa en Gambas (VB de linux) para tratar los datos y convertirlos en un fichero con formato kml. Este formato kml se puede importar desde Google Maps y de esta forma visualizarlos en un mapa.


Prototipo en una placas board


Conexión de la SD al arduino.

Caja donde se encuentra metido todo el circuito.



El gps con la alimentación

La caja utilizada es una caja estanca de electricidad, es barata y además se pueden hacer agujeros facilmente.
La alimentación del circuito se toma de un alimentador para móviles, que suele proporcionar unos 2000mA.
Sabiendo que el circuito consume unos 55mA, tendremos una autonomía de 36 horas.
El primer led parpadea hasta que pilla señal de gps, luego se queda fijo.
El segundo led se encuentra apagado, cuando se pulsa el boton de grabar se enciende.
Si se vuelve a pulsar el boton, el led se apaga y se para la grabación.


Programa en gambas para convertir a formato kml


Ruta importada de nuestro gps.


Otra ruta importada de nuestro gps.

En el programa arduino se toman todos los datos que proporciona el gps y se graban los datos en la SD con el siguiente formato:

4200.8979,N,00431.5688,W,799.8,133357,101115,0,1325
4200.8978,N,00431.5690,W,799.3,133358,101115,0,1326
4200.8977,N,00431.5694,W,799.1,133359,101115,0,1327

El gps nos proporciona la longitud y latitud en grados y minutos con decimales, pero el formato kml requiere grados con decimales, por lo que el programa en basic hace la conversión y coloca las cabeceras. Como el gps proporciona datos cada segundo, y los datos son de 52 bytes, cada minuto ocupa 3120 bytes, es una cantidad bastante elevada. Para reducir el numero de datos que se le proporcionan al Google Maps, se puede indicar el numero de segundos entre toma.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Folder>
<Folder>
<name><![CDATA[RUTA]]></name>
<Placemark>
<LineString><extrude>1</extrude><altitudeMode>clampToGround</altitudeMode>
<coordinates>
-4.5261567,+42.0149617,799
-4.5261933,+42.0151600,796
-4.5265000,+42.0152850,788
-4.5266867,+42.0152883,785
-4.5268100,+42.0152450,782
-4.5267600,+42.0151033,780
-4.5268350,+42.0148733,780
-4.5268250,+42.0149117,778
</coordinates>
</LineString>
</Placemark>
</Folder>
</Folder>
</Document>
</kml>

Formato kml, este formato se puede importar con Google Maps.

El programa de arduino se puede mejorar bastante, como introducir el numero de segundos entre tomas.
También se puede trocear los ficheros para que no sean muy grandes.
En este programa me pasó de todo, desde alimentar mal durante unos segundos el gps, conectores que no hacen bien contacto, hasta borrarse parte de código de arduino y tener que escribirlo de nuevo.
En la alimentación invertida al gps creo que me cargue algo, pues ahora tarda algo mas en recibir señal.
Mi intención en un próximo montaje, es que se incorpore la batería dentro de la propia caja del gps.

PROGRAMAS

Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html



lunes, 19 de octubre de 2015

Visualizar datos gps XM37-1612 en Nokia 3310

Página principal


Visualizar datos gps XM37-1612
Nokia 3310
xsetaseta@gmail.com


En el anterior artículo gamgps.html habia realizado un visualizador de datos gps para el módulo XM37-1612 que transmitía la información al ordenador para ser visualizada. Pero claro, tener que llevar un ordenador portátil para ver los datos del gps es un tanto incómodo. Mi solución es utilizar el visualizado Nokia 3310, y alimentar todo mediante una batería de 3.7 V.
El montaje se ha realizado con un arduino nano, que funciona perfectamente con alimentaciones 3V.
Sigo sorprendiéndome de la sensivilidad del módulo XM37-1612 , dentro de mi habitación sobre el escritorio tengo señal de gps con 8 satelites.



Esquema del circuito.

Aunque el esquema se ha realizado con un arduino clásico, el montaje se ha realizado con un arduino nano.


Montaje de circuito.



Datos del módulo XM37-1612 Datos de un teléfono

El consumo de todo el circuito es de 49mA a 5V , y de 35mA a 3,5V.
El consumo del
módulo XM37-1612 es de 26mA.


PROGRAMA


Saludos.
Juan Galaz


Bibliografía:

http://www.gpsinformation.org/dale/nmea.htm
rards.html
gamgps.html

viernes, 16 de octubre de 2015

Visualizar datos gps XM37-1612 . Gambas

Página principal


Visualizar datos gps XM37-1612
Gambas

xsetaseta@gmail.com


El otro día me llego el módulo gps XM37-1612.

Descripción:
Modo de comunicación: nivel TTL, compatible con 3.3v sistema / 5v
Fuente de alimentación: 2.7-5v dc  45mA

Para probarlo he utilizado un adaptador USB- serie con niveles TTL.

El adaptador USB- serie proporciona salidas de 3.3V o 5V , para alimentar el módulo gps he utilizado 3.3V, después de haber probado que también funciona a 5V.

El programa de visualización de datos en el PC se ha realizado en Gambas, una especie de Visual Basic para Linux.


Programa en gambas


Coordenadas de gps pasadas a google

Como los datos que proporciona el gps son de tipo UTC, he tenido que realizar las conversiones a modo local.


Si no se tiene el adaptador usb->serie , se puede emplear el arduino.

___Programa en el arduino_______________

//SETA43 15/10/2015
// xsetaseta@gmail.com
// gps->PC Gambas
//Arduino Version 1.0.5
//Debian 7

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX 
//10 al TX del GPS
//11 al RX del GPS


void setup()  
{
  Serial.begin(9600);
  while (!Serial) { ; } //  Leonardo only
  Serial.println("START");
  mySerial.begin(9600);
}

void loop() 
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}
_____________________________


Conclusión:
El módulo XM37-1612 es bastante preciso, y tarda muy poco en proporcionarnos las coordenadas.
Comparado con los gps que vienen en los móviles es muchísimo mas rápido y sensible.

Programa

Saludos.
Juan Galaz


Bibliografía:
http://www.gpsinformation.org/dale/nmea.htm


martes, 6 de octubre de 2015

Marcador controlado por bluetooth. Display de 4 caracteres. Arduino

Página principal


Marcador controlado por bluetooth.
Display de 4 caracteres.
Arduino

xsetaseta@gmail.com


Continuando mi anterior montaje marcador controlado por bluetooth , ahora añado un display mas.
El único display de 4 caracteres es uno que tengo de mis despieces de DVD estropeados, me gusta reciclar aparatos rotos. El único problema que me ocurrió con este display es que es de cátodo común, por lo que he tenido que cambiar algo el programa.
En la simulación con proteus he utilizado displays de ánodo común y en el montaje he utilizado de cátodo común.
Depende el modelo que tengáis, debéis modificar el programa arduino en las líneas:

//Para Catodo comun
//#define Comun1  HIGH
//#define Comun0  LOW

//Para Anodo comun
#define Comun0  HIGH
#define Comun1  LOW


Esquema del circuito.


Circuito montado.


Tapando segmentos.



Controlando el display con SENA BTerm

FICHEROS

Saludos.
JUAN GALAZ

Bibliografía:

http://seta43.duckdns.org/arduan1.html
http://diymakers.es/arduino-bluetooth/
http://english.cxem.net/arduino/arduino4.php
http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/step1/How-to-use-ArduDroid/
http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS
http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
http://www.basic4ppc.com/
http://www.extremadura-web.es/Blog/2012/10/29/comunicacion-bluetooth-serie-arduino-y-basic4android/
http://iesromerovargas.es/recursos/elec/sol/basic4android.htm

martes, 29 de septiembre de 2015

Marcador controlado por bluetooth. Arduino

Marcador controlado por bluetooth.
Arduino

xsetaseta@gmail.com


El otro día estaba viendo un partido de frontenis y mirando el marcador me surgió la idea de hacer uno controlado mediante bluetooth.
El proyecto debía ser lo mas sencillo posible, y con los materiales que tuviera a mano.
El control debía realizarse a distancia con un ordenador o un teléfono android.
Lo que tengo a mano para realizar el montaje es:
-Arduino nano.
-3 Display de 8 segmentos ánodo común.
-Módulo HC05
Yo no había trabajado antes con display 8 segmentos ánodo común, por lo que he tenido que aprender a multiplexar los distintos display. Como no quería  realizar un circuito complicado he utilizado resistencias en el ánodo para alimentar a los segmentos, por lo cual se iluminará mas el numero 8 que el numero 1 al tener que encender en el primer caso 8 led y en el segundo 2 led. Para hacerlo bien, y que se iluminasen todos los led por igual, debería colocar una resistencia por cada segmento y un transistor por cada display.
La comunicación entre el dispositivo android y el arduino se hace mediante el módulos Bluetooth  HC05.
Es un simple modulo que emplea la comunicación serie (Tx/Rx), en nuestro caso utilizaremos un puerto serie por sofware mediante los pins A0 y A1 del arduino.
En mi caso utilizo otra versión mas antigua del módulo HC05 que esta preprogramado a una velocidad de 38400 y con la contraseña 1234. En el módulo original HC05 viene a una velocidad de 9600, esto es lo que debéis cambiar en el programa arduino.
He querido que mediante el carácter / haga fija la visualización, y si no se pone este carácter, la cadena de caracteres haga un desplazamiento.


Esquema del circuito.



Circuito montado.




Control con un adaptador bluetooth mediante el PC.



1

2

3

4
5




6

7
Control con un teléfono android.

Para realizar el programa android he utilizado el interprete Basic  BASIC! for Android  http://laughton.com/basic/ , es gratis y quería probarlo. El programa no es bonito pero hace su función.
En el programa arduino he realizado la captura desde el bluetooth y desde serie de distinta forma, mediante string y mediante cadena de caracteres, es una simple practica de programación.
No he querido perfeccionar el circuito para que no se copie a pié de la letra, el que quiera utilizarlo que lo mejore trabajando un poco.





FICHEROS



Vídeo de funcionamiento.

Saludos.
JUAN GALAZ

Bibliografía:

http://seta43.duckdns.org/arduan1.html
http://diymakers.es/arduino-bluetooth/
http://english.cxem.net/arduino/arduino4.php
http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/step1/How-to-use-ArduDroid/
http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/?ALLSTEPS
http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/
http://www.basic4ppc.com/
http://www.extremadura-web.es/Blog/2012/10/29/comunicacion-bluetooth-serie-arduino-y-basic4android/
http://iesromerovargas.es/recursos/elec/sol/basic4android.htm