Go Down

Topic: Serial communication from browser (Read 3061 times) previous topic - next topic


Jun 29, 2011, 03:02 pm Last Edit: Jun 29, 2011, 03:21 pm by notexa Reason: 1
Hi everybody,

I'm trying to do the following:
I'm using a live chat application. The problem is that I'm not always looking at my monitor. To make sure I don't miss any chats I wanted to activate a flashing lamp when a chat opens.

What I've got now:
Program that talkes with Arduino through serial USB (prossessing on windows Vista), lamp connected to the Arduino through a relay. Chat window in which I can change the code (or implement an iframe if necessary).

What I still need:
A way to send serial commands (ethernet shield isn't an option) from the browser to the Arduino. It's only for 1 PC, so if I have to install software locally, that's possible.
Anybody that can point me in the right direction ?


Attached is the schema of what I'm trying to do.


You'll probably need something like a webserver running on your PC, so you can go to http://localhost/popupmessage.php (or whatever language you want).  Then your popupmessage.script can talk to the serial port.  You might get all sorts of issues with cross-site scripting blocks and stuff, but I've never tried.  There are some PHP classes that can talk to serial ports, I think.  Perhaps google it.


Thanks for the tip !
Googling for serial and php gave tons of pages, but finally found something that works :)
I used serialcomm.zip from http://missionduke.com/arduino-projects/

Leds flickering with a status update on the LCD: check, next step: connecting it to my relay.


First thought - why handle the stop button on the PC side.  Having a physical button attached to the Arduino to handle this seems far simpler and also has the additional benefit of allowing for an amusing button:


That's actually a nice idea :)
And true, the coolness factor increases 10-fold.

I currently have the following code:
Code: [Select]
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int ledPin13 = 13;                 // LED connected to digital pin 13
int incomingByte;      // a variable to read incoming serial data into
char* LCDStrings[]={"Incoming chat","Click stop flash","Alarm stopped","Have a good chat"};

void setup() {
  lcd.begin(16, 2);
  pinMode(ledPin13, OUTPUT);      // sets the digital pin as output
  Serial.begin(9600); // initialize serial communication

void loop() {
if (Serial.available() > 0) {
  incomingByte = Serial.read(); // read the oldest byte in the serial buffer

  while (incomingByte == 48) {
    digitalWrite(ledPin13, HIGH);   // sets the LED on
    digitalWrite(ledPin13, LOW);   // sets the LED on
    if (Serial.available() > 0) {
      incomingByte = Serial.read(); // read the oldest byte in the serial buffer
  if (incomingByte == 177) {
    digitalWrite(ledPin13, LOW);    // sets the LED off

int PrintLCD(byte messageid) {
  lcd.setCursor(0, 0);
  lcd.setCursor(0, 1);

Is this ok ? Are there optimalizations possible ?

Go Up