本帖最后由 zhczlzhang 于 2022-9-3 21:03 编辑
@安小芯
8月收到寄来的板子,当时比较忙,只能周末来做测评,本来想用VSCODE来做开发,但是首先时间紧张,再加上N32G430是ARM Cortex™-M4F处理器,一想到又要写链接文件我就头皮发麻,耗时太长,所以就改为keil开发,我主要是评测在实际中产品开发的难易程度。
首先这块板子的主芯片N32G430主频很不错,128MHZ,这是很不错的,但是flash只有64K,对于物联网应用来说有点紧凑,尤其加上操作系统就更不行了,所以我就裸机开发,减少代码量。
本次项目实际用到的资源如下图所示。
N32G430开发板+ESP8266+自制传感器底板。
N32G430开发板:运行主程序。
ESP8266:通过它连接网络,最后实现阿里云联网。
传感器底板:cc2530芯片底板,主要为了上传温度。
各项目模块主要功能如上所示,项目主要功能是移植公司的远程温湿度采集,CC2530节点在仓库有10个以上,采集到温湿度之后,传给N32G430开发板,开发板通过ESP8266上报到阿里云。
为了不对程序进行大的改动,我直接对原有程序进行封装。
例如:
__align(8) char Usart1_TxBuff[USART1_TXBUFF_SIZE];
void u1_printf(char* fmt,...)
{
unsigned int i,length;
va_list ap;
va_start(ap,fmt);
vsprintf(Usart1_TxBuff,fmt,ap);
va_end(ap);
length=strlen((const char*)Usart1_TxBuff);
for(i = 0;i < length;i ++)
{
USART_Data_Send(USART1, Usart1_TxBuff[i]);
while (USART_Flag_Status_Get(USART1, USART_FLAG_TXDE) == RESET)
}
}
应用层函数不变,但是实现应用层的所有底部函数都替换成N32G430的固件库函数来实现,变相的不用修改代码,这样上层函数不用大改,改变底部的封装函数就好。
底部封装完毕后,上层调用ESP8266去连接网络。
连接成功后,定时上传通过cc2530获得数据。
与阿里云的连接是通过MQTT协议连接,具体实现代码可以参考官方网站。
实现上网功能后,我们可以从阿里云订阅消息,我们可以通过阿里云下发各种指令来控制开发板。如下图所示。
我们在代码中实现建立阿里云物联网。
然后在阿里云上面建立物联网。
首先打开阿里云。
以上是我建立的测试产品。
在创建产品那里,填写相应参数。
产品名称自己起就行。
我们选直连设备。
联网方式选 wifi。
数据格式用 json。
创建完成之后,点击查看,在功能定义中,定义自己的功能,我为了后续测试,定义了很多。
例如温度:
此处要注意,定义的温度数据类型要与代码中一致,代码中是双精度,这里也要是双精度。
功能配置好以后,我们需要在产品下再建立设备,因为产品是定义功能的,设备是用于连接服务器的实例。
这里就代表我自己N32G430的开发板。
添加新设备要在这里添加设备。
设备名称可以自己起,这个无所谓,备注名称填不填都行,然后点击确定,设备就建立好了。
设备建立好后,会弹出 3 个认证信息,我们称之为三元组,这个三元组就是我们登陆阿里云的钥匙,连接协议以及程序设计等等。
三元组不用复制,因为设备详情页面都有,直接关闭这个页面就行。
我们点击设备,会看到我们刚刚建立的设备,可以看到这个设备隶属于哪个产品,同一产品下,设备名不能重复,不同的产品下,设备名不冲突,这个一定要注意。
如果是首次创建,会发现我们的设备未激活,因为是刚建的设备所以肯定还没激活。
只要我们用开发板登陆一次设备,就可以将设备激活。我的已经激活过了。接下里我们点击 进入设备的详情页面。接下来我们要开始修改程序了。
在代码中,路由器代码要是自己家或公司了。
这里路由器账户密码都是写死的,后续会实现UDP自配网功能。
将这些地方的预定义都替换成自己阿里云上的三元组与订阅上报的属性。
至此所有流程结束。
实验结果可以在此查看。
总结:
开发板主频很好,很强大,除了FLash有点小,不过这些基本都没啥大毛病,可以去选择其他型号。开发过程中也没有什么大问题,基本上都是琢磨两下就解决问题了,移植难度算一般吧。很不错了。售后联系各种方式都有,群里各种回复都很及时,默默窥屏的我看到基本上是一有问题就回复,比其他厂家好很多。建议力推。此外就是市场上货量不多,这一点比较让人在意,不知道换了国民芯片会不会出现缺芯。
|