在线时间185 小时
UID3375312
注册时间2017-6-28
NXP金币6
TA的每日心情 | 开心 2020-12-17 09:04 |
---|
签到天数: 346 天 [LV.8]以坛为家I
金牌会员
- 积分
- 1361
- 最后登录
- 2024-1-15
|
本帖最后由 一代睡神的崛起 于 2020-10-24 23:27 编辑
前些日子在中移哪里申请了一个ML302的Cat1模组,但是呢苦于没有4G卡,因此项目没来得及进展,后续有了4G卡再来给大家发布测评感想,本次呢还是用之前的骗术(ME3616高新兴IOT模组)来博观大家眼球,因为没有逐飞板子的原理图对很多引脚不是特别清楚,所以跟大家说声抱歉。
一、串口交互机制的整定
Cat1的诞生把IOT模组很大的给压了下去,在很多应用场景中无论从性能还是性价比来说都远远胜过NB,但是从轻量的数据传输中NB还是比较有应用场景的。首先,在LPC55S69上新建立一个串口,这里选用的是UART0,修改传输协议,这里笔者用的FreeRTOS操作系统来控制的。
- #define DEMO_USART USART0
- #define DEMO_USART_CLK_SRC kCLOCK_Flexcomm0
- #define DEMO_USART_CLK_FREQ CLOCK_GetFlexCommClkFreq(0U)
- #define DEMO_USART_IRQHandler FLEXCOMM0_IRQHandler
- #define DEMO_USART_IRQn FLEXCOMM0_IRQn
- /* Task priorities. */
- #define uart_task_PRIORITY (configMAX_PRIORITIES - 1)
- #define USART_NVIC_PRIO 5
- struct rtos_usart_config usart_config = {
- .baudrate = 115200,
- .parity = kUSART_ParityDisabled,
- .stopbits = kUSART_OneStopBit,
- .buffer = background_buffer,
- .buffer_size = sizeof(background_buffer),
- };
- void Uart_Init(void)
- {
- size_t n = 0;
- usart_config.srcclk = BOARD_DEBUG_UART_CLK_FREQ;
- usart_config.base = DEMO_USART;
- NVIC_SetPriority(DEMO_USART_IRQn, USART_NVIC_PRIO);
- USART_RTOS_Init(&handle, &t_handle, &usart_config);
- }
复制代码 至于端口复用也很简单,查询数据手册,发现P0_29,P0_30在功能复用模式1下就是对应的发射与接收引脚,于是修改端口复用属性。
- void BOARD_InitPins(void)
- {
- /* Enables the clock for the I/O controller.: Enable Clock. */
- CLOCK_EnableClock(kCLOCK_Iocon);
-
- const uint32_t port0_pin29_config = (/* Pin is configured as FC7_RXD_SDA_MOSI_DATA */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_INACT |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN29 (coords: 92) is configured as FC7_RXD_SDA_MOSI_DATA */
- IOCON_PinMuxSet(IOCON, 0U, 29U, port0_pin29_config);
-
- const uint32_t port0_pin30_config = (/* Pin is configured as FC7_TXD_SCL_MISO_WS */
- IOCON_PIO_FUNC1 |
- /* No addition pin function */
- IOCON_PIO_MODE_INACT |
- /* Standard mode, output slew rate control is enabled */
- IOCON_PIO_SLEW_STANDARD |
- /* Input function is not inverted */
- IOCON_PIO_INV_DI |
- /* Enables digital function */
- IOCON_PIO_DIGITAL_EN |
- /* Open drain is disabled */
- IOCON_PIO_OPENDRAIN_DI);
- /* PORT0 PIN30 (coords: 94) is configured as FC7_TXD_SCL_MISO_WS */
- IOCON_PinMuxSet(IOCON, 0U, 30U, port0_pin30_config);
- }
复制代码 这样子LPC端的串口传输就设置完成了,然后在回过头来看看传感器端的设置。
二、心率传感、地磁传感的采集
传感器选用ROHM的心率传感器(bh1790glc)和地磁传感器(bm1422agmv)展开需求开发的。首先我们了解到这两个sensor都是基于IIC通信的,因此复用的端口为I2C1,I2C2,具体代码初始化可以看笔者上个帖子,按葫芦画瓢即可。因为时间比较匆忙,来不及设计许多需求,只是把传感器的功能简单的实现了而已。如果后续还有时间可以找一个盟友写一个手机APP来对接设备。有人建议把数据通过wifi模块儿发送到云平台,后来我想了一下,觉得没有必要,因为使用定位不一样的,谁都是在时刻关注着自己的心率数据,总不可能天天背着个wifi传递数据然后再去后台查看吧,显然这是不符合逻辑的,所以我放弃了这个参考思路。最简单的思路就是APP端写个蓝牙数据交互端,与设备进行数据交互显示,从而达到在APP端时刻关注或者再由APP推送到后台,从而实现远程数据的查看。
三、MQTT或CoAP协议的沟通使能
ME3616是基于opencpu来开发的,本次选用的开发工具为VS CODE,编译链选用的GUN-GCC。根据官网的demo程序进行了修改移植,首先来看一下ME3616的外观结构。
LPC55S69通过传感器采集到的数据再利用MQTT协议传输到MQTT服务器,再推送到阿里云平台就实现了我们后台对数据的报备。MQTT服务器是我自己用MQTTFX利用局域网搭建的,能进行数据的订阅与推送,至于相关代码我放到附件里面欢迎查阅。以下就是推送过来的消息和阿里云平台上面的数据更新,MQTT服务器是每5分钟推送一次有效数据,阿里云则是收到推送数据后进行实时更新显示。这里因为涉及到不是NXP的知识,所以保留源码上传的可能性,这届观看结果吧。
这个评测也是根据笔者之前参加的一个竞赛做的主控的改变,其他的基本上都是现成的,由于阿里云试用到期没有续订,因此盗用之前的图,哈哈。本来我也想拿个OV2640和一个触摸屏来做一个视频传输的,但是苦于不知道端口,因此也被搁置了,下一章节看看有没有什么新发现,如果没有,我就给大家演示一下TrustZone、PowerDSP功能,谢谢大家!
|
|