作者:SATURN
Python借助人工智能火了一把!也是因为如此,许多人认识了MicroPython,原来在MCU上也可以玩的Python!而且随着社区力量的加入,MicroPython也变得越来越强大了!
首先是MCU的支持类型越来越多,其次各种三方库的驱动程序也越来越多,如SSD1306,MPU6050等设备,都可以在MicroPython上顺利驱动了!
作为网络前端的Java脚本似乎也不甘寂寞,在继的NodeJS大获用户好评之后,似乎也开始在MCU领域崭露头角,准备大干一场!今天要给大伙介绍的就是这样一款开发板,在MCU上跑使用Javascript!
主角登场,光芒四射!
然而光芒是没有的,ESPRUINO PICO这个板子太小了!小到什么程度,如下
作为对比,拿个Micro SD卡套与之比较下,ESPRUINO PICO开发板尺寸大小约33mmX15mm,可谓将Pico演绎到了极致!
ESPRUINO PICO开发板一侧直接就是USB接口,数据线也省了。开发板上的GPIO采用邮票孔 过孔结合方式,这下老铁们想抱怨也找不到借口了,想怎么用就怎么用!
Espruino Pico的核心就是一个STM32F401,ST爱好者看到这个LOGO,不由长舒了一口气,找到队友的感觉真好!潜意识了想到了一个问题,既然JS是跑在ST的MCU上,是不是我的核蛋白板子也可以?!想想都很激动,是真的鸡动!
Espruino Pico的规格,实际上也就是STM32F401的规格如下:
•22个GPIO引脚:9个模拟输入,21个PWM,2个串行,3个SPI,3个I2C
•所有GPIO均可承受5伏电压(Arduino兼容)
•2排9个0.1“针脚,末端带有第3个0.05”排8针
•板载USB A型连接器
•两个板载LED和一个按钮。
•STM32F401CDU6 32位84MHz ARM Cortex M4 CPU
•384kb闪存,96kb RAM
•板载3.3v 250mA稳压器,可接受3.5v至16v的电压
•睡眠时的电流消耗:<0.05mA - 使用2500mAh电池超过2。5年
•板载FET可用于驱动高电流输出
GPIO及外设的布局如下
各位老铁对硬件的评价大致就是如此:也就这样!
所以接下来的时间,我们开始体验JS的神奇。Espruino是微控制器的JavaScript解释器。
它专为具有128kB闪存和8kB RAM的设备而设计。这是Espruino在GitHub上对自己的介绍,不过随着Espruino的发展,其硬件支持平台已涵盖了包括ESP32,ESP8266,ST NUCLEO等诸多厂商品牌。
JavaScript是解释型语言,需要一个解释器,网页浏览器都内置了JS解释器,而在Linux / Windows的等操作系统平台,节点也是一个解释器。
同样,要在MCU上运行JS,自然也需要一个解释器。
而在MCU上的这个解释器则是固件程序.Espruino Pico出厂时已预置JS解释器,可以通过串口与PC进行交互。
Espruino Pico与PC连接后,通过串口可以直接与硬件交互
直接使用digitalWrite命令可以控制板载的LED灯,执行上面两条命令,会看到LED1灯的变化。正如MicroPython一样,这种REPL适合做简单的代码评估及测试。不过要写一个完整的程序,还是使用IDE来得更方便。
Espruino提供了Web版和本地版的IDE编程环境,如果网络速度不错,Web IDE是个不错的选择,毕竟不要考虑组件更新等问题。
IDE提供了设备连接,REPL环境及脚本窗口环境,另外也可以通过IDE来对设备进行固件升级等功能。点击窗口左上角的连接图标,选择Espruino Pico所在的串口,如下
连接过程中会给出提示信息,显示连接是否成功
这是连接过程中给出的信息,除了显示连接是否成功外,IDE也检测到当前设备的固件版本号,提示用户是否需要更新固件,提示信息最下面显示的是当前设备的版本号等信息。
为了获得更好的稳定性及性能,官方建议及时更新固件版本,固件更新操作使用IDE提供的更新程序来完成,如下
点击Flash Firmware按钮,程序会自动从网络下载最新的固件,开始更新操作
更新过程中会提示用户选择相关的硬件版本,从这里也可以看出,Espruino家族已包括了不少产品,从WiFi到BLE,再到LORA,都有覆盖,吾道不孤啊。
等固件更新进度条走完,固件更新操作也完成了,当前最新的版本号为1V99。
更新后发现版本号已变成了1v99,另外端口号从15变成了16了。
JS开创性的使用了异步非阻塞编程模型,非阻塞I/O是程序执行过程中,I/O操作不会阻塞程序的执行,也就是在I/O操作的同时,继续执行其他代码(这得益于Node的事件循环机制)。
在I/O设备效率还远远低于CPU效率的时代,这种I/O模型(非阻塞I/O)为程序带来的性能上的提高是非常可观的。
下面以一段代码来解释下
程序输出结果将会是
Main Program continues!
File read completed!
代码直接就是并行执行的,没有线程、进程这些概念。
接下来,以一个简单的程序为例,体会如何编写代码并上传到开发板,程序代码如下
在IDE的编辑窗口中输入代码,然后点击
图标,
将当前代码发送到Espruino Pico,然后就可以看到代码开始运行的效果了。不过此时掉电的话,代码将不会保存,如果要保存当前挖地道从,则需要在IDE左侧交互窗口中输入save() 命令,然后代码就保存到内部存储器中了,下次上电,代码将会从头开始运行。如下
要更好的让Espruino Pico工作,接下来的工作需要好好的了解Javascript的基本语法,然后是Espruino的库,这个工作量其实也不小,好在官方提供了大量的参考代码和完整的API参考,用户可以通过从这些代码入手,慢慢掌握Espruino的用法。
这是使用Espruino Pico连接Nokia 5110屏并显示一个时钟的画面,具体代码可以参考官方例程。
查看官方代码时,笔者发现一个很有意思的应用,就是使用Espruino Pico连接键盘和VGA显示器的应用,如下
看到这里,不得不感叹其强大!
以前笔者一直推崇使用Python语言,不过在接触并使用Espruino Pico(Javascript)的过程中,忍不住感慨:除了Python,其实Javascript也照样强大!
总而言之,Espruino将Javascript引进了MCU的世界,目前除了支持STM32的许多MCU型号之外,还支持诸如ESP32/ESP8266等许多流行的MCU硬件平台,为用户提供另外一种使用单片机的全新空间,具体的硬件平台请参考官方的github代码,你将会有更多的收获!
,