标签 树莓派 下的文章

查看本教程,看看使用 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中国 荣誉推出

Calibre 电子书管理软件可以轻松地在树莓派 3 上设置电子书服务器,即使在连接较慢区域也是如此。

 title=

最近 Calibre 3.0 发布了,它让用户能够在浏览器中阅读电子书!注意 Raspbian 的仓库还没有更新它(截至写作时)。

电子书是教师、图书馆员和其他人与学生共享书籍、课堂资料或其他文件的好方法,只需要你有可靠的带宽接入即可。但是,即使你的连接速度较慢或无法连接,还有一个简单的解决方案:使用在树莓派 3 上运行的开源 Calibre 电子书管理软件创建电子书服务器。这是我所做的,你也可以。

首先我下载了最新的 Raspbian Pixel 镜像,并安装在一个新的 8GB microSD 卡上。然后我插入 microSD,连接了键盘、鼠标并用一根 HDMI 线连接到一台旧的 LCD 电视,然后启动了 Pi。在我的显示器上调整了 Pixel 环境分辨率并连接到本地网络之后,我准备开始了。我打开一个终端,并输入 sudo apt-get update 以获取操作系统的最新更新。

 title=

接下来,我在终端中输入 sudo apt-get install calibre 来安装 Calibre

 title=

我从命令行启动了 Calibre(注意它也可以从 GUI 启动)。Calibre 的界面非常直观。第一次启动时,你会看到 Welcome to Calibre 的向导。我将默认 “Calibre Library” 更改为 “CalibreLibrary”(一个词),因为这启动内容服务器时更容易。

在选择完我的 Calibre 内容位置后,我准备好开始下载书了。

 title=

我从菜单中选择了 Get Books 选项,在这很容易输入我的搜索字词,并选择我感兴趣的电子书提供者。我正在寻找非 DRM 的材料,所以我选择 Project Gutenberg 作为我的源。(Caliber 的免责声明指出,电子书交易是在你和个人内容提供商之间。)我在作者字段中输入 “Mark Twain”,并得到10个结果。

 title=

我选择了 Adventures of Huckleberry Finn 这本书。在下一页面上,我可以选择 MOBIEPUB 这两种电子书格式。我选择了 EPUB,这本书下载得很快。

 title=

你也可以从其他内容提供商向库中添加图书,而不是在 Calibre 的列表中添加图书。例如,老师可以通过该内容服务器与学生分享电子书格式的开放教育资源。要加载内容,请使用界面最左侧的 “Add Books” 选项。

根据你图书库的大小,你也许需要增加 microSD 卡的大小。

start_the_server.png

将内容添加到电子书服务器后,即可与网络中的其他人共享内容。通过在终端中输入 ifconfig 获取你的树莓派 IP 地址。我正在使用无线网络,所以我在下面的例子中使用了 wlan0 中的结果。点击界面的最右侧并展开菜单。然后点击 “Connect and Share” 并启动服务器。

 title=

我下一步是通过我的电脑客户端连接到树莓派访问我添加的电子书。我在客户端上打开一个浏览器并输入树莓的地址,后面加上 :8080 端口。在我这里是 http://192.168.1.10:8080 (根据你 Pi 的地址来适配)。

你会在浏览器中看到主页:

 title=

我已经测试,并能用 iPhone、Linux、MacOS 计算机轻易连接到服务器。

你可以在这个主页总探索选项,或者点击 All Books 显示服务器上的所有内容。

 title=

从这里,你可以下载书到你的设备并离线阅读了。

你还没有设置一台电子书服务器么?或者你考虑自己设置一台么?在评论中分享你的建议或者问题。


作者简介:

Don Watkins - 教育家、教育技术专家、企业家、开源倡导者。教育心理学硕士、教育领导硕士、Linux 系统管理员、CCNA、使用 Virtual Box 虚拟化。关注我 @Don\_Watkins。


via: https://opensource.com/article/17/6/raspberrypi-ebook-server

作者:Don Watkins 译者:geekpi 校对:wxy

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

编辑:在写完这个这篇文章之后,我在树莓派 3 上基于 Debian 开始打造 64 位的系统。你可以在这里找到

树莓派 3 配有 Broadcom BCM2837 64 位 ARMv8 四核 Cortex A53 处理器,它是一个 64 位 CPU。如果你有一块,运行以下命令可能会让你感到惊讶:

uname -a
Linux raspberrypi 4.4.34-v7+ #930 SMP Wed Nov 23 15:20:41 GMT 2016 armv7l GNU/Linux

是的,这是一个 32 位内核。这是因为树莓派基金会还没有为官方的树莓派系统 Raspbian 提供 64 位版本。然而你可以构建一个,多亏了 Electron752 提供的许多补丁。

构建内核

树莓派基金会维护着它们自己的 Linux 内核分支,它为它们的设备特别裁剪过,同时定期地从上游合并。

我们将会遵照这个页面的指导来构建一个 64 位内核

我们不能使用“本地构建”的方法,因为它需要一块 64 位的树莓派,这个我们明显还没有。因此我们需要交叉编译它,Ubuntu 是推荐的系统。我个人没有 Ubuntu,因此我在一个有 2 个 CPU 的 Ubuntu 16.04 Digital Ocean 实例上构建,这应该花费我 $0.03。如果你也想这么做,你可以通过[这个链接](https://m.do.co/c/8ef9c5832a9c)得到 $10 的免费额度。或者你可以通过使用 Virtualbox 中的 Ubuntu VM 作为实例。

首先,我们需要一些构建工具以及** aarch64 交叉编译器**:

apt-get update
apt-get install -y bc build-essential gcc-aarch64-linux-gnu git unzip

接着我们可以下载 Linux 内核源码

git clone –depth=1 -b rpi-4.8.y https://github.com/raspberrypi/linux.git

进入到创建的 git 目录。另外你可以为你的内核添加额外的版本标签,可以通过编辑 Makefile 的开始几行完成:

VERSION = 4
PATCHLEVEL = 8
SUBLEVEL = 13
EXTRAVERSION = +bilal

为了构建它,运行下面的命令:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
make -j 3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

第一个应该很快。第二个则会完全不同,我没有精确计时,但是对我来说大概要半个小时。根据你的 CPU 数(nproc * 1.5)调整 -j 标志。

选择一个 Linux 发行版

在内核编译的时候,我们可以开始准备它的 Linux 发行版了。在本教程中为了简单我使用 Raspbian,即使这是一个只有 32 位的发行版。

如果你想要一直用 64 位系统,你应该选一个有 aarch64 支持的发行版,Debian 有一个健壮的 ARM64 移植版。得到它基本有三种方式:

  • 下载一个预构建的根文件系统,这很可能会如页面中提到的那样给你一个过期的版本。
  • 如果你熟悉 debootstrap,用它构建你自己的(这回比较棘手,因为它需要一些手工调整,它最初的目的是在已经运行的主机上进行 chroot,而不是为其他机器构建根文件系统)
  • 我建议使用 multistrap,这里有一个很好的教程:http://free-electrons.com/blog/embdebian-with-multistrap/

回到 Raspbian,我们现在可以下载官方系统,并开始准备了。

打开一个新的 shell 会话并运行下面的命令:

wget -O raspbian.zip https://downloads.raspberrypi.org/raspbian_lite_latest
unzip raspbian.zip

我们用下面的命令审查:

fdisk -l 2016-11-25-raspbian-jessie-lite.img
Disk 2016-11-25-raspbian-jessie-lite.img: 1.3 GiB, 1390411776 bytes, 2715648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x244b8248

Device Boot Start End Sectors Size Id Type
2016-11-25-raspbian-jessie-lite.img1 8192 137215 129024 63M c W95 FAT32 (LBA)
2016-11-25-raspbian-jessie-lite.img2 137216 2715647 2578432 1.2G 83 Linux

我们可以看到它有两个分区。第一个是启动分区,它主要包含了 bootloader、Linux 内核以及少量配置文件。第二个是根分区

我们可以在我们的文件系统上挂载这些分区,从根分区开始:

mount -o loop,offset=70254592 2016-11-25-raspbian-jessie-lite.img /mnt

offset 取决于扇区大小(512):70254592 = 512 * 137216

接着是启动分区

mount -o loop,offset=4194304,sizelimit=66060288 2016-11-25-raspbian-jessie-lite.img /mnt/boot

offset :4194304 = 512 * 8192,sizelimit:66060288 = 512 * 129024 。

树莓派系统现在应该可以在 /mnt 中看到了。我们基本要完成了。

打包内核

内核编译完成后,最后一步包括复制 Linux 内核以及设备树到启动分区中:

cp arch/arm64/boot/Image /mnt/boot/kernel8.img
cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /mnt/boot/

调整 config.txt :

echo “kernel=kernel8.img” >> /mnt/boot/config.txt

安装内核模块 :

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu INSTALL_MOD_PATH=/mnt modules_install
umount /mnt/boot
umount /mnt

就是这样了,用于树莓派 3 的** ARM64 Linux 内核**诞生了!

现在你可以压缩镜像,通过 scp 下载下来,并按照标准的步骤放到你的 SD 卡中。

最后你会得到:

uname -a
Linux raspberrypi 4.8.13+bilal-v8+ #1 SMP Wed Dec 14 14:09:38 UTC 2016 aarch64 GNU/Linux

via: https://devsidestory.com/build-a-64-bit-kernel-for-your-raspberry-pi-3/

作者:Bilal Amarni 译者:geekpi 校对:wxy

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

学习如何用 PHP 和温度传感器实现树莓派控制 GPIO 并操作继电器

 title=

你是否曾经想知道怎样使用手机或者电脑在任何地方控制你的风扇和灯等一些家用电器?

我现在想控制我的圣诞彩灯,是使用手机呢,还是使用平板电脑呢,或者是使用笔记本电脑呢?都不是,而是仅仅使用一个树莓派。让我来告诉你如何使用 PHP 和温度传感器实现树莓派控制 GPIO 引脚并操作继电器。我使用 AJAX 把它们整合在了一起。

硬件要求:

  • 树莓派
  • 安装有 Raspbian 系统的 SD 卡(任何一张 SD 卡都可以,但是我更偏向使用大小为 32GB 等级为 class 10 的 SD 卡)
  • 电源适配器
  • 跳线(母对母跳线和公转母跳线)
  • 继电器板(我使用一个用于 12V 继电器的继电器板)
  • DS18B20 温度传感器
  • 树莓派的 Wi-Fi 适配器
  • 路由器(为了访问互联网,你需要有一个拥有端口转发的路由器)
  • 10KΩ 的电阻

软件要求:

  • 下载并安装 Raspbian 系统到你的 SD 卡
  • 有效的互联网连接
  • Apache web 服务器
  • PHP
  • WiringPi
  • 基于 Mac 或者 Windows 的 SSH 客户端

一般的配置和设置

1、 插入 SD 卡到树莓派,然后使用以太网网线将它连接到路由器;

2、 连接 WiFi 适配器;

3、 使用 SSH 方式登录到树莓派,然后使用下面的命令编辑 interfaces 文件:

sudo nano /etc/network/interfaces

这个命令会用一个叫做 nano 的编辑器打开这个文件。它是一个非常简单又易于使用的文本编辑器。如果你不熟悉基 Linux 的操作系统,可以使用键盘上的方向键来操作。

nano 打开这个文件后,你会看到这样一个界面:

 title=

4、要配置你的无线网络,按照下面所示修改这个文件:

iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
   wpa-ssid "Your Network SSID"
   wpa-psk "Your Password"

5、 按 CTRL+O 保存,然后按 CTRL+X 退出编辑器。

到目前为止,一切都已经配置完成,接下来你需要做的就是使用命令重新加载网络:

sudo service networking reload

(警告:如果你是使用远程连接的方式连接的树莓派,连接将会中断。)

软件配置

安装 Apache web 服务器

Apache 是一个受欢迎的服务器应用,你可以在树莓派安装这个程序让它提供网页服务。Apache 原本就可以通过 HTTP 方式提供 HTML 文件服务,添加其他模块后,Apache 还可以使用像 PHP 这样的脚本语言来提供动态网页的服务。

可以在命令行输入下面命令安装 Apache:

sudo apt-get install apache2 -y

安装完成后,可以在浏览器地址栏输入树莓派的 IP 地址来测试 web 服务器。如果你可以获得下面图片的内容,说明你已经成功地安装并设置好了你的服务器。

 title=

要改变这个默认的页面和添加你自己的 html 文件,进入 var/www/html 目录:

cd /var/www/html

添加一些文件来测试是否成功。

安装 PHP

PHP 是一个预处理器,这意味着它是当服务器收到网页请求时才会运行的一段代码。它开始运行,处理网页上需要被显示的内容,然后把网页发送给浏览器。不像静态的 HTML,PHP 在不同的环境下可以显示不同的内容。其他的语言也可以做到这一点,但是由于 WordPress 是用 PHP 编写的,有些时候你需要使用它。PHP 是 web 上一种非常受欢迎的语言,像 Facebok 和 Wikipeadia 这样的大型项目都是用 PHP 编写的。

使用下面的命令安装 PHP 和 Apache 软件包:

sudo apt-get install php5 libapache2-mod-php5 -y

测试 PHP

创建文件 index.php

sudo nano index.php

在里面写入一些 PHP 内容:

<?php echo "hello world"; ?>

保存文件,接下来删除 index.html,因为它比 index.php 的优先级更高:

sudo rm index.html

刷新你的浏览器,你会看到 “hello world”。这并不是动态的,但是它仍然由 PHP 提供服务。如果你在上面看到提原始的 PHP 文件而不是“hello world”,重新加载和重启 Apahce(LCTT 译注,重启即可):

sudo /etc/init.d/apache2 reload
sudo /etc/init.d/apache2 restart

安装 WiringPi

为了可以对代码的更改进行跟踪,WiringPi 的维护采用 git。但假如你因为某些原因而没法使用 git,还有一种可以替代的方案。(通常你的防火墙会把你隔离开来,所以请先检查一下你的防火墙的设置情况!)

如果你还没有安装 git,那么在 Debian 及其衍生版本中(比如 Raspbian),你可以这样安装它:

sudo apt-get install git-core

若是你遇到了一些错误,请确保你的树莓派是最新版本的 Raspbian 系统:

sudo apt-get update sudo apt-get upgrade

使用 git 获取最 WiringPi:

sudo git clone git://git.drogon.net/wiringPi

如果你之前已经使用过 clone 操作,那么可以使用下面命令:

cd wiringPi && git pull origin

这个命令会将会获取更新的版本,你然后可以重新运行下面的构建脚本。

有一个新的简化的脚本来构建和安装:

cd wiringPi && ./build

这个新的构建脚本将会为你完成编译和安装 WiringPi。它曾一度需要使用 sudo 命令,所以在运行这它之前你可能需要检查一下这个脚本。

测试 WiringPi

运行 gpio 命令来检查安装成功与否:

gpio -v gpio readall

这将给你一些信心,软件运行良好。

连接 DS18B20 传感器到树莓派

  • 传感器上的黑线用于 GND。
  • 红线用于 VCC。
  • 黄线是 GPIO 线。

 title=

连线:

  • VCC 连接 3V 的 1 号引脚。
  • GPIO 线连接 7 号引脚(GPIO4)。
  • 地线连接 GND 的 9 号引脚。

软件配置

为了用 PHP 使用 DS18B20 温度传感器模块,你需要执行下面的命令来激活用于树莓派上 GPIO 引脚和 DS18B20 的内核模块:

sudo modprobe w1-gpio
sudo modprobe w1-therm

你不想每次 Raspberry 重启后都手动执行上述命令,所以你想每次开机能自动启动这些模块。可以在文件 /etc/modules 中添加下面的命令行来做到:

sudo nano /etc/modules/

添加下面的命令行到它里面:

w1-gpio
w1-therm

为了测试,输入:

cd /sys/bus/w1/devices/

现在输入 ls

你会看到你的设备信息。在设备驱动程序中,你的 DS18B20 传感器应该作为一串字母和数字被列出。在本例中,设备被记录为 28-000005e2fdc3。然后你需要使用 cd 命令来访问传感器,用你自己的序列号替代我的: cd 28-000005e2fdc3

DS18B20 会周期性的将数据写入文件 w1_slave,所以你只需要使用命令 cat来读出数据: cat w1_slave

这会生成下面的两行文本,输出中 t= 表示摄氏单位的温度。在前两位数后面加上一个小数点(例如,我收到的温度读数是 30.125 摄氏度)。

连接继电器

1、 取两根跳线,把其中一根连接到树莓派上的 GPIO24(18 号引脚),另一根连接 GND 引脚。你可以参考下面这张图。

2、 现在将跳线的另一端连接到继电器板。GND 连接到继电器上的 GND,GPIO 输出线连接到继电器的通道引脚号,这取决于你正使用的继电器型号。记住,将树莓派上的 GND 与继电器上的 GND 连接连接起来,树莓派上的 GPIO 输出连接继电器上的输入引脚。

 title=

注意!将继电器连接树莓派的时候小心一些,因为它可能会导致电流回流,这会造成短路。

3、 现在将电源连接继电器,可以使用 12V 的电源适配器,也可以将 VCC 引脚连接到什么破上的 3.3V 或 5.5V 引脚。

使用 PHP 控制继电器

让我们先写一个借助于 WiringPi 软件用来控制 Paspberry Pi 上 GPIO 引脚的 PHP 脚本。

1、在 Apache 服务器的网站根目录下创建一个文件,使用下面命令切换到该目录:

cd /var/www/html

2、 新建一个叫 Home 的文件夹:

sudo mkdir Home

3、 新建一个叫 on.php的脚本

sudo nano on.php

4、 在脚本中加入下面的代码:

<?php
        system("gpio-g mode 24 out");
        system("gpio-g write 24 1");
?>

5、 使用 CTRL+O 保存文件,CTRL+X 退出。

上面的代码中,你在第一行使用命令将 24 号 GPIO引脚设置为 output 模式:

system("gpio-g mode 24 out");

在第二行,你使用 1 将 24 号引脚 GPIO 打开,在二进制中"1"表示打开,"0"表示关闭。

6、 为了关闭继电器,可以创建另外一个 off.php 文件,并用 0 替换 1

<?php
        system(" gpio-g mode 24 out ");
        system(" gpio-g write 24 1 ");
?>

7、 如果你已经将继电器连接了树莓派,可以在浏览器中输入你的树莓派的 IP 地址,并在后面加上目录名和文件名来进行访问:

http://{IPADDRESS}/home/on.php 

这将会打开继电器。

8、 要关闭它,可以访问叫 off.php 的文件:

http://{IPADDRESS}/home/off.php

现在你需要能够在一个单独的页面来控制这两样事情,而不用单独的刷新或者访问这两个页面。你可以使用 AJAX 来完成。

9、 新建一个 HTML 文件,并在其中加入下面代码:

<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript">// <![CDATA[
$(document).ready(function() {
  $('#on').click(function(){
  var a= new XMLHttpRequest();
  a.open("GET", "on.php"); a.onreadystatechange=function(){
    if (a.readyState==4){   
      if(a.status ==200){
      } else alert ("http error");   
      }  
    }
    a.send();
  });
});
$(document).ready(function()
  {  
    $('#Off').click(function(){
      var a= new XMLHttpRequest();
      a.open("GET", "off.php");
      a.onreadystatechange=function(){
        if(a.readyState==4){
          if(a.status ==200){
          } else alert ("http error");   
          }   
        }
      a.send();
    });
  });
</script>
<button id="on" type="button"``Switch Lights On </button>
<button id="off" type="button"``Switch Lights Off </button>

10、 保存文件,进入你的 web 浏览器目录,然后打开那个网页。你会看到两个按钮,它们可以打开和关闭灯泡。基于同样的想法,你还可以使用 bootstrap 和 CSS 来创建一个更加漂亮的 web 界面。

在这个网页上观察温度

1、 新建一个 temperature.php 的文件:

sudo nano temperature.php

2、 在文件中加入下面的代码,用你自己的设备 ID 替换 10-000802292522

<?php
//File to read
$file = '/sys/devices/w1_bus_master1/10-000802292522/w1_slave';
//Read the file line by line
$lines = file($file);
//Get the temp from second line
$temp = explode('=', $lines[1]);
//Setup some nice formatting (i.e., 21,3)
$temp = number_format($temp[1] / 1000, 1, ',', '');
//And echo that temp
echo $temp . " °C";
?>

3、 打开你刚刚创建的 HTML 文件,并创建一个新的带有 id 为 “screen” 的 <div>标签

<div id="screen"></div>

4、 在这个标签后或者这个文档的尾部下面的代码:

<script>
$(document).ready(function(){
  setInterval(function(){
    $("#screen").load('temperature.php')
  }, 1000);
});
</script>

其中,#screen 是标签 <div>id ,你想在它里面显示温度。它会每隔 1000 毫秒加载一次 temperature.php 文件。

我使用了 bootstrap 框架来制作一个漂亮的面板来显示温度,你还可以加入多个图标和图形让网页更有吸引力。

这只是一个控制继电器板并显示温度的基础的系统,你可以通过创建基于定时和从恒温器读数等基于事件触发来进一步地对系统进行开发。

( 题图:opensource.com)


作者简介:

Abdul Hannan Mustajab: 我 17 岁,生活在印度。我正在追求科学,数学和计算机科学方面的教育。我在 spunkytechnology.com 上发表关于我的项目的博客。我一直在对使用不同的微控制器和电路板的基于物联网的 AI 进行研究。


via: https://opensource.com/article/17/3/operate-relays-control-gpio-pins-raspberry-pi

作者:Abdul Hannan Mustajab 译者:zhousiyu325 校对:wxy

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

 title=

个人 Web 服务器即 “云”,只不过是你拥有和控制它,而不是一个大型公司。

拥有一个自己的云有很多好处,包括可定制、免费存储、免费的互联网服务、通往开源软件之路、高安全性、完全控制您的内容、快速更改的能力、实验代码的地方等等。 这些好处大部分是无法估量的,但在财务上,这些好处可以为您每个月节省超过 100 美元。

 title=

我本可以选择 AWS ,但我更喜欢完全自由且安全性可控,并且我可以学一下这些东西是如何搭建的。

  • 私有 Web 托管:而非 BlueHost 或 DreamHost
  • 云存储:而非 Dropbox、Box、Google Drive、Microsoft Azure、iCloud 或是 AWS
  • 自主部署安全
  • HTTPS:Let’s Encrypt
  • 分析: Google
  • OpenVPN:不需要专有互联网连接(预计每个月花费 $7)

我所使用的物品清单:

  • 树莓派 3 代 Model B
  • MicroSD 卡(推荐使用 32 GB, 兼容树莓派的 SD 卡
  • USB microSD 卡读卡器
  • 以太网络线
  • 连接上 Wi-Fi 的路由器
  • 树莓派盒子
  • 亚马逊倍思的 MicroUSB 数据线
  • 苹果的充电器
  • USB 鼠标
  • USB 键盘
  • HDMI 线材
  • 显示器 (支持接入 HDMI)
  • MacBook Pro

步骤 1: 启动树莓派

下载最新发布的 Raspbian (树莓派的操作系统)。 Raspbian Jessie 的 ZIP 包就可以用 [脚注 1]。解压缩或提取下载的文件然后把它拷贝到 SD 卡里。使用 Pi Filler 可以让这些过程变得更简单。下载 Pi Filer 1.3 或最新的版本。解压或提取下载文件之后打开它,你应该会看到这样的提示:

 title=

确保 USB 读卡器这时还没有插上。如果已经插上了那就先弹出。点 “Continue” 继续下一步。你会看到一个让你选择文件的界面,选择你之前解压缩后的树莓派系统文件。然后你会看到另一个提示,如图所示:

 title=

把 MicroSD 卡(推荐 32 GB ,至少 16GB)插入到 USB MicroSD 卡读卡器里。然后把 USB 读卡器接入到你的电脑里。你可以把你的 SD 卡重命名为 “Raspberry” 以区别其他设备。然后点击 “Continue”。请先确保你的 SD 卡是空的,因为 Pi Filler 会在运行时 擦除 所有事先存在 SD 卡里的内容。如果你要备份卡里的内容,那你最好就马上备份。当你点 “Continue” 的时候,Raspbian OS 就会被写入到 SD 卡里。这个过程大概会花费一到三分钟左右。当写入完成后,推出 USB 读卡器,把 SD 卡拔出来插入到树莓派的 SD 卡槽里。把电源线接上,给树莓派供电。这时树莓派就会自己启动。树莓派的默认登录账户信息是:

  • 用户名: pi
  • 密码:raspberry

当树莓派首次启动完成时,会跳出一个标题为 “ 设置选项 Setup Options ” 的配置界面,就像下面的图片一样 [脚注 2]:

 title=

选择 “ 扩展文件系统 Expand Filesystem ” 这一选项并回车 [脚注 3]。 同时,我还推荐选择第二个选项 “ 修改密码 Change User Password ”。这对保证安全性来说尤为重要。它还能个性化你的树莓派。

在选项列表中选择第三项 “ 启用引导到桌面 Enable Boot To Desktop/Scratch ” 并回车。这时会跳到另一个标题为 “ 选择引导选项 Choose boot option ” 的界面,就像下面这张图这样:

 title=

在这个界面选择第二个选项 “ 以用户‘pi’登录图形化桌面 Desktop log in as user 'pi' at the graphical desktop ” 并回车 [脚注 4]。完成这个操作之后会回到之前的 “ 设置选项 Setup Options ” 界面。如果没有回到之前的界面的话就选择当前界面底部的 “OK” 按钮并回车。

当这些操作都完成之后,选择当前界面底部的 “Finish” 按钮并回车,这时它就会自动重启。如果没有自动重启的话,就在终端里使用如下命令来重启。

$ sudo reboot

接上一步的重启,如果所有步骤都顺利进行的话,你会进入到类似下面这样桌面环境中。

 title=

当你进入了桌面之后,在终端中执行如下命令来更新树莓派的固件。

$ sudo apt-get update
$ sudo apt-get upgrade-y
$ sudo apt-get dist-upgrade -y
$ sudo rpi-update

这些操作可能会花费几分钟时间。完成之后,现在运行着的树莓派就是最新的了。

步骤 2: 配置树莓派

SSH 指的是 Secure Shell,是一种加密网络协议,可让你在计算机和树莓派之间安全地传输数据。 你可以从 Mac 的命令行控制你的树莓派,而无需显示器或键盘。

要使用 SSH,首先需要你的树莓派的 IP 地址。 打开终端并输入:

$ sudo ifconfig

如果你在使用以太网,看 eth0 部分。如果你在使用 Wi-Fi, 看 wlan0 部分。

查找 inet addr,后跟一个 IP 地址,如 192.168.1.115,这是本篇文章中使用的默认 IP。

有了这个地址,在终端中输入 :

$ ssh [email protected]

对于 PC 上的 SSH,请参见 [脚注 5]。

出现提示时输入默认密码 raspberry,除非你之前更改过密码。

现在你已经通过 SSH 登录成功。

远程桌面

使用 GUI(图形用户界面)有时比命令行更容易。 在树莓派的命令行(使用 SSH)上键入:

$ sudo apt-get install xrdp

xrdp 支持 Mac 和 PC 的 Microsoft Remote Desktop 客户端。

在 Mac 上,在 App store 中搜索 “Microsoft Remote Desktop”。 下载它。 (对于 PC,请参见 [脚注 6]。)

安装完成之后,在你的 Mac 中搜索一个叫 “Microsoft Remote Desktop” 的应用并打开它,你会看到 :

 title=

点击 “New” 新建一个远程连接,在空白处填写如下配置。

 title=

关闭 “New” 窗口就会自动保存。

你现在应该看到 “My Desktop” 下列出的远程连接。 双击它。

简单加载后,你应该在屏幕上的窗口中看到你的树莓派桌面,如下所示:

 title=

好了,现在你不需要额外的鼠标、键盘或显示器就能控制你的树莓派。这是一个更为轻量级的配置。

静态化本地 IP 地址

有时候你的本地 IP 地址 192.168.1.115 会发生改变。我们需要让这个 IP 地址静态化。输入:

$ sudo ifconfig

eth0 部分或 wlan0 部分,记下 inet addr(树莓派当前 IP),bcast(广播 IP 范围)和 mask(子网掩码地址)。 然后输入:

$ netstat -nr

记下 destinationgateway/network

 title=

大概应该是这样子的:

net address 192.168.1.115
bcast 192.168.1.255
mask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.1
destination 192.168.1.0

有了这些信息,你可以很简单地设置一个静态 IP。输入:

$ sudo nano /etc/dhcpcd.conf

不要去动 /etc/network/interfaces

剩下要做的就是把这些内容追加到这个文件的底部,把 IP 换成你想要的 IP 地址。

interface eth0
static ip_address=192.168.1.115
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

一旦你设置了静态内部 IP 地址,这时需要通过如下命令重启你的树莓派 :

$ sudo reboot

重启完成之后,在终端中输入 :

$ sudo ifconfig

这时你就可以看到你的树莓派上的新的静态配置了。

静态化全局 IP 地址

如果您的 ISP(互联网服务提供商)已经给您一个静态外部 IP 地址,您可以跳到端口转发部分。 如果没有,请继续阅读。

你已经设置了 SSH、远程桌面和静态内部 IP 地址,因此现在本地网络中的计算机将会知道在哪里可以找到你的树莓派。 但是你仍然无法在本地 Wi-Fi 网络外部访问你的树莓派。 你需要树莓派可以从互联网上的任何地方公开访问。这需要静态的外部 IP 地址 [脚注 7]。

联系您的 ISP 并请求静态的外部(有时称为静态全局)IP 地址可能会是一个非常敏感的过程。 ISP 拥有决策权,所以我会非常小心处理。 他们可能拒绝你的的静态外部 IP 地址请求。 如果他们拒绝了你的请求,你不要怪罪于他们,因为这种类型的请求有法律和操作风险。 他们特别不希望客户运行中型或大型互联网服务。 他们可能会明确地询问为什么需要一个静态的外部 IP 地址。 最好说实话,告诉他们你打算主办一个低流量的个人网站或类似的小型非营利互联网服务。 如果一切顺利,他们应该会建立一个工单,并在一两个星期内给你打电话。

端口转发

这个新获得的 ISP 分配的静态全局 IP 地址是用于访问路由器。 树莓派现在仍然无法访问。 你需要设置端口转发才能访问树莓派。

端口是信息在互联网上传播的虚拟途径。 你有时需要转发端口,以使计算机像树莓派一样可以访问 Internet,因为它位于网络路由器后面。 VollmilchTV 专栏在 YouTube 上的一个视频,名字是什么是 TCP/IP,端口,路由,Intranet,防火墙,互联网,可以帮助你更好地了解端口。

端口转发可用于像 树莓派 Web 服务器或 VoIP 或点对点下载的应用程序。 有 65000个以上的端口可供选择,因此你可以为你构建的每个 Internet 应用程序分配一个不同的端口。

设置端口转发的方式取决于你的路由器。 如果你有 Linksys 的话,Gabriel Ramirez 在 YouTbue 上有一个标题叫 如何让你的 Apache Ubuntu 服务器连到互联网 的视频解释了如何设置。 如果您没有 Linksys,请阅读路由器附带的文档,以便自定义和定义要转发的端口。

你需要转发 SSH 以及远程桌面端口。

如果你认为你已经过配置端口转发了,输入下面的命令以查看它是否正在通过 SSH 工作:

$ ssh pi@your_global_ip_address

它应该会提示你输入密码。

检查端口转发是否也适用于远程桌面。 打开 Microsoft Remote Desktop。 你之前的的远程连接设置应该已经保存了,但需要使用静态的外部 IP 地址(例如 195.198.227.116)来更新 “PC 名称” 字段,而不是静态的内部地址(例如 192.168.1.115)。

现在,尝试通过远程桌面连接。 它应该简单地加载并显示树莓派的桌面。

 title=

好了, 树莓派现在可以从互联网上访问了,并且已经准备好进行高级项目了。

作为一个奖励选项,您可以保持到您的 Pi 的两个远程连接。 一个通过互联网,另一个通过 LAN(局域网)。很容易设置。在 Microsoft Remote Desktop 中,保留一个称为 “Pi Internet” 的远程连接,另一个称为 “Pi Local”。 将 Pi Internet 的 “PC 名称” 配置为静态外部 IP 地址,例如 195.198.227.116。 将 Pi Local 的 “PC 名称” 配置为静态内部 IP 地址,例如 192.168.1.115。 现在,您可以选择在全局或本地连接。

如果你还没有看过由 Gabriel Ramirez 发布的 如何让你的 Apache Ubuntu 服务器连到互联网,那么你可以去看一下,作为过渡到第二个项目的教程。 它将向您展示项目背后的技术架构。 在我们的例子中,你使用的是树莓派而不是 Ubuntu 服务器。 动态 DNS 位于域名公司和您的路由器之间,这是 Ramirez 省略的部分。 除了这个微妙之处外,视频是在整体上解释系统的工作原理。 您可能会注意到本教程涵盖了树莓派设置和端口转发,这是服务器端或后端。 查看原始来源,涵盖域名,动态 DNS,Jekyll(静态 HTML 生成器)和 Apache(网络托管)的更高级项目,这是客户端或前端。

脚注

[1] 我不建议从 NOOBS 操作系统开始。 我更喜欢从功能齐全的 Raspbian Jessie 操作系统开始。

[2] 如果没有弹出 “Setup Options”,可以通过打开终端并执行该命令来始终找到它:

$ sudo-rasps-config

[3] 我们这样做是为了将 SD 卡上存在的所有空间用作一个完整的分区。 所有这一切都是扩大操作系统以适应 SD 卡上的整个空间,然后可以将其用作树莓派的存储内存。

[4] 我们这样做是因为我们想启动进入熟悉的桌面环境。 如果我们不做这个步骤,树莓派每次会进入到终端而不是 GUI 中。

[5]

 title=

下载并运行 PuTTY 或 Windows 的其它 SSH 客户端。 在该字段中输入你的 IP 地址,如上图所示。 将默认端口保留为 22。 回车,PuTTY 将打开一个终端窗口,提示你输入用户名和密码。 填写然后开始在树莓派上进行你的远程工作。

[6] 如果尚未安装,请下载 Microsoft Remote Desktop。 搜索您的计算机上的的 Microsoft Remote Desktop。 运行。 提示时输入 IP 地址。 接下来,会弹出一个 xrdp 窗口,提示你输入用户名和密码。

[7] 路由器具有动态分配的外部 IP 地址,所以在理论上,它可以从互联网上暂时访问,但是您需要 ISP 的帮助才能使其永久访问。 如果不是这样,你需要在每次使用时重新配置远程连接。

原文出自 Mitchell McLaughlin's Full-Stack Computer Projects


作者简介:

Mitchell McLaughlin - 我是一名开放网络的贡献者和开发者。我感兴趣的领域很广泛,但我特别喜欢开源软件/硬件,比特币和编程。 我住在旧金山,我有过一些简短的 GoPro 和 Oracle 工作经验。


via: https://opensource.com/article/17/3/building-personal-web-server-raspberry-pi-3

作者:Mitchell McLaughlin 译者:chenxinlong 校对:jasminepeng

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

只用几步,使用 Weave Net 在树莓派上设置 Kubernetes。

当我开始对 ARM设备,特别是 Raspberry Pi 感兴趣时,我的第一个项目是一个 OpenVPN 服务器。

通过将 Raspberry Pi 作为家庭网络的安全网关,我可以使用我的手机来控制我的桌面,远程播放 Spotify,打开文档以及一些其他有趣的东西。我在第一个项目中使用了一个现有的教程,因为我害怕自己在命令行中拼砌。

几个月后,这种恐惧消失了。我扩展了我的原始项目,并使用 Samba 服务器从文件服务器分离出了 OpenVPN 服务器。这是我第一个没有完全按照教程来的项目。不幸的是,在我的 Samba 项目结束后,我意识到我没有记录任何东西,所以我无法复制它。为了重新创建它,我不得不重新参考我曾经用过的那些单独的教程,将项目拼回到一起。

我学到了关于开发人员工作流程的宝贵经验 - 跟踪你所有的更改。我在本地做了一个小的 git 仓库,并记录了我输入的所有命令。

发现 Kubernetes

2015 年 5 月,我发现了 Linux 容器和 Kubernetes。我觉得 Kubernetes 很有魅力,我可以使用仍然处于技术发展的概念 - 并且我实际上可以用它。平台本身及其所呈现的可能性令人兴奋。在此之前,我才刚刚在一块 Raspberry Pi 上运行了一个程序。而有了 Kubernetes,我可以做出比以前更先进的配置。

那时候,Docker(v1.6 版本,如果我记得正确的话)在 ARM 上有一个 bug,这意味着在 Raspberry Pi 上运行 Kubernetes 实际上是不可能的。在早期的 0.x 版本中,Kubernetes 的变化很快。每次我在 AMD64 上找到一篇关于如何设置 Kubernetes 的指南时,它针对的还都是一个旧版本,与我当时使用的完全不兼容。

不管怎样,我用自己的方法在 Raspberry Pi 上创建了一个 Kubernetes 节点,而在 Kubernetes v1.0.1 中,我使用 Docker v1.7.1 让它工作了。这是第一个将 Kubernetes 全功能部署到 ARM 的方法。

在 Raspberry Pi 上运行 Kubernetes 的优势在于,由于 ARM 设备非常小巧,因此不会产生大量的功耗。如果程序以正确的方式构建而成,那么就可以在 AMD64 上用同样的方法运行同一个程序。这样的一块小型 IoT 板为教育创造了巨大的机会。用它来做演示也很有用,比如你要出差参加一个会议。携带 Raspberry Pi (通常)比拖着大型英特尔机器要容易得多。

现在按照我建议的 ARM(32 位和 64 位)的支持已被合并到 Kubernetes 核心中。ARM 的二进制文件会自动与 Kubernetes 一起发布。虽然我们还没有为 ARM 提供自动化的 CI(持续集成)系统,不过在 PR 合并之前会自动确定它可在 ARM 上工作,现在它运转得不错。

Raspberry Pi 上的分布式网络

我通过 kubeadm 发现了 Weave Net。Weave Mesh 是一个有趣的分布式网络解决方案,因此我开始了解更多关于它的内容。在 2016 年 12 月,我在 Weaveworks 收到了第一份合同工作,我成为了 Weave Net 中 ARM 支持团队的一员。

我很高兴可以在 Raspberry Pi 上运行 Weave Net 的工业案例,比如那些需要设备更加移动化的工厂。目前,将 Weave Scope 或 Weave Cloud 部署到 Raspberry Pi 可能不太现实(尽管可以考虑使用其他 ARM 设备),因为我猜这个软件需要更多的内存才能运行良好。理想情况下,随着 Raspberry Pi 升级到 2GB 内存,我想我可以在它上面运行 Weave Cloud 了。

在 Weave Net 1.9 中,Weave Net 支持了 ARM。Kubeadm(通常是 Kubernetes)在多个平台上工作。你可以使用 Weave 将 Kubernetes 部署到 ARM,就像在任何 AMD64 设备上一样安装 Docker、kubeadm、kubectl 和 kubelet。然后初始化控制面板组件运行的主机:

kubeadm init

接下来,用下面的命令安装你的 pod 网络:

kubectl apply -f https://git.io/weave-kube

在此之前在 ARM 上,你只能用 Flannel 安装 pod 网络,但是在 Weave Net 1.9 中已经改变了,它官方支持了 ARM。

最后,加入你的节点:

kubeadm join --token <token> <master-ip>

就是这样了!Kubernetes 已经部署到了 Raspberry Pi 上了。相比在 Intel/AMD64 上运行,你不用做什么特别的事情;Weave Net 在 ARM 上就能工作的很好。

Raspberry Pi 社区

我希望 Raspberry Pi 社区成长起来,他们的思想传播到世界其他地方。他们在英国和其他国家已经取得了成功,但在芬兰并不是很成功。我希望生态系统能够继续扩展,以让更多的人学习如何部署 Kubernetes 或 Weave 到 ARM 设备上。毕竟,这些是我学到的。通过在 Raspberry Pi 设备上自学,我更好地了解了 ARM 及其上面部署的软件。

最后的思考

我通过加入用户社区、提出问题和不同程度的测试,在线学习了关于 Raspberry Pi 和 Kubernetes 的一切。

我是居住在芬兰的说瑞典语的高中生,到目前为止,我还从来没有参加过编程或计算机课程。但我仍然能够加入开源社区,因为它对年龄或教育没有限制:你的工作是根据其价值来评判的。

对于那些第一次要在开源项目中做出贡献感到紧张的人,我想说:深入进去,因为这是完全值得的。你做什么没有任何限制,你将永远不知道开源世界将为你提供哪些机会。这会很有趣,我保证!


作者简介:

Lucas Käldström - 谢谢你发现我!我是一名来自芬兰的说瑞典语的高中生。


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

作者:Lucas Käldström 译者:geekpi 校对:jasminepeng

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