前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【IoT迷你赛】硬件小白跳坑记

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

原创
作者头像
小强--前端开发
修改2019-08-28 09:21:51
8550
修改2019-08-28 09:21:51
举报
文章被收录于专栏:腾讯云IoT腾讯云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解决了设备通信联网的一大问题,接下来可以尽情折腾了~~

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、TencentOS_tiny简介
  • 二、跳坑实践
  • 三、调试跑通
  • 四、一些总结
相关产品与服务
TencentOS Server
TencentOS Server 是腾讯云推出的 Linux 操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云 CVM 全规格实例上,包括黑石物理服务器2.0。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档