基于小熊派的NB-IOT智慧路灯

云平台的搭建

华为云平台开发中心
基于小熊派的NB-IOT智慧路灯_第1张图片

基于小熊派的NB-IOT智慧路灯_第2张图片


基于小熊派的NB-IOT智慧路灯_第3张图片


基于小熊派的NB-IOT智慧路灯_第4张图片


基于小熊派的NB-IOT智慧路灯_第5张图片


基于小熊派的NB-IOT智慧路灯_第6张图片


基于小熊派的NB-IOT智慧路灯_第7张图片


基于小熊派的NB-IOT智慧路灯_第8张图片


基于小熊派的NB-IOT智慧路灯_第9张图片


添加真实设备

基于小熊派的NB-IOT智慧路灯_第10张图片
标识码是NB-IOT的唯一标识,可以参考调测NB-IoT模组
创建一个工程,设置波特率为9600,在发送区输入“AT+CGSN=1”,加回车换行,点击“发送”,接收区返回的值“+CGSN:”后面的86开头数字为IMEI号;
(开发板拨到PC)
基于小熊派的NB-IOT智慧路灯_第11张图片
确定之后即可创建完成。

在这里插入图片描述
把开关拨到MCU(之前拨到PC),然后按复位键,等待连接上云平台。

基于小熊派的NB-IOT智慧路灯_第12张图片
如果之前将相关代码烧录进开发板,那么可以在历史数据看到相关数据

基于小熊派的NB-IOT智慧路灯_第13张图片
出现0的原因是我之前没有把扩展版插上,插上就可以获取到数据了。(关于几秒传一次还得看相关代码才知道)

基于小熊派的NB-IOT智慧路灯_第14张图片




智慧路灯相关说明

指令 功能代码 注释
通电 0000_0001 等待测量指令
连续H分辨率模式 0001_0000 在1lux分辨率下开始测量,测量时间一般为120ms
连续H分辨率模式2 0001_0001 在0.5lux分辨率下开始测量,测量时间一般为120ms
连续L分辨率模式 0001_0011 在4lux分辨率下开始测量,测量时间一般为16ms
/***************************************************************
* 函数名称: Init_BH1750
* 说    明: 写命令初始化BH1750
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void Init_BH1750(void)
{
	uint8_t t_Data = 0x01;
  //I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout
	HAL_I2C_Master_Transmit(&hi2c1,BH1750_Addr,&t_Data,1,0xff);
}
/***************************************************************
* 函数名称: Start_BH1750
* 说    明: 启动BH1750
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void Start_BH1750(void)
{
	uint8_t t_Data = 0x10;
	HAL_I2C_Master_Transmit(&hi2c1,BH1750_Addr,&t_Data,1,0xff); 
}

灯的初始化也就是GPIO口的初始化,只要知道对应的GPIO口,那么就能够实现了。

基于小熊派的NB-IOT智慧路灯_第15张图片
由原理图可以知道,LED灯(路灯)连接在PB9上,那么只要初始化PB9即可。

读取数据
基于小熊派的NB-IOT智慧路灯_第16张图片
如果ADDR<0.3VCC,那么读操作是0x47,只需要通过操作该地址那么就能够读取到数据。

/***************************************************************
* 函数名称: E53_SC1_Read_Data
* 说    明: 测量光照强度
* 参    数: 无
* 返 回 值: 无
***************************************************************/
void E53_SC1_Read_Data(void)
{
	//启动BH1750
	Start_BH1750();
	HAL_Delay(180);
  //BH1750_Addr = 0x46
	HAL_I2C_Master_Receive(&hi2c1, BH1750_Addr+1,BUF,2,0xff); 
	result=BUF[0];              //读取数据
	result=(result<<8)+BUF[1];  //合成数据,即光照数据16位表示
	E53_SC1_Data.Lux=(float)(result/1.2);
  
}



数据采集

/*
    数据采集函数
*/
VOID app_data_report_collection(VOID)
{
    UINT32 uwRet = LOS_OK;
    //初始化E53_SC1
    Init_E53_SC1();
    while (1)
    {
        //读取数据
        E53_SC1_Read_Data();
        printf("\r\n******************************Lux Value is  %d\r\n", (int)E53_SC1_Data.Lux);
        LCD_ShowString(10, 200, 200, 16, 16, "Lux Value is:");
        LCD_ShowNum(140, 200, (int)E53_SC1_Data.Lux, 5, 16);
        sprintf(t_report_buf + 2, "%04X", (int)E53_SC1_Data.Lux);
        uwRet = LOS_TaskDelay(2000);
        if (uwRet != LOS_OK)
            return;
    }
}



光照值的计算

基于小熊派的NB-IOT智慧路灯_第17张图片




部分NB-IOT AT指令(BC95)

AT+CIMI //检查SIM卡是否读卡成功

基于小熊派的NB-IOT智慧路灯_第18张图片
AT+CSQ //第一个数为99说明还没有信号,模块在搜信号,第二个数一直是99
基于小熊派的NB-IOT智慧路灯_第19张图片
AT+CGATT?查看入网状态
基于小熊派的NB-IOT智慧路灯_第20张图片



刚开始买小熊派开发板,有一些问题,比如如何使用WIFI和2G模块等,先挖个坑,过几天研究透了再补上。




参考文档

BH1750—GY30程序 环境光强度传感器程序

Huawei LiteOS助力设备快速入云

物联网IoT终端设备如何选择接入协议——(TCP、UDP、MQTT、CoAP、LwM2M哪个更适合?)

BH1710_BH1750应用手册V1.0

NBIOT BC28 AT指令

NB-IoT移远BC95使用小结

你可能感兴趣的:(小熊派)