设备连接
GY30感光器有五个引脚,GND、ADD、SDA、SCL、VCC
GND连接树莓派GND
VCC连接树莓派5V
SDA 连接树莓派的SDA
SCL连接树莓派的SCL
引脚号的对应,使用的是Raspberry 4B
启动IIC
- 在终端输入
sudo raspi-config
- 选择Interfacing Options–>I2C–>是–>确定–>Finish
python程序
- 在终端输入
sudo i2cdetect -y 1
出现23
- 代码名称GY30,代码目的获取GY30的信息并保存到桌面tmp_data.txt,树莓派自带Python的编译环境,保存到树莓派桌面(Desktop)。
#import RPi.GPIO as GPIO
#这个是python3代码
import time
import smbus
#print(smbus.version)
bus = smbus.SMBus(1)
addr = 0x23
while(1):
data = bus.read_i2c_block_data(addr, 0x11)
light= str((data[1] + (256 * data[0])) / 1.2)
print("Luminosity " + str((data[1] + (256 * data[0])) / 1.2) + "lx")
tmp_output = open('/home/pi/Desktop/tmp_data.txt', mode='w')
tmp_output.write(light)
tmp_output.writelines('\n')
time.sleep(1)
- 代码名称onenet-GY30,上传数据到Onenet,保存到树莓派桌面(Desktop)
#这个是python2代码
import urllib2
import json
import time
import datetime
APIKEY = '你的API'
def http_put():
file = open("/home/pi/Desktop/tmp_data.txt")
light = float(file.read())
CurTime = datetime.datetime.now()
url = 'http://api.heclouds.com/devices/你的设备ID/datapoints'
values = {'datastreams': [{"id": "temp", "datapoints": [{"at": CurTime.isoformat(), "value": light}]}]}
print
"the time is: %s" % CurTime.isoformat()
print
"The upload temperature value is: %.3f" % light
jdata = json.dumps(values)
print
jdata
request = urllib2.Request(url, jdata)
request.add_header('api-key', APIKEY)
request.get_method = lambda: 'POST'
request = urllib2.urlopen(request)
return request.read()
while True:
time.sleep(1)
resp = http_put()
print
"OneNET result:\n %s" % resp
- 打开两个终端
cd Desktop
sudo python3 GY30
GY30.py是python3语言写的sudo python onenet-GY30
onenet-GY30.py是python2语言写的
这张图片是GY30代码再python编译器里运行,onenet-GY30的代码在终端运行