树莓派上手

Setup

其实这是几天前干的事儿了,这里为了总结还是写一下。
先说说硬件,你需要以下玩意儿,最基本的:树莓派本体、电源、TF 卡或者 SD 卡、一根网线和路由器,或者一根 HDMI 线和一个显示器。

  • 树莓派本体:除了几个简化版的 compute board 之外,正常的树莓派好像目前发行过 A,A+,B,B+ 这样四个版本。核心是一样的,但是外设有所不同,B 系列的明显外设要多一些,带些 RJ45 网线接口啊,多几个 USB 口啊之类的。价格么,我看现在 B+ UK 版的也不过 180 软妹币左右,还是比较实惠的。(Updated:截止 2016 年 4 月的树莓派版本介绍
  • 电源:电源么,MicroUSB 口,5V/2A 足矣。反正我用的 Nexus 7 的充电器就是这个输出。按照官网上的说法,一般来说 1.2A 就完全够用了,A 型在不接外设的情况下功耗甚至可以低至 500mA。
  • TF 卡或者 SD 卡: B+ 是用 TF 卡的,其他几个应该都是用 SD 大卡的。当然 TF 卡可以通过卡套转成 SD 卡。按照官方的说法,4GB 以上的卡就可以了。Class 4 和 Class 10 随意,不过看了下价格差不多,那当然是要选 Class 10 的了。另外貌似某些 Class 10 的卡不被树莓派支持,网上有列表。
  • 网线和路由器:反正 B 系列是有以太网口的,A 系列不知道。有了网线口,就可以上网了,这是废话。另外有了网线的话,就可以无显示器安装和使用了。
  • 显示器:树莓派标配的输出是 HDMI 的。至于那个什么接电视的模拟视频输出口(是叫 AV 口来着?)就不必提了,估计只能接电视机。但是如果显示器没有 HDMI 口怎么办呢?这就要分情况讨论了。首先,如果有局域网的话,当然可以通过 SSH 来访问,再搞个 VNC,无显示器也能看图形界面,虽然玩不了 Minecraft。第二,可以考虑购买 HDMI 到 DVI 或者 VGA 的转接线。VGA 是模拟信号,所以需要带 convert box 的转接线才可以,但是呢,网上有说,很多 VGA convert box 会从树莓派拉很大的电流,最高可能有数百毫安,然后树莓派的 HDMI 接口那里的限流二极管就会爆炸,然后就废了。所以大家的说法是推荐购买带外接电源的 VGA 转接线。对于 DVI 的情况,DVI 有很多种,其中 DVI-D 传输的是和 HDMI 一样的数字信号,只要 pin 对上就能用,所以如果显示器有 DVI-I 支持的话,搞个 DVI 转接线比 VGA 转接线要来的可靠与实惠。总之我是准备去买个 DVI-D 的转接线啦,为了玩 Minecraft

Hardware

网上关于树莓派的资料有很多,不过既然是入门的话,general 的东西,为了避免结构混乱的文章,还是先看看官网上的 docs 。
先来看看硬件,这里有关于硬件的总体目录。
关于核心的话,树莓派在售的三个型号,A+,B 和 B+ 用的都是同一块 SoC:Broadcom 的 BCM2835,其中除了整合了 ARM 的一颗 ARM1176 MCU 之外,还整合了 GPU 啊,1080P 编码解码之类的一堆芯片。
作为一个好奇心旺盛的人,我首先去看了一下哈佛结构和冯诺依曼结构的区别,总体来说,就是前者的程序和数据存储器是分开的,因此总线也是分开的,后者不是。优缺点的话,就是哈佛结构比较复杂,但是快速一些。当然根据知乎上的说法,其实哈佛结构和冯诺依曼结构分地也不是这么清楚的,因为有的冯诺依曼结构在高速缓存那边也是将数据缓存和指令缓存分离的。
这边先介绍了一下各种 ARM 系列芯片的区别,总的意思就是 ARM11 是最高端的啦,吃我 65nm 啦。
好了具体的内容就不多说了,总之资料都在本节开头的那个超链接里,要用的时候再看吧。

OS

然后说说系统的安装。树莓派的官网上有提供各个版本的操作系统的下载,官方说初学者要装 NOOBS,不过我觉得很蛋疼,就直接装 Raspbian 了,这个是基于 Debian 的修改版,应该也是最常用的 OS 了吧,教程见官网。写入镜像之后就可以直接插卡启动,无显示器流派的一些设置可以参考这里
安装完成之后,putty 连上 ssh 登录,先运行 raspi-config 扩展一下 filesystem,然后设一下 locale,改一下密码。网络么,DHCP 就不用配置了。然后先 apt-get update/upgrade 一下.
再装个 tightVNCserver,设密码(最多八位自动截断),开启桌面。然后 PC 端用 VNC Viewer 就能连上了。不过感觉也没啥用,浏览网页都卡。
(Updated 20161106)貌似现在的 Raspbian 自带了 RealVNC,在 raspi-config 里打开 VNC 之后直接运行 vncserver即可使用 VNC Viewer 登录,用户名密码同 SSH。
之后可以干的事情还包括修改默认源啊,配置一下防火墙啊,做个路由的端口映射啊什么的,但是由于我懒,就没搞。
其实我是一个 Linux 小白,唯一的经历大概就是今年暑假的时候拿着联想送的路由器折腾了一下 PandoraBox(一个祖国修改版的 OpenWRT),那么这样的话,这里的玩意儿就特别适合入门了。
好吧,我花了点时间看了下发现这个文档写的基本没啥用,结构倒是很完整,可是细节残缺。罢了罢了,还是要用的时候现查罢。
关于 Linux 的目录系统,这里有一个粗浅的介绍。总的哲学就是,一切皆文件,不管是设备,还是内存中的进程。

GitHub

用了很多次 GitHub 了,每次都要从头开始学,我也是醉了。所以先写点 notes 在这里,写多了再分到另一篇文章吧。
那么,首先是客户端。犹记得上次用的 Desktop,这次就用 command line 的吧,200M 左右。
安装的时候会有一些问题,第一个就是 LR(line feed)& CR (carriage return) 的换行问题,这里有一个介绍,不过不知道现在这 bug 还在不在,总之我还是选择了 auto。第二个就是 Terminal emulator 的话随意选了个 Mintty,介绍的很清楚了,如下:

一个简明指南可以看这里。总之,就是安装完之后,git --global -e 配置一下用户名和邮箱,然后定位到合适的文件夹,右键『Git Bash here』,然后写个README.md,再 add/commit/push 一下就好。
需要了解的知识主要有两点,一个是各种空间的结构,一个是工作流

Python

好了接下来直接上 Python。
其实我并没有学过 Python,那么为什么要选择它呢?因为看起来网上好多树莓派的程序都是用 Python 写的,新浪微博也有 Python 的 SDK。另外 Shadowsocks 最出色的版本也是用 Python 的,所以就是它啦。
根据官网上的教程,总结一下几条 Python 的规则:

  • 缩进代表循环内容;
  • 变量不需要定义类型,而且其类型是动态的;
  • #注释,’’’’’ 可以用来包围多行注释
  • [] 用来包围数组,这个倒是和 Matlab 一样,或者说和 C 一样,于是 Mathematica 怎么都是异类啊;

DIY Amazon echo

先放个链接在这里,一个新闻。
AWS 的官方博客上有个中文版的安装教程,不过貌似已经过时了。因为 GitHub 上的官方主页上的这篇已经有了自动安装脚本。所以说按照英文版的来走就好啦。
这里提到说对 Pi 1 的话貌似要注意 NodeJS 和 JDK 的版本问题。安装的时候,其他都没有问题,唯一就是 Node.js 好象是本来就有的,版本是 v0.10.29。–
some interesting debug commands:

  • whereis/which
  • echo $ccc