在之前的文章中, 我们阐述了如何用C#在STM32上写第一个Hello world , 有朋友抱怨国内介绍文章, 都是一个 Hello world , 然后再也没有音讯, 写到这里我想提一下我的初心, 那就是告诉所有人C#无所不能, C#可以写单片机, 也可以写Web应用, 也可以写移动应用, 也可以写桌面应用, 又有人提到 nanoFramework 的性能问题, 这点我认为跟MicroPython 等解释型STM32应用一致的, 跟C写的 代码我认为是无法匹敌的!工作中长期使用C来写应用, 这点是公认也是非常有感触的。 那么今天我再介绍一下如何使用 nanoFramework 在STM32下面对接物联网平台IoTSharp !
一、选用开发板
这次我们选择了开发板 ST NUCLEO-F746ZG
NUCLEO-F746ZG 是ST公司推出的一款针对STM32F7系列设计的Cortex-M7 Nucleo-144开发板,支持mbed,兼容Arduino、还带有ST Zio和 ST Morpho 扩展接口,可连接微控制器的所有周边外设。
开发板基于STM32F746ZGT6设计,开发板还集成了ST-LINK/V2-1仿真下载器(但仅对外提供SWD接口),免除您另外采购仿真器或下载器的麻烦。并且具备Arduino接口,可接入 Arduino 巨大生态系统的各种 Shield 扩展板,让您能够轻松快速增加特殊功能。
之所以选择NUCLEO-F746ZG 是因为 他具有网口, 用C#在STM32上写第一个Hello world 文章中选择的开发板不具有网络功能。
二、创建应用:
如果看过用C#在STM32上写第一个Hello world 这篇文章, 我们就不必再阐述如何创建项目了, 具体demo 我已经提交到了 https://github.com/IoTSharp/IoTSharp.Edge.nanoFramework , 项目中需要引用到 nanoFramework.M2Mqtt , 我们通过他来连接 IoTSharp的 Mqtt Broker , 首先, 启动IoTSharp 项目 https://github.com/IoTSharp/IoTSharp , 启动项目https://github.com/IoTSharp/Cicada , 这里如果有所有问题, 可以到相关项目里面提问, 这里不再阐述, 我们首先在Cicada 中创建一个设备
, 复制粘贴 Token ,
在项目 oTSharp.Edge.nanoFramework 的 Program.cs 中 修改
private const string _token = "581e918118a34c9faf2b9ede8245be33";//修改合理为Tokenprivate const string BrokerAddress = "192.168.0.23";//启动IoTSharp的IP地址
三、连接并部署项目至ST NUCLEO-F746ZG
由于ST NUCLEO-F746ZG 跟之前文章不同 , 一个Micro USB线 即能跟ST-LINK连接, 又支持串口, 还能识别出来存储, 因此一根线搞定一切, 也不需要弄乌七八糟的杜邦线之类的, 因此简单很多。 按照用C#在STM32上写第一个Hello world 的方法, 我们依然需要下载他的 https://bintray.com/nfbot/nanoframework-images-community-targets/ST_NUCLEO144_F746ZG/_latestVersion 解压后, 烧写, 然后VS中Device Explorer 中就可以看到设备, 如下图:
点击VS中的启动, 来启动调试项目
启动后, 你可以看到我们的应用已经启动了, 如下图所示:
, 通过IoTSharp的客户端可以看到上传的遥测数据和客户端属性数据:
关于rpc和属性更新, 我们会在基于此项目基础上进行进一步完善。
如果有任何相关问题, 大家可以在相关项目提Issuse 或者加入QQ群: 63631741 , 共同学习, 共同进步。