蚊章汇 - 树莓派
type: channel
link: https://linuxcn.bwsl.wang/category/266/
items: 树莓派的五种最奇特的用途
items: 用 Lua 控制你的树莓派
items: 用 CrowPi 树莓派套件了解关于计算机的一切
items: 用树莓派制作的问答售货机
items: 将你的树莓派用作流媒体服务器
items: 用树莓派集群进行并行和分布式计算
items: 利用树莓派和乒乓球制作一个假日彩灯
items: 使用树莓派做一个倒计时器
items: 使用树莓派建立一个带有移动网络连接功能的路由器
items: 在树莓派上创建一个最小化的服务器

树莓派的五种最奇特的用途
type: item
date: 2023-07-06T00:54:18+08:00
description: 人们使用树莓派做各种各样的事情。有哪些用途让你特别好奇的吗？最近，我在一个电话会议上听到有人说开源社区是好奇心和解决问题的文化的结合。好奇心是我们解决问题的基础。在解决各种规模的问题时，我们使用了大量的开源工具，其中包括在功能极为方便的树莓派上运行的 Linux。我们每个人都有各种不同的生活经历，所以我向我们的作者社区询问了他们所遇到的最奇特的树莓派用途。我有一种预感，这些令人惊奇的构建将会为其他人激发灵感。使用树莓派进行实验对我来说，树莓派是在家庭网络中增加额外开发资源的绝佳工具。如果我想要创建一个新的网站或者尝试一个新的软件工具，我不必让我的桌面 Linux 机器因为一堆我可能只在实验时使用一次的软件包而变得笨重。相反，我会将它设置在我的树莓派上。如果我认为我将要做一些冒险的事情，我会使用备份的启动环境。我有两张 microSD 卡，这样我就可以在树莓派上插一张卡，同时设置第二张卡进行任何我想要的实验。额外的 microSD 卡成本并不高，但在我想要在第二个镜像上进行实验的时候，它能节省大量时间。只需关机，换下 microSD 卡，重新启动，立即就可以在专用的测试系统上工作。当我不进行实验时，我的树莓派充当打印服务器，将我的非 WiFi 打印机连接到家庭网络上。它还是一个方便的 SSH 文件服务器，让我可以快速备份重要文件。— Jim Hall树莓派的流行我见过的树莓派最令人惊讶的事情是它使小型单板计算机的概念变得流行和通俗化，并使其真正实用于大众。在树莓派出现之前，我们有类似的小型单板计算机，但它们往往是小众的、昂贵的，并且从软件角度来看让人拒之千里。树莓派价格便宜，便宜到任何人都可以轻松为一个项目获得一台（不考虑目前难以获得的情况）。一旦它变得便宜，人们就会克服软件挑战，使其足够好以解决许多基本的计算任务，甚至可以将完整的真正的计算机用于特定任务，而不仅仅是微控制器。我们拥有大量好的、相对廉价的小型单板计算机，这促进了各种调试、玩耍和 实验。人们愿意尝试新的想法，甚至推动了更多业余爱好者的硬件开发来支持这些想法。老实说，这是我从树莓派看到的最令人惊奇和激进的事情：它根本性地改变了人们对计算的认知，尤其是树莓派擅长的领域，并不仅仅催生了自己的生态系统，现在还催生了无数其他多样化的生态系统。— John ‘Warthog9' Hawley蜜蜂的树莓派在 2018 年，我和我的弟弟曾经养过几个蜂箱，并使用树莓派和各种传感器来监测蜂箱的温度和湿度。我们还计划在夏天实施蜂箱秤，以观察蜜蜂的产蜜情况，并在冬天测量重量，以查看蜜蜂是否有足够的食物。不过我们最终没有实施这个计划。我们的小型监测解决方案基于树莓派 2B，运行 Raspbian Stretch（基于 Debian 9），并连接了一个温湿度传感器（DHT11）。在蜂箱内我们有三到四个这样的传感器，用于测量蜂箱入口孔、盖子下方和最低框架的温度。我们直接将传感器连接到树莓派，并使用 Python\_DHT 传感器库读取数据。我们还建立了 InfluxDB、Telegraf，并最终设置了 Grafana 来可视化数据。如果你想了解更多关于我们的设置的信息，我们在 Linux Magazine 上发表了一篇关于我们小型监测解决方案的文章。— Heike Jurzik树莓派的复古计算我希望用树莓派创建一个模拟如何使用“开关和指示灯”将机器语言编程到旧式计算机的项目。使用树莓派的 GPIO 引脚，这看起来相当简单。例如，他们的在线手册上展示了如何使用 GPIO 开关控制 LED 的开关，或者使用按钮进行输入。我认为只需一些 LED 和开关，再加上在树莓派上运行的小程序，就可以模拟旧式计算机。不过，我缺乏空闲时间来从事这样的项目，这就是为什么我编写了 Toy CPU 来模拟它。— Jim Hall使用树莓派打造玩具当我女儿四岁的时候，她要求圣诞节时给她买一个“巨齿鲨音乐盒”。她能在脑海中完美地想像出来。它会是粉红色的、闪闪发光的，上面有她的名字。当她打开盒子时，会播放这部热门电影的主题曲。她可以将巨齿鲨和其他宝贝都放在盒子里。在网上和商店里到处搜索后，我发现没有一个能与她的想象相媲美。于是我和丈夫决定，在我们自己的玩具店（也就是他的家庭办公室）自己动手制作一个。而这一切的核心当然是树莓派。他使用光传感器和 Python 脚本，让音乐在恰当的时刻播放。我们将科技设备谨慎地放置在音乐盒的底部，并根据她的审美进行装饰。那一年，开源技术让圣诞魔法成为了可能！— Lauren Pritchett（题图：MJ/aa8f1412-0f1d-4780-99db-22d6522010b7）via: https://opensource.com/article/23/3/most-curious-uses-…

用 Lua 控制你的树莓派
type: item
date: 2023-06-09T01:05:15+08:00
description: 学习如何使用 Lua 编程语言为物联网（IoT）设备编程，并与树莓派上的通用输入/输出（GPIO）引脚互动。Lua 是一种有时会被误解的语言。它与 Python 等其他语言不同，但它是一种通用的扩展语言，广泛用于游戏引擎、框架等。总的来说，我发现 Lua 对开发人员来说是一个有价值的工具，可以让他们以一些强大的方式增强和扩展他们的项目。你可以按照 Seth Kenlon 的文章《Lua 值得学习吗？》的介绍下载并运行常用的 Lua，该文章中还包括了简单的 Lua 代码示例。但是，要充分利用 Lua，最好将它与采用该语言的框架一起使用。在本教程中，我演示了如何使用名为 Mako Server 的框架，该框架旨在使 Lua 程序员能够轻松地编写 IoT 和 Web 应用代码。我还向你展示了如何使用 API 扩展此框架以使用树莓派的 GPIO 引脚。要求在学习本教程之前，你需要一个可以登录的正在运行的树莓派。虽然我将在本教程中编译 C 代码，但你不需要任何 C 代码经验。但是，你需要一些使用 POSIX 终端的经验。安装首先，在树莓派上打开一个终端窗口并安装以下工具，以使用 Git 下载代码和编译 C 代码：$ sudo apt install git unzip gcc make 接下来，通过运行以下命令编译开源 Mako Server 代码和 lua-periphery 库（树莓派的 GPIO 库）：$ wget -O Mako-Server-Build.sh \ https://raw.githubusercontent.com/RealTimeLogic/BAS/main/RaspberryPiBuild.sh 查看脚本以了解它的作用，并在你觉得没问题后运行它：$ sh ./Mako-Server-Build.sh 编译过程可能需要一些时间，尤其是在较旧的树莓派上。编译完成后，脚本会要求你将 Mako Server 和 lua-periphery 模块安装到 /usr/local/bin/。我建议安装它以简化软件的使用。别担心，如果你不再需要它，你可以卸载它：$ cd /usr/local/bin/ $ sudo rm mako mako.zip periphery.so 要测试安装，请在终端中输入 mako。这将启动 Mako 服务器，并在你的终端中看到一些输出。你可以按 CTRL+C 停止服务器。IoT 和 Lua现在 Mako 服务器已在你的树莓派上设置好，你可以开始对 IoT 和 Web 应用进行编程，并使用 Lua 操作树莓派的 GPIO 引脚。Mako Server 框架为 Lua 开发人员提供了一个强大而简单的 API 来创建物联网应用，而 lua-periphery 模块让 Lua 开发人员可以与树莓派的 GPIO 引脚和其他外围设备进行交互。首先创建一个应用目录和一个 .preload 脚本，其中插入用于测试 GPIO 的 Lua 代码。.preload 脚本是一个 Mako 服务器扩展，在应用启动时作为 Lua 脚本加载和运行。$ mkdir gpiotst $ nano gpiotst/.preload 将以下内容复制到 Nano 编辑器 中并保存文件：-- Load periphery.so and access the LED interface local LED = require('periphery').LED local function doled() local led = LED("led0") -- Open LED led0 trace"Turn LED on" led:write(true) -- Turn on LED (set max brightness) ba.sleep(3000) -- 3 seconds trace"Turn LED off" led:write(false) -- Turn off LED (set zero brightness) led:close() end ba.thread.run(doled) -- Defer execution -- to after Mako has started 上面的 Lua 代码使用你编译并包含在 Mako 服务器中的 Lua-periphery 库控制树莓派 LED。该脚本定义了一个名为 doled 的函数来控制 LED。该脚本首先使用 Lua require 函数加载 periphery 库（共享库 periphery.so）。返回的数据是一个包含所有 GPIO API 函数的 Lua 表。但是，你只需要 LED API，你可以通过在调用 require 后附加 .LED 来直接访问它。接下来，代码定…

用 CrowPi 树莓派套件了解关于计算机的一切
type: item
date: 2023-03-25T01:02:00+08:00
description: CrowPi 是一个超棒的树莓派项目系统，安装在一个笔记本电脑般的外壳里。我喜欢历史，也喜欢计算机，因此相比于计算机如何变成个人配件，我更喜欢听它在成为日常家用电器前的故事。我经常听到的一个故事 是很久以前（反正在计算机时代算久远了）的计算机是多么的简单。事实上，它们简单到对于一个好奇的用户来说，弄清楚如何编程并不是十分困难。再看看现代计算机，它具有面向对象的编程语言、复杂的 GUI 框架、网络 API、容器等，但愈发令人担忧的是，计算工具正变得越来越难懂，对于那些没有接受过专门培训的人来说基本上无法使用。从树莓派在 2012 年发布之日起，它就一直被定位为一个教育平台。一些第三方供应商通过附加组件和培训套件支持树莓派，以帮助所有年龄段的学习者探索编程、物理计算和开源。然而，直到最近，很大程度上还是要由用户来弄清楚市场上的所有部件如何组合在一起，直到我最近买了 CrowPi。CrowPi2 介绍乌鸦是非常聪明的鸟。它们能识别并记住面孔，模仿听到的声音，解决复杂的谜题，甚至使用工具来完成任务。CrowPi 使用乌鸦作为其徽标和名字是恰当的，因为这个设备充满了探索、实验、教育的机会，最重要的是，充满了乐趣。其设计很巧妙：它看起来像笔记本电脑，但远不止于此。当你从机壳中取出蓝牙键盘时，它会显示一个隐藏的电子设备工坊，配有 LCD 屏幕、16 个按钮、刻度盘、RFID 传感器、接近传感器、线路板、扬声器、GPIO 连接、LED 阵列等等。而且这一切都是可编程的。顾名思义，该装置本身完全由树莓派提供支持，它牢固地固定在机壳底部。默认情况下，你应该用电源适配器为设备充电，包装附带一个壁式插头，你可以将其插入机壳，而不是直接为树莓派供电。你还可以使用插入外部微型 USB 端口的电池电源。机壳内甚至还有一个抽屉，方便你存放电池。这样做的时候，有一根 USB 线从电池抽屉中弹出，并插入机壳电源端口，因此你不会产生这是一台“普通”笔记本电脑的错觉。然而，这样一台设备能够有如此美观的设计已经很理想了！首次启动系统CrowPi2 提供一张安装了 Raspbian 系统，贴有 “System” 标签的 microSD 卡，不过它同时还提供了装载 RetroPie 的第二张 microSD 卡。作为一个负责任的成年人（咳咳），我自然是先启动了 RetroPie。RetroPie 总是很有趣，CrowPi2 附带两个超任风格的游戏控制器，确保你能获得最佳的复古游戏体验。令人赞叹不已的是，启动实际的 Raspbian 系统的过程同样有趣，甚至可以说更有趣。它的登录管理器是一个自定义项目中心，有一些快速链接，如编程示例项目、Python 和 Arduino IDE、Scratch、Python 示例游戏、Minecraft 等。你也可以选择退出项目中心，只使用桌面。对于习惯使用树莓派或 Linux 的人来说，CrowPi 桌面很熟悉，不过它也足够简单，所以很容易上手。左上角有应用程序菜单，桌面上有快捷图标，右上角有网络选择和音量控制的系统托盘等等。CrowPi 上有很多东西可供选择，所以你可能很难决定从哪里开始。对我来说，主要分为四大类：编程、物理电子学、Linux 和游戏。盒子里有一本使用说明，所以你会知道你需要怎样进行连接（例如，键盘是电池供电的，所以它有时确实需要充电，它和鼠标总是需要一个 USB 适配器）。虽然说明书很快就能读完，但这一例子也充分体现了 CrowPi 团队是如何认真对待说明书的。编程如果你想学习如何编码，在 CrowPi 上有很多成功的途径。你可以从中选择你觉得最满意的路径。1、ScratchScratch 是一个简单的可视化编码应用程序，可让你像拼 乐高积木 一样将代码块组合在一起，制作出游戏和互动故事。这是开启编程之旅最简单的方法，我曾见过年仅 8 岁的孩子会花数小时来研究自己设计的游戏的最佳算法。当然，它不仅适合孩子们！成年人也可以从中获得很多乐趣。不知道从哪里开始？包装盒中有一本 99 页的小册子（打印在纸张上），其中包含 Scratch 课程和项目供你尝试。2、Java 和 MinecraftMinecraft 不是开源的（虽然有 几个开源项目 复刻了它），但它有足够的可用资源，因此也经常被用来教授编程。Minecraft 是用 Java 编写的，CrowPi 同时装载有 Minecraft Pi Edition 和 BlueJ Java IDE ，如此可使学习 Java 变得比以往更容易、更有趣。3、Python 和 PyGameCrowPi 上有几个非常有趣的游戏，它们是用 Python 和 PyGame 游戏引擎 编写的。你可以玩这些游戏，然后查看其源代码以了解游戏的运行方式。CrowPi 中包含 Geany、Thonn…

用树莓派制作的问答售货机
type: item
date: 2023-03-23T05:45:47+08:00
description: 用树莓派取代食品售货机上的投币箱是一个天才之举。作为在公共图书馆工作的教育工作者，我一直在关注 树莓派 的有趣用途。在我看来，得克萨斯州达拉斯市的 问答售货机 Trivia Vending Machine 项目是这些神奇设备最具创意和最有趣的用途之一。使用树莓派取代食品售货机上的投币箱是 Greg Needel 和他的团队的一个天才之作。这个想法的潜在用途是深远的。请观看下面这个 YouTube 短视频，了解问答自动售货机的运行情况。最初的问答售货机专注于科学问题，但你可以制作一个问答售货机来回答任何问题：历史、公民、文学等等。如果你鼓励学生写自己的问题，并回答对方的问题，那将是最有吸引力的用途。请考虑这样：自动售货机可以不发放食物，而是发放当地企业的优惠券。我谋生的方式之一是教吉他课，我很乐意捐出一节吉他课作为问答售货机的优惠券。然而，学生必须积累适当数量的积分才能获得我的一堂吉他课。把你的想象力再延伸一点。是否有可能让学生解决逻辑谜题，以便从自动售货机获得食物（或优惠券）？是的，这并不难创造。也许是数独谜题、Wordle、KenKen、Sokoban 或任何其他谜题。学生可以用触摸屏玩这些谜题。国际象棋怎么样？当然，学生可以通过解决象棋谜题来获得食物（或优惠券）。你是否注意到视频中原来的问答售货机又大又重？ 设计一个更小的，可能是滚动手推车大小的三分之一，这可以在学校、图书馆、博物馆和创客嘉年华之间更容易运输。问答售货机的内部由步进电机组成。你可以在网上购买二手的。在网络上搜索“二手自动售货机电机”会出现 Vending World 和 VendMedic 网站。如果你是创客空间的成员，请向其他成员介绍问答售货机。这是一个开放的发明，没有专利，所以任何人都可以制造它。（谢谢你，Greg Needel）我想为这样的设备编写代码并不太难。如果有人可以创建此类代码的 GitHub 仓库，以及可能附带的一些解释性截屏，那就太好了。虽然问答售货机没有在红牛创意大赛中获奖，但这项发明还是值得获奖的。应该有人找到 Greg Needel 并给他一个合适的奖品。该奖项应该是什么样子的？可能是 2.5 万或 5 万美金的样子。我为 Greg Needel 和他的创意团队欢呼三声。他们把树莓派带到了这种计算机的发明者所希望的方向：修理工的快乐。大胆、美丽、开放。你还能要求更多吗？最后一件事。问答售货机是几年前使用早期的树莓派型号制作的。当前的树莓派速度更快，响应更快。因此，你在上述视频中注意到的任何交互延迟在今天的树莓派上已不复存在。哦，我非常想要一块糖果。我砸吧砸吧嘴。提醒我，我需要赚取多少积分才能获得士力架？不惜一切代价，我会不惜一切代价。via: https://opensource.com/article/23/3/raspberry-pi-trivia-vending-machine作者：Phil Shapiro 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

将你的树莓派用作流媒体服务器
type: item
date: 2023-03-11T18:19:00+08:00
description: 用树莓派串流网络摄像头的实时视频，并将视频重新串流到社交网络。出于各种原因，人们需要流式传输网络摄像头的实时视频。树莓派平台很适合此类应用。对于实时流媒体服务器等连续应用，它只需要很少的电力。可以与 Raspicam 相机模块、USB 摄像头或其他网络视频信号进行通信。该系统是一个 RTMP、HLS 和 SRT 服务器。这篇文章展示了如何将树莓派设置为流媒体服务器以使用 HLS 流媒体。你需要一个视频源才能把它作为流媒体服务器使用。即使没有树莓派，你也可以完成这里描述的步骤。此外，还有针对 Windows、Linux 和 macOS 的进一步安装说明。设置该应用程序是 datarhei Restreamer，是 datarhei Core 的图形用户界面。datarhei Core 在底层运行著名的媒体框架 FFmpeg。开始使用 datarhei Restreamer 的最简单方法是安装官方的 Docker 容器。通过 Docker Hub 的程序下载和安装是通过 docker pull 命令自动进行的。安装后，Restreamer 立即启动。如果你没有树莓派，可以使用 datarhei Restreamer GitHub 页面上的其他 Docker 容器之一（例如，支持 AMD64 或 GPU Cuda）。datarhei Restreamer 和 datarhei Core 都是 Apache 许可证 2.0 下的开源软件。以下是在支持 GPU 的树莓派 3 及以上机型上的安装命令：docker run -d --restart=always --name restreamer \ -v /opt/restreamer/config:/core/config -v /opt/restreamer/data:/core/data \ --privileged \ -p 8080:8080 -p 8181:8181 \ -p 1935:1935 -p 1936:1936 \ -p 6000:6000/udp \ datarhei/restreamer:rpi-latest 无论你使用哪条命令，你只需要 --privileged 选项来访问本地设备，如 USB 摄像头。安装后，将 Raspberry Pi 连接到本地网络。然后在浏览器中进入 http://device-ip:8181/ui 打开基于 Web 的 GUI。你应该看到以下屏幕：分配好密码，系统就可以进行首次登录了。向导正在开始配置第一个视频源。提示：上述 Docker 命令将带有登录名和密码的配置数据永久保存在 /opt/restreamer/config 文件夹中。实施该应用程序由三个逻辑部分组成：视频输入、系统仪表板和视频输出。视频输入和输出相互独立运行。视频输入该向导将帮助你从头开始创建一个视频源。这可以是一个 USB 视频源、树莓派摄像头，或者是一个网络源，如 IP 摄像头或来自网络的 m3u8 文件。HLS、RTMP 和实时 SRT 协议都可以使用。该向导可以帮助正确配置视频分辨率和声音。在最后一步，你可以分配不同 知识共享 Creative Commons 许可证。值得看一下视频信号的设置。你会发现几个选项，例如为垂直视频平台转码或旋转视频。仪表板成功创建视频信号后，你将进入仪表板。它是所有其他设置的中心起点。要看到程序的全部功能，你可以在系统偏好中切换到专家模式。仪表板包含以下内容：视频信号设置。RTMP、SRT、HLS 服务器和快照的活动内容 URL。用于重新流式传输的所有活动发布服务。启动向导来创建额外的视频源。系统菜单。实时视频信号统计。实时系统监控。视频输出有不同的方法来播放视频信号。这个 发布网站 是 Restreamer 最简单、即时可用且内部托管的登录页面。播放页面也可以传输到 Chromecast 和 AirPlay。调整背景图片和在播放器中添加标识等基本设置可以直接在 Restreamer 中进行。那些懂 HTML 的人可以为自己定制页面。高级用户可以注入代码，以使用网站的外部模块，如聊天。视频播放器下的统计模块显示活跃的观众和所有视图。“ 分享 Share ” 按钮支持直播流的分发。网站的 HTTPS 证书通过 Let's Encrypt 激活，无需太多努力。通过简单的 HTTPS 端口转发到树莓派的 LAN IP，网站就可以公开访问。发布服务是重新传输内容的一个好方法。对于流行的网站，如 YouTube、Twitch 或 PeerTube，有许多现成的模块。同样，对于其他流媒体软件、流行的 CDN 也是如此。对视频协议的完全控制允许流式传输到所有支持 RTMP、HLS 和 SRT 的目标地址。一个带有视频播放器的 HTML 片段…

用树莓派集群进行并行和分布式计算
type: item
date: 2023-03-09T18:31:37+08:00
description: 这个使用树莓派集群的学术实验向远程教育学生介绍了并行和分布式计算（PDC）的概念。自从树莓派推出以来，创造者们已经在这个简陋的袖珍芯片系统上开展了无数的计算机科学教育项目。其中包括许多探索低成本树莓派集群的项目，以介绍 并行和分布式计算 Parallel and Distributed Computing （PDC）概念。英国 开放大学 Open University （OU）为不同年龄、经历和背景的学生提供远程教育，这就提出了一些在更传统的大学中没有面临的问题。开放大学使用树莓派集群向远程教育学生介绍 PDC 概念的实验始于 2019 年，并在一篇 学术论文 中进行了介绍，但值得更广泛地了解。该项目使用基于 OctaPi 教程 的树莓派集群，该指令由 GCHQ 在知识共享许可协议下发布。八个树莓派使用一个路由器和一个交换机连接在一个私人网络中。其中一个树莓派充当主控，而其他的是服务器，将结果反馈给主控设备。用 Python 编写的程序运行在主控树莓派，而 dispy 包将活动分发在集群的各个处理核心上。OctaPi 教程他们为该集群开发了三个程序，你可以从 Git 仓库 下载它们。其中两个程序是基于文本的，并与搜索问题有关：旅行推销员和密码散列。作为完整的搜索问题，这些是教授 PDC 概念的理想选择。第三个程序是图形化的。图像组合器将三幅图像作为输入，其中有不重叠的障碍物。它通过对三幅图像的 RGBA 值进行逐个像素的比较并选择中位数来构建一个没有任何障碍物的图像。使用集群开放大学是一个远程学习机构，所以学生通过网页界面访问集群。对集群的远程访问使用大学的 OpenSTEM 实验室的基础设施。10 个集群（8 个用树莓派 4 构建，2 个用树莓派 3B+ 建造）被安装在机架上，用网络摄像头对准每个集群。学生们选择要运行的程序，使用的核心数量，以及所选程序的参数。作为输出，他们可以看到该程序在单个树莓派上运行的时间与使用所选核数的集群的时间相比。学生还可以看到程序的输出，如密码散列结果、最小和最大的旅行推销员路线，或未遮挡的图像。网络摄像头显示了集群的实时流。主控树莓派有一个 LED 显示屏，显示程序运行时的状态。网络摄像头让学生清楚地知道，他们是在用真正的专用硬件做实验，而不是得到模拟的或预先录制的结果。每个程序都有两个与之相关的活动，描述了程序设计和 PDC 操作的不同方面。其中一个主要的学习点是，PDC 计算可以提供显著的性能优势，但代价是划分和分发问题以及反过来重新组合结果所花费的时间和资源。第二个学习点是，效率受程序设计的影响很大。学生喜欢目前，树莓派集群的使用是可选的。不过根据目前的研究结果，学生们很喜欢它，并因能远程接触到物理硬件而受到激励。一位学生说：“能够使用真正的集群，而不是让它虚拟化，这真的很有趣”。另一名学生补充说：“能够真正看到集群的工作，看到多核工作的真实效果，这真的很令人兴奋。能够亲自尝试，而不仅仅是阅读有关理论，这真是太好了！”学生们正在使用集群开展旨在教授 PDC 原理的学习活动，而不是编写和运行他们自己的程序。开发低成本的树莓派集群供远程大学学生使用的经验表明，远程实践活动对教授 PDC 概念和吸引学生有好处。当我向该项目背后的团队成员之一 Daniel Gooch 询问时，他说：“对我来说，我们的不同之处在于，我们采用了一套现有的树莓派教程，并致力于整合更多外围材料，以确保它能够应对我们操作的距离和规模。”via: https://opensource.com/article/23/3/parallel-distributed-computing-raspberry-pi-clusters作者：Peter Cheer 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

利用树莓派和乒乓球制作一个假日彩灯
type: item
date: 2022-12-20T18:04:48+08:00
description: 这个树莓派教程用于制作一个可编程的 LED 灯光显示器，非常适合各种技能水平的人。我喜欢圣诞装饰品和灯饰，因此很长一段时间以来我一直想做一个可编程的 LED 项目。最近，我制作了一个由 LED 灯、乒乓球和树莓派 Zero 组成的灯阵列。这个项目相对简单并且具有教学价值，因此我认为它非常值得分享。整个彩灯由我设计，但其中一些灵感也来自 YouTube。你可以在我的 Git 存储库 中找到源代码和制作说明。购物清单树莓派 Zero树莓派保护壳5V 2A 的电源线展架255 个乒乓球热熔胶枪和若干热熔胶棒烙铁焊锡丝22 AWG 0.35mm 实芯线10 米 WS2812(B) LED 灯带（每米 30 像素）万用表钢丝钳剥线钳设计树莓派的灯光效果这个设计是根据我展框的大小决定的。我在全球速卖通买到了每米 30 像素的灯带，它可以轻松地切成 0.5 米的长度，每条有 15 个 LED 灯。乒乓球的直径是 40 毫米，所以我测量并隔开 40 毫米划了线，LED 灯条放在每隔 40 毫米的中间部分，这就产生了 17 条线。因此我的灯光阵列是 15×17。你可以根据实际情况来调整尺寸。为了给灯带和树莓派供电，我在电路板底部设置了数据线和电源线。我的 LED 灯不需要很多电，所以我使用树莓派 Zero 的 5V 输出 GPIO 为它们供电。当我以 50% 的亮度运行时，这个亮度已经足以在白天和晚上透过我的窗户看到。布线我从电路板的底部以之字形开始布线，这使得焊接非常容易，因为每行的末尾不必返回到每行的开头。我的线路大致像这样（为清楚起见，这里进行了简化，实际上它一共有 17 行）：<---------------\ | /---------------/ | \---------------< # 这里连接树莓派 使用树莓派制作显示屏当设计和布线的工作完成后就可以开始制作显示屏了。我在展板上测量并绘制了线路。我的灯带背面有胶带，所以我只需要取下背衬并将其贴在展板上。我检查了每个灯带的位置和数据线的方向，以确保灯带可以按照树莓派的指令正确串联起来。连接好所有灯带后，我剪下三段长度相同的电线，并将每个灯带末端的电源线、数据线和接地线连接到其上方。在线路连接完成后，我检查了每条灯带之间的电源线和地线之间的连接，以确保其连通性。我还检查了是否存在错误的桥接，所以我验证了电源线和地线之间的连接。我还进行了一些测试以确保所有灯都正常点亮（链路测试参阅 测试代码）。完成上述工作后，我开始在乒乓球上剪洞，用剪刀刺入乒乓球的底部，然后剪一个小洞让 LED 灯穿进去。手工不太行，每个球都不太一样，但效果真的很好。我使用的每米 30 个像素的 LED 灯，所以每个 LED 之间有大约 30 毫米的空隙。一个乒乓球是 40 毫米宽，但我不打算开始单独焊接每一个 LED！我想，这是很重要的。首先，我并不擅长焊接（正如我的照片所显示的），而且无论如何，我想“好吧，它们是乒乓球。我可以把它们压在一起！”我是这样做的：在 LED 灯上滴上热熔胶，然后在 LED 上放了一个乒乓球并按住大约五秒钟，就粘好了一个乒乓球。粘贴下一个乒乓球时我只需要挤着上一个乒乓球，就能让所有乒乓球都变得整齐了。我对它的外观很满意。它还有一个很好的好处，就是掩盖了我糟糕的焊接工作；)我继续为余下的乒乓球进行焊接。尽管这个过程中有几个乒乓球被压碎了，但最终还是顺利完成了制作。测试代码测试代码需要确保所有部件都能正常工作，为此我使用了这个 Adafruit 指南，它以红、绿和蓝点亮每个 LED，然后依次进行循环。我在测试时使用它来确保我连接无误并且焊接正常。在此之后，我在电子表格中设计了一个网格，将每个像素映射到一个网格位置。由于我的像素编号呈之字形排列，因此很难跟踪每个 LED（例如 A1 为 256，B1 为 226）。重新映射网格位置能使得我在构建图像时更容易。在所有准备工作完成之后，我就可以在纸上和电子表格中设计图像，然后编码。于是我开始添加一些动画（使用循环并将像素变为一种颜色，然后变为另一种颜色）。最终的结果还算顺利。能玩一年的树莓派彩灯我不确定这是否已经完全完成了。自从把它摆放到橱窗里，几乎每个晚上我都会添加一些新的图像和动画。我已经在考虑除夕夜的时候要做成什么样了。它不会像圣诞装饰品一起在圣诞节后被放进储藏室。我只需要在上面显示其它图案，就能使它成为一个能玩一年的彩灯！我的一个朋友推荐了像素版马里奥，这听起来是个好主意！我的代码仍然需要完善。例如，我做了一些滚动文本，但当我为文本的每个位置重新绘制时却花了很多时间。我想我可以用循环做一些事情，或者图像库可以帮助更轻松地滚动字母，并使添加文本更容易，而不是在每一步打开和关闭每个像素。这里有一张照片记录了我制作的全过程：LED 乒乓墙。可以…

使用树莓派做一个倒计时器
type: item
date: 2022-06-19T22:51:37+08:00
description: 使用树莓派和电子纸显示屏开始倒计时你的下一个假期。 圆周率日 Pi Day （3 月 14 日） 来了又走，留下美好的回忆以及 许多树莓派项目 等待我们去尝试。在任何令人精神振奋、充满欢乐的假期后回到工作中都很难，圆周率日也不例外。当我们回望三月的时候，渴望那些天的快乐。但是不用害怕，亲爱的圆周率日庆祝者们，我们开始下一个节日的漫长倒计时！好了，严肃点。我做了一个圆周率日倒计时器，你也可以！不久前，我购买了一个 树莓派 Zero W，并且用它来 解决 WiFi 信号较差的原因 。我也对使用 电子纸 ePaper 来作为它的显示屏十分感兴趣。虽然我不知道该用它来干什么，但是！它看起来真的很有趣！我买了一个十分适合放在树莓派的顶部的 2.13 英寸的 WaveShare 显示器 。安装很简单：只需要将显示器接到树莓派的 GPIO 上即可。我使用 树莓派操作系统 来实现该项目，虽然其他的操作系统肯定也能完成。但是下面的 raspi-config 命令在树莓派系统上很容易使用。设置树莓派和电子纸显示屏设置树莓派和电子纸显示屏一起工作，需要你在树莓派软件中启用串行外设接口（SPI），安装 BCM2835 C 库（来访问树莓派上的博通 BCM 2835 芯片的 GPIO 功能），安装 Python GPIO 库来控制电子纸显示屏。最后，你需要安装 WaveShare 的库来使用 Python 控制这个 2.13 英寸的显示屏。下面是完成这些的步骤。启用 SPI树莓派上启用 SPI 最简单的方式是使用 raspi-config 命令。SPI 总线允许与设备进行串行数据通信——在本例中，电子纸显示：$ sudo raspi-config 从弹出的菜单中, 选择 “ 接口选项 Interfacing Options -> SPI -> 是 Yes ” 来启用 SPI 接口，然后启动。安装 BCM2835 库如上所述，BCM2835 库是用于树莓派博通 BCM2385 芯片的软件，它允许访问 GPIO 引脚来控制设备。在我写这篇文章之时，用于树莓派的最新博通 BCM2385 库版本是 v1.68 。安装此库需要下载软件压缩包然后使用 make 来安装：# 下载 BCM2853 库并解压 $ curl -sSL http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.g> -o - | tar -xzf - # 进入解压后的文件夹 $ pushd bcm2835-1.68/ # 配置、检查并安装 BCM2853 库 $ sudo ./configure $ sudo make check $ sudo make install # 返回上级目录 $ popd 安装需要的 Python 库你用 Python 控制电子纸显示屏需要安装 Python 库 RPi.GPIO，还需要使用 python3-pil 包来画图。显然，PIL 包已经不行了，但 Pillow 可以作为代替方案。我还没有为该项目测试过 Pillow ，但它可行：# 安装需要的 Python 库 $ sudo apt-get update $ sudo apt-get install python3-pip python3-pil $ sudo pip3 install RPi.GPIO 注意：这些是 Python3 的指令。你可以在 WaveShare 网站查到 Python2 的指令。下载 WaveShare 示例和 Python 库Waveshare 维护了一个 Python 和 C 的 Git 库，用于使用其电子纸显示屏和一些展示如何使用它们的示例。对这个倒计时时钟而言，你需要克隆这个库并使用用于 2.13 英寸显示屏的库：# 克隆这个 WaveShare e-Paper git 库 $ git clone https://github.com/waveshare/e-Paper.gi> 如果你用不同的显示器或者其他公司产品，需要使用适配软件。Waveshare 提供了很多指导：WaveShare 电子纸设置指导WaveShare 电子纸库安装指导获得有趣的字体（选做）你可以随心所欲的使用显示器，为什么不搞点花样？找一个炫酷的字体！这有大量 开放字体许可 的字体可供选择。我十分喜爱 Bangers 字体。如果你看过 YouTube 那你见过这种字体了，它十分流行。你可以下载到本地的共享字体目录文件中，并且所有的应用都可以使用，包括这个项目：# “Bangers” 字体是 Vernon Adams 使用 Google 字体开放许可授权的字体 $ mkdir -p ~/.local/share/fonts $ curl -sSL…

使用树莓派建立一个带有移动网络连接功能的路由器
type: item
date: 2022-04-15T20:38:00+08:00
description: 在你的网络路由器上使用 OpenWRT 获得更多控制功能。树莓派是一种小型单板电脑，尽管只有信用卡大小，但是能做许多事情。实际上，这个小电脑几乎可以成为你想让它成为的任何东西，只要你打开想象力。树莓派爱好者已经做了许多不同的项目，从简单的程序到复杂的自动化项目和解决方案，如气象站，甚至智能家居设备。这篇文章将展示怎样使用 OpenWRT 项目将你的树莓派变成带有 LTE 移动网络连接功能的路由器。关于 OpenWRT 和 LTEOpenWRT 是一个利用 Linux 内核为嵌入式设备开发的开源项目，它已经存在超过 15 年了，拥有一个庞大而活跃的社区。有许多使用 OpenWRT 的方法，但是它的主要目的还是用在路由器上。它提供了包管理功能和一个完全可写的文件系统，并且因为它的的开源属性，你可以查看和修改代码，并贡献到开源生态。如果你想对你的路由器获得更多的控制，这就是你想要的系统。 长期演进技术 Long-term evolution （LTE）是一个基于 GSM/EGDE 和 UMTS/HSPA 技术的无线宽带通信标准。我使用的 LTE 调制解调器是一个 USB 设备，可以为树莓派电脑增加 3G 或 4G（LTE）蜂窝连接。安装前的准备对这个项目来说，你需要：一个带有电源线的树莓派一台运行 Linux 的电脑一张至少 16GB 的 SD 储存卡以太网线LTE 调制解调器（我使用的是 Teltonika TRM240）一张移动网络的 SIM 卡安装 OpenWRT首先，下载最新的 兼容树莓派的 OpenWRT 的发布版本。在 OpenWRT 官网，你可以看到 4 个镜像：两个 ext4 文件系统的和两个 squashfs 文件系统的。我使用 ext4 文件系统。你可以下载 factory 或者 sysupgrade 镜像，这两个都运行良好。下载了镜像后，你按照 以下的说明 需要解压并安装它到 SD 卡上。这将会花些时间安装固件，需要些耐心。一旦安装完成，在你的 SD 卡上将会有两个分区。一个是用来放 bootloader ，另一个是 OpenWRT 系统。启动系统要启动你的新系统，插入 SD 卡到树莓派，用以太网线把树莓派和你的路由器（或者交换机）相连，然后点亮。如果你有使用树莓派的经验，你可能习惯于通过终端使用 SSH 访问过它，或者通过显示器和键盘连接到树莓派。OpenWRT 工作有一点点不同。你与这个系统交互是通过网页浏览器，所以你必须能够通过网络来访问你的树莓派。缺省状态下，树莓派使用的 IP 地址是：192.168.1.1。用来配置树莓派的计算机必须和树莓派在同一个子网中。如果你的网络没有使用 192.168.1.x 地址，或者你不能确定，在 GNOME 打开 “ 设置 Settings ” ，导航到网络设置，选择 “ 手动 Manual ” ，然后键入以下的 IP 地址和子网掩码：IP 地址：192.168.1.15网络掩码：255.255.255.0在你的电脑上打开浏览器然后导航到 192.168.1.1 。这将打开一个验证网页，你可以登录到你的树莓派。首次登录不需要密码，所以直接点击 “ 登录 Login ” 按钮继续。设置网络连接树莓派只有一个以太网口，而普通路由器有两个：一个是 WAN（有线区域网络）口，另一个是 LAN （本地区域网络）。你有两个选择：使用你的以太网口接入互联网使用 WIFI 接入互联网使用以太网连接你决定使用以太网，导航到 “ 网络 Network → 接口 Interfaces ”。在这个设置页面，按下与 “LAN” 接口对应的蓝色 “ 编辑 Edit ” 按钮。应该会出现一个弹窗，在这个窗口中，你需要键入与你将要连接树莓派的路由器子网匹配的 IP 地址。如果需要的话，修改子网掩码，并输入树莓派将要连接的路由器的 IP 地址。保存设置，然后通过以太网将你的树莓派连接到路由器。你现在可以用这个新的 IP 地址访问树莓派。当你在把树莓派投入生产环境使用之前，确保为你的 OpenWRT 设置一个密码！使用 WiFi 连接如果你想通过 WiFi 将树莓派连接到互联网，导航到 “ 网络 Network → 无线 Wireless ” 。在 “ 无线 Wireless ” 菜单里，按下蓝色的 “ 扫描 Scan ” 按钮查找你的家庭网络。在弹出的窗口中，找到你的 WiFi 网络然后连接它。不要忘记 “ 保存并应用 Save and Apply ” 设置。在这 “ 网络 Network → 接口 Interfaces ” 部分，你应该看到了一个新的接口。当你在把树莓派投入生产环境使用之前，确保为你的 OpenWRT 设置一个密码！安装必要的软件包默认状态下，路由器并没有安装许多软件包。OpenWRT…

在树莓派上创建一个最小化的服务器
type: item
date: 2022-03-29T00:12:28+08:00
description: 不要急着丢弃那台旧树莓派，这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。最近，我的 树莓派 上的 microSD 储存卡不工作了。它已经作为服务器持续使用将近两年了，这为我提供了一个开始探索和修正问题的好机会。在初始化安装完成以后，它开始出现一些磁盘方面的问题，并且官方的树莓派操作系统发布了一个有重大意义的更新（并从 Raspbian 更名为 树莓派操作系统 Raspberr Pi OS ）。所以我买了一个新的储存卡并开始重装。尽管树莓派 3B 不是最新的硬件，但对于运行多样化服务的最小化的服务器还是足够的。我认为我之前的安装使用了完整的安装镜像，包括了图形用户界面和许多其他的软件包是没有必要的。这个详细步骤的指南展示了我怎样用最小化设置来充分利用我珍贵的树莓派系统资源。开始首先，要为树莓派创建一个新的系统驱动器。这需要两样东西：系统镜像文件和一张 microSD 储存卡。下载树莓派系统镜像文件虽然有好几种操作系统可供选择，但我坚持选择树莓派官方支持的系统。第一步是从 树莓派操作系统 官方网站上下载最新的系统镜像文件到计算机，然后后写入储存卡。他们提供了三个不同的镜像，我选择了精简版。它是最小化的操作系统，只包含基本系统必要的文件，所以它占用最少的磁盘空间和系统内存。（当我下载系统的时候，发布日期是 2020 年 8 月 20 日，但是它现在肯定已经更新了。我觉得不会有什么巨大不同，但是我建议读一下发行说明。）将树莓派系统镜像写到储存卡第二步是写下载的系统镜像到储存卡。我的卡之前用过，当我把它插入我的 Linux 桌面计算机之后，它自动加载了两个存在的分区。在我卸载这两个分区前，我不能写入镜像。要这样做，我必须得用下面的 lsblk 命令来确定它们的路径，经确定，该设备路径为 /dev/mmcblk0：# lsblk -p 我用 umount 命令卸载了这两个分区：# umount /dev/mmcblk0p2 # umount /dev/mmcblk0p1 一旦分区被卸载，就可以将镜像文件写入到储存卡了。尽管有许多图形化的写入工具，我还是习惯是用古老的 dd 命令：# dd bs=4M if=/home/alan/Downloads/raspios/2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 status=progress conv=fsync 启动树莓派你只需要一个显示器、键盘、电源适配器来使用树莓派。我还有一个以太网网线用于网络连接，相比无线网络，我更喜欢通过网线来连接一个专用的服务器。插入储存卡并打开树莓派的电源。一旦成功启动，用默认的缺省密码来进行登录：用户名 pi，密码raspberry。系统设置按照以下步骤尽可能最小化设置磁盘空间、内存使用等。我建议尽可能的花时间研究每个配置，使之尽量正确。通常有几种应用配置的方法，有些配置文件和选项可能会被丢弃，所以要查看产品文档确保你没有应用过时的配置。运行 raspi-config树莓派系统的主设置程序叫做 raspi-config。登录以后立即运行它：# raspi-config 它出现了一个扩展根文件系统的选项，可以利用储存卡上所有可利用的空间。选择这个选项之后，重启并重新登录。用 df 命令来验证储存卡的总容量是否被完全使用：# df -h 如果你需要设置其他选项，请再次运行 raspi-config。它们中的一些选项可以根据你的偏好和配置进行变化。仔细检查所有这些选项，确定没有任何遗漏。为了获得最佳性能，我建议做以下调整。（我跳过了一些我们没有做任何变化的选项。） 系统选项 System options ：在此你可以设置主机名，最好使用完全限定的域名（FQDN）。你也能在这里更改你的密码，这始终是强烈建议的。 接口选项 Interface options ：开启 SSH 服务。 性能选项 Performance options ：将 GPU 内存减少到最低值（16MB）。 本地化选项 Localization options ：选择你的时区、位置、键盘类型。 高级选项 Advanced options ：这个选项包括扩展根文件系统的选项。如果你在上面没扩展，一定要在这里做。这样你可以访问储存卡上的所有可用空间。 更新 Update ：进入更新选项会立即检查 raspi-config 工具是否有更新。如果更新可用，它将被下载并应用，raspi-config 将在几秒钟后重启。一旦你在 raspi-config 中完成这些配置，选择“ 完成 Finish ”退出该工具。手动配置我还建议几个其他更改，它们全都要求编辑某种配置文件来手动更改设置。设置静态 IP 地址一般来说，…