记录自己玩树莓派的日志
- 规格:4B,8G
- 官方网站
- 烧录系统
- 安装 Docker
- 学习面包版和接线,点亮小灯
- 学习接线,编写一个智能风扇
- 学习摄像头,小功能待定
- 申请域名,接入公网(方法:申请一个域名,和定时更新自己的 ip 到该域名上)
- 里程碑:Welcome Page,通过摄像头,实时记录一张图片到 Http 服务器中,可以通过公网访问这个主页,并定时更新 Readme 内容到主页中?(目的是让访问者可以观察到我的计划)
- 将此网站和公众号进行联动(联动内容暂未定)
- 学习 motor 相关驱动,步进电机?FOC控制板?Think More
- 学习 Python 的 OpenCV 库,学习人脸识别(使用 mediapipe 可快速实现)
- 学习 距离传感器
- 里程碑:制作一个遥控小车
- 里程碑:制作一个自动驾驶小车(基于简单的识别库 + 前置的机械控制)
- python 邮件模块
- python OpenCV,Google meidapipe
- yolo v5 基于 OpenCV 的实时对象识别库
- transformers github 上一个 5w star 的 AI 库,不少极客都引用了它
Date: 2021-11-04 增加一个新积木:ML,此前一直在学习,今晚看了几个好视频,故写了一篇 ML 的博客。希望能够在 raspberry 上用到。
Date: 2021-10-30
晚上尝试了一下 yolov5 的安装,发现 reaspberry 在安装 pytouch >= 1.7.0 的时候会遇到些问题,如下,调研过后发现 pytorch 在 32bit 的系统上不一定有适配的包。但是 youtube 上有人成功在 raspberry 上安装了 yolov5,故后面会继续了解一下。
yolov5 主要吸引我的地方,首先是识别的速度比较快,另外它提供了一套自己训练的模型的教程,这意味着可以训练自己的 model,为计算机视觉提供更多的可能。
Date: 2021-11-2
今晚会继续安装 yolov5,从这里 发现官方没有给 torch 提供 respberry 的包,所以需要自己下载相关的依赖。
By the way, pytorch has not provided an official compiled packages of arm32 (arm64 only); you need to download both packages in release here;
安装完成后,发现有一下错误。
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/dist-packages/torch/__init__.py", line 190, in <module>
from torch._C import *
ImportError: libopenblas.so.0: cannot open shared object file: No such file or directory
这篇文章同样给了解决的步骤:
*getting ImportError: libopenblas.so.0: cannot open shared object file or directory
you may need install this lib of system;
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
最终 torch 被顺利安装上了。
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>>
通过以上步骤安装好 torch 后,在 yolov5 requirement.txt 中去除 torch 相关的配置。然后执行 pip3 install -r requirement.txt
,假如网络条件好的话,安装会比较顺利的。我的 pi 所在的网络并不好,经常需要从电脑中下载好 *.whl
文件,通过 sftp 上传到 pi 中利用 pip3 进行安装。整体来说不方便,明显觉得 resberrypi 需要在一个还可以的网络环境下工作会更好,这或许是后面的计划之一。
最后 yolov5 在树莓派上的 demo 终于还是完成了。
Date: 2021-10-26
今晚上某云供应商买了一个域名 tenzi.fun,等待结果。。。(发现这个时间线应该倒序来写会比较好)
在购买完域名后,发现家里的网络需要接入公网才能使用这个 域名 。这不知道自己是不是公网 IP。
Date:2021-10-21
7.1 写代码还是需要 vscode,apt update && apt install code
就可以安装 vscode。方便!
7.2 简单地在 这个网站 过了一下 camera 的入门练习。
7.3 pi 在运行的时候突变变得比较慢,考虑到是温度问题,估通过命令 /opt/vc/bin/vcgencmd measure_temp
查看了温度,68°,接了风扇后降到 50°。
7.4 在 B 站看到了关于一个 Google 开发的 mediapipe 框架,这是基于 OpenCV 上,构建的一个 AI,用于捕捉某些物件的。所以考虑尝试一下,刚好有 raspberry4 的库,安装方法在这里。(树莓派有大量的极客库都被实现了),但 mediapipe-rpi4 库在国内的源都没有,安装起来有点慢,大概 36MB,20min 左右。
7.5 试了一下上述的视频的《手部跟踪》章节,非常容易就能够在 pi4 上实现下图的效果,代码也写好了,非常简单,非常有意思,但深夜了,先去休息。
import cv2
import mediapipe as mp
import time
cap = cv2.VideoCapture(0)
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils
while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = hands.process(imgRGB)
if results.multi_hand_landmarks:
for handLms in results.multi_hand_landmarks:
mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)
cv2.imshow("Image", img)
cv2.waitKey(1)
Date: 2021-10-19
6.1 今天在休息的时候无意中发现,tf 卡在大量读写时,会很容易达到寿命的极限。对此树莓派提供了一些延长使用 tf 卡的技巧,就是让 tf 设置为 read only 模式,然后日常编写的文件都会存在内存中,和正常使用无二,但一旦断电后,就必定需要将数据先另外提交。
Date: 2021-10-18
5.1 树莓派 apt-get 的安装速度很慢,可以考虑使用清华源,树莓派拥有更好的社区,这下子显示出来了。棒!这个数据源的下载速度确实非常快,后面在墙内安装东西,还是考虑一些源,节省生命。
5.2 得益于 B 站的小哥介绍,我做了一下 OpenCV 工具的安装。
pip3 install opencv-python # 偶尔会失败,需要重试
pip3 install opencv-contrib-python==4.1.0.25 #
apt-get install libatlas-base-dev
apt-get install libjasper-dev -y
apt-get install libqtgui4
apt-get install python3-pyqt5 -y
apt-get install libqt4-test
apt-get install libhdf5-dev -y
测试一下:
Python 3.7.3 (default, Jan 22 2021, 20:04:44)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.1.0'
>>>
Date:2021-10-18
4.1 今晚看了 B 站何同学的视频,他设计了一个桌面是带 LED 透明显示器。我想漂亮的电子硬件应该都有显示器,而显示器中,我觉得水墨屏是非常特点有意思的,所以花了一点时间调研。
4.2 发现 B 站的科技区还是挺多视频,符合需求的是这个,不过翻译是比较差。另外基于这个视频可以看到 微雪电子 会供应这类的屏幕和驱动板。
- Date:2021-10-15 晚上
- Subject: 学习面包板,阅读色环电阻,学习 GPIO 编程
3.1 面包板其实就是一个实验电路板,需要清楚里面的通电逻辑。在B站的这个视频里,我认为是讲述面包板最好的。
3.2 电子电路的电阻也是值得关注的,电阻的知识已经忘记得差不多了,需要花一点时间回顾一下。色环电阻的数值阅读需要另外学习,学习资料在此。但后面还是需要一个万用表协助一下.
3.3 有了上面的储备,可以先看看一份教程,由阮一峰写的,非常简单。但是他用的是 node js 写的。了解完代码后,需要读一下 raspberry 关于 gpio 在 python 上的文档,官方文档在此,也比较简单。
3.4 正式开始前,还可以选择使用 raspi-gpio 事先测试一下接口,需要 raspi-gpio help 一下就知道如何使用了。假如接线没问题,这个工具应该可以点亮 led 灯了。
3.5 最后编写一下 python 脚本如下:
# test for GPIO
import RPi.GPIO as GPIO
from time import sleep
led = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(led, GPIO.OUT)
i = 10
while i > 0:
GPIO.output(led, True) # 点亮 led
sleep(0.5)
GPIO.output(led, False) # 熄灭 led
sleep(0.5)
i -= 1
GPIO.cleanup() # 清理 GPIO
执行一下,小灯就会一闪一闪的了。nice,这是自己编写的代码第一次出现在自己眼前,有趣的事情即将发生。这些工程需要积累的东西还很多。期待
2.1 今晚花了点时间组装摄像头,后来发现 64bit 的 respberry OS 是不支持 raspistill 工具的。参考:官方 64bit-OS 反馈贴
2.2 鉴于考虑到 32bit 才是稳定的版本,故重刷 32bit 的系统到 TF 卡里。(重新下单了一个 64 GB的 TF 卡,以后长期用于树莓派,128G 的后面继续用于 64bit 的OS,毕竟 Docker 还是有用的),刷系统的时候,需要考虑 ssh 开启和 wifi 的自动连接。因为我没有显示器,故需要参考此贴
2.3 32bit 一开始遇到 VNC 连接桌面失败问题,参考了一下博客,调整一下显示器的分辨率就可以。
2.4 后面还会花一点时间去了解 OpenCV。
- python 库安装的时候最好使用国内的源,就像这样:
pip3 install package -i https://pypi.tuna.tsinghua.edu.cn/simple/
,参考 - OpenCV 在 B 站有搜索到这个比较简单的教程。
2.5 树莓派实验室,是最近几天看到的比较好的树莓派中文网站
2.6 最后摄像头的模块在 32bit OS 上测试通过,期待后面的功能
1.1 直接通过 TF 卡烧录了 64bit 的操作系统,在 BOOT 目录中。整个过程非常方便,让人很惊艳。步骤也比较简单
- 在官方网站下载镜像和写镜像工具
- 写镜像
- 在 /boot 目录添加 ssh、wifi 的配置(参考 Log 2.2)
- 插入 rasp pi,通电,重启
官方文档为叫我们烧录系统,提供了一个极其简单漂亮的 Video。
1.2 Docker 的安装可以参考,过程比较顺利。docker 安装完成后并不能马上启用,但 reboot 后就可以了。参考