LeoLan‘s Blog
Published on

树莓派Raspberry Pi基础

Authors
  • avatar
    Name
    Leo
    Twitter

推荐网站

http://maker.quwj.com/ http://shumeipai.nxez.com/


基础

烧写系统

win烧写工具:win32diskimager或Roadkil DiskImage或USBImageTool_v1.66汉化版

Mac/Linux:

法一:安装Etcher软件,一键烧写

法二:
# 要独占整个盘,先取消挂载
# Mac(也可以用umount)
diskutil list
sudo diskutil unmountDisk /dev/SD卡的标号     #如disk2

# Linux
df -h
umount /dev/SD卡的标号     #如disk2

cd /Users/Leo/Downloads/2018-03-13-raspbian-stretch
sudo dd bs=1m if=2018-03-13-raspbian-stretch.img of=/dev/rdisk2   #if of反过来可以提取镜像

用USB转串口线来显示

USB转串口线连接好树莓派的GND、VCC、TXD、RXD;就像这样。 mark

# 使用 screen 命令来连接RPI
# Linux 上 #
screen /dev/tty.USB0 115200

# OS X 上
screen /dev/cu.usbserial 115200

# Windows 请使用 Putty.exe

无显示器配置网络

如果已经连上了网络,并且知道ip,可以用vnc,但这里是还没连接上网络,而且Zero比较特殊,没有现成网口。

Zero或Zero W配置

1, 开启ssh
#添加一个文件名为ssh到boot目录下,内容为空。
touch /boot/ssh
(有显示器可以sudo raspi-config 选择:Interfacing Options 再选:ssh,打开)

2, 开机USB网卡
#烧写完系统后,编辑/boot/config.txt文件,在最后一行下,另起一行添加:
dtoverlay=dwc2

#打开/boot/cmdline.txt文件。找到rootwait,在其之后空一格添加:
modules-load=dwc2,g_ether


3, 配置wifi
这里wpa.conf配置文件的位置可以自己修改, 一般情况下是创建在sd卡的/etc/目录下,把其位置设置到sd卡的boot/目录下主要是为了能够在windows下直接修改配置文件,以后方便移植。
# 原配置文件:/etc/wpa_supplicant/wpa_supplicant.conf

vim /boot/wpa.conf
network={
    ssid="leo-home"
    key_mgmt=WPA-PSK
    psk="你的密码"
    priority=5
}

ssid表示WiFi的SSID号,
key_mgmt表示加密类型,
key_mgmt=NONE表示没有密码或者WEP,
key_mgmt=WPA-PSK表示WPA/WPA2加密,
psk表示密码,没有密码就不用写,
priority表示优先级,大的优先连接。


# 修改网络配置文件
vim /etc/network/interfaces
auto lo
iface lo inet loopback

iface eth0 inet manual

#usb网卡部分
allow-hotplug usb0
auto usb0
iface usb0 inet static
    address 192.168.99.5
    netmask 255.255.255.0
    gateway 192.168.99.1
    dns-nameservers 8.8.8.8
#或者DHCP
allow-hotplug usb0
auto usb0
iface usb0 inet dhcp

#wifi部分
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
    wpa-conf /boot/wpa.conf



4, 然后系统卡装回树莓派开机
ssh pi@raspberrypi.local
如果用windows,需要安装两个软件,远程登录软件PuTTy和解析raspberrypi.local的ip地址的Bonjour

参考: http://shumeipai.nxez.com/2017/06/22/raspberry-pi-no-keyboard-network-boot-configuration.html http://www.cnblogs.com/sjqlwy/p/zero_otg.html https://blog.csdn.net/px_528/article/details/71725251


屏幕设置

驱动下载

**注意:**常用屏幕有LCD、OLDE、TFT ;常用的显示技术有:VA、IPS、TN、TFT(TFT就是指一类,即是指屏幕,也是指一种显示技术)

常用屏幕,没有列出的可以去到首页去找。 ♦ 2.8inch RPi LCD (A) ♦ 3.2inch RPi LCD (B) ♦ 3.5inch RPi LCD (A) ♦ 3.5inch RPi LCD (B) ♦ 3.5inch HDMI LCD ♦ 4inch HDMI LCD ♦ 4inch RPi LCD (A) ♦ 4.3inch HDMI LCD ♦ 5inch HDMI LCD ♦ 5inch HDMI LCD (B) ♦ 7inch HDMI LCD ♦ 7inch HDMI LCD (B) ♦ 7inch HDMI LCD (C) ♦ 10.1inch HDMI LCD ♦ 10.1inch HDMI LCD (H) ♦ 10.1inch HDMI LCD (B)

参考:https://blog.csdn.net/kxwinxp/article/details/78447730


LCD屏幕

屏幕驱动(通用,适合多尺寸)

不需要外接电源,直接接GPIO口,需安装屏幕驱动;

# 使用LCD屏幕显示
wget http://www.waveshare.net/w/upload/3/34/LCD-show-180331.tar.gz
tar zxvf LCD-show-180331.tar.gz
cd LCD-show/
./LCD35B-show   #安装驱动,安装完会自动重启树莓派
./LCD5-show     #5寸屏幕,有多个尺寸的可执行文件
这里使用3.5寸非IPS屏,所以是LCD35B-show

# 切换到HDMI显示,切换到LCD执行上面的命令
cd LCD-show/
./LCD-hdmi

# 设置屏幕方向
# 旋转0度:
cd LCD-show/
./LCD35B-show 0

# 旋转90度:
cd LCD-show/
./LCD35B-show 90

# 旋转180度:
cd LCD-show/
./LCD35B-show 180

# 旋转270度:
cd LCD-show/
./LCD35B-show 270

**注意:**执行apt-get upgrade会导致LCD无法正常工作。此时需要编辑SD卡中的 config.txt 文件,并删除这一句:dtoverlay=ads7846。

屏幕校准

wget http://www.waveshare.net/w/upload/3/37/Xinput-calibrator_0.7.5-1_armhf.zip
unzip Xinput-calibrator_0.7.5-1_armhf.zip
cd xinput-calibrator_0.7.5-1_armhf/
dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb

1,点击任务栏的Menu键,选择Preferences -> Calibrate Touchscreen。
2,按显示提示进行触摸校准。此过程可能需要重启以生效。
3,如果要保存这些触摸值,将触摸参数(屏幕输出数据)保存至/etc/X11/xorg.conf.d/99-calibration.conf,即可(如果已存在则不需要新建,直接修改)

HDMI屏幕

HDMI屏幕分辨率一般高一点,需外接电源,接HDMI输出,直接改配置文件就行,触屏需要接GPIO并安装驱动(方法参考上面LCD驱动安装方法)。

vim /boot/config.txt
# 修改以下三项,保存重启
hdmi_drive=2   #1为DVI模式 (没声音),2为HDMI模式 (如果支持并已启用将有声音输出)
hdmi_group=2   #1为CEA规定的电视规格分辨率  2为计算机显示器使用的分辨率
hdmi_mode=14   #选择屏幕分辨率和刷新频率 14为:848x480   60Hz

# 以下是强制输出指定分辨率
disable_overscan=1
framebuffer_width=1280
framebuffer_height=1024
hdmi_ignore_edid=0xa5000080  #不检测HDMI设备的任何信息,按照指定的分辨率输出。

参考: https://blog.csdn.net/kxwinxp/article/details/78447730 http://www.waveshare.net/wiki/3.5inch_RPi_LCD_%28B%29


屏幕参数设置参考

CEA分辨率 以下是CEA规定的电视规格分辨率。这些分辨率的hdmi_group=1。

hdmi_mode=1    VGA
hdmi_mode=2    480p  60Hz
hdmi_mode=3    480p  60Hz  H
hdmi_mode=4    720p  60Hz
hdmi_mode=5    1080i 60Hz
hdmi_mode=6    480i  60Hz
hdmi_mode=7    480i  60Hz  H
hdmi_mode=8    240p  60Hz
hdmi_mode=9    240p  60Hz  H
hdmi_mode=10   480i  60Hz  4x
hdmi_mode=11   480i  60Hz  4x H
hdmi_mode=12   240p  60Hz  4x
hdmi_mode=13   240p  60Hz  4x H
hdmi_mode=14   480p  60Hz  2x
hdmi_mode=15   480p  60Hz  2x H
hdmi_mode=16   1080p 60Hz
hdmi_mode=17   576p  50Hz
hdmi_mode=18   576p  50Hz  H
hdmi_mode=19   720p  50Hz
hdmi_mode=20   1080i 50Hz
hdmi_mode=21   576i  50Hz
hdmi_mode=22   576i  50Hz  H
hdmi_mode=23   288p  50Hz
hdmi_mode=24   288p  50Hz  H
hdmi_mode=25   576i  50Hz  4x
hdmi_mode=26   576i  50Hz  4x H
hdmi_mode=27   288p  50Hz  4x
hdmi_mode=28   288p  50Hz  4x H
hdmi_mode=29   576p  50Hz  2x
hdmi_mode=30   576p  50Hz  2x H
hdmi_mode=31   1080p 50Hz
hdmi_mode=32   1080p 24Hz
hdmi_mode=33   1080p 25Hz
hdmi_mode=34   1080p 30Hz
hdmi_mode=35   480p  60Hz  4x
hdmi_mode=36   480p  60Hz  4xH
hdmi_mode=37   576p  50Hz  4x
hdmi_mode=38   576p  50Hz  4x H
hdmi_mode=39   1080i 50Hz  reduced blanking
hdmi_mode=40   1080i 100Hz
hdmi_mode=41   720p  100Hz
hdmi_mode=42   576p  100Hz
hdmi_mode=43   576p  100Hz H
hdmi_mode=44   576i  100Hz
hdmi_mode=45   576i  100Hz H
hdmi_mode=46   1080i 120Hz
hdmi_mode=47   720p  120Hz
hdmi_mode=48   480p  120Hz
hdmi_mode=49   480p  120Hz H
hdmi_mode=50   480i  120Hz
hdmi_mode=51   480i  120Hz H
hdmi_mode=52   576p  200Hz
hdmi_mode=53   576p  200Hz H
hdmi_mode=54   576i  200Hz
hdmi_mode=55   576i  200Hz H
hdmi_mode=56   480p  240Hz
hdmi_mode=57   480p  240Hz H
hdmi_mode=58   480i  240Hz
hdmi_mode=59   480i  240Hz H
H means 16:9 variant (of a normally 4:3 mode).
2x means pixel doubled (i.e. higher clock rate, with each pixel repeated twice)
4x means pixel quadrupled (i.e. higher clock rate, with each pixel repeated four times)

DMT分辨率 以下是计算机显示器使用的分辨率。这些分辨率的hdmi_group=2。

hdmi_mode=1    640x350   85Hz
hdmi_mode=2    640x400   85Hz
hdmi_mode=3    720x400   85Hz
hdmi_mode=4    640x480   60Hz
hdmi_mode=5    640x480   72Hz
hdmi_mode=6    640x480   75Hz
hdmi_mode=7    640x480   85Hz
hdmi_mode=8    800x600   56Hz
hdmi_mode=9    800x600   60Hz
hdmi_mode=10   800x600   72Hz
hdmi_mode=11   800x600   75Hz
hdmi_mode=12   800x600   85Hz
hdmi_mode=13   800x600   120Hz
hdmi_mode=14   848x480   60Hz
hdmi_mode=15   1024x768  43Hz  DO NOT USE
hdmi_mode=16   1024x768  60Hz
hdmi_mode=17   1024x768  70Hz
hdmi_mode=18   1024x768  75Hz
hdmi_mode=19   1024x768  85Hz
hdmi_mode=20   1024x768  120Hz
hdmi_mode=21   1152x864  75Hz
hdmi_mode=22   1280x768        reduced blanking
hdmi_mode=23   1280x768  60Hz
hdmi_mode=24   1280x768  75Hz
hdmi_mode=25   1280x768  85Hz
hdmi_mode=26   1280x768  120Hz reduced blanking
hdmi_mode=27   1280x800        reduced blanking
hdmi_mode=28   1280x800  60Hz
hdmi_mode=29   1280x800  75Hz
hdmi_mode=30   1280x800  85Hz
hdmi_mode=31   1280x800  120Hz reduced blanking
hdmi_mode=32   1280x960  60Hz
hdmi_mode=33   1280x960  85Hz
hdmi_mode=34   1280x960  120Hz reduced blanking
hdmi_mode=35   1280x1024 60Hz
hdmi_mode=36   1280x1024 75Hz
hdmi_mode=37   1280x1024 85Hz
hdmi_mode=38   1280x1024 120Hz reduced blanking
hdmi_mode=39   1360x768  60Hz
hdmi_mode=40   1360x768  120Hz reduced blanking
hdmi_mode=41   1400x1050       reduced blanking
hdmi_mode=42   1400x1050 60Hz
hdmi_mode=43   1400x1050 75Hz
hdmi_mode=44   1400x1050 85Hz
hdmi_mode=45   1400x1050 120Hz reduced blanking
hdmi_mode=46   1440x900        reduced blanking
hdmi_mode=47   1440x900  60Hz
hdmi_mode=48   1440x900  75Hz
hdmi_mode=49   1440x900  85Hz
hdmi_mode=50   1440x900  120Hz reduced blanking
hdmi_mode=51   1600x1200 60Hz
hdmi_mode=52   1600x1200 65Hz
hdmi_mode=53   1600x1200 70Hz
hdmi_mode=54   1600x1200 75Hz
hdmi_mode=55   1600x1200 85Hz
hdmi_mode=56   1600x1200 120Hz reduced blanking
hdmi_mode=57   1680x1050       reduced blanking
hdmi_mode=58   1680x1050 60Hz
hdmi_mode=59   1680x1050 75Hz
hdmi_mode=60   1680x1050 85Hz
hdmi_mode=61   1680x1050 120Hz reduced blanking
hdmi_mode=62   1792x1344 60Hz
hdmi_mode=63   1792x1344 75Hz
hdmi_mode=64   1792x1344 120Hz reduced blanking
hdmi_mode=65   1856x1392 60Hz
hdmi_mode=66   1856x1392 75Hz
hdmi_mode=67   1856x1392 120Hz reduced blanking
hdmi_mode=68   1920x1200       reduced blanking
hdmi_mode=69   1920x1200 60Hz
hdmi_mode=70   1920x1200 75Hz
hdmi_mode=71   1920x1200 85Hz
hdmi_mode=72   1920x1200 120Hz reduced blanking
hdmi_mode=73   1920x1440 60Hz
hdmi_mode=74   1920x1440 75Hz
hdmi_mode=75   1920x1440 120Hz reduced blanking
hdmi_mode=76   2560x1600       reduced blanking
hdmi_mode=77   2560x1600 60Hz
hdmi_mode=78   2560x1600 75Hz
hdmi_mode=79   2560x1600 85Hz
hdmi_mode=80   2560x1600 120Hz reduced blanking
hdmi_mode=81   1366x768  60Hz
hdmi_mode=82   1080p     60Hz
hdmi_mode=83   1600x900        reduced blanking
hdmi_mode=84   2048x1152       reduced blanking
hdmi_mode=85   720p      60Hz
hdmi_mode=86   1366x768        reduced blanking

参考: http://shumeipai.nxez.com/2013/08/31/custom-display-resolution-raspberry-pie.html HDMI-VGA转换器黑屏的排障方案:http://shumeipai.nxez.com/2013/08/31/hdmi-vga-converter-black-screen-troubleshooting-program.html


VNC远程登录树莓派

配置此项的前提是已经连接上网络并且已经知道ip了(ip可以看路由或者arp -a)。 树莓派默认账户密码是:pi raspberry 新版树莓派

sudo raspi-config
选择:Interfacing Options
再选:VNC,打开
然后用树莓派的账户密码登录。

老版本

sudo apt-get install tightvncserver
vncpasswd     #设置vnc密码,两次输入,第三次是配置文件密码,可以no

#开机启动脚本
注:少数玩家默认用户不是pi的请自行更改USER变量
vim /etc/init.d/tightvncserver

#!/bin/sh

### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO

# More details see:
# http://www.penguintutor.com/linux/tightvnc

### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
# 用户名
export USER='pi'
### End customization required

eval cd ~$USER

case "$1" in
  start)
    # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
    su $USER -c '/usr/bin/tightvncserver -depth 16 -geometry 800x600 :1'
    echo "Starting TightVNC server for $USER "
    ;;
  stop)
    # 终止命令行。此处控制台号码与启动一致。
    su $USER -c '/usr/bin/tightvncserver -kill :1'
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0


sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

# 启动
tightvncserver

参考:http://shumeipai.nxez.com/2013/09/04/login-rpi-with-vnc.html


命令行管理wifi

https://blog.csdn.net/xukai871105/article/details/38170513


键盘设置(欧、美键盘标准切换)

https://blog.csdn.net/xukai871105/article/details/38374197

参考: http://shumeipai.nxez.com 树莓派配置文档 config.txt 说明2 树莓派配置文档 config.txt 说明2 http://conanwhf.github.io/2016/01/12/rpi-start/


设置系统语言

https://blog.csdn.net/TheBlackbeard/article/details/53488839


虚拟键盘

apt-get -y install ttf-wqy-zenhei   #安装字体
apt-get install matchbox-keyboard
或
apt-get install Florence
# 然后重启,在附件里找Keyboard,如果没有,就在Application里面勾选该应用。

参考:https://blog.csdn.net/howiexue/article/details/78181871


任务栏

误删恢复

#(后面-pi为用户名 如果没有改过用户名就不管他) 删除配置文件
$ rm -rf ~/.config/lxpanel/LXDE-pi 
#重启
$ sudo reboot

smb文件共享

# centos匿名共享参考:https://yelog.org/2017/07/03/CentOS7-anonymous-Samba/

apt-get samba samba-common-bin -y

vim /etc/samba/smb.conf
# 在最底部加上以下部分
# 设置的后面不能有字符,包括空格,= 后的任何字符都会作为参数传进去。
[Public]
   #共享文件夹说明
   comment = Public Storage
   #共享文件夹目录
   path = /home/pi/dev
   read only = no
   #创建文件的权限
   create mask = 0777
   # 创建文件夹的权限
   directory mask = 0777
   # guest无密码访问
   guest ok = yes
   # 可见
   browseable = yes

# 重启服务
samba restart
chmod -R 777 /home/pi/dev
# 现在就可以访问了

密码访问参考:http://www.waveshare.net/study/portal.php?mod=view&aid=599

换源

vim /etc/apt/sources.list
# 注释掉原来的
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

vim /etc/apt/sources.list.d/raspi.list
# 注释掉原来的
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui

apt-get update

使用HTTPS可以有效避免国内运营商的缓存劫持,但需要事先安装apt-transport-https

系统备份还原、镜像制作

http://conanwhf.github.io/2016/08/25/rpi-cloneimg/ 一个超好用的备份工具:https://github.com/billw2/rpi-clone


扩展python2必要环境

# python必要环境
apt-get install build-essential python-dev python-distlib python-setuptools python-pip python-wheel libzmq-dev libgdal-dev

# sklearn
apt-get install python-sklearn

# opencv
apt-get update   
apt-get upgrade   
apt-get install libopencv-dev  
apt-get install python-opencv

# Tkinter
apt-get install tk tk-dev tcl tcl-dev

Miniconda、Anacodna(Python3版)

wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
bash Miniconda3-latest-Linux-armv7l.sh
然后 Enter 看安装协议,然后输入 yes 同意并开始安装,

接下来会提示是否更改默认路径,其默认路径是 /root/miniconda3 ,
为了使用方便,将安装路径设置成用户目录之下,具体路径为 /home/pi/miniconda3(直接粘贴后回车)

最后提示是否加入环境变量,输入yes;会自动替换掉系统自带的python3(python2不受影响)
# 备份系统自带的python3和pip3
mv /usr/bin/python3{,.bak}
mv /usr/bin/pip3{,.bak}

然后执行链接pip3(系统自带的pip(pip2)不受影响)
ln -s /home/pi/miniconda3/bin/pip /usr/bin/pip3

# 换源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

# 更新
chown pi:pi -R /home/pi/miniconda3
conda update conda

完成!

卸载看conda --help
卸载不了可以直接删除文件,链接好系统原来的python3和pip3

参考:https://www.jianshu.com/p/24931aa48855


Pi Dashboard (Pi 仪表盘)

apt-get update
apt-get install nginx php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mcrypt php7.0-cgi
systemctl start nginx
systemctl start php7.0-fpm

# Nginx 的根目录在 /var/www/html
vim /etc/nginx/sites-available/default

将其中的如下内容

location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
替换为

location / {
index  index.html index.htm index.php default.html default.htm default.php;
}
 
location ~\.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

# 重启nginx
systemctl restart nginx

apt-get install git
cd /var/www/html
git clone https://github.com/spoonysonny/pi-dashboard.git
mv pi-dashboard/* .
rm -rf pi-dashboard
chown -R www-data .

# 打开浏览器访问:http://树莓派IP

参考:http://shumeipai.nxez.com/2018/04/25/install-pi-dashboard-with-nginx-php7-on-pi.html


树莓派LNMP环境

http://shumeipai.nxez.com/2013/08/25/install-and-config-lnmp.html


树莓派上 Docker 的安装和使用

http://shumeipai.nxez.com/2019/05/20/how-to-install-docker-on-your-raspberry-pi.html



参考资料:

http://www.nrjs.cn http://www.52pi.net 树莓派各种外壳:https://elinux.org/RPi_Cases