Category Archives: Raspberry Pi

【RPi树莓派使用指南】树莓派官方7寸屏入门指南

1. 引子

在树莓派官方触摸屏发布之前,市场上可用的屏幕有以下三种:

  • 直接和GPIO插口对接的屏幕,使用SPI与CPU进行通信。需要特殊的驱动程序将framebuffer的内容发送到LCD控制器上,一般带有触屏功能,大小以3.5寸为主流。受限于SPI通信速度,刷新速率不高;
  • 专用USB接口的屏幕,如RoboPeak Mini USB Display。这类屏幕通过USB连接,需要本地运行驱动程序;
  • 通用LCD屏幕,通过HDMI和树莓派连接。因其通用性不需要特殊的驱动程序,但是很多都不支持触屏功能,而且都需要额外的转接板,体积较大;

rpilcd-front-with-base
▲ 图.  树莓派官方7寸屏实拍

我自己的需求是将树莓派作为信息显示中心,在屏幕上显示我的HP服务器的运行信息,另外提供一些快捷的传感器监控和控制操作接口。最初一直在官方屏幕和HDMI屏幕之间犹豫,最后还是选择了官方触摸屏。归结起来主要有几个原因:

  • 官方屏的LCD模组最有保证,淘宝上的HDMI LCD一般成像质量不高;
  • 官方屏的触摸功能在所有方案中是支持的最好的,有十点电容触摸(目前Raspbian还只支持单点,以后会升级),且不需要额外驱动。而HDMI接口的LCD如果有触摸功能,都需要额外接一根USB用于提供触摸控制;
  • 官方触屏和树莓派3可以直接通过铜柱物理连接,无需额外的驱动电路板。连线也非常少,只需要一根DSI软排线和供电接口即可。

总体上来说,虽然官方屏的价格高了一些,但是却是所有方案中最可靠、简洁的,所以最后也没有多犹豫就从网上下单了。rpilcd-front-without-base
▲ 图. 树莓派官方LCD屏实拍 – 正面

 

2. 入手简评

这款屏幕官方公布的主要参数有:

  • 分辨率800 x 480像素,刷新率60fps;
  • 10点电容触摸,但是目前只支持单点触控;
  • 背后有可供背挂的安装定位孔;
  • 可视角度70度 ,可视区域大约为155 x 86mm;
  • 非方形像素 – 大约为0.19 x 0.175mm;
  • 电源功耗:455mA – 470mA之间,约为2.3W。

虽然说这款屏幕是相对来说比较好的选择,但是拿到手之后还是发现了很多存在的问题:

  • 首先是这款屏幕的分辨率只有800 x 480,是WVGA标准,很多应用软件的界面都无法完全显示,使用时要经常拖动窗口来显示需要的信息;同样的,如果是自己开发图形界面,能够显示内容的空间也会比较有限(尤其考虑到任务栏也占用了一部分空间);
  • 其次是这个屏幕的可视角不大。现在主流的LCD屏幕可视角都是120度以上了,而这款屏只有70度,工作时只要稍微变换一下角度屏幕的内容就看不清楚了。可视角的问题在仰视时还可以接受,俯视的时候就非常明显了;
  • 最后就是这个屏幕比较吃电,如果和树莓派供用电源,会影响到树莓派的供电。如果出现供电不足的情况,屏幕的右上角就会时不时出现一个方形的彩虹图标。

总体来说这款屏幕从设置到使用还是比较方便的,但是作为官方发布的屏幕,同时再考虑其600块钱的定价,整体性价比就显得不高了。

 

3. 使用方法

3.1 注意事项(使用前必读)

1) 这款屏幕主要支持的树莓派型号是Model A+, B+, Pi 2和Pi 3。 Model A和B虽然也可以使用,但是会牺牲I2C的功能(因为这两个型号只有一组I2C,而其他型号有两组,可用其中一组作触屏接口);

2) 至于操作系统,推荐使用最新版原生Raspbian OS。目前对NOOBS系统支持不好,所以还是推荐安装Raspbian;如果已经在使用旧版Raspbian,但是不想重新安装最新的系统,可以使用以下命令升级系统:

sudo apt-get update
sudo apt-get install --reinstall libraspberrypi0 libraspberrypi-{bin,dev,doc} raspberrypi-bootloader
sudo reboot

以下是官方公布的操作系统支持情况:
– Raspbian – Supported
– Ubuntu MATE – Supported
– RetroPie – Supported
– OpenElec – Supported
– OSMC – Supported
– Arch – Display works, Touch may be tricky: https://www.raspberrypi.org/forums/viewtopic.php?f=108&t=128452
– Kano OS – Not supported

3) 确保使用官方电源(或其他品牌电流供应能力 > 2A以上的电源),保证屏幕可以正常供电;

4) FPC连接头很脆,安装的时候需要小心一点。确保FPC连接头可靠链接,连接端口的卡口扣下。

 

3.2 安装方法

打开包装后,屏幕背面接口的情况如下图所示:

rpilcd-back-without-base00
▲ 图. 树莓派官方LCD屏背面接口

这里主要需要连接的就是LCD软排线和电源供电接口。LCD软排线连接的时候问题不大,主要就是注意接口触电的方向是否正确,不要装反了。至于电源接口,这款屏幕提供三种供电方式:

1) GPIO引脚供电(树莓派向LCD供电)

可以直接从树莓派跳VCC和GND线进行连接,然后给树莓派供电,但是这样就无法使用其他IO扩展板了(如SenseHat)。

rpilcd-back-without-base1
▲图. GPIO供电连接方法

2) USB串联供电(LCD向树莓派供电)

将LCD的Power Out端连接至树莓派,然后给LCD电源接口供电。经测试,这种方式供电经常会遇到之前说的供电不足的情况,屏幕右上角会出现彩虹图标。

rpilcd-back-without-base2
▲图. USB串联供电连接方法

3) 双USB同时供电

两个USB都单独供电,但是要保证两个USB可以同时上电,否则会出现开机没有初始化屏幕,而没有图形显示的问题。

电源和软排线连线完成后就可以固定树莓派了。树莓派的安装方法有两种:正装和反装。所谓正装,就是将树莓派以相同方向安装在LCD的铜柱固定柱上。而反装,则是将树莓派面朝LCD驱动板进行安装。反装可以节省空间,但是反装就无法再使用GPIO引脚了,所以一般情况下都是正装的。

官方屏不含支架,可以去网上购买专用的LCD支架,像我买的这款用起来就不错:

rpilcd-back-with-base
▲图. LCD亚克力支架

 

3.3 使用虚拟键盘

对于想使用触摸屏进行全部操作的朋友,可以安装一个虚拟键盘进行文字输入:

3.3.1 Florence

Suggested on the Pi forums by Hove is Florence: http://xmodulo.com/onscreen-virtual-keyboard-linux.html. Install with:

sudo apt-get install florence

 

3.3.2 Matchbox

Suggested by Alex ( the almighty @raspitv ), and scattered on various blogs, is Matchbox, which you can install like so:

sudo apt-get install matchbox-keyboard

And then find in Accessories > Keyboard.

 

4. FAQ问题解答

Q: 屏幕上下180度翻转

A: 打开SD卡中的/boot/config.txt文件,增加以下一行:

lcd_rotate=2

也可以直接使用以下命令:

echo "lcd_rotate=2" | sudo tee -a /boot/config.txt

 

Q: 程序控制背光

A: 打开背光:

echo 0 > /sys/class/backlight/rpi_backlight/bl_power

关闭背光:

echo 1 > /sys/class/backlight/rpi_backlight/bl_power

 

Q: 在Pi A, B上使用

A: 首先需要将树莓派的IIC线与LCD控制板的IIC总线手动连线在一起,包括SDA ( http://pinout.xyz/pinout/pin3_gpio2) 和 SCL (http://pinout.xyz/pinout/pin5_gpio3)。之后修改配置,在IIC总线上识别LCD:

ignore_lcd=0

注意: 其他IIC设备将无法使用。

 

Q: 屏幕左上角出现方形彩虹图标

A: 电源供电不足,请使用电流供应能力 > 2A的电源。

 

Q: 如何使用Kivy图形库

A: Kivy介绍:Kivy is a Python GUI development system for cross-platform applications. It is designed to work with touchscreen devices (phones and tablets), but also runs on the Raspberry Pi. To install Kivy onto your Pi follow the instructions at https://kivy.org/docs/installation/installation-rpi.html.

如果需要在树莓派上正常识别触摸屏输入,需要将触摸屏在Kivy中配置成为输入源。打开配置文件 ~/.kivy/config.ini ,在 [input] 一栏增加以下命令:

mouse = mouse
mtdev_%(name)s = probesysfs,provider=mtdev
hid_%(name)s = probesysfs,provider=hidinput

 

Reference

[1] Official 7” Raspberry Pi Touch Screen FAQ, PIMORONI, http://forums.pimoroni.com/t/official-7-raspberry-pi-touch-screen-faq/959

[2] Getting Started with the Pi 7″ Touchscreen LCD, PIMORONI, http://learn.pimoroni.com/tutorial/pi-lcd/getting-started-with-raspberry-pi-7-touchscreen-lcd

【RPi树莓派使用指南】树莓派3代介绍及历代树莓派比较

树莓派自从12年02月最初发布之后,目前已突破800万的总销量。作为树莓派的早期支持者,云飞实验室也一直在关注着它的发展。如今在经历了4年的设计迭代之后,树莓派于16年02月推出了最新一代的树莓派3。树莓派3的本次发布与之前的2代只相差了整整一年时间,但是得益于目前芯片行业的快速发展,树莓派3的性能将会有很大的提升。这主要表现在以下几点:

  • 更高的处理速度。树莓派3首次采用了64位处理器:基于Cortex-A53的博通BCM2837。BCM2837为四处理器核心,主频也由树莓派2的900MHz提高到了1.2GHz。根据官方提供的数据,这将使树莓派3的处理速度较2代提高50%。如果和1代的700MHz单核相比,提升大约在3 – 4倍。更高的CPU速度使得树莓派可以胜任更大负荷的运算工作:如科学计算,机器人路径规划等。
  • 更高的互联性。树莓派3使用了集成蓝牙4.0和WiFi的设计。集成通信的设计的意义是多方面的。首先,使用者无需再购买额外的USB设备,从一定程度上来说,鼓励了用户在自己的设计中使用这些通信功能;其次,集成的通信模块可以进行更好的功耗管理,同时IO吞吐的性能也会得到提高;最后,可以更进一步的优化内核,只针对板载的芯片专门进行优化。避免可能出现的兼容性或者未优化的驱动导致通信性能下降问题。

rasp-pi-3-board
图1. 树莓派3外观

rasp-3_Model_B
图2. 树莓派3外观 (设计渲染图) 

从这两点来看,树莓派3代将很有可能再次扩展自己的使用领域,同时在物联网和机器人中得到应用。同类产品如果还是单从硬件角度进行提升,已经无法再与之竞争。因为性能的显著提升且维持原价,在树莓派2代出来时没有入手的玩家,这一次也难免蠢蠢欲动。同时因其性价比的纯粹提升,树莓派1代与2代的销量会大幅下降。因为2代只发布了1年,所以很可能成为绝版,如果出于收藏的目的可以尽早买之。总体上来说,这次树莓派3已经具备了IoT所需要的基本条件(性价比,互联性,体积与功耗)。今后的方向可能是增加更多的IO功能,如PWM和ADC等,是被大多数玩家需要却还没有被支持的。

以下是我对历代树莓派版本的整理与对比:

表1. 发布时间及主要特点

型号 发布时间 主要特点
PI 1 Model B 2012年02月 第一代树莓派。Model A不含以太网。
PI Compute Module 2014年04月 模块化设计,使用SODIMM大小的金手指接口。
PI 1 Model B+ 2014年07月 增加了2个USB接口,增加了9个GPIO:26脚->40脚。
使用MicroSD卡。
PI 2 Model B 2015年02月 升级处理器:四核900MHz Cortex-A9。升级为1GB RAM。
PI Zero 2015年11月 无网络通信功能,廉价,小尺寸。
PI 3 2016年02月 升级处理器:64bit四核1.2GHz Cortex-A53。
内置蓝牙4.0和WiFi。

 

表2. 树莓派历代版本硬件比较

型号 处理器 主频 内存 GPIO 互联性 功耗级别
PI 1 Model B BCM2835
(ARM11)
700MHz 512MB 26 2 USB
HDMI
10/100M Ethernet
700mA (3.5W)
PI Compute Module BCM2835
(ARM11)
700MHz 512MB 0 无。需要配合扩展板使用。 200mA (1W)
PI 1 Model B+ BCM2835
(ARM11)
700MHz 512MB 40 4 USB
HDMI
10/100M Ethernet
600mA (3W)
PI 2 Model B BCM2836
(Cortex-A9 四核)
900 MHz 1GB 40 4 USB
HDMI
10/100M Ethernet
800mA (4W)
PI Zero BCM2835
(ARM11)
1 GHz 512MB 40 (无排针) 1 Micro-USB
Mini HDMI
无板载网卡
160mA (0.8W)
PI 3 BCM2837
(Cortex-A53 64位四核)
1.2 GHz 1GB 40 4 USB
HDMI
Bluetooth 4.1
WiFi 802.11n
10/100M Ethernet
800mA (4W)

 

Read more »

【RPi树莓派使用指南】在树莓派上安装MySQL数据库

在嵌入式Linux平台下如果需要使用数据库功能,一般会选择SQLite或MySQL。SQLite是轻量级、基于文件的关系数据库,系统资源占用较少;但是SQLite的缺点是不支持远程部署和访问。对于大多数应用,SQLite是很易用的数据库,我之前就使用过它开发过一套生产管理系统;但是当需要远程访问数据并提供数据库安全时,MySQL则是更好的选择。考虑到树莓派的性能局限,其本身并不适合集成数据展示功能(无论是基于GUI的还是基于web的)。于是可以将其只作为数据记录平台,而将数据的整理、展示在PC端完成。这种模式下,树莓派可以作为数据采集主机,将有线 / 无线节点的数据进行集中采集记录,再通过PC进行分析和展示。在这样的初衷驱使下,我研究并整理了如何在树莓派上安装和使用MySQL。

1. 安装MySQL
使用管理员权限运行apt-get获取最新的MySQL及Python编程接口(之后用于数据库编程):

$ sudo apt-get install mysql-server python-mysqldb

安装过程中需要输入root管理员的密码,该密码之后用于访问数据库系统。

2. 测试MySQL
通过以下命令运行MySQL的命令提示系统,并输入在安装过程中设置的密码:

mysql -u root -p

Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 47
Server version: 5.5.41-0+wheezy1 (Debian)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看当前已建立的数据库:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

3. 创建一个新的数据库和表单
以上数据库都是系统建立的数据库,要想开始插入数据,首先需要建立新的数据库和表单。这里假设要实现一个CPU温度记录的功能,存放在名为”sensordb”的数据库中。使用以下命令建立数据库:

mysql> CREATE DATABASE sensordb;
Query OK, 1 row affected (0.00 sec)

查看数据库是否建立成功:

mysql> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sensordb           |
+--------------------+
4 rows in set (0.01 sec)

在sensordb数据库下创建一个表单(table),该表单包含两个域(fields):日期和当天平均CPU温度。时间域使用的数据格式为DATE;而温度使用DECIMAL(4,1),即最大三位整数加一位小数。

mysql> USE sensordb;
Database changed

mysql> CREATE TABLE cputemptable(recordtime DATE, temp DECIMAL(4,1));
Query OK, 0 rows affected (0.03 sec)

查看表单是否建立成功:

mysql> SHOW TABLES;
+--------------------+
| Tables_in_sensordb |
+--------------------+
| cputemptable       |
+--------------------+
1 row in set (0.00 sec)

查看表单的域名称与类型:

mysql> DESCRIBE cputemptable;
+------------+--------------+------+-----+---------+-------+
| Field      | Type         | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| recordtime | date         | YES  |     | NULL    |       |
| temp       | decimal(4,1) | YES  |     | NULL    |       |
+------------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

4. 向数据库中插入测试数据
在上一步中已经成功建立了用于CPU温度采集的数据库和表单,但是因为没有任何数据,所以该表单中没有任何内容。现在通过手动插入的方式向该表单中插入若干数据,测试是否可以正常运行。

mysql> INSERT INTO cputemptable
    -> values('2015-03-25', 36.5);

mysql> INSERT INTO cputemptable
    -> values('2015-03-26', 39.5);

以上每条如果操作成功,都回返回提示:

Query OK, 1 row affected (0.00 sec)

5. 查看数据库操作的结果
为了验证以上数据是否成功插入,可以通过select语句检索数据库:

mysql> SELECT * FROM cputemptable;
+------------+------+
| recordtime | temp |
+------------+------+
| 2015-03-25 | 36.5 |
| 2015-03-26 | 39.5 |
+------------+------+
2 rows in set (0.00 sec)

可以看到之前的两条数据已经成功插入到cputemptable数据表中。

最后使用quit退出交互系统:

mysql> quit
Bye

整个过程下来,发现MySQL在树莓派上的部署与操作与在桌面Linux平台上几乎没有差别。这里唯一需要注意的是,因为树莓派的硬件资源有限,所以在配置MySQL的优化选项时,需要降低其对系统资源的使用。具体配置细节在我亲自研究试验之后再进行补充。

下篇预告:在树莓派上使用Python进行MySQL数据库编程

【RPi树莓派使用指南】树莓派常见问题整理与解答

这篇博文整理了在使用树莓派的过程中常见的问题和解答,以及我自己在使用时遇到的问题与总结,供树莓派爱好者快速查阅。本文根据需要不断更新,也欢迎读者留言提问与补充。

一、基本操作与管理

Q: 树莓派的默认登录密码是什么?
A: 用户名: pi,密码: raspberry

Q: 树莓派如何解锁root?
A: 解锁方法如下:

#设置root密码
$sudo passwd root

#解锁root用户
$sudo passwd --unlock root

#切换当前用户到root
$su root

Q: 如何启动树莓派的图形界面?
A: 命令行中输入startx。如果要设置开机启动默认为图形模式,可使用 raspi-config 命令进行配置。

Q: 如何格式化输出当前系统时间?
A: 使用 date -d today +“格式化参数” 。如下例所示,引号内为格式化字符串,可自行修改为需要的格式:

date -d today +"%Y-%m-%d %H:%M:%S"

Q: 如何读取树莓派CPU和GPU的温度?
A: 查看CPU温度(读数除以1000):

$cat /sys/class/thermal/thermal_zone0/temp

查看GPU温度:

$/opt/vc/bin/vcgencmd measure_temp

Q: 如何修改树莓派HDMI显示的分辨率?

A: 修改SD卡中的 config.txt  配置文件,配置方法见此处

Q: 树莓派如何设置静态IP地址?
A: 修改 /etc/network/interfaces  配置文件,配置方法为:

iface eth0 inet static
address 192.168.1.100  # Static IP Address
netmask 255.255.255.0  # Netmask
gateway 192.168.1.1    # Gateway

Q: 如何查看树莓派当前进程与CPU使用情况?
A: 查看所有进程:ps -a ,查看CPU当前使用情况:top

Q: 如何查看树莓派当前内存及硬盘使用情况?
A: 使用 free 命令查看内存使用情况,也可以使用 free -m 以MB为单位显示。对应的可以使用 df 或者 df -m 查看硬盘使用情况。

Q: 如何查看树莓派已载入的模块和已加载的USB设备?
A: 分别使用 lsmod lsusb 命令。如果要查看所有加载的设备,直接输入 ls /dev 查看设备虚拟文件夹。

Q: 树莓派支持哪些USB摄像头?
A: 见 RPi USB Webcameras。支持的较好的还是罗技和微软的低分辨率型号。有些摄像头功耗较大,需要外部供电。

Q: 树莓派支持哪些USB无线网卡?
A: 见 RPi USB Wi-Fi Adaptors。推荐EDUP的迷你WiFi网卡以及树莓派官方销售的配套网卡。

Q: 树莓派如何配置无线网络?

A: 分为两步:1、设置wlan0接口,2、设置WiFi配置文件。

第一步,在树莓派命令行中输入:sudo vim /etc/network/interfaces

在打开的文件中添加:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

第二步,在树莓派命令行中输入:sudo vim /etc/wpa_supplicant/wpa_supplicant.conf

在打开的文件中末尾添加WiFi ssid和密码:

network={
ssid="无线网络ssid"
psk="无线网络密码"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}

插入无线网卡,重启树莓派即可。

Q: 树莓派如何和电脑之间传输数据?
A: 树莓派默认打开了SFTP服务,只需要使用专用的FTP软件(如 FlashFXP),并在登陆时选择SFTP方式登陆即可,连接URL填写树莓派的IP地址,而登陆的账号密码和开机密码相同。

Q: 树莓派兼容的SD卡?
A: 该页面给出了所有树莓派可以使用的SD卡型号和大小:RPi_SD_cards

二、多媒体

Q: 树莓派如何播放MP3音乐?
A: 因为树莓派没有音频输出,首先需要配一个USB声卡或者专用的Walfson扩展板。之后安装 mplayer 音乐播放器 sudo apt-get install mplayer。使用以下命令将当前目录下的所有MP3文件创建为一个Playlist:

find ./ -type f -iname "*.mp3" > playlist.m3u

Q: 树莓派如何播放视频?
A: 安装 omxplayer,支持 1080P 的 AVI 和 MP4 硬解码。

三、应用开发

Q: 树莓派支持哪些编程语言?
A: 树莓派自身包含了gcc / g++ 4.6 编译器,所以支持C和C++的开发;不过我推荐使用的语言还是Python,树莓派内置两个版本的Python,分别为 Python 2.7 和 Python 3.2。Python对于网络和串口的开发也有对应支持,而且也有支持Python的GPIO库 (RPi.GPIO)。

Q: 树莓派如何连接Arduino?
A: 三种方法,第一种为直接使用USB线缆进行连接,对于使用独立USB串口芯片的型号,在Linux中的显示名称为 /dev/ttyUSB0, 而对于使用另一片Arduino进行USB通信的型号显示为 /dev/ttyACM0;第二种为使用树莓派的IO串口进行通信,此方法的相关配置见此处;第三种方法还可以使用无线模块进行远程通信。

Q: 树莓派如何使用TTS功能?
A: 首先需要树莓派具有音频输出设备(如USB声卡)。下载festival程序库,sudo apt-get install festival。使用方法为:

$echo "Do not touch me. I am dangerous!" | festival --tts
$festival --tts Simple_Test.txt

Q: 如何操作树莓派的GPIO?
A: 可以使用RPi.GPIO, WiringPI或bcm2835 c库三种方法。我在另一篇博文”【RPi树莓派使用指南】树莓派接口定义及GPIO驱动方法“里详细介绍了这三种方法。

Q: 树莓派如何支持模拟量采集?
A: 目前还没有标准方案,不过可以通过与Arduino的通信实现模拟量采集及PWM输出功能。

Q: 树莓派如何安装OpenCV?
A: 执行以下命令安装OpenCV及Python支持库。

$sudo apt-get install libopencv-dev python-opencv

Q: 树莓派如何编译Kernel?
A: 见官方的“树莓派编译指南”及Argu的“树莓派 Kernel 编译笔记”。

【RPi树莓派使用指南】Raspberry PI网络配置与SSH远程登录

树莓派虽然支持鼠标、键盘和显示屏等交互外设,但是每次使用时都要连接很多线缆,很不方便。而使用远程登陆就不会有这些不便。之前在 【RPi树莓派使用指南】使用VNC远程查看桌面 一文中介绍了远程查看桌面的方法,但是远程查看桌面会占用大量网络带宽,影响操作速度。对于不需要查看图形桌面,只需要使用terminal的情况,这里再介绍一下使用SSH远程使用树莓派控制台的方法。

在配置远程登陆之前,最好将树莓派的IP地址由 DHCP 改为 静态IP 地址,这样可以保证树莓派每一次上电后在路由器上注册的地址是一致的,从而在远程登陆时不需要再去确认树莓派的当前IP。配置的方法是修改网络配置文件:

sudo nano /etc/network/interfaces

将eth0的相关配置由 dhcp 修改为 static,并增加要设置的静态IP地址、子网掩码和网关地址:

iface eth0 inet static
address 192.168.1.100  # Static IP Address
netmask 255.255.255.0  # Netmask
gateway 192.168.1.1    # Gateway

重新启动树莓派使配置生效。

远程登陆的软件推荐使用轻量级的PuTTY,该软件是绿色、单个文件的程序,其下载地址为:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

下载完成后运行PuTTY,输入树莓派的地址,并将连接模式选择为SSH(默认):

140910_puTTY
Figure 1.1  PuTTY的设置界面

点击 Open 建立连接,如果弹出警告窗口直接按确认即可。如果连接无误,将会看到输入用户和密码的提示,此时输入用户名 pi,密码 raspberry,即可完成远程连接的建立:

140910_puTTY2Figure 1.2  PuTTY登陆成功界面

连接成功之后,就可以像在本地操作树莓派一样通过 terminal 来操作树莓派了。

【RPi树莓派使用指南】树莓派连接HDMI显示器及配置方法

之前在”【RPi树莓派使用指南】使用VNC远程查看桌面“一文中介绍了在没有LCD的情况下,如何访问树莓派的图形桌面。不过有些时候还是外接显示屏比较方便,尤其是像用IDLE调试Python程序的时候。

因为树莓派只有AV和HDMI接口,而目前大多数电脑显示器都没有这两种接口,接电视上又不方便。淘宝上虽然有一些支持树莓派的显示模组,不过不仅价格贵,而且大多数尺寸都很小。

其实有一个很简单的方法,就是找一个迷你的液晶电视,因为现在的电视一般都会含有HDMI接口。我在ebay上就买到一个15.6寸的迷你液晶电视,可以直接用HDMI – HDMI线缆连接树莓派。其15.6寸的大小和有些笔记本一样大,携带也很便捷。对于基于pygame和Arduino的应用,有了显示屏确实会方便许多。

目前对普通电脑显示器增加HDMI接口也是趋势,相信不久也会有更多支持HDMI接口的液晶显示器了。当然对于普通的VGA显示器还可以使用VGA – HDMI转换器,不过这种方法不是很稳定,据说有些质量不好的转换器还会损坏树莓派的HDMI芯片,所以并不推荐。

DSC01302

不过在实际使用时,发现有时会出现屏幕显示不完全或字体过小的情况,此时就需要手动配置HDMI的显示分辨率。树莓派HDMI分辨率的配置方法如下:

Read more »

【RPi树莓派使用指南】树莓派电源系统解析

闲来无事,画了一张树莓派的电源系统结构:PI Power Tree

【RPi树莓派使用指南】树莓派串口通信介绍

树莓派的外部接口中含一路UART串行接口,利用该接口可以实现树莓派与Arduino、GPRS模块、GPS等其他外部系统的对接。

由于这一路串口兼做Linux的控制台输出口,所以在使用前必须先将调试输出功能关闭,方法如下:

1. 去除Kernel的启动信息

/boot/cmdline.txt 中,去除 parameterconsole=ttyAMA0,115200,并保存;

2. 去除Kernel的调试信息

同样在 /boot/cmdline.txt 中,去除 kgdboc=ttyAMA0,115200,并保存;

3. 关闭登陆提示

在 /etc/inittab 中去除 T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100,保存。

经过以上三步,就可以正常使用串行口了 (对于树莓派3,因为原生串口与蓝牙模块共用一组UART,还需要禁用蓝牙)。

(*)注意,因为树莓派与Arduino的串口电平不一致,必须使用电平转换芯片,或串联电阻限流,否则有可能损坏树莓派IO口!

编程时可以使用C语言以文件形式操作串口,也可以利用python的 python-serial 库进行编程。

这里以C语言为例,贴出示例代码:

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])  {
	int fd, len;
	fd = open("/dev/ttyAMA0", O_RDWR, S_IRUSR | S_IWUSR);
	char temp;

	while(1)  {

		len = read(fd, &temp, 1);

		if (len > 0)  {
			write(fd, &temp, 1);
			printf("%c", temp);
		}
		else  {
			usleep(10);
		}
	}

	close(fd);

	return 0;

}

该代码从串口中接收一个字符,接收成功后将该字符打印在控制台上并通过串口回发。

【修订历史】

v1.2   09/12/2014   调整了文字版式,增加了串口电平不一致的说明。
v1.1   09/11/2014   调整了代码的结构,增加了对代码的说明。