完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
在9012年,即便不知道什么是“物联网通信技术”肯定也听说过 物联网 三个字。一张图了解物联网# 2018 年 02 月 27 日我看到了这张图片,觉得很形象,还保存下来发了朋友圈。 想实现物与物的通信,并不需要多强的技术水平,只要概念清晰就可以一步一步做出来。 物与物的通信(硬件篇)# 1、物与物通信常见硬件 (1) 有线连接的硬件: 串口、CAN、网线等。 (2) 无线连接的硬件: nRF24L01、ESP8266(一种 wifi 模块)等。 与“打电话”类比,“有线硬件”就如同“固话”,“无线硬件”就如同“手机”。 不同的硬件之间有不同的物理连接(接线方式不一样),用“拨号按键”来类比不同的“物理连接方式”,就是: 固话拨号按的是实物按键。 智能手机拨号按是的屏幕(用软件实现的按键)。 2、底层通信协议(硬件驱动) 仍然与“打电话”类比,想要拨通电话就要知道对方的“电话号码”。【问】通信协议不是软件吗?为什么放到硬件篇介绍呢? 【答】有以下两个原因,分别是: 第 1 个原因: 这里说的是“底层通信协议”,比如:SPI、I2C等。这些协议的作用是: 让硬件能够正确的收发数据,而不指定数据的内容。 就如同电话号码,拨号的作用只是接通电话,建立通话双方的语音联系。并不限定双方交流的语言和内容。 硬件离开这些协议不能发挥作用,因此将“底层通信协议”划分在硬件篇介绍。 第 2 个原因: 现在很多单片机已经在“硬件层面”固化了这些协议,不需要再单独写这种底层通信协议的软件。比如:I2C就分为“硬件 I2C”和“软件模拟 I2C”。stm32 用 CubeMX 配置好“硬件 I2C”直接调用库内封装好的通信函数就行了,相当于硬件直接支持,所以这部分放在硬件篇。 物与物的通信(软件篇)# 终于到本文重中之重的大亮点了。1、软件通信协议是什么? 依然拿“打电话”类比,通过上文,我们已经有了电话、拨通了号码,下面就该交流了。 交流的基础:双方要用对方能听懂的语言,说对方能听懂的内容。放到物与物通信上,这就是软件通信协议干的事。 也就是说:软件通信协议规定了数据的排列方式。 按照指定规律排列的一串数据内容,我们称之为“通信报文”。 一个完整的软件通信协议包括: (1) 规定通信报文的格式; (2) 规定报文的编解码方法; (3) 规定报文的校验方法(校验用于保证报文传输正确性)。 2、怎样得到软件通信代码? 在我没有接触到 mavlink 之前,一直是手写通信代码,自己设计报文。 现在想来,从前真是既烧脑又没效率。 mavlink 告诉我:代码是可以生成的,不用手写,省时省力。 mavlink 告诉我:通信协议是很多飞机上都验证过的,稳定可靠。 下面我就来说说 mavlink。 mavlink# 这里,Sugar 本想写一篇《三平台(MDK5 IAR GCC)通用 mavlink 生成器出现了》的文章。介绍 mavlink 的文章,百度一搜一大把。这里 Sugar 就不多说重复内容了,下面就干捞实用的说一说。 Sugar 的《一起来做遥控车(软件架构训练三)》中使用 mavlink 做遥控信息传送,就以这个遥控的 mavlink 报文为例来讲解。 1、怎样使用三平台通用 mavlink 生成器 视频链接 2、对于想研究 mavlink 通信协议的读者,Sugar 这里做了个 QGC 插件。 视频链接 3、mavlink 1.0 与 mavlink 2.0 mavlink 1.0 升级到 mavlink 2.0,Sugar 关注过的几个变化是: (1) 扩展了 msgid,1.0 最多有 256 条 message,而 2.0 最多可达 16777216 条 message; (2) 报文长度可动态申缩(按一定规律省去 0 值传输); (3) 增加了 signature 签名,可进行报文加密; 在遥控车制作上,Sugar 选了 mavlink 1.0,原因是: (1) 遥控车使用 nRF24L01 无线通信模块,硬件限制报文长度不能超过 32 个 Byte。而 mavlink 2.0 报文有效载荷(payload)之外的字节比 mavlink 1.0 多,用 mavlink 1.0 在此更合适。 (2) 就算再怎么玩,遥控车用到的 message 数量也不会超过 256,mavlink 1.0 足足够用。 4、怎样定制自己想要的 mavlink (1) 确定要传输的数据有哪些; (2) 明确各个数据的数据类型(uint8_t、uint16_t、float 等); (3) 将数据写入 xml 文件,以遥控车为例,看下 xml 的内容: (4) 按上面视频,生成目标代码即可。 5、怎样发送 mavlink 报文 6、接收 mavlink 报文后怎样处理 PS# 本篇推文的目标读者是完全 0 基础的小白。 本篇区分讲述了“底层通信协议”和“通信报文协议”的差别,当读者跟人讨论“通信协议”时,一定要知道说的是哪个协议。 跟硬件工程师,或写偏硬件驱动类软件的工程师谈“通信协议”,多半对方会理解为“底层通信协议”,如:SPI、I2C 等。 跟纯软件工程师谈“通信协议”,多半对方会理解为“通信报文协议”。 同样叫“通信协议”的东西,可能不是一样的东西,这是汉语多意词难以避免的问题,学习时心里要清楚。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
526浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 08:29 , Processed in 0.760686 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号