雷竞技注册
项目

通过控制LED来测试自定义IoT框架:骚乱(实时的东西)

2017年2月8日通过罗宾·米切尔

使用自定义框架(RIOT)控制带网络计算机的LED。

RIOT, Realtime Internet of Things,是一个定制框架,旨在使使用带有微控制器的ESP8266变得容易。在这个项目中,我们将通过一个联网的计算机来控制一个LED来演示RIOT的简单性。

骚乱简介

骚乱(实时的东西)是一个免费软件包(非商业广告),我创建了使用esp8266使用微控制器非常简单。

ESP8266模块是一个非常辉煌和低估的Wi-Fi模块,可以将任何串行端口(可在微控制器或旧Z80计算机上)转换为支持可互联网的设备。但是,Commands的ESP8266可以特别棘手,如果未正确编码,则可能导致锁定。

防暴框架提供了几种使用ESP8266微风的功能。首先,它包含一个用于进出ESP8266的数据的解释器。其次,它提供了简单且易于使用的功能,以便在任何时间内都启用微控制器Wi-Fi。第三,代码尽可能多地利用ROM存储器,使得非常小的RAM微观(例如,256字节的RAM)仍然可以是启用因特网的。RIOT还具有在VB.NET中编写的服务器包(为简单原因),不能在项目中使用。

在这个项目中,我们将看看如何使用任何PIC18设备使用骚乱(此项目将专门使用PIC18F25K20)并使用计算机打开和关闭LED。

注意:RIOT现在被称为RIOT,可以在www.riotousframework.com上找到

先决条件

为了使RIOT在客户端正常运行,必须使用特定的AT和SDK版本。说明AT版本必须为1.1.0.0,SDK版本必须为1.5.4。较早的版本在关闭连接时有bug,而较晚的版本要么缺少代码,要么有bug。

找到防暴客户端框架的要求,点击这里

用于编译项目,您需要的

了解如何在ESP8266中重新编程固件:

原理图

客户端示意图。点击放大

看骚乱是多么简单?好吧,你尚未因为这只是硬件层!但是,它确实证明了ESP8266 ESP01模块的硬件要求是多么简单!

首先,整个电路在3.3V上运行,与AMS1117调节器很容易。SOT-223封装可以焊接在2.54mm间距条带板上,成功,因此可以在单独的板上构建简单的功率调节电路。

其次,使用三个LED: D1表示是否有Wi-Fi连接,D2表示是否有活跃的服务器连接,D3是我们将通过联网的计算机控制的LED。

第三,您可能已经注意到,我们将运行内部振荡器,这不是高度准确的,因此不是UART通信的最佳选择。然而,UART中的误差率非常低,因此对于我们的简单电路可以忽略(在实践中,由于UART波特率不匹配,还没有出现任何问题)。

最后是PicKit3编程连接器。这部分取决于你;你可以使用任何你认为合适的PIC编程器。只要记住把它连接好就行了。

创建RIOT服务器

随着电路建立并准备进行编程,我们就准备了一个简单的防暴服务器。RIOR Server专门设计用于使设备和计算机之间的通信尽可能简单。一个稍微奇怪的一个关于骚乱服务器的功能是它不会在一个端口上使用IP地址进行通信。相反,它为设备分配了一个端口以连接通过。

对于连接到RIOR SERVER的RIOR设备,它必须首先要求在某些全局端口上连接(默认情况下,333)。RIOR Server将立即使用设备的端口号响应,以进行通信并关闭连接。此时,骚乱设备将与新的端口号重新连接,并且通过端口完成所有通信。请注意,这仅适用于连接到防暴服务器时。换句话说,骚乱设备仍然可以连接到其他服务器和网站,但防暴服务器提供了易于函数和骚乱框架的简单消息传递协议。当您向RIOR服务器发送消息时,RIOR软件将自动为该消息添加所需的比特以获取完整的事务。

RIOT框架的另一个特性是keepalive探测。每隔一段时间,服务器就会探测设备,看看设备是否仍然连接,如果几秒钟后没有响应,服务器就会关闭连接并释放端口。同样,如果使用RIOT框架,软件会自动处理这个问题。任何发送到RIOT服务器的消息都将重置watchdog探测定时器。

要采取此操作,您可以使用预先制作的可执行文件(这需要.NET Framework)或自己编译VB项目。可执行文件适用于测试目的,否则更好地制作自己的服务器(使用VB Riot类)。

在使用RIOT服务器之前,在server .vb文件中有一段代码需要修改。第114行需要修改,使IP地址为你的当地的IP地址。错误的IP地址会导致程序崩溃(记住,RIOT仍处于早期阶段,所以要给它时间成长!)

私有serveraddress作为ipaddress = ipaddress.parse(“xxx.xxx.xxxxxxxx”)

随着它的变化,它是时候看看服务器的代码。有三个按钮,文本框和计时器。按钮转动服务器,转动LED,然后关闭LED。文本框用于查看有多少当前连接。计时器是一个零售机器,允许我们经常(这里,10次)每隔一次在服务器上执行检查。

要注意的另一件事是客户ID。请记住将客户端设备(在客户端软件中的唯一ID设置为0,以便我们可以按ID而不是PORT访问客户端。

要做的第一个任务是创建服务器的实例并启动它。这是使用这部分代码完成的,这是自我解释性的:

在这一点上,你可以看到RIOT是如何尽量使用描述性函数的。注意,计时器也在这里启动!对于需要可靠的服务器,尝试并捕获——以便异常不会停止程序——可能是更好的方法。

第二项任务是显示有多少活动连接。这对服务器的操作不是至关重要 - 如果防暴设备正确连接到服务器,它就可以在视觉上了解!

第三个任务是打开和关闭LED。这是通过发送字符串”一同出席“防暴客户端打开LED或发送“LEDOFF”关掉了。请注意,需要转换成字符串的字节数组之前发送。

防暴客户端代码

防暴客户端的代码使用MPLAB IDE 8.92用C写入C.使用此较旧IDE甚至旧的C18编译器有几个原因。底线是我对较新版本的印象没有印象(MPLAB X IDE 3.40版)。我发现较新的IDE更慢,我会反复断开断开和失败的读取。我与较旧的MPLAB IDE 8.92有更好的经历。

要在PIC18芯片上工作,有一些要求:

  • UART必须配置为与骚乱合作。
  • UART接收需要一个中断,这样当一个字节被接收时,RIOT就会更新自己。
  • 需要初始化代码。请注意,所有需要的代码都可以在项目文件中找到,但只有涉及RIOT的核心代码将被讨论。诸如振荡器配置寄存器和端口方向寄存器之类的代码将不会被显示或描述。

注意:此项目的所有资源可免费提供。您可以使用它们而不是制作所需的编辑,只要您使用PIC18F25K20

首先,iot_clientframework.c需要编辑几个部分。下面的代码显示了三个函数UARTSEND(),UARTINIT()和delay20MS()应该如何查找此项目正常工作:

使用定义的UART RIOR函数,下一步是包括在UART接收时触发的中断服务例程。当发生这种情况时,需要在Internet_update()之前调用Uartget(UART字节),以便骚乱将在字节和处理它。

既然我们有中断例程编码(以及正确配置的中断依赖寄存器,如setup.h),是时候启动骚乱!

要调用的第一个函数是internet_init()。这将为RIOT刷新变量并使其进入已知状态做好准备。

一旦完成,它是通过调用函数Internet_ConnectTowiFi(“SSID”,“密码”)来连接到Wi-Fi网络了。显然,您将SSID和密码设置为您自己的网络凭据。此代码(如许多骚乱函数)将返回true(1)或false(0),以指示请求是否成功。在此代码的情况下,函数调用放置在循环中,以便在骚乱成功连接到因特网之前重复进行连接请求。

下一个任务是通过调用Internet_ConnectToriotserver(“IP”,“端口”)来连接到我们的服务器。此函数与Internet_ConnectToServer(“IP”,“端口”)不同,因为Riot Server通过唯一端口动态路由连接,Riot Server连接功能将自动重新连接到新端口的服务器。

这个函数被放置在一个while循环中,以确保RIOT一直尝试连接,直到它找到服务器并成功连接。一旦建立了服务器连接,我们就为设备分配一个唯一的ID。虽然这在我们的项目中并不重要,但它对于通过ID向客户端发送和从客户端发送数据很有用。

当设备连接到RIOT服务器时,它们被放置在最低空闲槽的对象数组中。这意味着设备可以放在数组的任何位置。IDs的使用意味着,如果设备重新连接并放置在不同的位置,不变的ID可以防止消息发送到错误的客户端。

请记住,服务器有两个用于发送数据的功能:一个是通过阵列中的位置发送数据(例如,向客户端0发送数据,这是连接的第一个客户端),第二个功能是通过ID发送数据。目前,ID是8位数,提供256个可能性。然而,在未来,这可能会改变为类似于MAC地址的东西。ESP8266的MAC地址甚至可以作为ID实现。

因为我们在服务器中使用ID号0,所以我们必须在客户机上使用相同的ID号。这很容易通过函数internet_setdeviceID(0)实现。

最后一段代码是我们的while主循环,它会无限循环。所有需要做的就是检查新数据,一旦有了新数据,就对其进行处理。在这种情况下,将新数据与const char缓冲区(字符串)进行比较,以查看数据流是否等于" LEDON "和" LEDOFF "。然后,根据信息,LED (D3)被关闭或打开。

BOM.

部分

示意图参考

数量

PIC18F25K20

IC1

1

AMS1117 3.3V调节器

IC2

1

ESP8266 ESP-01

ESP8266

1

1K电阻

R2, R3、R4

3.

5.6 k电阻

R1

1

领导

D1,D2,D3

3.

100nf电容器

C1 C3 C4 C5

2

10 uf电容器

C2

1

22 uf电容器 C3 1

建设

电路板电路相当简单,但这里使用的3.3V稳压器对原型并不友好。虽然有3.3V稳压器可用的通孔包装,AMS1117是非常便宜的,在我的车间唯一的3.3V稳压器(因为我拒绝储存两种类型的组件,做同样的事情)。

要将AMS1117转换为薄板友好的包装,您可以使用一小块剥离板和3针标头。还记得切断标签,以便铜带不会与标签接触。

转换的AMS1117面包板原型

完成的项目!

项目行动!

这里有一个视频,展示了RIOT客户端连接到Wi-Fi网络,连接到RIOT服务器,然后使用服务器控制白光LED。

结论

RIOT展示了即使是低端的微控制器也可以连接到互联网。虽然在这个项目中没有演示,但使用XC编译器在PIC16F628上使用RIOT进行了测试,并取得了成功。

虽然骚乱是初期的,但随着时间的推移,将增加更多功能,并且可以使用不同的实现,以便越来越多的设备可以运行骚乱。下一个项目将涉及以基本数据记录器的形式向服务器发送数据。

自己尝试一下这个项目吧!得到bom。

project_files.zip.

3评论
  • liuqiblog 2017年2月15日

    你能告诉我这个产品吗(http://www.hotenda.com/product-tags/esp8266.html),与esp8266相同吗?我也想做一个。

    喜欢。 回复
    • 罗宾·米切尔 2017年2月17日
      似乎本产品是esp8266模块,但您最好拍摄预先编程的ESP8266模块,1.5.4 SDK和1.1.0.0
      喜欢。 回复
      • Shree拉克希 2017年8月15日
        嗨Robin,我想知道是什么促使你在有这么多现有框架可用的情况下创建这个框架。任何特定的原因或原因为什么暴动被建立。请让我知道,因为我正在学习开发基于你的应用程序。你的回答将大有帮助。期待您的回复。谢谢
        喜欢。 回复