用于在micropython系统上远程执行的jupyter笔记本内核。

jupyter-micropython-remote的Python项目详细描述


jupyter内核通过repl与micropython板交互 接口。

通常通过usb/串行接口与micropython板一起使用, 不过,它也应该通过webrepl(可在esp8266上获得 仅限)。还包括micorpython项目的一些高级功能 管理;运行mpy cross、上载文件、将本地libs同步到micropython等。

微蟒

这个内核需要来自https://github.com/micropython/micropython/pull/3836的micropython支持 在发布时,它不在当前版本1.9.4中,因此需要1.9.5之前的主/每日快照

安装

确保在板上安装了足够多的新micropython(见上文)。

您还需要Python3.6或更高版本,以确保它在当前版本中可用 命令行。可选(推荐)使用您喜爱的pipenv/virtualenv设置 建立一个干净的环境来运行jupyter。

然后安装此模块:

pip install jupyter_micropython_remote

使用shell命令将内核安装到jupyter中:

python -m mpy_kernel.install

这将向jupyter注册内核,以便在 笔记本

运行

现在运行jupyter笔记本:

jupyter notebook

在笔记本中单击右上角的“新建笔记本”按钮, 应该会看到列出的micropython内核显示名称。

第一个单元格需要如下:

%connect <device> --baudrate=115200 --user='micro' --password='python' --wait=0

例如:

%connect "USB-SERIAL CH340""

或与您连接到 micropython/esp8266和。

<device>和参数与用于运行标准 pyboard.py

device can be serial port device or name

device can start with "exec:"
   "Execute a process and emulate serial connection using its stdin/stdout."

device can start with "execpty:"
    Execute a process which creates a PTY and prints slave PTY as
    first line of its output, and emulate serial connection using
    this PTY

device can be an ip address for webrepl communication

现在您应该能够通过运行 细胞。

目录中有一个micropythondemo.ipynb文件 显示了一些特性。

如果一个单元中断时间太长,它可能会响应“内核” ->;“中断”命令。

或者击中逃跑然后“我”两次。

进行软重启(当需要清除模块并恢复时 一些内存)类型:

%reboot
注意:重新启动内核实际上并不重新启动设备。
同时,按reset按钮可能会把事情搞砸,因为 此接口依赖于ctrl-a非回声粘贴模式来执行 东西。

您可以使用以下命令列出所有功能:

%lsmagic

mprepl

micropython模块的通信接口基于mprepl和pyboard。 mprepl最初来自https://github.com/micropython/micropython/pull/3034

此模块使用micropython中的虚拟文件系统(需要1.9.4) 要挂载本地PC的工作目录,jupyter是从实际的micropython中运行的 目录中的环境/remote/

这允许您使用 放松。

import os
print(os.listdir("/remote/")

还有一个注入的Util类和一些额外的文件处理工具, 以^{tt5}结尾$ 将所有文件/文件夹从源复制到目标,可以选择包含或排除 正则表达式过滤器。

Util.sync("/remote/src", "/lib/", delete=True, include=".*\.mpy")

有关详细信息,请参见文件mpy_kernel/mprepl_utils.py

%本地

单个单元也可以在本地PC上运行,而不是在远程PC上运行 以%local

开头的单元格作为内核

这对于直接处理本地文件、使用ipywidgets等非常有用。 这里的命令将由标准的ipython内核运行。

%local单元格中,还有一个特殊的全局函数remote(),它 将单个字符串参数传递给要运行的micropython板,返回 命令中的任何stdout。例如:

micropython单元

from machine import Pin
import neopixel
pixels = neopixel.NeoPixel(Pin(4, Pin.OUT), 1)

def set_colour(r, g, b):
    pixels[0] = (r, g, b)
    pixels.write()

set_colour(0xff, 0xff, 0xff)

本地单元格

%local
import colorsys
from ipywidgets import interact, Layout, FloatSlider

def set_hue(hue):
    r, g, b = (int(p*255) for p in colorsys.hsv_to_rgb(hue, 1.0, 1.0))
    remote(f"set_colour({r}, {g}, {b})")

slider = FloatSlider(min=0,max=1.0,step=0.01, layout=Layout(width='80%', height='80px'))
interact(set_hue, hue=slider)

贡献

请用任何你认为合适的方式使用和改进这个内核!

我更喜欢对主回购请求拉取:https://gitlab.com/alelec/jupyter_micropython_remote 我会很高兴的如果您还不在gitlab上,请查看并接受遗留github上的任何内容:https://github.com/andrewleech/jupyter_micropython_remote

背景

这个jupyter micropython内核最初是基于惊人的工作 完成时间 https://github.com/goatchurchprime/jupyter_micropython_remote.git

它们原来的自定义设备连接库已被替换为 Pyboard和MPREPL利用经验证的功能 在那里实施。此后,mprepl得到了实质性的扩展。
内核也经过了重新设计,以扩展完整的ipython 内核,所以本地细胞是完全功能的,我们可以使用ipython 输出格式的显示机制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Jetty是否有请求缓存?   数组中的java 2值与我的数据帧中的2列对应   对象序列化期间的java DbUtils类型转换问题   java根面板中不显示所有单独的面板   java通过代理或SSH隧道连接Hbase API   java困惑:与经典MVC控制器相比,JSF2中bean的角色   java在我的Triangle类中“找不到符号错误”   java在Android中设置从路径到自定义按钮的图像   java不绕轨道旋转椭圆   AES在socket上搞砸了序列化/反序列化。无效的流标头。JAVA   java在数组中搜索term和if语句   线程“main”java中出现异常。util。正则表达式。PatternSyntaxException:在索引0附近悬挂元字符“*”*   Websphere上的java Google反射无法打开url连接   java为什么inc/dec频道什么都不做?   java KeyListener无法访问keyPressed方法