es mas didactico que utilitario... pero vamos que a quien le apetezca puede hacer en autoit.. por ejemplo un reproductor de musica que use el mando para cambiar de cancion... macros para abrir ventanas concretas... etc etc...
martes, 14 de mayo de 2013
controlando el mouse con un mando de IR
rebuscando por el cajon del olvido he encontrado este sensor de IR y bueno.. he echo esta tontadilla para controlar el mouse del ordenador ^^
lunes, 29 de abril de 2013
funciones basicas de arduino para Autoit
con este sketch de arduino y la libreria de autoit es posible usar las funciones basicas digitalwrite() analogwrite() analogread() digitalread().
puede dar mucho juego para alguien que inicia en la electronica, ya que aunque es limitado da para hacer muchas cosas... una alarma... un pequeño sistema domotico.. etc
incluye 4 ejemplos, uno usando cada funcion
martes, 8 de enero de 2013
pesando con arduino y autoit
actualizo con este pequeño pero costoso(en tiempo) proyecto.
costoso mas que nada por que no he encontrado mucho y estaba casi todo en ingles.. pero me ha venido bien para mejorar el ingles y aprender unas cosillas sobre electrónica ^^
despues de destripar una bascula para ver como funcionaba me puse a investigar y me encontre con que funcionan con una galga extensiometrica, que es simplemente una resistencia que varia segun es deformada, peeeero su resistencia varia minimamente.. por lo que hay que amplificar esta señal..
para esto usaremos un puente de wheatstone y un amplificador de instrumentacion
el puente de wheatstone son dos divisores de tensión en paralelo y el amplificador de instrumentación lo que hace es comparar la tensión de cada divisor de tensión (osea que te da la diferencia entre estos voltajes) y multiplicarlo por una ganancia que tu le as establecido
para quien quiera ampliar:
http://es.wikipedia.org/wiki/Divisor_de_tensi%C3%B3n
http://es.wikipedia.org/wiki/Puente_de_Wheatstone
http://es.wikipedia.org/wiki/Amplificador_de_instrumentaci%C3%B3n
en mi proyecto he usado un amplificador ad620an he escogido este mas que nada por que vi un circuito con galga que lo usaba, pero cualquier otro habría valido.
como mi bascula tiene cuatro galgas, lo que se hace es conectarlas de tal manera que con las cuatro se cree el puente, y que los pares de resitencias variables de las galgas en un lado del puente esten arriba para que el voltaje baje con la variacion, y en el otro abajo para que aumente este voltaje.. esto se hace para dar mas precision. ya que la diferencia sera el doble.
en la foto S+ es la salida que aumentara y S- el que disminuira
no os fieis de los colores de los cables.. medir la resistencia entre estos, no siempre es igual la disposicion.
para ajustar la ganancia del ad620 se usan resistencias.. para averiguar la resistencia que hay que poner se usa la siguiente formula donde R es resistencia a poner y G ganancia.
R=49900/G-1
yo tengo una resistencia de 120 omhs lo que me da una ganancia de 415 mas o menos.
actualizare y subire los códigos.. pero son dos tontadillas
costoso mas que nada por que no he encontrado mucho y estaba casi todo en ingles.. pero me ha venido bien para mejorar el ingles y aprender unas cosillas sobre electrónica ^^
despues de destripar una bascula para ver como funcionaba me puse a investigar y me encontre con que funcionan con una galga extensiometrica, que es simplemente una resistencia que varia segun es deformada, peeeero su resistencia varia minimamente.. por lo que hay que amplificar esta señal..
para esto usaremos un puente de wheatstone y un amplificador de instrumentacion
el puente de wheatstone son dos divisores de tensión en paralelo y el amplificador de instrumentación lo que hace es comparar la tensión de cada divisor de tensión (osea que te da la diferencia entre estos voltajes) y multiplicarlo por una ganancia que tu le as establecido
para quien quiera ampliar:
http://es.wikipedia.org/wiki/Divisor_de_tensi%C3%B3n
http://es.wikipedia.org/wiki/Puente_de_Wheatstone
http://es.wikipedia.org/wiki/Amplificador_de_instrumentaci%C3%B3n
en mi proyecto he usado un amplificador ad620an he escogido este mas que nada por que vi un circuito con galga que lo usaba, pero cualquier otro habría valido.
como mi bascula tiene cuatro galgas, lo que se hace es conectarlas de tal manera que con las cuatro se cree el puente, y que los pares de resitencias variables de las galgas en un lado del puente esten arriba para que el voltaje baje con la variacion, y en el otro abajo para que aumente este voltaje.. esto se hace para dar mas precision. ya que la diferencia sera el doble.
en la foto S+ es la salida que aumentara y S- el que disminuira
no os fieis de los colores de los cables.. medir la resistencia entre estos, no siempre es igual la disposicion.
R=49900/G-1
yo tengo una resistencia de 120 omhs lo que me da una ganancia de 415 mas o menos.
actualizare y subire los códigos.. pero son dos tontadillas
domingo, 25 de noviembre de 2012
moviendo el raton con arduino :P
bueno, pues tenia este proyecto a medias desde hace varios años, y al fin! esta tarde me a dado por acabarlo.
consta de dos programas, uno en Autoit para el ordenador(servidor), y otro para el arduino(cliente)
(para la gente que no tenga ni idea.. puede decirse que servidor es el que recibe informacion y la ejecuta.. y cliente el que la envia para decirle al servidor lo que tiene que hacer.)
el programa de arduino lo que hace constantemente es leer la posicion de los potenciometros del nunchuck y el estado de los botones C y Z y los envia en una string mediante el puerto COM al ordenador, mientras que el programa de autoit esta constantemente leyendo los datos, y moviendo el raton en funcion de lo que reciba.
para poder usar el programa de autoit, tendreis que cambiar el puerto com, y poner el que vuestro ordenador use.. el baudaje es mejor dejarlo tal como esta.
conecta(3,115200)
en mi caso es el com3
el hardware es casi nulo, si teneis un conector especial para nunchucks pues usarlo, yo como no tengo, meto los pines por los huecos del nunchuck y los conecto directamente al arduino
Arduino - nunchuck
SCL - CLOCK
SDA - Data
GND - GND
3.3v - Power
en mi caso al ser el arduino mega el pin scl es el 21 y el sda el 20
1º situar el joystick del nunchuck lo mas a la izquierda posible, pulsar a y esperar 1 o 2 segundos
2º situar el joystick del nunchuck lo mas a la derecha posible, pulsar d y esperar 1 o 2 segundos
3º situar el joystick del nunchuck lo mas arriba posible, pulsar w y esperar 1 o 2 segundos
1º situar el joystick del nunchuck lo masabajo posible, pulsar x y esperar 1 o 2 segundos
finalmente pulsar s y ya estara calibrado.
(el programa principal debe ir en el mismo directorio que el calibrador)
consta de dos programas, uno en Autoit para el ordenador(servidor), y otro para el arduino(cliente)
(para la gente que no tenga ni idea.. puede decirse que servidor es el que recibe informacion y la ejecuta.. y cliente el que la envia para decirle al servidor lo que tiene que hacer.)
el programa de arduino lo que hace constantemente es leer la posicion de los potenciometros del nunchuck y el estado de los botones C y Z y los envia en una string mediante el puerto COM al ordenador, mientras que el programa de autoit esta constantemente leyendo los datos, y moviendo el raton en funcion de lo que reciba.
para poder usar el programa de autoit, tendreis que cambiar el puerto com, y poner el que vuestro ordenador use.. el baudaje es mejor dejarlo tal como esta.
conecta(3,115200)
en mi caso es el com3
el hardware es casi nulo, si teneis un conector especial para nunchucks pues usarlo, yo como no tengo, meto los pines por los huecos del nunchuck y los conecto directamente al arduino
Arduino - nunchuck
SCL - CLOCK
SDA - Data
GND - GND
3.3v - Power
en mi caso al ser el arduino mega el pin scl es el 21 y el sda el 20
importante!
junto al programa principal que es mousemove.au3 va otro programa llamado calibrador. Antes de usar el programa principal teneis que ejecutar este programa y segir estos pasos:1º situar el joystick del nunchuck lo mas a la izquierda posible, pulsar a y esperar 1 o 2 segundos
2º situar el joystick del nunchuck lo mas a la derecha posible, pulsar d y esperar 1 o 2 segundos
3º situar el joystick del nunchuck lo mas arriba posible, pulsar w y esperar 1 o 2 segundos
1º situar el joystick del nunchuck lo masabajo posible, pulsar x y esperar 1 o 2 segundos
finalmente pulsar s y ya estara calibrado.
(el programa principal debe ir en el mismo directorio que el calibrador)
martes, 20 de noviembre de 2012
actualizacion del coche RC con puente h l299n
despues de muuuucho tiempo.. actualizo el blog que ya era hora XD
Bueno, pues lo "nuevo" del coche es, que en vez de tener protoboard tengo una protoshield para que el montaje sea menos voluminoso, que aora la velocidad puede regularse mediante el pwm gracias al l298n(es un puente en H), y le e añadido un brazillo echo con servos y piezas de un viejo meccano ^^
unas fotillos del "brazo":
el codigo esta echo para un arduino mega, ya que para evitar tener que poner cables en la antena apc220, simplemente la pincho como se ve en esta foto.. y declaro el pin 15, que es en el que el gnd de la antena esta conectado como input, y el 16 y 17 como outputs que es donde estan conectados vcc y enable
por lo que si se va a usar un arduino due uno.. etc.. pueden ahorrarse es parte de codigo, y tendran que remplazar los Serial1 por Serial.
el cableado restante es extremadamente sencillo.
el servo de direccion sera el pin 9 y los pines del brazo los 7 y 8
en el l298n el ena al pin 12, y el in1 y in2 a 11 y 10, gnd a gnd +5v a +5v el vms de la clema al positivo de la bateria y gnd a gnd de la bateria, luego los cables del motor a motorA
la fuente de alimentacion del motor es una bateria de 12V que no se ve en ninguna foto, ya que va debajo del coche.. y la fuente del arduino es un portapilas de 6 pilas
en el codigo de autoit añado las teclas q y e para bajar y suvir de velocidad, wasd para manejar el brazillo de servos
agradecimientos a Biketrial de forocoches por explicarme como conectar el puente ;)
aqui el codigo autoit :
y aqui el nuevo codigo del arduino
Bueno, pues lo "nuevo" del coche es, que en vez de tener protoboard tengo una protoshield para que el montaje sea menos voluminoso, que aora la velocidad puede regularse mediante el pwm gracias al l298n(es un puente en H), y le e añadido un brazillo echo con servos y piezas de un viejo meccano ^^
unas fotillos del "brazo":
el codigo esta echo para un arduino mega, ya que para evitar tener que poner cables en la antena apc220, simplemente la pincho como se ve en esta foto.. y declaro el pin 15, que es en el que el gnd de la antena esta conectado como input, y el 16 y 17 como outputs que es donde estan conectados vcc y enable
por lo que si se va a usar un arduino due uno.. etc.. pueden ahorrarse es parte de codigo, y tendran que remplazar los Serial1 por Serial.
el cableado restante es extremadamente sencillo.
el servo de direccion sera el pin 9 y los pines del brazo los 7 y 8
en el l298n el ena al pin 12, y el in1 y in2 a 11 y 10, gnd a gnd +5v a +5v el vms de la clema al positivo de la bateria y gnd a gnd de la bateria, luego los cables del motor a motorA
la fuente de alimentacion del motor es una bateria de 12V que no se ve en ninguna foto, ya que va debajo del coche.. y la fuente del arduino es un portapilas de 6 pilas
en el codigo de autoit añado las teclas q y e para bajar y suvir de velocidad, wasd para manejar el brazillo de servos
agradecimientos a Biketrial de forocoches por explicarme como conectar el puente ;)
aqui el codigo autoit :
#include <CommMG.au3>
#Include <Misc.au3>
FileInstall("C:\Documents and Settings\USUARIO\Mis documentos\samuel\co.jpg",@TempDir&"\co.jpg")
HotKeySet("z","exitt")
HotKeySet("q","mas")
HotKeySet("e","menos")
_CommSetDllPath("C:\Program Files (x86)\AutoIt3\Include\commg.dll")
conecta(2,9600)
$grados = 90
$g1 = 90
$g2 = 90
Global $ve = 0
$v = 0
$D = ","
While 1
;direccion
If (_IsPressed(25) Or _IsPressed(27)) Then
If _IsPressed(25) Then
If $grados >= 45 Then
$grados -= 10
EndIf
EndIf
if _IsPressed(27) Then
If $grados <= 135 Then
$grados += 10
EndIf
EndIf
Else
If $grados <> 90 Then
If $grados >= 90 Then
$grados -= 5
EndIf
If $grados <= 90 Then
$grados += 5
EndIf
EndIf
EndIf
;-----
;balastro s1
If _IsPressed(41) Then
If ($g1 > 0) Then
$g1 -= 3
EndIf
EndIf
If _IsPressed(44) Then
If ($g1 < 180) Then
$g1 += 3
EndIf
EndIf
;-----
;balastro s2
If _IsPressed(57) Then
If ($g2 > 0) Then
$g2 -= 3
EndIf
EndIf
If _IsPressed(53) Then
If ($g2 < 180) Then
$g2 += 3
EndIf
EndIf
If (_IsPressed(26))Or(_IsPressed(28)) Then
Select
Case _IsPressed(26)
$d = ","
Case _IsPressed(28)
$d = ":"
EndSelect
$v = $ve
Else
$v = 0
EndIf
_CommSendString($v&$d&$g1&"."&$g2&";"&$grados&@CRLF,1)
ConsoleWrite($v&$d&$g1&"."&$g2&";"&$grados&@CRLF)
;$lol = _CommGetString()
;While $lol = ""
; $lol = _CommGetString()
; WEnd
Sleep(1)
WEnd
;-------
;velocidades
Func mas()
If $ve < 255 Then
$ve += 51
EndIf
EndFunc
Func menos()
If $v > 0 Then
$ve -= 51
EndIf
EndFunc
;-------------
Func conecta($port,$baud)
If $baud = "" Then $baud = 9600
Local $sportSetError
ConsoleWrite(_CommListPorts(0))
_CommSetPort($port, $sportSetError, 9600, 8, "none",2,1)
if $sportSetError = '' Then
Return 1
ConsoleWrite("using " & _CommGetVersion(1))
Else
ConsoleWrite("error")
return $sportSetError
EndIf
EndFunc
Func map($x, $in_min, $in_max, $out_min, $out_max)
return ($x - $in_min) * ($out_max - $out_min) / ($in_max - $in_min) + $out_min
EndFunc
Func exitt()
_CommCloseport()
Exit
EndFunc
y aqui el nuevo codigo del arduino
#include <Servo.h>
String inString = "";
Servo myservo,s1,s2;
int stat,rot,rot1,rot2,D;
void setup() {
Serial1.begin(19200);
myservo.attach(9);
s1.attach(7);
s2.attach(8);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
// definicion de los pines para la antena
pinMode(17, OUTPUT);
digitalWrite(17,HIGH);
pinMode(16, OUTPUT);
digitalWrite(16,HIGH);
pinMode(15,OUTPUT);
digitalWrite(15,LOW);
}
void loop() {
int inChar;
// Read serial input:
if (Serial1.available() > 0) {
inChar = Serial1.read();
}
if (isDigit(inChar)) {
inString += (char)inChar;
}
if (inChar == '-') {
D = inString.toInt();
if (D==1){
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
}else{
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
}
inString = "";
}
if (inChar == ',') {
stat = inString.toInt();
analogWrite(12,stat);
inString = "";
}
if (inChar == '.') {
rot1 = inString.toInt();
s1.write(rot1);
inString = "";
}
if (inChar == ';') {
rot2 = inString.toInt();
s2.write(rot2);
inString = "";
}
if (inChar == '\n') {
rot = inString.toInt();
myservo.write(rot);
inString = "";
}
}
jueves, 26 de julio de 2012
coche RC gasolina + ArduinoS
buenoo.. pues otra vez usando los apc220, un coche rc (esta vez de gasolina), y la novedad.. un nunchuck de la wii e echo un mando para controlar el coche a lo mario kart!!
pensaba que seria mas facil de controlar que con el mando original pero los *******! hay que tener mucho pulso para regular la velocidad ya que funciona con el acelerometro z del mando y luego el joystick no me da tanta precision como pensaba :S pero por lo menos es un proyecto entretenido sencillo.. y original.
el control del coche a sido facil, ya que la direccion y admision de gasolina se controlan los dos con servos, a sido simplemente conectar un arduino duemilanove a los servos, conectar el apc220 y una bateria de 4.5v (que no le vendria mal un poco mas de voltaje)
aqui una fotillo del coche:
para montar el mando lo mismo.. conectar el apc220 y el nunchuck al arduino mega y luego colocar un portapilas debajo del arduino.
la velocidad del coche se controla con la inclinacion del mando, y la direccion con el joystick
aqui dejo el link para descargar los codigos.
pensaba que seria mas facil de controlar que con el mando original pero los *******! hay que tener mucho pulso para regular la velocidad ya que funciona con el acelerometro z del mando y luego el joystick no me da tanta precision como pensaba :S pero por lo menos es un proyecto entretenido sencillo.. y original.
el control del coche a sido facil, ya que la direccion y admision de gasolina se controlan los dos con servos, a sido simplemente conectar un arduino duemilanove a los servos, conectar el apc220 y una bateria de 4.5v (que no le vendria mal un poco mas de voltaje)
aqui una fotillo del coche:
la velocidad del coche se controla con la inclinacion del mando, y la direccion con el joystick
video jugeteando un poquillo...
lunes, 19 de diciembre de 2011
video base robot RC y nuevo codigo (control via tcp)
aqui podeis ver el video controlando el coche normalmente:
y aqui usandolo via tcp
como veis hay un retardo en el video en el que lo controlo via tcp, no se si podre arreglar ese lag mejorando el codigo o algo, admito sugerencias ^^
en el coche he cambiado la pila de 9v por una bateria de 4.5V y una bateria de 1600 mah, por lo demas no ha cambiado nada mas( ni si quiera el codigo).
En cuanto tenga algo de soltura con el eagle pcb, preparare una shield para no tener que andar siempre montando y desmontando el circuito en la protoboard cuando quiera usar la base... espero que sea dentro de no mucho :P
los nuevos codigos podeis descargarlos de aqui.
y aqui usandolo via tcp
como veis hay un retardo en el video en el que lo controlo via tcp, no se si podre arreglar ese lag mejorando el codigo o algo, admito sugerencias ^^
en el coche he cambiado la pila de 9v por una bateria de 4.5V y una bateria de 1600 mah, por lo demas no ha cambiado nada mas( ni si quiera el codigo).
En cuanto tenga algo de soltura con el eagle pcb, preparare una shield para no tener que andar siempre montando y desmontando el circuito en la protoboard cuando quiera usar la base... espero que sea dentro de no mucho :P
los nuevos codigos podeis descargarlos de aqui.
Suscribirse a:
Entradas (Atom)