树莓派Raspberry Pi基础
     分类:物联网     有: 0 条评论

树莓派Raspberry Pi基础

     分类:物联网     有: 0 条评论

推荐网站

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


基础

烧写系统

win烧写工具:win32diskimagerRoadkil DiskImageUSBImageTool_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

(●゚ω゚●)