Sunteți pe pagina 1din 8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek

Lunes, 30th mayo 2016

programacion
otopic

software libre

videojuegos

seguridad informatica

Social media

Instalar apache, mysql y ftp en Raspberry

Search

hardware

Wi-Fi en Raspbian-Raspberry Pi

apps

cursos

Avisos:

Quin est en lnea

Raspberry+Arduino=Raspduino
febrero 8, 2014

darkaw_remse

destacado, hardware

eventos

No hay usuarios activos


16 comments

Lo siento. El registro no est


permitido en este sitio.

Like 12peoplelikethis.SignUptoseewhatyourfriendslike.

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

Buscar

En esta ocacin 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

Nombre de usuario

Populares

Contrasea

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

Parte Arduino

Explicacion por que


usar una resistencia
de 220 ohms con leds
en 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.

Recordarme
Identifcate

Vota

Desbloquear archivos
Mac OS con terminal

Cual es tu plataforma
de videojuegos favorita?

Raspberry+Arduino=Raspduino

XBOX
Arduino - Acordeon
para programar
Codeblocks
Compilador y Entorno
C/C++
Compartir archivos de
Raspberry en red local
Raspberry por SSH

Instalar apache, mysql


y ftp en Raspberry
Instalacion Arduino

PLAYSTATION
NINTENDO
SMARTPHONE
PC
TABLET

Vote

View Results

Grupos
Nuevos | Activo | Popular

IDE Windows
Instalar Debug Token
para Blackberry
Playbook

Arduino Day
activo hace 3 meses, 1
semana

Gamers
activo hace 2 aos, 10 meses

Herramientas
Generador de contraseas:

Categorias

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

1/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek
apps

arduino

blackberry
consola windows
CURIOSIDADES
curso robotica
destacado

cursos

diseo

electronica basica
Espiritu campusero
eventos

godinezlife

hardware

Linux

mac os

modding

Moviles

nube

programacion

otopic
raspberry

seguridad informatica
Social media
software libre
Uncategorized
videojuegos

windows

Codigo del arduino:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

const int led = 13; //Declaramos el numero de pin para el led que vamos a controlar

void setup () {
pinMode(led, OUTPUT); //Declaramos el pin led=13 como salida
Serial.begin(9600); //Inicializo el puerto serial a 9600 baudios
}

void loop () {
if (Serial.available()) { //Si hay comunicacion serial
char c = Serial.read(); //Guardamos en una variable de tipo caracter lo que lea
if (c == 'H') { //Si es H (HIGH) prendemos el led
digitalWrite(led, HIGH);
} else if (c == 'L') { //Si no es H pero si es L (LOW) apagamos el led
digitalWrite(led, LOW);
}
}
}

Tutoriales

Ahora compilamos y cargamos el programa al arduino.

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

2/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek

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:
1 sudo apt-get install python-serial

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

entramos en el
1 cd raspduino

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


1 sudo nano raspduino.py

1
2
3
4
5
6
7
8
9
10
11
12
13

import serial

arduino = serial.Serial('/dev/ttyACM0',9600)

while True:
comando = raw_input('Introduce un comando: ')
arduino.write(comando)
if comando == 'H':
print('LED ENCENDIDO')
elif comando == 'L':
print('LED APAGADO')

arduino.close()#FINALIZA LA COMUNICACION

guardamos con ctrl+x

Lo que nuestro codigo anterior hace es declarar arduino con como un objeto serial, despues en un bucle innito
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:
1 sudo python raspduino.py

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.

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

3/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek

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
1 cd /var/www

creamos un directorio llamado raspduino


1 sudo mkdir raspduino

y dentro colocamos o creamos los siguientes archivos:


index.php
1
2
3
4
5
6
7
8

<!DOCTYPE html>
<html>
<head>
<title>Raspduino</title>
</head>
<body>

<formaction="prender.php">

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

4/8

30/5/2016
8
9
10
11
12
13
14
15
16
17

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek

<formaction="prender.php">
<button type="submit">Prender</button>
</form>

<form action="apagar.php">
<button type="submit">apagar</button>
</form>

</body>
</html>

prender.php
1
2
3
4

<?php
$prende= exec('sudo python enciendeled.py');
header('Location:index.php');
?>

apagar.php
1
2
3
4

<?php
$apaga = exec('sudo python apagaled.py');
header('Location:index.php');
?>

enciendeled.py
1
2
3
4
5
6
7
8

import serial
import time
arduino = serial.Serial('/dev/ttyACM0',9600)
arduino.open()
comando='H'
if comando:
arduino.write(comando)
arduino.close()

apagaled.py
1
2
3
4
5
6
7
8

import serial
import time
arduino = serial.Serial('/dev/ttyACM0',9600)
arduino.open()
comando='L'
if comando:
arduino.write(comando)
arduino.close()#FINALIZA LA COMUNICACION

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


http://ip-raspberry/raspduino tendremos

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

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

5/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek

Para solucionarlo prueben dandole permisos


sudochownRwwwdata:wwwdata/var/www

No tengo a la mano el raspberry pero este n de semana pruebo el proyecto, gracias por leernos.
Aado los archivos del proyecto para su descarga directa: https://mega.co.nz/#!6AIh1KRA!D_mt9ahvx1b9Q4ZiuCM9VuNncYoprURTBVceK5y18A
Compartelo

Twitter

LinkedIn

arduino

php

Google

python

Correo electrnico

Tumblr

Pinterest

raspberry

About 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. Sueo con tener un sitio que cobre
inteligencia propia =p
View all posts by darkaw_remse

Like

12

Twittear

Share

Related Posts
Genuino Day Taller: Hola
Mundo...

Codebender, programando
arduino en la nu...

abril 5, 2016

marzo 29, 2016

Invitacion Arduino day 2016

Compartir archivos de
Raspberry en red l...

marzo 16, 2016

abril 7, 2015

16 thoughts on Raspberry+Arduino=Raspduino
PipeChela marzo 15, 2014 at 5:03 pm - Reply
funciona muy bien, pero hay cosas que estn 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
darkaw_remse marzo 16, 2014 at 3:55 am - Reply

Author

Ya cheque tenia unos codigos que nalmente cambie, gracias por los
comentarios

darkaw_remse marzo 16, 2014 at 4:00 am - Reply

Author

El problema deben ser los permisos, dejame actualizarlo, pero es cuestion que des
permisos a la carpeta www y poner a tu user en el grupo correcto

PipeChela marzo 16, 2014 at 8:42 am - Reply


me podras dar luz acerca de eso de los permisos?
muchas gracias
yetora abril 30, 2014 at 1:42 pm - Reply
Simplemente ve a la carpeta y dale clic derecho, Propiedades, ve a la pestaa de
Seguridad, selecciona el usuario y dale los permisos que requieras, en caso de no
saber cuales dale Permitir a todos. Saludos

Lencho mayo 5, 2014 at 1:28 pm - Reply


Muchas gracias por el aporte, he seguido los pasos tal como los sugieres
pero tengo un problema con el botn prender que se genera ya que al hacer clic
me manda a otra pagina donde no se muestra nada, en cuando al botn apagar
solo logro que parpadee el led.
te agradezco me puedas ayudar en esa parte.

Eddie A. Sanchez

(@eaguilarsaa) agosto 18, 2014 at 8:12 pm - Reply

Buen dia. Realizo los pasos desde php, sin embargo solo se enciende y como que el proceso no
termina y no puedo oprimir apagar, refresco la pagina y ya no me permite apagar el led. Chrome
o safari siempre se quedan en estatus esperando a localhost. Que ser que me falla?

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

6/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek
darkaw_remse octubre 16, 2014 at 8:26 pm - Reply

Author

Hola amigo disculpa la tardanza, el archivo apagar.php debe llamar a


apagarled.py

Jess octubre 15, 2014 at 1:03 am - Reply


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);????
darkaw_remse octubre 16, 2014 at 8:24 pm - Reply

Author

Location:index.php es para que despues de ejecutar el prender.php se regrese a


index.php donde estan los botones

Carlos Omar Snchez Valdez octubre 18, 2014 at 3:20 am - Reply


de echo desde php podras 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 enva al arduino sin tener que utilizar las clases de python y es mas rpido el
tiempo de respuesta

avelas1 noviembre 11, 2014 at 7:55 am - Reply


Buenas, necesito ayuda.
Antes que nada enhorabuena por el artculo.
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 mayo 24, 2015 at 9:12 pm - Reply
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 abril 21, 2015 at 12:36 pm - Reply


Hola
He probado una y mil veces el programa python raspduino, y ningn 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 noviembre 30, 2015 at 4:33 am - Reply


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 noviembre 30, 2015 at 4:35 am - Reply
Sorry por las faltas de ortograa 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

Deja un comentario

Introduceaqutucomentario...

Ultimos miembros activos

Suscrbete al blog por correo

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

Entradas recientes

Featured Video

7/8

30/5/2016

Raspberry+Arduino=RaspduinoMorelosGeekMorelosGeek
electrnico
Genuino Day Taller: Movimiento Robot
Introduce tu correo electrnico para
suscribirte a este blog y recibir
noticaciones de nuevas entradas.
nete a otros 40 suscriptores
Direccindeemail

Genuino Day Taller: Hola Mundo

Steve Jobs vs Bill Gates. Epi...

Genuino Day Taller: Uso Monitor Serial


Codebender, programando arduino en la
nube
Twitter cumple una dcada 9 Datos
interesantes que tal vez no conocas

Suscribir

http://morelosgeek.com/2014/02/raspberryarduinoraspduino/

8/8

S-ar putea să vă placă și