【IoT迷你赛】硬件小白跳坑记

估计很多硬件大神都已经把TencentOS_tiny玩的很6了,我这边主要以自己给自己挖坑,然后慢慢爬出来的过程做下简单的总结,也方便后面的人能不掉这些坑里。

一、TencentOS_tiny简介

先上一张官方的系统架构图,TencentOS tiny的架构可以适用于分层架构和组件化架构。从底部到顶部,TencentOS tiny包括:

  • 板级支持包(BSP):主要由SoC供应商开发和维护
  • 硬件抽象层(HAL):包括uart和flash
  • 内核:主要包括任务调度、时间管理、内存管理、功耗管理和任务间通信等功能
  • 网络:包括TCP/IP协议栈(LwIP),Socket抽象层接口,LoRaWan
  • 组件:包括文件系统、轻量级KV、MQTT和Mbedtls

简单来说,就是其在不同的层提供了各种api供用户调用,让设备能简单快速地接入到腾讯云物联网开发平台中。

之前玩树莓派的时候,遇到最大的问题就是设备如何搞定内网穿透问题,让你的设备能在外网远程控制,而TencentOS_tiny里MQTT协议的引入,很好地解决了这个问题。

二、跳坑实践

前面简单了解了TencentOS_tiny后,开始进行跳坑进程。这里主要是在硬件开发部分。

搭建完整的一个从远程控制端--腾讯云--设备硬件端。这里正常来说涉及到三端之间的通信,腾讯云作为云端的中间服务,控制端以及设备都是跟云服务器之间连接。大概示意:

三端通信

先说设备端跟服务器端的开发。首先先来进坑,硬件设备开发,这里我在调试的时候掉了两个自己挖的坑里,这里给大家简单说说:

一、

官方给的硬件盒里是有一根Micor USB线的,而我在调试的时候,刚好桌面有跟手机充电线,然后直接用那根usb线给板插上了,也正常地供电了。然后在进行串口调试的时候,发现悲催了,安装好了CH340串口驱动,也正常设置了ST-LINK,可在电脑端死活识别不出来对应的串口:

最后折腾了半天,换了一个同事的电脑,结果他那边是没有我这根坑爹的usb线的,所以我带着配套的线过去了,然后在他那边发现是可以正常识别出来的,回来把坑爹的线换了后终于正常识别了CH340的串口:

二、

在windows下进行编译的时候,一开始估计是64位的机器安装了32位的编译器,报错如下:

重新更换64位的编译器,裸机工程文件编译成功。然后按照文档进行内核移植,结果因为makefile里面格式的问题,死活编译不过:

重复检查了很多遍,最后发现是多了空格导致。

硬件知识小白,前面这些很常规的问题被折腾了大量的时间。希望后面的小白可以不掉这样的坑。

三、调试跑通

把前面的一些在大神们看来可笑的问题解决了后,终于可以正常地进行调试了。

1、硬件联网

配件里有对应的WIFI8266模块,细看一下管教标注(文档标注方向)插好,然后在tencent_cloud_sdk_explorer.c通过esp8266_join_ap插入你自己的wifi账号密码。

这里我是用自己的手机开的热点,这时候如果把编译好的代码直接下载到板子里,就能在我的手机里看到我的手机连入里一台设备,说明我的板已经成功连接wifi了。

这里我们需要将我们的板连接到腾讯云,从前面TencentOS_tiny的介绍以及前面简单的三端通信图可以看到,硬件设备跟腾讯云之间是以MQTT协议进行通信的。所以我们这里需要将下边这三个信息填好,这三个信息在你腾讯云创建的设备信息里:

这样配置好后,重新编译下载程序到开发板上,并打开串口调试信息,不出意外的话,你应该能在你的调试器中看到对应的信息,包括你的设备连接的wifi,以及连接云端服务器的信息。

2、设备调试

打开腾讯云物联网开发平台,查看你的设备,你这时候可以看到设备状态已变成在线状态,点击查看,然后到调试栏下,你可以看到右侧的数据通信日志:

点击左侧的下发指令,可以看到我们板上的OLED已经正常响应了。也能在串口调试器里看到详细的数据情况:

上面的步骤下来,我们就成功的打通了硬件设备跟腾讯云服务器之间的通信了。

远程控制端是通过https的协议跟腾讯云进行通信的,这个跟我们平时浏览器跟服务器端的通信方式类似,远程控制端以get/post的方式去请求服务器端的api接口,进行设备上报的数据的获取或者对设备进行指令下发。但这只是我们简单的一些api接口的调用方式,其实物联网云开发平台(IoT Explorer)其实是封装了更强大的服务管理层供更高级的行业级应用的各种api:

我们以最简单的微信小程序控制设备的角度来看,我们就是在小程序端调用腾讯云服务器的api接口,以post的方式进行指令下发来达到对设备的控制,并以get的方式获取设备上报的数据进行展示。由于时间的问题,这里不做详细介绍。

四、一些总结

简单的模组移植的思考,其实从硬件开发的角度,我们需要的是根据不同的外设(模组),比如光感、红外、led灯等,通过跟mcu之间的连接,通过控制不同管脚的高低电平来实现某种效果,这里需要将设备的不同状态抽象为不同的数据格式,以及事件模型。

TencentOS_tiny解决了设备通信联网的一大问题,接下来可以尽情折腾了~~

由于时间的原因,这次只是简单跑通了整个流程,后面会继续折腾更多的模组移植!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券