Raspberry+Arduino=Raspduino 17


Dicho de otra forma la union de un microcontrolador que da la fuerza con un microprocesador que pone el cerebro.

En esta ocación y como uno de mis apuntes favoritos pasamos al objetivo del proyecto: Comunicar por puerto serial una placa arduino con el raspberry.

Vamos a controlar un LED conectado en el Arduino, este ya estará programado y conectado por USB al raspberry. Mediante Python vamos a tener una comunicacion serial y mandaremos comandos que arduino esta preparado para leer.

Para llevar un orden dividiremos en parte de arduino y parte de raspberry.

Parte Arduino

El montaje es muy sencillo solo colocaremos un led en el pin 13 y en ground, no necesitamos resistencia ya que ese pin ya tiene una resistencia montada.

raspduino_bbCodigo del arduino:


Ahora compilamos y cargamos el programa al arduino.

Captura de pantalla 2014-02-08 18.48.07

Parte Raspberry

Ahora en el raspberry previamente debemos tener instalado Raspbian y tener acceso SSH para mayor comodidad, por si se lo perdieron:

Instalando Raspbian en Raspberry – Raspberry por SSH

Raspbian ya tiene python instalado solo necesitaremos la libreria para usar la comunicacion serial. Esto lo logramos instalando facilmente desde consola con:


De aqui en adelante iremos por consola, ahora podemos crear un directorio para nuestro proyecto con

entramos en el

creamos un archivo python llamado raspduino.py con el codigo siguiente


guardamos con ctrl+x

Captura de pantalla 2014-02-08 18.56.25 Lo que nuestro codigo anterior hace es declarar arduino con como un objeto serial, despues en un bucle infinito pedimos un comando que guardamos en la variable y lo usamos en el metodo write de arduino, luego para visualizar si el comando es H o L y cierra la comunicacion.

Conectando el raspberry y el arduino

Ahora que ya tenemos todo listo podemos conectar el arduino al raspberry por usb y por consola ejecutar el archivo python con:

Ahora si colocamos H o L, prende o apaga el led ya que el programa de arduino esta esperando un comando por puerto serial y cuando compara llama a la funcion digitalWrite.

Captura de pantalla 2014-02-08 19.00.30

2014-01-26 03.46.16

EXTRA PHP

Como extra podriamos ejecutar python desde PHP, hacer un boton que prenda y otro que apague el led, necesitariamos primero tener un servidor web corriendo en el Raspberry.

Instalar apache, mysql y ftp en Raspberry

vamos a nuestra directorio www

creamos un directorio llamado raspduino

y dentro colocamos o creamos los siguientes archivos:

index.php

prender.php

apagar.php

enciendeled.py

apagaled.py

Ahora si navegamos en culaquier navegador de nuestra red en la direccion de nuestra raspberry:

http://ip-raspberry/raspduino tendremos

Raspberry-Pi-servidor-web

 

Finalmente  le di un poco de estilo con bootstrap, pero ese es otro cantar, espero les sirva el tutorial tanto como a mi y esperamos ver sus proyectos.

TIP: Algunos tendran problemas al ejecutar python desde php. Hagan algunas pruebas con los siguientes comandos:

En el directorio donde estan los archivos py

  • sudo python enciendeled.py
  • sudo python apagaled.py

Si los comandos anteriores prendieron y apagaron el led ahi no tenemos problemas.

Ahora ejecutemos php

  • sudo php prender.php
  • sudo php apagar.php

Si los comandos fueron correctos entonces no tendran problema al llamar estos desde index.php.

Si el PHP no funciono noten el error y lo que es muy probable es que apache no tenga permisos para ejecutar python. Para solucionarlo prueben dandole permisos

  • sudo chown -R www-data:www-data /var/www

No tengo a la mano el raspberry pero este fin de semana pruebo el proyecto, gracias por leernos.

Añado los archivos del proyecto para su descarga directa: https://mega.co.nz/#!6AIh1KRA!D_mt9ahvx1-b9Q4ZiuCM9VuNncYoprURTBVceK5y18A


Acerca de darkaw_remse

Administrador de poca monta, mi interes principal dentro de la informatica es la programacion web, entusiasta de las nuevas tecnologias en hardware y software. Sueño con tener un sitio que cobre inteligencia propia =p


Deja un comentario

17 ideas sobre “Raspberry+Arduino=Raspduino

  • PipeChela

    funciona muy bien, pero hay cosas que están malas en la parte de php

    en apagar.php hace referencia a index.html y debe ser a index.php

    y otra cosa es que esa parte no me hace nada en mi caso. abre la pagina, hago click en encender, pero no enciende

    • yetora

      Simplemente ve a la carpeta y dale clic derecho, Propiedades, ve a la pestaña de Seguridad, selecciona el usuario y dale los permisos que requieras, en caso de no saber cuales dale Permitir a todos. Saludos

  • Lencho

    Muchas gracias por el aporte, he seguido los pasos tal como los sugieres
    pero tengo un problema con el botón “prender” que se genera ya que al hacer clic
    me manda a otra pagina donde no se muestra nada, en cuando al botón apagar
    solo logro que parpadee el led.

    te agradezco me puedas ayudar en esa parte.

  • Jess

    Buenas noches me podrias ayudar, porque no se muestran los datos obtenidos desde enciendeled.py que se encuentra dentro del archivo prender.php.

    y para que sirve header(‘Location:index.php’);????

  • Carlos Omar Sánchez Valdez

    de echo desde php podrías poner en el exec(“echo ” $valor” >/dev/ttyACM0″);
    siempre y cuando le des permisos al puerto para ser controlado con un chmod 777 /dev/ttyACM0
    y así desde php mandas “H” o “L” y te ahorras mucho y así solo seria la clase con los dos botones y la clase que recibe y envía al arduino sin tener que utilizar las clases de python y es mas rápido el tiempo de respuesta

  • avelas1

    Buenas, necesito ayuda.
    Antes que nada enhorabuena por el artículo.
    En consola los scripts tanto en python como en php funcionan de forma correcta. El problema surge al ejecutarlos en la web. No hace nada y mirando en los log de apache no se registran errores. He dando permisos al usuario www-data con “sudo chown -R www-data:www-data /var/www”, y sigue todo igual.

    Alguna idea?

    • isi Carlos Sanchez

      es porq lo que no tienes es permisos sobre el puerto en que se monta el arduino el la rasspberry yo le di permisos globales a full con el sudho chmod 777 /dev/ttyACM0 y ya jalo incluso sin usar las clases de phyton

  • Jordi Martin

    Hola

    He probado una y mil veces el programa python raspduino, y ningún problema, pero lo que pasa es que se me queda enganchado en el bucle y solo puedo hacer escribir H y luego L y así hasta que no haga ctrl+C

    Lo que yo quiero es precisamente lo que tu propones, un programa que encienda y se ejecute, y otro que apague, cosa que resuelves con enciendeled.py y apagaled.py…..pero lo he probado una y mil veces y no hay manera de encender el led del arduino

    que es lo que hago mal??

    gracias de todos modos por el aporte

    Jordi

  • esperanzagomez

    Hola me ha parecido interesante tu proyecto he realizado las pruebas y tengo un problema cuando prende doy click en prender el led que tengo conectado al circuito solo parpadea no se queda prendido ayudame por favor no se en que estoy mal

    • esperanzagomez

      Sorry por las faltas de ortografia Hola me ha parecido interesante tu proyecto he realizado las pruebas y tengo un problema cuando doy click en prender el led que tengo conectado al circuito solo parpadea no se queda prendido ayudame por favor no se en que estoy mal

  • nemo123

    holas chicos, me estuve rascando la cabeza,trantando de solucionar el problema encendido y apagado via wed,de hecho soy novato o principiando con linux,tuve que revisar varios segmentos de apoyo este me salvo:

    http://www.peatonet.com/raspberry-pi-y-los-pines-gpio-controlando-el-led-desde-una-interfaz-web/

    primer lugar no descarguen el archivo del proyecto, de hecho tiene mas errores y esta muy desactualizada,sigan al pie con los pasos de EXTRA PHP

    otro punto prueben con TIP sudo python enciendeled.py y sudo python apagaled.py, siempre cuando esten el directorio var/www/raspduino o nombre que pusieron a carpeta de repositorio del proyecto, si sale ERROR o no enciende;y les sale Nota donde dice port esta siendo utilizada por problema arduino.open() en tal linea comando x;editen el archivo con “sudo nano enciendeled.py” si les sale el mismo error para el archivo apagaled.py ponga el mismo comando “sudo nano apagaled.py” y comente la linea “#arduino.open() “o quiten la arduino.open()

    si todo sale bien ahora tiene el problema con “sudo chown -R www-data:www-data /var/www” de hecho en si el permiso, cuando correr via wed el proyecto no sale resultado de apagado y encendido del led,pero haciendo correr desde directorio var/www/raspduino ejecutando el comando sudo php prender.php y sudo php apagar.php, sale respuesta sastifatoria por menos o solo parpadea;

    lo que tiene hacer poner este comando “sudo visudo” en la terminal y al final del archivo que abrimos añadimos a www-data como sudoer, debe quedar así.

    ……………………………………………..
    # See sudoers(5) for more information on “#include” directives:

    #includedir /etc/sudoers.d
    pi ALL=(ALL) NOPASSWD: ALL
    www-data ALL=(ALL) NOPASSWD: ALL
    …………

    le damos todos permisos www-data de apache
    despues Ctrl+x y tecla y para modificar o guardar y presionan enter

    esta listo!!! y prueben, que lo disfruten chicos,