Arduino Nano

Todos los Microcontroladores y sus diferentes "familias". Todo este espacio es tuyo para mostrar tu código, consultar con los que más conocen del tema y para disfrutar de estos increíbles y poderosos componentes electrónicos.

Moderador: HJ

Arduino Nano

Notapor jcristhian_1 » Sab Jul 06, 2013 1:38 pm

Arduino Nano en Ubuntu 12.04

Hoy me llego, un Arduino Nano, basado en Atmega328, es la primera vez que la uso así que para los que en algún momento se encuentren en la misma situación, dejo una lista de pasos para probarla en Ubuntu.
Imagen

Pasos para probarla en Ubuntu:
1. Instalar el entorno de Desarrollo de Arduino (Arduino IDE), lo encuentran en el Centro de Software de Ubuntu, o pueden probar:
sudo apt-get install arduino*
2. Conectarla al puerto USB
3. Verificar en un terminal que haya sido reconocida por el Sistema operativo, escribir en un terminal el comando:
lsusb
Debe aparecer algo así:
Bus 004 Device 007: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

4. Abrir Arduino IDE, y seleccionar el Menú:
Tool\Serial Port\dev\ttyUSB0
Tambien: en Tools\Board\Arduino Nano w/ Atmega328

5. En el Arduino IDE, escribir el siguiente código:


Código: Seleccionar todo
/*
 This example code is in the public domain.
 */

void setup() {
  Serial.begin(9600);
}

void loop() {
 
  Serial.print("Hola Mundo\r\n");
  delay(1000);
}


6. Compilar con: Sketch\Verifi/Compile
7. Descargar a la placa Arduino con el Boton Upload (->) y esperar que finalice la descarga.
8. Abrir el Monitor Serial de Arduino IDE en Tools\Serial Monitor , u otro que tengan instalado,configurar a 9600bps y verificar que se reciba “Hola Mundo”

Aquí una imagen de la prueba
Imagen

Todo el software necesario para trabajar con la placa viene incluido en Arduino IDE, por lo que no es necesario instalar algo adicional, tampoco se necesita un grabador.
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Re: Arduino Nano

Notapor jcristhian_1 » Sab Jul 06, 2013 3:34 pm

Aquí pongo otro ejemplo, medir temperatura con un LM35.

Código: Seleccionar todo
/*
Midiendo Temperatura con un LM35 y Arduino
 
 */

const int analogInPin = A0;  //Pin de entrada Analogica

int sensorValue = 0;        // Almacena el Valor del Canal Analogico
int outputValue = 0;        // Valor de la temperatura

void setup() {
  // Comunicacion a 9600bps
  Serial.begin(9600);
}

void loop() {
  // Leemos el Canal Analogico:
  sensorValue = analogRead(analogInPin);           
  // mapear el valor digital a la temperatura
  outputValue = map(sensorValue, 0, 1023, 0, 500); 
       

  // Imprimimos resultados
  Serial.print("temperatura = ");
  Serial.print(outputValue,DEC);
  Serial.println(" C " );
  //pausa para visualizacion
  delay(100);                     
}



Los pines de la Arduino nano, están marcados, Así que debemos conectar el LM35 asi:
Pin lm35 | Pin Arduino Nano
*Gnd | Gnd
*Vcc | 5V
*VOut | A0

Para visualizarlo acceden al Tools\Serial Monitor
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Re: Arduino Nano

Notapor jcristhian_1 » Sab Jul 06, 2013 5:05 pm

Midiendo distancias con el Sensor Ping de Parallax y Arduino Nano

Código: Seleccionar todo
const int pingPin = 11;
unsigned int duration, cms;

void setup() {
  Serial.begin(9600);
}

void loop() {
  pinMode(pingPin, OUTPUT);          // Configurar pin Arduino como salida
  digitalWrite(pingPin, LOW);        // llevar a estado Bajo por 2 us
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);       // llevar el pin a estado alto por 5us
  delayMicroseconds(5);             
  digitalWrite(pingPin, LOW);        // fin del pulso
  pinMode(pingPin, INPUT);           // Cpnfigurar pin Arduino como entrada
  duration = pulseIn(pingPin, HIGH); // medir el tiempo en usque permanece en alto la señal
  cms = duration/59;        // Convertir a cms
  Serial.print("Distancia (cm)");
  Serial.println(cms);            // mostrar resultado
 
  delay(200);                   // pausa de visualizacion
}


Conexion
Imagen

El Pin I/O del Sensor PING se conecta al Pin D11 del Arduino Nano, la tierra y la alimentación 5V se pueden tomar de Arduino nano.

Básicamente el programa hace lo siguiente:
-Lanza un pulso positivo de 5us
-Configura el pin como entrada y mide el tiempo que la señal permanece en alto, este tiempo es el mismo que demora una onda de sonido en viajar al obstáculo y retornar, como la velocidad del sonido es constante aprox. 340m/s y el tiempo medido es en us, se debe ajustar el valor para hacerlo corresponder con la distancia.
También Para probar, abrir el terminal Serial de Arduino IDE

aquí una imagen de una prueba en el terminal.
Imagen
Última edición por jcristhian_1 el Sab Jul 06, 2013 5:47 pm, editado 2 veces en total
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Re: Arduino Nano

Notapor Mario » Sab Jul 06, 2013 5:09 pm

WOW !!! :shock:

Buen trabajo Christian!
Muy buen material como para iniciarse!

Excelente aporte! Gracias ! ;)
Mario
En Servisystem, hay una sección de Montajes que puede llegar a interesarte. Hay muchas ideas útiles y montajes electrónicos para construir. No te olvides: todo lo que sea importante, también estará en el Blog.
Avatar de Usuario
Mario
Administrador del Sitio
 
Mensajes: 428
Registrado: Vie Ene 28, 2011 7:22 am
Ubicación: Principado de San Nicolás de los Arroyos

Re: Arduino Nano

Notapor jcristhian_1 » Sab Jul 06, 2013 5:40 pm

Hola Mario, bastante interesante esto de Arduino, lo que me gusta es la total integración entre todas las herramientas
de Edición de código, compilación, descarga a la placa, la terminal para pruebas y depuración, te permiten hacer todo sin salir del IDE, había empezado a usar Piklab, que también logra integrar todas las herramientas, pero justo hoy me llego la placa Arduino Nano y la he estado probando con un par de ejemplos.
Saludos.
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Re: Arduino Nano

Notapor Mario » Sab Jul 06, 2013 5:47 pm

Muy Bueno ! :ugeek:

Bienvenidos sean todos los aportes y ejemplos que puedas ensayar y experimentar!

Gracias
Mario
En Servisystem, hay una sección de Montajes que puede llegar a interesarte. Hay muchas ideas útiles y montajes electrónicos para construir. No te olvides: todo lo que sea importante, también estará en el Blog.
Avatar de Usuario
Mario
Administrador del Sitio
 
Mensajes: 428
Registrado: Vie Ene 28, 2011 7:22 am
Ubicación: Principado de San Nicolás de los Arroyos

Encender/Apagar led de arduino nano, desde el navegador

Notapor jcristhian_1 » Mar Jul 16, 2013 8:35 pm

Prender y apagar led de arduino nano.

Primero: El programa Arduino:
Código: Seleccionar todo
const int ledPin = 13; // the pin that the LED is attached to
int incomingByte;      // a variable to read incoming serial data into
 
void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pin as an output:
    Serial.println("Hello world!");
 
  pinMode(ledPin, OUTPUT);
}
 
void loop() {
  // see if there's incoming serial data:
  if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingByte = Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
        Serial.println("Encendiendo LED");
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
      Serial.println("Apagando LED");
    }
  }
}


Compilamos y descargamos el programa anterior en la arduino nano
Antes de pasar a ejecutar el programa en el navegador, podemos testearlo en la herramienta: Tools\Serial Monitor
-Enviando H, se enciende el Led del Pin13, (Arduino nano y otras versiones, ya traen este led, por lo que no es necesario colocarlo)
-Enviando L, se apaga el Led

Si todo esta correcto, podemos encender y apagar el led desde el navegador:
Antes de pasar quiero aclarar que el ejemplo lo he probado en ubuntu y lo mas probable es que corra sin problemas en varias distribuciones gnu/linux, ignoro si podría ser ejecutado directamente en windows, quiza se pueda, ya que todas las herramientas que instalaremos para probar el ejemplo, tienen version para windows.

Antes de Seguir, necesitamos:

-Python, viene por defecto en GNU/LINUX, por lo que no es necesario instalarlo
-Librería pyserial, se puede instalar desde terminal así (en Debian y derivados):
Código: Seleccionar todo
sudo apt-get install python python-serial

-Servidor Apache, para instalar desde terminal, probar lo siguiente
Código: Seleccionar todo
sudo apt-get install apache2

o en versiones anteriores de Ubuntu:
Código: Seleccionar todo
sudo aptitude install apache2

-Instalar mod_python, para ejecutar scripts python desde el navegador, pueden consultar el siguiente link http://joeljil.wordpress.com/2010/07/07/mod_python/
configuracion de mod_python
Código: Seleccionar todo
sudo gedit /etc/apache2/sites-available/default
, se abrirá un archivo de texto en Gedit, en el que hay que modificar algunas cosas:
Código: Seleccionar todo
Extracto de "default"
.
..
...
<Directory /var/www/>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride None
 Order allow,deny
 allow from all

 #AGREGAR ESTA PARTE
 #########################################
 AddHandler mod_python .py
 PythonHandler mod_python.publisher
 PythonDebug On
 #########################################

 # This directive allows us to have apache2’s default start page
 # in /apache2-default/, but still have / go to the right place
 # RedirectMatch ^/$ /apache2-default/
 </Directory>
...
..
.

Para mas información de como instalar y configurar mod_python, recurrir al link anteriormente citado.

Ahora crearemos el Script que se ejecutara en el navegador
Código: Seleccionar todo
cd /var/www/

Código: Seleccionar todo
sudo gedit script.py

Se abrirá gedit, pegaremos el sgte código, guardaremos y cerraremos:

Código: Seleccionar todo
import cgi, serial,time,sys

def fill():
   s = """\
<html><body>
<form method="get" action="./show">
<p>
Selecciona el estado del LED:
<br/>
<input type="radio" name="word" value="H" />
Encendido
<br/>
<input type="radio" name="word" value="L" />
Apagado
</p>
<p>
<input type="submit" value="Submit"</p>
</form></body></html>
"""
   return s

# Receive the Request object
def show(req):
   # The getfirst() method returns the value of the first field with the
   # name passed as the method argument
   word = req.form.getfirst('word', '')

   # Escape the user input to avoid script injection attacks
   word = cgi.escape(word)
   ser = serial.Serial('/dev/ttyUSB0', 9600)
   time.sleep(2)
   ser.write(word)
   ser.close()

   s = """\
<html><body>
<p>The submitted word was "%s"</p>
<p><a href="./fill">Submit another word!</a></p>
</body></html>
"""
   return s % word




Actualizaremos el servidor apache:
Código: Seleccionar todo
/etc/init.d/apache2 restart



Otorgar permisos de uso del puerto serie:
En el terminal pegar lo siguiente:
Código: Seleccionar todo
su
cd /dev
chmod 777 ttyUSB0


ttyUSB0, es un archivo a través del cual se accede al contenido del puerto serie (ft232 conversor usb-serie), sin embargo el nombre exacto puede variar, pero lo pueden encontrar en el menú Tools\Serial Monitor de arduino IDE

En el Navegador accederemos a http://localhost/script.py/fill, se abrira una pagina con dos "option buttons", en los cuales seleccionaremos si deseamos encender o apagar el led.

Si todo esta correcto, debe encenderse y apagarse el led, como en la prueba con Tools\Serial Monitor

Saludos, si alguien se anima a probarlo y tiene una duda que esta a mi alcance resolver, puede postearla aquí.

Por ahora el ejemplo solo se ejecuta de manera local, quizá mas adelante, me anime a darle salida a web.
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Graficando Datos Analogicos con Arduino y Python

Notapor jcristhian_1 » Dom Jul 21, 2013 12:39 am

Saludos, hoy necesitaba graficar un dato analógico, buscando, encontré la sgte web:
http://www.blendedtechnologies.com/real ... ing-python
En ella se encuentra un proyecto, para adquirir datos a través de Arduino.

La señal Analógica se debe conectar en el pin A5 de arduino, o editar el codigo para conectarlo en otro pin analogico.
Código: Seleccionar todo
/* Knock Poller
 * ----------------
 * We listen to an analog pin, sample the
 * signal and write it to the serial port.
 */

int knockSensor = 5;
byte val = 0;

void setup() {
 Serial.begin(9600);
}

void loop() {
    val = analogRead(knockSensor);
    Serial.println(val,DEC);
    delay(100);  // we have to make a delay to avoid overloading the serial port
}


Los Archivos de codigo Python se encuentran en:
https://github.com/gregpinero/ArduinoPlot

El autor dice que el programa ha sido testeado en windows xp, asi que si se instala python 2.5 (o mayor) y todas las librerías necesarias, debería correr sin problemas.
-Arduino_Monitor.py
-wx_mpl_dynamic_graph.py

Para correrlo en Linux (previamente se deben instalar las librerías pyserial y wx) es necesario editar el archivo Arduino_Monitor.py y ubicarse donde dice: port='COM4'
colocar port='/dev/ttyUSB0' (o el correspondiente al puerto serie que tiene el arduino conectado en ese momento), sera el único cambio que se debe hacer en el código, lo siguiente es guardar y copiar el programa en el directorio principal, en el terminal escribir:
python wx_mpl_dynamic_graph.py
Con eso se ejecutara el programa.

Adjunto una imagen de la prueba
Imagen
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura

Re: Arduino Nano

Notapor jcristhian_1 » Vie Ago 02, 2013 8:44 pm

En el mensaje en que mostré como Encender/Apagar led de arduino nano, desde el navegador
pues ahora usando NO-IP y apache, se puede añadir encendido remoto (a traves de internet) a ese led (y todas las variantes que se les ocurra, por ejemplo un datalogger por web, etc)

Aquí pongo lo que es NO-IP

El servicio de DNS dinámica de No-IP permite identificar tu PC con un nombre de dominio fácil de recordar, como TuNombre.no-ip.com en lugar de con un número extraño del tipo 213.171.218.201 y poder montar un servidor sin complicaciones independientemente de si tenemos o no una IP estática.


La configuración e instalación de apache, esta incluida dentro de los pasos del anterior mensaje, para la instalación y configuración de no-ip hay varios tutoriales disponibles en la web
Electrónica - Programación - Software Libre.
http://voltiosybytes.blogspot.com/
Avatar de Usuario
jcristhian_1
 
Mensajes: 103
Registrado: Mié Mar 27, 2013 12:54 am
Ubicación: Piura


Volver a Microcontroladores

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado