viernes, 16 de febrero de 2018

Control de dos servos a distancia mediante Arduino y nRF24L01

Página principal

Control de dos servos a distancia mediante
Arduino y nRF24L01

xsetaseta@gmail.com

De mi anterior montaje carreco.html tenía montado todo el circuito en el mando emisor.
Tenía un mando reutilizado de un helicóptero que tenía averiado.
No tenía que tocar nada en la parte del emisor, ni siquiera debía modificar el programa.
En el lado del receptor solo debo añadir 2 servos y cambiar un poco el programa.

Esquema del emisor. (Realizado con https://easyeda.com/ )


Circuito emisor montado con el mando reciclado.




Esquema del receptor.



Fotos del receptor montado.

Patillas de los distintos tipos de servos.

Debemos tener en cuenta que los servo tienen bobinas y que producen interferencias y alto consumo en picos, por lo cual deberemos alimentar todo desde una fuente algo estable.
Los datos se reciben cada 100 miliSegundos (algo menos, no es exacto) ,alrededor de 10 transmisiones de datos  por segundo.
Por hacerlo simple y sin muchas complicaciones, no se ha realizado ni medias de datos, ni detección de errores.
El que lo quiera hacer mas seguro que modifique el programa, es fácil, no hay que dar todo hecho.
También se puede utilizar los módulos con antena y mayor potencia que pueden alcanzar hasta 1Km en campo abierto. Si utilizamos mas potencia deberemos plantearnos es alimentar el nrf24 de otro sitio que no sea los 3.3V del arduino.
Hace dos años realice un circuito muy parecido rf24l01.html , utilice otra librería y otro programa, os puede servir de guía.

VIDEO DE FUNCIONAMIENTO

PROGRAMA

Hasta pronto.
Juan Galaz


BIBLIOGRAFÍA

rf24l01.html
https://www.prometec.net/servos/
https://github.com/maniacbug/RF24
https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo
http://openhardware.pe/transceptores-nrf24l01-2-4ghz-radio-wireless-how-to/
http://cursos.olimex.cl/tutoriales/
http://www.electroensaimada.com/servomotor.html
http://arduino.cl/servo-motor-con-arduino/


miércoles, 14 de febrero de 2018

Coche teledirigido mando 3 ejes nRF24L01 L293D Arduino_ Versión 2

Página principal

Coche teledirigido
mando 3 ejes
nRF24L01
L293D
Arduino

xsetaseta@gmail.com

Este montaje es la continuación del anterior montaje carreci.html .
En este montaje añado un mando reutilizado de un helicóptero que tenía averiado.
Para el montaje he utilizado los 3 potenciómetros  y el conmutador de diferentes canales.
El primer potenciómetro es utilizado para la velocidad.
Los otros dos potenciómetros los utilizo como manejo de la dirección.
El conmutador selecciona la velocidad de rotación del vehículo.
Pongo en conocimiento que cada mando de helicópteros es diferente, por lo cual cada uno deberá modificar internamente el mando, cortando pista o lo que sea necesario para que se pueda reutilizar.



Esquema del emisor.

A nivel de programa se ha realizado bastantes cambios.
Se digitalizan los 3 potenciómetros , y se chequean los diferentes interruptores.
Ahora se mandan 7 bytes con los datos digitalizados.
1-SENSOR0    Eje1
2-SENSOR1    Eje2
3-SENSOR2    Velocidad
4-SENSOR3    (nada , reservado)
5-ENTRADAS    Las diferentes entradas en modo bit

El resto de bytes no se utilizan.

Los datos se mandan aproximadamente cada 100 miliSegundos , (algo menos de 10 datos por segundo)

Emisor con el mando reciclado.



Esquema del receptor.

En el receptor he trabajado mas, hay bastantes cosas que he modificado.
En primer lugar veía que había bastantes problemas con la alimentación de los motores. Por lo que decidí alimentarlo a través de dos baterías de 3,7V colocadas en serie y colocar un regulador de tensión 7805 para estabilizar la tensión a 5V.
Uno de los mayores problemas que tuve era que al alimentar los motores al arrancar, se necesitaba un impulso de energía extra.
La solución aunque parezca extraña fue mediante programa.
if(anterior==0)
             {
               analogWrite(9,255);
               analogWrite(10,255);
               anterior=1;
               delay(90);
             }

El programa detecta si se encuentra parado el vehículo, y en ese caso aplica la máxima tensión durante 90 miliSegundos, el coche rompe la inercia de parado,  y luego aplica la tensión normal para mantener la velocidad. Esto fue un gran descubrimiento para el buen funcionamiento del vehículo.

Como quería controlar un poco la dirección cuando estaba en movimiento. Reduje un poco la tensión en una de las ruedas cuando movía el mando, consiguiendo que el vehículo girara hacia el lado que quería.

El giro del vehículo desde parado lo he configurado para que se efectué a saltos, era la mejor forma de controlarlo sin que se pasase girando continuamente. En uno de los interruptores  seleccionamos la velocidad de giro entre 100mS y 50mS.

Debemos tener presente que el receptor tiene dos motores de escobilla que producen bastantes interferencia, así como consumos puntuales en el arranque. Por lo que recomiendo que se alimente independientemente la parte de los motores de la parte del arduino.

Este montaje es un mero montaje de prácticas que  funciona.
Para un montaje mas ambicioso deberíamos saber la alimentación de las baterías  6V o 12 V, un regulador adecuado con pocas perdidas. Colocar un regulador para los módulos emisor y transmisor. También utilizar los módulos con antena y mayor potencia que pueden alcanzar hasta 1Km en campo abierto.
Espero que le guste a alguien este montaje, o que le pueda proporcionar ideas.

PROGRAMA

Saludos.
Juan Galaz


Bibliografía:

Mando a distancia de 4 reles (relay)
Arduino-Android-Bluetooth-hc05-Manejando un coche-mediante nRF24
Coche teledirigido

domingo, 24 de diciembre de 2017

Wifi no funciona en dispositivos USB en DEBIAN 9

Wifi no funciona en dispositivos USB en DEBIAN 9


Llevo usando Debian durante muchos años, y el otro día después de instalar Debian 9.3 no funcionaban los adaptadores externos de USB Wifi.
El caso que se podían ver todas los puntos de acceso ( las redes de alrededor) , pero cuando das para conectar e introducir la contraseña nunca llega a conectar.
Como había instalado antes las versiones 9.0  - 9.1 y 9.2 y las tenía aún en particiones, probé si se conectaba, y nada.
También por si las moscas probé en Debian 8 , y se conectaba perfectamente.
Tengo una colección de adaptadores wifi, y en todos pasa lo mismo, por lo cual es un error del propio Debian 9.
Como curiosidad, en ordenadores que tienen el adaptador wifi integrado (portátiles),  se conecta perfectamente. Pero si a ese mismo ordenador pinchas el adaptador wifi USB, para probarlo no se conecta con el adaptador pinchado.

Mirando por internet encontré la solución:

Añadir en /etc/NetworkManager/NetworkManager.conf 
 
[device]
wifi.scan-rand-mac-address=no


Hago reiniciar las redes con:

/etc/init.d/network-manager restart
/etc/init.d/networking restart

Ahora funciona, ya puedo probar todos mis adaptadores USB-WIFI

Saludos
JUAN

miércoles, 13 de diciembre de 2017

Coche teledirigido con fpv - nRF24L01 - L293D - Arduino

Página principal


Coche teledirigido con fpv 
nRF24L01
L293D
Arduino

xsetaseta@gmail.com

En este montaje sustituyo los relés del anterior montaje por el CI L293D. De la misma forma que comente en el anterior montaje, este montaje es una continuación del montaje  autofel.html , en el cual manejaba el dispositivo mediante un móvil android.
El utilizar un nRF24L01 proporciona la posibilidad de utilizar el módulo con mas potencia, llegando a poder controlarlo a mas de 700m en visión directa.
Añado además dos resistencia variable para regular la velocidad y la dirección.



Esquema del emisor. (Realizado con https://easyeda.com/ )


Esquema del receptor. (Realizado con https://easyeda.com/ )


Circuito emisor montado.
Si queremos ampliar el radio de acción deberíamos emplear el módulo con antena.




Circuito receptor montado.
Podemos observar la doble alimentación del receptor.
Esto es debido a la multitud de interferencias que genera el circuito de los motores en el circuito receptor.
Se podría haber evitado la doble alimentación mediante un circuito regulador y varios filtros, pero como este circuito es un prototipo lo he dejado así.


Detalle del L293D.

El utilizar el L293D como regulador de velocidad de motores mediante el cambio de ancho de pulso, no es un modo demasiado preciso en este tipo de motores.
Para regular la velocidad hubiese sido mejor emplear MOSFET , pero este circuito es un prototipo y no he querido complicarlo mas.


PROGRAMA


Como curiosidad, he realizado los esquemas mediante la página web https://easyeda.com/ . Es curioso como se puede crear esquemas eléctricos mediante el navegador, además tiene bastantes componentes. Les recomiendo probar esta excelente página web.
Espero que le guste a alguien este montaje, o que pueda proporcionar ideas.

Saludos.
Juan Galaz


Bibliografía:

Mando a distancia de 4 reles (relay)
Arduino-Android-Bluetooth-hc05-Manejando un coche-mediante nRF24
Coche teledirigido

martes, 28 de noviembre de 2017

Coche teledirigido con fpv - nRF24L01 - Arduino

Página principal



Coche teledirigido con fpv 
nRF24L01
Arduino

xsetaseta@gmail.com

En este montaje mezclo varios montajes anteriores, Mando a distancia de 4 reles (relay)Arduino-Android-Bluetooth-hc05-Manejando un coche-mediante nRF24 .
Además he incorporado un móvil android a modo de fpv, utilizando la aplicación  .IP Webcam ( Pavel Khlebovich ).
Con todo lo anterior conseguimos un coche con mando a distancia que además podemos ver en fpv en nuestro navegador.
Para el control de los motores utilizamos relés. Tienen pros y contras, la mayor ventaja es poder controlar motores de hasta 220V, y el aislamiento eléctrico. Las contras son varias, la principal es el desgaste del propio relé al utilizarlo muchas veces, además de no poder controlar la velocidad de los motores.


Emisor.


Montaje del emisor




Montaje del receptor



Conexionado de los motores.


Conjunto montado.


Como no tengo ninguna cámara para hacer fpv, una forma fácil de hacer fpv es utilizar un móvil a modo de cámara y ver la imagen en el ordenador.
Existen bastantes programas para transformar un móvil en una webcam IP , el que me ha funcionado mejor es .IP Webcam ( Pavel Khlebovich ).
Tiene bastantes opciones que se pueden configurar, además hasta puede tomar fotos y videos. Existe tambien la versión de pago, pero para lo que hemos hecho nos sirve la versión gratuita.

Visión de la cámara IP.




VIDEO DE FUNCIONAMIENTO

Programa

Como el nRF24  funciona a 2.4GHz y la red Wifi también funciona a esa frecuencia, puede ocurrir que esporádicamente  se puede perder el control.
Ante este problema y para evitar posibles accidente, el coche se queda parado si no recibe señal después de 100mS desde la última orden.
Como se puede ver en la imagen utilizo doble fuente de alimentación, para el arduino y para los motores. Se puede usar una sola, cada uno que pruebe.

Como se puede ver en las imágenes  existen dos diodos, y alguno dirá para que sirven.
El nRF24 puede llegar a consumir hasta 28mA, está dentro del rango que proporciona el arduino en el ping 3.3V, pero si colocamos un nRF24 con antena que proporciona mas alcance, el consumo aumenta y puede provocar el mal funcionamiento del montaje.
Existen dos opciones, utilizar un alimentador externo de 3.3V, o emplear un viejo truco de electrónicos, el utilizar la caída de tensión (0.7V) de los diodos de silicio. He empleado dos diodos en serie que producen una caída de tensión de 1,4V que restados a los 5V del arduino nos proporciona una tensión de 3.6V con la que podemos alimentar el módulo. Normalmente este tipo de módulos tiene una cierta tolerancia en cuanto a la alimentación, el que no se quiera arriesgar que utilice otro diodo en serie, bajando de esta forma la alimentación a 2.9V. He colocado un condensador en los 3.6V para aplanar la alimentación.
Recordar que debéis colocar un condensador de 16uF o mas en el nRF24, en muchos módulos falla por ese motivo.

El circuito emisor se puede alimentar a baterías de 3.6V. Entonces  debéis alimentar directamente el módulo nRF24 a los 3.6V.
El módulo nRF24 funciona con tensiones entre 2V y 3.6V.

Espero que le guste a alguien este montaje, o que pueda proporcionar ideas.

Saludos.
Juan Galaz


Bibliografía:

Mando a distancia de 4 reles (relay)
Arduino-Android-Bluetooth-hc05-Manejando un coche-mediante nRF24


jueves, 9 de noviembre de 2017

Creador de programas para Arduino con interface gráfica hecha con Gambas

Página principal


Creador de programas
para
Arduino
con interface gráfica hecha
con
 Gambas

xsetaseta@gmail.com


En un anterior artículo había descubierto Visualino , una curiosa aplicación para hacer programas de arduino en forma gráfica. En este artículo había realizado un semáforo, y la verdad me gusto hacerlo de esta manera, gráficamente.
Picado por la curiosidad, y preguntándome si yo podía hacer este tipo de programa, me puse manos a la obra.
En un principio pensé hacerlo en C, pero como tenía Gambas una especie de VB para Linux elegí la forma fácil, realizarlo en el Basic de Gambas.
Se realizo mediante Gambas 3.5.4  bajo Debian 8 ,no he probado si funciona en otras versiones.
Fueron días y días de pruebas, de creación de bloques enlazados. Tuve que rehacer completamente el programa por problemas de diseño.
Como conclusión puedo decir que me quedó un programa digno, sin mas ambiciones.
Se podría haber añadido muchas mas funciones y librerías, pero lo he dejado en las funciones básicas.
Si queremos añadir alguna orden mas, podemos emplear el texto literal, que nos dará la posibilidad de hacer lo que queramos.
Como prueba práctica he realizado un semáforo, se puede ver el vídeo de su creación.
Espero que le guste a alguien y que le de ideas para hacer otros programas.
Mi idea es realizar el programa en C con las librerías wxwidgets , pero ahora tengo que recuperarme de este complicado programa.
El programa está limitado a 100 bloques, por lo que se puede quedar un poco corto para algunos programas. El que quiera puede aumentarlo todo lo que quiera cambiando las líneas de FMain.class  donde figuran la creación del numero de bloques:
Public Const MaxBloque As Integer = 99
Public Braiz[100] As Integer
.........
No arrastrar mas de un bloque sobre otro, aún no está implementado y produce errores.


Interface gráfico


Comandos posibles




VIDEO


 En el fichero del programa se encuentra el fichero fuente, la versión binaria ejecutable, y el paquete DEB por si quieres instalarlo.
Programa


Saludos.
Juan Galaz

lunes, 2 de octubre de 2017

Reloj con Arduino y el chip CT1642

Página principal



Arduino
CT1642
Reloj

xsetaseta@gmail.com

De vez en cuando me gusta desmontar aparatos electrónicos para reciclar.
En el interior de un TDT estropeado encontré la placa con display junto con los botones controlados por un CT1642.
Manos a la obra me puse a buscar información de CT1642, había muy poca, y además estaba en chino.
Por ahora el aprender chino no está en mis aficiones, por lo que traduje con el Google.
Donde encontré la verdadera ayuda fue en https://github.com/arkroan/CT1642, una librería para arduino.
En esta librería además de tener ejemplos, también dispone de documentación y fotos. Como ocupaba 15M por las fotos y los pdf, la he rebajado quedando en 10K, que es el tamaño de la librería en si. CT16lib.zip
Este chip no mantiene los display automáticamente, se los tienes que refrescar tu en el programa arduino. No es un buen chip, yo lo remplazaría por TM1638 que lo hace todo y fácil, pero bueno es lo que toca con el chip CT1642.
En  este montaje he realizado un reloj, donde la base de tiempos la tomo de las interrupciones. No es muy exacta pero para la práctica vale. El que quiera el tiempo exacto se podría emplear el chip DS1302.

1-8 Q2-Q9 segmento de salida, P-ch abierto de drenaje, a continuación, el ánodo del tubo digital, tire hacia abajo 50k de resistencia.
9-12 C1-C4 bits de salida, N-ch abierto de drenaje, a continuación, el cátodo digital del tubo, la máxima corriente de 400mA, pull up 50k resistencia.
13 CLK borde ascendente para escribir datos, built-in 10k pull-up resistor.
14 Señal de datos DATA, escrita en el registro IC, resistor pull-up incorporado de 10k.
15 VDD conectado a la fuente de alimentación del sistema 3.3V o 5.0V.
16 GND


Como vemos entran los datos por el pin DATA sincronizados con la señal CLK.
Cuando se producen dos estados 0 de DATA, en el mismo ciclo de reloj en estado 1, se activan los datos al display.


En la placa del TDT la conexión suele ser esta, puede variar, debéis comprobarlo.


Montaje eléctrico.

Conexiones del arduino
CLOCK_PIN     pin 6  arduino
DATA_PIN      pin 7  arduino
KEY_PIN  -> 330 ohmios -> pin 3  arduino

Como suelo ser precavido, yo coloco un resistencia de 330 ohmios entre KEY_PIN y el pin 3 del arduino .

Este montaje es simple y sencillo de unas 3 horas .

PROGRAMA

Saludos.
JUAN GALAZ


Bibliografía:
https://github.com/arkroan/CT1642
http://seta43.hol.es/artime.html