BBC报道:用树莓派驱动的呼吸机将在哥伦比亚进行测试

原文链接:https://www.bbc.com/news/technology-52251286?at_custom3=%40BBCTech&at_custom2=twitter&at_campaign=64&at_medium=custom7&at_custom1=%5Bpost+type%5D&at_custom4=B69484B8-7D72-11EA-B016-60F74744363C

以下中文用 DeepL 机器翻译

哥伦比亚的一个团队要测试一种用Raspberry Pi电脑和易得的零件制作的呼吸机。

该设计和计算机代码是由加州的一名男子在3月份在网上发布的,他之前没有制造医疗设备的经验。

Marco Mascorro是一名机器人工程师,他说,他制造出这台呼吸机是因为知道治疗Covid-19的机器需求量很大。

他的帖子引起了医护人员的大量反馈。

他利用这些建议进行了改进。

“我是一个真正的信徒,我相信技术可以解决我们现在特别是这次大流行病中的很多问题,”他告诉BBC。

哥伦比亚团队表示,该设计对他们的南美国家来说很重要,因为传统模型的零件可能很难获得。

相比之下,Mascorro先生的设计只使用了容易找到的零件–例如,它所采用的阀门通常可以在汽车和管道供应商店中找到。

这台机器将在波哥大的两个机构–教皇Xavierian大学医院和Los Andes大学–进行快速测试。
显示空气压力的屏幕 图片版权为Marco Mascorro。
图片说明 该机器可以调节给病人的氧气量。

“对抗科维德-19的斗争就像一场比赛,”奥马尔-拉米雷斯说,他将领导这项工作。

“全世界都在与这种疾病竞争,但在不同的赛道上,决定这些不同赛道的是资源的获取和经验。”
计算能力

Raspberry Pi在呼吸机中扮演着重要的角色。

这个英国人的发明是一种小型、低成本的计算机板,最初是为了帮助教授计算机编码而诞生的。但在过去的8年里,它已经被发烧友和其他人拥护,形成了各种电子项目的大脑。

有一台电脑来控制通风器是至关重要的。它可以设置气压,打开和关闭阀门,并能调节病人是否需要完全呼吸或部分呼吸辅助。

Mascorro先生将所涉及的代码进行了开源,这意味着任何人都可以免费使用或修改它。

“开发一个以软件为中心的系统的好处在于,我们可以在不对硬件做太多改动的情况下,对流程进行改动。”他解释说。

测试

该设备将对一组人工肺进行五天不间断的通风换气,作为测试的一部分。

如果顺利通过,该设备将接受动物试验。

哥伦比亚集团希望随后能在5月初开始进行人体试验。

如果试验成功,目标是在今年年中开始在医院病人身上使用量产的版本。

这一时间表反映了哥伦比亚当局处理这一问题的紧迫性。测试和获得监管部门的许可来部署这种设备通常需要18个月左右的时间。

但一些医生仍然不相信这台机器能够完成任务,至少在目前的疫情爆发期间是如此。

“任何能够提供备份的设备都是有帮助的,但必须经过适当的测试,看它是否能够提供氧气和压力支持,”美国肺部协会首席医疗官Albert Rizzo博士说。

然而,Rizzo博士补充说,该项目有可能最终产生值得信赖的呼吸机,可在未来的大流行病期间使用。


最后添加项目网址:
https://github.com/Mascobot/pandemic-ventilator-2.0

香橙派 Pi Zero 上的容器操作系统 BalenaOS

香橙派是深圳迅龙公司的产品。该公司旗下有不同种类的基于 AllWinner 芯片的不同的 Pi. Pi Zero 只是其中一个比较低端的产品,H2(ARM Cortex-A7 Quad-core) 的CPU,512M 内存,1x 100M 网口, Wi-Fi 模块, OTG 电源 + 1x USB 2.0 ,最大 32GB TF 卡。当然操作系统要灌在 TF 卡上。

去 balenaCloud 注册一个账号以后,添加设备,选择香橙派 Pi Zero,下载 img,烧写到 TF 卡上,插入到香橙派,上电,插网线,它会自动 DHCP 从网络里取到 IP 地址,然后,过了很长很长时间(1天,2天?)后,在 balena 的云端可以看到“Online”,之前一直 Inactive,不理解是网络那里有问题。

Balena 在他们家网站介绍就是一堆构建,部署,管理 Linux 设备的工具集。下面的这个图基本上能概括他们家的产品列表。这是一家初创公司,看上去充满了很多创新的元素。

部署的前面10个设备是免费的,20个以内每个月 99 美元!50个设备,每个月 299 美元,100 个设备的话要 1299 美元,企业级支持是每月 2999 美元!

先看下,我们已经上线的香橙派吧:

让我们通过命令行进入香橙派看看里面到底是什么东西。我们用 balena scan 看下局域网内的设备:

我们用 balena ssh IP地址,就可以进入香橙派了。 使用 lsof -Pi 命令,我们就可以查看设备侦听的所有网络口:

看下板子的信息:

不需要重建分区的SD 卡分区扩容方案

OpenWrt 等一些操作系统刷完 img 到 SD 卡后, 16G 的 SD 卡,只用了一点点,经常需要“扩容”。之前的做法比较傻,就是重建分区,每次还要敲很多命令,还要把删除分区的起始扇区记录下来。

现在有了这段简单的代码,三行核心的代码就把这个工作自动化了,无需关心 SD 卡容量是 8G 还是 16G 还是更多,反正既然烧了,就是整张卡都是用在操作系统上了。

代码里的 DISK 就是类似 /dev/sdb 这样的, PART 就是分区 /dev/sdb2 这样的。 这里默认是第二分区。分区文件系统格式默认是 ext2/3/4 而不是其他。

burn () {
        fdisk -l ${DISK}>> /dev/null 2>&1 || (echo "could not find device $DISK - please check the name" && exit 1)
        # 烧写
        dd if=$IMG of=${DISK} bs=4M
        [ $? != 0 ] && echo "烧写出错了!" && exit 10
        MAXSIZEMB=$(printf %s\\n 'unit MB print list' | parted | grep "Disk ${DISK}" | cut -d' ' -f3 | tr -d MB)
        echo "[ok] ${PART} Will change to ${MAXSIZEMB} MB "
        parted ${DISK} resizepart 2 ${MAXSIZEMB}
        [ $? != 0 ] && echo "扩展分区出错了!" && exit 2
        e2fsck -y ${PART}
        resize2fs ${PART}
        [ $? = 0 ] && echo "文件系统扩展成功"
}

刷机愉快!

香橙派 Pi Zero Plus 上手记

废话不多说,树莓派玩了几台,之前买的是 Google AIY,还托兄弟从美国买了4台,69美刀一台,送了2台,自己留了2台,号称有 Tensorflow Lite 版本。但是自己没时间玩。后来又买了树莓派 4B,1G 内存的各种操作系统刷。 打算做一款屏蔽广告的产品,先要低成本啊, 搜到了老外用 Aliexpress 买的 Pi Zero,再一搜原来是深圳迅龙的产品,当然是挑 100 RMB 内的产品买,而且是要有有线网口的。所以就选了 Zero Plus。坑的是支持的操作系统版本没几个。 Arch Linux 的下载只有 135M,所以先从 Arch Linux Server 开始干起。

安装软件包,一定很慢, 所以先找国内的镜像, 国内有清华的,中科大的, 我们就把 /etc/pacman.d/mirrorlist 第一行修改为:
Server = https://mirrors.ustc.edu.cn/archlinuxarm/$arch/$repo
然后 pacman Syuw 就可以去掉那个更新时的因为 ca-certificates 的冲突报错的问题。


再返回去,说一下板子的镜像烧写问题,因为有之前树莓派的经验,所以,手册也没看,就下载了其他不相关的镜像,导致以为板子坏了,投诉了售后的黄小姐,在她热情的指点下,终于明白了,这个板子是必须插 SD 卡才能会亮灯的。正常的启动后是 DHCP 拿地址的,然后板子是红灯亮,网口灯黄灯亮(100M?),绿灯闪。
吐槽一下他们家的百度下载,那个百度网盘实在坑爹,从 Google 网盘下载都有 4M每秒,可是百度上就只能是 100多 Kb/秒。

然后就是 pacman -S vim sudo proxychains dnsutils 等各种工具了

且慢! 磁盘空间不够了!根文件系统只有 1.1G,已经 100% 满了!

这个难不倒我们, 把 SD 卡拔出来放到一台 Linux 机器下, 用 fdisk 删分区,建分区,扩展,然后挂接, growfs 就可以。

敲入 shutdown -h now,Zero+ 就自己灭灯了, 只有绿灯还常亮。拔卡!

前面具体删分区,建分区的步骤就是比较简单, 建分区的时候要注意起始扇区要用前面删除之前的那个起始扇区号,其他都是默认就可以。 然后挂接到 /mnt 的时候,可能会遇到超级块错误,也不要慌, 先用 fsck.ext4 -y /dev/sdb2 来做好 fsck 就可以挂接了。 我们看下挂接好之后, resize2fs 前后的磁盘空间

好了, SD 卡已经扩容完毕,我们umount /mnt; eject /dev/sdb 把 SD 卡插回 Pi Zero+

接下来就是安装其他软件的事情了,我们且听下回分解 … …

树莓派4B 上安装最新版本的 Ubuntu 1910 eoan

下载地址: https://ubuntu.com/download/raspberry-pi

下载到 Linux 机器上后解压:
# xz -d ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img.xz
# dd if=ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img of=/dev/sdb bs=32M
# mkdir /mnt/boot; mount /dev/sdb1 /mnt/boot
# touch /mnt/boot/ssh
# umount /mnt/boot; rmdir /mnt/boot
# eject /dev/sdb
拔掉 micro SD 卡,插入到 树莓派, 在 DHCP 网络里, 树莓派会自动取 IP 地址, arp 或者 nmap 或者网关上查看,或者 直接 ping ubuntu 看看上线。如果没有看到树莓派,看看网线问题。 然后
# ssh ubuntu@ubuntu 密码也是 ubuntu , 第一次登录会要求更改密码,并退出。
再次登录就能正常使用 ubuntu 了。

OpenWrt 树莓派 根文件系统大小的调整

在一台 Linux 机器上,当我们用 dd 命令把 OpenWrt 的操作系统 img 映像文件写入到 Micro SD 卡的时候,根文件系统默认只有 104M。

在系统还没有进一步更新之前(SD 卡还插在 Linux 机器上),我们实际上应该先扩充根文件系统,否则后面也要走这一步的。 设SD 卡盘号为【/dev/sdb】

删除第二个分区,重新建一个第二分区,设置起始扇区为原先的扇区号,结束为默认。

新建完以后:

然后运行 resize2fs /dev/sdb2 就可以。
挂接后确认文件系统已经是 15GB:
# mount /dev/sdb2 /mnt
# df -h /mnt

把 SD 卡插回树莓派,启动验证。

树莓派 4B + OpenWrt

先看 OpenWrt 官方关于树莓派的文档。 知道 4B 是 BCM2711的 family,去对应的下载目录就能找到对应的镜像。 下载 gz 文件到 Linux 上, gunzip, 用 fdisk -l 找到插入的要烧写的 SD卡 的盘号。然后

# dd if=openwrt-brcm2708-bcm2711-rpi-4-ext4-sysupgrade.img of=/dev/sdb bs=2M conv=fsync
记录了88+0 的读入
记录了88+0 的写出
184549376 bytes (185 MB, 176 MiB) copied, 8.47041 s, 21.8 MB/s

把 SD卡插入树莓派上启动, 插入网线,看到网口绿灯闪烁,就是有线已经连接上了。

烧写完毕的 OpenWrt 默认的 IP 地址是 192.168.1.1,有两种更改 IP 的办法。
一种就是前面的步骤中,烧写完毕后, mount /dev/sdb2 /mnt
然后修改 /etc/config/network 文件, 把里面的 IP 地址修改掉就可以。
(在系统没有第一次启动之前是没有这个 network 文件的)
另外一种,就是等默认系统启动后,把自己的 PC 设置一个静态的 192.168.1.x 的地址,直接 ssh root@192.168.1.1,然后 uci show network 看下。
然后 uci set network.lan.ipaddr=’192.168.x.y’; uci commit 就可以了。
然后把 PC 修改回 DHCP 方式,用修改好的 IP 重新 ssh 就可以进入 4B 了。

这个时候操作系统上啥也没有,只有命令行界面。 我们先 route add default gw 192.168.x.1 把网关加上, 修改 /etc/resolv.conf 把 dns 服务指定好。 这样 nslookup baidu.com 看看是否能解析, 如果可以,恭喜!我们接下来就可以 opkg update ,开始安装软件了!

# opkg install lsof curl coreutils proxychains-ng vim bash uhttpd luci procps-ng-ps procps-ng-w bind-tools bind-host fdisk block-mount haveged libustream-openssl file unzip netcat

为了一些简单的开发工具下载,我们需要:
# opkg install git make

安装好以上基本包后,浏览器应该就可以登录了。 超级强大的 树莓派, 不能浪费啊!安装其他东东:(因为会自动安装相关的依赖包,我们就只写一个)

# opkg install luci-i18n-base-zh-cn luci-i18n-samba4-zh-cn

# opkg install luci-i18n-wireguard-zh-cn luci-i18n-cifsd-zh-cn luci-i18n-dnscrypt-proxy-zh-cn

树莓派的另外一种管理无线网络的办法

如果一个设备只能通过无线网络连接,真是蛮郁闷的,如果需要连接到不同的无线网络里去, 每次都要修改 SD 卡上的配置文件 /etc/wpa_supplicant/wpa_supplicant.conf
那不是郁闷死? 一种办法就是写一个自己手机的共享热点的 名称和密码, 记录下来。 下次万一需要设置树莓派, 把自己的手机名称和共享热点的密码修改一下,然后 PC 端也可以连接到手机的共享热点,这样,PC 端就能登录树莓派了。

话说 Mac 上如果要修改 SD 卡上的 Linux 分区还是真是不好办, 要安装一个什么 osxfuse 和 ext4fuse 的东东,Homebrew 又极其缓慢,最后还是用 VirtualBox 挂接的一个没有硬盘的只有的 CentOS7-Minimal ISO 启动到 Rescue 模式,挂接 U盘后解决的。 还有另外一个 USB OTG(On The Go) 的办法, 要去修改 /boot/cmdline.txt 如下:核心的就是在 rootwait 之后,添加了:
modules-load=dwc2,g_ether
还要确认 /boot/config.txt 包含:
dtoverlay=dwc2

重新启动后,可以看到树莓派上多出一块 usb0 的“网卡”,会提供 DHCP 给连接到上面的设备。我们的 Macbook 上网络设备会多出一个 RNDIS/Ethernet Gadget 的网卡,地址是 192.168.11.54,我们可以用 arp 或者 nmap 发现树莓派,这样就无需无线网络就可以登录树莓派了。

总结一下连接办法:一种是通过 Linux 虚拟机挂接 SD 卡修改无线配置文件,另外一种就是通过 USB 连接 data 端口,让 PC 设备成为 DHCP 客户端,还有一种就是把无线热点的配置固定写死到树莓派里。