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

作者简介
程晨,科技作家,创客布道师。编著翻译出版人工智能、物联网、鸿蒙应用、3d打印、机器人领域相关图书数十余本,《掌控python》系列图书作者,minecraft我的世界系列图书作者,《无线电》、《爱上机器人》杂志特约作者,出版国内第一本arduino、第一本intel edison、第一本mixly图书。
2015 intel软件创新大使
2017elf全球杰出教育领袖
2019年arduino官方认证推广大使。
cie青少年机器人技术等级考试标准工作组副组长,cie青少年软件编程等级考试标准工作组副组长,编程、机器人多个团体标准主要起草人。
中国下一代教育基金会实践与创新工程专家委员会专家。
中国最大python教师社区联合发起人。
最早的编程形式应该算是打孔纸带了,之后伴随着中央处理单元出现了汇编语言。汇编语言在大学里,仍然是计算机课程中主要的编程语言之一。汇编语言只是将机器码做了简单编译,所以汇编语言编写的代码都不是太复杂,而且推广和移植都很难。随者操作系统的出现和发展,c语言得到广泛的普及。posix api和各种库的推出,大大改善了c语言和linux操作系统的流行。java虚拟机的跨平台特性,把面向对象的编程思想与计算机解耦,软件工程正式迈向高光时刻。云计算和容器的普及,大大简化了应用和服务的交付,go语言也因此受到欢迎。开发模式随着信息科技的发展和新的编程语言出现,不断向更高级迈进,云原生、低代码已经成为炙手可热的新方向。我一直在思考一个问题,在一个即将到来的云端一体万物互联的时代,应用开发是不是会呈现出一种新的形式,一种更方便、更友好的形式?
图1:开发语言和模式得变迁
随着互联网技术以及嵌入式技术(包括人工智能与边缘计算技术)的发展,我们正在创建一个万物互联的世界,这个世界最大的特征就是实现了人与机器或者机器与机器之间的信息交流。
而作为全球最著名的开源硬件arduino,其实一直都在为这样的一个世界布局。很多人知道arduino可能都是从其最经典的arduino uno开始的,虽然这块基于avr 8位单片机的控制板简单易用,但显然这个级别的控制板是无法承载整个iot的应用场景的。因此几年前,arduino就推出了arduino pro这个相对独立的品牌(pro的意思是专业,目前从产品上来说没有明确的划分,这个品牌更像是应用领域的不同)。arduino希望通过arduino pro能够在一个简单的物联网框架下快速、安全的将远程的传感器以及执行机构连接到自己的业务逻辑系统中,以少量的代码实现基于物联网应用开发平台,进一步的让企业通过简单、现实、可量化的步骤实现数字化转型。
图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-485、can总线、蓝牙或以太网功能的arduino扩展板,可以很方便的将arduino uno这样的控制板改造为物联网终端(还要依靠丰富的示例代码)。这些终端有着丰富的传感器和代码库。同时,对于终端控制板来说,arduino也陆陆续续推出了32位arm处理器的nano系列,以及专门针对iot的mkr系列。这些产品的性能都明显优于arduino uno,甚至可以在控制板上运行人工智能算法 (tinyml)。mkr系列则是充分考虑了联网与低功耗的问题,从wifi到gsm,从lora到窄带物联网等等。并提供lipo电池充电电路以及方便处理器进入“低功耗”模式的软件库。
图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所示。
图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阅码场】欢迎添加关注!文章转载请注明出处。


小米有品定制电暖器发起众筹,具备2000W大功率
时控开关符号_时控开关电路图
中美AI人才争夺,日本只能旁观
农业监控平台可为农作物打造适宜的生长环境
浅谈高速串行信号的自同步通信方式
Arduino Portenta X8上Python程序和Arduino程序之间的通信
行业知识 | 激光雷达是怎么工作的?
透过一张路线图,看清海尔得物联网优势
华为手机可以把纸质档秒变电子档
搭载Elliptic Labs技术的荣耀80系列智能手机正式发布
学习PLC编程技巧的六个方面的经验分享
瑞隆源荣获“深圳知名品牌”荣誉称号!
注水电机断路器信号灯闪光故障分析
自动优化非成像光学照明系统设计
如何利用单片机设计一个生活废(污)水处理系统?
STM32驱动ESP8266连接阿里云(2)----接入阿里IoT Studio实现Web可视化
智芯传感MEMS 微差压传感器在智能消防领域发挥极其重要作用
民用电压110V电和220V电的区别是什么
业绩下滑,340亿美元豪赌抵御亚马逊、微软
国产手机推荐:小米6/荣耀v9/一加5/努比亚Z17各有特色你买谁?小米6/荣耀v9/一加5/努比亚Z17对比评测