There was an error in this gadget
There was an error in this gadget

Monday, September 28, 2009

Blinking an LED over the web, with python firmata, php, and apache.

This was done on a mac, however it should be the same or very similar on a linux system as well. Either way you need a webserver with php running, and an arduino conneceted via ftdi(usb probably) to your computer. You will also need to install the python firmata module, which is pretty straight forward, and you can get that here: http://github.com/lupeke/python-firmata.


 

This is to show you how to make an led blink, using a web page you have coded, and an arduino. Why would I show you how to do something so insignificant? The idea, is that this would be a place to start, with any sort of, over the web arduino fun. There are a list of caveats at the end.


 

Open the arduino program, then select File->Examples->Firmata->Standard Firmata. Then upload this to your board. If you have problems uploading, be sure you have the right board and serial port selected under tools. My cpanel.php file looked like this:


 


 

Top of Form

On Light


 

Bottom of Form

$password = $_POST["password"];

$light_on = $_POST["light"];

if(isset($light_on)){

$execute_light = `/Users/dustycarver/python/led2.py`;

}

?>


 


 


 


 

$execute_light should equal the pathname to your python firmata file, and should be surrounded my backticks(`), not single quotes(').Your python file should look like this:


 

#! /usr/bin/env python

"""

Simple LED blinking example using Python Firmata

Copyright (C) 2008 laboratorio (info@laboratorio.us)


 

This program is free software: you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.


 

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.


 

You should have received a copy of the GNU General Public License

along with this program. If not, see .

"""


 

from firmata import *


 

a = Arduino('/dev/tty.usbserial-FTE4W74Q')

a.pin_mode(13, firmata.OUTPUT)

a.delay(2)


 

a.digital_write(13, firmata.HIGH)

a.delay(2)

a.digital_write(13, firmata.LOW)

a.delay(2)


 


 

You can see I stole the code from the python firmata example, however I took out the loop so it would do only one sequence of blinks. Your "a =" line should have the address of your Arduino device.


 

Caveats:

Obviously this has limitations, it has to negotiate the connection with the arduino each time and that's a lot of overhead, so this is probably a good way to get started on something like turning your lights on at home before you get there, and less real time stuff. I am working on a mod_python deal, so that the connection is ever present and will submit that, if it ever becomes fruitful

No comments:

Post a Comment

There was an error in this gadget
There was an error in this gadget