云平台的搭建
华为云平台开发中心
添加真实设备
标识码是NB-IOT的唯一标识,可以参考调测NB-IoT模组
创建一个工程,设置波特率为9600,在发送区输入“AT+CGSN=1”,加回车换行,点击“发送”,接收区返回的值“+CGSN:”后面的86开头数字为IMEI号;
(开发板拨到PC)
确定之后即可创建完成。
把开关拨到MCU(之前拨到PC),然后按复位键,等待连接上云平台。
如果之前将相关代码烧录进开发板,那么可以在历史数据看到相关数据
出现0的原因是我之前没有把扩展版插上,插上就可以获取到数据了。(关于几秒传一次还得看相关代码才知道)
智慧路灯相关说明
[tr]指令功能代码注释[/tr]
通电 | 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口,那么就能够实现了。
由原理图可以知道,LED灯(路灯)连接在PB9上,那么只要初始化PB9即可。
读取数据
如果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("rn******************************Lux Value is %drn", (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 AT指令(BC95)
AT+CIMI //检查SIM卡是否读卡成功
AT+CSQ //第一个数为99说明还没有信号,模块在搜信号,第二个数一直是99
AT+CGATT?查看入网状态
刚开始买小熊派开发板,有一些问题,比如如何使用WIFI和2G模块等,先挖个坑,过几天研究透了再补上。
云平台的搭建
华为云平台开发中心
添加真实设备
标识码是NB-IOT的唯一标识,可以参考调测NB-IoT模组
创建一个工程,设置波特率为9600,在发送区输入“AT+CGSN=1”,加回车换行,点击“发送”,接收区返回的值“+CGSN:”后面的86开头数字为IMEI号;
(开发板拨到PC)
确定之后即可创建完成。
把开关拨到MCU(之前拨到PC),然后按复位键,等待连接上云平台。
如果之前将相关代码烧录进开发板,那么可以在历史数据看到相关数据
出现0的原因是我之前没有把扩展版插上,插上就可以获取到数据了。(关于几秒传一次还得看相关代码才知道)
智慧路灯相关说明
[tr]指令功能代码注释[/tr]
通电 | 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口,那么就能够实现了。
由原理图可以知道,LED灯(路灯)连接在PB9上,那么只要初始化PB9即可。
读取数据
如果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("rn******************************Lux Value is %drn", (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 AT指令(BC95)
AT+CIMI //检查SIM卡是否读卡成功
AT+CSQ //第一个数为99说明还没有信号,模块在搜信号,第二个数一直是99
AT+CGATT?查看入网状态
刚开始买小熊派开发板,有一些问题,比如如何使用WIFI和2G模块等,先挖个坑,过几天研究透了再补上。
举报