0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino Portenta X8上Python程序和Arduino程序之间的通信

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2022-06-13 11:57 次阅读

作者简介

程晨,科技作家,创客布道师。编著翻译出版人工智能物联网鸿蒙应用、3D打印、机器人领域相关图书数十余本,《掌控Python》系列图书作者,Minecraft我的世界系列图书作者,《无线电》、《爱上机器人》杂志特约作者,出版国内第一本Arduino、第一本Intel Edison、第一本Mixly图书。

2015 Intel软件创新大使

2017ELF全球杰出教育领袖

2019年Arduino官方认证推广大使。

CIE青少年机器人技术等级考试标准工作组副组长,CIE青少年软件编程等级考试标准工作组副组长,编程、机器人多个团体标准主要起草人。

中国下一代教育基金会实践与创新工程专家委员会专家。

中国最大Python教师社区联合发起人。

最早的编程形式应该算是打孔纸带了,之后伴随着中央处理单元出现了汇编语言。汇编语言在大学里,仍然是计算机课程中主要的编程语言之一。汇编语言只是将机器码做了简单编译,所以汇编语言编写的代码都不是太复杂,而且推广和移植都很难。随者操作系统的出现和发展,C语言得到广泛的普及。POSIX api和各种库的推出,大大改善了C语言和Linux操作系统的流行。Java虚拟机的跨平台特性,把面向对象的编程思想与计算机解耦,软件工程正式迈向高光时刻。云计算和容器的普及,大大简化了应用和服务的交付,go语言也因此受到欢迎。开发模式随着信息科技的发展和新的编程语言出现,不断向更高级迈进,云原生、低代码已经成为炙手可热的新方向。我一直在思考一个问题,在一个即将到来的云端一体万物互联的时代,应用开发是不是会呈现出一种新的形式,一种更方便、更友好的形式?

f2432cec-d7d1-11ec-bce3-dac502259ad0.png

图1:开发语言和模式得变迁

随着互联网技术以及嵌入式技术(包括人工智能与边缘计算技术)的发展,我们正在创建一个万物互联的世界,这个世界最大的特征就是实现了人与机器或者机器与机器之间的信息交流。

而作为全球最著名的开源硬件Arduino,其实一直都在为这样的一个世界布局。很多人知道Arduino可能都是从其最经典的Arduino Uno开始的,虽然这块基于AVR 8位单片机的控制板简单易用,但显然这个级别的控制板是无法承载整个IoT的应用场景的。因此几年前,Arduino就推出了Arduino Pro这个相对独立的品牌(Pro的意思是专业,目前从产品上来说没有明确的划分,这个品牌更像是应用领域的不同)。Arduino希望通过Arduino Pro能够在一个简单的物联网框架下快速、安全的将远程的传感器以及执行机构连接到自己的业务逻辑系统中,以少量的代码实现基于物联网应用开发平台,进一步的让企业通过简单、现实、可量化的步骤实现数字化转型。

f261bcde-d7d1-11ec-bce3-dac502259ad0.png

图2:Arduino Pro

具体来说,Arduino Pro又分为IoT云、性能强大的核心控制板以及具有IoT特性的终端控制板这三个层面(大体上对应IoT的应用层、网络层和终端层)。Arduino的云端服务Arduino IoT Cloud是一种可视化的创建云和设备软件的平台,这个平台可以设定网络触发事件。开源的Arduino平台上提供了很多的示例代码可将你的设备直接连接到Amazon Web Services (AWS)、Google Cloud Platform (GCP) 或 Microsoft Azure 的 IoT服务。另外,对于定制化的需求,用户还可以利用包括HTTP、MQTT、X.509和JSON在内的Arduino库将设备连接到自己喜欢的网络服务中。

具有IoT特性的终端控制板其实是利用了Arduino本身的优势,通过添加带有RS-485CAN总线、蓝牙以太网功能的Arduino扩展板,可以很方便的将Arduino Uno这样的控制板改造为物联网终端(还要依靠丰富的示例代码)。这些终端有着丰富的传感器和代码库。同时,对于终端控制板来说,Arduino也陆陆续续推出了32位ARM处理器的Nano系列,以及专门针对IoT的MKR系列。这些产品的性能都明显优于Arduino Uno,甚至可以在控制板上运行人工智能算法TinyML)。MKR系列则是充分考虑了联网与低功耗的问题,从WiFi到GSM,从LoRA到窄带物联网等等。并提供LiPO电池充电电路以及方便处理器进入“低功耗”模式的软件库。

f2a5cc26-d7d1-11ec-bce3-dac502259ad0.png

图3: Arduino MKR WiFi 1010

而对于性能强大的核心控制板这块,Arduino更是推出了Portenta系列,这个系列专为希望构建工业级项目的专业用户而设计。在CES 2020上,Arduino推出了这个家族的第一个成员是Arduino Portenta H7控制板,该控制板配备双核处理器,一个工作在480MHz的Arm Cortex-M7和一个工作在240MHz的Arm Cortex-M4。Portenta H7能够运行Arduino代码、Python和JavaScript,允许运行更复杂的软件,包括计算机视觉和其他需要微控制器长时间大量计算能力的任务。Portenta H7可以轻松地运行用TensorFlow Lite创建的进程,我们可以让其中一个核动态地计算计算机视觉算法,而另一个核可以进行类似于控制电机或显示用户界面这样的底层操作。

图4: Arduino Portenta H7

就在前几天,Arduino在Portenta系列中又推出了一款新的产品,9核的Arduino Portenta X8,这又是一款革命性的控制板,甚至可能会改变万物互联场景下开发的形式。Arduino Portenta X8是一种即插即用的工业级SOM,具有四核的NXP i.MX 8M Mini Cortex -A53,每核高达 1.8GHz ,一个Cortex -M4,高达400MHz,加上双核的STM32H747AII6 Cortex -M7/M4,一个Cortex -M7,高达480Mhz ,和一个Cortex -M4,高达 240Mhz,并且由于其模块化容器架构,能够运行独立于设备的软件。预装Linux操作系统(Arduino Portenta H7预装的是Arm Mbed操作系统)以及docker容器,docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。同时docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间。这相比传统的虚拟机方式要快很多。Arduino Portenta X8的性能非常强大,具有边缘AI和ML功能,这让我们在开展类似于工业4.0、智能农业,智能家居、智能建筑等应用的时候,可以快速的完成原型开发。

图5: Arduino Portenta X8

Arduino Portenta X8可以看成是一台微型电脑加上一个Arduino Portenta H7,微型电脑上预装的Linux操作系统中还安装了Python,这样在模块化docker容器架构中就可以直接运行Python了。另一方面,Arduino程序是运行在STM32H747微控制器上的,这样实际上Python程序和Arduino程序是独立运行的,两者的通信是通过之间的SPI总线实现的,如图5所示。

f305c798-d7d1-11ec-bce3-dac502259ad0.png

图6: Arduino Portenta X8上Python程序和Arduino程序之间的通信

另外,针对Portenta系列,Arduino这次还推出了一个Carrier(功能底板)——Portenta Max Carrier,这块功能底板有多种连接器,包含两个USB A型端口、一个网口、一个FD-CAN总线的RJ11端口、一个 mini-PCI Express (mPCIe) 插槽、一个带RS232/433/485总线的RJ12端口、立体声音频输入和输出以及专用麦克风输入、外部扬声器连接器和用于存储扩展的microSD 插槽。调试方面,有一个板载 JLink OB/Blackmagic探头。供电方面,Max Carrier 可以通过外部电源 (6-36V) 或板载18650锂电池供电。另外,还预装了两个无线通信模块:提供的LoRa连接的Murata CMWX1ZZABZ-078,和处理Cat M.1和NB-IoT蜂窝连接的u-blox SARA-R412M-02B。

图7:Portenta Max Carrier

通过这个功能底板,应该能够尽快的将Arduino Portenta H7或Arduino Portenta X8应用到你的项目中。

随着云、机器学习和容器在云计算广泛应用,我们能看到一种新的开发模式呼之欲出,它通过云将多方的软硬件整合在一起,能够借助tinyML、轻量级容器让机器人应用快速在各种各样的边缘计算场景快速部署。Arduino和树莓派等开源硬件,正在不断不断推进开发模式演化。相信可能要不了多久,我们就能够基于这样得开源硬件,更加快速地开发机器人应用。

原文标题:Arduino Portenta X8新开发模式支持Docker

文章出处:【微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 连接器
    +关注

    关注

    96

    文章

    12629

    浏览量

    133121
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83466
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184828

原文标题:Arduino Portenta X8新开发模式支持Docker

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    图书《arduino程序设计基础》

    的使用——u8glib的使用… 2308.3.1选择LCD并连接到Arduino. 2308.3.2连接到Arduino并建立u8g对象… 2318.3.3u
    发表于 06-12 14:37

    Arduino创建一个Hello World程序

    我们将以在我们的Arduino创建一个“Hello World”程序来开始我们的rosserial探索之旅。通过选择Arduino examples菜单的ros_lib->
    发表于 07-07 11:01

    如何在Arduino程序中引用接地引脚以允许Arduino程序和手表之间进行通信

    上,我认为它是数模转换的。我如何在 Arduino 程序中引用此引脚以允许 Arduino 程序和手表之间进行
    发表于 02-22 07:26

    基于Arduino无驱动板程序示例

    基于Arduino无驱动板程序示例
    发表于 12-17 21:16 2次下载

    Arduino板是什么如何使用IDE软件创建和上传Arduino程序Arduino

    本章我们将研究Arduino板和IDE软件,我们要用IDE软件创建和上传Arduino程序Arduino板(Arduino用草图表示
    发表于 05-14 18:11 4次下载
    <b class='flag-5'>Arduino</b>板是什么如何使用IDE软件创建和上传<b class='flag-5'>Arduino</b><b class='flag-5'>程序</b>到<b class='flag-5'>Arduino</b>板

    怎样使用Python编程和控制Arduino

    该项目是在PythonArduino之间进行通信的准系统。这种方法与通常的将脚本上传到Arduino本身的工作流程完全不同,但是它为使用
    的头像 发表于 11-28 17:52 1.7w次阅读

    强大的Arduino Portenta H7开发板

    Arduino Portenta H7,它是Arduino Pro 平台中的第一款高性能工业级开发板。其搭载双核STMicroelectronics STM32H747微控制器,能够同时运行高级代码和实时任务。
    的头像 发表于 08-24 16:00 6161次阅读

    工业应用的STM32 Arduino开发板Portenta H7

      新开发板为熟悉 Arduino 生态系统并希望体验工业解决方案的用户搭建了良好的桥梁。作为 Arduino 开发板意味着 Portenta H7 使用同样受创客和爱好者欢迎的工具和社区。
    的头像 发表于 05-13 09:19 2614次阅读

    Arduino Portenta定制的主机板

    电子发烧友网站提供《为Arduino Portenta定制的主机板.zip》资料免费下载
    发表于 11-08 10:38 0次下载
    为<b class='flag-5'>Arduino</b> <b class='flag-5'>Portenta</b>定制的主机板

    使用Arduino Yun与移动应用程序进行通信

    电子发烧友网站提供《使用Arduino Yun与移动应用程序进行通信.zip》资料免费下载
    发表于 12-20 09:33 0次下载
    使用<b class='flag-5'>Arduino</b> Yun与移动应用<b class='flag-5'>程序</b>进行<b class='flag-5'>通信</b>

    ArduPy:当Arduino遇见Python

    Python 最近的成功在很大程度上取决于简单性和不断发展以应对新挑战的能力。Python 不断开拓新领域,从桌面和 Web 应用程序到机器学习和数据科学应用程序。最近,针对嵌入式系统
    的头像 发表于 12-30 09:40 4520次阅读

    如何将Arduino MKR和Portenta安装到机柜中

    电子发烧友网站提供《如何将Arduino MKR和Portenta安装到机柜中.zip》资料免费下载
    发表于 02-03 11:39 0次下载
    如何将<b class='flag-5'>Arduino</b> MKR和<b class='flag-5'>Portenta</b>安装到机柜中

    Arduino Portenta H7双核调试

    电子发烧友网站提供《Arduino Portenta H7双核调试.zip》资料免费下载
    发表于 06-25 10:35 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Portenta</b> H7双核调试

    Python3与Arduino通信

    电子发烧友网站提供《Python3与Arduino通信.zip》资料免费下载
    发表于 06-26 14:39 0次下载
    <b class='flag-5'>Python</b>3与<b class='flag-5'>Arduino</b><b class='flag-5'>通信</b>

    如何使用Python和PinPong库控制Arduino

    Python程序员在编程Arduino时面临的第一个挑战是语言不同。Arduino IDE使用的是受C和C++启发的语言。实际上,像Arduino
    的头像 发表于 10-13 10:59 444次阅读
    如何使用<b class='flag-5'>Python</b>和PinPong库控制<b class='flag-5'>Arduino</b>