使用 K3s 在树莓派上运行 Kubernetes 集群

什么是Kubernetes?

Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

使用Kubernetes可以:

自动化容器的部署和复制

随时扩展或收缩容器规模

将容器组织成组,并且提供容器间的负载均衡

很容易地升级应用程序容器的新版本

提供容器弹性,如果容器失效就替换它,等等…

跟随接下来的介绍,自己搭建一个三节点的 Kubernetes 集群。

我对在树莓派上搭建 Kubernetes 集群已经感兴趣很长时间了,只要照着网上的教程,我可以在由三个树莓派组成的集群中搭建一套 Kubernetes 并正常运行。但在这种情况下,主节点上的内存和 CPU 资源捉襟见肘,执行 Kubernetes 任务的时候往往性能不佳,想要升级 Kubernetes 就更不可能了。

这个时候,我非常激动地发现了 K3s 这个项目。K3s 被誉为在可用于资源受限环境下的轻量级 Kubernetes,它还针对 ARM 处理器做出了优化,这让 Kubernetes 集群可以在树莓派上运行得更好。在下文中,我们将会使用 K3s 来创建一个 Kubernetes 集群。

准备

要按照本文介绍的方式创建 Kubernetes 集群,首先需要准备:

至少一个树莓派(包括 SD 卡和电源)

网线

将所有树莓派连接到一起的交换机或路由器

我们会通过在线安装的方式安装 K3s,因此还需要可以连接到互联网。

集群概览

在这个集群里,我们会使用三个树莓派。其中一个树莓派作为主节点,我们将它命名为 kmaster ,并为其分配一个静态 IP 192.168.0.50 (注:假设使用的私有网段是 192.168.0.0/24),而另外两个树莓派作为工作节点,分别命名为 knode1 和 knode2 ,也分别分配 192.168.0.51 和 192.168.0.52 两个 IP 地址。

当然,如果你实际的网络布局和上面不同,只要将文中所提及到的 IP 替换成你实际可用的 IP 就可以了。

为了不需要通过 IP 来引用某一个节点,我们将每个节点的主机名记录到 PC 的 /etc/hosts 文件当中:

echo -e “192.168.0.50\tkmaster” | sudo tee -a /etc/hosts echo -e “192.168.0.51\tknode1” | sudo tee -a /etc/hosts echo -e “192.168.0.52\tknode2” | sudo tee -a /etc/hosts

部署主节点

我们首先部署主节点。最开始的步骤当然是使用镜像安装最新的 Raspbian,这个步骤可以参考我的另一篇文章,在这里就不展开介绍了。在安装完成之后,启动 SSH 服务,将主机名设置为 kmaster ,然后分配静态 IP 192.168.0.50 。

在主节点上安装 Raspbian 完成后,启动树莓派并通过 ssh 连接上去:

ssh pi@kmaster

在主节点上执行以下命令安装 K3s:

curl -sfL https://get.k3s.io | sh –

等到命令跑完以后,一个单节点集群就已经运行起来了。让我们检查一下,还在这个树莓派上执行:

sudo kubectl get nodes

就会看到这样的输出:

NAME STATUS ROLES AGE VERSION kmaster Ready master 2m13s v1.14.3-k3s.1

获取 连接令牌 join token

之后我们需要部署工作节点。在工作节点上安装 K3s 的时候,会需要用到连接令牌,它放置在主节点的文件系统上。首先把连接令牌保存出来以便后续使用:

sudo cat /var/lib/rancher/k3s/server/node-token

部署工作节点

通过 SD 卡在每个作为工作节点的树莓派上安装 Raspbian。在这里,我们把其中一个树莓派的主机名设置为 knode1 ,为其分配 IP 地址 192.168.0.51 ,另一个树莓派的主机名设置为 knode2 ,分配 IP 地址 192.168.0.52 。接下来就可以安装 K3s 了。

启动主机名为 knode1 的树莓派,通过 ssh 连接上去:

ssh pi@knode1

在这个树莓派上,安装 K3s 的过程和之前差不多,但需要另外加上一些参数,表示它是一个工作节点,需要连接到一个已有的集群上:

curl -sfL http://get.k3s.io | K3S_URL=https://192.168.0.50:6443 \ K3S_TOKEN=刚才保存下来的连接令牌 sh –

K3S_TOKEN 的值需要替换成刚才保存下来的实际的连接令牌。完成之后,在主机名为 knode2 的树莓派上重复这个安装过程。

通过 PC 访问集群

现在如果我们想要查看或者更改集群,都必须 ssh 到集群的主节点才能使用 kubectl ,这是比较麻烦的。因此我们会将 kubectl 放到 PC 上使用。首先,在主节点上获取一些必要的配置信息, ssh 到 kmaster 上执行:

sudo cat /etc/rancher/k3s/k3s.yaml

复制上面命令的输出,然后在你的 PC 上创建一个目录用来放置配置文件:

mkdir ~/.kube

将复制好的内容写入到 ~/.kube/config 文件中,然后编辑该文件,将

server: https://localhost:6443

改为

server: https://kmaster:6443

出于安全考虑,只对自己保留这个配置文件的读写权限:

chmod 600 ~/.kube/config

如果 PC 上还没有安装 kubectl 的话,就可以开始安装了。Kubernetes 官方网站上有各种平台安装 kubectl 的方法说明,我使用的是 Ubuntu 的衍生版 Linux Mint,所以我的安装方法是这样的:

sudo apt update && sudo apt install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add – echo “deb https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee -a /etc/apt/sources.list.d/kubernetes.list sudo apt update && sudo apt install kubectl

上面几个命令的作用是添加了一个包含 Kubernetes 的 Debian 软件库,获取 GPG 密钥以确保安全,然后更新软件包列表并安装 kubectl 。如果 kubectl 有更新,我们将会通过 标准软件更新机制 standard software update mechanism 收到通知。

现在在 PC 上就可以查看 Kubernetes 集群了:

kubectl get nodes

输出大概会是这样:

NAME STATUS ROLES AGE VERSION kmaster Ready master 12m v1.14.3-k3s.1 knode1 Ready worker 103s v1.14.3-k3s.1 knode1 Ready worker 103s v1.14.3-k3s.1

至此,我们已经搭建了一个三节点的 Kubernetes 集群。

K3s 的彩蛋

如果执行 kubectl get pods –all-namespaces ,就会看到其它服务的一些 Pod,比如 Traefik。Traefik 在这里起到是反向代理和负载均衡器的作用,它可以让流量从单个入口进入集群后引导到集群中的各个服务。Kubernetes 支持这种机制,但 Kubernetes 本身不提供这个功能,因此 Traefik 是一个不错的选择,K3s 安装后立即可用的优点也得益于此。

在后续的文章中,我们会继续探讨 Traefik 在 Kubernetes ingress 中的应用,以及在集群中部署其它组件。敬请关注。

via: https://opensource.com/article/20/3/kubernetes-raspberry-pi-k3s

作者:Lee Carpenter 选题:lujun9972 译者:HankChow 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

工业树莓派与MCC HAT的连接方案

MCC HAT是由MCC公司基于树莓派® HAT标准开发,并达到工业级测试测量要求的成熟产品。随着树莓派®应用的扩展,最终用户的需求也出现“个性化”需求。

本文档旨在提供MCC HAT与树莓派®的可选连接方式。此类方式可用在产品研发,产品集成,产品测试等领域。

MCC HAT与树莓派®正常连接通过将40-Pin全覆盖于树莓派®之上 (图1)。

图1:MCC HAT安装

树莓派®的模型包括 A,B,2,3,4等,树莓派®还提供另一种工业级产品 CM (Compute Module),更多信息可参考树莓派®官网下CM介绍。

由于CM特殊用途,研究和使用CM需要搭载特殊的母板,详见CMIO (Compute Module IO) (图2)。

图2:CMIO

由于CMIO上120-pin无法与MCC HAT直接安装使用,因此使用外部连接的方式将MCC HAT与CMIO连接(图3)。

连接标准请参考MCC HAT产品手册中对GPIO的介绍。

操作步骤

1、硬件安装图示

图3:CMIO连接HAT

硬件GPIO连接信息:

2、软件修改;编译 dt-blob.bin 文档。

修改此文档目的为更改默认引脚配置。

a) 下载默认引脚配置文件 dt-blob.dts

b) 修改 pins_cm 和 pins_cm3 中参数:

原内容:

修改后:

c)编译 dt-blob.dts:

sudo dtc -q -I dts -O dtb -o /boot/dt-blob.bin dt-blob.dts

d)编译成功后复制至 /boot 下,并重启设备。

3、成功完成上述操作后可运行 MCC HAT 现有 Demo app。

默认已成功安装Daqhat库,安装MCC HAT驱动请参考 https://github.com/mccdaq/daqhats。

via https://mp.weixin.qq.com/s/uXL0Ue_HpMm-OfjdCpdW2Q

更多 MCC 的数据采集方案:https://www.nxez.com/partner-mcc

3D 打印制造树莓派 4B 平板电脑

MAKER:InnovateAsterisk/译:趣无尽 Cherry(转载请注明出处)

前不久我们介绍过一个由树莓派 DIY 一台桌面电脑的项目:《Samytronix Pi:用树莓派 DIY 的桌面计算机》,其完成度非常高。这次我们再推介一个类似的项目,基于树莓派 4B 和 3D 打印部件制造的平板电脑。希望大家喜欢!

项目所需的所有组件都非常容易获取。需要注意的是要预备足够强大的电源,它能够插入电线充电,也能够在没有充电的情况下正常运行。该款平板电脑也能够在没有键盘的情况下运行正常。即使没有插入键盘和鼠标,用户界面中的所有内容都可以正常工作。

目前使用的系统是 Raspbian OS。稍后我将找到更合适的“触摸优先”的方案。

特征:

系统基本芯片:树莓派 4B+(4Gig RAM)。

显示屏:7英寸液晶显示屏(带触摸)。

电源:PiJuice UPS(带有 5000 mAmp 电池)。

摄像头:1080p 相机(前置)。

声音和扬声器:声卡,能为两个扬声器和两个麦克风供电,一个音频耳机插孔

加速度计:陀螺仪/加速度计,通过 python 控制,可以调整屏幕方向。

冷却:风扇连接到风扇速度控制器,并通过 python 控制。

USB:分支 USB。

按键:电源按钮和音量上/下摇杆。

LED 指示灯:充电显示以及重定向在外壳上的电源和活动 LED 灯。

背板:竹木背板,带有激光雕刻图案。

项目详细信息:GitHub https://github.com/InnovateAsterisk/Raspberry-Pi-Tablet

材料清单

树莓派 4B+/3B+ × 1

7英寸树莓派 LCD 显示屏(带触摸) × 1

PiJuice UPS × 1

PiSupply 5000mAmp 电池 × 1

树莓派 1080p 相机 × 1

Waveshare 音频 HAT(声卡) × 1

扬声器(8欧,1W) × 2

MPU-6050 加速度计 × 1

陀螺仪 × 1

HW-517 PWM 风扇速度控制器 × 1

30mmx30mmx7mm 风扇 × 1

128G SD卡 × 1

按钮 × 3

USB 2.0 × 1

彩色电线 × 若干

18AWG 电缆 × 若干

3MM 木料 × 若干

准备工作

在开始动手前,我们需要对购买的组件进行一些修改的准备工作。要将比较大的零件(例如螺丝盒和 USB 盒等)从 PCB 板上取下来,稍后我会将电线焊接到板子上。

1、树莓派:取下 USB 模块和网络模块(不要拆焊,使用切割器取下金属外壳并切掉塑料)。根据接线图,移除除顶部的六个引脚之外的所有 GPIO 引脚。

2、LCD 显示屏:从 PCB 板上移除 USB 模块,然后移除背面的两个 12mm 引脚。

3、PiJice:移除透明的塑料电池仓。移除 GPIO 引脚的黑色塑料绝缘体,然后切割 GPIO,仅留顶部的六个引脚(右侧三个,左侧三个)。

4、HW-517:移除螺丝块(拆焊)。

5、wm8960:移除 GPIO 的黑色塑料绝缘体,扬声器电线块和螺钉,然后根据接线图切割 GPIO。

6、风扇:移除散热器。

3D 打印

所有 3D 文件请在项目文件库中下载。

https://make.quwj.com/project/218

也可在 Thingiverse 上获得。

https://www.thingiverse.com/thing:4051520

1、使用胶水将每一层粘合在一起。各层应整齐地放置在彼此的顶部。第一层和第二层都有锁扣,帮助齐该层。

2、取下 PiJuice 上的塑料螺母,然后将其粘到第二层中提供的空间中。接下来可以打磨了。

3、使用 100 粒度的砂纸来打磨所有层线。

4、使用400-800 粒度的砂纸打磨外壳表面,使它们变得光滑。

5、使用类似布拉索(Brasso)的金属磨料,使塑料具有完美的光洁度。

6、最后将外壳进行黑色的喷漆。

接线

根据电路图连接所有组件,每个组件都使用其相应的编码的颜色电线进行接线。完成后,将板子放入外壳中,并将导线连接在一起。

制作平板背面

1、将激光器连接到打印机,将风扇速度控制器的 PWM 用作激光器的功率控制器。

2、当风扇充满时,则激光器充满。如果风扇显示 10% 时,则激光器只在木板表面轻轻的灼烧。能够将我需要的图案雕刻在木板的表面。

3、我使用的 gcode 将激光的高度设置为 50mm,因此请正确的设置激光的焦点为 50mm。

4、木板的尺寸为 112mm x 230mm,并且你需要打磨木板以便适合第3层。

你也可以根据自己的需要进行设计,然后将设计的方案转到

http://nebarnix.com/img2gco/

木板的具体信息,请在项目文件库中下载。

https://make.quwj.com/project/218

安装软件

1、安装 Raspbian 操作系统。

https://www.raspberrypi.org/

2、将下载的文件解压缩到桌面,然后使用 Etcher,

https://www.balena.io/etcher/

将 .img 文件闪存到 SD 卡。

3、将 SD 卡从电脑中取出,然后插入树莓派的 SD 卡插槽中。按住机箱侧面的电源按钮两秒钟,启动平板电脑。

4、第一次启动时,它将自动调整分区大小以填充 SD 卡。稍后,它将重新启动,你可以在 Raspbian OS 中看到欢迎的界面。

5、点击下一步,再次单击下一步,你可以暂时跳过密码设置,然后关闭黑色边框的选项。

6、路由器中选择无线网络,然后输入密码。插入 USB 键盘,因为屏幕上没有键盘。

7、在下一个屏幕上跳过更新(稍后进行)。

设置平板

安装完毕后,我们将进行一些设置,以便可以远程访问平板电脑。

1、单击树莓派图标(左上方),转到首选项,再转到树莓派配置,单击接口选项卡,启用 SSH 和摄像头,I2C 和 SPI,单击确定后重新启动。

2、其他工作可以在电脑的远程终端中完成。

在 Windows 上使用 Putty,在 Mac 上使用 Terminal,用以下方式登录树莓派平板电脑:

ssh pi@raspberrypi.local

默认密码为 raspberry

然后执行以下命令:

sudo su apt-get update git clone https://github.com/waveshare/WM8960-Audio-HAT cd WM8960-Audio-HAT ./install.sh reboot

重新启动后,重新登录,树莓派保持

sudo nano /boot/config.txt

在 nano 内,进行以下更改:

找到

#hdmi_drive=2

这行,移除前面的的 # (注释号) ,修改后面的值为 1。

找到

dtparam=audio=on

这行,在这行开头添加 #,注释掉这行。

在文件最后面添加一行,内容为

hdmi_ignore_edid_audio=1

Ctrl+s (保存)

Ctrl+x (退出编辑器)

sudo reboot

再次重新启动,重新登录并执行以下操作:

sudo su apt-get install libasound-dev python -m pip install –upgrade pip setuptools wheel pip install pyalsaaudio exit

现在你可以以树莓派的用户身份返回,从 GitHub 获取项目

git clone https://github.com/InnovateAsterisk/Raspberry-Pi-Tablet.git

现在,你还需要构建三个服务:屏幕旋转,音量增加和降低以及风扇打开和关闭。

sudo nano /lib/systemd/system/PiTabAudio.service

内容如下:

[Unit] Description=Pi Tablet Audio Service After=multi-user.target Conflicts=getty@tty1.service [Service] Type=simple ExecStart=/usr/bin/python /home/pi/Raspberry-Pi-Tablet/Services/audio.py StandardInput=tty-force [Install] WantedBy=multi-user.target

运行命令:

sudo systemctl daemon-reload sudo systemctl enable PiTabAudio.service sudo systemctl start PiTabAudio.service sudo systemctl status PiTabAudio.service sudo nano /lib/systemd/system/PiTabScreen.service

内容如下:

[Unit] Description=Pi Tablet Screen Service After=multi-user.target Conflicts=getty@tty1.service [Service] User=pi Group=pi Type=simple ExecStart=/usr/bin/python /home/pi/Raspberry-Pi-Tablet/Services/screen.py StandardInput=tty-force [Install] WantedBy=multi-user.target

运行命令:

sudo systemctl daemon-reload sudo systemctl enable PiTabScreen.service sudo systemctl start PiTabScreen.service sudo systemctl status PiTabScreen.service sudo nano /lib/systemd/system/PiTabFan.service

内容如下:

[Unit] Description=Pi Tablet Fan Service After=multi-user.target Conflicts=getty@tty1.service [Service] Type=simple ExecStart=/usr/bin/python /home/pi/Raspberry-Pi-Tablet/Services/fan.py StandardInput=tty-force [Install] WantedBy=multi-user.target

运行命令:

sudo systemctl daemon-reload sudo systemctl enable PiTabFan.service sudo systemctl start PiTabFan.service sudo systemctl status PiTabFan.service sudo reboot

现在,可以安装 PiJuice 的工具和服务:

sudo apt-get install pijuice-gui

完成

现在所有工作已经完成,可以开始测试。

via

树莓派工业控制之数据采集 WebDAQ 系列

在移动设备和互联设备如此盛行的年代,远程数据访问变得越来越重要。WebDAQ采用了一种新的数据记录仪架构,让使用者可以在世界上任何地方配置并访问数据。

树莓派的强大功能和多样的能力已经广泛应用于整个工业中,其中Measurement Computing已经将树莓派集成到 WebDAQ 系列数据记录器中。树莓派在高性能处理器,专业工程应用中的成功,证明了它一直处于工业设计中OEM首选的地位。

远程配置和监控

WebDAQ系列提供了完整且简单易用的远 程数据采集方案。利用嵌入式网络服务器, 用户可以配置并运行简单到复杂的数据记 录操作,比如记录数据、设置报警条件以 及在任何地方的任一台互联网设备实时查 看数据。

无限采样空间

使用3GB内部存储、SD卡输入和支持USB 闪存驱动器记录所需的所有数据。可以 远程查看和下载数据,并将其转换为与 Microsoft®Excel®和其他分析软件兼容 的.CSV®文件。

集成硬件和软件

WebDAQ系列集软件硬件于一身,无需另外读取软件或购买额外的硬件。WebDAQ网络服务器针对桌面应用和移动设备进行了优化。用户可以用智能手机、平板电脑或笔记本电脑,在简单直观的界面进行数据采集任务。

灵活的触发、警报和提醒方式

对许多数据采集应用来说,将数据同步到目标事件至关重要。WebDAQ同时支持触发器和警报 来响应对应的事件条件,控制数字输出以及通过电子邮件或短信发送通知。为未来设计建立于Linux上并具有四核处理器,WebDAQ为将来的扩展提供了 平台。随着物联网的发展,WebDAQ将会进一步增加功能。

WebDAQ 904

WebDAQ 904是款独立的通用输入数据记录仪,设计用于远程监视和控制。所有的智能模块均集成在WebDAQ内部,无需PC和其他软件。用户可以利用嵌入式WebDAQ网络服务器轻松配置简单或复杂的应用、记录振动、电压数据、更新数字输出、发送基于报警条件的信息以及在任何设备利用任何浏览器查看实时数据。

WebDAQ 904可从多至4路模拟输入执行高精度测量。用户可以测量来自应变仪,RTD,热电偶和负载传感器等多种信号。WebDAQ 904由坚固的外壳保护,可完美应用于工业环境。

提供4通道24位同步模拟输入,可独立配置:

电压(高至±60V)、电流、 热电偶、RTD、电阻、基于电桥的传感器

电压/电流激励

最高100 S/s/ch采样率

4路用于触发/报警带有隔离功能的数字IO通道

各通道均有A/D,各通道间和系统与主机间均有隔离措施

可将数据记录至内部存储或映射的网络存储

共享文件夹以通过本地网络查看文件

将数据导出至csv、UFF或二进制文件以供其他应用程序使用

通过电子邮件和短信发送警报和事件通知

支持Web数据接口 – REST API

远程监控

支持WIFI

无限采样空间(存储空间基于存储器)

实时查看数据,浏览历史数据

可配置客户端读/写访问权限

无需安装驱动程序软件

便捷、灵活的任务配置机制

有关产品的详细信息可以查看官网。

WebDAQ 316

WebDAQ 316是一个独立温度数据记录仪,专为远程监视和控制热电偶数据采集而设计。

WebDAQ Brochure记录16路热电偶通道

内置网络服务器,允许其他设备从浏览器访问该设备

支持WiFi

实时查看数据,浏览历史数据

无限采样空间(存储空间基于存储器)

便捷,灵活的任务配置机制

四路隔离数字I/O,可用于触发信号和报警信号

可通过电子邮件和短信进行报警和通知

可导出为.csv格式文件,支持Excel®和MATLAB®

有关产品的详细信息可以查看官网。

WebDAQ 504

WebDAQ 504是独立式声音和振动数据记录仪,用于远程监控、分析和控制。

记录4路同步IEPE输入

内置网络服务器,允许其他设备从浏览器访问该设备

支持WiFi

实时查看数据,浏览历史数据

无限采样空间(存储空间基于存储器)

便捷,灵活的任务配置机制

实时FFT用于连续监控或分析

四路隔离数字I/O,可用于触发信号和报警信号

可通过电子邮件和短信进行报警和通知

可导出为.csv格式文件,支持Excel®和MATLAB®

有关产品的详细信息可以查看官网。

MCC 产品的更多信息请访问:

数据采集专家MCC

对开源社群的献礼 – CutiePi 树莓派平板电脑

想要摆脱束缚、带着你的程序到处探险吗? 这台一应俱全的树莓派平板电脑可能就是最佳解。

长期以来怀抱着携带型 Linux 装置的梦想,一群开源狂热份子着手设计打造,CutiePi 平板电脑专案 (https://cutiepi.io) 由此应运而生。

CutiePi官网:https://cutiepi.io/

内建树莓派Compute Module 3+ Lite 模组与一块客制化的主板,搭配8 吋触控屏,与一般平板电脑相仿的功能,彻底满足将自己树莓派专案「带着走」的需求。

左图为CutiePi主要零组件,右图为组装后的CutiePi平板

「我们的设计目标是能像一般电子产品一样地使用CutiePi 平板,」计画负责人Penk Chen 表示,「里面有一颗陀螺仪、一个负责读电量和按钮讯号的MCU、电源管理模组、WiFi/蓝牙、喇叭..等。我们也保留了相机接头,并将剩余的GPIO 脚位引出,使它依然对黑客╱自造者友善。」如此一来使用者便可利用CutiePi 开发自己的可携式树莓派专案。

要做出可用的携带型装置并不容易。 「只有锂电池和直流升压模组是不够的,」Penk 提到。 「一些我们习以为常的消费性电子产品功能,比如说边充电边使用、显示剩余电量、或仅是侦测是否有电源线插入,靠现成的模组或套件拼起来都很麻烦,这还不包括写个真正能用的UI,并做出能装下电路元件与线材的外壳。」

订制的嵌入式主板

第一代的 CutiePi 原型其实只是一个纸盒,配上现成的 HDMI 屏、Raspberry Pi 3 和一个行动电源。第二代则将 Pi 3 上包括 HDMI 等接头通通解焊,改用 FCC 软排线减少厚度,然后装进 3D 列印的壳里。

一般的 maker 专案可能就此满足了,但 CutiePi 团队马不停蹄地打造了第三代原型:自行设计了一块主板 CutiePi board,可搭配树莓派 Compute Module 计算模组使用。 「使用 Compute Module 能让装置更轻薄,并能探索与树莓派开发板不同形式的硬体设计,最重要的是让我们有量产 CutiePi 平板的能力。」Penk 解释道。

CutiePi 团队自行开发的CutiePi board

CutiePi board功能配置图

开发时程大概花了三个月,完成设计、布线、打板与硬体驱动,主要是靠着树莓派基金会佛心的公板设计。团队也将这份通过 OSHWA 认证的开源硬体专案在 GitHub 上完整释出:https://github.com/cutiepi-io/cutiepi-board

「这个计画的初心来自我们对自由软体的爱,而CutiePi 正是我们对开源社群的献礼,」Penk 肉麻地说,「你看到的一切成果都是开放授权的,任何人都可以重制或是拿来改造、并用在自己的专案中。事实上我们非常欢迎。」

你看到的一切成果都是开放授权的,任何人都可以重制或是拿来改造、并用在自己的专案中。

多点触控屏

CutiePi 平板选用了一片 1280×800 解析度、最高 5 点触控的 MIPI-DSI 屏。整套 UI 是以 Qt framework 在 Raspbian 操作系统上撰写的,可以随时切换回原本的 PIXEL 桌面环境。

「而当你打开我们为了触控屏量身打造的介面— CutiePi shell,你能看到WiFi 设定功能、基于Chromium 的浏览器、支援多国语言的虚拟键盘和终端机。」Penk 还告诉我们,未来有机会透过XWayland 在CutiePi shell 里面支援其他原生的Raspbian程序。

这一切都听来很值得期待,随着硬体设计接近完成,团队现阶段的重点放在量产外壳设计上。他们已经决定要用群募的方法来量产 CutiePi,欢迎留下 email 并随时留意未来的开发进度。

原文: https://magpi.raspberrypi.org/issues/89

作者: Phil King

CC BY-NC-SA 4.0,原文;责任编辑:王姵文

用树莓派制造木制 LED 游戏显示器

MAKER:maketvee/译:趣无尽 Cherry(转载请注明出处)

本期再介绍一个基于 WS2812 的点阵显示屏项目。具有 20×10 像素单元,78×35 厘米的尺寸,刚好可以用来玩俄罗斯方块等复古游戏。

屏幕采用木质贴面,当 LED 关闭时,木贴面可以完全隐藏 LED,装饰效果非常棒。

材料清单

树莓派 Zero W × 1

WS2812B LED(30 LED/m) × 200

带有 MAX7219 的 SPI LED 点阵显示器 × 4

电线 × 若干

蓝牙游戏手柄 × 1

电源5V 5A × 1

激光切割的 MDF 板 × 若干

木质贴面或扩散板 × 若干

电容 × 1

电阻 × 1

螺丝 × 若干

制作外框

点阵屏的框架由 MDF 木材制成,厚度为 3mm,并通过激光切割机切割。

大多数零件只是通过嵌入固定,只有某些零件(如外框)应使用木胶将其粘合在一起。在涂任何胶水之前,请确保之前的步骤是正确的。此外,还必须粘贴木质贴面,但这是确保一切正常之后的最后一步。

在背板的右侧(下部),有一个切割的部分,用于将电子元件固定到点阵屏上,并且当胶合单板时仍然可以接通这些元件。

激光切割文件请在项目文件库中下载。

https://make.quwj.com/project/209

安装 LED

LED 灯条是标准的 30 LED/m WS2812 灯条。

激光切割段具有较小的切割区域,以适合 10cm 的 LED 宽度。该 LED 灯带的背面带有双面胶带,因此可以在精确定位后直接将它们直接粘贴到 MDF 上。在使用胶带之前,请检查每条灯带的正确方向( DIN-DOUT 方向)。

接线方式为锯齿形,因此在最后,点阵屏只有一个输入引脚,电缆长度应尽可能短。为了正确分配电源并减少点阵屏顶部的布线,每个 LED 灯条都连接到点阵屏底部的 5V 和 GND。可以使用单线或原型 PCB 来分配 5V 和 GND 线。

组装

只需按照分步安装图片进行操作即可。背板具有交叉结构,以固定长侧壁和一些短侧壁。如果在安装部件时遇到问题,请使用砂纸打磨处理。

焊接

有多种方法可以将不同灯带的电源线焊接在一起。可以使用单根电线或某种铜制共轨来焊接不同的电线。在这种情况下,使用原型 PCB 块将电源轨引导到灯带。WS2812B 灯带已经有单独的电源电缆,可以使用它们将电源轨连接到第一个灯带输入(图片的左侧)。

安装 SPI 显示

为了显示游戏成绩和文字,使用了基于 LED 驱动器 MAX7219 的 LED 点阵屏显示器。它通过 SPI(串行外围接口)连接到树莓派。四个 8×8 显示器组合成一个 32×8 像素点矩阵显示器。可以在网上购买这种 8×8 像素显示器,也可以购买 32×8 像素组合显示器。

同样,有不同的颜色选择;在这种情况下,使用红色显示。因为 SPI 就像移位寄存器一样工作,所以通过将第一个矩阵的数据连接到第二个矩阵的数据输入,依次将这些显示器串联在一起,依此类推,从显示器的右侧开始。

如果此显示直接放置在饰面板层的后面,则只能从外部读取。如果没有,则只有红色模糊可见。因此,必须将其安装在背板切口段的顶部,背板表面与点阵屏表面之间的距离为 30mm。我使用了一些剩余的木制件和螺钉来适应底板和 PCB 之间缺少的19毫米,也可以使用任何外部类型的垫片。

显示屏的接线将在下面的步骤中进行讲解。

安装树莓派

在此安装中,使用了树莓派 Zero。也可以使用任何其他树莓派型号,但是较新的型号具有集成的 WiFi 和蓝牙,可以轻松连接到无线游戏手柄并简化编程。

可以使用至少两个螺钉和小的垫片将树莓派固定到背板上,以固定树莓派。

对于树莓派 Zero W,使用以下引脚:

PIN 2:5V

PIN 6:GND

GPIO18-> LED灯条

GPIO11:SPI CLK -> MAX7219 matrix CLK

GPIO10:SPI MOSI -> MAX7219 matrix DIN

GPIO8:SPI CS -> MAX7219 matrix CS

接线和电源

根据接线方案进行接线。电源为 5V 直流电源。

为了方便点阵屏的开/关切换,在电源插头和点阵屏电路之间增加了一个开关。但是,由于树莓派不喜欢硬关闭,因此软件中有一个关闭选项,可以在切换点阵屏之前通过 Gamepad 安全关闭树莓派。

LED灯条DIN引脚通过电阻连接到Pi,还添加了一个大电容(4700uF)来缓冲电源。有关更多详细信息,请查看AdafruitÜberguidefor Neopixels。

每个 LED 消耗的最大电流为 60mA,因此最大电流为 200x60mA = 12A 是可以的。通过降低亮度并且不使用所有全白 LED,这虽然是一个理论值,但取决于达到最大电流的代码。因此,选择足够大的电源非常重要。对于大多数应用,具有 5V/5A(25W)的电源就足够了。

要将背板与树莓派和矩阵显示器固定在一起,可以使用一些小木块将它们的边缘固定,也可以使用螺钉将背板固定到位。

配置树莓派

1、下载最新的 Raspian Lite 版镜像并安装,参考教程:

首次使用树莓派,如何安装、启动及配置

2、配置网络,参考教程:

无屏幕和键盘配置树莓派WiFi和SSH

3、在 boot 分区下添加一个名为 ssh(没有任何扩展名)的空文件以启动以启用 ssh 访问。

4、将 SD 卡插入树莓派并启动它。

5、运行下面的命令安装软件和依赖。

sudo apt-get install python3-pip sudo pip3 install –upgrade setuptool

6、安装 Neopixel 驱动程序,ws281x lib,pygame 和 libsdl

sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixels sudo pip3 install pygame sudo apt-get install libsdl1.2-dev sudo pip3 install –upgrade luma.led_matrix

7、通过调用 raps-config 启用 SPI,导航至 5 接口选项 /P4 SPI/Enable

sudo raspi-config

8、添加蓝牙游戏手柄

sudo bluetoothctl [bluetooth]# agent on [bluetooth]# pairable on [bluetooth]# scan on [bluetooth]# pair aa:bb:cc:dd:ee:ff [bluetooth]# trust aa:bb:cc:dd:ee:ff [bluetooth]# connect aa:bb:cc:dd:ee:ff [bluetooth]# quit

其中 aa:bb:cc:dd:ee:ff 是蓝牙游戏手柄的 MAC 地址。使用“scan on”命令后,会显示该地址。确保蓝牙控制器已准备好配对,请检查控制器手册以了解如何进行配对。

9、现在,可以通过以下方式连接到树莓派,默认密码是 raspberry(Windows 用户可以使用 Putty):

ssh pi@192.168.x.y

Python 代码,测试和模拟器

可以在 Github 上找到代码。games_pi_only.py 和所有 bmp 文件都是必需的。

git clone https://github.com/makeTVee/ledmatrix/tree/master/python/pi_only

该代码具有一个选项,可以使用 pygame 在树莓派之外的模拟模式下运行,以模拟点阵屏。这对开发新功能非常有帮助,而无需直接访问点阵屏硬件。而且调试也容易得多。必须设置PI常数才能激活仿真模式(第 15 行):

PI=False

在此模拟模式下,还可以使用键盘代替蓝牙游戏手柄。按钮 1、2、3、4 分别映射到游戏手柄的 A,B,X,Y,方向箭头键,“s”表示开始,“x”表示选择。可以使用标准编辑器以及控制台,也可以使用某些集成的 IDE(例如 Micosoft Visual Studio Code 或 Jetbrain PyCharm)在 PC 上进行开发。

如果使用矩阵和树莓派,则必须定义:

PI=True

要将代码复制到树莓派,可以用 scp 命令。打开控制台窗口,切换到包含 Github 文件的文件夹并运行:

scp games_pi_only pi@192.168.x.y:/home/pi scp *.bmp pi@192.168.x.y:/home/pi

然后通过 ssh 连接到树莓派(Windows用户可以使用Putty):

ssh pi@192.168.x.y

成功登录后,通过以下命令来启动 python 代码:

sudo python3 games_pi_only.py

如果代码正确运行,则可通过以下命令启用自动启动:

sudo nano /etc/rc.local

并在出口 0 之前添加以下行:

/usr/bin/nice -n -20 python3 /home/pi/games_pi_only.py &

测试和贴面

在将胶合板粘贴在正面顶部之前,应先测试点阵屏以确保所有 LED 都能正常工作。

木质贴面是一种特殊的枫木贴面纸,称为 Microwood,单面覆盖有纸,厚度为 0.1mm。可以使用标准的无水纸胶将纸面直接粘合在 MDF 板上。

完工!

现在可以开心的玩耍啦!

via

树莓派仪表盘 Pi Dashboard v1.1 更新

Pi Dashboard (Pi 仪表盘) 是树莓派实验室发布的一款开源的 IoT 设备监控工具,目前主要针对树莓派平台,也尽可能兼容其他类树莓派硬件产品。你只需要在树莓派上安装好 PHP 服务器环境,即可方便的部署一个 Pi 仪表盘,通过炫酷的 WebUI 来监控树莓派的状态!

目前已加入的监测项目有:

CPU 基本信息、状态和使用率等实时数据

内存、缓存、SWAP分区使用的实时数据

SD卡(磁盘)的占用情况

实时负载数据

实施进程数据

网络接口的实时数据

树莓派IP、运行时间、操作系统、HOST 等基础信息

本次小调整如下:

CPU 频率改为实时显示(树莓派会根据CPU负载动态调整主频)

增加了树莓派型号显示(依赖较新的 Raspbian 系统)

加入了 Logo 和 Favicon

安装方法参见项目主页:

http://make.quwj.com/project/10

GitHub:

https://github.com/nxez/pi-dashboard

via 趣小组:

https://talk.quwj.com/topic/984

Raspberry Pi Imager 镜像烧录工具

Raspberry Pi Imager 是树莓派基金会新推出的镜像烧录工具。

现在,树莓派用户可以下载,并且能在 Windows、macOS 和 Ubuntu 上运行这个工具来为树莓派烧录系统镜像了。其用法和 Etcher 与 win32diskimager 类似。

Raspberry Pi Imager 目前已经开源,GitHub 仓库地址:

https://github.com/raspberrypi/imagewriter

另外,我们建议你在挑选 SD 卡之前对 SD 卡做一个读写效率测试,方法见:

https://talk.quwj.com/topic/770

Samytronix Pi:用树莓派 DIY 的桌面计算机

MAKER:Samuel_Alexander/译:趣无尽 Cherry(转载请注明出处)

这是一个有趣又实用的树莓派项目——用树莓派DIY一台桌面电脑!

话不多说,不如我们先看一看它是如何搭建的吧!我把它取名为 Samytronix Pi,外壳是激光切割的,同时配备有高清显示器、扬声器。你只需添加键盘和鼠标就可以使用了,最重要的是其带有 GPIO 引脚,可以方便地做硬件编程!

目前项目中的外壳是根据树莓派3代设计的,可以兼容2代。对于树莓派4代而言,则需要对外壳的图纸作一些修改,适配树莓派4代的接口开孔。

材料清单

树莓派 3B+(兼容3B、2B) × 1

迷你扬声器(8欧/2W) × 1

Mini micro JST 2.0 PH 4 针插头 × 1

GPIO 40 Pin 排线 × 1

10.1 寸 LCD 显示器(1280×800 TFT EJ101IA HD IPS) × 1

HDMI 转 HDMI 电缆(30cm) × 1

Hobbywing UBEC 5V 3A × 1

Micro USB 公头 × 1

电源适配器 12V/1.5A × 1

Micro SD 卡 16GB × 1

无线键盘 × 1

鼠标 × 1

M3 螺栓 35mm × 8

M3 螺栓 20mm × 4

M3 螺栓 15mm × 6

M2/2.5 螺栓 10mm × 8

M2/2.5 螺母 10mm × 8

尼龙垫片 M2/2.5 6mm × 8

激光切割外壳

外壳使用 3mm 厚的丙烯酸板制作,请在项目文件库下载激光切割操作所需的文件。

https://make.quwj.com/project/205

组装前面板以及显示器部分

请如图所示安装组件。

1、放平显示器,将软排线插入显示器。

2、使用胶带固定排线连接处,最后合上盖子。

组装树莓派外壳

1、用 M2/M2.5 10mm 的螺栓和螺母将树莓派安装到位并使用小垫片将其固定。

2、安装好外壳的其他部分。

3、用四个 M3 35mm 螺栓穿过外壳边缘处的孔将其固定。

4、将 SD 卡插入树莓派。

焊接 UBEC 到显示器驱动器

UBEC 也就是“免电池电路”。因为这台计算机仅使用一个电源,为此,我们需要从 AV 驱动器获取 12V 的直流,将其输出后转换为 5V 直流为树莓派供电。

1、切断输出端的连接器。

2、将电源线焊接到 microUSB 插头。

3、将 microUSB 嵌入外壳内。

组装显示器驱动器外壳

1、用 M2/M2.5 10mm 的螺栓和螺母将树莓派安装到位并使用小垫片将其固定。

2、安装好外壳的其他部分。

3、确保 UBEC 电线没有打结(你可以自由选择将 UBEC 隐藏在机箱内还是放在外面)。另外确保 USB 连接器在机箱外即可。

4、连接带 10 针的 JST 电线。

5、连接扬声器电线。

6、将四个 M3 35mm 螺栓穿过外壳边缘处的孔并将其固定。

7、将带 10 针的 JST 连接器的另一端连接到显示器控制器。

8、将控制器安装到外壳上。

安装支架

1、安装支架的两侧。

2、安装支架的中间部分。

3、使用螺母将所有支架固定到位(侧部固定在显示器上,上部固定在侧部,下部固定在侧部)。

安装扬声器

用热胶枪将扬声器安装到前板的格栅上。

安装树莓派和 AV 驱动器

这里有两种安装树莓派和 AV 板的方法。可以使用双面胶带也可以使用魔术贴。我选用的双面胶带。

1、安装 AV 驱动器机箱。确保前面板上的孔与机箱上的螺母对齐。

2、安装显示器控制器和树莓派。

3、用软排线将显示器连接到 AV 驱动器。

4、用 HDMI 电线将树莓派连接到 AV 驱动器。

5、将微型 USB 电线连接到树莓派。

处理 GPIO 跳线

缩短 GPIO 跳线(可选)

如果你需要缩短 GPIO 跳线电线以便更好整理电线,就可以参考此步骤。

1、使用小型平头螺丝刀撬开黑色的连接器部分。

2、将电线的每一个部分都剥离下来。

3、将电线剪短至 9cm。

4、将处理好的电线(靠近末端)放在黑色部分之间,并将它们卡在一起,确保电线的每个部分都能够连接。

5、将组件放回原处。

安装 GPIO 跳线

安装好 GPIO 跳线后就可以从前面访问。

1、将 GPIO 跳线的一端连接至树莓派。

2、将另一端连接到前板的 GPIO 端口上。使用少量热熔胶将其固定到位。

粘贴 GPIO 标签

1、在贴纸上打印 GPIO 标签或使用粘胶将标签粘贴在 Samytronix Pi 的 GPIO 端口处。

2、使用 Samytronix Pi 进行原型制作,这会非常实用并能节省大量的时间。

完成

配上键盘和鼠标,一台酷酷的树莓派台式电脑就完成了。

via

Python + Android APP 方式获取树莓派的 IP

每次要 SSH 到树莓派都很麻烦,我是没找什么办法,每次都得连上显示器鼠标键盘。才能知道IP地址。看了点 Python,写了个脚本来发出 IP 地址,这样就省事多了。

发现启动时有可能早于树莓派网络初始化,会导致 UDP 服务初始化出现问题。脚本里面延时 30 秒执行。在树莓派4测试通过。

创建 Python 脚本

创建的代码文件名 FindIPUDPServer.py,保存在 /home/pi 目录下或者其他你指定的位置。

import socket import uuid import time import os import time import logging from logging import handlers # 获取MAC地址 def get_mac_address(): mac = uuid.UUID(int=uuid.getnode()).hex[-12:] return “:”.join([mac[e:e + 2] for e in range(0, 11, 2)]) # 获取IP地址 def get_host_ip(): try: my = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) my.connect((‘8.8.8.8’, 80)) # ip = my.getsockname()[0] ipList = my.getsockname() finally: my.close() return ipList def _logging(**kwargs): level = kwargs.pop(‘level’, None) filename = kwargs.pop(‘filename’, None) datefmt = kwargs.pop(‘datefmt’, None) format = kwargs.pop(‘format’, None) if level is None: level = logging.DEBUG if filename is None: filename = ‘default.log’ if datefmt is None: datefmt = ‘%Y-%m-%d %H:%M:%S’ if format is None: format = ‘%(asctime)s [%(module)s] %(levelname)s [%(lineno)d] %(message)s’ log = logging.getLogger(filename) format_str = logging.Formatter(format, datefmt) # backupCount 保存日志的数量,过期自动删除 # when 按什么日期格式切分(这里方便测试使用的秒) th = handlers.TimedRotatingFileHandler(filename=filename, when=’H’, backupCount=3, encoding=’utf-8′) th.setFormatter(format_str) th.setLevel(logging.DEBUG) ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # ch.setFormatter(format) log.addHandler(ch) log.addHandler(th) log.setLevel(level) return log os.makedirs(“logs”, exist_ok=True) mylog = _logging(filename=’logs/udpserver.log’) print(“等待30秒”) mylog.debug(“等待30秒”) time.sleep(30) print(“等待结束”) mylog.debug(“等待结束”) HOST = ” PORT = 9999 BUFSIZ = 1024 ADDRESS = (HOST, PORT) udpServerSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpServerSocket.bind(ADDRESS) # 绑定客户端口和地址 myname = socket.gethostname() print(“myname:” + myname) mylog.debug(“myname:” + myname) myIPList = get_host_ip() print(“myIPList:” + str(myIPList)) mylog.debug(“myIPList:” + str(myIPList)) macAddress = get_mac_address() print(“macAddress:” + macAddress) mylog.debug(“macAddress:” + macAddress) while True: print(“waiting for message…”) mylog.debug(“waiting for message…”) data, addr = udpServerSocket.recvfrom(BUFSIZ) currCode = data.decode(‘utf-8’) print(“接收到数据:” +currCode) mylog.debug(“接收到数据:”+currCode) # content = ‘[%s] %s’ % (bytes(ctime(), ‘utf-8’), data.decode(‘utf-8’)) # 发送服务器时间 if currCode == “TIME”: content = “Time:” + time.strftime(“%Y-%m-%d %H:%M:%S”, time.localtime()) udpServerSocket.sendto(content.encode(‘utf-8’), addr) # 发送IP地址 elif currCode == “IP”: content = “IP:” + str(myIPList) udpServerSocket.sendto(content.encode(‘utf-8’), addr) # 发送mac地址 elif currCode == “MAC”: content = “MAC:” + macAddress udpServerSocket.sendto(content.encode(‘utf-8’), addr) # 发送ip mac地址 elif currCode == “IP_MAC”: content = “IP:” + str(myIPList) + “|MAC:” + macAddress udpServerSocket.sendto(content.encode(‘utf-8’), addr) # 退出UDP服务端 elif currCode == “EXIT”: content = “服务端退出” udpServerSocket.sendto(content.encode(‘utf-8’), addr) # print(content) break # 重启 elif currCode == “REBOOT”: content = “服务端重启” udpServerSocket.sendto(content.encode(‘utf-8’), addr) print(“服务端开始重启”) mylog.debug(“服务端开始重启”) os.system(‘shutdown -r now’) break # 关机 elif currCode == “SHUTDOWN”: content = “服务端关机” udpServerSocket.sendto(content.encode(‘utf-8’), addr) print(“服务端开始关机”) mylog.debug(“服务端开始关机”) os.system(‘sudo shutdown -h now’) break else: udpServerSocket.sendto(“Bad Key”.encode(‘utf-8’), addr) # content = ‘[%s] %s %s’ % (bytes(ctime(), ‘utf-8’), str(myIPList), macAddress) # udpServerSocket.sendto(content.encode(‘utf-8’), addr) print(‘…received from and returned to:’, addr) mylog.debug(‘…received from and returned to:’, addr) udpServerSocket.close() print(“服务端退出”) mylog.debug(‘服务端退出’)

配置树莓派

SSH 登录树莓派运行下面的命令配置开机启动项:

sudo nano /etc/rc/local

如图:

注意修改其中脚本文件的路径为脚本实际存放的路径。

重启树莓派

这个时候怎么看我们的程序是否自启动了呢。登录树莓派 执行 sudo systemctl status rc-local 看看 FindIPUDPServer 是否已经起来了。

Android 客户端和源码

树莓派 Python 脚本配置好以后重启。打开 APP 就能搜到树莓派的IP地址

搜索按钮:点击后等待返回结果。搜索到IP地址后,输入到文本框内。

重启、关机、关闭服务,功能就能用啦。

关闭服务功能可以关闭树莓派的搜索服务。点搜索树莓派就不会发送IP地址了。除非重启树莓派。

APK 文件:https://pan.baidu.com/s/15Un8nEiP5QYnXysJuirweg 提取码: htri

源代码链接:https://pan.baidu.com/s/1WWLc7fd28hTs2LJoZZ68PA 提取码: 14up

在 Raspbian 上部署 LNMP + Pi Dashboard

来自 RaspiSQH 的投稿,原文。

前言

之前我们介绍过给树莓派安装 Nginx + PHP7.0 + Pi Dashboard 的方法。

Raspbian Buster 用 PHP7.1(2,3) 替代了 PHP7.0,有很多群友说找不到软件包了。因此我来介绍如何用在树莓派上部署新的 LNMP 环境(PHP7.3),并部署好 Pi Dashboard 的方法。下面假设你已经刷好了 Raspbian Buster 系统。最好是把apt软件源也换过了。

安装 Nginx 和 PHP7

安装软件包

在 Pi 的终端运行以下命令。

sudo apt-get update sudo apt-get install nginx php7.3-fpm php7.3-cli php7.3-curl php7.3-gd php7.3-cgi sudo service nginx start sudo service php7.3-fpm restart

如果安装成功,可通过 http://树莓派IP/ 访问到 Nginx 的默认页。Nginx 的根目录在 /var/www/html 。

让 Nginx 能处理 PHP

sudo nano /etc/nginx/sites-available/default

将其中的如下内容

location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; }

替换为

location / { index index.html index.htm index.php default.html default.htm default.php; } location ~\.php$ { fastcgi_pass unix:/run/php/php7.3-fpm.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

Ctrl + O 保存再 Ctrl + X 退出。

sudo service nginx restart

最后重启 Nginx 即可,以上步骤在树莓派3B + Raspbian Buster 系统版本上测试通过。4B也可以用的,别瞎想了。不能用一定是因为你漏掉了什么,再仔细检查一下。

安装配置MySQL

安装软件包

sudo apt-get install mariadb-server-10.0

更改密码

执行 mysql 命令。

MariaDB [(none)]> use mysql; MariaDB [mysql]> update user set plugin=’mysql_native_password’ where user=’root’; MariaDB [mysql]> UPDATE user SET password=PASSWORD(‘你想要设定的密码’) WHERE user=’root’; MariaDB [mysql]> flush privileges; MariaDB [mysql]> exit;

重启服务

service mysql restart

mysql配置就完成了。

Pi Dashboard 介绍

请移步项目主页:http://make.quwj.com/project/10

部署 Pi Dashboard

GitHub 部署

cd /var/www/html sudo git clone https://github.com/nxez/pi-dashboard.git

即可通过 http://树莓派IP/pi-dashboard 访问部署好了的 Pi Dashboard。

以上步骤在树莓派3B + Raspbian Buster 系统版本上测试通过,每条都亲自验证过。

新品预告:测量IEPE的MCC DAQ HAT – MCC 172

MCC 即将推出基于树莓派®,测量IEPE数据采集的DAQ HAT(Hardware Attached on Top)新款产品- MCC 172。敬请期待!

MCC 172 是MCC首款在树莓派®上,直接测量IEPE的数据采集产品。MCC 172 提供模拟输入接口,测量声音和振动信号。可同其它MCC DAQ HATs产品一起使用。

每个树莓派®上最多可安装8块MCC DAQ HATs。MCC 172(振动信号测量)结合MCC 118(电压测量),MCC 152(电压输出)和MCC 134(温度测量)。用户将开发出1款适合需求的多功能,多应用,低成本的数据采集方案。

MCC 172

2路IEPE输入

2个24-bit, 51.2kS/s A/D转换器(每通道1个)

±5 V AC耦合

10-32和螺丝端子连接

多板之间同步ADC转换

支持高速采集的板载缓存器

外部数字触发功能

支持C, C++,Python API

在GitHub上提供全套开源库

支持系统:Linux®/Raspbian

完整GUI

DataLogger (C/C++)

数据记录仪app展示如何从MCC 172获取数据,并提供可视化数据和保存数据到CSV文件中功能。MCC提供完整的DataLogger代码,方便不同领域客户的开发需求。结合树莓派®灵活的特性和MCC产品质量的保证,使得MCC 172在振动测量中比同类产品更具竞争力。

Web Server (Python)

Web Server使客户能够在浏览器中控制和检测MCC 172。基于网络的应用加速了MCC 172在物联网中的推广和应用,并降低了开发时间和开发成本。

MCC DAQ HATs系列模块,基于无处不在的低成本树莓派®,为您带来高质量的测试测量方案!

了解更多 MCC DAQ HATs 产品请点击这里:

数据采集专家MCC

原文:https://mp.weixin.qq.com/s/_TlogKw6rSaseDoSJfmlpw

强力高效的树莓派水冷散热器

MAKER:OliverM18/译:趣无尽 Cherry(转载请注明出处)

众所周知,树莓派的 CPU 温度过高会触发降频运行机制,影响树莓派的运算性能。

本期给大家带来一个水冷的散热器的项目,纯手工打造(外形简单粗暴),能确保树莓派流畅运行「我的世界」。

如果你也爱折腾,不如来试试这个项目吧!

它是一个水冷回路,没有其他活动的部件,散热器通过离子风扇来冷却降温。

材料清单

树莓派 3B × 1

0.7 mm 的铜或铝板 × 若干

4 mm 黄铜或铝管 × 若干

6 mm 黄铜或铝管 × 若干

3D 打印材料 × 若干

22 号铜线 × 若干

高压交流变压器 × 1

5V 墙上适配器 × 1

5V 墙上适配器 × 1

主板机箱适配器 × 4

粘合剂 × 1

导热膏 × 1

带焊锡的烙铁 × 1

制作小贴士

1、材料的选择。

该项目是将 CPU 和其他集成电路芯片的热量传到到液体部分,然后再高效地交换到空气中。所以要选择导热的材料,我选择了铜片,它具有和银相当的良好的导热性,当然你也可以选择用铝片来代替。我设计制作散热器模块的模型,我选用 0.7mm 的铜片进行搭建,4mm 的铜管焊接各个结点。使用铝片制作散热器成本会更低。你可以考虑一下。

2、结点的连接方式。

由于铜片之间的焊接容易出现熔化的现象,我选择了具有快干功能的环氧树脂、合成金属和 CA 胶来粘合结点。但经过几周的观察后发现,铜片开始腐蚀,胶水也开始脱落。也许是干燥的胶水与材料中的某种物质发生了反应,当胶开始脱落之后,水就开始泄漏出来。最后,我使用有机硅胶进行重新组装(大家可以避坑啦!)。

3、选用 3.6V-6V 的变压器即可。输出电压约为 40 万伏,因此在使用时要小心并且在操作时不要离的太近。此外,在操作后还要进一步做处理,使用螺丝刀等工具使输出电线短路,让变压器放电。

搭建散热器模型

1、此散热器是基于树莓派 3B 搭建的,可以兼容树莓派 B+。两者只是在凸起的金属 CPU 外壳上有所不同。

模型的设计模板,模型和附件的尺寸等信息,请在项目文件库中下载。

https://make.quwj.com/project/210

如果你想用树莓派 4,就必须自己重新设计系统,但这并不难,你可以自己试一下。

2、打印出模板后,将其粘在铝板上,使用工具照着模板的样子将铝皮剪下来。需要折叠的地方使用钳子进行处理,完成后将纸质的模板剔除即可。

3、如图所示,在散热器块内部,我固定了几块向上倾斜的金属片。其原理是当冷水进入到侧面时,金属架中的水能够冷却 CPU,然后上升并通过顶部管道排出。我并不知道该理论是否真的有效,我可能需要一台热影像仪来查看一下该理论是否与实际情况一致。

4、散热块区域。波浪形的造型可以扩大散热的表面积。需要注意的是,要小心的折叠,铝块很容易被折断。完成所有的弯折处理后,使用硅胶在内部密封所有间隙。

5、用八块铝块制作一个网格。如图所示,内部的铝条使用互锁手法和硅胶将它们连接在一起。

3D 打印支架

3D 打印一个树莓派支架和散热器支架。打印所需的 STL 请在项目文件库中下载。

https://make.quwj.com/project/210

打印好后,组装所有的组件。我也提供了一版需要弯曲处理的模板,其实不需要特别注意那些切割和弯曲,只供参考。

建议支架不需要上色。在项目中,我将支架涂成银色,结果因为喷漆中包含金属粉末,产生了一定的导电性。如果是用作高压电子设备的支架,就废掉了。

所以我另外打印了一个用于离子风扇铜针的支架,该支架虽然是银色印刷的,但不导电。

连接管道

1、如图所示,切割管子并将管子的截面切得比所需的长一点。

2、使用工具弯曲铜管。

3、处理散热器的接口。使用工具处理接口处,将管道连接到散热器的两边,管道的一半被拆除。使用硅胶连接管道。原本我打算要三个散热块,但没有空间。因为它位于背面,移除树莓派并将其固定在两侧也很困难。此外,对于热量的主要产生者是 CPU,将在背面粘贴了一个散热器,然后用金属板覆盖散热器的孔。

4、在散热器的顶部钻两个 6mm 的孔,并固定两条长度为 6mm 的管道。这些将起到填充物和排水管的作用,同时当水加热时可以释放一些压力。使用硅胶将其固定在散热器的顶部。

安装树莓派

1、安装树莓派时确保所有的组件都对齐。连接管道,或焊接或使用硅胶,将所有的组件都固定到位。请注意,不要将硅胶粘到散热器的背面以及任何管道上。

2、连接完成和干燥后,检查系统是否防水。将其放入带水的桶中查看(取下树莓派)。如果出现气泡,使用硅胶补上缝隙,直到没有气泡为止。

3、在树莓派和其所有组件上涂上透明的指甲油,起到一定的防水作用。

制作离子风扇

1、最简单的方法是将两个金属网片接在一起,然后将数千伏的高压电源将其连接到一起。离子将从与正极线相连的网格中移动到带有负极的网格中,它们将不断的移动最后使风扇动起来(根据牛顿第三定律)。这种方法非常的简单,也很节省时间。

2、我采用了 Makezine 风格的离子风扇,是不是很酷呢。切割长为 85x 5mm 的 6mm 的铜管,作为负极面。

如图所示,将以 7×7 的组块形成蜂窝的形状。用铝胶带将它们固定在一起后,再将它们固定到位。最后对网格的大小进行调整,确保形状完整,大小合适。完成后将朝向正极网格的那一面进行打磨。取一根电线与其连接,同时使所有管道与正极网格保持距离。

3、正面网格的制作。打印网格模具,打印文件请在项目文件库中下载。

https://make.quwj.com/project/210

使用 22 号绝缘铜线截取 85 条长度一致的铜线。焊接时,将模具放入水中焊接以便熔化。

如图所示,将 85 条铜线穿过孔,然后将探头连接到顶部的一根长电线上。焊接到电线上后再连接到变压器。焊接时,确保所有探针均匀的朝下,越精确越好。最后,在每个探针上滴上少量的胶水,将其固定到位。

4、在用胶水固定两个栅格之前,先用电源和变压器测试了风扇。该系统不应起弧,但会通过负极网格产生空气流。如果你在正极网格感觉到,则可能反过来连接了变压器的输出线。因为很难找到最佳位置,当你找到它时,请用胶水将黄铜管固定到模具上。

最后的组装

1、使用硅胶将离子风扇固定在顶部,确保其金属部件与系统的其余部分相隔较远。

2、使用硅胶将高压变压器固定在背面并将其相应的输出线从正极和负极网格连接到铜线,确保两者之间有一定的距离。

3、将电线连接到电源,然后将电线与变压器的输入线相连并作绝缘处理。

4、在散热器的背面添加导热膏,并用四个主板支架固定树莓派。

5、使用吸管向系统中加了水并不时的摇动一下系统。当它快要装满时,稍微倾斜系统以消除滞留在散热片之间的空气。

完成

到目前为止离子散热器就完成了!插入以太网,电源和风扇连接器,所有设备通电后就可以开始使用了。

系统虽还不算完美,外观上还有待提升,但它的散热作用还是发挥作用。大部分热量通过管子和散热器散发出去。

离子风扇虽效果不如机械风扇好,但还是发挥有限的作用。

还需注意的地方:

噪音和使用寿命有待改善。另外,在 5V 的直流电下的功耗值为 0.52A。因为输出电压比较高,可能会伤害你,所以请小心处理!

via

树莓派工控机做Modbus RTU主站读取RFID数据

KUNBUS Revpi Core 3是工业级的树莓派,可作为小型的工业PC用,外观十分小巧,操作简单,DIN导轨模块化安装,RevPi core 3能与RevPi IO连接,能实时对这些IO的控制。其次 RevPi core 3 与 RevPi 网关模块化连接,可通过网关直接进入各种工业以太网和现场总线中,同时 RevPi core 3 本身具备了 Modbus TCP 和 Modbus RTU 主从站的功能,进入两种协议一般不需要再通过网关。RevPi core 3 基于树莓派的开发板和系统,其操作系统也是基于Linux内核的,所以也可用 RevPi core 3 来做硬件和软件的开发,完全适应工业场合,在工业场景下的使用有无限的想象力。本篇我们将为您展示如何使用树莓派的 Modbus RTU 的主站功能区读取 RFID 数据。

在以下示例中,我们将RevPi核心用作Modbus RTU主站,并将RFID读卡器连接到它。

所使用的工具:

I、RevPi核心

II、从站设备(Iveno RFID MODBUS读卡器RFID-MB-10)

III、带有D-Sub 9连接器的线缆

IV、适配器(USB转RS485/422)

V、网络连接

要求:

I、网络浏览器,例如Google Chrome或Mozilla Firefox。

II、RevPi Core位于您的网络中。

将从站连接到RevPi内核

将RevPi Core的USB端口连接到适配器。

通过D-Sub 9插座将适配器连接到从站。

将您的RevPi Core连接到电源。

确定Modbus RTU网络数据

为了配置从站,我们需要事先提供一些数据,以便我们可以通过RevPi内核访问从站。我们在从站的用户手册中找到了这些数据。

在此示例中,我们将RFID读卡器“Iveno RFID MODBUS读卡器RFID-MB-10”用作从属设备。请注意从站用户手册中的以下数据:

启用ModbusRTU主站功能

打开您的网络浏览器。

在Web浏览器的地址栏中输入RevPi Core的IP地址。

出现登录窗口。

使用用户名“admin”登录。

输入密码。您可以在RevPi Core侧面的标签上找到它。

点击“登录”。

现在,我们可以查看RevPi Core的当前设备状态。

点击“服务”标签。

在“启用/禁用Modbus主站”行中单击“启用”。

点击“全部保存”按钮。

注意!您也可以在命令行上激活“主机”功能。输入以下命令:

sudo revpi-config enable pimodbus-master

点击“应用”标签。

单击条目“PiCtory”后面的开始按钮,PiCtory开始。

ModbusRTU主站配置

打开设备目录中的“虚拟设备”文件夹。

选择ModbusRTU Master。

按住鼠标左键,然后将Modbus-RTU Master拖到RevPi Core 3。

在“设备数据”窗口中设置MODBUS主站的基本配置。如果您使用许多设备,并希望稍后在另一个程序中处理数据,那么此输入将非常有帮助。在“值编辑器”中定义串行连接的参数。我们已经从传感器的用户手册中确定了从站的值:

设备路径:USB设备路径

波特率:9600

校验位:无

数据位:8

停止位:1

右键单击配置板上的Modbus RTU主站。

将打开一个上下文菜单。

选择条目“扩展数据”以打开输入掩码。

这是我们设置Modbus命令的地方。在此示例中,我们需要一个命令来读取RFID传感器的值。我们已经从传感器的使用说明书中收集了必要的信息:

从站地址:1

功能码:READ_Holding_REGISTERS

注册地址:1000

寄存器数量:5

保存配置

单击“文件>保存”以保存文件。点击“工具>重置驱动程序”。这将激活设备配置的更改。

在过程映像中查询值

打开命令行并输入以下命令:

piTest -v Input_Word_1

您将在过程映像中获取值的位置信息:

variable name: Input_Word_1 offset: 11 length: 16 bit

这些值在过程映像中,从地址16开始。我们需要读取10个字节。

我输入以下命令并查看需要的值:“piTest -r 11,10,h”。如果现在将RFID卡握在读卡器上,则可以观察过程映像中值的变化。

piTest -r 11,10,h 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 1b 00 87 00 2b 00 04 00 00 00 1b 00 87 00 2b 00 04 00 00 00 1b 00 87 00 2b 00 […]

以上是我们利用树莓派 RevpPi core 3 读取 RFID 信号的全部过程。

工业版树莓派精选技术文章合集:

https://mp.weixin.qq.com/s/jdaLZuydtNhcpRmbqQPQ6w

树莓派+Git内嵌花生壳PHTunnel实现项目异地外网管理

说起 git,广大 IT 人士应该都不陌生,无论是公司里用于管理代码的 Gitlab,或者是同性交友平台(划掉)github,我们平时多多少少都会有接触。Git 是一款出色的项目管理软件,来自于天才少年 Linus Torvalds,他在创造出 Linux kernel 之后,开发了 git,用于管理 Linux kernel 的源码。从此以后,越来越多的项目开始使用git作为自己的版本管理工具。

github作为全世界最大的交友平台,不止托管了许多优秀的项目源码,还有相当一部分开源的资料可以供我们免费下载,比如:中国科学技术大学计算机学院的课程资源(https://github.com/ustcwpz/USTC-CS-Courses-Resource)

或者是一些奇奇怪怪的知识(杭州买房攻略:https://github.com/houshanren/hangzhou_house_knowledge)

你以为github是这样的

但实际上他是这样的

或者是这样的

我们日常工作生活中,涉及到写代码或者是写文之类的工作时,使用 git 可以很方便的管理我们的创作内容,下面给大家简单介绍一下如何在自己家中搭建一个 Gitlab 服务器。

首先,我们要保证 git 服务器的稳定,7*24在线,性能要足够支撑稳定运行,现规划两种方案:路由器和树莓派。因为我家中的路由器性能略差,因此我选择了这款树莓派4b(2G rom版)。作为最新一代树莓派,它继承了树莓派家族便携、开源、接口丰富的特点,并且性能相对于树莓派3b+有较大升级,也是家用服务器的不二之选。

(这个角度看树莓派居然有种别样的美感)

接下来介绍树莓派安装gitlab的相关内容:

1、访问gitlab官网(https://packages.gitlab.com/gitlab),获取gitlab-ce包的相关信息。因为gitlab做了树莓派的相关支持,可以直接通过官网wget下载对应版本。这里我使用最新版本12.8.6作为gitlab服务器。

根据右侧的提示,我们可以添加相关远程仓库,并使用 apt-get 包管理工具进行在线下载安装。

在我本地添加完相关仓库地址后,apt-get 还是安装失败,所以我选择直接下载对应 deb 包,由于该包较大,使用 wget 尝试多次后依然失败,建议直接使用某雷下载 download.deb 包进行安装。

installing…

2、安装成功后工作:

安装 deb 包耗时5分钟左右,安装完成后,因为 gitlab 使用的80端口被树莓派自带的 apache 服务占用,所以需要先停止 apache 服务,再进行 gitlab 的部署。

3、这时,我们就可以运行gitlab-ctl reconfigure命令,来初始化gitlab服务器了。

(约十分钟左右)

提示完成以后,可以通过在局域网内使用树莓派ip+80端口访问 Gitlab 界面,至此,gitlab的安装工作基本完成。

进入Gitlab管理界面,来创建一个十分 niubility 的项目(捂脸逃

4、现在我们在本地局域网内就能方便的使用git服务了,如果我们想更加愉快地在异地管理自己的项目,接下来给大家介绍一款实用工具:花生壳。

在花生壳开放平台 https://open.oray.com/ 看到了花生壳开放了面向开发者的 phtunnel 嵌入式解决方案。相对于传统的 pc 客户端映射内网服务,对于git服务是个更加合适的选择,于是我将 phtunnel 嵌入了自己的树莓派。

首先登陆开发者平台 https://open.oray.com/ 申请开发者权限,这里不再赘述,申请成功后拿到了属于自己的 APPID 和 APPKEY。

然后就可以去下载树莓派额 sdk 来进行嵌入了,打开压缩包以后看到下列四个包:

虽然我本地的设备是aarch64,但是树莓派官网下载的 Raspbian Buster 安装完成后是32位的,这里我选择了armv8版的包。

按照帮助文档尝试运行,目前比较正常,扫码后使用调试账号登录,提示登录成功,域名状态变为online。

通过本地管理接口也可以获取到账号信息。

现在phtunnel的依然是前台运行状态,绑定完账号信息之后,重新启动,加上 -d 参数,使程序后台运行,这次启动后程序会使用之前的配置文件,无需再次绑定,本地管理接口调用也验证了这个猜想。 添加一个到本地80端口的映射,就可以从外网访问到 niubility 项目了。

5、克隆到本地

点击clone后获取地址:http://raspi.git.com/root/niubility_project.git,我们需要把前面的域名改为花生壳的映射域名:http://thedim.qicp.vip/root/niubility_project.git,就可以 git clone 了。

使用git clone命令克隆项目以后,在项目目录下使用 git remote -v 来查看当前克隆的项目路径。此时 git remote -v重的信息已经变成了花生壳映射的地址。后续再继续进行git操作的时候,就不需要单独配置host或者是其他操作了。

修改本地文件并 push:

6、制作开机启动 这里我们使用 systemd 来守护进程。systemd 即system daemon,是一个系统级的系统与服务管理器。在新版的 Linux 发行版中,代替了systemV,成为更主流的守护方式。

这里我们编写一个简单的phtunnel.service文件,使phtunnel可以进行开机启动,文件内容如下:

[Unit] Description=Start phtunnel program [Service] Type=simple ExecStart=/usr/bin/phtunnel -l /var/log/phtunnel.log -c /etc/phtunnel.json -r -i <填入APPID> -k <填入APPKEY> RemainAfterExit=no Restart=always [Install] WantedBy=network-online.target

将该service文件放置于 /lib/systemd/system/ 目录下,创建一个service文件,

使用systemctl命令即可管理systemd启动文件。常用的管理命令如下

systemctl enable phtunnel #创建一个软连接,将phtunnel.service加入相应的target中,设置开机启动。 systemctl start phtunnel #启动phtunnel服务。 systemctl status phtunnel #查看phtunnel服务当前运行状态。 systemctl restart phtunnel #重启phtunnel服务。

至此,我们的“微型·假装有公网ip版·Git服务器”就搭建完成了,又能开心地跟小伙伴们玩(zhuang)耍(bi)了。

花生壳PHTunnel采用C语言实现,最小约80KB,能轻松实现高性能反向代理应用,支持TCP、UDP、HTTP、HTTPS协议,端到端的TLS加密通信,黑白名单防黑验证等;覆盖Windows、Linux、树莓派、Mac、安卓等主流操作系统。

作为花生壳内网穿透的核心组件,花生壳PHTunnel可以集成嵌入到各种网络和智能IoT设备中,无需公网IP,只要有网就能轻松穿透各种复杂的路由和防火墙,实现外网访问内网的各种应用。

后续:我们可以使用 Gitlab + phtunnel 的 docker 镜像来更方便的创建一个 Gitlab 服务(相关镜像:gitlab/gitlab-ce:latest,bestoray/phtunnel:latest),两个镜像均已支持 arm 平台。或者可以将 Gitlab 和 phtunnel 服务打包进一个自己的镜像。现在搭建的git只支持http访问,后续添加https映射的方法需要继续研究。手上的另一台树莓派设备,是树莓派 zero W,相对于树莓派4b要更加小巧,后面会尝试将这部分剩余计算力充分利用起来,搭建一些有趣的个人网站。这部分相关内容,我们下期再详细介绍。