分类 树莓派 下的文章

这个教程将帮助你入门 树莓派 3 Raspberry Pi 3

这篇文章是我的使用树莓派 3 创建新项目的每周系列文章的一部分。该系列的这个第一篇文章专注于入门,它主要讲安装 Raspbian 和 PIXEL 桌面,以及设置网络和其它的基本组件。

你需要:

  • 一台树莓派 3
  • 一个 5v 2mAh 带 USB 接口的电源适配器
  • 至少 8GB 容量的 Micro SD 卡
  • Wi-Fi 或者以太网线
  • 散热片
  • 键盘和鼠标
  • 一台 PC 显示器
  • 一台用于准备 microSD 卡的 Mac 或者 PC

现在有很多基于 Linux 操作系统可用于树莓派,你可以直接安装它,但是,如果你是第一次接触树莓派,我推荐使用 NOOBS,它是树莓派官方的操作系统安装器,它安装操作系统到该设备的过程非常简单。

在你的电脑上从 这个链接 下载 NOOBS。它是一个 zip 压缩文件。如果你使用的是 MacOS,可以直接双击它,MacOS 会自动解压这个文件。如果你使用的是 Windows,右键单击它,选择“解压到这里”。

如果你运行的是 Linux 桌面,如何去解压 zip 文件取决于你的桌面环境,因为,不同的桌面环境下解压文件的方法不一样,但是,使用命令行可以很容易地完成解压工作。

$ unzip NOOBS.zip

不管它是什么操作系统,打开解压后的文件,你看到的应该是如下图所示的样子:

content

现在,在你的 PC 上插入 Micro SD 卡,将它格式化成 FAT32 格式的文件系统。在 MacOS 上,使用磁盘实用工具去格式化 Micro SD 卡:

format

在 Windows 上,只需要右键单击这个卡,然后选择“格式化”选项。如果是在 Linux 上,不同的桌面环境使用不同的工具,就不一一去讲解了。在这里我写了一个教程,在 Linux 上使用命令行界面 去格式化 SD 卡为 Fat32 文件系统。

在你的卡格式成了 FAT32 格式的文件系统后,就可以去拷贝下载的 NOOBS 目录的内容到这个卡的根目录下。如果你使用的是 MacOS 或者 Linux,可以使用 rsync 将 NOOBS 的内容传到 SD 卡的根目录中。在 MacOS 或者 Linux 中打开终端应用,然后运行如下的 rsync 命令:

rsync -avzP /path_of_NOOBS /path_of_sdcard

一定要确保选择了 SD 卡的根目录,在我的案例中(在 MacOS 上),它是:

rsync -avzP /Users/swapnil/Downloads/NOOBS_v2_2_0/ /Volumes/U/

或者你也可以拷贝粘贴 NOOBS 目录中的内容。一定要确保将 NOOBS 目录中的内容全部拷贝到 Micro SD 卡的根目录下,千万不能放到任何的子目录中。

现在可以插入这张 MicroSD 卡到树莓派 3 中,连接好显示器、键盘鼠标和电源适配器。如果你拥有有线网络,我建议你使用它,因为有线网络下载和安装操作系统更快。树莓派将引导到 NOOBS,它将提供一个供你去选择安装的分发版列表。从第一个选项中选择 Raspbian,紧接着会出现如下图的画面。

raspi config

在你安装完成后,树莓派将重新启动,你将会看到一个欢迎使用树莓派的画面。现在可以去配置它,并且去运行系统更新。大多数情况下,我们都是在没有外设的情况下使用树莓派的,都是使用 SSH 基于网络远程去管理它。这意味着你不需要为了管理树莓派而去为它接上鼠标、键盘和显示器。

开始使用它的第一步是,配置网络(假如你使用的是 Wi-Fi)。点击顶部面板上的网络图标,然后在出现的网络列表中,选择你要配置的网络并为它输入正确的密码。

wireless

恭喜您,无线网络的连接配置完成了。在进入下一步的配置之前,你需要找到你的网络为树莓派分配的 IP 地址,因为远程管理会用到它。

打开一个终端,运行如下的命令:

ifconfig

现在,记下这个设备的 wlan0 部分的 IP 地址。它一般显示为 “inet addr”。

现在,可以去启用 SSH 了,在树莓派上打开一个终端,然后打开 raspi-config 工具。

sudo raspi-config

树莓派的默认用户名和密码分别是 “pi” 和 “raspberry”。在上面的命令中你会被要求输入密码。树莓派配置工具的第一个选项是去修改默认密码,我强烈推荐你修改默认密码,尤其是你基于网络去使用它的时候。

第二个选项是去修改主机名,如果在你的网络中有多个树莓派时,主机名用于区分它们。一个有意义的主机名可以很容易在网络上识别每个设备。

然后进入到接口选项,去启用摄像头、SSH、以及 VNC。如果你在树莓派上使用了一个涉及到多媒体的应用程序,比如,家庭影院系统或者 PC,你也可以去改变音频输出选项。缺省情况下,它的默认输出到 HDMI 接口,但是,如果你使用外部音响,你需要去改变音频输出设置。转到树莓派配置工具的高级配置选项,选择音频,然后选择 “3.5mm” 作为默认输出。

[小提示:使用箭头键去导航,使用回车键去选择]

一旦应用了所有的改变, 树莓派将要求重新启动。你可以从树莓派上拔出显示器、鼠标键盘,以后可以通过网络来管理它。现在可以在你的本地电脑上打开终端。如果你使用的是 Windows,你可以使用 Putty 或者去读我的文章 - 怎么在 Windows 10 上安装 Ubuntu Bash。

在你的本地电脑上输入如下的 SSH 命令:

ssh pi@IP_ADDRESS_OF_Pi

在我的电脑上,这个命令是这样的:

ssh [email protected]

输入它的密码,你登入到树莓派了!现在你可以从一台远程电脑上去管理你的树莓派。如果你希望通过因特网去管理树莓派,可以去阅读我的文章 - 如何在你的计算机上启用 RealVNC

在该系列的下一篇文章中,我将讲解使用你的树莓派去远程管理你的 3D 打印机。


via: https://www.infoworld.com/article/3176488/linux/a-beginner-s-guide-to-raspberry-pi-3.html

作者:Swapnil Bhartiya 译者:qhwdw 校对:wxy

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

这篇博文将向你展示如何使用 Docker 和 OpenFaaS 框架构建你自己的 Serverless 树莓派集群。大家常常问我能用他们的集群来做些什么?而这个应用完美匹配卡片尺寸的设备——只需添加更多的树莓派就能获取更强的计算能力。

“Serverless” (无服务器)是事件驱动架构的一种设计模式,与“桥接模式”、“外观模式”、“工厂模式”和“云”这些名词一样,都是一种抽象概念。

图片:3 个 Raspberry Pi Zero

这是我在本文中描述的集群,用黄铜支架分隔每个设备。

Serverless 是什么?它为何重要?

行业对于 “serverless” 这个术语的含义有几种解释。在这篇博文中,我们就把它理解为一种事件驱动的架构模式,它能让你用自己喜欢的任何语言编写轻量可复用的功能。更多关于 Serverless 的资料

Serverless 架构也引出了“功能即服务服务”模式,简称 FaaS

Serverless 的“功能”可以做任何事,但通常用于处理给定的输入——例如来自 GitHub、Twitter、PayPal、Slack、Jenkins CI pipeline 的事件;或者以树莓派为例,处理像红外运动传感器、激光绊网、温度计等真实世界的传感器的输入。

Serverless 功能能够更好地结合第三方的后端服务,使系统整体的能力大于各部分之和。

了解更多背景信息,可以阅读我最近一偏博文:功能即服务(FaaS)简介

概述

我们将使用 OpenFaaS,它能够让主机或者集群作为支撑 Serverless 功能运行的后端。任何能够使用 Docker 部署的可执行二进制文件、脚本或者编程语言都能在 OpenFaaS 上运作,你可以根据速度和伸缩性选择部署的规模。另一个优点是,它还内建了用户界面和监控系统。

这是我们要执行的步骤:

  • 在一个或多个主机上配置 Docker (树莓派 2 或者 3);
  • 利用 Docker Swarm 将它们连接;
  • 部署 OpenFaaS
  • 使用 Python 编写我们的第一个功能。

Docker Swarm

Docker 是一项打包和部署应用的技术,支持集群上运行,有着安全的默认设置,而且在搭建集群时只需要一条命令。OpenFaaS 使用 Docker 和 Swarm 在你的可用树莓派上传递你的 Serverless 功能。

我推荐你在这个项目中使用带树莓派 2 或者 3,以太网交换机和强大的 USB 多端口电源适配器

准备 Raspbian

Raspbian Jessie Lite 写入 SD 卡(8GB 容量就正常工作了,但还是推荐使用 16GB 的 SD 卡)。

注意:不要下载成 Raspbian Stretch 了

社区在努力让 Docker 支持 Raspbian Stretch,但是还未能做到完美运行。请从树莓派基金会网站下载 Jessie Lite 镜像。

我推荐使用 Etcher.io 烧写镜像。

在引导树莓派之前,你需要在引导分区创建名为 ssh 的空白文件。这样才能允许远程登录。

接通电源,然后修改主机名

现在启动树莓派的电源并且使用 ssh 连接:

$ ssh [email protected]

默认密码是 raspberry

使用 raspi-config 工具把主机名改为 swarm-1 或者类似的名字,然后重启。

当你到了这一步,你还可以把划分给 GPU (显卡)的内存设置为 16MB。

现在安装 Docker

我们可以使用通用脚本来安装:

$ curl -sSL https://get.docker.com | sh
这个安装方式在将来可能会发生变化。如上文所说,你的系统需要是 Jessie,这样才能得到一个确定的配置。

你可能会看到类似下面的警告,不过你可以安全地忽略它并且成功安装上 Docker CE 17.05:

WARNING: raspbian is no longer updated @ https://get.docker.com/  
Installing the legacy docker-engine package...  

之后,用下面这个命令确保你的用户帐号可以访问 Docker 客户端:

$ usermod pi -aG docker
如果你的用户名不是 pi,那就把它替换成你的用户名。

修改默认密码

输入 $sudo passwd pi,然后设置一个新密码,请不要跳过这一步!

重复以上步骤

现在为其它的树莓派重复上述步骤。

创建你的 Swarm 集群

登录你的第一个树莓派,然后输入下面的命令:

$ docker swarm init
Swarm initialized: current node (3ra7i5ldijsffjnmubmsfh767) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-496mv9itb7584pzcddzj4zvzzfltgud8k75rvujopw15n3ehzu-af445b08359golnzhncbdj9o3 \
    192.168.0.79:2377

你会看到它显示了一个口令,以及其它节点加入集群的命令。接下来使用 ssh 登录每个树莓派,运行这个加入集群的命令。

等待连接完成后,在第一个树莓派上查看集群的节点:

$ docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS  
3ra7i5ldijsffjnmubmsfh767 *   swarm1              Ready               Active              Leader  
k9mom28s2kqxocfq1fo6ywu63     swarm3              Ready               Active  
y2p089bs174vmrlx30gc77h4o     swarm4              Ready               Active  

恭喜你!你现在拥有一个树莓派集群了!

更多关于集群的内容

你可以看到三个节点启动运行。这时只有一个节点是集群管理者。如果我们的管理节点死机了,集群就进入了不可修复的状态。我们可以通过添加冗余的管理节点解决这个问题。而且它们依然会运行工作负载,除非你明确设置了让你的服务只运作在工作节点上。

要把一个工作节点升级为管理节点,只需要在其中一个管理节点上运行 docker node promote <node_name> 命令。

注意: Swarm 命令,例如 docker service ls 或者 docker node ls 只能在管理节点上运行。

想深入了解管理节点与工作节点如何保持一致性,可以查阅 Docker Swarm 管理指南

OpenFaaS

现在我们继续部署程序,让我们的集群能够运行 Serverless 功能。OpenFaaS 是一个利用 Docker 在任何硬件或者云上让任何进程或者容器成为一个 Serverless 功能的框架。因为 Docker 和 Golang 的可移植性,它也能很好地运行在树莓派上。

如果你支持 OpenFaaS,希望你能 星标 OpenFaaS 的 GitHub 仓库。

登录你的第一个树莓派(你运行 docker swarm init 的节点),然后部署这个项目:

$ git clone https://github.com/alexellis/faas/
$ cd faas
$ ./deploy_stack.armhf.sh
Creating network func_functions  
Creating service func_gateway  
Creating service func_prometheus  
Creating service func_alertmanager  
Creating service func_nodeinfo  
Creating service func_markdown  
Creating service func_wordcount  
Creating service func_echoit  

你的其它树莓派会收到 Docer Swarm 的指令,开始从网上拉取这个 Docker 镜像,并且解压到 SD 卡上。这些工作会分布到各个节点上,所以没有哪个节点产生过高的负载。

这个过程会持续几分钟,你可以用下面指令查看它的完成状况:

$ watch 'docker service ls'
ID                  NAME                MODE                REPLICAS            IMAGE                                   PORTS  
57ine9c10xhp        func_wordcount      replicated          1/1                 functions/alpine:latest-armhf  
d979zipx1gld        func_prometheus     replicated          1/1                 alexellis2/prometheus-armhf:1.5.2       *:9090->9090/tcp  
f9yvm0dddn47        func_echoit         replicated          1/1                 functions/alpine:latest-armhf  
lhbk1fc2lobq        func_markdown       replicated          1/1                 functions/markdownrender:latest-armhf  
pj814yluzyyo        func_alertmanager   replicated          1/1                 alexellis2/alertmanager-armhf:0.5.1     *:9093->9093/tcp  
q4bet4xs10pk        func_gateway        replicated          1/1                 functions/gateway-armhf:0.6.0           *:8080->8080/tcp  
v9vsvx73pszz        func_nodeinfo       replicated          1/1                 functions/nodeinfo:latest-armhf  

我们希望看到每个服务都显示 “1/1”。

你可以根据服务名查看该服务被调度到哪个树莓派上:

$ docker service ps func_markdown
ID                  IMAGE                                   NODE    STATE  
func_markdown.1     functions/markdownrender:latest-armhf   swarm4  Running  

状态一项应该显示 Running,如果它是 Pending,那么镜像可能还在下载中。

在这时,查看树莓派的 IP 地址,然后在浏览器中访问它的 8080 端口:

$ ifconfig

例如,如果你的 IP 地址是 192.168.0.100,那就访问 http://192.168.0.100:8080

这是你会看到 FaaS UI(也叫 API 网关)。这是你定义、测试、调用功能的地方。

点击名称为 “func\_markdown” 的 Markdown 转换功能,输入一些 Markdown(这是 Wikipedia 用来组织内容的语言)文本。

然后点击 “invoke”。你会看到调用计数增加,屏幕下方显示功能调用的结果。

部署你的第一个 Serverless 功能:

这一节的内容已经有相关的教程,但是我们需要几个步骤来配置树莓派。

获取 FaaS-CLI

$ curl -sSL cli.openfaas.com | sudo sh
armv7l  
Getting package https://github.com/alexellis/faas-cli/releases/download/0.4.5-b/faas-cli-armhf  

下载样例

$ git clone https://github.com/alexellis/faas-cli
$ cd faas-cli

为树莓派修补样例模版

我们临时修改我们的模版,让它们能在树莓派上工作:

$ cp template/node-armhf/Dockerfile template/node/
$ cp template/python-armhf/Dockerfile template/python/

这么做是因为树莓派和我们平时关注的大多数计算机使用不一样的处理器架构。

了解 Docker 在树莓派上的最新状况,请查阅: 你需要了解的五件事

现在你可以跟着下面为 PC、笔记本和云端所写的教程操作,但我们在树莓派上要先运行一些命令。

注意第 3 步:

  • 把你的功能放到先前从 GitHub 下载的 faas-cli 文件夹中,而不是 ~/functinos/hello-python 里。
  • 同时,在 stack.yml 文件中把 localhost 替换成第一个树莓派的 IP 地址。

集群可能会花费几分钟把 Serverless 功能下载到相关的树莓派上。你可以用下面的命令查看你的服务,确保副本一项显示 “1/1”:

$ watch 'docker service ls'
pv27thj5lftz        hello-python        replicated          1/1                 alexellis2/faas-hello-python-armhf:latest  

继续阅读教程: 使用 OpenFaaS 运行你的第一个 Serverless Python 功能

关于 Node.js 或者其它语言的更多信息,可以进一步访问 FaaS 仓库

检查功能的指标

既然使用 Serverless,你也不想花时间监控你的功能。幸运的是,OpenFaaS 内建了 Prometheus 指标检测,这意味着你可以追踪每个功能的运行时长和调用频率。

指标驱动自动伸缩

如果你给一个功能生成足够的负载,OpenFaaS 将自动扩展你的功能;当需求消失时,你又会回到单一副本的状态。

这个请求样例你可以复制到浏览器中:

只要把 IP 地址改成你的即可。

http://192.168.0.25:9090/graph?g0.range_input=15m&g0.stacked=1&g0.expr=rate(gateway_function_invocation_total%5B20s%5D)&g0.tab=0&g1.range_input=1h&g1.expr=gateway_service_count&g1.tab=0  

这些请求使用 PromQL(Prometheus 请求语言)编写。第一个请求返回功能调用的频率:

rate(gateway_function_invocation_total[20s])  

第二个请求显示每个功能的副本数量,最开始应该是每个功能只有一个副本。

gateway_service_count  

如果你想触发自动扩展,你可以在树莓派上尝试下面指令:

$ while [ true ]; do curl -4 localhost:8080/function/func_echoit --data "hello world" ; done

查看 Prometheus 的 “alerts” 页面,可以知道你是否产生足够的负载来触发自动扩展。如果没有,你可以尝试在多个终端同时运行上面的指令。

当你降低负载,副本数量显示在你的第二个图表中,并且 gateway_service_count 指标再次降回 1。

结束演讲

我们现在配置好了 Docker、Swarm, 并且让 OpenFaaS 运行代码,把树莓派像大型计算机一样使用。

希望大家支持这个项目,星标 FaaS 的 GitHub 仓库

你是如何搭建好了自己的 Docker Swarm 集群并且运行 OpenFaaS 的呢?在 Twitter @alexellisuk 上分享你的照片或推文吧。

观看我在 Dockercon 上关于 OpenFaaS 的视频

我在 Austin 的 Dockercon 上展示了 OpenFaaS。——观看介绍和互动例子的视频: https://www.youtube.com/embed/-h2VTE9WnZs

有问题?在下面的评论中提出,或者给我发邮件,邀请我进入你和志同道合者讨论树莓派、Docker、Serverless 的 Slack channel。

想要学习更多关于树莓派上运行 Docker 的内容?

我建议从 你需要了解的五件事 开始,它包含了安全性、树莓派和普通 PC 间微妙差别等话题。


via: https://blog.alexellis.io/your-serverless-raspberry-pi-cluster/

作者:Alex Ellis 译者:haoqixu 校对:wxy

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

怎样在家用 Python 和树莓派搭建一个家用便携的自制酿啤酒装置

 title=

大约十年前我开始酿制自制啤酒,和许多自己酿酒的人一样,我开始在厨房制造提纯啤酒。这需要一些设备并且做出来后确实是好的啤酒,最终,我用一个放入了所有大麦的大贮藏罐作为我的麦芽浆桶。几年之后我一次酿制过 5 加仑啤酒,但是酿制 10 加仑时也会花费同样的时间和效用(只是容器比之前大些),之前我就是这么做的。容量提升到 10 加仑之后,我偶然看到了 StrangeBrew Elsinore ,我意识到我真正需要的是将整个酿酒过程转换成全电子化的,用树莓派来运行它。

建造自己的家用电动化酿酒系统需要大量这方面的技术信息,许多学习酿酒的人是在 TheElectricBrewery.com 这个网站起步的,只不过将那些控制版搭建在一起是十分复杂的,尽管最简单的办法在这个网站上总结的很好。当然你也能用一个小成本的方法并且依旧可以得到相同的结果 —— 用一个热水壶和热酒容器通过一个 PID 控制器来加热你的酿酒原料。但是我认为这有点太无聊(这也意味着你不能体验到完整的酿酒过程)。

需要用到的硬件

在我开始我的这个项目之前, 我决定开始买零件,我最基础的设计是一个可以将液体加热到 5500 瓦的热酒容器(HLT)和开水壶,加一个活底的麦芽浆桶,我通过一个 50 英尺的不锈钢线圈在热酒容器里让泵来再循环麦芽浆("热量交换再循环麦芽浆系统, 也叫 HERMS)。同时我需要另一个泵来在热酒容器里循环水,并且把水传输到麦芽浆桶里,整个电子部件全部是用树莓派来控制的。

建立我的电子酿酒系统并且尽可能的自动化意味着我需要以下的组件:

  • 一个 5500 瓦的电子加热酒精容器(HLT)
  • 能够放入加热酒精容器里的 50 英尺(0.5 英寸)的不锈钢线圈(热量交换再循环麦芽浆系统)
  • 一个 5500 瓦的电子加热水壶
  • 多个固态继电器加热开关
  • 2 个高温食品级泵
  • 泵的开关用继电器
  • 可拆除装置和一个硅管
  • 不锈钢球阀
  • 一个测量温度的探针
  • 很多线
  • 一个来容纳这些配件的电路盒子

 title=

酿酒系统 (photo by Christopher Aedo. CC BY-SA 4.0)

建立酿酒系统的电气化方面的细节 The Electric Brewery 这个网站概括的很好,这里我不再重复,当你计划用树莓派代替这个 PID 控制器的话,你可以读以下的建议。

一个重要的事情需要注意,固态继电器(SSR)信号电压,许多教程建议使用一个 12 伏的固态继电器来关闭电路,树莓派的 GPIO 针插口只支持 3 伏输出电压,然而,必须购买继电器将电压变为 3 伏。

 title=

Inkbird SSR (photo by Christopher Aedo. CC BY-SA 4.0)

要运行酿酒系统,你的树莓派必须做两个关键事情:测量来自几个不同位置的温度,用继电器开关来控制加热元件,树莓派很容易来处理这些任务。

这里有一些不同的方法来将温度传感器连到树莓派上,但是我找到了最方便的方法用单总线。这就可以让多个传感器分享相同的线路(实际上是三根线),这三根线可以使酿酒系统的多个设备更方便的工作,如果你要从网上找一个防水的 DS18B20 温度传感器,你可以会找到很多选择。我用的是日立 DS18B20 防水温度传感器

要控制加热元件,树莓派包括了几个用来软件寻址的总线扩展器(GPIO),它会通过在某个文件写入 0 或者 1 让你发送3.3v 的电压到一个继电器,在我第一次了解树莓派是怎样工作的时候,这个用 GPIO 驱动继电器的树莓派教程对我来说是最有帮助的,总线扩展器控制着多个固态继电器,通过酿酒软件来直接控制加热元件的开关。

我首先将所有部件放到这个电路盒子,因为这将成为一个滚动的小车,我要让它便于移动,而不是固定不动的,如果我有一个店(比如说在车库、工具房、或者地下室),我需要要用一个装在墙上的更大的电路盒,而现在我找到一个大小正好的防水工程盒子,能放进每件东西,最后它成为小巧紧凑工具盒,并且能够工作。在左下角是和树莓派连接的为总线扩展器到单总线温度探针和固态继电器的扩展板。

要保持 240v 的固态继电器温度不高,我在盒子上切了个洞,在盒子的外面用 CPU 降温凝胶把铜片散热片安装到盒子外面的热槽之间。它工作的很好,盒子里没有温度上的问题了,在盒子盖上我放了两个开关为 120v 的插座,加两个240v 的 led 来显示加热元件是否通电。我用干燥器的插座和插头,所以可以很容易的断开电热水壶的连接。首次尝试每件事情都工作正常。(第一次绘制电路图必有回报)

这个照片来自“概念”版,最终生产系统应该有两个以上的固态继电器,以便 240v 的电路两个针脚能够切换,另外我将通过软件来切换泵的开关。现在通过盒子前面的物理开关控制它们,但是也很容易用继电器控制它们。

 title=

控制盒子 (photo by Christopher Aedo. CC BY-SA 4.0)

唯一剩下有点棘手的事情是温度探针的压合接头,这个探针安装在加热酒精容器和麦芽浆桶球形的最底部阀门前的 T 字型接头上。当液体流过温度传感器,温度可以准确显示。我考虑加一个套管到热水壶里,但是对于我的酿造工艺没有什么用。最后,我买到了四分之一英寸的压合接头,它们工作完美。

软件

一旦硬件整理好,我就有时间来处理软件了,我在树莓派上跑了最新的 Raspbian 发行版,操作系统方面没有什么特别的。

我开始使用 Strangebrew Elsinore 酿酒软件,当我的朋友问我是否我听说过 Hosehead(一个基于树莓派的酿酒控制器),我找到了 Strangebrew Elsinore 。我认为 Hosehead 很棒,但我并不是要买一个酿酒控制器,而是要挑战自己,搭建一个自己的。

设置 Strangebrew Elsinore 很简单,其文档直白,没有遇到任何的问题。尽管 Strangebrew Elsinore 工作的很好,但在我的一代树莓派上运行 java 有时是费力的,不止崩溃一次。我看到这个软件开发停顿也很伤心,似乎他们也没有更多贡献者的大型社区(尽管有很多人还在用它)。

CraftBeerPi

之后我偶然遇到了一个用 Python 写的 CraftbeerPI,它有活跃的贡献者支持的开发社区。原作者(也是当前维护者) Manuel Fritsch 在贡献和反馈问题处理方面做的很好。克隆这个仓库然后开始只用了我一点时间。其 README 文档也是一个连接 DS1820 温度传感器的好例子,同时也有关于硬件接口到树莓派或者芯片电脑 的注意事项。

在启动的时候,CraftbeerPI 引导用户通过一个设置过程来发现温度探针是否可用,并且让你指定哪个 GPIO 总线扩展器指针来管理树莓派上哪个配件。

 title=

CraftBeerPi (photo by Christopher Aedo. CC BY-SA 4.0)

用这个系统进行自制酿酒是容易的,我能够依靠它掌握可靠的温度,我能输入多个温度段来控制麦芽浆温度,用CraftbeerPi 酿酒的日子有一点点累,但是我很高兴用传统的手工管理丙烷燃烧器的“兴奋”来换取这个系统的有效性和持续性。

CraftBeerPI 的用户友好性鼓舞我设置了另一个控制器来运行“发酵室”。就我来说,那是一个二手冰箱,我用了 50 美元加上放在里面的 25 美元的加热器。CraftBeerPI 很容易控制电器元件的冷热,你也能够设置多个温度阶段。举个例子,这个图表显示我最近做的 IPA 进程的发酵温度。发酵室发酵麦芽汁在 67F° 的温度下需要 4 天,然后每 12 小时上升一度直到温度到达 72F°。剩下两天温度保持不变是为了双乙酰生成。之后 5 天温度降到 65F°,这段时间是让啤酒变“干”,最后啤酒发酵温度直接降到 38F°。CraftBeerPI 可以加入各个阶段,让软件管理发酵更加容易。

 title=

SIPA 发酵设置 (photo by Christopher Aedo. CC BY-SA 4.0)

我也试验过用液体比重计来对酵啤酒的比重进行监测,通过蓝牙连接的浮动传感器可以达到。有一个整合的计划能让 CraftbeerPi 很好工作,现在它记录这些比重数据到谷歌的电子表格里。一旦这个液体比重计能连接到发酵控制器,设置的自动发酵设置会基于酵母的活动性直接运行且更加容易,而不是在 4 天内完成主要发酵,可以在比重稳定 24 小时后设定温度。

像这样的一些项目,构想并计划改进和增加组件是很容易,不过,我很高兴今天经历过的事情。我用这种装置酿造了很多啤酒,每次都能达到预期的麦芽汁比率,而且啤酒一直都很美味。我的最重要的消费者 —— 就是我!很高兴我可以随时饮用。

 title=

随时饮用 (photo by Christopher Aedo. CC BY-SA 4.0)

这篇文章基于 Christopher 的开放的西部的讲话《用Linux、Python 和树莓派酿制啤酒》。

(题图:Quinn Dombrowski. Modified by Opensource.com. CC BY-SA 4.0


作者简介:

Christopher Aedo 从他的学生时代就从事并且贡献于开源软件事业。最近他在 IBM 领导一个极棒的上游开发者团队,同时他也是开发者拥护者。当他不再工作或者实在会议室演讲的时候,他可能在波特兰市俄勒冈州用树莓派酿制和发酵一杯美味的啤酒。


via: https://opensource.com/article/17/7/brewing-beer-python-and-raspberry-pi

作者:Christopher Aedo 译者:hwlife 校对:wxy

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

树莓派是一种微型的单板电脑(SBC),已经在学校的计算机科学教学中掀起了一场革命,但同样,它也给软件开发者带来了福音。目前,树莓派获得的知名度远远超出了它原本的目标市场,而且正在应用于机器人项目中。

树莓派是一个可以运行 Linux 操作系统的微型开发板计算机,由英国树莓派基金会开发,用来在英国和发展中国家促进学校的基础计算机科学教育。树莓派拥有 USB 接口,能够支持多种即插即用外围设备,比如键盘、鼠标、打印机等。它包含了一个 HDMI(高清多媒体界面)端口,可以为用户提供视频输出。信用卡大小的尺寸使得树莓派非常便携且价格便宜。仅需一个 5V 的 micro-USB 电源供电,类似于给手机用的充电器一样。

多年来,树莓派基金会已经推出了几个不同版本的树莓派产品。 第一个版本是树莓派 1B 型,随后是一个相对简单便宜的 A 型。在 2014 年,基金会推出了一个增强版本 —— 树莓派 1B+。在 2015 年,基金会推出了全新设计的版本,售价为 5 美元,命名为树莓派 Zero。

在 2016 年 2 月,树莓派 3B 型发布,这也是现在可用的主要型号。在 2017 年,基金会发布了树莓派 Zero 的新型号树莓派 Zero W (W = wireless 无线)。

在不久的将来,一个提高了技术规格的型号将会到来,为嵌入式系统发烧友、研究员、爱好者和工程师们用其开发多种功能的实时应用提供一个稳健的平台。

图 1 :树莓派

树莓派是一个高效的编程设备

在给树莓派供电后,启动运行 LXDE 窗口管理器,用户会获得一个完整的基于 Debian 的 Linux 操作系统,即 Raspbian。Raspbian 操作系统为用户提供了众多自由开源的程序,涵盖了程序设计、游戏、应用以及教育方面。

树莓派的官方编程语言是 Python ,并已预装在了 Paspbian 操作系统上。结合树莓派和 Python 的集成开发环境 IDLE3 ,可以让程序员能够开发各种基于 Python 的程序。

除了 Python ,树莓派还支持多种其它语言。并且可以使用一些自由开源的 IDE (集成开发环境)。允许程序员、开发者和应用工程师在树莓派上开发程序和应用。

树莓派上的最佳 IDE

作为一名程序员和开发者,你需要的首先就是有一个 IDE ,这是一个集成了开发者和程序员编写、编译和测试软件所需的的基本工具的综合软件套件。IDE 包含了代码编辑器、编译或解释程序和调试器,并允许开发者通过一个图形用户界面(GUI)来访问。IDE 的主要目的之一是提供一个整合单元来统一功能设置,减少组合多个开发工具的必要配置。

IDE 的用户界面与文字处理程序相似,在工具栏提供颜色编码、源代码格式化、错误诊断、报告以及智能代码补全工具。IDE 被设计用来整合第三方版本控制库如 GitHub 或 Apache Subversion 。一些 IDE 专注于特定的编程语言,支持一个匹配该编程语言的功能集,当然也有一些是支持多种语言的。

树莓派上拥有丰富的 IDE ,为程序员提供友好界面来开发源代码、应用程序以及系统程序。

就让我们来探索最适合树莓派的 IDE 吧。

BlueJ

图 2 :BlueJ 的 GUI 界面

BlueJ 是一款致力于 Java 编程语言的 IDE ,主要是为教育目的而开发的。它也支持小型的软件开发项目。BlueJ 由澳大利亚的莫纳什大学的 Michael Kolling 和 John Rosenburg 在 2000 年作为 Blue 系统的继任者而开发的,后来在 2009 年 3 月成为自由开源软件。

BlueJ 提供一种学习面向对象的编程概念的高效的方式,图形用户界面为应用程序提供像 UML 图一样的类结构。每一个像类、对象和函数调用这样基于 OOPS 的概念,都可以通过基于交互的设计来表示。

特性:

  • 简单的交互界面: 与 NetBeans 或 Eclipse 这样的专业界面相比,BlueJ 的用户界面更加简易学。使开发者可以专注于编程而不是环境。
  • 便携: BlueJ 支持多种平台如 Windows、Linux 以及 Mac OS X , 可以免安装直接运行。
  • 新的创新: BlueJ IDE 在对象工作台、代码块和范围着色方面有着大量的创新,使新手体验到开发的乐趣。
  • 强大的技术支持: BlueJ 拥有一个核心功能团队来解答疑问,并且在 24 小时内为开发者的各种问题提供解决方案。

最新版本: 4.0.1

Geany IDE

图 3 : Geany IDE 的 GUI 界面

Geany IDE 使用了 Scintilla 和 GTK+ 的集成开发环境支持,被认为是一个非常轻量级的基于 GUI 的文本编辑器。 Geany 的独特之处在于它被设计为独立于特定的桌面环境,并且仅需要较少数量的依赖包。只需要 GTK2 运行库就可以运行。Geany IDE 支持多种编程语言如 C、C++、C#、Java、HTML、PHP、Python、Perl、Ruby、Erlang 和 LaTeX 。

特性:

  • 代码自动补全和简单的代码导航。
  • 高效的语法高亮和代码折叠。
  • 支持嵌入式终端仿真器,拥有高度可扩展性,可以免费下载大量功能丰富的插件。
  • 简单的项目管理并支持多种文件类型,包括 C、Java、PHP、HTML、Python、Perl 等。
  • 高度定制的界面,可以添加或删除设置、栏及窗口。

最新版本: 1.30.1

Adafruit WebIDE

图 4 :Adafruit WebIDE 的 GUI 界面

Adafruit WebIDE 为树莓派用户提供一个基于 Web 的界面来执行编程功能,并且允许开发者编译多种语言的源代码如 Python、Ruby、JavaScript 等。

Adafruit IDE 允许开发者把代码放在 GIT 仓库,这样就可以通过 GitHub 在任何地方进行访问。

特性:

  • 可以通过 Web 浏览器的 8080 端口或 80 端口进行访问。
  • 支持源代码的简单编译和运行。
  • 配备一个调试器和可视器来进行正确追踪,代码导航以及测试源代码。

AlgoIDE

图 5 :AlgoIDE 的 GUI 界面

AlgoIDE 结合了一个脚本语言和一个 IDE 环境,它被设计用来将编程与下一步的示例一起来运行。AlgoIDE 包含了一个强大的调试器、 实时范围管理器并且一步一步的执行代码。针对全年龄人群而设计,用来设计程序以及对算法进行大量的研究。

AlgoIDE 支持多种类型的语言如 C、C++、Python、Java、Smalltalk、Objective C、ActionScript 等。

特性:

  • 代码自动缩进和补全。
  • 高效的语法高亮和错误管理。
  • 包含了一个调试器、范围管理器和动态帮助系统。
  • 支持 GUI 和传统的 Logo 程序语言 Turtle 来进行源代码开发。

最新版本: 2016-12-08 (上次更新时间)

Ninja IDE

图 6 :Ninja IDE 的 GUI 界面

Ninja IDE (“Ninja-IDE Is Not Just Another IDE”的缩写),由 Diego Sarmentero 、Horacio Duranm Gabriel Acosta 、Pedro Mourelle 和 Jose Rostango 设计,使用纯 Python 编写并且支持多种平台运行如 Linux 、Mac OS X 和 Windows 。Ninja IDE 被认为是一个跨平台的 IDE 软件,尤其是用来设计基于 Python 的应用程序。

Ninja IDE 是非常轻量级的,并能执行多种功能如文件处理、代码定位、跳转行、标签、代码自动缩进和编辑器缩放。除了 Python ,这款 IDE 也支持几种其他语言。

特性:

  • 高效的代码编辑器: Ninja-IDE 被认为是最有效的代码编辑器,因为它能执行多种功能如代码补全和缩进,以及助手功能。
  • 错误和 PEP8 查找器: 高亮显示文件中的静态和 PEP8 错误。
  • 代码定位器: 使用此功能,快速直接访问能够访问的文件。用户可以使用快捷键 “CTRL+K” 进行输入,IDE 会找到特定的文本。
  • 独特的项目管理功能以及大量的插件使得具有 Ninja-IDE 高度可扩展性。

最新版本: 2.3

Lazarus IDE

图 7 :Lazarus IDE 的 GUI 界面

Lazarus IDE 是由 Cliff Baeseman、Shane Miller 和 Michael A. Hess 于 1999 年 2 月 开发。它被视为是一款用于应用程序快速开发的基于 GUI 的跨平台 IDE ,使用的是 Free Pascal 编译器。Lazarus IDE 继承了 Free Pascal 的三个主要特性 —— 编译速度、执行速度和交叉编译。可以在多种操作系统上对应用程序进行交叉编译,如 Windows 、Linux 、Mac OS X 等。

这款 IDE 由 Lazarus 组件库组成。这些组件库以一个单一和带有不同的特定平台实现的统一接口的形式为开发者提供了多种配套设施。它支持“一次编写,随处编译”的原则。

特性:

  • 强大而快速的处理各种类型的源代码,同时支持性能测试。
  • 易用的 GUI ,支持组件拖拽功能。可以通过 Lazarus 包文件为 IDE 添加附加组件。
  • 使用新功能加强的 Free Pascal ,可以用来开发 Android 应用。
  • 高可扩展性、开放源代码并支持多种框架来编译其他语言。

最新版本: 1.6.4

Codeblock IDE

图 8 : Codeblock IDE 界面

Codeblock IDE 是用 C++ 编写的,使用了 wxWidgets 作为 GUI 库,发布于 2005 年。它是一款自由开源、跨平台的 IDE ,支持多种类型的编译器如 GCC 、Clang 和 Visual C++ 。

Codeblock IDE 高度智能并且可以支持多种功能,如语法高亮、代码折叠、代码补全和缩进,同时也拥有一些扩展插件来进行定制。它可以在 Windows 、Mac OS X 和 Linux 操作系统上运行。

特性:

  • 支持多种类型的编译器如 GCC 、Visual C++ 、Borland C++ 、Watcom 、Intel C++ 等。主要针对 C++ 而设计,不过现在也支持其他的一些语言。
  • 智能的调试器,允许用户通过访问本地函数符号和参数显示,用户自定义监视、调用堆栈、自定义内存转储、线程切换以及 GNU 调试接口调试程序。
  • 支持多种功能用来从 Dev-C++ 、Visual C++ 等平台迁移代码。
  • 使用自定义系统和 XML 扩展文件来存储信息。

最新版本: 16.01

Greenfoot IDE

图 9 : Greenfoot IDE 界面

Greenfoot IDE 是由肯特大学的 Michael Kolling 设计。它是一款基于 Java 的跨平台 IDE ,针对中学和大学教育目的而设计。Greenfoot IDE 的功能有项目管理、代码自动补全、语法高亮并提供一个简易的 GUI 界面。

Greenfoot IDE 编程包括两个主类的子类 —— World 和 Actor 。 World 表示主要执行发生的类,Actors 是已经存在且活动于 World 中的对象。

特性:

  • 简单易用的 GUI ,比 BlueJ 和其他的 IDE 交互性更强。
  • 易于新手和初学者上手。
  • 在执行 Java 代码方面非常强大。
  • 支持 GNOME/KDE/X11 图形环境。
  • 其他功能包括项目管理、自动补全、语法高亮以及错误自动校正。

最新版本: 3.1.0


作者简介:

Anand Nayyar

作者是位于印度旁遮普邦的贾朗达尔学院计算机应用与 IT 系的教授助理。他热爱开源技术、嵌入式系统、云计算、无线传感器网络以及模拟器。可以在 anand\[email protected] 联系他。


via: http://opensourceforu.com/2017/06/top-ides-raspberry-pi/

作者:Anand Nayyar 译者:softpaopao 校对:wxy

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

树莓派,随心所欲。

 title=

我最近在 SVPerl (硅谷 Perl 聚会)谈到在树莓派上运行 Perl 语言的时候,有人问我,“我听说树莓派应该使用 Python ,是这样吗?”。我非常乐意回答他,这是个常见误解。树莓派可以支持任何语言: Python、Perl 和其他树莓派官方软件 Raspbian Linux 初始安装的语言。

看似很厉害,其实很简单。树莓派的创造者英国的计算机科学教授 Eben Upton 曾经说过,树莓派名字中的‘派’(pi),是想为了听起来像 Python,因为他喜欢这门语言。他选择了这门语言作为孩子们的启蒙语言。但是他和他的团队做了一个通用计算机。开源软件没给树莓派任何限制。我们想运行什么就运行什么,全凭自己心意。

我在 SVPerl 和这篇文章中还想讲第二点,就是介绍我的 “PiFlash” 脚本。虽然它是用 Perl 写的,但是不需要你有多了解 Perl 就可以在 Linux 下将树莓派系统自动化烧录到 SD 卡。这样对初学者就比较友好,避免他们在烧录 SD 卡时候,偶然擦除了整个硬盘。即使是高级用户也可以从它的自动化工作中受益,包括我,这也是我开发这个工具的原因。在 Windows 和 Mac 下也有类似的工具,但是树莓派网站没有介绍类似工具给 Linux 用户。不过,现在有了。

开源软件早就有自己造轮子的传统,因为他们总是崇尚“自痒自挠”去解决问题。这种方式在 Eric S 1997 年的论文和 1999 年的书籍《大教堂与集市》中早有提及,它定义了开源软件的方法论。我也是为了满足想我这样的 Linux 用户,所以写了这个脚本。

下载系统镜像

想要开启树莓派之旅,你首先需要为它下载一个操作系统。我们称之为“系统镜像”文件。一旦你把它下载到你的桌面、手提电脑,或者甚至是另一个树莓派中,我就需要写入或者称之为“烧录”进你的 SD卡。详细情况可以看在线文件。手动做这件事情需要一些功底,你要把系统镜像烧录到整个 SD卡,而不是其中一块分区。系统镜像必须独自包含至少一个分区,因为树莓派引导需要一个 FAT32文件系统分区,系统引导这里开始。除了引导分区,其他分区可以是操作系统内核支持的任何分区类型。

在大部分树莓派中,我们都运行的是某些使用 Linux 内核的发行版。已经有一系列树莓派中常用的系统镜像你可以下载使用。(当然,没什么能阻止你自己造轮子)

树莓派基金会向新手推荐的是“NOOBS”系统。它代表了 “New Out of the Box System”(新鲜出炉即开即用系统),显然它好像听起来像术语 “noob"”(小白),通俗点说就是 “newbie”(菜鸟)。NOOBS 是一个基于树莓派的 Linux 系统,它会给你一个菜单可以在你的树莓派上自动下载安装几个其它的系统镜像。

Raspbian Linux 是 Debian Linux 发行版的树莓派定制版。它是为树莓派开发的正式 Linux 发行版,并且由树莓派基金会维护。几乎所有树莓派驱动和软件都会在 Raspbian 上先试用,然后才会放到其它发行版上。其默认安装博客 Perl。

Ubuntu Linux (还有其社区版的 Ubuntu MATE)也将树莓派作为其支持 ARM (Advanced RISC Machines)处理器的平台之一。RISC(Reduced Instruction Set Computer)Ubuntu 是一个 Debian Linux 的商业化支持的开源分支,它也使用 DEB 包管理器。Perl 也在其中。它仅仅支持 32 位 ARM7 或者 64 位 ARM8 处理器的树莓派 2 和 3。ARM6 的树莓派 1 和 Zero 从未被 Ubuntu 构建过程支持。

Fedora Linux 支持树莓派2 ,而 Fedora 25 支持 3。 Fedora 是一个隶属于红帽(Red Hat)的开源项目。Fedora 是个基础,商业版的 RHEL(Red Hat Enterprise Linux)在其上增加了商业软件包和支持,所以其软件像所有的兼容红帽的发行版一样来自 RPM(Red Hat Package Manager) 软件包。就像其它发行版一样,也包括 Perl。

RISC OS 是一个特别针对 ARM 处理器的单用户操作系统。如果你想要一个比 Linux 系统更加简洁的小型桌面(功能更少),你可以考虑一下。它同样支持 Perl。

RaspBSD 是一个 FreeBSD 的树莓派发行版。它是一个基于 Unix 的系统,而不是 Linux。作为开源 Unix 的一员,它延续了 Unix 的功能,而且和 Linux 有着众多相似之处。包括有类似的开源软件带来的相似的系统环境,包括 Perl。

OSMC,即开源多媒体中心,以及 LibreElec 电视娱乐中心,它们都基于运行 Linux 内核之上的 Kodi 娱乐中心。它是一个小巧、特化的 Linux 系统,所以不要期望它能支持 Perl。

Microsoft Windows IoT Core 是仅运行在树莓派3上的新成员。你需要微软开发者身份才能下载。而作为一个 Linux 极客,我根本不看它。我的 PiFlash 脚本还不支持它,但如果你找的是它,你可以去看看。

PiFlash 脚本

如果你想看看树莓派 SD 卡烧录指导,你可以找到在 Windows 或者 Mac 系统下需要下载的工具来完成烧录任务。但是对于 Linux 系统,只有一系列手工操作建议。我已经手工做过这个太多次,这很容易引发一个开发者的本能去自动化这个过程,这就是 PiFlash 脚本的起源。这有点难,因为 Linux 有太多方法可以配置,但是它们都是基于 Linux 内核的。

我总是觉得,手工操作潜在最大的失误恐怕就是偶然错误地擦除了某个设备,而不是擦除了 SD 卡,然后彻底清除了我本想保留在硬盘的东西。我在 SVPerl 演讲中也说了,我很惊讶地发现在听众中有犯了这种错误(而且不害怕承认)的人。因此,PiFlash 其中一个目的就是保护新手的安全,不会擦除 SD 卡之外的设备。PiFlash 脚本还会拒绝覆写包含了已经挂载的文件系统的设备。

对于有经验的用户,包括我,PiFlash 脚本还提供提供一个简便的自动化服务。下载完系统镜像之后,我不需要必须从 zip格式中解压缩或者提取出系统镜像。PiFlash 可以直接提取它,不管是哪种格式,并且直接烧录到 SD 卡中。

我把 PiFlash 及其指导发布在了 GitHub 上。

命令行用法如下:

piflash [--verbose] input-file output-device
piflash [--verbose] --SDsearch

input-file 参数是你要写入的系统镜像文件,只要是你从树莓派发行版网站下载的镜像都行。output-device 参数是你要写入的 SD 卡的块设备路径。

你也可以使用 --SDsearch 参数列出挂载在系统中 SD 卡设备名称。

可选项 --verbose 可以输出所有的程序状态数据,它在你需要帮助时或者递送 bug 报告和自行排错时很有用。它就是我开发时用的。

下面的例子是我使用该脚本写入仍是 zip 存档的 Raspbian 镜像到位于 /dev/mmcblk0 的 SD 卡:

piflash 2016-11-25-raspbian-jessie.img.zip /dev/mmcblk0

如果你已经指定了 /dev/mmcblk0p1 (SD 卡的第一分区),它会识别到这个分区不是一个正确的位置,并拒绝写入。

在不同的 Linux 系统中怎样去识别哪个设备是 SD 卡是一个技术活。像 mmcblk0 这种在我的笔记本上是基于 PCI 的 SD卡接口。如果我使用了 USB SD 卡接口,它就是 /dev/sdb,这在多硬盘的系统中不好区分。然而,只有少量的 Linux 块设备支持 SD 卡。PiFlash 在这两种情况下都会检查块设备的参数。如果全部失败,它会认为可写入、可移动的,并有着正确物理扇区数量的 USB 驱动器是 SD 卡。

我想这应该能涵盖大部分情况。但是,如果你使用了我不知道的 SD 卡接口呢?我乐意看到你的来信。请在输出信息中加上 --verbos --SDsearch 参数,以便让我可以知道你系统目前的环境。理想情况下,如果 PiFlash 脚本可以被广泛利用,我们可以构建一个开源社区去尽可能的帮助更多的树莓派用户。

树莓派的 CPAN 模块

CPAN(Comprehensive Perl Archive Network)是一个世界范围内包含各种 Perl 模块的的下载镜像。它们都是开源的。大量 CPAN 中的模块都是历久弥坚。对于成千上百的任务,你不需要重复造轮子,只要利用别人已经发布的代码就可以了。然后,你还可以提交你的新功能。

尽管树莓派是个五脏俱全的 Linux 系统,支持大部分 CPAN 模块,但是这里我想强调一下专为树莓派硬件开发的东西。一般来说它们都用在测量、控制、机器人方面的嵌入式系统中。你可以通过 GPIO (General-Purpose Input/Output)针脚将你的树莓派连接到外部电子设备。

可以使用树莓派 GPIO 针脚的模块如下:Device::SMBusDevice::I2CRpi::PIGPIORpi::SPIRpi::WiringPiDevice::WebIO::RaspberryPIDevice::PiGlow。树莓派支持的嵌入式模块如下:UAV::Pilot::Wumpus::Server::Backend::RaspberryPiI2CRPI::DHT11(温度/湿度)、RPI::HCSR04(超声波)、App::RPI::EnvUIRPi::DigiPot::MCP4XXXXRPI::ADC::ADSDevice::PaPiRusDevice::BCM2835::Timer

例子

这里有些我们在树莓派上可以用 Perl 做的事情的例子。

例一:在 OSMC 使用 PiFlash 播放视频

本例中,你将练习如何设置并运行使用 OSMC 操作系统的树莓派。

  • RaspberryPi.Org 下载区,下载最新的 OSMC 版本。
  • 将空 SD 卡插入你的 Linux 电脑或者笔记本。树莓派第一代是全尺寸的 SD 卡,除此以外都在使用 microSD,你也许需要一个通用适配器才能插入它。
  • 在插入前后分别运行 cat /proc/partitions 命令来看看系统分给硬件的设备名称。它可能像这样 /dev/mmcblk0 或者 /dev/sdb, 用如下命令将正确的系统镜像烧录到 SD 卡:piflash OSMC_TGT_rbp2_20170210.img.gz /dev/mmcblk0
  • 弹出 SD 卡,将它插入树莓派中,接上 HDMI 显示器,开机。
  • 当 OSMC 设置完毕,插入一个 USB 设备,在里面放点视频。出于示范目的,我将使用 youtube-dl 程序下载两个视频。运行 youtube-dl OHF2xDrq8dY (彭博关于英国高新产业,包括树莓派的介绍)还有 youtube-dl nAvZMgXbE9c (CNet 发表的“排名前五的树莓派项目”) 。将它们下载到 USB 中,然后卸载移除设备。
  • 将 USB 设备插入到 OSMC 树莓派。点击视频选项进入到外部设备。
  • 只要你能在树莓派中播放视频,那么恭喜你,你已经完成了本次练习。玩的愉快。

例二:随机播放目录中的视频的脚本

这个例子将使用一个脚本在树莓派上的目录中乱序播放视频。根据视频的不同和设备的摆放位置,这可以用作信息亭显示的用途。我写这个脚本用来展示室内体验视频。

  • 设置树莓派引导 Raspbian Linux。连接到 HDMI 监视器。
  • 从 GitHub 上下载 do-video 脚本。把它放到树莓派中。
  • 跟随该页面的安装指导。最主要的事情就是安装 omxplayer 包,它可以使用树莓派硬件视频加速功能平滑地播放视频。
  • 在家目录的 Videos 目录下放一些视频。
  • 运行 do-video ,这样,应该就可以播放视频了

例三:读取 GPS 数据的脚本

这个例子更加深入,更有针对性。它展示了 Perl 怎么从外部设备中读取数据。在先前例子中出现的我的 GitHub上 “Perl on Pi” 有一个 gps-read.pl 脚本。它可以通过一系列端口从 GPS 读取 NMEA(国家海洋电子协会)的数据。页面还有教程,包括构建它所使用的 AdaFruit Industries 部分,但是你可以使用任何能输出 NMEA 数据的 GPS。

通过这些任务,我想你应该可以在树莓派上像使用其他语言一样使用 Perl了。希望你喜欢。


作者简介:

Ian Kluft - 上学开始,Ian 就对喜欢编程和飞行。他一直致力于 Unix 的工作。在 Linux 内核发布后的六个月他转向了 Linux。他有计算机科学硕士学位,并且拥有 CSSLP 资格证(认证规范开发流程专家),另一方面,他还是引航员和认证的飞机指令长。作为一个超过二十五年的认证的无线电爱好者,在近些年,他在一些电子设备上陆续做了实验,包括树莓派。


via: https://opensource.com/article/17/3/perl-raspberry-pi

作者:Ian Kluft 译者:Taylor1024 校对:wxy

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

查看本教程,看看使用 Node-RED 的拖放界面设置硬件流程是多么容易。

 title=

Node-RED 是一个编程工具,可让你使用基于浏览器的编辑器快速连接硬件设备。它具有大量的节点,可以以拖放的方式构建流程,这大大减少了开发时间。Node-RED 与树莓派的 Raspian Jessie 一起安装,你还可以独立下载 Node-RED。

为了向你展示它如何工作,我们将使用 Node-RED 构建一个简单的工具,与连接到树莓派的蜂窝调制解调器通信。使用蜂窝调制解调器,你可以通过蜂窝网络从你的树莓派发送/接收数据。你可以使用蜂窝网络提供商通常提供的 3G/4G USB 加密狗,也可以将开发板与 3G 或 4G 无线调制解调器连接。

无论你是连接 USB 加密狗还是开发板,树莓派的连接接口都是通过 USB 端口的。在本教程中,我将一块 SIM900 开发板通过一根 USB 转串行电缆连接到树莓派。

第一步是检查 SIM900 开发板是否连接到树莓派上。

 title=

USB 转串行适配器在这里被显示为连接到树莓派的 USB 设备之一。

接下来,检查 SIM900 连接的 USB 端口号。

 title=

在最后一行,你可以看到 SIM900 板(通过 USB 转串行转换器连接)连接到了树莓派上的 ttyUSB0。现在我们准备开始使用 Node-RED。

在树莓派上启动 Node-RED。

 title=

下载示例流图并将其导入到 Node-RED 中。请注意,流文件是该图形 UI 的 JSON 表示形式。

在 Node-RED 中,导入的流图应该看上去像这样:

 title=

注入节点设置 AT 命令需要查询调制解调器。添加换行 功能节点会在注入节点传递过来的 AT 命令后面附加 **
添加换行 的输出然后被连接到串行输出节点,它将数据写入串行端口。来自调制解调器的 AT 命令的响应通过 串行输入 节点读取,该节点将响应输出到 调试 窗口。确认串行端口号和端口速度在 串行输入串行输出** 节点中的配置。

Node-RED 是一种易于使用的编程工具,可用于快速集成和测试硬件设备。从本教程可以看出,使用 Node-RED 连接和测试使用树莓派的蜂窝模式不需要编码。

有关 Node-RED 和其他可以使用的方式的更多信息,请访问项目网站

(题图: Thomas Hawk 的 Flickr. CC BY-NC 2.0. Opensource.com 修改)


作者简介:

Surya G - 我的兴趣是为物联网项目尤其是使用蜂窝调制解调器的项目做软件开发。


via: https://opensource.com/article/17/7/nodered-raspberrypi-hardware

作者:Surya G 译者:geekpi 校对:wxy

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