
VS Code 在 IoT 工程项目中的应用
时间:9月24日(周四)19:30 - 21:30git
视频回放:https://b23.tv/RkvmXvgithub
主讲嘉宾介绍
绵旗,高级电工web
熟悉模电、数电。使用过MCS-5一、 AVR、PIC、MSP430、STM八、STM3二、 EFM8等单片机,在MCU软件编程领域内探索较广。曾从事电子工程专业的实践教学工做。编程
大纲
-
一个 IoT 项目的实例展现(硬件组成介绍) -
VS Code 在该 IoT 项目实施中的应用(结合 Arduino 和 PlatformIO 两个插件,讲解 VS Code 在 IoT 项目的用法) -
IoT 项目实施前须要了解的细节( MCU 与通讯方式) -
常见 IDE 简介 -
选择 VS Code 的理由
一个 IoT 项目的实例展现
主讲人首先展现了一个 IoT 的项目。经过 Android 移动电话,实时更新 LED 与液晶显示屏 LCD 的内容。json
项目结构
首先,老师经过一个视频介绍了项目结构。微信

这个电子工程项目从硬件上来讲,由7部分组成:移动电话、LED、LCD、电源部分、LCD的对比度调整部分、芯片以及蓝牙模块。工程项目主体部分是:移动电话、LED、LCD、芯片以及蓝牙模块。核心是 ATmega328p 这个芯片。ATmega328p 所在的面包板上是一个 Arduino UNO 的最小系统,最小系统是让 ATmega328p 可以工做的最低电路配置。异步
这个最低电路配置由三部分组成:电源部分、晶体振荡器部分、重启部分。而如何讲代码或者说程序配置到芯片中呢?这即是 VS Code 参与的工做部分。在 VS Code 中,编写程序、并编译成可执行文件,最终经过另一个硬件 programmer 将程序导入到芯片中。编辑器
项目演示
接着,老师经过视频演示了Android智能电话遥控的LCD屏内容实时更新系统
。具体内容为:工具
-
LED 的开/关及在 LCD 上的状态显示; -
在 LCD 上显示一个字符串。

这个项目演示了一部 Android 移动电话,经过蓝牙模块,以蓝牙通讯的方式把信号发送给微型控制器,让微型控制器的输出端显示移动电话发送的内容。flex
LCD12864 与 UNO 接线(原理图)
物联网强调“联”字,老师认为有必要经过接线来说解一下原理。

在如上有线通讯中,使用了SPI串行外部接口
的方式。
UNO 最小系统实物照(面包板)

这个最小系统由3部分组成:
-
电源:1个稳压器 + 3个滤波电容器 -
晶体振荡器:晶体振荡器 + 2个滤波电容器,负责给芯片提供外部时钟信号 -
重启电路:上拉电阻器 + 按钮开关
咱们作物联网项目时,也要考虑这些最小系统配置。
以 ATmega328p 为例介绍 VS Code 的两个插件
Arduino 插件
值得注意的是,VS Code Arduino 与 PlatformIO 并不兼容。

在安装 Arduino 插件后,配置其路径很重要。
即使在 VS Code 中安装了插件,咱们仍是要依赖 Arduino IDE 。安装插件只是为了在 VS Code 中书写代码,其运算仍是要依赖 Arduino IDE 。
既然如此,为什么还要使用 VS Code 呢?
-
Arduino IDE 没有代码补全功能, VS Code 有。
PlatformIO 插件
主讲老师建议,若是用 Arduino 很熟了,能够考虑更换为 PlatformIO 这个插件。老师的 IoT 项目也是用 PlatformIO 作的。
PlatformIO 相比 Arduino IDE 的优点有:
-
PlatformIO 支持 800 多种芯片及板材,而 Arduino IDE 远小于此。

此外,老师建议从插件首页创建项目,以此下降软件故障率。

主讲老师强调了如上方式,在 PlatformIO 插件中查找及安装 Libray 库。

在 PlatformIO 中,还能够在上述页面中自行识别链接到计算机的串行通讯口。
实时演示

老师在视频 21:15 部分开始,实时演示了 VS Code 中 PlatformIO 的使用。

老师演示使用的编程器是 Atmel ICE ,在 VS Code 与芯片之间起到转接的做用。
常见故障:对 platformio.ini 修改
在 IoT 的配置中,出现故障很常见。

如上,为了使用 Atmel ICE ,老师在配置文件中增长了相应配置:
upload_protocol = atmelice_isp
upload flags = -e
upload port = usb
解决问题方法论
首先,老师前往 bing 检索故障代码。

在检索结果中,找到了相同的问题。如上。
最后,老师阅读了问题的讨论、相关博客,找到了缘由与解决方案:
-
Atmel ICE 在出厂时,其 usb 驱动程序是原厂提供的; -
可是想要在 VS Code 中使用 PlatformIO 插件 ,必须转换 usb 驱动程序; -
驱动程序能够在 zadig.akeo.ie 下载,在该页面有驱动程序详细的注意事项。

老师想强调的是“本身解决问题的能力”:
-
除了推荐 bing ; -
还推荐 github 上使用 issues 交流; -
还推荐 StackOverflow 检索交流; -
此外,对于 PlatformIO ,其自己也是个很是活跃的社区,也可在其上检索。
创建项目

如上,老师创建了 Atmel + UNO 创建了最小系统。
实施一个 IoT 项目前须要理解的细节
-
loT: Internet of Things -物联网 -
两个核心:“联” and “物” -
“联” - 通联 - 通讯 - communication -
"物”( MCU 的硬件选型): -
从用户(user), 也就是消费者(consumer)的角度理解: target(目标,对象) -
举例:电视机、电冰箱、洗衣机、腕表。。。
从开发者(developer), 也就是工程师(engineer)、 设计者(designer)的角度看: chip(芯片) - device(设备)。
构思一个项目前的考量
-
项目自己 - 应用场景(相似于“盈利模式") -
硬件 - 成本(cost)、环境、通讯方式
关于 MCU 芯片
-
目前主流的芯片都是基于 ARM 的 32 位机 -
部分厂家有本身的16位机:Microchip (微芯)、Texas Instruments (德州仪器) -
几乎全部的芯片厂家都起步于8位机:英飞凌(Infineon)、恩智浦(NXP)、 芯联科技(Silicon Labs)、 意法半导体(ST)、 美西(Maxim).....
物联网项目在计算机中的做用
物联网使用的是 MCU , MCU 处于计算机体系的底层,底层并不意味着其技术含量低,只是说其结构简单;比 MCU 复杂一点的是 SoC (system on a chip), SoC 是系统级芯片,比单片机复杂一点的单片机。

比较有名的 SoC 是树莓派。
再复杂一点的是 PC 了。
关于物联网特别的要提到 MCU :Espressif
。

如上为两款最有名的芯片,左边的 esp8266 内置了 wifi 功能;右边的 esp32 内置了 wifi 与蓝牙功能。这两款芯片功能强、价格低、稳定性好,知名度高,而且仍是国产芯片。
MCU 级别的经常使用通讯方式
有线:
-
UART -
SPI -
IIC
无线:
-
Bluetooth -
wifi -
Zigbee -
Ant+ -
NB-IoT -
LoWa -
RF - 443MHz、315MHz -
IrDA -
ultrasonic
UART 原理
接着老师介绍了 UART (通用异步收发传输器)原理。传输两者不分主次。
对于 usb 口,其使用的是 UART 模式。
SPI - Serial Peripheral Interface

这种方式存在“一主多从”的关系。其中,“从” slave 能够是并行的,或者是有前后关系的。
无线电频谱

老师提到了无线电频谱,注意到这里2.4G的无线电频谱对应出现了 ZigBee 、出现了 Bluetooth 蓝牙、出现了 BLE 低功耗的蓝牙、出现了 WiFi 。这意味着蓝牙、 WiFi 、 Zigbee 都是无线电通讯,只不过跟咱们一般意义上的无线电通讯相比,它们的频率更高一些而已,达到了2.4G。
这里提到频谱,为近两年出现的另外两种无线电通讯方式高影响力作铺垫:窄带IoT、劳拉。
窄带IoT、劳拉的出现背景是:现有的频谱资源很紧张,所以在硬件上想办法。
此外,主讲老师提到了:使用简单的 RF transmitter 与 receiver 模块并无问题,根据需求来就好。
老师还介绍了其余无线通讯方式:红外(已经到光谱的频域)、超声波等。
此时不得不提到“库”。别人(一般是专业厂家)将信号处理的部分的代码封装好
,便于工程师将精力集中在逻辑与功能上。
“库”就涉及到 IDE 了。
常见 IDE 简介

如上,是老师接触过的 IDE 。不少 IDE 来自硬件厂家,也有些专门制做 IDE 的企业。

起步比较早的 IDE 有 IAR 、 ARMKEIL 如上。
此外,还有有趣而不简单的 ARDUINO ,有故事的 energia.nu (The Untold History of ARDUINO)。
关于 IDE 的几个共同点
-
术业有专攻:几乎没有芯片厂家本身编写的 IDE, 要么委托专门的IDE团队改造,要么本身改装开源的 IDE 。 -
无论 IDE 的来源是什么, GCC 编译器是标配,包括 VS Code 。 -
标准完整的 IDE 要涵盖四个环节一编辑(edit)、编译(build)、 上载(program)、调试(debug)。
必需要提的物联网 IDE :RT-Thread Studio
RT-Thread Studio免 费开源,且以面向物联网的定位而出现,其核心部件从 2006 年就开始,且是国产。在上半年,已经在 6亿+ 芯片上安装。
初学者选择 VS Code 的理由
-
Arduino IDE 中没有的代码补全功能 -
经过插件能够选用比 Arduino IDE 中更多芯片型号 -
结合了 GUI 和 CLI 界面:.json 文件、 Terminal 与 CMD 对话框 -
后发优点:IDE 功能的集大成 -
品牌感召力:以 RT-Thread 为例(即使是像 RT-Thread 这样相对小一些的工具,也会及时给 VS Code 提供本身的插件。由于,这是一种专业水准的体现)。
一个可进阶步骤
-
Arduino IDE (简单,可是初学者要的功能都有) -
VS Code + Arduino -
VS Code + PlatformIO -
Atmel Studio + Atmel IDE + AVR
上述进阶步骤通过老师实践,认为有必定可行性。

点击“阅读原文”查看视频回放
本文分享自微信公众号 - VS Code 中文社区(vscodecc)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。