🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 基于树莓派单片机的墨水屏电子日历系统
🥇学长这里给一个题目综合评分(每项满分5分)
🧿 选题指导, 项目分享:
基于树莓派的电子显示纸日历
将显示屏和树莓派插在一起。(对于扁平电缆,接触面始终向上)小心地向上折叠连接器上的小卡舌。
闪光灯图像,例如BelanaEthcher
同时,在 https://aceisace.eu.pythonanywhere.com/setup_wifi 输入Wifi数据(SSID和WPA2密码)并创建wpa_supplicant.conf。
如果映像被刷新,则将刚刚创建的文件复制到Fat32 /boot分区和一个空的文本文件ssh中,以通过SSH访问Raspberry Pi。
现在,SD卡终于可以从PC上弹出并插入Raspberry Pi中。连接电源并等待 1-2 分钟,以便操作系统启动。
在路由器中,树莓现在应该出现在WLAN中。写出 IP。
启动树莓派的 Putty IP 地址在主机名端口 22 输入最好提供名称的设置,然后保存并加载。
Balena: 完整的生态
Balena 是一套完整用于开发、部署、管理 IOT 设备,并提供了云用于连接这些 IOT 设备们的工具和服务。它包括了:
Balena 服务的定价策略比较良心,对于个人用户来说,前 10 个设备使用 balenaCloud 都是全功能且免费的,基本上普通的用户也不会超过 10 个 IOT 设备需要连接云吧。后续的服务收费档位主要是根据设备的数量来决定的。
对于上述的小白用户来说,最有价值的莫过于 balenaHub 这个大仓库,可以直接下载极客玩家们开发打包好的应用程序的系统镜像,然后烧录到自己的树莓派中即可享用。
balenaHub: Airplay 服务器
下面我将以 balena-rpiplay 项目作为案例在树莓派进行部署,让大家可以清晰直观的看到项目部署的流程有多简单。
balena-rpiplay 可以把你的树莓派变成 Airplay Server,用户把苹果设备的屏幕镜像串流到树莓派上,而树莓派则通过 HDMI 连接电视/显示器/投影仪,部署了这个项目以后算是 Apple TV 盒子中 Airplay 功能的平替。
balena-rpiplay 项目包含了 RPiPlay 项目,后者的安装原本需要你手动安装 cmake 包管理器、一堆 C 语言的依赖库、OpenMAX 库和客户端。直接在 Raspberry Pi OS 安装时需要从源码开始构建软件,对于没有 Linux 基础的普通玩家来说,整个部署流程十分硬核且枯燥。但是如果进入 balena-rpiplay 的项目主页看,里面没有一行实体代码,只有简单的配置文件描述,整个过程被大幅度地简化了。
那么实际部署流程是怎么样的呢?
整个过程不需要用户用终端配置任何的东西,最麻烦的步骤仅是烧录系统到 tf 卡中。烧录镜像到树莓派的步骤,可以参考这篇文章:《从选购到入手:树莓派零基础入坑指南》
整个部署上没有手动输入命令,修改配置文件的体验,背后多亏 balenaCloud 的帮助。当你烧录好系统的时候,它的软件架构是上图这个样子的。当你第一次给硬件通电的时候,首先如同绝大多数 Linux 发行版一样,systemd 作为第一个守护进程启动,并带起 NetworkManager 通过预设的 WiFi 信息连接你家里的网络,另一方面唤醒并守护你安装的容器,完成整个工作流程。
而从用户的角度来看,整个过程就像是通了电就能自动完成安装 Airplay Server 一样,最后只需要拿出的苹果设备搜索并连接上该树莓派就可以进行投屏了。
balenaCloud:你的 IOT 管家
细心的同学可能还会发现,图中还有一个抓眼球的 Device Supervisor Container (DSC),它一方面跟云端的 balenaCloud 进行通讯,一方面也在本地网络广播自己的存在,使得整个开发部署管理流程有了更多的可能。根据我自己的经验,我会从几个痛点聊聊 balena 是如何帮助开发者更好地解决 DevOps 的问题的。
开发
当要利用树莓派进行开发的时候,我们首先遇到的问题就是「如何交互」。一般来说,在树莓派上开发,你需要准备一个键盘、一个鼠标、一个显示器以及一根 HDMI 线,才能满足基本的开发要求。
虽然新的 Raspberry Pi OS 系统版本支持了通过 txt 配置 WiFi 连接和启动 sshd 服务,让你可以通过无线 ssh 直接操作终端命令行。但是你又会发现缺少顺手的开发工具、必要的运行时等,等把这些又千辛万苦地安装好后,相信你的热情已经被消磨了一大半了。
DSC 是帮助开发者解决这个问题的关键。首先,balena 提供了 balenaOS base 镜像给用户烧录到 tf 卡中,启动它,DSC 会不断广播自己的存在。然后,用户在自己熟悉的 PC/Laptop 中安装 balena 这个 client 软件,通过 sudo balena scan 命令即可搜索到自己的树莓派的 ip 地址。
Reporting scan results
-
host: 63ec46c.local
address: 192.168.86.45
dockerInfo:
Containers: 1
ContainersRunning: 1
ContainersPaused: 0
ContainersStopped: 0
Images: 4
Driver: aufs
SystemTime: 2020-01-09T21:17:11.703029598Z
KernelVersion: 4.19.71
OperatingSystem: balenaOS 2.43.0+rev1
Architecture: armv7l
dockerVersion:
Version: 18.09.8-dev
ApiVersion: 1.39
假设你已经在 PC/Laptop 开发并测试好了软件和应用,下一步需要的就是验证在树莓派上也可运行。那只需要一行命令 balena push 63ec46c.local 即可把当前项目的信息一键发送到树莓派中,DSC 负责接收并自动执行构建和运行,所有的命令行输出会回传到自己的 PC/Laptop 中,查看并解决可能的错误,大大减轻了需要反复查看日志的繁琐过程。
部署
到了真正需要部署的时候,一个比较麻烦的事情是,给不同的硬件适配性地打包。回想我们给树莓派开发部署好的软件和应用,由于只有一张 tf 卡且暂时要把树莓派挪作他用,等到想回顾这个应用或者重新玩一下的时候,又需要重头再来折腾。
balena 帮助开发者把这件事情放到了 balenaCloud 中执行。开发者只需要编写一份 balena.yml 文件描述一些必要的信息,比如支持的硬件如树莓派 1、2、3、4 等,项目名称等展示在 balenaHub 中。通过输入 balena deploy 命令,即可把项目信息发送给 balenaCloud 然后构建出所有描述中支持的硬件的系统镜像。当然,必要的 balena login 步骤还是需要的。
只需要开发完成,并上传到 balenaHub 以后,想要重温重温以前的美好随时都可以在 balenaHub 中下载回来这个镜像,只需要做烧录的步骤就可以了。
sudo sed -i s/#dtparam=spi=on/dtparam=spi=on/ /boot/config.txt
sudo dpkg-reconfigure tzdata
现在是安装的主要部分,大约需要30分钟
sudo apt update && sudo apt -y upgrade
sudo apt install git
sudo apt-get install python3-pip -y
sudo apt-get install python3-pil -y
sudo apt-get install python3-numpy -y
sudo pip3 install RPi.GPIO
sudo pip3 install spidev