没有合适的资源?快使用搜索试试~ 我知道了~
软件X 20(2022)101218原始软件出版物TinkercadNetConnector:将模拟的IoT设备连接到外部世界Joshua Ellula,Carl James Debonoba马耳他大学计算机科学系,马耳他b马耳他大学通信和计算机工程系,马耳他ar t i cl e i nf o文章历史记录:接收日期:2022年收到修订版,2022年8月29日接受,2022年关键词:Arduino仿真器测试平台a b st ra ctTinkercad.com提供了一个易于使用的环境来模拟Arduino Uno设备以及连接的虚拟硬件组件,并由Arduino草图代码控制。虽然该平台是一个有用的学习工具,但由于它不提供与外部世界通信的手段,一旦项目需要与支持互联网的服务进行任何形式的通信,就必须诉诸物理硬件(或其他模拟/模拟Arduinos的方法)。在本文中,我们介绍了TinkercadNetConnector,它允许Tinkercad模拟ArduinoUno设备与外部世界通信©2022作者(S)。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本1.0指向此代码版本所用代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-22-00029Code Ocean compute capsule N/AGNU通用公共许可证GNU General Public Licensev3.0使用git的代码版本控制系统使用JavaScript的软件代码语言、工具和服务编译要求、操作环境依赖性Chrome扩展程序如果可用,链接到开发人员文档/手册https://github.com/joshuaellul/tinkercad-net-connector/blob/main/README.md支持电子邮件,以解决问题joint. um.edu.mt1. 动机和意义Tinkercad.com是一个有用的学习工具[1],对于那些想要(除其他事项外)学习如何设计和编码Arduino Uno的设备。它也是早期Arduino Uno固件系统开发和测试的合适工具然而,一旦需要与仿真环境之外的任何互联网服务进行任何交互,就需要求助于使用物理硬件、1个基于桌面的软件、2个或更少的直观用户界面。3虽然这些工具很有用,但理想的情况是允许仿真设备使用在线且易于*通讯作者。电子邮件地址:job.ellul@ um.edu.mt(Joshua Ellul)。1 https://xevro.be/2 https://www.simulide.comhttps://www.labcenter.com/whyvsm/3 https://lcgamboa.github.io/https://doi.org/10.1016/j.softx.2022.101218使用平台。鉴于Tinkercad.com提供了一个易于使用的Web界面[2在 本 文 中 , 我 们 介 绍 了 TinkercadNetConnector , 这 是 一 个Google Chrome扩展,它:(i)将Tinkercad模拟的Arduino串行输出转换为HTTP GET请求(并反过来以相关的HTTP GET响应作为串行输入进行响应);以及(ii)轮询服务器,以获取转换为Arduino串行输入的传入消息。该扩展为使用物联网(IoT)设备的实验提供了以下好处,它能够:(i)开发和测试与外部Web服务(和设备)通信的IoT设备代码;以及(ii)扩展互联网连接的仿真IoT设备网络,而无需物理IoT设备,这可以最大限度地减少成本和时间2352-7110/©2022作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx乔舒亚·埃吕尔和卡尔·詹姆斯·德博诺软件X 20(2022)1012182Fig. 1. 扩展配置弹出窗口。(to设置设备,并等待固件上传)。Tin- kercad已经支持多个Arduino的仿真,但是不支持它们与外部Web服务的交互要使用该扩展程序,用户需要:(i)在Chrome中安装该扩展程序;(ii)配置将输出发送到何处的“基本URL”,以及检查传入消息的频率。所需的最小配置如图所示。1.一、2. 软件描述TinkercadNetConnector便于将仿真Arduino Uno设备与以下设备集成:(i)其他选项卡中的其他Tinkercad仿真设备;(ii)外部Web服务;(iii)物理Arduino;或(iv)所需的任何其他硬件或软件。图2描绘TinkercadNetConnect的高级系统架构概述。扩展(橙色所示)使Tinkercad仿真设备能够与外部世界进行通信-用户编程或配置的路由软件(蓝色所示)可以处理如何以及在何处将消息重定向到Tinkercad仿真设备和其他系统组件之间。路由软件可以用任何所需的语言/框架进行编码(前提是能够处理HTTP请求)-还可以包括基于网络/事件的配置软件(例如Node-RED4)。 接下来,我们将概述TinkercadNetConnector2.1. 软件构架软件架构的概述如图所示。3.第三章。扩展名在manifest.json文件中定义,该文件配置:popup.html作为一个弹出窗口中描绘图。1,用户可以配置路由器URL,刷新率和传入消息的数据格式模式(稍后讨论)。弹出窗口的客户端JavaScript存储在popup.js中。content.js是扩展组件, 并对Tinkercad网页进行更改4 https://nodered.org/background.js,用于处理需要在后台执行的插件任务(独立于内容页面)。组件之间存在的通信渠道如下:base-url:基本url和刷新率存储在扩展的存储区域中,然后后台任务使用该扩展的存储区域来:(i)与配置的路由软件通信;以及(ii)设置定时器以轮询路由软件以获得任何去往仿真Arduino设备的传入消息。process-input:当后台组件轮询外部路由器以获得传入消息并且消息被返回时,这些消息被发送到内容组件,内容组件此后处理将消息作为串行输入重定向到指定的仿真设备。send-output:当内容组件解析Tinkercad中的更改并识别仿真Arduino串行端口上输出的新消息时2.1.1. 仿真设备到路由软件协议由于此扩展的目的是促进任何IoT(Arduino)软件系统的外部通信,并且不应对正在解扩的IoT系统施加协议要求(由扩展的用户),因此将消息从仿真设备重定向到外部路由软件(反之亦然)的扩展越好.实现了两个特定于方向的数据重定向功能:从仿真Arduino传输数据:仿真Arduino发送到其串行端口的数据显示在Tinkercad扩展监听串行监视器中文本的任何更改,并将任何检测到的数据转发到路由软件(在弹出窗口中配置)。数据被转发到使用以下查询字符串参数配置的基url:msg:此参数的值将被设置为“输出”。out:此参数的值将是被重定向的数据(从模拟的Arduino设备发送到串行端口)。device:此参数的值将是Chrome的标签ID-与每个Chrome标签相关联的唯一标识符。 标签ID可以在此后使用的路由软件,以中继其他消息打算为特定的仿真设备。例如,对于路由软件在端口8080上监听同一台机器,并且Arduino输出Tinkercad.comhttp://127.0.0.1:8080/arduinoserver? msg=输出&输出=测试&设备=203从路由软件接收回的响应数据将被重定向到仿真的Arduino,方法是修改DOM以将响应数据包括在串行监视器的输入文本字段中,然后通过调用其click()JavaScript函数来将数据发送到模拟的Arduino:由于Chrome扩展了会话不支持传入连接,扩展名为·········乔舒亚·埃吕尔和卡尔·詹姆斯·德博诺软件X 20(2022)1012183图二. TinkercadNetConnector系统概述。图四、 Arduino Board的随机数显示示例。图三. TinkercadNetConnector软件架构概述。旨在轮询路由软件的任何数据,被转发到一个仿真的Arduino -扩展轮询 路由软件根据配置的刷新率周期性地运行。对基URL的GET请求将使用以下查询字符串进行:“”?msg=删除“”。该扩展支持两种不同的模式来处理传入数据:(i)当该扩展的“Broadcast Raw toAll”复选框被选中时,返回到“Broadcast Raw to All”HTTP GET请求的所有数据都将作为串行输入发送到所有Tin- kercad选项卡;以及(ii)当同一复选框被选中时,如果没有勾选,则预期从路由软件返回的回复是一个JSON对象,其中包含针对特定模拟Arduino的输入值数组(由运行它们的Chrome Tab ID标识)。此模式允许将特定数据发送到特定的Tinkercad选项卡。的示例响应在清单1中提供。3. 说明性实例我们现在提供以下两个用途:TinkercadNetConnector的说明性示例:(i)显示从NodeJS服务器生成的随机数的Arduino;(ii)基于通过Node-RED 5服务器检索的最近5秒内的“比特币”推文数量发出哔哔声的Arduino 所有示例在GitHub存储库中提供,包括Arduino代码,Arduino板设计和服务器代码。3.1. 显示来自NodeJS服务器的随机数一个Arduino板设置了一个连接的LCD屏幕,如图所示。四、清单2中提供了Arudino草图代码的重要方面。清单1:一个从路由软件返回的JSON响应对象示例。清单2:来自NodeJS服务器的Random Number Display的草图Arduino代码5 https://nodered.org/{“输入“:[{“device“:203,“value“: 777},{“device“:421,“value“: 123},]}虚空设置(){//...Serrial. print ln(“Registerwithrouter“);}虚空public void run(){if(Serial. available()> 0)lcd. intn(intn);}乔舒亚·埃吕尔和卡尔·詹姆斯·德博诺软件X 20(2022)1012184在setup()中,扩展将向指向NodeJS服务器的串行端口输出一条消息,以便通知服务器Arduino及其设备ID(或者更确切地说,服务器稍后将使用Chrome Tab ID发送消息)。此后,任何接收到的数据将显示在连接的LCD屏幕上。清单3提供了NodeJS服务器代码。在这个特殊的例子中,扩展被设置为将消息重定向到“/arduinoserver”端点,但是这可以改变为任何用户需要。服务器处理扩展发送的两个HTTP GET请求,如下所'' 输 出 '' : NodeJS 服 务 器 通 过 首 先 要 求Arduino向服务器发送消息(在Arduino设置函数中发送的消息)来跟踪Arduino。''删除'':当扩展轮询任何要转发到Arduino的输入时,NodeJS服务器为每个注册的Arduino生成一个随机数,并将它们发送回扩展进行转发。receiveData()侦听任何传入的数据并缓冲接收到的字符,直到接收到“+”字符,此时receiveData()将返回接收到的缓冲字符。该协议可以采用不同的设计,并且不受扩展的限制-在下一个用例中将使用不同的协议。图五、 Arduino板与3连接压电蜂鸣器.清单3:用于向仿真Arduino提供随机数的NodeJS服务器代码3.2. 来自节点的短推计数-红色和蜂鸣声模拟Arduino板设置有3个连接压电蜂鸣器,如图所示。 五、不同的蜂鸣器将根据自上次检查以来的“比特币”推文数量发出哔哔声-每5秒检查一次推文如果已经发出10条推文,则1个蜂鸣器将发出蜂鸣声;如果20则2个蜂鸣器;而如果发生30条推文,则3个蜂鸣器将发出蜂鸣声。Arduino不断检查来自Node-RED服务器的传入消息,这些消息具有以下消息结构: TWEET币> ETX>当收到这种格式的消息时,Arduino将根据上述逻辑处理它并发出蜂鸣声。清单4提供了Arduino草图代码。清单4:Sketch Tweet Beep Arduino代码。Node-RED服务器流程如图所示。 六、根据扩展实现,传入的HTTP请求将是如果请求是传入的当扩展通过'tweetputs'消息(流的底部)轮询传入4. 存储库中的其他示例为了进一步演示插件的使用,已经实现了另外两个用例(在github存储库中可用)来演示:1. 一个计算密集型的例子,压缩Arduino上的数据并将其传输到服务器,同时解压缩从服务器接收的数据实施的技术是最近提出的轻量压缩技术[5]。2. 一 个 示 例 来 演 示 和 测 试 可 以 同 时 运 行 多 少 个 不 同 的Tinkercad选项卡。我们实现了一个心跳示例,其中服务器向所有连接的Tinkercad设备发送ping命令,每个设备在收到ping命令时都会闪烁LED。vardevices=newArray();app.get(“/arduinoserver“,(req,res)=>{if(req. 你好。msg=“outtput“){devices.push(parseInt(req.你好。device));}elseif(req. 你好。msg=“puts“){varinputsArray=[];定义。对于Each(element=>{输入很简单。push({“device“:element,“value“:getRandomNr().toString()+“+“});});res。send(JSON.stringify({“输入s“:输入sArrayy}));}});·longprevTweets=0;虚空设置(){Serrial. print ln(“Registerwithnodered“);}虚空public void run(){longtwets=gett Twets();长差Tweets=tweets-prevTweets;prevTweets=tweets;if (diffTweets>=10 )beep( 6 ) ;if ( diffTweets>=20 )beep(7);if(diffReading>=30)beep(8);}·乔舒亚·埃吕尔和卡尔·詹姆斯·德博诺软件X 20(2022)1012185图六、 Node-RED流处理(i)保存Arduino设备ID,以及(ii)返回比 特 币 推 文 的总数。考虑到这些设备是在Chrome中模拟的,人们会认为可以同时运行的标签的数量会很低。虽然是这种情况,但可以测试更大的网络,以用于单个主Arduino节点可以用于协调在同一Tinkercad选项卡中模拟的其他Arduino节点的用例。在未来,我们将研究是否可以扩展扩展到直接通信到所有不同的Arduino节点在同一个标签中模拟。假设每个标签只执行一个JavaScript线程,这将有助于减少由于需要许多chrome标签而引起的开销。测试在3.1 GHz双核Intel Corei5 Mac- Book Pro上运行,内存为8 GB,以查看是否可以看到任何视觉第一个OBS屏幕录制软件被启动来录制屏幕,并启动了github存储库中可用的服务器端代码。此后,加载了15个新的Tinkercad网页实例,并开始每个模拟。不同的chrome实例意味着将为每个chrome实例运行一个单独的JavaScript线程屏幕记录6表明,前5-一旦加载了一个实例,并且不同的实例已经稳定下来,不同的心跳似乎是同步的,直到第7个实例,此后可以看到实例有时失去同步并恢复同步。这是在不同的Chrome实例中运行不同的JavaScript引擎所期望的。5. 影响物联网(IoT)正在发生变化,不仅有可能改变我们的日常生活,而且还可以加强各个领域的科学研究,包括环境[6],空间[7],医疗保健[8],海洋[9],化学[10]科学等。由于实验通常涉及设置不同的物联网设备、配置和传感器,因此初始系统设计和测试可能涉及大量的硬件配置和设置时间。特别是当实验室用于构建、开发和测试不同的物联网系统时。更重要的是,参与所需软件编程的软件开发人员需要6 可从以下网址获得:https://www.um.edu.mt/l/bbXnd通常仅限于那些能够访问物理硬件设置的人。各种模拟[11,12]和仿真[13,14]工具已被提出,目的是便于开发,大型网络的建模和其他方面。 然而,可用的要么需要访问物理硬件,7有非-直观的用户界面,8或要求用户使用基于桌面的软件。9虽然这些解决方案可能适用于许多情况,但支持基于Web的Arduino开发是理想的-例如,在个人可能仅限于类似Chromebook的笔记本电脑的情况下(可能在具有较大数字鸿沟的地区,这种笔记本电脑更便宜或分发[15])。虽然Tinkercad.com提供了一个解决方案,但一旦仿真的Arduino需要与仿真环境之外的外部世界进行交互,TinkercadNetConnector可以通过使Tinkercad.com与外部仿真环境交互,支持未来的研究,通过促进易用性来利用物联网设备物联网Arduino固件开发和测试,用于需要与外部服务通信的应用程序。此外,这样的解决方案可以使只能访问类似Chromebook的笔记本电脑的个人能够学习和开发不限于模拟环境的Arduino解决方案(这可以通过使更精通的物联网设备软件开发人员能够进一步支持研究和创新)。此外,对于此类系统,可以消除与典型物联网系统开发相关的硬件设置和配置时间,从而促进更快的Arduino固件开发。6. 局限性和未来方向可以在同一时间(在同一台机器上)仿真的设备数量取决于:(i)特定机器为了进一步支持模拟更多的设备,在未来的工作中,我们计划扩展扩展,以轻松支持7 https://xevro.be/8 https://lcgamboa.github.io/9 https://www.simulide.com,https://www.labcenter.com/whyvsm/乔舒亚·埃吕尔和卡尔·詹姆斯·德博诺软件X 20(2022)1012186使用扩展跨不同机器进行通信。虽然这已经可以使用路由软件,但我们计划提供一个接口,允许不同机器上的不同扩展实例直接路由消息,而无需提供单独的路由软件。此外,目前用户需要设置不同的选项卡,并相应地启动它们。对于实验或测试台,虽然设置仿真设备比在实际硬件上更少痛苦,但在未来的工作中,我们的目标是允许用户配置测试台可配置环境,该环境将自动设置并自动启动不同的仿真设备。Tinkercad目前支持Arduino Uno和Micro:bit板-其中串行输入/输出监视器仅支持Arduino Unos。因此,该扩展目前只支持模拟Arduino Uno设备。在未来的工作中,我们计划通过模块化代码来支持更多的物联网平台,以更好地支持不同基于Web的平台的可扩展性7. 结论在本文中,TinkercadNetConnector,Chrome扩展,以支持外部的仿真环境中的通信。我们展示了两个用例,演示了如何通过路由软件组件与外部设备或服务进行通信,该组件可以采用任何形式,包括直观的基于Web的流应用程序,如Node-RED。数据可用性文章中描述的研究未使用任何数据确认这项工作的部分资金来自欧洲区域发展基金-INTERREG V-A意大利-马耳他项目NATIFLife C1-1.1-90。引用[1]Mohapatra BN,Mohapatra RK,Joshi J,Zagade S.通过tinkercad轻松学习arduino和传感器。Int J Open Inf Technol2020;8(10):73-6.[2]Abburi R,Praveena M,Priyakanth R.一个基于网络的虚拟实验室应用程序 , 帮 助 学 习 者 思 考 , 创 造 和 制 作 。 J Eng Educ Transf2021;34(SPICTIEE):535-41.[3]Eryilmaz S,Deniz G. Tinkercad对学生计算思维技能和感知的影响:安卡拉省的案例土耳其在线JEduc Technol-TOJET2021;20(1):25-38.[4]Mohapatra BN , Mohapatra RK , Jagdhane V , Ajay CA , Sherkar SS ,PhadabriyaVS.Smartperformanceofvirtualsimulationexperimentsthrougharduinotinkercadcircuits.PerspectCommunEmbedded-SystSignal-Process-PiCES2020;4(7):157-60.[5]拉 马 纳 坦 河 Unishox : 一 种 用 于 短 Unicode 字 符 串 的 混 合 编 码 器 。 JOpenSource Softw2022;7(69):3919.[6]作者:Martinez K.走向环境物联网。地球空间科学2015;2(5):194-200.http://dx.doi.org/10.1002/2014EA000044网站。[7]Dabbakuti JK,Ch B.基于ThingSpeak的物联网电离层监测系统。AstrophysSpace Sci2019;364(8):1-7.[8]Chakraborty C,Banerjee A,Kolekar MH,Garg L,Chakraborty B.物联网医疗技术。Springer; 2021.[9]Al-Zaidi R,Woods J,Al-Khalidi M,Ali Alheeti KM,McDonald-Maier K.物联网环境中的下一代海洋数据网络。2017年第二届雾与移动边缘计算国际会议。FMEC,2017年,第50-55页。http://dx.doi.org/10.1109/FMEC.2017.7946407网站。[10]温锋,何涛,刘宏,陈宏宇,张涛,李春。化学传感技术的进步纳米能源2020;78:105155. 得双曲正切值. doi.org/10.1016/j.nanoen.2020.105155网站。[11] D'Angelo G,Ferretti S,Ghini V.物联网的模拟。2016年高性能计算仿真国际会议HPCS,2016年,第1-8页。http://dx.doi.org/10.1109/HPCSim.2016.7568309网站。[12]ChenM,Miao Y,Humar I.OPNET物联网仿真。Springer Nature; 2019.[13]郭文贵,李晓松.物联网设备的硬件仿真和应用行为验证。2017年第23届亚太通信会议。APCC,2017年,第1-6页。http://dx.doi.org/10.23919/APCC的网站。2017.8304040。[14]李忠N,邓乐宝C,李忠Q。基于容器技术的大规模物联网仿真试验平台。2018 IEEE 第 七 届 通 信 与 电 子 国 际 会 议ICCE , 2018 , p. 63-8.http://dx.doi.org/10.1109/CCE.2018.8465578网站。[15]Lee J.通过在埃塞俄比亚使用Chromebook弥合数字鸿沟。图书馆高科技新闻2020.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功