STM32
直播中

恩可口

8年用户 720经验值
私信 关注
[问答]

如何实现基于小熊派的NB-IOT智慧路灯的设计?

如何实现基于小熊派的NB-IOT智慧路灯的设计?

回帖(1)

常匡祈

2021-12-3 10:07:55
云平台的搭建

华为云平台开发中心























































添加真实设备





标识码是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分辨率模式20001_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模块等,先挖个坑,过几天研究透了再补上。

  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分