树莓派+SIM模块自制简易手机

现在手机满街都是,对于技术宅来说,买一个多没意思呀。自己做一个才算是完美是不是

首先准备材料

SIM900A 通讯模块 一个

树莓派一台

屏幕一个

SIM900A的通信模块最小版,已经把必要的IO都引出了,并集成了SIM卡槽,东西还是挺不错的,就是有个对于树莓派小缺点。模块在启动的时候需要800mA以上的电流。树莓派的供电是在捉急,需要改一下供电电路才能正常使用。否则树莓派重启,特别是打电话的时候。

树莓派+SIM模块自制简易手机

这个SIM模块的供电电压范围是3.6-4.5V,所以是不能直接用5V的电源来供电的,否则会烧坏模块。而3.3V又供不起。可以串联一个二极管来降压,注意使用的二极管必须是硅管,电压降必须是0.7V以上。否则有些二极管的电压降仅仅是0.3V的,降压的电压对模块还是很危险

树莓派+SIM模块自制简易手机

树莓派+SIM模块自制简易手机

然后把模块通过GPIO和树莓派接好,也就是/dev/ttyAMA0设备。不过需要设置一下,把系统的调试什么的输出都关掉这样才能用这个串口。

首先是/boot/cmdline.txt

要把console=ttyAMA0,115200 kgdboc=ttyAMA0,115200这一段删掉以禁用串口调试。

然后是/etc/inittab里的T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100用#注释掉

然后进行串口调试

microcom -p /dev/ttyAMA0

现在我们要打电话给10086,键入下列指令就可以啦

echo -e ‘ATD10086;r’ > /dev/ttyAMA0

老是用指令打电话,太麻烦了,虽然指令什么的逼格高。建立一个简单的GUI界面方便使用

树莓派+SIM模块自制简易手机

生产gui之后在代码后面加上

  1. class App(wx.App):

  2. def OnInit(self):

  3. frame = MyFrame1(None) ##这里为我们生成GUI的Frame类名

  4. frame.Show()

  5. return True

  6. app = App()

  7. app.MainLoop()

拨号和挂断键的代码

  1. def CALLA( self, event ):

  2. OUTAD=’ATD%s;r’ % (self.number.GetValue()) ##把拨号的命令放到变量,后面的那些是输入框里的数字

  3. print OUTAD

  4. ser.write(OUTAD) #写串口操作码

  5. def keyinnumber0( self, event ):

  6. self.number.WriteText(“0”) ##在文本框添加个数字0,前面1-9也是一样,用来输入号码

  7. def CALLH( self, event ):

  8. print ‘ATHr’

  9. ser.write(“ATHr”) #写串口操作码,挂断电话

最终实现的效果

树莓派+SIM模块自制简易手机

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

编译自: https://opensource.com/article/18/7/network-attached-storage-Raspberry-Pi

作者: Manuel Dewald

译者: jrg

跟随这些逐步指导构建你自己的基于树莓派的 NAS 系统。

我将在接下来的这三篇文章中讲述如何搭建一个简便、实用的 NAS 云盘系统。我在这个中心化的存储系统中存储数据,并且让它每晚都会自动的备份增量数据。本系列文章将利用 NFS 文件系统将磁盘挂载到同一网络下的不同设备上,使用 Nextcloud 来离线访问数据、分享数据。

本文主要讲述将数据盘挂载到远程设备上的软硬件步骤。本系列第二篇文章将讨论数据备份策略、如何添加定时备份数据任务。最后一篇文章中我们将会安装 Nextcloud 软件,用户通过 Nextcloud 提供的 web 界面可以方便的离线或在线访问数据。本系列教程最终搭建的 NAS 云盘支持多用户操作、文件共享等功能,所以你可以通过它方便的分享数据,比如说你可以发送一个加密链接,跟朋友分享你的照片等等。

最终的系统架构如下图所示:

树莓派自建 NAS 云盘之——树莓派搭建网络存储盘

硬件

首先需要准备硬件。本文所列方案只是其中一种示例,你也可以按不同的硬件方案进行采购。

最主要的就是 树莓派 3 ,它带有四核 CPU、1G RAM,以及(比较)快速的网络接口。数据将存储在两个 USB 磁盘驱动器上(这里使用 1TB 磁盘);其中一个磁盘用于每天数据存储,另一个用于数据备份。请务必使用有源 USB 磁盘驱动器或者带附加电源的 USB 集线器,因为树莓派无法为两个 USB 磁盘驱动器供电。

软件

在该社区中最活跃的操作系统当属 Raspbian ,便于定制个性化项目。已经有很多 操作指南 讲述如何在树莓派中安装 Raspbian 系统,所以这里不再赘述。在撰写本文时,最新的官方支持版本是 Raspbian Stretch ,它对我来说很好使用。

到此,我将假设你已经配置好了基本的 Raspbian 系统并且可以通过 ssh 访问到你的树莓派。

准备 USB 磁盘驱动器

为了更好地读写数据,我建议使用 ext4 文件系统去格式化磁盘。首先,你必须先找到连接到树莓派的磁盘。你可以在 /dev/sd/<x> 中找到磁盘设备。使用命令 fdisk -l,你可以找到刚刚连接的两块 USB 磁盘驱动器。请注意,操作下面的步骤将会清除 USB 磁盘驱动器上的所有数据,请做好备份。

pi@raspberrypi:~ $ sudo fdisk -l

<…>

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 0xe8900690

Device Boot Start End Sectors Size Id Type

/dev/sda1 2048 1953525167 1953523120 931.5G 83 Linux

Disk /dev/sdb: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 0x6aa4f598

Device Boot Start End Sectors Size Id Type

/dev/sdb1 * 2048 1953521663 1953519616 931.5G 83 Linux

由于这些设备是连接到树莓派的唯一的 1TB 的磁盘,所以我们可以很容易的辨别出 /dev/sda 和 /dev/sdb 就是那两个 USB 磁盘驱动器。每个磁盘末尾的分区表提示了在执行以下的步骤后如何查看,这些步骤将会格式化磁盘并创建分区表。为每个 USB 磁盘驱动器按以下步骤进行操作(假设你的磁盘也是 /dev/sda 和 /dev/sdb,第二次操作你只要替换命令中的 sda 为 sdb 即可)。

首先,删除磁盘分区表,创建一个新的并且只包含一个分区的新分区表。在 fdisk 中,你可以使用交互单字母命令来告诉程序你想要执行的操作。只需要在提示符 Command(m for help): 后输入相应的字母即可(可以使用 m 命令获得更多详细信息):

pi@raspberrypi:~ $ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.29.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Command (m for help): o

Created a new DOS disklabel with disk identifier 0x9c310964.

Command (m for help): n

Partition type

p primary (0 primary, 0 extended, 4 free)

e extended (container for logical partitions)

Select (default p): p

Partition number (1-4, default 1):

First sector (2048-1953525167, default 2048):

Last sector, +sectors or +size{K,M,G,T,P} (2048-1953525167, default 1953525167):

Created a new partition 1 of type ‘Linux’ and of size 931.5 GiB.

Command (m for help): p

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 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: 0x9c310964

Device Boot Start End Sectors Size Id Type

/dev/sda1 2048 1953525167 1953523120 931.5G 83 Linux

Command (m for help): w

The partition table has been altered.

Syncing disks.

现在,我们将用 ext4 文件系统格式化新创建的分区 /dev/sda1:

pi@raspberrypi:~ $ sudo mkfs.ext4 /dev/sda1

mke2fs 1.43.4 (31-Jan-2017)

Discarding device blocks: done

<…>

Allocating group tables: done

Writing inode tables: done

Creating journal (1024 blocks): done

Writing superblocks and filesystem accounting information: done

重复以上步骤后,让我们根据用途来对它们建立标签:

pi@raspberrypi:~ $ sudo e2label /dev/sda1 data

pi@raspberrypi:~ $ sudo e2label /dev/sdb1 backup

现在,让我们安装这些磁盘并存储一些数据。以我运营该系统超过一年的经验来看,当树莓派启动时(例如在断电后),USB 磁盘驱动器并不是总被挂载,因此我建议使用 autofs 在需要的时候进行挂载。

首先,安装 autofs 并创建挂载点:

pi@raspberrypi:~ $ sudo apt install autofs

pi@raspberrypi:~ $ sudo mkdir /nas

然后添加下面这行来挂载设备 /etc/auto.master:

/nas /etc/auto.usb

如果不存在以下内容,则创建 /etc/auto.usb,然后重新启动 autofs 服务:

data -fstype=ext4,rw :/dev/disk/by-label/data

backup -fstype=ext4,rw :/dev/disk/by-label/backup

pi@raspberrypi3:~ $ sudo service autofs restart

现在你应该可以分别访问 /nas/data 以及 /nas/backup 磁盘了。显然,到此还不会令人太兴奋,因为你只是擦除了磁盘中的数据。不过,你可以执行以下命令来确认设备是否已经挂载成功:

pi@raspberrypi3:~ $ cd /nas/data

pi@raspberrypi3:/nas/data $ cd /nas/backup

pi@raspberrypi3:/nas/backup $ mount

<…>

/etc/auto.usb on /nas type autofs (rw,relatime,fd=6,pgrp=463,timeout=300,minproto=5,maxproto=5,indirect)

<…>

/dev/sda1 on /nas/data type ext4 (rw,relatime,data=ordered)

/dev/sdb1 on /nas/backup type ext4 (rw,relatime,data=ordered)

首先进入对应目录以确保 autofs 能够挂载设备。autofs 会跟踪文件系统的访问记录,并随时挂载所需要的设备。然后 mount 命令会显示这两个 USB 磁盘驱动器已经挂载到我们想要的位置了。

设置 autofs 的过程容易出错,如果第一次尝试失败,请不要沮丧。你可以上网搜索有关教程。

挂载网络存储

现在你已经设置了基本的网络存储,我们希望将它安装到远程 Linux 机器上。这里使用 NFS 文件系统,首先在树莓派上安装 NFS 服务器:

pi@raspberrypi:~ $ sudo apt install nfs-kernel-server

然后,需要告诉 NFS 服务器公开 /nas/data 目录,这是从树莓派外部可以访问的唯一设备(另一个用于备份)。编辑 /etc/exports 添加如下内容以允许所有可以访问 NAS 云盘的设备挂载存储:

/nas/data *(rw,sync,no_subtree_check)

更多有关限制挂载到单个设备的详细信息,请参阅 man exports。经过上面的配置,任何人都可以访问数据,只要他们可以访问 NFS 所需的端口:111 和 2049。我通过上面的配置,只允许通过路由器防火墙访问到我的家庭网络的 22 和 443 端口。这样,只有在家庭网络中的设备才能访问 NFS 服务器。

如果要在 Linux 计算机挂载存储,运行以下命令:

you@desktop:~ $ sudo mkdir /nas/data

you@desktop:~ $ sudo mount -t nfs <raspberry-pi-hostname-or-ip>:/nas/data /nas/data

同样,我建议使用 autofs 来挂载该网络设备。如果需要其他帮助,请参看 如何使用 Autofs 来挂载 NFS 共享 。

现在你可以在远程设备上通过 NFS 系统访问位于你树莓派 NAS 云盘上的数据了。在后面一篇文章中,我将介绍如何使用 rsync 自动将数据备份到第二个 USB 磁盘驱动器。你将会学到如何使用 rsync 创建增量备份,在进行日常备份的同时还能节省设备空间。

如何将树莓派变成电子书服务器

如何将树莓派变成电子书服务器

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

编译自: https://opensource.com/article/17/6/raspberrypi-ebook-server

作者: Don Watkins

译者: geekpi

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

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

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

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

如何将树莓派变成电子书服务器

Updating Raspbian Pixel

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

如何将树莓派变成电子书服务器

Installing Calibre

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

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

如何将树莓派变成电子书服务器

Calibre’s interface

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

如何将树莓派变成电子书服务器

Searching for e-books

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

如何将树莓派变成电子书服务器

Choosing the e-book format

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

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

如何将树莓派变成电子书服务器

start_the_server.png

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

如何将树莓派变成电子书服务器

Identifying the IP address with ipconfig

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

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

如何将树莓派变成电子书服务器

Calibre’s client homepage

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

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

如何将树莓派变成电子书服务器

Browsing e-books

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

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


作者简介:

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


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

作者:Don Watkins[7] 译者:geekpi 校对:wxy

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

  • [1]: Calibre 3.0 发布了 – https://the-digital-reader.com/2017/06/19/calibre-3-0-released/

  • [2]: Raspbian Pixel 镜像 – https://www.raspberrypi.org/downloads/raspbian/

  • [3]: 调整了 Pixel 环境分辨率 – https://www.raspberrypi.org/forums/viewtopic.php?t=5851

  • [4]: Calibre – https://calibre-ebook.com/

  • [5]: 非 DRM – https://en.wikipedia.org/wiki/Digital_rights_management

  • [6]: Project Gutenberg – https://www.gutenberg.org/

  • [7]: Don Watkins – https://opensource.com/users/don-watkins

使用树莓派构建一个婴儿监视器

使用树莓派构建一个婴儿监视器

编译自: https://opensource.com/article/18/3/build-baby-monitor-raspberry-pi

作者: Jonathan Ervine

译者: qhwdw

比一般的视频监控还要好,这种 DIY 型号还有婴儿房间的自动室温控制功能。

香港很湿热,即便是晚上,许多人为了更舒适,在家里也使用空调。当我的大儿子还是一个小婴儿的时候,他卧室的空调还是需要手动控制的,没有温度自动调节的功能。它的控制器只有开或者关,让空调整个晚上持续运行会导致房间过冷,并且也浪费能源和钱。

我决定使用一个基于 树莓派 的 物联网 解决方案去修复这个问题。后来我进一步为它添加了一个 婴儿监视器 插件。在这篇文章中,我将解释我是如何做的,它的代码在 我的 GitHub 页面上。

设计空调控制器

解决我的问题的第一个部分是使用了一个 Orvibo S20 可通过 WiFi 连接的智能插头 和智能手机应用程序。虽然这样可以让我通过远程来控制空调,但是它还是手动处理的,而我希望尝试让它自动化。我在 Instructables 上找到了一个满足我的需求的项目:他使用树莓派从一个 AM2302 传感器 上测量附近的温度和湿度,并将它们记录到一个 MySQL 数据库中。

使用压接头将温度/湿度传感器连接到树莓派的相应 GPIO 针脚上。幸运的是,AM2302 传感器有一个用于读取的 开源软件 ,并且同时提供了 Python 示例。

与我的项目放在一起的用于 AM2302 传感器 接口的软件已经更新了,并且我使用的原始代码现在应该已经过时了,停止维护了。这个代码是由一个小的二进制组成,用于连接到传感器以及解释读取并返回正确值的 Python 脚本。

使用树莓派构建一个婴儿监视器

树莓派、传感器、以及用于构建温度/湿度监视器的 Python 代码。

将传感器连接到树莓派,这些 Python 代码能够正确地返回温度和湿度读数。将 Python 连接到 MySQL 数据库很简单,并且也有大量的使用 python-mysql 绑定的代码示例。因为我需要持续地监视温度和湿度,所以我写软件来实现这些。

事实上,最终我用了两个解决方案,一是作为一个持续运行的进程,周期性(一般是间隔一分钟)地获取传感器数据,另一种是让 Python 脚本运行一次然后退出。我决定使用第二种方法,并使用 cron 去每分钟调用一次这个脚本。之所以选择这种方法的主要原因是,(通过循环实现的)持续的脚本偶尔会不返回读数,这将导致尝试读取传感器的进程出现堆积,最终可能会导致系统挂起而缺乏可用资源。

我也找到了可以用程序来控制我的智能插头的一个 Perl 脚本 。它是解决这种问题所需的一部分,因此当某些温度/湿度达到触发条件,将触发这个 Perl 脚本。在做了一些测试之后,我决定去设计一个独立的 checking 脚本,从 MySQL 去拉取最新的数据,然后根据返回的值去设置智能开关为开或关。将插头控制逻辑与传感器读取脚本分开,意味着它们是各自独立运行的,就算是传感器读取脚本写的有问题也没事。

配置一个打开/关闭空调的温度值是很有意义的,因此,我将这些值转移到控制脚本读取的配置文件中。我也发现,虽然传感器的值一般都很准确,但是,偶尔也会出现返回不正确读数的情况。这个传感器脚本被修改为不向 MySQL 数据库中写入与前值差异非常大的值。同样也在配置文件中写入了连续读取的温度/湿度之间允许的最大差异值,如果读取的值处于这些限制值以外,这些值写不会提交到数据库中。

虽然,做这个自动调节器似乎花费了很多努力,但是,这意味着,记录到 MySQL 数据库的数据是有效的、可用于进一步去分析识别用户使用模式的有用数据。可以用多种图形方式去展示来自 MySQL 数据库中的数据,而我决定使用 Google Chart 在一个 Web 页面上显示数据。

使用树莓派构建一个婴儿监视器

过去六小时内测量到的温度和湿度

添加一个婴儿监视摄像头

树莓派开放的性能意味着我可以不断地为它增加功能 —— 并且我有大量的未使用的可用 GPIO 针脚。我的下一个创意是去添加一个摄像头模块,将它放在孩子的卧室中,配置它去监视婴儿。

我需要一个能够在黑暗环境中工作的摄像头,而 Pi Noir 摄像头模块是非常适合这种条件的。Pi Noir 除了没有红外过滤之外,同样也是树莓派常用的摄像头模块。这意味着它在白天时的图像可能有点偏紫色,但是它可以在黑暗中借助红外灯来显示图像。

现在我需要一个红外光源。由于树莓派非常流行,并且进入门槛很低,因此它有大量的外围配件和插件。也有适合它的各种红外光源,我注意到的其中一个是 Bright Pi 。它可以从树莓派上供电,并且它很适合为树莓派的摄像头模块提供红外光和普通光。它唯一的缺点是太考验我的焊接技能了。

我的焊接技能还是不错的,但是可能花费的时间比其他人更长。我成功地连接了外壳上所有的红外 LEDs,并将它们连接到树莓派的 GPIO 针脚上。这意味着树莓派能够编程控制红外 LED 是否点亮,以及它的亮度。

通过一个 Web 流去公开捕获的视频也很有意义,因为这样我就可以从 Web 页面上查看温度和湿度的读数图表。进一步研究之后,我选择了一个使用 M-JPEG 捕获器的 流软件 。通过 Web 页面公开 JPG 源,我可以在我的智能手机上去连接摄像头查看程序,去查看摄像头的输出。

做最后的修饰

没有哪个树莓派项目都已经完成了还没有为它选择一个合适的外壳,并且它有各种零件。在大量搜索和比较之后,有了一个显然的 赢家 :SmartPi 的乐高积木式外壳。乐高的兼容性可以让我去安装温度/湿度传感器和摄像头。下面是最终的成果图:

使用树莓派构建一个婴儿监视器

在这以后,我对我的这个作品作了一些改变和更新:

  • 我将它从树莓派 2 Model B 升级到了 树莓派 3 ,这意味着我可以使用 USB WiFi 模块。
  • 我用一个 TP-Link HS110 智能插头替换了 Orvibo S20。
  • 我也将树莓派插到了一个智能插头上,这样我就可以远程重启/重置它了。
  • 我从树莓派上将 MySQL 数据库移走了,它现在运行在一个 NAS 设备上的容器中。
  • 我增加了一个非常 灵活的三角夹 ,这样我就可以调整到最佳角度。
  • 我重新编译了 USB WiFi 模块,禁用了板载 LED 指示灯,这就是升级到树莓派 3 的其中一个好处。
  • 我因此为我的第二个孩子设计了另外一个监视器。
  • 因为没有时间去折腾,我为我的第三个孩子购买了夜用摄像头。

想学习更多的东西吗?所有的代码都在 我的 GitHub 页面上。

用树莓派搭建自己的私有云盘

市面上的私有云网盘软件可能大家也看到很多了,比如Seafile、ownCloud等,功能很实用,但是对于某些没有公网IP环境,或者是对于那些不懂内网穿透或者是端口映射的小白们来说,可能即使搭建好了,也没法从外网连上。这里介绍的Syncthing这款软件,就不需要公网IP,利用P2P网络来进行设备间互相的通讯,从而实现类似OneDrive一样的文件备份功能。

先列一下我所使用的设备:

  • 树莓派3B
  • 希捷1t硬盘

首先,需要让树莓派挂载上这个硬盘,这里我用硬盘为NTFS格式来举例:

安装ntfs-3g:

sudo apt-get install ntfs-3g

创建挂载点:

sudo mkdir /mnt/pidrive

连上硬盘,查看其标识:

sudo fdisk –l

编辑文件etc/fstab:

sudo nano etc/fstab

在最后一行加上(注意“/dev/sdc1”换成刚刚查看到的硬盘标识):

/dev/sdc1 /mnt/pidrive ntfs-3g defaults 0 0

按Ctrl+O保存,按Ctrl+X退出

挂载硬盘:

sudo mount –a

设置自动挂载USB驱动器:

sudo apt-get install autofs

将配置写入文件:

sudo nano /etc/auto.master

在行”+auto.master”之后添加如下内容,并保存退出:

/media/ /etc/auto.ext-usb --timeout=10,defaults,user,exec,uid=1000

硬盘自动关闭设置(withhdparm),注意修改为自己的硬盘标识:

sudo aptitude install hdparm
sudo hdparm -S120 /dev/sdc1

为了使被唤醒的硬盘重新连接,编辑文件(/etc/hdparm.conf):

sudo nano /etc/hdparm.conf

在文件最后一行加入如下内容,并保存退出,注意修改为自己的硬盘标识:

/dev/sdc1 {
spindown_time = 120
}

如果上面没做错的话,那么进入/mnt/pidrive文件夹,就应该是外接的硬盘了。(挂载NTFC硬盘部分教程取自这里)。

接着我们要在树莓派上部署Syncthing

打开Syncthing的官网,

我们复制一下arm版文件的下载链接:

用树莓派搭建自己的私有云盘

接着在树莓派中执行:

wget 那个下载的链接
tar -vzxf 那个下载了的文件

用树莓派搭建自己的私有云盘

接着执行:

cd 你刚刚解压的文件夹名
./syncthing

这时程序已经跑起来了,但是后台现在是连不上的,因为没有开启外网访问权限,我们在它开启后按Ctrl+C强制结束该进程。

通过查阅官方手册网站,笔者得知需要修改配置文件。

运行命令:

nano /home/pi/.config/syncthing/config.xml

把:

127.0.0.1:8384

改为:

0.0.0.0:8384

用树莓派搭建自己的私有云盘

这时我们再启动Syncthing服务:

./syncthing

如果我们打开浏览器,可以成功访问其后台的话,就说明我们成功了。

网址为:http://你树莓派的内网IP地址:8384

打开后都是中文,我就不过多解释了,唯一需要注意的是,远程打开最好设置一下登陆的账号密码。

用树莓派搭建自己的私有云盘

另外值得一说的是,树莓派的进程最好使用screen在后台运行:

sudo apt-get install screen
screen ./syncthing

按Ctrl+A,Ctrl+D扔到后台运行。

具体设置请自行查看官方的技术文档。

再接着我们来配置电脑端的软件(因为电脑端都是千篇一律的,所以我只说一台电脑的添加方法,多台电脑方法一样,不再赘述)。

去官网下载Windows系统专用版本:

用树莓派搭建自己的私有云盘

下载到电脑上,解压到一个你不会去删掉的位置。

这里推荐下载一个GUI工具,我们再从官网下载一个GUI管理器,这里推荐那个GTK写的工具:

用树莓派搭建自己的私有云盘

下载,安装,打开。你会发现它弹了个窗,勾上始终启动,点Start:

用树莓派搭建自己的私有云盘

再选上你刚刚下载解压好的Syncthing软件,点保存:

用树莓派搭建自己的私有云盘

启动成功后,我们先打开树莓派的网页后台,查看ID:

用树莓派搭建自己的私有云盘

复制那一串设备标识:

用树莓派搭建自己的私有云盘

我们在本机电脑软件里把树莓派添加进来:

用树莓派搭建自己的私有云盘

稍等片刻,树莓派网页后台会弹出一个消息,问是否连接电脑,点是就可以了。

连接过后,和之前差不多,添加要共享的文件夹就可以了:

用树莓派搭建自己的私有云盘用树莓派搭建自己的私有云盘

树莓会显示提示:

用树莓派搭建自己的私有云盘

注意设置路径时,要选你刚刚挂载的硬盘下面的路径:

用树莓派搭建自己的私有云盘

这样,一个文件夹就共享完成了,当文件被修改时,会自动同步到树莓派所连接的硬盘中。

连接外网的电脑,步骤和上面没有太大区别,唯一要注意的就是建立连接和添加文件夹时需要双方点击同意,所以还是在添加新设备之前开个TeamView远控家里的电脑吧,不然加不上。

具体连接见下图(大概就这意思吧):

用树莓派搭建自己的私有云盘

这样,一个不需要外网IP的云盘就做完了,如果你愿意,搭建到服务器上面也是可以的。

如何在树莓派上搭建私有云存储

本篇的旨在最全面地介绍搭建网盘的整个过程,让没有Linux基础的小白们少走弯路,因此细节上多有赘述,老司机们请无视。最近国内的网盘们一个接一个地倒下,相信很多人不想忍受某网盘的限速,大家对私有云的需求越来越高。最简单和稳妥的解决办法当然还是购买群晖这样高性能、多功能的NAS,但动辄几千元的售价还是让许多人望而却步,市面上的私有云盘软件有诸如可道云、Nextcloud/ownCloud、Seafile等,这里IT之家来介绍如何用一块树莓派3B开发板搭建私有云存储。

先介绍一下本篇的主角——可道云

KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文档管理解决方案,具有以下特点:

  • 轻量易部署
  • 适用性强,应用场景多
  • 高颜值、可定制

在体验了各家网盘后笔者选择了可道云,主要是第一眼就被他近似于Windows的操作界面吸引了,可道云不需要数据库,足够轻量,搭建简单,毕竟小小的树莓派机能实在是有限。对比ownCloud,可道云在树莓派上的性能表现要好太多。但也有像无移动客户端支持、同步不便、移动端网页版存在一些问题等不足。

如何在树莓派上搭建私有云存储

aria2

aria2被众多网友视为下载神器,相信不少朋友都接触过,它是一款开源免费跨Win、Mac、Linux平台且不限速的多线程下载软件,具有速度快、体积小、性能强劲等特点。aria2支持HTTP / FTP / BT / Magnet磁力链接等类型的文件下载。

准备

  • 树莓派3B
  • 内存卡
  • 硬盘
  • 公网IP
  • 域名

为树莓派安装系统并启动登录

先去树莓派官网下载系统镜像

如何在树莓派上搭建私有云存储

Download Zip下载压缩包,下载完成后解压,得到img镜像文件。

下载镜像烧录工具Win32DiskImager v0.9.zip并安装。

使用读卡器将内存卡连接电脑,运行Win32diskimager。

如何在树莓派上搭建私有云存储

映像文件选择刚下载的img文件,设备选择内存卡盘符,然后选择写入,就开始安装系统了,安装完成后会弹出完成对话框。安装完成后在Windows系统看到内存卡只有74MB这是正常的,Windows看不到Linux下的分区。

然后在内存卡根目录下新建文件名为ssh的空白文件(没有后缀名),这样就能开启SSH服务登陆树莓派了。

将内存卡插入树莓派,用网线连接树莓派网口和路由器lan口,然后接上电源线。树莓派就开机了!

登陆路由器后台查看树莓派的内网IP

如何在树莓派上搭建私有云存储

可以看到这里树莓派获取到的IP地址为192.168.2.6,记住这个地址

下载并安装PuTTY,安装完成后运行PuTTY。

如何在树莓派上搭建私有云存储

将电脑和树莓派置于同一局域网,在主机名称中输入192.168.2.6,端口默认的22就可以,然后点击打开。这时会弹出安全警告,点是即可;之后输入用户名:pi;密码:raspberry(输入时密码不可见)就成功登陆树莓派了。

如何在树莓派上搭建私有云存储

域名

大家可以在阿里云注册一个喜欢的域名,部分域名一年也就几块钱。至此准备工作就完成了。

搭建可道云

PuTTY登陆后为root用户设置密码,输入(PuTTY中单击鼠标右键粘贴):

sudo passwd root

会提示输入密码,然后确认输入密码(输入时密码不可见)。

如何在树莓派上搭建私有云存储

输入如下命令就可切换到root用户:

su

我们先解除树莓派对root用户直接登陆的限制,编辑sshd_config文件:

sudo nano /etc/ssh/sshd_config

按Ctrl+W搜索PermitRootLogin,删除前面的#并把without-password改为yes:

PermitRootLogin yes

按Ctrl+O保存文件,Ctrl + X退出编辑然后重启树莓派:

reboot

安装Apache+PHP

使用root用户登录,先更新一下安装源:

sudo apt-get update

安装apache2和PHP:

sudo apt-get install apache2 php7.0 php7.0-curl php7.0-mbstring php7.0-gd

这时访问树莓派的IP就可以看到apache2的默认页了。

挂载硬盘

树莓派挂载NTFS硬盘默认是只读文件系统,我们可以通过其它工具实现,安装ntfs-3g:

sudo apt-get install ntfs-3g
modprobe fuse

接下来我们创建挂载点,我选择的挂载点在/media/pi/mo文件夹:

sudo mkdir /media/pi/mo

查看系统当前挂载的硬盘:

fdisk -l

我们会看到最下面有如下信息:

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       8192    93236    85045 41.5M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      94208 62521343 62427136 29.8G 83 Linux

Disk /dev/sda: 464.8 GiB, 3899024998 bytes, 937766584 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: 0xa7cf32d1

Device     Boot Start       End   Sectors   Size  Id  Type
/dev/sda1        2048 334438655 937766584 464.8G  7 HPFS/NTFS/exFAT

其中/dev/sda1为这块硬盘的分区信息。下面我们就以Apache的默认用户www-data来挂载硬盘,输入如下命令来查看用户身份:

sudo -u www-data id

显示信息如下:

uid=33(www-data) gid=33(www-data) groups=33(www-data)

然后让硬盘能够自动挂载,编辑/etc/fstab:

sudo nano /etc/fstab

将如下内容添加到文件最后一行:

/dev/sda1 /media/pi/mo ntfs uid=33,gid=33,noexec,umask=007 0 0

这里uid和gid为用户和组,也就是上面我们查看到的信息;umask表示拒绝的权限,其中第一个数字为0。表示不拒绝任何权限,即可读、写、执行,第二、三个数字分别代表用户组和其他用户。按Ctrl+O保存文件,然后Ctrl + X退出编辑,重启后生效:

reboot

配置可道云

下载并解压可道云

cd /media/pi/mo/kod
wget http://static.kodcloud.com/update/download/kodexplorer4.25.zip
unzip kodexplorer4.25.zip
chmod -Rf 777 ./*

配置apache:

nano /etc/apache2/sites-available/kod.conf

粘贴如下内容:

注:这里将kod.wumo.com替换成你自己的用来访问云盘的域名。重启apache2:

sudo service apache2 restart

解析域名

我们先在路由器上配置端口转发,进入路由器管理后台,找到端口转发/端口映射这项,以我手里这台刷了老毛子的斐讯为例:服务名称随意;端口范围我这里填58080(图上是80,别管它),这个端口是可以任意的,它是我们通过域名访问树莓派上的web服务时使用的端口,你可以用其他端口但尽量避开80、443、8080这些端口,因为运营商会封禁这些web服务默认端口;内网IP:树莓派的内网IP;本地端口:80;这样我们就把对路由器58080端口的访问转移到树莓派的80端口了。这里我们也为aria2配置一条转发规则:将路由器的6800端口转发到树莓派的6800端口。

如何在树莓派上搭建私有云存储

家庭宽带IP会经常改变,这里就需要动态域名解析。动态域名的功能大多数路由器都有,如果你不会的话可以参考这篇文章用WinScp将softether(提取码:uqgx)上传到树莓派根目录并解压:

tar -zxvf softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-arm_eabi-32bit.tar.gz
cd /vpnserver
./.install.sh
./vpnserver start–Simplified Chinese

然后设置密码:

./vpncmd

输入1,后按三次回车,然后输入:

ServerPasswordSet

按照提示设置密码,然后下载并安装Windows端管理工具(在上面的网盘链接里),点击“新设置”添加连接文件。主机名填树莓派内网IP,端口:443,密码:你刚才设置的密码。

如何在树莓派上搭建私有云存储

确定后选择“远程访问vpnserver”,然后一路确定,你就能看到分配到的动态解析的域名了,

如何在树莓派上搭建私有云存储

记下这个域名,我的域名是阿里云注册的,进入阿里云控制台>我的资源>云解析DNS>你的域名,选择添加解析,

如何在树莓派上搭建私有云存储

记录类型:CNAME;主机记录:配置apache时填写的域名(上文中我填的是kod);记录值:动态DNS分配的域名。

至此我们的私有云就搭建完成了!用浏览器访问http://你的域名:转发到树莓派的端口号就可以看到我们搭建的云盘了。效果如下:

如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储

本文就是用可道云内置的MD编辑器写的。

配置Aria2

这里aria2的配置参考这篇文章。

安装Aria2

sudo apt-get install aria2

配置Aria2在/etc目录下创建aria2目录用来存放配置文件:

sudo mkdir /etc/aria2

创建空白的aria2.session文件:

sudo touch /etc/aria2/aria2.session

创建配置文件:

sudo nano /etc/aria2/aria2.conf

在该文件中输入以下内容:

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/media/pi/mo/kod/data/User/admin/home/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
## 进度保存相关 ##
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=123456789
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=

注1:rpc-secret=123456789,改为你自己的密码;

注2:aria2默认下载目录笔者放在了可道云管理员文件目录下的download文件夹,下载完成后打开可道云即可看到。

启动aria2

这里我们用www-data用户来运行aria2,先赋予配置目录可执行权限:

sudo chown -R www-data:www-data /etc/aria2

以www-data用户运行aria2:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf

如果没有提示任何错误信息,那就按Ctrl+C停止上面的语句,以Daemon的形式,转为后台运行:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D

做成系统服务:

sudo nano /etc/init.d/aria2c

粘贴以下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO  
case "$1" in
start)
    echo  "Starting aria2c ..."
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
stop)
    echo  "Shutting down aria2c ..."
    killall aria2c
;;
restart)
     killall aria2c
    sleep 3
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
esac
exit

然后设置这个文件的权限:

sudo chmod 755 /etc/init.d/aria2c

测试服务是否可以启动:

sudo service aria2c start

添加aria2c服务自动运行:

sudo update-rc.d aria2c defaults

安装aria的web管理界面这里我们选择aria2-NG作为web管理界面创建目录:

mkdir /var/www/html/aria2

下载并解压aria2-NG:

cd /var/www/html/aria2 && wget https://github.com/mayswind/AriaNg/releases/download/0.3.0/aria-ng-0.3.0.zip
unzip aria-ng-0.3.0.zip

配置apache:

nano /etc/apache2/sites-available/aria2.conf

输入以下内容:

注:和上文一样把aria2.wumo.com替换成你用来访问aria2管理界面的域名。

ln -s /etc/apache2/sites-available/aria2.conf /etc/apache2/sites-enabled/aria2.conf

重启apache2:

sudo service apache2 restart

然后去阿里云把你用来访问aria2管理界面的域名的CNAME记录解析到动态域名上。用浏览器输入http://用来访问aria2管理界面的域名:外网端口(上文中我用的是58080)访问你的aria2。这里会显示认证错误:

如何在树莓派上搭建私有云存储

到AriaNG设置>RPC>Aria2RPC密钥输入上文你设置的密码,然后重新加载页面:

如何在树莓派上搭建私有云存储

这里就会显示已连接了。

如何在树莓派上搭建私有云存储

这样我们就大功告成了~

树莓派无线网络打印机

家里面有老式USB有线打印机的朋友有了树莓派Zero W可以将自己的打印机秒变无线网络打印机,瞬间高大上,对于那些囊中羞涩还没升级无线打印机的朋友瞬间装B成功,高大上好了进入正题,首先将树莓派Zero W联网输入如下命令更新库缓存

  1. sudo apt-get update

接着打开终端输入如下命令安装所需组件

  1. sudo apt-get install cups printer-driver-gutenprint

其中printer-driver-gutenprint是多合一驱动库,CUPS是网络打印服务端

接着输入如下命令将用户pi加入到打印组

  1. sudo usermod -a -G lpadmin pi

然后停止CUPS服务

  1. sudo service cups stop

备份原配置文件

  1. sudo mv /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak

创建新配置文件

  1. sudo vi /etc/cups/cupsd.conf

复制粘贴进入如下内容然后保存

  1. # Only listen for connections from the local machine.

  2. #Listen localhost:631

  3. #CHANGED TO LISTEN TO LOCAL LAN

  4. Port 631

  5. # Restrict access to the server…

  6. <Location />

  7. Order allow,deny

  8. Allow @Local

  9. </Location>

  10. # Restrict access to the admin pages…

  11. <Location /admin>

  12. Order allow,deny

  13. Allow @Local

  14. </Location>

  15. # Restrict access to configuration files…

  16. <Location /admin/conf>

  17. AuthType Default

  18. Require user @SYSTEM

  19. Order allow,deny

  20. Allow @Local

  21. </Location>

重启CUPS服务

  1. sudo service cups start

使用ifconfig命令或者到路由器管理界面查找开发板的局域网IP,然后再将USB打印机开机后连接开发板,在电脑或者手机上输入如下网址进行配置打印机

  1. https://树莓派开发板局域网IP:631/admin

接着将打印机用数据线和OTG连接到树莓派Zero W开发板后,按下图操作,添加自己的打印机

树莓派无线网络打印机

树莓派无线网络打印机

记住勾选Share This Printer

树莓派无线网络打印机

选择打印机厂商型号

树莓派无线网络打印机

输入账号密码

树莓派无线网络打印机

配置打印选项

树莓派无线网络打印机

完成配置后打印测试页

树莓派无线网络打印机

树莓派无线网络打印机

到此就安装完成,在局域网内任意电脑上、手机上、平板上就都可以无线连接到这台打印机打印了

一起玩树莓派3+Win 10 IoT的痛苦体验

微软针对树莓派推出的Win10IoT系统,在树莓派3的评测计划中就规划Win10 IoT系统的评测,收到了树莓派3后一直想好好体验下,按照评测计划完成前面的评测后,终于可以可以体验Win 10 IoT了!

访问树莓派官网https://www.raspberrypi.org/,在系统的下载页面https://www.raspberrypi.org/downloads/,去下载Win10 IoT系统镜像。不同于其它系统镜像文件,在树莓派官方社区上点击就可以下载了,点击WINDOWS 10 IOT CORE系统图标后会跳转到微软的下载页面。

一起玩树莓派3+Win 10 IoT的痛苦体验

从微软的下载页面上来看, 稳定版本的Win10IoT系统只支持树莓派2,树莓派3只能下载预览版。下载支持树莓派3的 Win10 IoT Core预览版系统还需要注册和登陆,并且还要加入insider计划,还好以前做过Windows开发,账号还在,加入insider计划,就可以下载了。

一起玩树莓派3+Win 10 IoT的痛苦体验

Windows10_InsiderPreview_IoTCore_RPi_ARM32_en-us_14931.iso有705MB大小,这是一个iso镜像文件,用虚拟光驱打开iso镜像文件,里面是一个用来安装的.msi文件,直接双击安装里面的文件。安装完成就是将要烧写的flash文件放到了C:Program Files (x86)Microsoft IoTFFURaspberryPi2flash.ffu。

一起玩树莓派3+Win 10 IoT的痛苦体验

安装完成可以在安装目录下看到名为flash.ffu的文件,这个文件就是用来烧录到SD卡上的。我的电脑是Win10系统,可以直接在命令行用dism.exe烧写,其他系统可能要复杂一些。

将要烧录的MicroSD卡插到读卡器上,然后连接到电脑。进入系统管理员权限的cmd,cd到C:Program Files (x86)Microsoft IoTFFURaspberryPi2目录下,输入diskpart命令进入到diskpart命令控制台,然后输入listdisk指令,可以查看到连接到当前电脑的磁盘,记住SD卡磁盘号,在我的电脑中为磁盘 1。输入exit退出diskpart命令控制台,在flash.ffu文件的目录下运行dism.exe烧录指令,烧录到MicroSD卡中。

一起玩树莓派3+Win 10 IoT的痛苦体验

输入下面的命令开始烧写。

dism.exe /Apply-Image /ImageFile:Flash.ffu /ApplyDrive:\.PhysicalDrive1 /SkipPlatformCheck

一起玩树莓派3+Win 10 IoT的痛苦体验

烧写完成将MicroSD卡插入树莓派3,接上相应的USB键盘和鼠标,网线,HDMI显示器等,上电启动树莓派。屏幕会出现我们熟悉的Windows Logo,第一次启动要比较慢,需要耐心等待,几分钟就可以成功启动。

但是中间出现了几个小插曲:刚开始我用的是金士顿的8G MicroSD卡,第一次烧写后,启动了半个小时没有成功,断电后。在重新上电启动没有任何显示。接着又只有重新再烧写一次,上电出现了经典的Windows引导错误的界面,这时我怀疑是SD卡的问题,因为这张卡用了比较久,而且是class 4……

一起玩树莓派3+Win 10 IoT的痛苦体验

于是换了SanDisk的16G class 10重新烧录,这才启动成功,晕。

一起玩树莓派3+Win 10 IoT的痛苦体验

由于是晚上拍的照片,蓝色变成了白色。接着进入缓慢的启动过程,这个过程超级慢,耗掉了七八分钟,并且中间有几次重启。启动完成,设置语言设置页,选择中文,然后点击下一步。

一起玩树莓派3+Win 10 IoT的痛苦体验

跳过网络设置,系统进入了一个简单的图形界面环境,默认进入了设备信息页。主页只有设备信息、命令行、教程、设置和开关机,无比简陋!在设备信息页能够看到设备名称、网络、IP地址、OS版本和已经连接的设备信息。

一起玩树莓派3+Win 10 IoT的痛苦体验

一起玩树莓派3+Win 10 IoT的痛苦体验

教程页面的远程截图

一起玩树莓派3+Win 10 IoT的痛苦体验

打开设置页,进入蓝牙,搜索和手机蓝牙配对,第一次配对过程中,竟然crash了。重新配对一次,成功。

一起玩树莓派3+Win 10 IoT的痛苦体验

在Windows 10IoT下载页面下载一个工具IoT Dashboard,进行远程连接。点击“在浏览器中打开Windows Device Portal”。我们能够发现浏览器中地址是http://192.168.1.5:8080/,下次登录就可以不用通过Dashboard来。

一起玩树莓派3+Win 10 IoT的痛苦体验

我们打开网页,登录默认的用户名和密码:用户名:Administrator 密码:p@ssw0rd。

一起玩树莓派3+Win 10 IoT的痛苦体验

修改设备名称为Win10IoTPi3,修改后点击save,系统会黑屏重启,然后又进入了无尽的黑屏…….只好断电,再重新上电,上电后,竟然不能远程访问,一看,网口的指示灯没有亮。心里咯噔一下,坏了?屏幕进入了保护程序,移动鼠标,键盘都没有反应。好吧,断电再上电,竟然又正常了……晕。坑爹的MS!

点击左边的操作面板,在Performance页面能够获取到当前系统的CPU、I/O、Memory和Network的状态,并以图形化显示出来。

一起玩树莓派3+Win 10 IoT的痛苦体验

在默认首页右下角有一个截屏工具,非常好用,可以将远程桌面截下来自动保存到本地。

一起玩树莓派3+Win 10 IoT的痛苦体验

总结:

在Win10 IoT系统的使用过程中,发生了多次黑屏,系统极其不稳定,远程登录也卡顿严重,总的来说对于Pi3的支持不够好,希望Win 10 IOT再接再厉,我们才能够在稳定系统上进行开发。

无屏无网线无键盘鼠标,树莓派如何完全无头安装

最近终于闲下来可以放心的玩一玩买来后就闲置的树莓派3。头疼的是,我没有多余的键盘鼠标和屏幕,也不想每次都钻到放路由器的地方去插网线调试树莓派,所以就在百度谷歌国内国外到处搜索“无头安装树莓派”的方案,国内的文章和问答都搜不到,国外也没找到完整的教程。

不过在一整天的Google中,终于找到一篇冷门文章,然后顺藤摸瓜,最终达成我的目的。感谢这篇文章*

顺带一提,便于你的搜索引用,这个方案的英文术语叫”Raspberry Pi Headless setup”。只不过外文文章中搜到的也都不是”true headless”,因为很多都要求最起码先要用网线去连接。

开始前有几点要声明

树莓派3是自带wifi的,所以利用这个特点我们可以不用连网线来安装。如果你用的是无wifi版本树莓派,那么依照这个思路可以插上无线wifi的usb后再尝试。

目前只尝试过树莓派最新的官方系统适用此方法,而且根据StackOverflow上的问答得知,这个特性也是新版系统才有的。

本方案是在Mac上完成的,Windows上也可以。

准备工作

没错,就是这么简单。这就是我想要的效果。

安装系统

首先是常规的系统安装方法,很简单。下载好官方网站的Raspbian桌面系统后,解压成img格式文件。然后在Mac上用Etcher或ApplePi-Baker软件,Windows上用Rufus软件来将系统一键安装到SD卡。


这一步不需要详细解释,一般人都可以自己搜索到这几样东西,然后按照软件上的图式操作,除了下载时间外,全程也就10分钟以内完成。

无屏无网线无键盘鼠标,树莓派如何完全无头安装

△ Mac上用Ethcer安装树莓派系统

设置Wifi连接

这一步是本文最关键的一步,也是网上歧义分支最多的一步。在写这一步之前我想了一会儿,到底是应该先上结果还是先上过程。便于理解,还是先说过程的好;可是作为实用帖,先上结果比较有意思。

只需要如下几步即完成:
1. Mac和Windows用户直接打开树莓派SD卡文件夹,Linux用户打开SD卡所呈现的两个分区中叫boot且内存极小的主分区(非树莓派文件系统分区)
2. 在根目录放置一个文件名为ssh的文件,无后缀名,内容有没有都无所谓。Windows用户怎么操作可以自己百度下。
3. 在根目录放置一个文件名为wpa_supplicant.conf的文件,内容如下:

country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid=”你的Wifi名称,注意大小写”
    psk=”你的Wifi密码”
}

4. 把SD卡插回树莓派,开机。

哒哒!完成!就是这么简单。然后来讲解一下原理。

新版的树莓派系统,为了自带Wifi的树莓派做了不少努力,让你可以简单到在SD卡上建立一个叫ssh的文件,就自动识别为开启系统的SSH服务。然后你再放另一个文件,告诉它Wifi和密码,它就会自动连上网络。

系统启动后,这两个会被删除。如果你改了Wifi密码,还可以再做一次。

找到树莓派的IP地址

首先要知道,用网线连接路由器得到的IP地址和用Wifi连接路由器得到的IP地址是不一样的。网上好多文章都没说清楚。
这里我们要用Wifi连接。

最简单的是进入路由器的设置主页,在DHCP列表中,找到树莓派的ip地址。

或者可以通过命令行来检查。Mac或Linux上,用命令行输入arp -a,向路由器中所有可能的ip都找一遍,然后显示一个所有连上路由器的ip列表。可以树莓派先关机,看一下这个列表,再开机看一下这个列表,多出来的那个就是树莓派的地址。

如果哪里都没有的话,那说明树莓派没有成功连接到Wifi:或者是配置错误,或者是刚开机还没来得及连接。

通过SSH远程连接树莓派

Mac和Linux上直接打开终端,用ssh pi@IP地址来连接,默认密码是raspberry。如果Mac上有设置SSH KEY这样的东西,就先要确定同样ip地址以前没有被记录过。如果连接不成功,那么就要到~/.ssh/known_hosts文件中删除这条ip那一行的记录,然后再连接ssh。

Windows上一般网上都推荐用putty这样的简易小软件来连接(使用方法自行百度,很简单),其实最简单的是下载免安装版的git bash,然后在git开发的终端上,各种玩耍Linux和Mac上的命令。

通过VNC远程连接树莓派桌面

在已经成功用ssh连接到树莓派到话,如果连接树莓派桌面,需要在树莓派中安装一个叫tightvncservervnc服务。

操作如下:
1. 终端中输入sudo apt-get install tightvncserver
2. 安装好后,输入tightvncserver回车,启动vnc服务。
3. 然后就可以连接了。

Mac中,在文件夹Finder的菜单中,打开Go下的连接服务器,然后输入vnc://树莓派IP地址:5901。其中5901是默认的端口。

Windows上可能需要安装个软件来连接,可以自己查一查。

无屏无网线无键盘鼠标,树莓派如何完全无头安装

△ Mac VNC连接

无屏无网线无键盘鼠标,树莓派如何完全无头安装

△ 连接桌面成功

关于wpa_supplicant.conf

网上文章关于wpa_supplicant.conf这个文件的编辑,产生了巨大的分歧和建议,这给我造成了不少的负担。

在安装好树莓派系统后,SD卡实际上是分为两块磁盘的,一个为启动系统用的分区,另一个为存储文件系统用的分区。通常文件系统的这个分区,除了Linux电脑以外都没法识别和读取。而wpa_supplicant.conf这个文件偏偏又放置在文件系统分区的/etc/wpa_supplicant/目录下,所以必须用Linux才能访问。

出于钻研精神,我在自己的Mac上安装了VirtualBox虚拟机,下载了小到ttyLinux和PuppyLinux,大到Ubuntu和麒麟系统。无数次的安装调试系统,尝试各种Linux系统,包括解决虚拟机读取SD卡的问题,最终还是用了大Ubuntu系统来解决。插上SD卡后,Ubuntu就立马显示出两块磁盘。然后迅速找到文件系统的那个分区,进入到/etc/wpa_supplicant/目录,发现竟然没有wpa_supplicant文件?后来才知道,文件是存在的,但是不显示出来,即使能看到也不能编辑。然后又各种搜索如何编辑这个文件的方法,结果大家都只是说说,还像那么回事一样的直接写用sudo nado /etc/wpa_supplicant/wpa_supplicant.conf来编辑,实际上完全不可行。绝望至此。

然后突然看到网上StackOverflow还是QuoRa上有人回答这个问题,说新版的系统可以这样写:

network={
    ssid=”你的Wifi名称,注意大小写”
    psk=”你的Wifi密码”
}

然后将这个文件放置在一般人可以访问的boot分区上,然后系统启动后会自动抓取、替换到主系统中。然后我很欢心的就去试了试,结果以失败告终。

再次绝望之后,我失落的拿起一根很长的网线,不情愿的走到路由器,插上水晶头。虽然很成功的访问到了网络,可是就这么的不甘心。

然后我在正常系统访问后,好奇的在主系统中访问到了/etc/wpa_supplicant/wpa_supplicant.conf这个文件,发现文件内容不光是网上问答所说的那两句,顶部还有几句简单的声明。

于是我的好奇心重燃,拔掉网线,再次重新安装系统,将错误都清零,然后在boot分区的根目录放置的wpa_supplicant.conf中加入该有的这几句话。

启动系统

哒哒!完成!

实在太兴奋了,所以才写到此篇与大家分享。

有时候技术宅就是能从这些小事上获得极大的成就感,这也就是他们自己不觉得枯燥的原因吧。

作者/solomonxie

转载自简书

END

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

MAKER:pgrecian/ 译:趣无尽

树莓派功耗低,可以用手机用的充电宝来提供电能。一直想用充电宝给树莓派供电来实现类似UPS(不间断电源)的功能,让树莓派上运行的程序不间断运行,避免异常掉电也能很好地保护SD卡。

可偏偏市面上支持边充电边放电的移动电源方案很贵,而且比较难找。

查阅了一些资料也表明即便有的移动电源支持边冲电边放电,但会大量发热不仅不够安全,而且这么用还会严重缩短电源寿命。

因此,需要设计一个方案,低成本、安全可靠的实现上述功能。

下面这款自制的UPS(不间断电源)从主电源上拔下时可为树莓派供电,直到再次插入时进入充电状态,并能在充电的同时持续为树莓派供电。

这样你的树莓派就可以实现永不断电啦~

树莓派UPS:用充电宝改造的不间断电源

巧妙地用两个普通的小型的移动电源进行一番改装,就可以达成目标!(注意,通电测试前请务必确认好连线正确,注意安全)

材料清单

移动电源×2
5cm的绝缘电线×2
绝缘胶带(或收缩包装管)×1
金属撬具×1
小刀×1
烙铁×1
焊料×若干

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

 

拆开电源外壳并拆除电源电路

1、选择一块移动电源,将电池壳撬开。里面是锂电池和电路。

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

2、小心地将电源和电路板取出。

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

这个电池将作为备用电池。为下一个步骤做好准备。

 

电路原理说明

树莓派UPS:用充电宝改造的不间断电源

本项目电路采用的是降压-升压转换器。它可以将电池的电压从3.8V升压到5V给USB接口供电,或从micro USB接口取5V电压,并将其降低到电池充电所需的电压。这是降压的转换。

它不能同时做到这两点。但如果你有两个就可以!
我们要将两个电路连接到电池上,一个用于输入,另一个用于输出。

使用收缩管或胶带进行连接

树莓派UPS:用充电宝改造的不间断电源

a.如果你使用的是收缩管,请让其连接到电路的电线上。
b.如果你使用的是胶带,可以稍后再添加。

目的是为了防止电线的末端的接触和电池的短路。只将电路放回盒子里,电池稍后使用。

将所有部件组装到一起

树莓派UPS:用充电宝改造的不间断电源

1、如图所示,将橙色延长线焊接到红线连接电路的位置,同时将黑色延长线焊接到黑线连接到电路的位置。

这是该项目中最难的部分,务必提醒一下的是将焊料放在延长线末端,使用烙铁将它和电路线连接到电路板上。

你也可以将电池拿出来并直接连接上去,更方便焊接。

2、将每根延长线的一端焊接到从电池上拆下的电路上。

树莓派UPS:用充电宝改造的不间断电源

树莓派UPS:用充电宝改造的不间断电源

如图所示,将橙色延长线焊接到红色电路线并将黑色延伸线焊接到黑色电路线。

 

3、使用收缩管与将两个线头接上,也可以使用胶带或热胶将裸露出来的金属绝缘。

树莓派UPS:用充电宝改造的不间断电源

我发现那个不带电池的橙色电池盒的电路太松了。

我连接了两个USB引线,一个连接到输出(标准USB),另一个连接到输入(micro USB)并将电路粘贴到合适的位置。我使用一团卷起来的纸让位置更合适。

 

4、最后用胶带将两个移动电源粘合在一起,这个项目就完成了。

树莓派UPS:用充电宝改造的不间断电源

你可以任意使用里面的一块作为输入或输出,但每块只能使用一个功能。

 

有朋友或许认为当电池充满电时充电必须停止,否则依然不安全。 第二个转换器从电池吸收电流,而第一个转换器不停止充电可能产生危险。

应该需要像 MOSFET 这样的结构将负载的电量从电池切换到5V输入,而不是另外的转换器。

但作者认为这个项目还是很安全的。

当电池充电的电路检测到电池电压足够高时会停止充电,你也可以尝试使用 MOSFET 来代替第二电路,这样效率更高。 :)

欢迎各位探讨指教~

via instructables.com/id/3-UPS-for-Raspberry-Pi