1,树莓派配置成IIC主机,请参阅有关资料
2,编写并上传Arduino发送信息的程序
#include <Wire.h>
#define SLAVE_ADDRESS 0x05 //此处为IIC终端机的编号,因为IIC是可以连多个从机的,用编号区分
String msg = "";
void sendData() {
Wire.write(msg.c_str());
}
void setup() {
Wire.begin(SLAVE_ADDRESS);//为IIC终端绑定编号,主机是用这个号来识别此机器的
Wire.onRequest(sendData); //绑定接受事件,似乎是主机只要读,它就会执行
}
void loop() {
msg = "noTruck";
delay(1000);
msg = "pm10=200";
delay(1000);
msg = "pm100=300";
delay(1000);
}
3.编写树莓派主机端程序
import smbus #python 的IIC库
import time
bus = smbus.SMBus(1)
address = 0x05
def readString():
bytes = bus.read_i2c_block_data(address,0,20) #从IIC设备读20个byte, 如果对方没有那么多数据,用255补齐
s= ''
for i in range(20): #转换为字符川
if bytes[i] == 255 :
break
s = s + chr(bytes[i])
return s
while True:
var = input('input 1 - 9')
str = readString()
print "receive string:", str
time.sleep(1)
4, 树莓派与Arduino的连接
RPI Arduino (Uno/Duemillanove)
--------------------------------------------
GPIO 0 (SDA) <--> Pin 4 (SDA)
GPIO 1 (SCL) <--> Pin 5 (SCL)
3.3V <----------------->3.3v
Ground <--> Ground