物联网 (IoT) 应用的开发人员需要确保他们的无线传感器系统能够无缝连接到基于云的软件和服务。但是,这通常需要选择和使用多个无线接口。确保这些接口都能满足他们的要求,可让他们不再将注意力集中在更高级别的物联网应用本身。

为了解决这个问题,许多供应商都提供了开发板和软件,帮助物联网开发人员快速部署能够通过局域网、中型网络和广域网进行无线连接的传感器设备。

本文将介绍 Pycom Ltd.?提供的一个此类解决方案,并说明其特征和特性,然后展示如何应用。

对于大多数物联网应用而言,高效的无线连接是物联网设备设计的关键要求。迄今为止,没有任何一种无线技术成为首选的连接解决方案。事实上,没有任何一种无线技术可能占据优势地位,因为无线提供商总能提供更加有效的替代方案。

物联网应用的使用案例非常多,这就使得单一连接解决方案的概念变得更加复杂。相同的物联网应用可能提出不同的连接要求,这取决于用户的物理位置、数据吞吐量要求和其他条件。有时,同一个应用可能要求同一部物联网设备支持使用蓝牙与附近用户进行交互,使用 Wi-Fi 与其他本地资源交互,使用 LTE 蜂窝网络在 Wi-Fi 范围外保持连接,甚至是使用 LoRaWAN 或 SigFox 与流入中央物联网网关或控制器的其他地理位置分散型物联网设备相连接。

如果这些设备能够支持使用所有这些技术进行灵活连接,那么将为物联网应用开发人员带来显著竞争优势。早期实现这种多技术连接的方法导致设计过于复杂、成本过高,或者体积过大,以至无法满足物联网设计要求。即使使用较早的无线收发器,开发人员也面临着与射频信号路径优化、降噪、物理布局等相关的挑战。

对于开发人员而言,为单个无线技术构建优化的硬件解决方案已经非常困难。在旨在支持多种无线技术的硬件设计中,复杂性甚至还会显著增加。即便在设计了合适的硬件之后,软件工程师还要应对物联网设计中争夺相同有限资源的多个协议栈和软件服务。

不足为奇的是,有效的多技术无线连接解决方案的部署,在最好的情况下也是有限的。Pycom 的多技术无线板和软件可降低无线物联网开发的复杂性,只需组合一些硬件和软件即可,从而解决了这些难题。

无线选项

Pycom FiPy 和 GPy 是 55 x 20 x 3.5 毫米(mm)板,旨在为物联网设计提供完整的多技术无线解决方案。与大多数无线产品不同,FiPy 支持蓝牙 4.2、IEEE 802.11b/g/n Wi-Fi、窄带 LTE、LoRaWAN 和 Sigfox。GPy 板不包含 LoRaWAN 和 Sigfox,但提供与 FiPy 相同的功能。本文重点介绍 FiPy 板。

在物联网设计产品中,支持 LTE 蜂窝网络是一种快速兴起的趋势。Pycom 的 LTE 解决方案是为其不断扩大的支持蜂窝网络的电路板系列而设计的,支持 LTE Cat M1 和 NB-IoT,在降低功耗的同时保持与大多数物联网设备要求相符的吞吐量水平。通过利用这些不同的连接选项,开发人员可以优化其无线实现,以满足静态或动态应用对范围、吞吐量和功耗的需求。

该板为除连接之外的物联网设计要求提供了一个合适的平台。FiPy 的核心是 Espressif ESP32 SoC,集成了双处理器、8 MB 闪存、4 MB 的 RAM,还有一个提供蓝牙和 Wi-Fi 连接的射频无线电子系统。当网络处理器执行通信协议栈时,主处理器可以运行用户代码。

SoC 带有多通道 12 位模数转换器 (ADC) 和一对 8 位数模转换器 (DAC),可以满足基本物联网感测要求。除了标准串行接口、GPIO 和串行接口,Pycom 还通过板的可配置端口,提供模拟和射频功能(图 1)。

图 1:Pycom FiPy 板引出了其处理器的引脚,开发人员可以将其映射到处理器的集成模拟和数字功能。(图片来源:Pycom)

插件硬件增强

对于具有更广泛感测要求的物联网设计,开发者可将 FiPy 与 Pycom 的 Pysense 感测板和 Pytrack 位置跟踪板结合起来。

对于感测应用,Pysense 板提供 STMicroelectronics LIS2HH12 加速计、Silicon Labs SI7006-A20 温度/湿度传感器、Lite-On LTR-329ALS-01 环境光传感器、NXP Semiconductors MPL3115A2 压力传感器——所有这些均通过板的共享 I2C 串行总线进行连接(图 2)。在正常工作状态下,所有这些传感器都消耗最小的功率。例如,NXP MPL3115A2 压力传感器在正常采样模式下仅消耗 40 μA,而功耗最大的传感器 Lite-On LTR-329ALS-01 环境光传感器则消耗大约 250 μA。其他两个传感器分别消耗大约 150 μA。

图 2:通过将 FiPy 插入 Pysense 板,开发人员可以构建出能够使用多个无线连接选项的多传感器物联网设备。(图片来源:Pycom)

由于 Pysense 和 FiPy 的功耗需求相对较低,开发人员可以使用电池运行基于 Pycom 的设计长达数年。Pysense 板包括 Texas Instruments 的 BQ24040 电池充电器 IC 和连接器,使用带有 JST 连接器的合适可充电电池(例如 TinyCircuits ASR00007 270 毫安小时 (mAh) 锂离子聚合物 (LiPo) 电池)为设计供电。

对于位置跟踪应用,Pytrack 板结合了精确的全球导航卫星系统 (GNSS) GPS 传感器和加速计,以及与 Pysense 中所用相同的 LiPo 电池充电子系统。

Pysense 和 Pytrack 传感器板上的针座提供了一个简单的解决方案,可构建专用于每个物联网应用的硬件平台。开发人员只需将 FiPy 板插入适当的扩展板,即可创建特定的硬件配置。对于不需要 LoRaWAN 或 Sigfox 连接的应用,开发人员可以改为使用 GPy 板。

插件软件增强

对于原型开发而言,组合多个板来扩展整体硬件功能是常见而重要的功能。但在过去,基础设计的硬件增强可能会在软件方面带来重大挑战,因为开发人员要努力寻找和集成支持特定硬件配置所需的不同软件驱动程序和中间件。由于能够支持 MicroPython,Pycom 让应用软件开发变得非常简单,就如同将插件板用于物联网设备硬件一样。

MicroPython 采用 Python 语言,利用面向硬件的支持来增强其功能。同时,MicroPython 消除了嵌入式系统中不需要的 Python 功能,增强了性能,同时减少了资源受限的嵌入式设计的存储器空间占用。

与 Python 相同,MicroPython 让开发人员只需导入一个模块即可添加特定软件功能。例如,开发人员只需加载 ADC 模块和读取值,即可对 FiPy 的集成 ADC 进行编程(列表 1)。

Copyimport?machine?adc?=?machine.ADC()?????????????#?create?an?ADC?objectapin?=?adc.channel(pin='P16')???#?create?an?analog?pin?on?P16val?=?apin()????????????????????#?read?an?analog?value

列表 1:与 Python 相同,MicroPython 允许开发人员通过导入软件模块来增强其软件功能,从而提供了一种简单方法来添加硬件特定的功能,如从模数转换器 (ADC) 读取数据,如下所示。(代码来源:Pycom)

正如开发人员可以轻松地通过扩展板来增强设计一样,他们可以通过导入适当的模块来增加补充支持。将无线板插入扩展板后,开发人员只需将相应的 MicroPython 模块添加到其代码中即可。

MicroPython 的编程模型让开发人员能够无缝地使用这些模块来快速实现物联网应用。与列表 1 所示的对 ADC 硬件的软件支持相同,对硬件扩展(例如 Pysense)的软件支持只需开发人员导入相应的模块即可。除了一套完整的传感器专用模块,还提供了演示其在典型软件应用中使用的示例软件,可以随时使用。例如,为了读取 Pysense 的 SI7006A20 温度和湿度传感器,在实例化用于读取传感器的温度值 (si.temperature()) 和湿度值 (si.humidity()) 的 SI7006A20 对象 (SI7006A20(py)) 之前,开发人员只需导入 Pysense 模块和传感器专用模块(列表 2)。

Copyfrom?pysense?import?Pysensefrom?LIS2HH12?import?LIS2HH12from?SI7006A20?import?SI7006A20from?LTR329ALS01?import?LTR329ALS01from?MPL3115A2?import?MPL3115A2,ALTITUDE,PRESSURE?py?=?Pysense()mp?=?MPL3115A2(py,mode=ALTITUDE)?#?Returns?height?in?meters.?Mode?may?also?be?set?to?PRESSURE,?returning?a?value?in?Pascalssi?=?SI7006A20(py)lt?=?LTR329ALS01(py)li?=?LIS2HH12(py)?print(mp.temperature())print(mp.altitude())mpp?=?MPL3115A2(py,mode=PRESSURE)?#?Returns?pressure?in?Pa.?Mode?may?also?be?set?to?ALTITUDE,?returning?a?value?in?metersprint(mpp.pressure())print(si.temperature())print(si.humidity())print(lt.light())print(li.acceleration())print(li.roll())print(li.pitch())?print(py.read_battery_voltage())

列表 2:开发人员可以学习 Pycom Pysense API 和相关软件示例,以便使用 Pycom Pysense 硬件板中集成的传感器特定 MicroPython 模块。(代码来源:Pycom)

由于采用了这种模块化方法,实现无线连接同样简单。开发人员只需为所需的无线技术导入适当的模块,以及用于 HTTPS 或 MQTT 等协议的其他模块。除了这些无线通信模块之外,Pycom 示例软件还演示了开发人员如何快速建立 Wi-Fi 连接,并使用 MQTT 与 Adafruit IO 等基于云的服务进行交互(列表 3)。Adafruit IO 在原型开发免费服务计划中提供,是简单的云资源,设计用于创建物联网数据流流程,包括输入数据流、数据管理和分析。

Copyfrom?mqtt?import?MQTTClientimport?machineimport?timefrom?network?import?WLAN??def?sub_cb(topic,?msg):???print("Received:?"?+?msg)?wlan?=?WLAN(mode=WLAN.STA)wlan.connect("yourwifinetwork",?auth=(WLAN.WPA2,?"wifipassword"),?timeout=5000)?while?not?wlan.isconnected():?????machine.idle()print("Connected?to?Wifi ")?client?=?MQTTClient("device_id",?"io.adafruit.com",user="your_username",?password="your_api_key",?port=1883)?client.set_callback(sub_cb)client.connect()client.subscribe(topic="youraccount/feeds/lights")?while?True:????print("Sending?ON")????client.publish(topic="youraccount/feeds/lights",?msg="ON")????time.sleep(1)????print("Sending?OFF")????client.publish(topic="youraccount/feeds/lights",?msg="OFF")?????time.sleep(1)

列表 3:Pycom 的示例软件演示了开发人员如何使用几个简单的 Wi-Fi 模块调用(以黄色突出显示),通过 MQTT 与基于云的资源(例如此处所示的 Adafruit IO)进行交互。(代码来源:Pycom)

Pycom 多技术无线板与 MicroPython 相结合,为开发无线物联网设计提供了强大的平台,能够动态响应不断变化的连接环境。很多物联网应用都要求随时访问传入的数据流。但是,举例来说,每当局域网发生故障,或者由于干扰或网络事件导致本地 Wi-Fi 信号强度下降时,应用将无法访问旨在通过 Wi-Fi LAN 与云进行交互的物联网设备。但是,对于 Pycom 板,开发人员只需切换到另一个无线连接选项即可。

例如,要通过 LTE 蜂窝服务连接,开发人员只需使用 MicroPython LTE 模块。相同的底层方法允许开发人员在 Wi-Fi 和 LTE 蜂窝连接之间进行切换,而无需更改构建来与主机交互或提供应用级别功能的更高级代码。例如,要使用 LTE 连接,开发人员只需加载 LTE 模块,并且实例化相应的 LTE 对象,然后连接到提供商服务。因此,开发人员只需稍作改动,即可在应用中切换到 LTE 连接(列表 4)。

Copyfrom?mqtt?import?MQTTClientimport?machineimport?timefrom?network?import?LTE?def?sub_cb(topic,?msg):???print("Received:?"?+?msg)?lte?=?LTE()lte.connect()?while?not?lte.isconnected():?????machine.idle()print("Connected?to?LTE ")?client?=?MQTTClient("device_id",?"io.adafruit.com",?user="your_username",?password="your_api_key",?port=1883)?client.set_callback(sub_cb)client.connect()client.subscribe(topic="youraccount/feeds/lights")?while?True:????print("Sending?ON")????client.publish(topic="youraccount/feeds/lights",?msg="ON")????time.sleep(1)?????print("Sending?OFF")????client.publish(topic="youraccount/feeds/lights",?msg="OFF")????time.sleep(1)

列表 4:Pycom 示例软件演示了开发人员如何使用 LTE 连接(以蓝色突出显示)而不是 Wi-Fi(在列表 3 中以黄色突出显示),执行与云资源交互的更高级操作。(代码来源:Pycom)

同样的常规方法也适用于将连接切换到蓝牙、LoRaWAN 或 Sigfox,以响应变化的条件。因此,开发人员可以构建出能够轻松支持各种无线连接技术的物联网设备。当操作或功能要求需要切换到不同的连接选项时(甚至在运行时期间进行切换),开发人员就可以轻松实现所需的动态切换功能,以保持可用性或满足不断变化的性能要求。

总结

开发人员可以使用专门为支持多种无线技术(包括蓝牙、Wi-Fi、LTE、LoRaWAN 和 Sigfox)而构建的 Pycom 板,快速满足新兴的无线连接要求。通过将这些板与基于 MicroPython 的软件相结合,开发人员可以快速实现能够响应不断变化的无线连接要求的物联网设备。

python创意项目设计方案-基于MicroPython软件相结合的无线设计方案相关推荐

  1. python 创意项目_针对python开发人员的10个很棒的python项目创意

    python 创意项目 The joy of coding Python should be in seeing short, concise, readable classes that expre ...

  2. python 创意项目_选择创意项目您需要知道的7个步骤

    python 创意项目 There are obvious surface-level positives and negatives to most projects. If you look be ...

  3. python 创意项目_5个很酷的Python项目创意灵感

    python 创意项目 在过去的几年中,Python在全球范围内享有很高的声誉. 如今,Python在IT行业中享有盛誉. 那么为何不? Python拥有使它成为"地球上最需要的编程语言&q ...

  4. Python实战项目:基于jupyter notebook处理16年美国总统大选数据

    Python实战项目:基于jupyter notebook处理16年美国总统大选数据 设计需求说明 源码展示以及实验截图: 总结: 设计需求说明 设计任务 按照月份求两位候选人民调数据的和,用折线图反 ...

  5. python创意项目_Python趣味创意编程

    本书基于Python编程,实现了15个有趣的互动场景,循序渐进地向读者展示了这些场景的实现过程,帮助读者掌握Python编程.全书共16章,讲解了Python基本语句.算术运算符.字符串.循环.全局变 ...

  6. python画心电图_基于MicroPython:TPYBoard心率监测器

    转载请注明文章来源,更多教程可自助参考docs.tpyboard.com,QQ技术交流群:157816561,公众号:MicroPython玩家汇 一.前言 这几年智能穿戴设备大火,尤其是手环类,从A ...

  7. Python机器学习项目:基于数据挖掘的抖音商用广告视频识别

    基于数据挖掘的抖音商用广告视频识别 Commercial-Vedio-Recognition Project:基于数据挖掘的tik tok商用广告视频识别 GitHub Notebook From K ...

  8. Python爬虫项目实战-基于Flask、MongoDB异步构建免费高可匿IP池

    目录 一.基础项目结构及解释 二.具体代码实现 2.1 采集模块 2.2 校验模块 2.3 数据模块 2.4 检测模块 2.5 API模块 2.6 工具模块 2.7 数据模型.配置文件.主程序 三.项 ...

  9. Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略

    Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)-从而实现Python编程图文教程之详细攻略 ...

最新文章

  1. 线转hdmi为什么检测不到_为什么苹果MacBook这么保值?
  2. 使用Intent来启动Activity并传递参数
  3. 李洪强iOS经典面试题36-简单介绍 ARC 以及 ARC 实现的原理
  4. 计算机三级-数据库-数据库应用系统开发方法
  5. [Ext JS6]Sencha Cmd
  6. 免费课程:Java高级教程-项目部分视频——私塾在线提供
  7. python反编译class文件_简单的反编译class文件并重新编译的方法
  8. 编程分钟转化小时怎么编_贴片机编程教程,编程步骤,编程怎么编
  9. [转]经典JavaScript正则表达式
  10. 深入分析 RTPS协议
  11. golang基础面试题总结
  12. oracle能用hql吗,使用HQL查询日期,Oracle报“Invalid number”
  13. setTimeout原理
  14. 计算机网络基础(类别 | 性能指标 | OSI模型初识)
  15. 2019高考数学-概率问题
  16. 总结:java.lang包
  17. 在VSCode中自定义文件类型和扩展名关联
  18. twitter java_将twitter集成到你的Java程序中
  19. 基于poi包的流式文件和版式文件操作工具
  20. 新手产品经理如何写竞品/市场分析报告

热门文章

  1. 浙江大学计算机考研资料汇总
  2. 大学计算机学cad的,浙江大学计算机学院CADCG国家重点实验室.PDF
  3. 哈工大计算机网络Week0-概述
  4. malloc函数实现原理!
  5. Linux系统下超实用功能——着色、自定义命令
  6. 【自己笔记】逻辑回归代价函数导数求解过程,softmax loss
  7. Rich Text Processing富文本处理
  8. Oracle utl_http post响应报文乱码
  9. 手把手教你用Python实现Excel中的Vlookup功能
  10. 如何查找计算机SCI论文文献 - 易智编译EaseEditing