灰小子的博客

树莓派B+评测

灰小子 树梅派Raspberry Pi

(原文首发在21ic http://www.21ic.com/evm/evaluate/MCU/201511/647379.htm )

by 灰小子 2015-11-09

树莓派是一个DIY神器,很多事都能用它来做,比如作为播放器,作为网络服务器,作为控制智能小车和四轴飞行器的控制板,也可以作为视频监控控制板,也有网友用树莓派来做平板电脑,等等。树莓派有各式各样的奇葩应用,层出不穷。

而这背后,要感谢注册于英国的慈善组织“Raspberry Pi 基金会”。这一基金会以提升学校计算机科学及相关学科的教育,让计算机变得有趣为宗旨。开发出了只有信用卡大小的卡片电脑:树莓派。树莓派强大的可扩展性和易用性,不止在计算机教育领域得到广泛使用,也受到开源硬件爱好者、极客和其他开发者的喜爱和追捧。

笔者手里拿到的是树莓派B+。虽然今年树莓派基金会推出了最新的Raspberry Pi 2 model B,但售价25美元(税前)的树莓派model B+仍然拥有非常优秀的性价比。

树莓派B+的外观

包装盒正面

包装盒上有很显眼的名称:Raspberry Pi ,型号:Model B+。并有小字“Made in United Kingdom”和条形码。这个树莓派板子是从欧时买的,包装盒下部有它的RS标识和销售网址。

包装盒背面

包装盒背面有板子通过的各类认证,比如CE、FC等等,还有欧时的树莓派技术支持社区。经过暴力快递运输过程,包装盒上有一些褶皱和折痕,不过幸好板子质量非常好,没有受到任何损伤。

树莓派也没有自带太多配件和数据线等,除了上面的包装盒,我收到的还有一张Class10的TF存储卡,我直接就插到树莓派上了。我提前买了树莓派的亚克力盒子,在这里晒晒:

组装好之后:

树莓派B+穿上外衣更漂亮了,而且外衣很便宜,很赞。嘿嘿。。。

先来个正面照片,看起来就很养眼。

背面:

背面分布着很多测试点,焊点圆润细腻有光泽,很漂亮。找个国产同类的板子做对比:

可以看出,树莓派B+比国产的某派板子集成度更高。树莓派B+外观更简洁大方,PCB走线也更清晰,尺寸也略小,更显小巧精致。另外,笔者还注意到一个细节,那就是两个板子使用的USB接口器件,树莓派B+使用的USB接口器件外壳是一体的,而另一个板子使用的是卡扣结合的外壳,树莓派B+的USB接口器件更美观,似乎质量也更好一些。

两个板子的侧面对比,可以看出树莓派B+的PCB更厚,质量更好。

树莓派B+ 主要硬件特性

下面咱们来看看树莓派B+的硬件特性,下面是树莓派B+正反面各接口说明图:

树莓派B+的主要特性: · Broadcom BCM2835 700MHz ARM1176JZFS配备FPU处理器,4核GPU处理器

· GPU 支持Open GL ES 2.0,OpenVG硬件加速,1080p30/H.264高清解码

· GPU 带宽1Gpixel/s,1.5Gtexel/s or 24GFLOPs DMA 纹理解析

· 512 MB内存

· Micro SD卡插槽

· 10/100M自适应网卡

· HDMI接口

· USB 2.0接口x 4

· microUSB供电接口

· 3.5 mm音频输出接口

· 40PIN GPIO接口

树莓派B+上电测试

一、烧写linux镜像

接下来咱们准备给树莓派B+上电试试。不过使用它之前,有一项重要工作要做,那就是准备一张带linux操作系统的TF卡。这个过程我们使用官方提供的raspbian操作系统和Win32DiskImager软件。

把TF卡插入TF读卡器中,然后插到电脑USB口。打开安装好的Win32DiskImager软件,然后可以按照下图中的步骤进行操作:

点Write之后,会有Confirm overwrite的提示,点“Yes”就可以。烧写一般要持续几分钟,这时能看到烧写速度和进度条。烧写完毕会有“Write Successful”的提示,这样linux镜像就烧写成功了。咱们给树莓派B+上电看看吧。

二、树莓派B+上电和配置

先把烧好linux镜像的TF卡插入树莓派Micro SD卡槽。给树莓派B+接上无线鼠标键盘的接收器,然后用HDMI线连接电视机。条件有限,没有带HDMI口的液晶显示器,只能抢占家里带HDMI口的电视机了。最后,在Micro USB口接上5V电源。稍等一下,可以在电视上看到如下画面:

树莓派的操作系统正在启动。第一次启动时会自动启动raspi-config,这是一个树莓派的配置工具,一些常用的树莓派配置都可以在这里进行设置。如果不是首次启动,也可以在命令行输入如下命令来启动:

sudo raspi-config

启动过程需要登陆,使用账号:pi,密码:raspberry进行登陆。密码输入时是不显示的。登陆后会有如下提示信息:

在命令行下输入:

startx

会出现raspbian操作系统的图形界面:

如果大家更习惯使用图形界面,就可以在这里进行操作了,也非常方便。用鼠标在raspbian图形界面点击左上角的Menu,选择“shutdown”,然后点“Yes”就可以关闭raspbian了。

下面是raspi-config配置工具各项目的功能:

1 Expand Filesystem 扩展文件系统

2 Change User Password 改变默认pi用户的密码。

3 Enable Boot to Desktop/Scratch 启动时进入的环境选择

Console Text console, requiring login(default)

启动时进入字符控制台,需要进行登录(默认项)

Desktop log in as user ‘pi’ at the graphical desktop

启动时进入LXDE图形界面的桌面

Scratch Start the Scratch programming environment upon boot

启动时进入Scratch编程环境。

4 Internationalisation Options 国际化选项

【a】 Change Locale 语言和区域设置

【b】 Change Timezone 时区设置

【c】 Change Keyboard Layout 改变键盘布局

5 Enable Camera 使能PI的摄像头模块

6 Add to Rastrack

把你的PI的地理位置添加到一个全世界开启此选项的地图

7 Overclock 超频

None 不超频,运行在700Mhz,核心频率250Mhz,内存频率400Mhz,不增加电压

Modest 适度超频,运行在800Mhz,核心频率250Mhz,内存频率400Mhz,不增加电压

Medium 中度超频,运行在900Mhz,核心频率250Mhz,内存频率450Mhz,增加电压2

High 高度超频,运行在950Mhz,核心频率250Mhz,内存频率450Mhz,增加电压6

Turbo 终极超频,运行在1000Mhz,核心频率500Mhz,内存频率600Mhz,增加电压6

8 Advanced Options 高级设置

A1 Overscan 全屏显示

A2 Hostname 主机名称

A3 Memory Split 内存分配

A4 SSH SSH服务

A5 SPI SPI内核驱动

A6 Audio 声音输出设置

0.Auto 自动选择

1.Force 3.5mm (‘headphone’) jack强制输出到3.5mm模拟口

2.Force HDMI 强制输出到HDMI

A7 Update 升级

9 About raspi-config 关于raspi-config的信息。

例程测试

一、串口测试

不能老是抢媳妇的电视做显示器,我们现在要使用电脑来调试树莓派B+。相信对单片机熟悉的各位网友,非常熟悉用串口来调试单片机了。树莓派B+同样也可以用串口进行调试。用到的树莓派GPIO:GND、GPIO 14(UART_TXD)和GPIO 15(UART_RXD)。

在上面介绍的raspi-config工具里,要先使能串口Serial。然后把USB转TTL模块的RX接到UART_TXD,模块的TX接到UART_RXD,模块的GND链接到树莓派的GND。把USB转TTL模块插入电脑USB口。打开软件putty_V0.63,按下图步骤进行操作。

这样可以给树莓派B+送电了。插上电很快就可以看到树莓派B+的启动信息。等启动完毕,会提示登陆,用pi/raspberry登陆就可以。

二、wiringPi

相比其他开发语言,嵌入式工程师们肯定更熟悉C语言,所以我们为了下一步程序开发选择wiringPi库。先给树莓派B+联网然后安装wiringPi。在命令行依次输入:

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

cd wiringPi

./build

安装到最后,有如下信息:

意思是使用wiringPi库的时候,在命令行要加上-lwiringPi,用到devLib时,要加上-lwiringPiDev。

现在我们来试一下wiringPi是否安装成功了:

gpio readall

这是wiringPi的引脚说明,wiringPi对树莓派的管脚重新进行了封装,例如wiringPi的GPIO0意味着BCM2835的GPIO17。

三、点亮LED

下面要进入开发的实质阶段了,我们来点亮一个led。根据上面gpio readall后看到的GPIO信息,我们可以知道,wiringPi的pin 0是对应树莓派B+上功能名GPIO.0的IO,也就是BCM2835的GPIO17。

硬件电路:

硬件连接如下:

咱们使用命令行文本编辑工具nano来编辑代码。用nano建立一个文件switchled.c。

sudo nano switchled.c

然后输入下面代码:

// LED Pin - wiringPi pin 0~7,21~29。
// wiringPi pin 0~7和21~29分别对应树莓派B+上功能名GPIO.0~GPIO.7和GPIO.21~GPIO.29的IO。未使用功能IO。
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc,char* argv[])  //带参数的main()
{
    int pinNumber;
    int nowState = 0;

    if (argc<3){       //判断参数数量是否够
        printf("Usage example:./switchled 0 open\n");
        return 1;
    }

    pinNumber = atoi(argv[1]);  //把字符型变量argv[1]转化为数字
/*

*/
if (((pinNumber > 7)&&(pinNumber < 21))||(pinNumber < 0)||(pinNumber > 29)){         //判断io序号是否在允许范围内
    printf("The wiringPi pin is wrong! Be confined only to 0~7.\n");
    return 1;
}


if (-1 == wiringPiSetup()){  //初始化wiringPi
    printf("Setup wiringPi failed.\n");
    return 1;
}

pinMode (pinNumber, OUTPUT);//设置io为输出模式

if (strcmp(argv[2],"open") == 0){ //根据参数argv[2]设置io状态
    digitalWrite(pinNumber, HIGH);
    nowState = 1;
}
else if (strcmp(argv[2],"off") == 0){//根据参数argv[2]设置io状态
    digitalWrite(pinNumber, LOW);
    nowState = 0;
}
    else {
//      printf("wrong.\n");
  }

printf("%d\n",nowState);//输出io状态,1是高电平,灯亮;0是低电平,灯灭
return 1 ;
}

按快捷键ctrl+o保存,或者ctrl+x退出,然后输入y选择保存更改,回车。在命令行输入:

gcc switchled.c -o switchled -lwiringPi

现在看看是不是正确生成了可执行的文件:

ls

绿色的switchled就是生成的可执行文件了。下面我们验证一下功能是否正确,在命令行输入:

sudo ./switchled 0 open

灯亮,并在命令行打印出1。输入:

sudo ./switchled 0 off

灯灭,并在命令行打印出0。功能正确。

演示视频:http://v.youku.com/v_show/id_XMTM2NDgyODAyOA==.html

通过WEB网页控制树莓派IO

我们上面实现了一个用命令控制IO的功能,接下来我们用web网页来控制IO。这里我们使用WebIOPi。WebIOPi是一个面向互联网IoT开发的用来控制树莓派GPIO的web框架,支持REST Server和CoAP SERVER,并提供python库和javacript库。

把WebIOPi下载到树莓派B+。然后在命令行下依次输入下列命令安装WebIOPi:

tar xvzf WebIOPi-0.7.1.tar.gz

cd WebIOPi-0.7.1

sudo ./setup.sh

安装过程会安装一些需要的软件包。一直选择y就可以。最新版本的WebIOPi增加了Weaved IoT Kit。在安装过程需要输入Weared的账号、密码,并设定一个设备名来绑定树莓派到Weared。

按照默认的配置安装完成后,默认的端口是8000,配置文件目录是:/etc/webiopi/config,网页所在目录:/usr/share/webiopi/htdocs/。

验证下是否安装成功,可以在命令行输入:

webiopi -h

能出来这些帮助信息,说明webiopi安装成功了。我们启动webiopi:

sudo webiopi -c /etc/webiopi/config

我们在树莓派B+上可以打开网页: http://localhost:8000 或者在局域网内的PC上打开: http://树莓派IP:8000 ,我的是 http://192.168.1.108:8000 。此时会打开一个登陆框:

默认的账号是:webiopi,密码是:raspberry。输入后点确定可以打开如下页面。

点GPIO Header,打开如下一个页面:

这时我们就可以在web页面上来控制树莓派B+的IO了。先点GPIO 17左边的IN,变为OUT,然后点11,11所在方框变为黄色,咱们上面实验连接的LED就亮了。再点一下方框变为黑色,LED熄灭。

演示视频链接:http://v.youku.com/v_show/id_XMTM2NDgzMTg2NA==.html

Webiopi是此类开源工程中比较好用的了,可惜仍然没有更新到支持40个引脚。所以啊,想用现成的工具总会遇到各种不顺手。但至少我们的目的基本实现了。如果时间足够,真的想开发自己的项目来支持树莓派B+的网页控制。

小结

这短短两三周的时间,我进行的实验不仅仅是上面这些。除了上面这些,还做了很多其他尝试,比如:更换了两种服务器程序,安装了一个博客和一个第三方微信公众平台并绑定了我的微信公众号,甚至还安装了Cloud9并进行了体验,等等。DIY神器——树莓派B+的玩法真的非常多非常多。。。

通过上面的学习和实验,让我们体验到了DIY神器——树莓派B+的开放性、易用性和易扩展性,当然了,各类工具和例程也非常的丰富,是我们学习linux,程序开发、web开发,亦是学习时下正火的物联网技术的好工具。当然,树莓派B+更是极客、创客,甚至黑客们开展开发和研究的一个非常好的选择。

资源下载:

1.raspbian操作系统:

https://www.raspberrypi.org/downloads/raspbian/

2.Win32DiskImager: http://dl.21ic.com/download/win32diskimager-0-9-5-install-rar-ic-172581.html

3.putty_V0.63:

http://dl.21ic.com/download/putty_v0-63-0-0-43510830-rar-ic-173023.html

4.VNC-Viewer-5.2.0-Windows-32bit:

http://dl.21ic.com/download/vnc-viewer-5-2-0-windows-32bit-rar-ic-173024.html

5.树莓派B+部分电路图:

http://dl.21ic.com/download/raspberry-pi-b-plus-v1-2-schematics-pdf-ic-173018.html

6.Broadcom BCM2835 datasheet:

http://dl.21ic.com/download/bcm2835_pdf_datasheet-pdf-ic-172437.html

7.WebIOPi:

http://webiopi.trouch.com/DOWNLOADS.html

灰小子
学习者永远停留在过去时,只有思考者才能创造未来时