树莓派远程监控水位传感器

先在http://www.rpilink.com网站上注册用户和下载客户端,详细见树莓派引脚远程控制

在树莓派上启动客户端,使树莓派处于在线状态。

配置好树莓派的I2C接口,使接口处于可用状态,详情见树莓派i2c配置

选择菜单“数据采集”,新建一条数据采集。

然后按照下图配置好,以下3个设备,水位传感器,arduino uno,树莓派。(可以按照自己有的设备接入)

然后点击数据查看的“实时曲线”即可看到实时数据。

将传感器放入水中,可以看到数据变化。注意该数据只是读取的模拟量,可以自行换算成水位信息。

以下是arduino的程序示例(注意直接发送int型值可能会有问题,需换成byte[] 发送):

#include
int sensorPin = A0;
int sensorValue = 0;
void setup()
{
Wire.begin(4); // join i2c bus with address #2
Wire.onReceive(receiveEvent);
Wire.onRequest(requestEvent); // register event
Serial.begin(9600);
}

void loop()
{
sensorValue = analogRead(sensorPin);
//Serial.print(sensorValue);
delay(2000);
}
byte* getByteFromInt(int value){
if(value<256){
byte re[2]={00,value};
return re;
}else{
int low=value&0xFF;
int h=value>>8;
int high=h&0xFF;
byte re[2]={high,low};
return re;
}
}
// function that executes whenever data is requested by master
// this function is registered as an event, see setup()
void requestEvent()
{
byte* bb=getByteFromInt(sensorValue);
Wire.write(bb,2);
}
void receiveEvent(int howMany)
{
while (1 < Wire.available()) // loop through all but the last
{
char c = Wire.read(); // receive byte as a character
Serial.print(c); // print the character
}
int x = Wire.read(); // receive byte as an integer
Serial.print(x); // print the integer
}


你可能感兴趣的:(树莓派)