miércoles, 26 de marzo de 2014

Nokia LCD 5110.Ejemplo de Radar Gráfico

En esta entrada (como en la mayoría :) sólo voy a coger algo de código de otra fuente y ponerlo aquí con las reflexiones acerca del componente y su utilidad. Como siempre , las cosas nunca son exactamente como te las encuentras en los foros o en tutoriales. En este caso he cogido el cableado y la programación de http://muziol.com/nokialcd/. Y excepto un par de detalles, lo demá está tal cual aparece en dicho blog.


El componente en questión es el LCD Nokia 5110. Es un lcd gráfico que cuenta con librerías de ADAFRUIT (copia local de código del blog anterior, en Adafruit tb están disponibles) :

https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library https://github.com/adafruit/Adafruit-GFX-Library

Estas librerías permiten dibujar lineas, círculos e imprimir cadenas con facilidad , lo que hace de este lcd un magnífico elemento para montar encima de un vehículo robótico y que nos vaya mostrando lo que ve (sonar).


Para ello voy a utilizar tb un sonar con una librería(ultrasonic.h) para facilitar su uso: http://www.ardublog.com/library-for-arduino-ultrasonic-ranging-hc-sr04/#more-62


El programa dibuja un grid y una linea que se mueve de izquierda a derecha simulando el comportamiento de una pantalla radar. Luego dibuja un circulo relleno donde encuentre un obstáculo hasta a 51 cmd de distancia.Esta distancia es la máxima que permite la librería, pero es facilmente modificable dentro de ella en una constante que viene con explicaciones en el propio código de la misma


La imagen del circuito es la siguiente (los pines y cabreados se deducen fácilmente del código):


Como adelantaba en la introducción , las cosas no siempre funcionan a la primera y el circuito, tal cual está planteado en el blog de referencia, sobrecargaba el Arduino, haciendo que se reiniciara aparte de que se veía muy mal el dibujo. La parte del dibujo la arreglé subiendo el contraste en el código , a 60. Pero la segunda parecía tener que ver con consumo.  El LCD de Nokia se alimenta a 3,3v. Por lo que puse una resistencia desde vcc (en  Arduino uno no hace falta porque hay salida directa de 3,3v). Sin embargo la luz de fondo es muy intensa y no me parecía normal (se puede apreciar en la foto). El cableado del blog indica poner la patilla 2, light, a GND. Yo he puesto  una resistencia de 100 ohmios  a masa en este pin y ahora el sistema es estable y la imagen es más nítida.
:








El programa es el siguiente:



#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// pin 3 - Serial clock out (SCLK)    3
// pin 4 - Serial data out (DIN)      4
// pin 5 - Data/Command select (D/C)  5
// pin 7 - LCD chip select (CS)       7
// pin 6 - LCD reset (RST)            6
/*
HC-SR04 VCC -> ARDU 5V
HC-SR04 TRIG-> ARDU 11
HC-SR04 ECHO-> ARDU 12
HC-SR04 GND -> ARDU GND
*/

#include <Ultrasonic.h>
Ultrasonic ultrasonic(11,12);


Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 7, 6);

int i=0;
int dist,inv=0;
boolean stan=0;

void setup()   {
  display.begin();
  display.setContrast(60);
  display.clearDisplay();
}

void loop() {
distance();


//sweep loops
for(i=0;i<=84;i=i+2){
      if(i>0){
    display.clearDisplay();  
  display.drawLine(i-2,0,42,47,WHITE);
  display.drawLine(i,0,42,47,BLACK);
  grid();
  distance();
  } else {
   display.clearDisplay();
  display.drawLine(i,0,42,47,BLACK);
  grid();
  distance();
  }
  display.display();  
  delay(50);
}
for(i=84;i>=0;i=i-2){
   if(i>=84){
      display.clearDisplay();
  display.drawLine(i,0,42,47,BLACK);
  grid();
  distance();
  display.display();  
  delay(50);
  } else {
     display.clearDisplay();
  display.drawLine(i+2,0,42,47,WHITE);
  display.drawLine(i,0,42,47,BLACK);
  grid();
  distance();
  display.display();  
  delay(50);  
  }
}
distance();
}

void distance(){
  grid();
  display.setCursor(66,33);
  dist=ultrasonic.Ranging(CM);
  display.println(dist);
  if (dist<=5){
  display.setCursor(54,41);
  display.println("ALERT");
  }
}

void grid(){
  //function body
  display.drawLine(0,0,42,47,BLACK);
  display.drawLine (84,0,42,47,BLACK);
  display.drawCircle(42,47,5,BLACK);
  display.drawCircle(42,47,15,BLACK);
  display.drawCircle(42,47,25,BLACK);
  display.drawCircle(42,47,35,BLACK);
  display.drawCircle(42,47,45,BLACK);
  display.drawCircle(42,47,55,BLACK);
  display.fillTriangle(0,1,41,47,0,47,WHITE);
  display.fillTriangle(84,1,43,47,84,47,WHITE);
  display.drawLine(0,7,0,47,BLACK);
  display.drawLine(42,0,42,47,BLACK);
  display.drawLine(0,47,3,47,BLACK);
  display.drawLine(0,42,1,42,BLACK);
  display.drawLine(0,37,3,37,BLACK);
  display.drawLine(0,32,1,32,BLACK);
  display.drawLine(0,27,3,27,BLACK);
  display.drawLine(0,22,1,22,BLACK);
  display.drawLine(0,17,3,17,BLACK);
  display.drawLine(0,12,1,12,BLACK);
  display.drawLine(0,7,3,7,BLACK);
  display.fillCircle(42,(48-dist),2,BLACK);
}


La idea ahora es montar este dispositivo sonar encima de un servo y mostrar la linea de obstáculos que tiene enfrente el Arduino car, pero antes tengo que encontrar 5 pines libres!. La solución a este problema va a ser poner el arduino mega en el robot. Sin embargo el primer intento de este cambio no funcionó, probablemente por alguna incompatibilidad con el motorshield. Ya contaré si tiene solución.



domingo, 16 de marzo de 2014

Arduino Car I de IV: Base , controlador y montaje

Ya comenté en un post anterior(primeros pasos y intenciones) mis primeros avances en la conexión del motor al coche y un programa de ejemplo, pero he decidido dar un poco más de detalle del proceso , ya que ahora el coche cuenta con mando IR, Sonar para esquivar obstáculos , siguelíneas , buzzer y led de estado y es mejor que organice el proceso por si alguien quiere seguir mis pasos (alguno creo que es mejor no seguirlo, por que los resultados son .... ;), pero de todo se aprende, y de los fallos más )

 ,. En fin Empecemos:


Uno de los montajes más repetidos en Arduino es el coche teledirigido con sensores. Hay kits de montaje que supera ampliamente los 100 dólares y que vienen con todo preparado para empezar a montar e incluso con programas de ejemplo. Arduino tiene su propia versión  a 180€

y en España BQ, ha empezado a hincarle el diente a este mercado por 84 Euros (Robótica Educativa):



Pero yo quiero aprender en como hacerlo desde cero , asi que compré el kit que ya os he comentado en Bangood y otros componentes (ver http://arduinoleaks.blogspot.com.es/2014/01/lista-de-la-compra-para-un-coche-arduino.html )  

  • Motor Shield compatible con adafruit   en banggood                    3,1€
  • Base para el coche robótico de banggood                                 8,5€
  • Siguelineas de 5 sensores ya integrados    de DX                     3,5€
  • Sensor de distancia    banggood                                                2€
  • IR y mando banggood                                                               3,5€
  • arduino (Ya lo tenia, pero en banggood estan a )                         8,5

En total el coste es de unos 30€. Ya veremos que para algunos usos la parte que es mejorable es la base robótica, por la calidad y tipo de motores usados.






La primera parte, la del montaje de la base no está exenta de interés, ya que como es costumbre en los chinos :(, no hay instrucciones!. En fin la única parte que requiere de probar y pensar es el par de  placas de metal que parece no tener sentido hasta que se intenta montar la rueda. Una imagen vale más que mil palabras: 


Una vez montado se coloca el arduino con el motor shield encima, y lo primero que se da uno cuenta es que el portapilas impide enchufar el usb y por lo tanto programarlo. Solución temporal (para siempre ;): un trozo de corcho blanco.



Después se trata de conectar las pilas al motor shield y hacer un pequeño programa de test usando las librerías de Adafruit: http://learn.adafruit.com/adafruit-motor-shield/overview


Básicamente la librería funciona de la siguiente manera: 

Incluimos la librería (previamente la copiamos en el directorio libraries de arduino) y creamos dos instancias de motores (hay instancias con distintas velocidades y consumos, pero la versión por defecto suele valer para el caso:

 #include <AFMotor.h>
  
  AF_DCMotor motorIzq(1);
  AF_DCMotor motorDer(2);

La salida de corriente de cada motor la hemos puesto en el motor shield donde marca M1 y M2 (tb se podría haber elegido M3 y M4, pero viene mas cerca de la posición de los motores estos dos y los cables no son muy largos): 





Par mover los motores hay que asignarles una velocidad, que puede variar durante el proceso de 0 a 255, pero con ciertas limitaciones, porque por debajo de 60-70 los motores no tienen fuerza para mover el peso y sólo andan en vacío. Esto dificulta ciertos movimientos delicados como el de seguimiento de lineas (ya hablaremos de esto más adelante). Otra características es que no tienen la misma velocidad de giro y hace falta calibrarlos , así que lo habitual es poner una velocidad que compense  los dos motores. En mi caso un motor es un 90% de la velocidad máxima del otro:
   
    velocidadD=250;
    velocidadI=250*calibracion; 
    motorIzq.setSpeed(velocidadI);
    motorDer.setSpeed(velocidadD);




Para que se muevan sólo hay que decirles el sentido (este ejemplo produce un giro rápido al mover cada rueda en un sentido):


  motorIzq.run(FORWARD);
  motorDer.run(BACKWARD);

Finalmente cuanto queremos parar los motores :

   motorIzq.run(RELEASE);  
   motorDer.run(RELEASE);

Algunas consideraciones :

 - La carga de las baterías afecta a la velocidad de los motores de manera importante, por lo que no es fácil tener una velocidad de giro conocida y ello es importante para saber cuanto giramos al esquivar un obstáculo o cuando seguimos una linea. El kit trae unas arandelas radiadas para colocar en las ruedas en las que se supone que se puede colocar un medidor de velocidad.:


 Pero son de baja calidad y se rompen al ponerlas y además no tengo aún estos medidores (aunque andan en camino...).

Siguiente Post: Añadiendo lógica medidor de Distancia con Radar  Sónico y pines libres en el Shield

sábado, 1 de febrero de 2014

Primeros pasos coche arduino

La primera entrada de este blog fue una primera ejecución del motor shield y el smart car funcionado sin arduino. 

Hoy avanzamos un poquito.  Colocado arduino y el shield sobre el coche con gomas y un sensor de distancia.  El sensor va sobre los pines del shield destinado a los servos que corresponden al 9 y10 digital.

Teóricamente debería girar sólo si encuentra un obstáculo.  Cuándo está conectado a pc si funciona adecuadamente, por lo que puede ser por ruido al compartir la alimentación o por tener poco voltaje al ser 4 pilas recargables. 

lunes, 27 de enero de 2014

Lista de la compra para un coche arduino


Perdonad lo parco de las explicaciones y que no ponga muchas imágenes, espero que la información compense :)

Tengo un amigo que quiere hacer un coche siguelineas, pero ya puestos va a comprar todo el aparataje por si le dá por experimentar. Como he hecho una lista de lo que había comprado o visto en las tiendas chinas, os la dejo aquí para que sirva de referencia. Algunas de las cosas no están muy relacionadas ,las explico por si alguien no quiere usarlas.

http://www.banggood.com/Motor-Drive-Shield-L293D-For-Arduino-Duemilanove-Mega-Or-UNO-p-72855.html  8,6€

http://www.banggood.com/Keypad-Shield-Blue-Backlight-For-Arduino-Robot-LCD-1602-Board-p-79326.html  3,75€
http://www.banggood.com/Arduino-USB-Host-Shield-Compatible-Google-Android-ADK-Support-UNO-MEGA-p-90129.html  8,27€ (este no lo tengo yo)
http://www.banggood.com/HC-06-Wireless-Bluetooth-Transceiver-RF-Main-Module-Serial-For-Arduino-p-80364.html 5,3€
http://www.banggood.com/Wholesale-CMOS-VGA-OV7670-Camera-Module-Lens-640X480-SCCB-Compatible-W-Or-I2C-Interface-p-51149.html 5,34€
http://www.banggood.com/Wholesale-New-Arduino-ProtoShield-Prototype-Kit-Shield-Prototyping-With-Mini-Breadboard-p-42828.html 3€
http://www.banggood.com/2WD-Smart-Car-Chassis-Tracing-Car-With-Encoder-Battery-Box-For-Arduino-p-906309.html
http://www.banggood.com/MAX7219-Dot-Matrix-Module-DIY-Kit-SCM-Control-Module-For-Arduino-p-72178.html 1,81€
http://www.banggood.com/Wholesale-Arduino-Ultrasonic-Module-HC-SR04-Distance-Measuring-Detector-Transducer-Sensor-p-40313.html 1,79€
http://www.banggood.com/6DOF-MPU-6050-3-Axis-Gyro-With-Accelerometer-Sensor-Module-For-Arduino-p-80862.html 2,75€
http://www.banggood.com/TowerPro-SG90-Mini-Gear-Micro-Servo-9g-For-RC-Airplane-Helicopter-p-86439.html

http://www.buyincoins.com/item/36433.html  brujula mangnetica  1,87$
http://dx.com/es/p/5-channel-white-black-cable-tracking-sensor-module-for-arduino-green-157104#.UuZdtf2r2L0 10$

http://www.ebay.com/itm/Specialty-Third-Hand-Soldering-Iron-Stand-Helping-Magnifying-Tool-security-/111063749130?pt=LH_DefaultDomain_0&hash=item19dbea520a 7,37$

Los imprescindibles:


  • Motor compatible con adafruit 
  • Base para el coche robótico de banggood
  • Siguelineas de DX , una placa de 5 sensores ya integrados
  • Sensor de distancia 
  • Bluetooth
  • servo
Los opcionales:

  • Una cámara para detectar colores 
  • brujula magnetica y acelerometro para mejorar la precisión de los giros
  • Helper hand para ayudar en el soldado de piezas
  • Dot Matrix, por que es muy chulo :), para ver alguna información de estado de seguimiento de lineas o de obstáculos a simple vista sobre el coche.
  • Shield de prototipado, no se puede usar directamente en el coche, porque el shield de motores no lo permite, pero es muy útil para mantener los montajes del arduino y volver a ellos después.


viernes, 24 de enero de 2014

Led RGB

Aunque no tienen una gran dificultad iré comentando los componentes que pruebo para cuando no me acuerde o por si le pica la curiosidad a alguien acerca de que se puede hacer con un componente.


El Led RGB no son mas que 3 leds juntos , normalmente de alta luminosidad que tienen el ánodo  o el cátodo común (normalmente comparten la masa). EL efecto es que se puede reproducir cualquier color, pero la verdad es que el rojo brilla bastante menos (al menos en este que yo he probado ), por lo que los colores son siembre verde-azulados.



Ejemplo con variación de colores

El programa y esquema  es de http://arduino-guay.blogspot.com.es/2012/08/led-rainbow-con-arduino.html



/*
*  RGB Rainbow
*  Ejemplo de como hacer un led 'Rainbow' con un led RGB de
*  ánodo común Se utilizan tres salidas con la instrucción
*  'analogWrite' que produce una salida PWM para controlar
*  el brillo de cada led.
*/

// Retardo que determina la velocidad de la transicion entre
// colores
#define RETARDO 10
#define MAXBRILLO 50

// Salidas para cada color (tiene que permitir PWM).
int rojo   = 6                                ;
int verde = 5;
int azul  = 3;

/*
* Funcion para variar el valor de PWM
* Para dir =1 aumenta para dir = -1 disminuye
*/
void fade(int pin, int dir)
{
  if ( dir != 1 )
  {
    for (int i = MAXBRILLO; i >= 0; i--)
    {
      analogWrite(pin, i);
      delay(RETARDO);
    }
  }
  else
  {
    for (int i = 0; i <= MAXBRILLO; i++)
    {
      analogWrite(pin, i);
      delay(RETARDO);
    }
  }
}

/*
* Ponemos los pines como salidas , y
*/
void setup()
{
  pinMode(rojo, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(azul, OUTPUT);

  //Partimos del amarillo
  analogWrite(rojo, MAXBRILLO);
  analogWrite(verde, MAXBRILLO);
  analogWrite(azul, 0);

}

/*
* Vamos cambiando los tres colores de modo que se produce
* Un paso por todos los colores RGB y sus mezclas 2 a 2
*/
void loop()
{

  fade(verde,-1); // amarillo -> rojo
  fade(azul,1);   // rojo -> violeta
  fade(rojo,-1);  // violeta -> azul
  fade(verde,1);  // azul -> cian
  fade(azul,-1);  // cian -> verde
  fade(rojo,1);   // verde -> amarillo
}

Leds

Los leds son la forma más habitual de mostrar un estado en arduino. Los hay de varios colores, pero los más habituales son rojos y verdes. También son comunes los blancos y azules que dan mucha luminosidad. 

Los diodos leds consumen unos 2,2 voltios y 15 ma , por lo que hace falta poner una resistencia en serie que consuma los 3-3,3 voltios que quedan hasta 5,5 o probablemente se queme en unos minutos.

 Usando la formula de V=R*I, para calcular la resistencia : 3,3= R*0,015 --> R = 220 ohmios. Yo he probado con resistencias de 100 Ohmios (no tenia de 220 y poner dos en serie afea mucho ;) ) y los leds se comportan adecuadamente.

El  primer programa de prueba utiliza 10 leds para hacer efectos de flash como los de los arboles de navidad. Derivado de un programa que cogí de un kit de SainSmart)fabricante y vendedor de arduinos y componentes (Sample Code And Tutorials Download (23 Chapters Included) ).

en el video se ve un shield (PCB con pies que encaja directamente sobre arduino Uno ) de prototipado, esto permite montar un esquema con uchos componentes y dejarlo montado sin inhabilitar el arduino. Hasta que se te acaban las Bread boards y los cables ;(...

El shield es de DX.com y cuesta unos 3,5€ incluida una pequeña bread board que cabe en la zona de prototipo por si no quieres soldar y el montaje es pequeño.


int n =10; //Número de leds
int t=100; //Retardo
int m=5;//la mitad de 10 :)

void style_1(int a) //cuantas veces queremos que se repita el estilo 1
{
  int j,i;
  for(i=1;i<=a;i++){
    for(j=1;j<=n;j++)
    {
      digitalWrite(j,HIGH);
      delay(t);
    }
    for(j=n;j>=1;j--)
    {
      digitalWrite(j,LOW);
      delay(t);
    }
  }
}
void flash(int a)//cuantas veces que haga flash
{
  unsigned char j,k;
  for(k=0;k<=a;k++)
  {
    for(j=1;j<=n;j++)
      digitalWrite(j,HIGH);
    delay(t);
    for(j=1;j<=n;j++)
      digitalWrite(j,LOW);
    delay(t);
  }
}
void style_2(void) // a este no le he puesto número de repeticiones
{
  unsigned char j,k;
  k=1;
  for(j=m;j>=1;j--)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    k +=2;
  }
  k=9;
  for(j=1;j<=m;j++)
  {
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    delay(2*t);
    k -=2;
  }
}
void style_3(void)// a este no le he puesto número de repeticiones
{
  unsigned char j,k;
  k=9;
  for(j=1;j<=m;j++)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    k -=2;
  }
  k=5;
  for(j=2;j>=1;j--)
  {
    digitalWrite(j,HIGH);
    digitalWrite(j+k,HIGH);
    delay(2*t);
    digitalWrite(j,LOW);
    digitalWrite(j+k,LOW);
    k +=2;
  }
}
void setup()
{
  unsigned char i;
  for(i=1;i<=n;i++)
    pinMode(i,OUTPUT);
}
void loop()
{
  style_1(2);
  flash(1);
  style_2();
  flash(2);
  style_3();
  flash(3);
  style_2();
  flash(4);
  style_1(2);
  flash(5);
}


miércoles, 22 de enero de 2014

Acelerometro y Servo

Me ha llegado de banggood un acelerómetro 6DOF denominado MPU6050. La siglas 6DOF indican que ademas de medir la aceleración en los ejes x-y-z, tiene un giroscopio asociado a cada eje lo que permite establecer la posición del objeto y no sólo la aceleración.


Componentes y Precios:







servo TowerPro en Banggood 2,75€



 Características en Inglés: 


The MPU-6050 sensor contains a MEMS accelerometer and a MEMS gyro in a single chip.
It is very accurate, since it contains 16-bits analog to digital conversion hardware for each channel. Therefor it captures the x, y, and z channel at the same time.


Specification:

16bit AD converter-chip, 16-bit data output
Use Chip: MPU-6050

Power supply :3-5v (internal low dropout regulator)

Communication: IIC communication protocol standard

Gyro Range: ± 250 500 1000 2000 ° / s

Acceleration range: ± 2 ± 4 ± 8 ± 16g

Using Immersion Gold PCB, welding machines to ensure quality

Size: 2 x 1.6 x 0.1mm


Application:

Motion sensing games
Augmented Reality
Electronic Image Stabilization (EIS: Electronic Image Stabilization)
Optical Image Stabilization (OIS: Optical Image Stabilization)
"Zero-touch" gestures User Interface
Pedestrian navigation
Gesture shortcuts


La prueba que voy a realizar es de mero test: comprobar que el chip funciona adecuadamente. Para ello he cogido un código existente (no me acuerdo de donde ha salido :(  ). Si embargo no funciona a la primera y hay que buscar un poco por internet, finalmente en la página de arduino,hay una referencia a  GITHUB donde se encuentran las librerías:  WIre.h , I2Cdev.h y MPU6050 desarrolladas por https://github.com/jrowberg/i2cdevlib.


Para comprobar la efectividad del medidor le he conectado un servo que se mueva con el eje x del sensor y en la pala del servo he conectado un laser led que se enciende sólo cuando se mueve.

El cableado de conexión al uno es el siguiente


MPU6050_____Arduino Nano
VCC________3.3v (podría ir en 5v porque tiene un regulador interno)
GND________GND
SCL_________PinA5
SDA_________PinA4

Pins XDA, XCL, ADO y  INT on the MPU6050 no se usan en esta prueba. are not used. Los pines del servo (TowwerPro 9g) se conectan al Pin9, +5v y GND en el arduino nano.

Servo  --> Arduino
Marron --> GND
Rojo --------> +5v (no funciona con +3.3v)
Amarillo -->Pin9

Laser --> Arduino
 azul --> GND
Rojo --> Pin 13

#include <Servo.h>
#include <Wire.h>
#include <I2Cdev.h>
#include <MPU6050.h>
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
Servo myservo;
int val;
int prevVal;
void setup()
{   pinMode(13, OUTPUT);  
    Wire.begin();
    Serial.begin(38400);
    Serial.println("Initialize MPU");
    mpu.initialize();
    Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
    myservo.attach(9);
}
void loop()
{  int n=1;
    mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
    if (n>180) n= 1;
   val = map(ay, -17000, 17000, 0, 179);
    if (val != prevVal)
    {  digitalWrite(13,HIGH);
        myservo.write(val);
        prevVal = val;
    }
    delay(50);
    digitalWrite(13,LOW);
}


Fotos varias del montaje

martes, 21 de enero de 2014

Arduino Mini Pro

La placa arduino mini pro es lo más económico para proyectos semipermanentes. Esta placa tiene un atmel 328, con 1 k de ram , 16kb de flash y 512 de eprom. Las hay en versión de 5v y 3v, pero las de 3v no son fáciles de encontrar.

Las mas baratas hasta ahora las he encontrado en :

Mini Pro en Ebay a 2,08 Euros, aunque en banggood se encuentran sin problemas sobre los 3€.



A ésta cantidad hay que añadirle algo más de un euro para el usb to ttl , el programador que no viene incluido en el Pro Mini , pero que sirve para programar más de un pro mini, por lo que el gasto se prorratea por el número de pro minis que se necesiten. 

Si no se van a tener muchas instalaciones es más recomendable usar el arduino nano, que cuenta con mas memoria  (similares características al uno) y el programador incluido. El  precio en banggood es de 5,47€



Proceso de Grabación

El arduino pro mini necesita algunos pasos extras para poder ser programado desde el interfaz de arduino:

  1. - Cargar el driver para el usb to ttl de prolific pr3023 :http://prolificusa.com/pl-2303hx-driv...
  2. - Instalar programa para cambiar velocidad de usb to ttl a 115000: CoolTerm http://freeware.the-meiers.org
  3. - Cambiar tarjeta a Mini pro 5v (en mi caso)
  4. - Seleccionar puerto usb en arduino. 
  5. - Conectar vcc y gnd y los pines de tx/rx del ttl a los rx/tx invertidos como es habitual para conexiones serie.
  6. - Cargar sketch y justo cuando aparezca el mensaje del tamaño del código pulsar reset en el mini pro durante un segundo o dos y soltar
Arduino Mini pro con un programa de melodía para comprobar carga 

jueves, 16 de enero de 2014

Intenciones y primer proyecto

En este blog iré subiendo los proyectos realizados con Arduino con su código y videos demostrativos. Espero que el  nombre del blogs "leaks" , no lleve a confusiones, porque no es una web de rumores o secretos sobre la compañía ;), es porque como sucede con los blogs , al principio probablemente el flujo de entradas será constante, pero ya pronostico que se convertirá en "goteras" de vez en cuando, porque mi trabajo me suele ocupar mucho la cabeza, y estos temas de tecnología requieren cierta tranquilidad de espíritu....

Mi intención es mas tener un diario de reflexión sobre los proyectos que un tutorial en sí, ya que la mayoría de ellos serán "vilmente" copias de otros tutoriales encontrados en la red. Pero las inevitables ganas de cucharear hacen que estos proyectos evolucionen a cosas insospechadas y esas serán las que merezca la pena comentar , por si a alguien le puede servir de inspiración

  Como suele ocurrir, he empezado la casa por el tejado, montantdo un car 2wd para ponerle luego el Arduino y hacer un robot con todos sus pertechos, bluetooth, camara, sensor de distancia, siguelineas. Y eso que lo único que he hecho en el arduino es un par de proyectos derivados del led-blink. Optimista que es uno.

En fin os comento lo que he aprendido sobre esta plataforma (realmente barata), comprada en banggood por 9€, viene ya con los motores , pero sin pilas. Allí mismo he comprado el motor shield compatible con el de adafruit por 3 Euros y pico.





En adafruit he encontrado la libreíia y ejemplos y funciona a la primera.

El tema de conexionado da un poco que pensar, porque no queda claro si afecta que Arduino y el motor compartan la alimentación. Parece que mete ruido , pero en los tutoriales que he visto suelen cerrar e se ve en la figura y alimentar Arduino directamente de la entrada de baterías.



Código que incluye la libreria , mueve la rueda hacia delante y para.
#include <AFMotor.h>

            AF_DCMotor motor(2, MOTOR12_64KHZ); // create motor #2, 64KHz pwm
           
            void setup() {
              Serial.begin(9600);           // set up Serial library at 9600 bps
              Serial.println("Motor test!")    
             motor.setSpeed(200);     // set the speed to 200/255
            }
           
            void loop() {
             Serial.print("tick");
            
             motor.run(FORWARD);      // turn it on going forward
             delay(1000);
           
            
            
             Serial.print("tack");
             motor.run(RELEASE);      // stopped
             delay(1000);
}