持续一年的电影——树莓派 zero与4.2寸水墨屏制作电子相框
是返乡过年?还是就地过年?最新一届#双面过节指南#开始啦!本次征稿活动分为A面返乡和B面就地,大家可以根据自己的情况,分享自己的春节攻略,优秀的投稿文章还有可能能获得优厚的大奖哦,快点击查看活动详情<<<
创作立场声明:本文中涉及的所有物件都是自费购入。发表文章是为了和大家交流,希望有机会学到一些专业知识。然而每个人的经验、立场各不相同,文中的观点与方法偏重不同,客观与否还请大家指正,期待深入探讨交流。
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中的片源)

放一下电影画面还是非常有感觉的(鬼片除外
)
我把画面裁切了,压缩的话画面会变形
之前用树莓派和水墨屏做了个电子日历,这个电子相册感觉也不错只是图片都黑白的话感觉有点...
这个视频文件是自己压缩了,弄成跟墨水屏一样的分辨率了吗?
不清楚啊,我也是在网上浏览的时候看到了教程,然后自己复现了一下
哈哈哈,有道理,特别是前面不要摆花,尤其是菊花
网上有成卖没?这个看起来好复杂
张大妈家可以用markdown吗?我是先在笔记软件上用markdown写的,然后复制过来的,如果可以的话我下次直接复制markdown版本
哈哈哈,有道理,特别是别放证件照
啥都好,就是建议不要放人像
这个玩法比较新颖
用好markdown,这样会整齐一点
文章排版出现了问题,各种操作指令挤到一起去了,现在正在联系客服删除重发。
因为手上只有一块吃灰良久的zero
为啥不用带wifi的zeroW?其实这个墨水屏显示日历和天气预报也不错的
哎。。。排版有问题。正在联系客服删掉重发
可以抄作业了