与Arduino Uno的chrome.serial

时间:2014-03-20 22:11:29

标签: javascript google-chrome arduino arduino-uno

我在Arduino Uno上存储信息然后,当我将Arduino插入电脑时,我想要google chrome来读取传入的串行数据()。我找到了Google的api http://developer.chrome.com/apps/serial,并认为这可以帮助我。但实际上我不知道如何使用它:D

这是我的Arduino代码可以正常工作:

//Importing libraries
#include <VirtualWire.h>
#include <stdio.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>

//Main temperature variable
float temp2;

//Measurements saving variable
int addr = 0;
int address = 0;
int tvalue =0;
int svalue;
//Function for saving data to Arduino's storage
int save_data_to_storage()
{
  EEPROM.write(addr, (temp2)*10);
  addr = addr + 1;
  if (addr == 12)
    addr = 0;
  delay(5000);
}

int save;

//Display variables
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

//Begin loops...

void setup()
{
  //Initialize serial port bitRate
  Serial.begin(9600);
  //Alarm pin
  pinMode(9, OUTPUT); 

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD For 7 seconds:
  lcd.print("BALGHI");
  delay(7000);
  lcd.clear();

  //Receiver set up
  vw_set_rx_pin(8);
  vw_rx_start();
  vw_setup(2000);
}
void loop()
{
  if (Serial.available() > 0) {
      //Display USB Connection
      lcd.clear();
      lcd.print("BALGHI");
      lcd.setCursor(0, 1);
      lcd.print("USB Connection");

      // Send the measurements values to the PC
      svalue = EEPROM.read(address);
      //Serial.write(svalue);
      Serial.println(svalue, DEC);
      address = address + 1;
      if (address == 12){
         address = 0;
      //Delete all measurements data
         /*for (int d = 0; d < 12; d++)
           EEPROM.write(d, 0);*/
      }
      delay(500);
    }

    else{ 
      //Displaying temperature
      lcd.setCursor(0, 0);
      lcd.print("Body Temperature");
      lcd.setCursor(0, 1);
      lcd.print(temp2, 1) + lcd.print(" C Degree");  

      // Get the message from the transmiter 
      uint8_t buflen = VW_MAX_MESSAGE_LEN;
      uint8_t buf[buflen];

      if(vw_get_message(buf, &buflen))
      {
         int i = 0; 
         //Convert the number to DEC
         float temp1 = (((buf[i]-48)*100+(buf[i+1]-48)*10+buf[i+2]-48));
         //Convert the number to C degrees
         temp2 = (temp1)/6.8; // k = 6.8
      }
      //store Numer
      //tvalue = (temp2, 1);

      //Alarm if Temperature is too high
      if(temp2 > 38.4) {
        digitalWrite(9, HIGH);
        delay(500);
        digitalWrite(9, LOW);
        delay(1000); 
      }
      //Or keep calm
      else {
        digitalWrite(9, LOW);
      }

      //Write the measurement data to Arduino storage
      save = save_data_to_storage();
    }
}

2 个答案:

答案 0 :(得分:0)

我已经开发了一个执行此操作的插件。它比你想要的更广泛,但你可以看到我在我的插件中如何做到这一点。

仅供参考该插件是浏览器中arduino编辑器的开头。它与服务器端应用程序耦合,该应用程序编译代码并将其返回,然后闪存到arduino。它可以读取和写入arduino所连接的串口。

您可能只对chrome扩展感兴趣,看看我是如何获取串行数据的,但是我也提供了服务器端链接

Chrome扩展程序:https://github.com/DecodedCo/ArduinoInTheBrowser

服务器端代码:https://github.com/DecodedCo/ArduinoInTheBrowserServer

答案 1 :(得分:0)

我认为这就是你所需要的:http:// www。 tigoe.com/pcomp/code/arduinowiring/1096/(从链接中删除空格)

它是关于如何使用nod.js和websockets将arduino等串行设备连接到broser的说明。 它使用express.js,socket.io和node-serialport库作为点头。

这是index页面。它加载用 P5.js 编写的client.js脚本,用于处理套接字通信。它将webSocket打开回服务器,并侦听来自服务器的事件。无论从事件中获取什么数据,它都会在内部打印到DIV。将它们保存在新的子目录/ nodeSerialServer / public中。

以下是服务器 https://github.com/tigoe/NodeExamples/blob/master/SerialToSocketIO/server.js (从链接中删除空格)< / p>

启动Web服务器并侦听public / index.html的HTTP请求,并在询问时将其提供。它还会侦听传入的webSocket请求,并打开它们。当它这样做时,它开始侦听串行事件。如果它在串口中得到回车符和换行符,它会将它发送给websocket。将其保存在/ nodeSerialServer。

要运行此命令,请将目录更改为在/ nodeSerialServer中保存它:

cd / nodeSerialServer

然后使用node运行server.js脚本。要调用此脚本,您需要在命令行中为其指定要打开的串行端口的名称,如下所示:

node server.js /dev/tty.usbportname

将您的端口名称放在上面的usbportname中。您将收到脚本启动的消息。现在打开浏览器并打开以下地址: 本地主机:8080