“元”, 凡数之始称为“元”,指开始,是第一的意思;“旦”,象形字,上面的“日”代表太阳,下面的“一”代表地平线,即太阳从地平线上冉冉升起,象征一日的开始。元旦又称“三元”,即岁之元、月之元、时之元。中国是世界上第12个开始新年的国家。距2019元旦还有3天的时间。通过DF创客社区的“太阳能电源管理模块”和掌控板制作一个“测量2019元旦光照时间项目”,和大家分享一下吧。
一、测量时间思路框架
步骤1 通过微功率太阳能电源管理模块SPV105为掌控板提供电源;
步骤2 利用掌控板上光线传感器获取学校一天光线值,掌控板ESP32芯片的无线功能和MQTT协议,将信息上传物联网服务器上;
步骤3 通过移动OneNET平台实时转发、存储、被第三方设备(电脑、平板、手机)调用;
步骤4 在OneNETt平台以网站形式展示数据,通过掌控板上OLED显示屏显示光照值。
二、.在OneNET平台创建MQTT协议的产品并添加设备
1、建立中国移动物联网服务器,具体方法参看帖子:接入OneNET云平台
2、OneNET平台官网地址:https://open.iot.10086.cn/,登录成功进入开发者中心,添加一个新产品。
3、记住设备ID、产品ID、产品APIKey
三、掌控板上光线传感器搜集信息 1.掌控板刷入最新固件MicroPython v1.0.1-dirty on 2018-11-23
四、编写代码
代码
from umqtt.simple import MQTTClient
from mpython import *
import time,network, json
from machine import Timer
# MQTT服务器地址域名为:183.230.40.39,不变
SERVER = "XXXXXXX"
#设备ID
CLIENT_ID = "XXXXXXX"
#产品ID
username='XXXXXXX'
#产品APIKey:
password='XXXXXXX'
# wifi参数
SSID="XXXXXXX" #wifi名称
PASSWORD="XXXXXXX" #密码
wlan=None
message = {'datastreams':[
{
'id':'sound',
'datapoints':[{'value':0}]
},
{
'id':'light',
'datapoints':[{'value':0}]
}
]}
tim1 = Timer(1) # 创建定时器
# 本函数实现wifi连接 规定动作,不要修改
def ConnectWifi(ssid=SSID,passwd=PASSWORD):
global wlan
wlan=network.WLAN(network.STA_IF)
wlan.active(True)
wlan.disconnect()
wlan.connect(ssid,passwd)
while(wlan.ifconfig()[0]=='0.0.0.0'):
time.sleep(1)
print('Connecting to network...')
print('WiFi Connection Successful,Network Config:%s' %str(wlan.ifconfig()))
def pubdata(data):
j_d = json.dumps(data)
j_l = len(j_d)
arr = bytearray(j_l + 3)
arr[0] = 1 # publish数据类型为json
arr[1] = int(j_l / 256) # json数据长度 高位字节
arr[2] = j_l % 256 # json数据长度 低位字节
arr[3:] = j_d.encode('ascii') # json数据
return arr
def publishSenser():
#message['datastreams'][0]['datapoints'][0]['value']=sound.read()
message['datastreams'][1]['datapoints'][0]['value']=light.read()
c.publish('$dp',pubdata(message)) #publish报文上传数据点
print('publish message:',message)
display.fill(0)
display.DispChar("物联网连接成功!", 20, 16)
display.DispChar("大美二高光线值:", 10, 32)
display.DispChar(str(light.read()), 98, 32)
display.show()
#连接物联网IOT,上传Mython-light
ConnectWifi()
c = MQTTClient(CLIENT_ID, SERVER, 6002, username, password)
c.connect()
print("Connected to %s" % SERVER)
tim1.init(period=1000, mode=Timer.PERIODIC, callback=lambda _: publishSenser()) # 每隔一秒(可以改变)上传数据点
五、电路图
说明:掌控板电源分别有外置USB电源和有外置锂电池提供,
1、太阳能充电:: 白天通过太阳能电池板对锂电池充电, A端太阳能板→ SPV105→B端锂电池;
2、USB充电: 晚上通过USB外置电源对锂电池充电 D端外置电源→ SPV105→B端锂电池;
3、锂电池供电: 锂电池为掌控板提供电池 B端锂电池→SPV105→C端掌控板
材料清单
- 微功率太阳能电源管理模块 X1
- 单晶硅太阳能板2V 160mA 50*50mm X1
- 红色单芯导线15cm 24AWG X2
- 黑色单芯导线15cm 24AWG X2
- PH2.0-2P公头电源线15cm X1
- XH2.54-2Pin排针 X2
- 掌控板V1.0 X1
- 1000mAh 3.7V锂电池 X1
- PH2.0 JST 连接线 X1
- Micro USB X1
rzegkly2019.01.02
光线传感器显示数值必须重启才能更新,谢谢
ASH腻2019.01.02
支持! 貌似步骤的内容显示还有bug,我反馈给技术人员。