可以挂在墙上的树莓派谷歌日历

最近我购买了人生中第一个所房子。在厨房里有一个挂在墙上的小电视,但是这个电视出故障了,所以我在想我到底该拿这个墙上挂勾干点什么呢?因为其实我不太想在厨房挂一个电视。然后我突然灵机一动,与其挂一个纸质的带写字板的日历,不如把谷歌日历挂在墙上吧。

通过这个教程,你应该能对家庭网络和计算有一个大概了解,如果以前有过linux经验那太好了,不过这不是必须的。如果你遇到了什么不懂的问题,记得谷歌搜索是你的好朋友。

你需要的装备:

家庭网络(如果你不想在小派上接根线,用无线的吧)

树莓派(我用的是Model B型)

2GB或更大的SD卡

电源

Micro USB数据线

USB键盘鼠标

USB无线网卡

HDMI线

可挂在墙上的HDMI或HDMI转接的电子显示屏

显示屏的挂钩

*我不能为你展示如何把显示屏挂在墙上因为它们已经挂在我的墙上啦*

步骤1:设置树莓派

首先我们来设置树莓派,你得先安装好Raspbian。你可以买一个预装了Raspbian的小派或者你也可以使用手头现有的2GB或者更大的SD卡。

我使用了一张手头现有的SD卡。把SD卡插入你的电脑,并且从这里下载最新的Raspbian。

因为我用的是Windows所以我把映像文件解压出来并且使用了win32diskimager来把映象写入SD卡中。

如果你还不是很明白,这有一篇教程。

好了,现在我们已经装好Raspbian,是时候开动你的小派了,插上你的SD卡,无线网卡,USB键盘,网线连接到路由上,HDMI连上你的显示器,最后再把micro USB插到电源接口上。第一次启动你会看到一个配置界面。

你需要进行以下更改:

Expand the filesystem 这样Raspbian就可以利用整张SD卡了

Change User Password 更改你的密码

Enable boot to desktop 启动到桌面环境

Internationalisation Options 设置你的语言,区域和时区

接着是advanced options(高级选项)

改变Hostname(主机名)使你能够在网络你认出你的小派

Enable SSH(开启SSH)使你能够使用网络里的计算机访问到小派

选择Finish将会重启你的小派

步骤2:键盘和更新

如果你在美国或者像我一样在澳大利亚你可能会想把键盘布局改成US。

你可以通过在终端输入下面的命令做到这一点:

sudo nano /etc/default/keyboard

使用方向键移动光标然后把gb变成us。

然后按一下Ctrl+X再按一下Y来保存。

现在来更新一下你的小派,通过下面的命令:

sudo apt-get update sudo apt-get upgrade

按一下y在按一下回车来下载更新(这将会花费很久很久的时间,所以来杯咖啡/啤酒吧)。

步骤3:无线网络设置

如果你只想用网线连接可以跳过这一步。

如果你想使你的无线网卡工作你可能要更改wpa_supplicant.conf(可以直接购买免驱的无线网卡,就不用这么麻烦的配置了,译者注),输入下面的命令:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

编辑它到下面这样:

ctrl_interface=/var/run/wpa_supplicant network={ proto=RSN scan_ssid=1 key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP ssid=”your network ID in quote marks” psk=”your network password in quote marks” } update_config=1

还是通过Ctrl+X然后Y来保存。

然后通过下面的命令重启小派:

sudo reboot

你可以通过下面的命令来查看无线网卡是否获得了一个ip

sudo ifconfig

你将会看到像下面这样的信息:

wlan0 Link encap:Ethernet HWaddr 64:66:b3:06:43:1b inet addr:10.0.0.75 Bcast:10.0.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:912384 errors:0 dropped:121692 overruns:0 frame:0 TX packets:706463 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:694114055 (661.9 MiB) TX bytes:71017681 (67.7 MiB)

步骤4:Iceweasel

(Iceweasel是一个网络浏览器,是Mozilla Firefox浏览器的Debian再发布版,译注)

现在我们来安装一个用来展示谷歌日历的浏览器。Iceweasel是Mozilla Firefox的再发行版,通过以下命令来安装:

sudo apt-get install iceweasel

输入Y然后回车来完成下载和安装。

一旦安装完成,你会在开始菜单的Internet菜单下找到Iceweasel,打开它我们来进行配置。首先打开你的谷歌日历然后让浏览器记住密码,防止你什么时候不小心注销了。然后把谷歌日历设置为起始页。

现在我们来禁止掉网页恢复房子在掉电或者崩溃之后谷歌日历不显示了,因为那时如果你没有键盘/鼠标连接到树莓派上将会是一件非常讨厌的事情。

在地址栏里输入:

about:config

然后按一下回车。

现在找到”browser.sessionstore.resume_from_crash”这一行然后双击它来把它禁掉。

按一下F11使它全屏然后把你的鼠标移动到屏幕的最顶端,通过点击右上角的叉来关闭一次浏览器。

再打开浏览器时它会打开你的谷歌日历并且是保持全屏的。

我们想让Iceweasel自启动因此要改变启动项:

sudo nano /etc/xdg/lxsession/LXDE/autostart

加入 @iceweasel到列表中

然后按一下Ctrl+X再Y保存改动。

步骤5:光标和节电模式

接下来的步骤是移除恼人的鼠标光标和禁止屏幕进入节电/睡眠模式。

首先我们来安装Unclutter来使鼠标光标在不用带时候隐藏。

sudo apt-get install unclutter

现在我们来编辑/etc/lightdm/lightdm.conf文件来禁止节电/睡眠模式。

sudo nano /etc/lightdm/lightdm.conf

移动到[SeatDefaults]下面

把这一行:

#xserver-command=X

改成:

xserver-command=X -s 0 –dpms

然后按Ctrl+X然后Y保存改动。

步骤6:你已经做完啦:D

现在你可以把它挂在墙上然后开动啦。

如果什么地方不工作了你可以直接断电然后再接上它,它就像变戏法一样的恢复了。

不巧我的空余HDMI显示器没有可以用来挂在墙上的洞。

我决定用一个老的VGA显示器,现在就等HDMI转VGA转接线了。

打造太阳能供电的树莓派FTP服务器

做一个太阳能供电的FTP服务器,只要有网络连接,你就能随时访问自己的数据文件,还不用为服务器支付任何电费,是不是很酷呢?

订购太阳板

我们将会使用一个玩家自制的25英镑的树莓派盒子,它拥有适合的插槽来放置你的输出接口,并且带有一个小太阳能板,一个电池盒和一个micro-USB电缆。你仅仅只需要提供4节镍氢充电电池就行了。

用你的浏览器看向这里 —— 你将找到通过PayPal下订单的所有信息。卖家Cottonpickers也把商品放在了eBay上,如果你更喜欢这种购买方式的话。

设置静态IP地址

一旦从快递员手中接过你的包裹,把你的小派插上去并且为它接上电源和显示器。让我们开始编程吧。第一步是确保你的小派有一个静态的IP地址,因为我们需要在网络防火墙上添加例外来允许到来的FTP请求。 在小派的桌面,双击“LX Terminal”图标进入终端。敲入如下命令设置静态IP地址:

sudo nano /etc/network/interfaces

这个文件控制了树莓派的IP地址。你需要做的是稍微向下滚动到“iface eth0”一行把“DHCP”改成“static”。现在,在这一行的下方,为你的小派键入一个IP地址,还有子网掩码和网关。它看起来像这样,但是会根据你的家庭网络而不同。

address 192.168.1.93 netmask 255.255.255.0 gateway 192.168.1.254

假如你还不知道这些东西,那你可以通过你的路由器说明书找到你的IP地址和路由设置,或者通过在小派的终端里输入: ifconfig -a。这个命令会列出当前的IP地址,路由器DHCP配置的子网掩码和网关。接下来你该做的就是把这个IP地址敲到文件的“static”区域确保你的小派不会在重启之后有了一个不同的IP。 当你做完了这些事情,按一下Ctrl+X退出,再按一下“Y”保存改动,再按几次回车回到命令行。现在输入:

sudo /etc/init.d/networking stop sudo /etc/init.d/networking start

这将会重启网络组件并且使用刚才保存的IP地址。

VNC

在终端输入以下命令,在每一行之后按一下回车。

sudo apt-get update sudo apt-get install vnc-server vncserver

当软件包下载并安装好之后,会提示你设置一个密码,重复一遍并且在出现view-only选项的时候选择“No”。 现在VNC已经装好了,我们需要确保它作为一个系统服务在每次小派重启的时候自动加载。通过下面的命令来实现:

sudo nano /etc/init.d/tightvncserver

按一下回车,在打开的编辑器里,输入如下代码:

#!/bin/sh # /etc/init.d/tightvncserver # Set the VNCUSER variable to the name of the user to start tightvncserver under VNCUSER=’pi’ case “$1” in start) su $VNCUSER -c ‘/usr/bin/tightvncserver :1’ echo “Starting TightVNC server for $VNCUSER ” ;; stop) pkill Xtightvnc echo “Tightvncserver stopped” ;; *) echo “Usage: /etc/init.d/tightvncserver {start|stop}” exit 1 ;; esac exit 0

现在按一下“Ctrl+X”然后“Y”保存,再按几次回车回到命令行。现在我们要做的是修改我们刚才创建的脚本权限让它可以执行,键入以下命令:

sudo chmod 755 /etc/init.d/tightvncserver

按一下回车。最后,我们需要把它加到启动脚本里,键入以下命令:

update-rc.d tightvncserver defaults

现在你能做的是拔下显示器并且把你的小派放到有网线的地方,并且阳光充足(为太阳板充电)。如果你安装了类似TightVNC Viewer的工具你可以通过“192.168.1.93:1”(换成你自己的静态IP地址)以图形界面的方式访问到你的小派了。

VSFTPD

接下来就是配置FTP服务器的部分了。同样的,这也不是很困难,也可以在将来按照你自己喜好配置。在终端键入以下命令:

sudo apt-get install vsftpd

当VSFTPD(代表Very Secure FTP Deamon)软件包下载安装完成,键入:

sudo nano /etc/vsftpd.conf

这是控制VSFTPD的配置文件,它允许你设置所有类型的限制和策略,所以建议配置的时候要十分小心。为了使它运行,我们推荐改动下面的几行,每行一条,输入“YES”或“NO”:

Anonymous_enable=NO Write_enable=YES Local_enable=YES Ascii_upload_enable=YES Ascii_download_enable=YES

关于每条配置项的解释你可以通过它的注释看到,这里我们就不多说了。当你配置完成,像之前一样保存退出。 最后,通过重启小派来使得你所做的所有工作生效。你可以通过以下命令重启它:

sudo reboot

通过FTP访问外接硬盘

我们喜欢把事情变得简单,因此我们访问外接硬盘的方法是把一个硬盘接到小派的USB口上并且通过FTP客户端来访问。 首先,你可以把硬盘接到电脑的USB口上并把它格式化成NTFS格式,卷标写上FTP。完成之后,把它接到小派上并且通过VNC在文件管理器里访问它,需要点一下“Yes”。 记下你的硬盘的路径 ——我这里是/media/FTP。为了测试FTP访问,你需要装一个FTP客户端,例如FileZilla,并且在连接地址里输入: 192.168.1.93/media/FTP (把IP地址换成你自己的) Username: pi (换成你在配置VSFTPD时的用户名,默认是pi) Password:raspberry (如果用户名不是pi的话,请换成你自己设置的密码) 幸运的话,你现在已经能够在你自己内部的网络里访问到你的外接硬盘了。

外部访问

这个工程的最后部分涉及到从外部FTP访问到树莓派。这也是最说不清楚的一步,因为它根据你的路由器型号的不同而不同。例如,在basic BT model里,我只用在预定义好的应用里勾选FTP外部访问就行了,并且把它指向内网的树莓派地址。 而你的可能完全不同。但是,为了完成这一步你应该看看你的路由器说明书,或者Google一下你的路由模块看它是否有FTP外部访问教程。

用树莓派打造一个带WIFI的数码照相机

这个项目使用了Adafruit PiTFT触摸屏和树莓派摄像头模块来制作一个一按即拍的数码相机。你也可以选择性的加入WiFi和Dropbox(一个云存储同步服务)来自动的把拍摄的照片传到另一台电脑上以供编辑。

它不是要代替你的数码相机(甚至是手机的摄像头)。它只是一个简单的学习锻炼的产物而不是精美的消费品。但因为它是开源的,你可以给它定制一些普通相机做不到的功能。

你需要的东西

因为有以太网口和两个USB接口,Model B更容易安装。而Model A更省钱更省电…但是只有一个USB接口并且没有以太网口,它需要你花更多的力气来让所有软件加载起来。

下面是可选部分:

WiFi适配器,它使你能够把照片上传到Dropbox上(需要账户,免费的)。

移动电源,它使整个相机变成可携带的。如果使用WiFi和/或Model B型树莓派,你需要一个可以提供1A电流的强劲移动电源(有些最大输出只有500mA)。

某些情况下一个USB转TTL串口线是访问和配置树莓派更好的选择,如果你没有备用的键盘和显示器。

一些所需的额外组件,工具和技术:烙铁和焊锡用于把头部与PiTFT屏焊接到一起;一些把组件组装到一起的方法–从简单的使用橡皮筋,到一个钻孔的电子元件板,再到精心设计的3D打印外壳。这一切都取决于你手边可用的资源。浏览一下看看这个项目需要哪些东西,然后根据你自己的情况想出解决办法把。 另一种树莓派一按即拍的相机! James Wolf在原始的外壳(除了电池)里制作了一个树莓派一按即拍相机。他自己做了一块板子来集成所需的线缆,带有电阻和按钮 ,拍摄的图片和Python文件链接可以在他的网站上找到。

树莓派设置

为了确保所有相互依赖的软件正常工作,最简单的方法是从一个干净的系统开始。 格式化4GB或者更大容量的SD卡(也可以用带转接卡的microSD)并且写入2013-09-25版本的Raspbian Wheezy操作系统。这篇教程介绍了如何为树莓派准备一张SD卡。 最重要的一点是使用2013-09-25版本的Raspbian,而不是之后的2013-12-20版本。虽然最新版本总是那么的诱人,但是TFT屏还不能在之后的版本上完全正常工作。修复工作正在进行中,这个问题可能会在后续的发布中得到解决。 点击这里下载2013-09-25版本Raspbian 接上显示器和键盘(或者USB转串口线),用手机的USB充电器或者有源的usb hub为树莓派供电,然后进行第一次启动配置。 以下选项是必须的:

Expand Filesystem

Enable Camera

以下选项非常有用推荐设置:

在Internationalization Options更改Change Timezone和Change Keyboard Layout为与你相对应的区域。

以下配置是可选的:

在Advanced Option,选择Hostname来为树莓派指定一个唯一的名字(比如”picam”)来与网络内的其他树莓派区别开。

在Advanced Option,选择SSH来打开远程命令行访问(对日后的配置和查找问题很有帮助)。

其他你喜好的配置

不应该使用下列选项:

Overclock.这是一个便携式,电池供电的项目并且超频更费电。超频的系统很有可能烧坏SD卡。不要打开这个选项。

一旦基础配置完成,你可以配置无线网络如果你打算用它的话。可以参考这篇教程。 一旦所有配置完成,下一步设置PiTFT。

至少完成Assembly,Software Installation, Touchscreen Install & Calibrate 和 Using the Console pages几步。其余的部分(例如播放视频,加入关机键)对于这个项目来说没那么重要,但你可以根据自己的喜好完成。一旦你启动树莓派并且在2.8存TFT屏上看到了登录提示信息,你就离成功不远啦。 同样的,PiTFT可选的实体按键对这个项目来说也不是必须的。你可以为其他的功能安装它,但是相机的软件是完全基于触摸屏的。

获取相机的软件只需要额外的几步… 首先,为树莓派相机安装Python库:

sudo apt-get install pip python-pip sudo pip install picamera==0.8

(使用0.8版本非常重要,而不是更新的1.0版本。在新版本上我们使用的功能还有一点点不稳定。一旦状况改变,我们会发布一个修订版本修正这个问题。) 然后获取Python相机应用:

wget https://github.com/adafruit/adafruit-pi-cam/archive/master.zip unzip master.zip

最后,我们来试一下吧。软件必须以root身份运行(通过sudo命令)来在TFT屏上显示:

cd adafruit-pi-cam-master sudo python cam.py

如果一切正常,几秒钟的初始化之后,你应该能在屏幕上看到一个取景窗以及两个按钮。 如果没有,那应该有一个错误信息指导你排除错误:缺少类库或者驱动等。这也是为什么我们推荐先完成TFT教程部分。 如果我们想用Dropbox,还有一些工作要做,所以现在退出相机应用吧。按一下齿轮图标(设置),再按左箭头,最后是确认按钮。你现在应该回到命令行了。

专用模式

如果你喜欢把树莓派调成相机专用模式,可以从让命令行输出到PiTFT(请参考PiTFT教程)开始并且为开关电源分配一个额外的电源键,这样你就可以轻松安全的关闭树莓派而不用登录或连接键盘了。 一旦这些都完成了,通过编辑/etc/rc.local加入下面exit 0之前的代码来使树莓派一启动就进入相机软件。

再次重启的时候你

会看到命令行字符然后直接打开了picam软件。要关机的话,可以使用刚才分配的按键来切换。

Dropbox配置

Dropbox是一个”云”文件存储和同步服务。一个基础账户是免费的并且提供2G存储空间。我们可以利用它把树莓派里的相机导出到其他设备上(例如你的桌面电脑等)而不需要数据线或者替换存储卡。 这就需要WiFi链接了;试想一下一个连接着网线的相机是多么令人讨厌啊。它也需要在你的无线网络范围内,并给你的树莓派合适的访问设置。 下面的在RasPi.TV上的教程介绍了如何在树莓派上配置Dropbox使它们能一起工作。

步骤包括:

创建一个Dropbox账户如果你还没有。

在树莓派上下载和配置Dropbox Uploader(通过命令行完成)

创建Dropbox应用并得到访问认证

下面是一些我在Dropbox开发者网站为相机创建新app时的配置:

额外的一步:

通过在树莓派上上传一个文件(什么都行)来测试Dropbox Uploader程序。

如果工作正常,下次你运行cam.py脚本时你就可以进入Settings并且选择Dropbox作为存储介质。以后的照片将会保存在”Photos”文件夹里并且上传到Dropbox上。

使用相机

你可能已经在测试时看到了相机的界面。现在我们来更详细的介绍下它是如何工作的还有哪些选项是可用的。 启动之后,相机程序会显示一个取景窗和两个按钮。屏幕的主要部分本身是一个快门“按扭” — 按一下它来拍照。 在屏幕的底部有2个按钮。左边的(一个小齿轮图标)将会呈现很多设置。右边的按钮(带有”Play”标志)使你能够浏览之前拍摄的照片(如果你什么都没拍,相机会提示你是”empty”的)。

Settings菜单提供了很多相机的设置。这没有列出所有的树莓派相机功能,只有几个让你快速上手的必备选项。 通过屏幕顶部的左/右箭头在选项之间切换:

Storage屏有3个不同的选项,每一个的优缺点如下:

Photos Folder :图片将存储到树莓派你的home目录里的”Photos”文件夹下(如果不存在将被创建)。树莓派上的其他程序可以很容易的访问到他们,但是在别的电脑上访问这一分区就不那么容易了。

:图片将存储到树莓派你的home目录里的”Photos”文件夹下(如果不存在将被创建)。树莓派上的其他程序可以很容易的访问到他们,但是在别的电脑上访问这一分区就不那么容易了。 Boot Parition :图片将会存储到boot分区的”/boot/DCIM/CANON999″目录下。当SD卡插入到其他电脑上,它将类似于一个数码相机的存储卡并且自动导入照片,取决于你的系统设置。缺点是boot分区的空间非常有限。你可能只能存储十几张照片。

:图片将会存储到boot分区的”/boot/DCIM/CANON999″目录下。当SD卡插入到其他电脑上,它将类似于一个数码相机的存储卡并且自动导入照片,取决于你的系统设置。缺点是boot分区的空间非常有限。你可能只能存储十几张照片。 Dropbox:正如前面讨论的,图片将会存储到Photos文件夹下并且上传到Dropbox(如果WiFi已经连接并且配置好了Dropbox)。

Size屏可以选择3种尺寸:

Large (2592×1944,4:3比例):这是树莓派相机所支持的最大的尺寸(500w像素)。实际拍摄的要远大于取景窗里的显示。

(2592×1944,4:3比例):这是树莓派相机所支持的最大的尺寸(500w像素)。实际拍摄的要远大于取景窗里的显示。 Medium (1920×1080,16:9比例):HD分辨率,宽屏,200w像素。

(1920×1080,16:9比例):HD分辨率,宽屏,200w像素。 Small (1440×1080,4:3比例):150w像素。

后两种模式应该能够在取景窗显示实际拍摄的照片范围,但是实际上不是这样(相机类库的文档有些和实际情况不一致)。这个问题还在解决当中。

Effect屏是所有乐趣发生的地方。这里有16种不同的艺术特效可以应用到照片上(算上”normal”,就是没有特效)。把你的照片弄得看起来像幅油画,或者铅笔素描,或者是奇奇怪怪的颜色!这些效果都是可以实时预览的。

ISO屏调整相机的光感度。这你得自己权衡…高感光度在光线暗的情况下效果更好,但是图像会有很多噪点。ISO没有实时预览,只会在拍照的时候起效。

最后一屏是退出相机程序选项,回到命令行。按一下红色的按钮退出,按箭头移到其他设置,或者按Done按钮取消。

“Done”按钮会返回取景模式。 所有的设置将会被保存,下次运行脚本的时候所有的设置会生效。

接下来的事情…

这仅仅只是次尝试,接下来要做什么取决于你自己…

摄像头模块可以换成红外版本

cam.py里的图标和按钮非常简陋,但是对于你自己的触屏程序(不管是拍照相关的还是别的)来说足够了。

相机代码可以被扩展去做别的事情。这有很多我们没有提及的相机设置。可以添加其他的功能例如自拍,定时器或运动检测。或者录制视频。

看看这个令人尴尬的组装,它用的是橡皮筋!也许一个合适的外壳更好…如果你能用到激光切割或者3D打印的那最好不过了。

盒子的尺寸可以考虑缩减;在PiTFT和树莓派之间有很大的空间(即使是使用Model A的板子)。更高级的玩家可以考虑压缩电池和5V变压器尺寸,连接到TFT板子右边头部突出部分来代替USB电源连接。结果将是与现存的消费级数码相机大小相似。

打造一台树莓派一体机

这是一个基于树莓派的一体机项目。项目的目标是以最少的线缆建造一个基于树莓派的计算机系统。我想我已经成功了。注意到有一根电源线从框架伸向左边,它是这个系统唯一一根吊在外面的线缆。

这个项目受到了最近两件事的启发。一个是我的办公室换了新地毯。所有的东西需要被挪出去再搬回来。我的办公室有4台电脑。即使使用了KVM交换机我只需要一套显示器,鼠标和键盘,我还是需要处理那一堆噩梦般相互纠缠在一起的电线。另一个是我家里电脑上的UPS系统挂掉了应该换一台新的。然后,这又有一大堆缠的乱七八糟的线要处理(我家里的电脑数量比我工作的地方还要多)。总之,我已经受够这些电线们了。我倒是想看看我到底能不能做出一台只需要一根电源线而不再有其他线缆的电脑。我也想看看我能不能给我的树莓派找个更好的地方安家而不是让它躺在我的桌子上像个病人一样插满了各种电线。然后,我就想到了这个点子。

下面是所需的东西:

model B型树莓派

树莓派外壳(我的是Adafruit产的)

USB无线网卡

HDMI转VGA转接头

内置USB hub的纯平显示器(内置扬声器更好啦)

USB供电立体声扬声器(如果显示器内置就不需要了)

无线键盘鼠标

USB A转USB B短线*

USB A转micro USB短线*

VGA视频短线*

魔术搭扣

理线带

#现在我手头已经有HDMI转VGA转换头了。你也可以用HDMI转DVI转换头如果使用DVI输入。

*代表8-12英寸长。你可以在网上的很多地方找到这么短的线缆。我是在Ebay上买到的。短线不是绝对需要的,但是我实在不想看到那些丑陋的线缆在显示器后面缠了一圈又一圈。

下图是一张我最开始体验树莓派电脑时拍的照片。我在一张8G的SD卡上烧入了”wheezy”系统并且开始体验树莓派能做些什么。它由一个树莓派,一个塑料外壳,一个有源USB hub,一个HDMI转VGA转换头,一个偶尔使用的1TB USB硬盘,一个无线网卡和一大堆线缆组成。这里树莓派和USB hub都需要供电。树莓派和Hub使用3V的USB线相连。从KVM交换机伸出的线缆一根连着从HDMI转过来的VGA接口,另一根连着USB hub。无线网卡插在树莓派的另一个USB口上。

这是个正常工作的系统,但是不够整洁。事实上,这些乱七八糟的线好几次从桌上滑到了地上。我必须把它们收拾整齐。这有点困难,需要把它们缩短短塞到一个大盒子里。一定会有更好的办法。所以我决定做一个树莓派一体机。

下面是一张一体机的背面图。这一切都得归功于那个内置有源USB hub的显示器。它极大的简化了项目并使它变得整齐,也减少了两根电源线。这个显示器有4个USB口,这对于一个基本系统的运行来说已经足够了,并且空出了一个来插别的设备。两个底部的和一个侧面的USB口都被占了,留下了另外一边的USB口来插别的设备。如果这个显示器带HDMI输入和内置扬声器那就更好了。算了,我的显示器已经是这样了,有时候不花钱的东西才是一个项目最好的部分。

我还是需要买一些东西。下面是一张我购买的特别短的线缆照片,它们使得这个项目更整洁。我想要把长线缆的数量压缩到最小使得他们不会在显示器后面缠一圈又一圈。最上面是USB A转USB B线,下面的是VGA短线,最鲜明的是USB A转micro USB短线。我在eBay上买到了它们,并且很便宜。亚马逊上也有卖的。

魔术搭扣把带外壳的树莓派固定在显示器后面。USB A转USB B短线链接了树莓派和显示器的USB hub。Micro USB线插入树莓派的供电接口然后另一端插入了显示器底部的一个USB口中。无线网卡插入树莓派上另一个USB口中。扬声器的音频线接到了树莓派的音频输出上。音频线长出来的部分用理线带绑好并固定到显示器的后面。

HDMI转VGA转换头接到树莓派上然后用几个魔术搭扣固定在显示器背部。VGA短线连接显示器和转换头的另一端。

USB供电的扬声器也使用了许多强力的魔术搭扣固定在了显示器底部。我想使它们保持在固定位置这样我就不用见到那一堆错综复杂的线缆了。扬声器的电源线接到了显示器底部剩余的USB口上。音频线接到树莓派的音频输出上。长出来的部分用理线带绑好粘到显示器背面。这是我处理长出来的线的一种方法。如果更极端一些,我会使用烙铁来缩短线的长度。

我买了一个便宜的无线键鼠套装,这样又减少了两根线。我在当地的一个”大盒子”式的商店仅仅花了25美元就买到了它们。

键盘鼠标的蓝牙适配器插到了显示器侧面的USB口上。侧面剩下的一个USB口可以用来插其他USB设备例如U盘。

嗯,就是这样了。这比我刚开始那一团糟整洁多啦。仅仅只有一根电源线,没有纠缠的线团。显示器的开关键控制了整个系统的开关。这使得在树莓派上工作和实验更方便一些。它也非常容易搬运。我可以把它从我的家庭办公室里搬到我的卧室,搬到我的工作地点,或者其他我想尝试的新地方。

请保持关注,未来将会有更多的树莓派项目的。

用树莓派搭建Git私有服务器

话说当年linux内核开发者林纳斯·托瓦兹(Linus Torvalds)为了更好的管理Linux内核开发创下git以来,时至今日,当下最流行的『版本管理系统』已非git莫属了! 笔者私下认为,git相比其他的版本管理系统(csv, svn等)来,最大的方便莫过于分支(branch)的操作十分便捷,但项目开发分支如何管理,萝卜白菜各有所爱,见仁见智。笔者因工作需要,经常要参与国际化团队的协作开发,git乃是必不可缺之利器之一。

最近我利用树莓派为我所有的Git仓库创建了一个Git私有服务器。我花费了一些时间来使每件事情正确工作,但现在它已经能跑起来了。

安装Git

首先你需要在树莓派上安装Git.

sudo apt-get install wget git-core

这将会安装Git服务器和必要的客户端软件。

安装SSH

如果你还没有安装SSH,通过以下命令安装它:

sudo apt-get install ssh

通过以下命令启动它:

sudo /etc/init.d/ssh start

现在ssh已经运行起来了,但是一旦你重启树莓派,你还需要重新执行一遍上面命令。你可以通过执行一次下面的命令来解决这个问题:

sudo update-rc.d ssh defaults

当你重启树莓派,SSH应该能够自动启动了。你可以看看能不能通过SSH连接到树莓派,在你的Windows机器上使用Putty(Mac用户需要寻找替代的SSH客户端)。

在HostName文本框里输入树莓派的IP地址。通过以下命令找到你的树莓派IP:

/sbin/ifconfig

找到inet addr:后面的就是IP。

改变主机名

这步不是必须的,但是我强烈推荐如果你正在,计划使用多台树莓派设备。

sudo leafpad /etc/hostname

输入你想要的主机名,然后保存文件。我的主机名是”gitpi”。

接着,输入下面的命令:

sudo leafpad /etc/hosts

替换所有”raspberrypi”为你上一步输入的新主机名。然后,重启你的树莓派。

添加一个”Git”用户和组

接着我们来创建一个”Git”用户和用户组。注意/home/git是这个例子里我使用的文件夹。如果你想使用别的路径,替换下面命令里的”/home/git”。

adduser –system –shell /bin/bash –gecos ‘git version control by pi’ –group –home /home/git git

接着是更改密码:

passwd git

你的”git”用户现在有了一个新密码。现在尝试切换用户,你将会看到现在的终端提示用户名和主机为”git@gitpi”。你可以通过下面的命令切换用户:

su git

增加一个空的Git仓库(Git Repository)

我们现在来增加一个空的Git仓库.

首先更改目录到你存储git的路径下。

cd /home/git

为你的仓库创建一个文件夹,并移动进去,然后初始化并清空仓库。

注意我现在使用的是”git”用户。这个用户具有/home/git目录的控制权。

mkdir test.git cd test.git git –bare init

Push你的代码到Pi上

最终,我们会把代码push到树莓派上。首先,更改路径到你之前初始化的git仓库(或初始化一个新的)。

加入一个新的远程主机(*你的IP地址没有中括号)

git remote add pi git@[your IP]:/home/git/test.git

现在你要做的就是add你的代码,commit然后push。

git add . git commit -am “Initial” git push pi master

如果你得到了一个类似这样的消息”authenticity of host …”只需要输入”yes”然后继续就可以了。

理想情况下,如果一切正常,你的Git仓库已经搭建在你的树莓派上了。

如果你想要测试一下,试着clone你的仓库到你的Windows机器上。首先更改路径到你希望存储clone的地方(一个空文件夹),然后通过命令行(或git bash),运行:

git clone git@[your IP]:/home/git/test.git

基于Raspberry Pi的短信网关设计

口味

通过 Raspberry Pi 配合无线网卡的短信收发功能,实现短信自动收、发功能。并且能够存储短信,并将短信转发到饭否等微博平台(或者直接发email)。

用料

食材:

Raspberry Pi 一块 支持短信功能的 3G 网卡一条(本例采用华为 E173,可根据季节、个人偏好选择其他的,但不保证一定能用) SIM 卡若干 USB 无线网卡(可选)

佐料:

Debian 炊具 Gammu 软件 MySQL 数据库

步骤

配置硬件:将 3G 网卡插入 USB 口,使用 lsusb 命令可以看到当前 USB 口的设备信息。 ls /dev/ttyUSB* 命令可以看到有 ttyUSB0 ttyUSB1 ttyUSB2 三个设备。 安装软件:使用 sudo apt-get install gammu ,安装 gammu,该工具用以发送接受短信等操作。 配置 gammu : gammu-config ,配置每一项内容。我的配置: Port: /dev/ttyUSB2 (这个不行就换个试试) Connection: at19200 Model: 空 Synchronize times: yes Log file: 空 Log format: nothing Use locking: 空 Gammu localisation: 空 保存后,测试是否成功: sudo gammu –identify 这里会输出设备和 SMS 卡的基本信息。说明成功了。 可以尝试用 echo “test” | sudo gammu sendsms TEXT 186XXXXXXXX 来测试发消息,这里只能发英文,因为没设置编码(后面会讲到)。 现在基本的短信发送功能实现了。开始配置smsd(sms deamon)以实现自动接受短信功能。 sudo apt-get install gammu-smsd 安装 gammu-smsd,然后编辑 sudo vim /etc/gammu-smsdrc 。下面是我的配置文件,可以供参考。配置文件一目了然,就不仔细介绍了。需要说明的一点是:这里后端存储短信使用的是 MySQL 数据库,还可以使用文本等等(自己去看文档)。所以需要建立表:http://wammu.eu/docs/manual/smsd/mysql.html RTFM 看文档。 # Gammu library configuration, see gammurc(5) [gammu] # Please configure this! port = /dev/ttyUSB2 connection = at # Debugging #logformat = textall # SMSD configuration, see gammu-smsdrc(5) [smsd] RunOnReceive = /home/pi/smsutil.py service = sql driver = native_mysql logfile = /var/log/gammu-smsd host = localhost pc = localhost user = root password = chungechunyemen database = smsd # Increase for debugging information debuglevel = 0 ReceiveFrequency = 60 PIN = 1234 启动 gammu-smsd: gammu-smsd –config /etc/gammu-smsdrc –pid /var/run/gammu-smsd.pid –daemon –user gammu –group gammu 到这里应该可以用了。在数据库的 inbox 表中可以看到短信内容等。

使用 Python 发短信

import gammu import sys sm = gammu.StateMachine() # Read ~/.gammurc sm.ReadConfig() try: sm.Init() netinfo = sm.GetNetworkInfo() print ‘Network name: %s’ % netinfo[‘NetworkName’] print ‘Network code: %s’ % netinfo[‘NetworkCode’] print ‘LAC: %s’ % netinfo[‘LAC’] print ‘CID: %s’ % netinfo[‘CID’] # Prepare message data # We tell that we want to use first SMSC number stored in phone phone_number = raw_input(‘Enter Phone Number:

‘).decode(‘utf-8’) message = raw_input(‘Enter text:

‘).decode(‘utf-8’) message = { ‘Text’: message, ‘SMSC’: {‘Location’: 1}, ‘Number’: phone_number, ‘Coding’: ‘Unicode_No_Compression’, } # Actually send the message sm.SendSMS(message) except Exception,e: print e

通过指定 Coding 为 Unicode_No_Compression 可以发送 70 个字符长的 unicode,即可以发送中文了。使用 sudo 执行该代码,按照提示输入手机号和短信即可以发送。

发送到微博

自己弄吧,无非就是申请个 API,然后 OAuth,再通过脚本得到待处理的 MySQL 数据库中的数据进行发送。先不写了,好累。。

参见

via

获取树莓派的CPU和GPU温度(Python)

在这篇文章里我将为你展示如何使用Python做一个简单的程序来监视你的树莓派温度。可能你还不知道,树莓派内置了一个传感器你可以用来获取树莓派的CPU和GPU温度。

这对于保护你的设备非常有用,举个例子:你可以在树莓派温度过高的时候关掉它或者在温度过热的时候报警。

首先,要获取树莓派的温度,你可以用下面的Python小程序:

import commands def get_cpu_temp(): tempFile = open( “/sys/class/thermal/thermal_zone0/temp” ) cpu_temp = tempFile.read() tempFile.close() return float(cpu_temp)/1000 # Uncomment the next line if you want the temp in Fahrenheit #return float(1.8*cpu_temp)+32 def get_gpu_temp(): gpu_temp = commands.getoutput( ‘/opt/vc/bin/vcgencmd measure_temp’ ).replace( ‘temp=’, ” ).replace( ‘\’C’, ” ) return float(gpu_temp) # Uncomment the next line if you want the temp in Fahrenheit # return float(1.8* gpu_temp)+32 def main(): print “CPU temp: “, str(get_cpu_temp()) print “GPU temp: “, str(get_gpu_temp()) if __name__ == ‘__main__’: main()

这里面有两个方法:get_cpu_temp 和 get_gpu_temp。它们俩都返回一个float型的摄氏温度值。(如果你想使用华氏温度,打开里面的两行注释)。现在,让我们把所有信息输出到树莓派LCD屏上吧。

结果是这样的:

原作者已经把完整的Python程序上传到了dropbox上:

https://www.dropbox.com/s/e04v8vnus1hwrm0/rpy_cpu_gpu_temp.py

树莓派批量导入用户和密码

因为最近用树莓派搭建了个samba,大家都知道samba的用户要真实存在系统中的,当有很多用户要创建的时候,并且密码还给你指定了,这个时候只能用shell脚本来处理了。

下面这样的格式,奇数行都是用户名,偶数行都是密码,这个就是我们的用户和密码文件了。

username1 password1 username2 password2 username3 password3 …

vi useradd.sh

编辑shell脚本内容:

#!/bin/bash for name in `awk ‘NR%2==1’ /root/user.txt` do useradd -d /home/${name} -s /bin/bash ${name} done awk ‘NR%2==0’ user.txt >>pass.txt awk ‘NR%2==1’ user.txt >>t.txt awk ‘NR==FNR{a[i]=$0;i++}NR>FNR{print a[j]” “$0;j++}’ t.txt pass.txt >>test.txt sed ‘s/[[:space:]][[:space:]]*/:/g’ test.txt>passwd.txt chpasswd

Qt5 on Wayland for RPi

MCC 172是一个两通道DAQ HAT,用于通过IEPE传感器(如加速度计和麦克风)进行声音和振动测量。它的每个通道具有24位A/D,最大采样率为51.2 kS/s/Ch。

Arduino与树莓派各自有什么优缺点?

因为近两年内有家装的需求,考察了市面上的智能家居方案,要么不靠谱看不上眼,要么价格高得离谱。想着自己原来也搞过一段时间单片机,Linux 靠着 Google 和 StackOverflow 也能解决一些问题。于是开始尝试 Arduino 和 RPi 在家居控制方面的各种实践。总结一些想法给大家作为参考:

RPi 和 Arduino 两个完全不同运算水平的平台。毕竟 RPi 使用的是一颗运行在 700MHZ 的 ARM11 CPU;而常用的 Arduino UNO 则是一颗在工业控制领域常见的 8-bit ATmega328,最高运行频率仅 20MHz。 RPi 可以运行完整的操作系统,如 Debian 等常见 Linux 发行版 – RPi Distributions。这意味着你可以使用你熟练的语言(如 Python、Java)和熟悉的库来进行开发,同时后台运行多个进程也毫无压力。而 Arduino 作为一款真正传统意义上的单片机系统,一次只能运行一个你烧进去的程序,功能也相对单一。 RPi 自带的接口比较全面,USB-host、RJ45、HDMI、SD读卡器等常用接口都有;而 Arduino 比较单纯,与外部设备打交道需要另外采购接口板。 RPi 因为是一个相对完整的「电脑」,其成本肯定比 Arduino 高,目前 B 版在淘宝普遍 280 元左右;而常用的 Arduino UNO 40 元搞定。 RPi 拥有更完整的操作系统,这也意味着每次复电后所需的启动时间很长,而且还不能保证重启后你写的相关服务都能正常启动(Linux 大拿可能会觉得是我技术渣);但 Arduino 因为用途单一,重启速度超快,而且重启结束后立即就在运行你让它做的事。

综合考虑后,我的选择是:

RPi 作为家居中央控制服务器,负责与互联网的通信、采样存储 Arduino 上报的状态数据、处理数据量大的工作(如音频、视频、图片相关)、提供 API 给 iOS 及 Android 以方便用手机控制家居。RPi 与 Arduino 间通过以太网和 Zigbee 进行数据传输。 Arduino 负责家居传感器采样,如光线强度、温度、人体红外感应等。有的模块比较独立,比如人体感应的夜间走廊灯,单个 Arduino 可以自己实现监控加控制,就不需要上报数据给 RPi 了。需要上报和接收数据的 Arduino ,通过 Zigbee 及以太网和 RPi 进行通信。

这样的好处就是投资小,而且把计算任务都放在了 RPi 上,算是物尽其用。

via

RaspVPN: Raspberry Pi + SoftAP + OpenVPN

为什么选择这样的组合

Raspberry Pi很有让人DIY的冲动,尤其是摆脱了24小时开server不低碳的罪恶感。作为标准的linux on ARMv6,相对于Openwrt或者dd-wrt,有更好的可配置性。

PPTP与L2TP在国内已经部分不能使用;相对地,OpenVPN可以选择TCP链接、内容加密,能够更好地规避流量过滤的限制。并且,可以设置http代理,避免Remote IP被封的尴尬。更为重要的,OpenVPN对IPv6的支持相对较好。

但OpenVPN由于是私有协议,需要专有的客户端,因此在Android(CM9对OpenVPN提供有支持)、iOS、WP8上的使用比较困难。把Raspberry Pi和OpenVPN结合起来搭建软AP可以较方便的解决这些问题。

需要准备的

pi@raspberrypi ~ $ lsusb Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter pi@raspberrypi ~ $ iw list Supported interface modes: * IBSS * managed * AP * AP/VLAN * WDS * monitor * mesh point

关于IPv6的说明

OpenVPN在2.3版本以后开始原生支持IPv6,但Debian/Raspbian还没有release相应的deb。

如果Raspberry Pi使用Arch Linux ARM,已经有OpenVPN 2.3的pkg;

如果选择Raspbian(Debian)可能需要从源编译OpenVPN,没有亲自试过。

后面的例子使用Raspbian(我的环境暂时没有IPv6),相信使用Arch的同学必须毫无压力。

Arch可能遇到的问题:发现如果hostapd起来,会自动把eth0 down掉,开始一直检查配置,后来发现是USB供电不足。。

开始配置

Raspberry Pi上需要用到的deb:

pi@raspberrypi ~ $ sudo apt-get install hostapd dnsmasq openvpn

如果使用ssh连接,可能会遇到网络down掉的情况,可能需要备用一个键盘+HDMI显示器。

首先配置hostapd,

pi@raspberrypi ~ $ sudo vi /etc/hostapd/hostapd.conf interface=wlan0 driver=nl80211 ssid=RaspberryPi hw_mode=g channel=11 wpa=1 wpa_passphrase=YOUR_PASS wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMP wpa_ptk_rekey=600 macaddr_acl=0

这时可以test一下hostapd:

sudo hostapd /etc/hostapd/hostapd.conf

用Wifi应该可以扫描到AP,并且输入密码应该可以连接,但获取不到IP。

配置无误,添加hostapd的默认启动:

pi@raspberrypi ~ $ sudo vi /etc/default/hostapd DAEMON_CONF=”/etc/hostapd/hostapd.conf”

更改wlan0的连接和IP:

pi@raspberrypi ~ $ sudo vi /etc/network/interfaces auto wlan0 iface wlan0 inet static address 192.168.200.1 netmask 255.255.255.0

之后配置dnsmasq,提供dhcp和dns(如果静态配置地址,不需要)。

pi@raspberrypi ~ $ sudo vi /etc/dnsmasq.conf interface=wlan0 dhcp-range=192.168.200.100,192.168.200.200,255.255.255.0,12h pi@raspberrypi ~ $ sudo ifconfig wlan0 192.168.200.1 pi@raspberrypi ~ $ sudo service dnsmasq restart

此时,客户端应该可以连接并获取IP,ping 192.168.200.1应该可以ping通。

配置OpenVPN

需要提供与服务器端匹配的config,可以直接参考其他linux的配置文件,例如我的是:

pi@raspberrypi ~ $ sudo vi /etc/openvpn/client.conf client remote SERVER_ADDR PORT proto tcp dev tun resolv-retry infinite ca /etc/openvpn/ca.crt cert /etc/openvpn/client.crt key /etc/openvpn/client.key # This file should be kept secret persist-key persist-tun comp-lzo pull dhcp-options nobind verb 3 cipher none

可以设置上电自启动该client:

pi@raspberrypi ~ $ sudo vi /etc/default/openvpn AUTOSTART=”client”

这时,可以测试下OpenVPN:

pi@raspberrypi ~ $ sudo service openvpn restart

数秒之后,在 ifconfig 中应该可以看到tun0出现。

配置路由

这里用的NAT方式(bridge方式略过),因此使用iptables设置路由。

iptables -t nat -A POSTROUTING -o tun0 -s 192.168.200.0/16 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward

当然,可以根据需要灵活配置路由,这也是Raspberry Pi最大的优势,利用iptables分拣包。例如,把国内的包自动转向 eth0 直接处理,国外的包 tun0 发送。

可以放在 /etc/networ/if-up.d/ 的 up.sh ,也可以放在 /etc/rc.local

这时可以重启Raspberry Pi,应该已经是一个完整的自VPN的Router。

可能的问题

使用ngrok将树莓派web服务映射到公网

作为一个 web 开发者,有时候,你需要将你本地正在开发中的网站远程展示给别人看,例如让别人评价下你的设计,协助调试等。

之前我能想到的办法,就是在自己的 VPS 上搭建一个测试站点,将开发代码部署上去。

今天,发现了 ngrok 这个神奇,再也不用这么麻烦了!

假如,你的本地站点运行在 8000 端口。

注册 ngrok 后,你会得到一串授权码。根据提示,运行下面的命令:

ngrok -authtoken xsYgK978pmB_PDC0hWx2 8000

注意: 这个授权码只是第一次使用时需要。ngrok 会记住。下次使用时,只需要 ngrok 8000 就 OK 啦。

此时终端界面上会给你两个公网 url:

Forwarding http://59ea2510.ngrok.com -> 127.0.0.1:8000 Forwarding https://59ea2510.ngrok.com -> 127.0.0.1:8000

然后,你就可以选择其中一个,发送给对方,他就可以看到你的本地网站啦!

有木有觉得世界豁然开朗了起来?

用nbench Linux在树莓派上超频测试

对树莓派进行超频?

Raspberry Pi 非常惊人,而且售价只有 35 美金。我一直摆弄了几周。最近 Raspberry Pi 开发组提供了一份 树莓派超频指南 ,可以将树莓派的 CPU 频率从 700兆超频到 1G,而且他们保证超频对设备并无损害!

我的问题是 超频对性能影响有多大? 因此我决定对此进行测试,我使用了 nbench Linux 工具来对我的树莓派 CPU 进行基准测试,通过 theraspi-config 命令行工具来更改 CPU 的频率,然后对每个不同的频率进行单独测试。

测试结果

下表中显示了在不同的频率下的 “integer index” 和 “floating-point index” 计算结果,数字越高表示性能越好。

CPU (MHz) Integer index Floating-point index 700 10.752 3.474 800 13.024 4.244 900 14.475 4.653 950 14.575 4.501 1000 16.237 5.475

上表中数据显示,从700兆超频到1G,性能提升明显。

性能提升的百分比

CPU (MHz) Int improvement (%) FP improvement (%) 700 100 100 800 121 122 900 135 134 950 136 130 1000 151 158

Performance improvements over previous speed

CPU (MHz) Int improvement (%) FP improvement (%) 700 100 100 800 121 122 900 111 110 950 101 97 1000 111 122

每一美元的性能价值 🙂

下表中显示超频后的性价比体现

CPU (MHz) Cost per Int ($) Cost per FP ($) 700 3.26 10.07 800 2.69 8.25 900 2.42 7.52 950 2.40 7.78 1000 2.16 6.39

结论

上述的测试可以得出如下几点结论:

首先,我的测试结果跟官方的结果很接近。

其次,树莓派在超频模式下性能表现优异,从 700兆到1G,整数处理性能提升 151%,浮点数性能提升 158%。

第三,如果你不想冒险,可以把频率设定在 900 或者 950 兆,这样会更保险些。

测试注意事项

为了运行这个测试,我禁用了 wpa_supplicantandtransmission-daemon ,这对 nbench 测试可能会有 3.4% 的影响。

via chimerasaurus

由32块树莓派构建的超级计算机

在不久的将来,构建强大的微型计算机系统可能会变成普通高中生的爱好之一,就像今天的机器人,乐高积木一样。

这来源于树莓派的最新进展。树莓派(Raspberry Pi)是一款 ARM 架构的只有一张信用卡大小的单板机计算机,可以安装定制的 Linux 操作系统。去年,南安普敦大学的计算机工程师, Simon Cox 用 64 块树莓派构建了一台微型超级计算机。

Simon Cox 讲述他们如何用树莓派来构建这台微型超级计算机。在采购到足够的树莓派之后,我们考虑能否将它们连接到一起变成一台超级计算机?最后基于标准的 Debian Wheezy(一个 Linux 发行版)系统,我们在树莓派上安装和编译所有必需的软件。相关的文档已经发布了,你也可以根据文档来构建一台自己的超级计算机。

如图所示,超级计算机由 64 块树莓派像搭乐高积木一样累加起来,使用 MPI(Message Passing Interface)标准通过高速以太网实现连通。

Joshua Kiepert,博伊西州的在读博士,也参与了使用树莓派构建超级计算机的项目,最终完成成 32 个节点的计算机集群,成本略低于 2000 美元。

为了保持节点的尺寸最小,同时又易于访问,Joshua Kiepert 描述这个由树莓派组成的集群计算机,32 块树莓派被分成 8 组堆放到 PCB 相连的支架上,各组之间有足够的空间,保证空气流动和组分间隙,便于散热。

Joshua Kiepert 说,自己构建系统的最大优势在于完全自主的配备和定制。通过构建自己的节点,我可以根据需求定制。

这种定制包括将树莓派的电源接口 – 5 伏电压的 Micro-USB 端口连接到机器的 I/O 口。为了获得更强大的处理能力来运行模拟器,Joshua Kiepert 将树莓派超频,但性能仍然有一点点不理想。

对于今天的青少年,生活已经离不开计算机,这些有趣,有创意,并且经济有效的构建超级计算机的方式,实际上是一个重要的学习工具,让他们提前了解高性能计算的动力学和逻辑学,更重要的是,在以后的生活中保持对该领域的兴趣。

Simon Cox 总结说,我们正在进行推广活动,希望这种低成本的系统作为一个起点,激发和促使学生们学习如何运用高性能计算和数据处理去解决复杂的工程和科学挑战。

用树莓派做个专属iBeacon基站

70美元,你也能用Raspberry Pi做个专属iBeacon基站。上周,苹果在北美全部254家Apple Store均部署了iBeacon基站。当消费者手持升级了iOS 7并支持低功耗蓝牙(Bluetooth 4.0)的设备走进店铺时,即可收到商店自动推送的消息提示。而现在,得益于硬件运动的发展,我们完全可以用Raspberry Pi自制一个iBeacon基站。

iBeacon是什么?

在今年WWDC上,苹果正式发布了iOS 7,而iBeacon也是该系统的重要特性之一。 种种迹象 表明,iBeacon技术将是苹果未来的重要发展对象之一。

iBeacon是基于Bluetooth 4.0LE协议开发的技术。在店内部署iBeacon基站后,它可以定位用户在室内的位置,据称精度可以厘米计算。这意味着,当用户走到商店内不同位置的时候,商店可以推送不同的产品信息或打折信息。

尽管是新技术,但是在苹果推出它的同时,便已经有相应产品了。新创公司 Estimote已经开始为商家提供iBeacon基站产品,它的售价为99美元。

美国百货商店Macy’s已经部署了iBeacon基站。 据称 ,它会向安装有专为其设计的应用发送大约31字节的数据,其中包含了128位的UUID,可以通过两个16位的识别码来确定用户所在的门店,以及在店内的区域。通过这样的技术,iPhone 5S的用户甚至可以通过扫描指纹直接购买商品。

用Raspberry Pi制作iBeacon基站

近日,一位叫Tony Smith的创客用一个Raspberry Pi和一个蓝牙适配器制作了一个iBeacon基站,它还配备了Linux Bluetooth软件栈、BlueZ和多种USB开发包。正如之前所说,iBeacon技术是基于低功耗蓝牙开发的,所以它同样可以支持Android 4.3以上的设备。

苹果在iOS的Corelocation架构层中定义了一个CLLocationManager类,用以检测在iBeacon基站所覆盖的区域内(iBeacon的信息传输距离最远可达50m左右)的移动设备,即监控触发事件。(详细的软硬件开发过程,可以参考 Tony Smith的教程 。)