sábado, 14 de junio de 2014

Respuesta lenta en IDE de Arduino

Si como yo, estan experimentando problemas de lentitud al abrir los menus del ide de arduino, este problema me aparecio de repente y pense que el problema habia sido alguna librería pero despues de investigar en la web encontre la siguiente nota, que me fué de mucha utilidad:

Slow Response Arduino IDE in Windows

Arduino IDE TOOLS menu is very slow


The following syndromes appear when using a computer with Bluetooth turned on:
  • Arduino IDE takes 30 seconds to start up
  • While other menus are fine, clicking on the “TOOLS” menu, it hangs for another 20 seconds
This problem is caused by the auto-scanning COM ports feature of the Arduino IDE. It gets confused when a Bluetooth COM port is present. To fix this problem, follow the steps below
1. Close all opened Arduino IDE
2. Go to the Arduino IDE directory, e.g. c:\arduino-1.0.1, instead of deleting the rxtxSerial.dll file, rename it to “rxtxSerial_original.dll”


3. Download, unzip and place this rxtxSerial.dll file to the directory





This is a common problem and it is discussed in this thread of the Arduino Forums.


Reproducido de: http://www.hobbyist.co.nz/?q=slow-response-arduino-ide-in-windows

jueves, 24 de abril de 2014

Banana pi: frutas al poder!

Aceptémoslo ponerle nombre de fruta a un producto tecnológico parece una buena idea, y si la raspberry pi ha logrado el éxito que tiene, porqué no seguir la tendencia y diseñar una tarjeta con mejores prestaciones y nombrarla banana pi.

Banana pi es un producto de origen chino, hasta donde se logra ver, aunque no encontre mucha información disponible, pero promete mejorar la experiencia de la raspberry pi con un procesador dual-core y el doble de memoria ram, se encuentra disponible en los sitios de subasta chinos a un precio que ronda los $50usd y se parece mucho a una plataforma que ya tiene un poco mas de tiempo en el mercado que es la cubieboard, de hecho comparten el mismo procesador Allwinner A20 CPU (Dual core).


La presentación de banana pi es similar en dimensiones y distribución a la raspberry pi, pero con algunas prestaciones extras:

Como se puede ver, tenemos lo mejor de ambos mundos: la potencia de la cubieboard empaquetada en un envase de tamaño raspberry pi, en mi experiencia personal la raspberry es un buen producto pero no cubrió mis expectativas como pc de escritorio, aún usando una tarjeta SD de clase 10, los tiempos de espera entre procesos son muy largos, espero que con la banana pi logre una mejor experiencia, según los distribuidores está preparada para ejecutar sin problemas linux ubuntu y android así que se puede usar para muchos proyectos grandiosos a un precio que justifica la inversión, en mi caso particular estoy considerando linux ubuntu precisamente como soporte para la plataforma ROS (Robotic operating system) y trabajar en el desarrollo de un vehiculo movil autónomo, en cuando ponga mis manos sobre la tarjeta comenzaré a reportar mis hallazgos, un saludo.

@tecnotinker

martes, 8 de abril de 2014

Graficar con arduino y processing

Para este tutorial usamos un sensor de temperatura LM35 tomando su lectura en la entrada A0 del arduino, el circuito es el siguiente:


Con el siguiente sketch de arduino enviamos las lecturas de la temperatura al monitor serial cada 100ms aproximadamente:

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

int valpwm;
float valtemp;

// the loop routine runs over and over again forever:
void loop() {
  int sensorValue = analogRead(A0); 

  valtemp = (sensorValue*500.00)/1023.00;
  delay(1); 
  Serial.println(valtemp);
  delay(100);
  
}


El resultado del monitor serial son los valores de la temperatura capturados por el arduino, a continuación procedemos a crear el sketch en processing que nos permitira graficar estos valores en algo más atractivo:

// Graphing sketch


 // This program takes ASCII-encoded strings
 // from the serial port at 9600 baud and graphs them. It expects values in the
 // range 0 to 1023, followed by a newline, or newline and carriage return

 // Created 20 Apr 2005
 // Updated 18 Jan 2008
 // by Tom Igoe
 // This example code is in the public domain.

 import processing.serial.*;

 Serial myPort;        // The serial port
 int xPos = 1;         // horizontal position of the graph

 void setup () {
 // set the window size:
 size(800, 600);        

 // List all the available serial ports
 println(Serial.list());
 // I know that the first port in the serial list on my mac
 // is always my  Arduino, so I open Serial.list()[0].
 // Open whatever port is the one you're using.
 myPort = new Serial(this, Serial.list()[0], 9600);
 // don't generate a serialEvent() unless you get a newline character:
 myPort.bufferUntil('\n');
 // set inital background:
 background(0);
 textSize(32);
 }
 void draw () {
 // everything happens in the serialEvent()
 }

 float x1 = 0;
 float x2;
 float y1;
 float y2 = height / 2;


void escalax(){
  
}


void serialEvent (Serial myPort) {
 // get the ASCII string:
 String inString = myPort.readStringUntil('\n');

 if (inString != null) {
   // trim off any whitespace:
   inString = trim(inString);
   // convert to an int and map to the screen height:
   float inByte = float(inString); 
   
   fill(0);
   rect(0, 0, 100, 100);
   fill(204, 102, 0);
   text(inString, 10, 80); 
   inByte = map(inByte, 0, 70, 0, height);

   // draw the line:
   stroke(204);
   line(xPos - 10, y1, xPos, y2);
   
   y1 = y2;
   y2 = height - inByte;

   // at the edge of the screen, go back to the beginning:
   if (xPos >= width) {
   xPos = 0;
   background(0); 
 } 
 else {
   // increment the horizontal position:
   xPos+=10;
   }
 }
}
Tomando el ejemplo desde la página de arduino, lo modificamos un poco y voila, el resultado es una gráfica de la temperatura que se actualiza y se refresca automáticamente tomando las lecturas del arduino:



Con algunas mejoras podemos agregar una escala de grados y de tiempo, así como graficar algunos otros valores simultaneamente, pero eso será materia de otro tutorial, saludos y hasta la próxima!



miércoles, 12 de febrero de 2014

Cuando dos o más Arduinos son capaces de comunicarse entre sí inalámbricamente a través de una distancia se abren muchas posibilidades :
  • Sensores remotos de temperatura , presión , alarmas, mucho más 
  • Robot de control y vigilancia de 50 pies a 2.000 pies de distancia
  • Control remoto y monitorización de los edificios cercanos o en el vecindario
  • Vehículos autónomos de todo tipo
Los módulos de radio de 2,4 GHz están basados en el integrado Nordic Semiconductor nRF24L01 + chip. El Nordic nRF24L01 + integra un transceptor completo RF de 2,4 GHz , sintetizador de RF , y la lógica de banda base incluyendo el acelerador de protocolo de hardware que soporta una interfaz SPI de alta velocidad para el controlador de la aplicación ShockBurst mejorada ™ . 
Rango efectivo
El rango es muy dependiente de la situación y es mucho mayor con la línea de visión clara al aire libre que en el interior con efectos de paredes y los materiales . La distancia habitual citado por los distintos proveedores para el módulo de la versión de baja potencia con el chip único es de 200 pies o 100 metros. Este es para el espacio abierto entre las unidades que operan a 250KHz . En interiores, el alcance será menor debido a las paredes , etc .
La sugerencia es que probemos dos unidades en sus ubicaciones reales antes de tomar una decisión. Hay unidades de largo alcance con un preamplificador de potencia para la antena y una antena externa . El alcance entre la unidad de largo alcance y varias unidades de bajo consumo será mejor que entre dos unidades de baja potencia. Cada situación es un poco diferente y difícil de conseguir una distancia efectiva sin pruebas reales .
No es obligatorio, pero si se quiere entender más acerca de lo que puede hacer con este "pequeño " radio, descargue la hoja de datos . En particular, es posible que desee leer las páginas 7-8-9 ( Para Información y Operaciones) y página 39 ( MultiCeiver , que permite a 6 Arduinos hablar con un Arduino primario de una manera organizada ) . Afortunadamente los productos a nivel de placa que se encargará de muchos de los detalles físicos y eléctricos y la impedancia de adaptación de antena , etc , y ya existe una biblioteca que se ocupa de un montón de inicialización de registro y los detalles operativos . Hay módulos adicionales que se suman los amplificadores de potencia del transmisor y del receptor preamplificadores para distancias más largas .. hasta 1 km ( 3000 pies).
Version de corto alcance
radio1                radio2
Versión de largo alcance
radio3           radio 4

Estos transceptores utilizan la banda sin licencia de 2,4 GHz (IMC) como muchos routers WiFi, algunos teléfonos inalámbricos, etc. y permiten tanto enviar y recibir datos en "paquetes" de varios bytes a la vez. Cuentan con una función de corrección de errores y de reenvío, y es posible tener una unidad de comunicación con hasta 6 unidades similares al mismo tiempo.
Estas unidades de bajo costo increíbles tienen mucha complejidad interna, pero algunas personas con talento han escrito bibliotecas para Arduino y PIC que los hacen fáciles para nosotros. Tenemos otras páginas que muestran ejemplos y apuntan a las bibliotecas de software libre que pueda necesitar. Todos ellos utilizan el mismo pinout como se muestra en el siguiente diagrama, que es una vista desde arriba (Correction!):
     

La conexión de los pines del transceptor al arduino es la siguiente:
pines
NOTA: Estas unidades de conexión VCC debe ir a 3.3V, no a 5.0V, aunque el propio Arduino puede funcionar a 5,0 V y la señal va a estar bien. Arduino UNO y versiones anteriores tienen una salida de 3,3 V que se puede ejecutar la versión de baja potencia de estos módulos, pero las versiones de alta potencia deben tener un suministro de 3,3 V por separado.
Hay dos (o más) buenas bibliotecas de software para nRF24L01 y tenemos páginas que muestran algunos ejemplos:
Descargas
Este es mi versión de un sistema de envio de mensajes entre 2 arduinos, está basado en uno de los ejemplos de la biblioteca y permite intercambiar mensajes de texto entre 2 arduinos:
Descargar Si tienen preguntas o comentarios me los pueden enviar a mi correo info@tecnotinker.com o al twitter @tecnotinker