从买到树莓派开始折腾,遇坑无数。虽然网上有教程,还是很难顺利安装,各种错误不断。这里概括写下安装步骤,以避开坑点。程序来源于网上整理仅供个人参考。
一、新卡准备
1、SD Formatter格式化tf卡。
2、win32diskimager写入官网img镜像,不能选错盘。
3、在windows下,在boot分区新建ssh空白文件,这是为了首次开机能使用ssh方式登录树莓派,避免权限不足无法登录。
4、开机wifi
( a)第二个linux格式分区在window下打不开,下载绿色版DiskGenius打开这个分区,提前将连接wifi的账号和密码写到文件wpa_supplicant.conf,格式为
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
network={
ssid=" " #此处写你的wifi账号
psk=" " #此处写wifi密码
key_mgmt=WPA-PSK
priority=1 #此处表示wifi连接优先级,可以不写
}
network={
ssid=" " #此处写你的wifi账号
psk=" " #此处写wifi密码
key_mgmt=WPA-PSK
priority=2
}
将几个常用的wifi都写进去。
为了携带到别处时可用ssh,有个方法,用笔记本电脑的热点,不管到哪都能用。
(b)用diskgenius将本文件拷进/ect/wpa_supplicant/,这样开机后能自动连接wifi
二、ssh登录树莓派
1、有路由器密码的话,在路由器管理界面查看ip地址,没有的话用ip地址扫描.找到ip地址。
2、打开SecureCRT或者putty,输入树莓派ip(这里假设地址为192.168.1.100)地址或者主机名称(我改成rpi了),再输入账号和密码,设置ssh登录树莓派。
3、在windowd控制台cmd命令行中输入ssh -p22 [email protected],输入密码也可以登录操作。(输入密码时不显示)
4、如果有笔记本热点,就不担心没有密码上不了网的问题。
5、在ssh界面输入vncserver,记下最后的地址和端口。
6、打开VNC-Viewer,生成可视桌面。
一、更新升级源
1、扩充卡容量
sudo raspi-config
查看tf卡容量的命令df -H(df -P也可以)
扩容后用df -H查看容量还不对,或者扩容出错,用
sudo resize2fs /dev/mmcblk0p2
刷新下试试
2、在linux控制台输入
sudo vi /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
就可以使用清华镜像源
再如中科大镜像源
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
我在华东,用的是浙江大学的源
deb http://mirrors.zju.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.zju.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
用”#“注释掉原来的源
#deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi
3、再改另一处
sudo vi /etc/apt/sources.list.d/raspi.list
第一行改
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
4、执行更新
sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get dist-upgrade ; sudo rpi-update -y
这里很坑,rpi-update用各个镜像源在家一晚没升级成功,改镜像为浙江大学,在学校里5分钟内升级完成。
二、系统备份
树莓派系统安装费时费力,一次不正常关机就可能启动不了,所以备份很有必要。请参考
https://blog.csdn.net/zhshh123/article/details/85063916
这个脚本是自动运行的,生成的备份镜像默认存储在U盘, 但是当镜像文件大小超过4G时,fat32格式U盘无法存放,我的树莓派又无法写入ntfs格式U盘。一个解决方法是U盘格式化为ext4,再用Ext2 Volume Manager打开备份文件复制到硬盘。一次备份约20分钟,文件大小约几个G
一、linux命令备忘
sudo apt-get install tk-dev libncurses5-dev
sudo apt-get install libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev
sudo apt-get install libsqlite3-dev libbz2-dev libexpat1-dev
sudo apt-get install liblzma-dev zlib1g-dev libffi-dev libssl-dev
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev python3-dev
sudo apt-get install libatlas-base-dev liblapack-dev gfortran
-y 表示不提示直接安装
安装包缓存不够时
sudo apt-get clean
三、新安装python
1、如果想安装新版python,要先删除旧版python,这里要慎重,新版兼容可能不好,可能会安装不了库
删除旧版python
sudo apt-get remove --purge python3 #pip3 uninstall 删不掉
2、查看pip支持的安装包格式,确定是否能安装再下载
python3
import pip._internal
print(pip._internal.pep425tags.get_supported())
很多情况,pip install无法安装包,就要看版本支持
3、修改pip升级的包来源,使用国内镜像源
sudo vi ~/.pip/pip.conf
输入
[global]
index-url = https://pypi.mirrors.ustc.edu.cn/simple/
[install]
trusted-host=pypi.mirrors.ustc.edu.cn
4、下载安装离线包Python
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
5、解压编译安装
tar xf Python-3.6.8.tar.xz
cd Python-3.6.8
./configure --prefix=/usr/local/opt/python-3.6.8
make -j 4
sudo make install
6、修改python3.5和pip3.5的链接
7、多版本共存时,修改输入python时默认的python版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
在更改默认版本时输入命令选择需要的版本
update-alternatives --list python
update-alternatives --config python
8、升级pip
sudo pip3 install --upgrade pip
如果出错,下载好新版本安装包,如pip-19.1.1-py2.py3-none-any.whl,输入
sudo pip install --upgrade pip-19.1.1-py2.py3-none-any.whl
(四)、安装科学工具包
在这几个软件安装过程中遇坑无数,不是无法编译,就是版本不兼容、缺少库文件等,有时安装一小时屏幕都不动,树莓派假死了,ssh断开连接了。
一、安装numpy
先删除旧版,不是用pip3 uninstall命令(卸载不掉),改为
sudo apt-get remove python3-numpy
pip3安装新版numpy
sudo pip3 install --upgrade numpy
出错的话,下载安装
wget https://files.pythonhosted.org/packages/93/48/956b9dcdddfcedb1705839280e02cbfeb2861ed5d7f59241210530867d5b/numpy-1.16.3.zip
sudo pip3 install --upgrade numpy-1.16.3.zip
若还出错,那只能安装旧版(一定要加上数字3)
sudo apt-get install python3-numpy
二、安装scipy
sudo pip3 install --upgrade scipy
出错就用
wget https://www.piwheels.org/simple/scipy/scipy-1.2.1-cp35-cp35m-linux_armv7l.whl
sudo pip3 install --upgrade scipy
三、安装matplotlib
wget https://files.pythonhosted.org/packages/26/04/8b381d5b166508cc258632b225adbafec49bbe69aa9a4fa1f1b461428313/matplotlib-3.0.3.tar.gz
sudo pip install --upgrade matplotlib
四、安装pyaudio
sudo apt-get install portaudio19-dev
pip3 install pyaudio
不要安装python-pyaudio,因版本问题安装会出错,还导致其它包的安装都提示错误
五、安装opencv
1、更改swap文件大小
(1)默认为 CON_SWAPSIZE= 100 M的交换空间, 更改为1024 M
sudo vi /etc/dphys-swapfile
修改CON_SWAPSIZE= 1024 M,记得要改回
(2)重新启动dphys-swapfile 文件服务
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
2、cmake预编译
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_opencv_python2=OFF \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv4_contrib/modules \
-D BUILD_EXAMPLES=ON ..
反斜杠“\”前面有空格,后面没有空格,命令结尾有两个点
此时会下载一些文件,最后会提示generate成功
3、漫长的编译
编译命令
sudo make && make install
sudo ldconfig
如果中途断开连接或者cpu假死,还要重来。
4、swap文件改回100M
5、测试摄像头
首先要raspi-config打开摄像头硬件camera
1) 拍照在终端执行:
raspistill -o image.jpg
2) 摄像在终端执行:
raspivid -o video.h264 -t 10000 # 拍10秒视频
6、cv2调用摄像头
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while(True):
ret, frame = cap.read()
frame = cv2.flip(frame, -1) # Flip camera vertically
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', frame)
cv2.imshow('gray', gray)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
waitKey(30)可改大点waitKey(300),我用waitKey(30)时会自动重启。
六、系统崩溃重启和无法启动
1、有时树莓派工作中就重启了,想知道是否温度过高,用命令
cat /sys/class/thermal/thermal_zone0/temp
或者
vcgencmd measure_temp
watch -n 2 "vcgencmd measure_temp"
-n 2 表示显示速度为2秒自动刷新
2、如果树莓派不能启动,出现
KERNEL PANIC: VFS Unable to mount root fs on unknown-block(179,2)
这多数是分区坏了。要有两张可启动的tf卡,或者一个linux虚拟机,尝试启动进入linux系统修复损坏卡的分区,启动linux挂载损坏卡的读卡器,输入
fdisk -l
查看分区标记为sda2,此处sda2由fsidk读出,每次开机可能不一样。分区扫描操作可能有风险。
先卸载分区sda2。
sudo umount /dev/sda2
再扫描分区sda2
sudo fsck -f -v -r /dev/sda2
3、树莓派正常工作,足额输出的电源很重要
劣质电源输出电流不够,会导致无法启动,摄像头不能正常工作,反复重启。即使5V2A电源加上摄像头后都不一定够用。
(六)、小结
到这里总算能让树莓派工作了,前后花了两周时间。想学习物联网,要学的很多,第一步是熟悉linux系统。