Controlling Arduino via USB using PHP
As stated before, I have rather good experience in PHP programming. I’ve done many different things using PHP, starting from simple web applications to huge social network applications with tens of thousands simultaneous online users. I’ve also done some PHP applications that are used as servers for other software and even some basic desktop applications. With all that in mind, today I wanted to play around with Arduino and PHP. This might sound sick, but if you’ve read the previous posts, then you already know that PHP is my language of choice. The reason for this is simple - PHP can do a lot more than simple web applications. And if I know PHP, why do I need to learn other languages? Besides that I believe there are other programmers just like me - learning Arduino and having PHP experience in background. Actually the following post will work with any other programming language that can access serial ports.
Ok, enough talking, let’s get to the task. Actually I would like to divide it into two separate tasks:
- Learn to communicate to Arduino using PHP
- Write some PHP code and Arduino program that works together
Tying together the Arduino and PHP
Normally you can’t access directly USB devices, like you were able to connect and directly write some data to printer or COM port. For most USB devices you need to have a special driver that does the dirty job for you. Fortunately the designers of Arduino have done the USB connection a bit different way. Actually Arduino is working via USB serial controller, which means that you can open the USB port and write data directly to Arduino just like you can do it with LPT, and COM ports. If we remember our task, it’s exactly what we need - directly write some data from PHP to Arduino and process them on the board without any driver usage.
The next thing is to get the PHP to write some data to the USB port. When you open up your Arduino development environment, you can see which “com” port the Arduino board is connected to. Check once more the number of the port used and look at the code below:
$fp =fopen("com3", "w");
fwrite($fp, chr(1));
flose($fp);The communication with COM ports from PHP is straightforward. Just open a file pointer to “comX” where X is the number of COM port and write some data to that COM port. In the example above we connect to COM3 port and write integer number 1 to that port (notice the chr(x) function - we can’t just directly write the integer, we need to encode it into ASCII character and chr() does just that).
So far so good. Now we need to decide what we will send to Arduino board and what we will want the arduino board to do for us. I guess the most easy task to check our skills is just passing random integers to arduino board, using one diode, which will flash one or two times depending on the parity of number passed.
Ok, let’s build up some Arduino code:
int ledPin = 13;
int usbnumber = 0;
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
usbnumber = Serial.read();
}
if (usbnumber > 0) {
if (usbnumber % 2 == 0){
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
delay(300);
}else{
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
delay(300);
digitalWrite(ledPin, HIGH);
delay(300);
digitalWrite(ledPin, LOW);
delay(300);
}
usbnumber = 0;
}
}Ok, let’s get through this step by step. Just before the setup function we define that we will use the 13th pin for output, besides that we initialize the variable that will hold the number read from USB. In the setup function we define that the ledPin will be used for output and we start up the USB connection. In the main loop we check whether there is any data available on the USB connection. If there is any data, we just read the data to our usbnumber variable. Later on the loop we check if the number read is greater than zero. If it is, we know that some data has been read. We check if the number can be divided by two. If the remainder is zero, we flash the LED one time. If the reminder is 1 (the number we have read can not be divided by two), we flash the led two times.
Ok, so far with the arduino code. Let’s build some more PHP code:
$fp =fopen("com3", "w");
while (true){
$i = ($i + 1) % 10;
echo "Wrote $i - the LED should flash (" . ($i % 2 == 0 ? ' 1 time ' : '2 times ') . ")\r\n";
fwrite($fp, chr($i));
sleep(3);
}
fclose($fp);There’s not that much of new things to talk about. Just like in the previous PHP code exmaple, this one is also opening a COM3 connection. The new part is the infinite loop, which contains the number writing to COM3 port. The code is simple - just increase the variable $i by one and take the modulus of the number. Afterwards just log some debug information to console and write the data to USB. After writing the data, just sleep for 3 seconds and repeat the loop.
Ok, the last bits of this long writeup:
- we need to upload the arduino code to our board
- we need to run the PHP code
The first one should be straightforward for everyone, just hit the appropriate button on the arduino development environment toolbar. The second one could be tricky for some people. But I’ll try to explain how I do it. Let’s pretend I’ve downloaded the Windows binary installation of PHP 5.2 and unzipped it to c:/php/. I enter the windows command line, change the directory to c:/php and type php c:/path/to/usb/php/script.php. Done! Watch the LED on the Arduino board and track the debug info on the commandline window.
Summary
I’ve learned some new things:
- Basic controlling of Arduino board from PHP
- The only pin that you can use without resistors is the 13th pin. To use leds directly with other pins you should use resistors. As you might imagine I don’t have any at the moment, so I’m just sticking to using just the 13th pin. I guess I’ll need to get more into the electronics stuff to achieve something more.
Well, that’s it for now. If there are any questions/comments - the comment form is below. I guess I’ll try to check out the Serial interface a bit deeper to find out what exactly you can do with the USB port. And one of the next things to find out will be the option to write functions to do common things. The arduino part of this example is begging for some refactoring.
Hold on and wait for the next posts. By the way, you can use the RSS feed to read the latest posts of this blog automatically.

Buy Cialis Online
VAsjqdG Buy Cialis Online Buy Valium Cheap Ativan Ambien Xanax Buy Phentermine
Cialis
qIZdYymW Cialis Cheap Phentermine Xanax Ambien Tramadol Buy Valium
Cheap viagra
sZAtMUv Cheap viagra Xanax Ambien Buy Ativan Cheap Valium Phentermine
Phentermine
FZlbFsNi Phentermine Buy Tramadol Cheapest Cialis Cheap Ambien Valium Cheap Xanax
Buy Ambien
QwFIyteU Buy Ambien Xanax Buy Phentermine Viagra Ativan Cheap Valium
Cheap Xanax
QPNphDQS Cheap Xanax Viagra Cheap Phentermine Cheap Valium Buy Ambien Cigarettes
Buy Valium
LHyneQRj Buy Valium Buy Ativan Ultram Cheap Cigarettes Buy Viagra online Buy Cialis
Viagra
FiCtYIa Viagra Buy Ativan Xanax Buy Valium Cheap Phentermine
Ativan
PIucxbY Ativan Buy Cialis Cheap viagra Breitling Watches Phentermine
Xanax
kFpMtu Xanax Buy Cialis Buy Phentermine Cheap viagra Cheap Ativan Cheap Ambien
Viagra
LTXZbg Viagra Cialis Xanax Buy Valium Klonopin
Cheap Phentermine
rsJOBd Cheap Phentermine Cheap viagra Buy Tramadol Valium Klonopin
Cheap Phentermine
FJmStY Cheap Phentermine Buy Ambien Buy Cialis Online Xanax Tramadol
Cialis
TRgnxpmn Cialis Cheapest Cialis Buy Cialis Cheap viagra Buy Phentermine Viagra
Ambien
xVXYDxna Ambien Valium Buy Viagra Buy Ativan Xanax Cheap Phentermine
cheers!
GrEeTiNgS, oussem! vendita cialis vendita viagra online ordina cialis ordina cialis in Italia acquista kamagra acquista kamagra generico compra lasix generico compra cialis acquista propecia generico compra viagra in Italia acquista lasix generico vendita cialis generico acquista lasix in Italia compra viagra online acquista kamagra ordina levitra compra accutane generico ordina levitra online ordina viagra generico acquista levitra online compra viagra
cheers!
GrEeTiNgS, tranta! vendita cialis vendita viagra online ordina cialis ordina cialis generico acquista kamagra in Italia acquista kamagra compra lasix online compra cialis in Italia acquista propecia generico compra viagra in Italia acquista lasix generico vendita cialis generico acquista lasix in Italia compra viagra online acquista kamagra online ordina levitra online compra accutane ordina levitra generico ordina viagra acquista levitra generico compra viagra generico
bonjour!
GrEeTiNgS, nsvent! compra kamagra online compra lasix in Italia compra levitra online ordina cialis in Italia vendita levitra in Italia compra lasix online compra cialis online ordina viagra in Italia acquista propecia acquista accutane acquista lasix in Italia vendita viagra in Italia acquista lasix acquista levitra online compra accutane in Italia acquista propecia online vendita viagra generico ordina viagra in Italia compra lasix in Italia compra viagra online compra propecia generico
bonjour!
GrEeTiNgS, bleshi! compra kamagra compra lasix online compra levitra online ordina cialis online vendita levitra online compra lasix compra cialis ordina viagra generico acquista propecia in Italia acquista accutane generico acquista lasix online vendita viagra generico acquista lasix acquista levitra online compra accutane generico acquista propecia vendita viagra in Italia ordina viagra generico compra lasix in Italia compra viagra generico compra propecia online
greetings, terrans!
GrEeTiNgS, pecosa! compra propecia compra viagra generico acquista lasix in Italia acquista kamagra online compra accutane generico vendita propecia generico compra levitra online vendita kamagra generico acquista accutane generico compra viagra in Italia compra lasix generico ordina propecia generico ordina cialis vendita levitra in Italia vendita viagra ordina kamagra in Italia acquista levitra generico ordina levitra generico vendita propecia in Italia ordina kamagra generico vendita kamagra generico
bonjour!
GrEeTiNgS, squesi! compra propecia compra viagra generico acquista lasix generico acquista kamagra compra accutane vendita propecia generico compra levitra vendita kamagra generico acquista accutane online compra viagra compra lasix generico ordina propecia in Italia ordina cialis online vendita levitra vendita viagra online ordina kamagra in Italia acquista levitra in Italia ordina levitra vendita propecia ordina kamagra online vendita kamagra in Italia
hi!
GrEeTiNgS, ionary! compra kamagra acquista viagra online acquista viagra generico vendita propecia in Italia acquista accutane compra accutane ordina propecia generico compra viagra in Italia vendita propecia vendita levitra online acquista propecia generico ordina viagra ordina viagra in Italia vendita levitra online acquista cialis generico acquista accutane in Italia compra cialis compra accutane acquista viagra in Italia vendita levitra in Italia compra cialis online
bonjour!
GrEeTiNgS, uadbac! compra kamagra generico acquista viagra acquista viagra in Italia vendita propecia acquista accutane in Italia compra accutane generico ordina propecia online compra viagra generico vendita propecia vendita levitra in Italia acquista propecia in Italia ordina viagra in Italia ordina viagra in Italia vendita levitra generico acquista cialis generico acquista accutane online compra cialis in Italia compra accutane in Italia acquista viagra online vendita levitra compra cialis generico
cheers!
GrEeTiNgS, ughrad! acquista kamagra generico acquista cialis online vendita viagra generico compra propecia online compra viagra online compra propecia ordina propecia online acquista viagra in Italia ordina kamagra ordina levitra online ordina propecia online vendita cialis acquista cialis compra levitra generico acquista accutane in Italia vendita cialis in Italia ordina kamagra online acquista viagra generico vendita kamagra in Italia vendita kamagra in Italia compra levitra generico
cheers!
GrEeTiNgS, lkyrra! acquista kamagra in Italia acquista cialis vendita viagra generico compra propecia generico compra viagra in Italia compra propecia generico ordina propecia generico acquista viagra in Italia ordina kamagra online ordina levitra generico ordina propecia in Italia vendita cialis generico acquista cialis online compra levitra in Italia acquista accutane in Italia vendita cialis ordina kamagra online acquista viagra in Italia vendita kamagra in Italia vendita kamagra online compra levitra
greetings, terrans!
GrEeTiNgS, arlpon! ordina kamagra generico acquista cialis compra viagra vendita propecia online ordina levitra in Italia compra viagra generico vendita cialis in Italia compra kamagra generico acquista propecia in Italia compra propecia compra cialis generico compra kamagra generico compra kamagra acquista cialis ordina propecia online ordina cialis online vendita kamagra online acquista levitra generico acquista levitra compra levitra in Italia compra viagra
bonjour!
GrEeTiNgS, enouse! ordina kamagra generico acquista cialis online compra viagra generico vendita propecia online ordina levitra compra viagra vendita cialis online compra kamagra online acquista propecia online compra propecia generico compra cialis in Italia compra kamagra generico compra kamagra online acquista cialis in Italia ordina propecia online ordina cialis online vendita kamagra generico acquista levitra online acquista levitra in Italia compra levitra generico compra viagra online
Xanax
viOgfOc Xanax Phentermine Ativan Buy Cialis Online Cheap Valium Buy Ambien
hi!
GrEeTiNgS, pirryw! compra viagra in Italia acquista viagra online vendita viagra in Italia ordina viagra compra cialis in Italia acquista cialis vendita cialis generico ordina cialis generico compra levitra in Italia acquista levitra vendita levitra online ordina levitra generico compra kamagra generico acquista kamagra in Italia vendita kamagra generico ordina kamagra online compra propecia online
hi!
GrEeTiNgS, vastra! compra viagra online acquista viagra generico vendita viagra online ordina viagra generico compra cialis generico acquista cialis in Italia vendita cialis in Italia ordina cialis online compra levitra generico acquista levitra generico vendita levitra online ordina levitra compra kamagra online acquista kamagra generico vendita kamagra ordina kamagra online compra propecia
Cialis
LbJrarSi Cialis Cheap Ativan Cheap Ambien Buy Phentermine Cheap Valium Xanax
Cheap Ambien
SdGNOy Cheap Ambien Viagra Phentermine Cheap Valium Cheap Ativan Buy Xanax
Viagra
SCEOjOf Viagra Cheapest Cialis Cheap viagra Viagra Buy Cialis Online
hi!
GrEeTiNgS, ntorid! prilosec in Italia deltasone online protonix generico risperdal in Italia altace in Italia microzide in Italia wellbutrin online nizoral generico aricept generico suprax in Italia imitrex in Italia floxin online cymbalta online aldactone zetia macrobid generico cafergot generico adoxa generico glucovance in Italia lopressor generico avandia generico
bonjour!
GrEeTiNgS, beater! prilosec generico deltasone online protonix in Italia risperdal online altace in Italia microzide in Italia wellbutrin nizoral online aricept in Italia suprax imitrex online floxin in Italia cymbalta in Italia aldactone generico zetia in Italia macrobid generico cafergot adoxa online glucovance generico lopressor avandia in Italia
hello!
GrEeTiNgS, laylet! flomax online keflex in Italia tenormin diovan online celebrex online atarax online effexor in Italia bactrim in Italia vigora online lyrica generico lipitor online cleocin online actos generico proscar online indocin sumycin generico vermox online veetids in Italia seroquel generico vasotec
hello!
GrEeTiNgS, mphaws! flomax online keflex generico tenormin generico diovan online celebrex in Italia atarax effexor generico bactrim generico vigora in Italia lyrica generico lipitor cleocin in Italia actos in Italia proscar online indocin online sumycin generico vermox generico veetids seroquel vasotec generico
cheers!
GrEeTiNgS, fookit! nexium online strattera in Italia flagyl in Italia neurontin generico plavix generico revia online levaquin online cytotec generico lexapro online lovegra online celexa online premarin in Italia norvasc generico albenza intagra inderal online lioresal in Italia glucophage zyprexa online singulair online
hi!
GrEeTiNgS, oospic! nexium generico strattera generico flagyl in Italia neurontin generico plavix online revia generico levaquin cytotec generico lexapro lovegra celexa in Italia premarin in Italia norvasc in Italia albenza intagra in Italia inderal generico lioresal online glucophage in Italia zyprexa generico singulair
hi!
GrEeTiNgS, erotio! compra viagra generico compra cialis cialis in Italia viagra generico viagra generico cialis generico levitra generico propecia online zithromax accutane online amoxil in Italia clomid in Italia lasix cipro online nolvadex silagra generico zovirax in Italia paxil generico diflucan in Italia synthroid in Italia
bonjour!
GrEeTiNgS, altzsc! compra viagra online compra cialis online cialis generico viagra online viagra online cialis levitra online propecia in Italia zithromax generico accutane in Italia amoxil clomid in Italia lasix in Italia cipro in Italia nolvadex silagra online zovirax online paxil generico diflucan synthroid online
Pall Mall cigarettes
hpJXrfJo Pall Mall cigarettes Cigarettes buy Winston cigarettes Buy Marlboro Lucky Strike cigarettes Buy Camel
Buy Xanax
VSNxpnr Buy Xanax Buy Tramadol Phentermine Buy Valium Ativan Ambien
Buy Viagra
EWWzaDpU Buy Viagra Buy Viagra Cialis Viagra Cialis
Phentermine
PUiOLj Phentermine Cialis Valium Buy Ambien Buy Ativan
Buy Tramadol
ZZGGgF Buy Tramadol Alprazolam Ambien Viagra Adipex
zMPtGLNz
YCigOVgX zMPtGLNz
ltjIyF
DPvvmqk ltjIyF
cheers!
GrEeTiNgS, elfary! ordina kamagra ordina levitra generico compra kamagra online acquista kamagra online vendita kamagra online ordina kamagra in Italia compra viagra generico acquista viagra generico vendita viagra online ordina viagra generico compra cialis generico acquista cialis generico vendita cialis online ordina cialis generico compra levitra in Italia acquista levitra online vendita levitra in Italia ordina levitra in Italia compra kamagra generico acquista kamagra vendita kamagra generico
bonjour!
GrEeTiNgS, iciler! ordina kamagra ordina levitra generico compra kamagra online acquista kamagra in Italia vendita kamagra online ordina kamagra online compra viagra online acquista viagra vendita viagra online ordina viagra in Italia compra cialis acquista cialis generico vendita cialis ordina cialis in Italia compra levitra online acquista levitra online vendita levitra in Italia ordina levitra generico compra kamagra acquista kamagra in Italia vendita kamagra