2.4G网关软件基于TencentOS Tiny,硬件基于 TencentOS Tiny CH32V_EVB RISC-V开发套件。可以实现子设备与网关,网关与服务器间数据及指令交互,实物如下图:
展示视频
2.4G RF使用的是si24r1模块,通过SPI接口与MCU连接,原理如下。
开发板板载了一个esp8266 WiFi模块,通过串口AT命令进行控制,电路如下图所示:
TFT LCD液晶显示模块用来向用户显示系统状态、参数或者要输入系统的功能。为了展示良好的视觉效果,开发板使用ST7789V 控制器驱动的TFT LCD显示屏,分辨率为240*240。该款LCD使用SPI接口,由于SPI接口空闲时引脚要上拉,因此下面的原理图中接了10k电阻上拉,然后才接入MCU引脚
此步骤在腾讯云IoT explorer 上完成项目、产品、设备创建、参数配置,为设备的接入做准备。首先需要建立一个项目,如“开发者成长激励计划”,在此项目下我们进行各种设备的开发。
这一步按照提示执行即可,注意第三步设备类型选择网关。
点击新建立的产品名称,进入以下页面,开始具体的设置产品的各种属性
这一步点击“新建自定义功能”添加网关的一些参数,如温度、电压等。以温度为例子,参数的属性x信息如下
这部分没有改动,直接下一步。
交互开发部分这里至涉及到配置小程序,有6个内容,如下:
例子:编辑面板
首先我们先新建一个设备,此设备对应这我们手中一个实际的物理设备。这里获取到关键的 设备名称 产品ID 设备秘钥,这三个参数是与服务器建立连接的关键。在此页面可以进行调试。
在创建产品页面,对网关设备进行子产品管理,如下:
在调试具体设备时,在子设备管理中执行如下,可将实际的子设备添加到网关中,进行测试
此部分主要包括以下部分:
1. void si24r1_port_init(void);//端口初始化
2. spi_init();//SPI初始化
3. void read_frame(void);//从si24r1模组中读取数据
5. void EXTI15_10_IRQHandler(void);//si24r1模组中断(中断11)
6. void receive_frame_task_entry(void * arg);//接收进程主体
const k_event_flag_t event_receive_frame;//定义了一个事件,用于收到数据后调用接收进程。
此部分直接使用的TencentOS Tiny组件,只需要注意正确填写WiFi名和密码即可。
1. while (esp8266_tencent_firmware_join_ap("WiFi名", "密码") != 0) {
printf("connect wifi... fail!\r\n");
LCD_ShowString(30,140+16+16+16,"connect wifi fail",WHITE,BLACK,16,0);
}
这部分直接调用的官方的库文件,主要是有一个结构体,只需要用好这个结构体就能满足简单应用:(遗憾的是开发板没有备用电池,断电后计数就会暂停)
1. typedef struct
{
vu8 hour;
vu8 min;
vu8 sec;
vu16 w_year;
vu8 w_month;
vu8 w_date;
vu8 week;
} _calendar_obj;
此部分大部分使用的是历程的驱动,并且参考了这篇文章可以混合显示汉字和英文的函数。该部分所使用的关键函数有
1. void LCD_ShowStringCn(u16 x,u16 y,u8 *s,u16 fc,u16 bc,u8 sizey,u8 mode);//混合显示中英文。
2. void LCD_Fill(u16 xsta,u16 ysta,u16 xend,u16 yend,u16 color);//在指定区域填充颜色
3. void drawnow_task_enty(void * arg);//建立一个专门的进程,用于刷屏(网络状态,传感器数据,时间等);
实际的运行效果如下图:
此部分的逻辑没有搞懂,虽然能够上传数据到服务器上,但是不进行具体解释,运行的效果图如下:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。