持续一年的电影——树莓派 zero与4.2寸水墨屏制作电子相框
创作立场声明:本文中涉及的所有物件都是自费购入。发表文章是为了和大家交流,希望有机会学到一些专业知识。然而每个人的经验、立场各不相同,文中的观点与方法偏重不同,客观与否还请大家指正,期待深入探讨交流。
0 参考资料与硬件清单
0.1 参考资料
0.2 硬件清单
① 树莓派zero
② 4.2寸墨水屏
③ SD卡
④ microUSB数据线
1 准备工作
1.1 USB直接访问树莓派zero
① 将树莓派镜像烧录至SD卡中。
② 修改配置文件
由于我的电脑中无法显示SD卡中的分区,这里使用DiskGenius读取SD卡中的boot目录。将boot目录下的config.txt和cmdline.txt复制到电脑中。
先在config.txt 文件末尾添加一行 dtoverlay=dwc2
而后修改 cmdline.txt 文件,编辑这个文件的时候不需要插入任何换行符,所有字符都在同一行。找到 rootwait,在后面插入 modules-load=dwc2,g_ether。
而后将这两个文件通过DiskGenius复制到SD卡boot目录下,并覆盖掉原始文件。
③ 在boot目录下创建一个名为ssh的目录。
④ 打开Windows设备管理器,记住现有的串口。
⑤ 将SD安装至树莓派zero中,而后使用micro usb to USB A数据线将树莓派的OTG口连接至电脑中。
这时 Windows 会自动识别到树莓派,并尝试安装驱动。Windows 10中会把树莓派识别为串口。此时观察找到多出来的串口。
⑥ 下载RNDIS驱动。驱动下载连接
⑦ 选择设备管理器中多出来的串口,右键,更新驱动。
选择浏览文件夹
![选择驱动]!(/api/file/getImage?fileId=5ff7c2f1f91596045e000011)
选择解压出来的驱动文件
更新完毕。
⑦ 打开 PuTTY,在地址栏中输入 raspberrypi.local
打开后即可正常连接。
⑧ 设置更改用户密码
passwd #更改pi用户密码,默认为raspberrysudo passwd #更改root用户密码
⑨ 树莓派zero不支持WiFi,因此将主机网络共享给树莓派zero。
打开windows更改适配器选项
选择共享选项卡
而后选择树莓派网卡,在我电脑上是以太网4.
设置完成之后,树莓派zero就可以通过电脑连接到网络。可以通过SFTP向树莓派传输文件。
1.2 硬件连接
如果是微雪家的屏幕可以使用他们自己的驱动板,直接插到树莓派的GPIO上。如果是像我一样购买其他家的裸屏,则可以对照微雪提供的表格连接。
连接后如图所示
1.3 基本环境准备
① 使能树莓派SPI
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config选择Interfacing Options -> SPI -> Yes 开启SPI接口
完成之后,重启树莓派。
sudo reboot
② 安装基本库环境
1)安装BCM2835, 打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.68.tar.gz
tar zxvf bcm2835-1.68.tar.gz
cd bcm2835-1.68/
sudo ./configure && sudo make && sudo make check && sudo make install
2)安装wiringPi
sudo apt-get install wiringpi
#对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
3)安装Python函数库
#python2
sudo apt-get update
sudo apt-get install python-pip
sudo apt-get install python-pil
sudo apt-get install python-numpy
sudo pip install RPi.GPIO
sudo pip install spidev
#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev
③ 安装ffmpeg
1)安装sdl2
sudo apt-get install libsdl2-dev
2)安装x264
#安装git
sudo apt-get install git
git clone --depth 1 https://gitee.com/xavier18/x264
#使用gitee源
# 进入文件
cd x264./configure --host=arm-unknown-linux-gnueabi --enable-static --disable-opencl
make -j4
sudo make install
3)安装ffmpeg
git clone git://source.ffmpeg.org/ffmpeg --depth=1
cd ffmpeg
./configure --arch=armel --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree
make -j4
sudo make install
树莓派zero的性能真的是弱鸡,编译到天荒地老。。。编译完成后还发现有错误。
后来我发现直接使用sudo apt-get install ffmpeg就可以直接安装。网上的教程更新的太慢了。推荐使用apt-get直接安装。
4)安装ffmpeg-python
GitHub地址:https://github.com/kkroening/ffmpeg-python
git上有例子和API文档,虽然API并不详尽
pip install ffmpeg-python
2 软件安装与设置
2.1 下载安装驱动软件与测试例程
下面来下载并安装驱动软件和测试程序到树莓派上。
git clone https://github.com/TomWhitwell/SlowMovie/
cd SlowMovie/e-paper/RaspberryPi&JetsonNano/pythonsudo python setup.py install
如果一切正常的话,运行下面的代码示例,墨水屏会显示不同的图案。
python examples/epd_7in5_V2_test.py
上面的步骤都测试通过之后,就可以正式开始了。进入 SlowMovie 目录。
该程序使用了ffmpeg-python、PIL 库。请确保之前已经安装完成。运行 helloworld 查看效果。
python helloworld.py
2.2 修改程序配置
由于例程上使用的是微雪7.5寸墨水屏。我们需要将它的驱动改为4.2寸屏幕。修改文件为slowmovie.py。我测试使用epd_4in2_test.py可以驱动。因此将程序中的驱动替换如下。
①
替换前:
替换后:
②
替换前:
替换后:
③ 修改屏幕分辨率 ,修改为400×300
然后将slowmovie.py上传到树莓派zero中,并覆盖。
如果上面的步骤都正常工作,那么你可以通过 SFTP 传输更多视频文件到 SlowMovie/Video 目录。
运行下面的脚本查看效果。
python slowmovie.py
还有更多参数可以使用,例如
python slowmovie.py -h
将保存播放进度,以便在下次启动时继续播放。
python slowmovie.py -f 20210106.mp4 -d 150 -i 1
将播放名为20210106的mp4文件,并以每 150 秒更新一帧画面。也就是每小时播放 24 帧。
最后我们设置开机自运行。
Linux 开机执行有几种方式, 一种是设置成系统服务, 随着系统加载而启动, 另一种是修改 /etc/rc.local 脚本, 在 exit 之前加入需要执行的语句. 后者默认是以 root 用户执行, 非 root 执行可以这么写
su - yourname -c 'command'
yourname 是用户名, command 是想要执行的命令.
sudo vim /etc/rc.local
添加下面一行在exit 0之前:
su -pi -c "python /home/pi/slowmovie/slowmovie.py -f xjcy.mp4 -d 150 -i 1"
其中/home/pi/slowmovie/为脚本保存路径。可根据自己的需要换成其他路径。xjcy.mp4是电影的名称,它只能放在与slowmovie.py同级的Videos目录下。
完成之后,下次重启的时候就可以直接进入播放状态了。
3 效果展示
3.1 效果展示
我找了我最喜欢的电影《星际穿越》,然后复制到了树莓派中。显示效果如下:
我压缩出来的《星际穿越》有234,547帧,每帧持续一百五十秒,播放完毕可能需要407天(前提是中间不断电^_^)
3.2 基本硬件成本核算
序号 项目 单价
1 树莓派zero ¥66
2 32G SD卡 ¥19
3 4.2寸电子墨水屏 ¥148
4 6寸相框 ¥9
合计 ¥242
由于这次制作时使用的都是手头上闲置的硬件,硬件购买时间比较早了。现在价格不太确定,比如这款4.2寸墨水屏我现在询问卖家时,卖家说现在没货,让我节后再看看有没有。
3.3 下一步计划
① 增加电池模组,实现电量检测,低电量自动关机
② 设计PCB,优化内部走线
③ 增加WiFi模块,实现远程更新影片源(播放局域网nas中的片源)
潇潇雨中游
校验提示文案
范范sid
校验提示文案
steffee
校验提示文案
塞北的雪
校验提示文案
求阙求玄
校验提示文案
murhythm
校验提示文案
tmfc
校验提示文案
wmgylc
校验提示文案
AlphaTheta
校验提示文案
萝卜丝小鸡子
校验提示文案
值友4263509234
校验提示文案
值友1198687261
校验提示文案
笃志
校验提示文案
笃志
校验提示文案
值友1198687261
校验提示文案
值友4263509234
校验提示文案
wmgylc
校验提示文案
tmfc
校验提示文案
murhythm
校验提示文案
求阙求玄
校验提示文案
潇潇雨中游
校验提示文案
萝卜丝小鸡子
校验提示文案
塞北的雪
校验提示文案
AlphaTheta
校验提示文案
steffee
校验提示文案
范范sid
校验提示文案