• 【毕业设计】树莓派单片机墨水屏电子日历系统 - 物联网 嵌入式



    0 前言

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

    为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

    🚩 基于树莓派单片机的墨水屏电子日历系统

    🥇学长这里给一个题目综合评分(每项满分5分)

    • 难度系数:4分
    • 工作量:4分
    • 创新点:3分

    🧿 选题指导, 项目分享:

    https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md


    1 简介

    基于树莓派的电子显示纸日历

    2 主要器件

    • 显示:Waveshare 7.5英寸高清电子纸电子墨水880×528像素原始显示黑白双色,带SPI接口

    在这里插入图片描述

    • 树莓派Zero WH 512 MB
      在这里插入图片描述
    • SD卡 8GB
    • 电源 5V 1A

    3 实现效果

    在这里插入图片描述

    4 准备工作

    将显示屏和树莓派插在一起。(对于扁平电缆,接触面始终向上)小心地向上折叠连接器上的小卡舌。

    闪光灯图像,例如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 输入最好提供名称的设置,然后保存并加载。

    5 软件说明

    Balena平台

    Balena: 完整的生态

    Balena 是一套完整用于开发、部署、管理 IOT 设备,并提供了云用于连接这些 IOT 设备们的工具和服务。它包括了:

    • balenaEngine 是一个为嵌入式设备优化的运行引擎,等同于 Docker 的存在,但胜在软件体积更小,需要传输的镜像层更小,内存占用也更少。
    • balenaOS 是一个极简的 Linux 系统,不同于 Raspberry Pi OS,仅包含了 balenaEngine 以及一些必要的系统组件,使得硬件资源能够被最大化目标软件的使用,但借助 Balena 的其他服务,又可以很轻松的部署我们想要的工具。。
    • balenaHub 是一个类似 Github 的地方,开发者把软件装载进 balenaOS 中并发布到这里,用户可以从这里免费下载已经打包好的「系统镜像」。
    • balenaEtcher 是一个开源跨平台的系统镜像烧录工具,有精美易用的 UI 界面,可以把上述系统镜像烧录到 tf 卡中,然后插入树莓派直接开始使用。
    • balenaFin 一个建立于树莓派计算模块之上的开发板,有更好的存储和电源扩展等。
    • balenaCloud 就是承载了上述的开发交互界面,包括打包镜像、管理设备的云端等功能,balenaCloud 我们后面展开细说。
    • openbalena 则是 balenaCloud 的开源版本,如果不信任由 Balena 这家商业公司提供的云,那么就可以考虑自己部署云端,不过只支持单用户,也没有 Web UI。后者在 Github 上有第三方的开源版本可以使用。
      从该生态版图可见,Balena 基本包含了嵌入式开发中的所有环节,哪怕你会说没有树莓派,都给你考虑到了。

    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 的项目主页看,里面没有一行实体代码,只有简单的配置文件描述,整个过程被大幅度地简化了。

    在这里插入图片描述

    那么实际部署流程是怎么样的呢?

    • 首先在 balenaHub 找到 balena-rpiplay ,点击图中的 Get started 按钮。
    • 在弹出界面选择自己的树莓派版本。
    • 输入自己家的 WiFi 连接方式(SSID 和密码),也可以选择用网线连接。
    • 下载镜像,通过 balenaEtcher 刷入到 tf 卡中,并插入到树莓派中。
    • (可选) 对于没有自带 WiFi 模块的树莓派 (2代及以下),需要自备 WiFi 适配器。
    • 然后通电,静待几分钟,就拥有了自己的 Airplay 服务器。

    整个过程不需要用户用终端配置任何的东西,最麻烦的步骤仅是烧录系统到 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    假设你已经在 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 中下载回来这个镜像,只需要做烧录的步骤就可以了。

    6 安装

    sudo sed -i s/#dtparam=spi=on/dtparam=spi=on/ /boot/config.txt
    sudo dpkg-reconfigure tzdata
    
    • 1
    • 2

    现在是安装的主要部分,大约需要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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    7 最后

  • 相关阅读:
    vue2/vue3 v-if与v-show的区别 | 触发的生命周期
    自动导入时,Element-plus Message Box组件样式丢失
    浏览器工作原理与实践笔记_Chapter2浏览器中的JavaScript执行机制
    Thread线程类基本使用(下)
    linux使用命令反弹到 msf
    Java_题目_身份证号码信息查看
    Avalonia中的布局
    网络编程——socket定义和地址格式
    Stable Diffusion绘画,卡通,教室
    为什么要选择华为 HCIE-Security 课程?
  • 原文地址:https://blog.csdn.net/m0_71572576/article/details/126826918