毕业设计 单片机墨水屏阅读器(单词卡) - 物联网 嵌入式

news2024/11/24 14:32:56

文章目录

  • 0 前言
  • 1 简介
  • 2 主要器件
  • 3 实现效果
  • 4 设计原理
  • 部分核心代码
  • 5 最后


0 前言

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

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

🚩 基于单片机的墨水屏阅读器(单词卡)

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

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

1 简介

基于esp12-f和汉朔213二手价签开发,可实现单词阅读、默写,多词库共存,支持上下翻页,名著阅读模式支持极速上下翻页,支持多书籍进度保存,休眠等等,后续将升级更多功能实现多语种支持等等。

2 主要器件

  • ESP12-F
  • 汉朔2.13寸电子价签

3 实现效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 设计原理

ESP -12F模块整体介绍
该模块核心处理器 ESP8266 在较小尺寸封装中集成了业界领先的 Tensilica L106 超低功耗 32 位微型 MCU,带有 16 位精简模式,主频支持 80 MHz 和160 MHz,支持 RTOS,集成 Wi-Fi MAC/ BB/RF/PA/LNA,板载天线。该模块支持标准的 IEEE802.11 b/g/n 协议,完整的 TCP/IP 协议栈。用户可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。ESP8266 是高性能无线 SOC,以最低成本提供最大实用性,为 WiFi 功能嵌入其他系统提供无限可能。
在这里插入图片描述

接口说明
在这里插入图片描述
汉朔2.13寸电子价签

汉朔2.13寸的电子价签,闲鱼上面价格比较便宜,大部分在7块钱一个
内核为MSP4302553,驱动原理图如下:
在这里插入图片描述

部分核心代码

#include <LittleFS.h>
//#include <SD.h>
#define key2         0   //中间的按键,也是烧录按键
#define key3         5   //右边的按键,进入默写模式的按键
#define key4         13
#include <U8g2_for_Adafruit_GFX.h>
#include <GxEPD2_BW.h>
#include "gb2312.c"
#include "img.c"
#define SPI_SPEED SD_SCK_MHZ(20)
#define SD_CS           5
#define bat_switch_pin  12          // 电池电压读取开关
#define bat_vcc_pin     A0          // 读取电池电压引脚,不能超过1V
//#include "FS.h"
#include <EEPROM.h>
#define RST_PIN 0 // D3(0)
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=*/ 16, /*DC=D3*/ 0, /*RST=*/ -1, /*BUSY=*/ 4));
GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS*/ 15, /*DC*/ 0, /*RST*/ 2, /*BUSY*/ 4));
U8G2_FOR_ADAFRUIT_GFX u8g2Fonts;
//int dis_count = 0; //判断局刷或全刷
bool f_word = false;
bool flag = true;
float bat_vcc = 0.0;                // 电池电压
void power_sleep();//低压休眠
#include "bat_data.h"
#include "displaycode.h"
File story_dataFile;//小说

#include "BookRead.h"
extern const uint8_t chinese_gb2312[253023] U8G2_FONT_SECTION("chinese_gb2312");

/*
   8266接线方式:
   busy--D2 4
   res--D4 2
   dc--D3 0
   cs--D8 15
   clk--D5 14
   din--D7 13
   gnd--g
   vcc--3v3
*/
int x = 10, y = 55;
bool read_state = false; //标记阅读/默写模式

void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial.println("开始");
  pinMode(key2, INPUT_PULLUP); //INPUT_PULLUP
  pinMode(key3, INPUT_PULLUP); //INPUT_PULLUP
  Serial.println("setup");
  digitalWrite(RST_PIN, HIGH);
  pinMode(RST_PIN, OUTPUT);
  delay(20);
  digitalWrite(RST_PIN, LOW);
  delay(20);
  digitalWrite(RST_PIN, HIGH);
  delay(200);
  display.init();
  EEPROM.begin(256);
  int f1 = EEPROM.read(0);
  int f2 = EEPROM.read(4);
  if (f1 == f2 && f1 == 255) {
    EEPROM.write(0, 0);
    EEPROM.commit();
    EEPROM.write(4, 0);
    EEPROM.commit();
  }
  u8g2Fonts.begin(display);//将u8g2连接到display
  display.setRotation(3);
  display.firstPage();
  display.fillScreen(GxEPD_WHITE);
  float batVCC = getBatVolNew();
    if (batVCC < 3) {
      power_sleep();
    }
  /*判断当前是学习模式还是小说模式 */
  int read_mode = EEPROM.read(65);
  if (read_mode == 1) {
    if (LittleFS.begin()) { //(SD_CS, SPI_SPEED)){
      Serial.println("SD 启动成功");
    } else {
      Serial.println("SD 未能成功启动");
    }
    Serial.println("小说模式");
    display.nextPage();
    get_story_name();
  } else {
    Serial.println("学习正常启动");
    init_study();
    button();
  }
}
void init_read() {
  if (!LittleFS.begin()) // mount the file system
  {
    Serial.println("文件获取失败,请先上传文件!");
    return;
  }
}
void init_study() {
  display.drawInvertedBitmap(0, 0, logo, 250, 122, GxEPD_BLACK);
  //  display.drawInvertedBitmap(0, 0, logo2, 296, 128, GxEPD_BLACK);
  display.nextPage();
  display.setPartialWindow(0, 100, 255, 22);//局刷提示字样
  u8g2Fonts.setForegroundColor(GxEPD_BLACK);  // 设置前景色
  u8g2Fonts.setBackgroundColor(GxEPD_WHITE);

  if (!LittleFS.begin()) // mount the file system
  {
    Serial.println("文件获取失败,请先上传文件!");
    u8g2Fonts.setCursor(0, 120);
    u8g2Fonts.print("文件获取失败,请先上传文件!");
    return;
  }
  display.fillScreen(GxEPD_WHITE);
  u8g2Fonts.setFont(chinese_gb2312);
  u8g2Fonts.setCursor(0, 120);
  Serial.println("文件获取成功!");
  u8g2Fonts.print("文件系统启用成功!");
  String wordbookname_temp = selectbook();
  if (LittleFS.exists(wordbookname_temp)) {
    Serial.println("有");
  } else {
    Serial.println(" 没有.");
    display.fillScreen(GxEPD_WHITE);
    u8g2Fonts.setFont(chinese_gb2312);
    u8g2Fonts.setCursor(0, 120);
    u8g2Fonts.print("上次打开文件不存在!将进入文件管理");
    display.nextPage();
    delay(1000);
    display.setFullWindow();
    display.fillScreen(GxEPD_WHITE);
    draw_word_file_dir();
  }
  display.nextPage();
}
void power_sleep() {
  display.setFullWindow();
  display.fillScreen(GxEPD_WHITE);
  display.drawInvertedBitmap(0, 0, low_power, 250, 122, GxEPD_BLACK);
  display.nextPage();
  delay(500);
  ESP.deepSleep(0);
}
void loop()
{
}


5 最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101298.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

列表类型(sort,reverse,list(),append(),切片)、求中位数,平均数,标准差练习

映射类型和操作 映射类型是“键-值”数据项的组合&#xff0c;每个元素是一个键 值对&#xff0c;即元素是(key, value)&#xff0c;元素之间是无序的。键值对 (key, value)是一种二元关系。在Python中&#xff0c;映射类型主要以字典&#xff08;dict&#xff09;体现。 列表类…

模拟大规模电动车充电行为(Matlab实现)

目录 1 模拟大规模充电汽车充电行为 2 Matlab部分代码实现 3 Matlab代码实现 1 模拟大规模充电汽车充电行为 电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月&#xff0c;国务院发布加快E…

设计模式之策略模式

Strategy design pattern 策略模式的概念、策略模式的结构、策略模式的优缺点、策略模式的使用场景、策略模式的实现示例、策略模式的源码分析 1、策略模式的概念 策略模式&#xff0c;即定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#…

Android平台GB28181接入模块技术接入说明

技术背景 今天&#xff0c;我们主要讲讲Android平台GB28181接入模块的技术对接&#xff0c;Android平台GB28181接入模块设计的目的&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0c;可用于如智能监控…

【Mitigating Voltage Attacks in Multi-Tenant FPGAs 论文笔记】

减轻多租户FPGA中的电压攻击摘要引言内容背景和相关工作INTEL STRATIX 10 FPGA上的PDN攻击Stratix 10 PDN特性定位电压下降片上监控和攻击抑制结论和未来工作结论&#xff1a;未来工作作者&#xff1a;GEORGE PROVELENGIOS, University of Massachusetts Amherst, MA, USADANIE…

Python学习-9.2 程序界面-sys库介绍

可以在Python标准库大全&#xff1a;https://docs.python.org/zh-cn/3/library/index.html中查找sys标准库的解释说明 sys标准库 本章对sys标准库中的重点函数进行讲解&#xff0c;sys库的作用主要是查看python解释器信息及传递信息给python解释器。 sys库的三个重要函数&…

JVM-------栈

栈&#xff1a; 早在数据结构的学习中&#xff0c;我们就知道了栈具有先进先出的特点&#xff0c;而数据结构是程序的一部分&#xff0c;那么栈的特点在java中是如何体现的呢? 比如&#xff1a;main函数先执行而后结束&#xff0c;就是利用了栈的特点。 在java中&#xff0c…

[附源码]计算机毕业设计Node.jsBuff饰品交易平台论文(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

2022需求最大的8种编程语言排名

DevJobsScanner分析了过去14个月&#xff08;从2021 10月到2022年11月&#xff09;超过1200万开发人员的工作需求&#xff0c;并选择了明确需要编程语言的工作机会&#xff0c;获得了2022年最流行的八种编程语言。 市场上需求最高的前八种语言是&#xff1a; 1、 JavaScript/…

Appium基础 — Appium Inspector定位工具(二)

5、Appium Inspector工具的使用 &#xff08;1&#xff09;Inspector 定位控件界面的详细介绍 布局1&#xff1a;截图的手机界面 可以点击选择元素。 布局2&#xff1a;顶部操作栏 从左往右的按钮依次是 Select Element&#xff1a;选择元素。 Swipe By Coordinates&#xff…

json-server

安装node.js https://nodejs.org/zh-cn/download/剩下内容就是next&#xff0c;就默认安装在C盘好了。 WindowR:node -v 下面这种结果代表安装成功 还有 npm -v NPM 是什么 NPM描述 npm&#xff08;“Node 包管理器”&#xff09;是 JavaScript 运行时 Node.js 的默认程序包…

redis之数据倾斜如何处理

写在前面 我们在使用Redis分片集群时&#xff0c;集群最好的状态就是每个实例可以处理相同或相近比例的请求&#xff0c;但如果不是这样&#xff0c;则会出现某些实例压力特别大&#xff0c;而某些实例特别空闲的情况发生&#xff0c;本文就一起来看下这种情况是如何发生的以及…

基于Ubuntu + anaconda + tensorflow+jupyter的python深度学习开发环境配置

参考 基于Ubuntu anaconda tensorflowjupyter的python深度学习开发环境配置 - 云社区 - 腾讯云 1.激活Anaconda环境 下载anaconda并拷贝到安装目录中并解压&#xff0c;下载地址为&#xff1a; https://repo.anaconda.com/archive/Anaconda2-5.3.0-Linux-x86_64.sh 跳转…

如何在UnrealEngine虚幻引擎中加载Web页面

对于非游戏开发团队来讲&#xff0c;在面向非游戏领域的UE项目中嵌入Web页面并实现交互无疑能充分利用现有开发资源和流程&#xff0c;WebUI插件能提供完整的Web页面加载及交互手段&#xff0c;让团队中的UE开发工程师和Web开发工程师能够各司其职、紧密配合。 WebUI的安装配置…

互联网医疗领域月度观察——二十大报告明确提出健康中国建设目标,互联网医疗是建设重点

易观分析&#xff1a;在二十大报告中明确提及“把保障人民健康放在优先发展的战略位置&#xff0c;完善人民健康促进政策”“促进优质医疗资源扩容和区域均衡布局&#xff0c;坚持预防为主&#xff0c;加强重大慢性病健康管理&#xff0c;提高基层防病治病和健康管理能力”等有…

FLET简介:用Python构建Flutter应用

你知道可以用 Python 来构建 flutter 应用吗&#xff1f;&#x1f62e; Flutter 在软件研发领域是非常流行的&#xff0c;今年就让我们深入了解一下&#xff0c;用 Python 构建 flutter 应用程序的世界&#xff01;&#x1f642; 关于 FLET 梦想橡皮擦 在开始学习前&#xf…

【图像重建】正则化图像超分辨重建【含Matlab源码 1882期】

⛄一、正则化图像超分辨重建简介 图像超分辨率重建的非局部正则化模型与算法研究 利用图像非局部不连续性测度的概念,建立了面向图像超分辨的非局部正则化能量泛函和相应的变分框架.理论分析了该框架与目前关于双边滤波等一类广义邻域滤波器和经典的变分偏微分方程模型之间的…

[附源码]Nodejs计算机毕业设计焦作旅游网站Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

力扣(LeetCode)168. Excel表列名称(C++)

26进制 本题的数字从 111 开始&#xff0c;即 A1A1A1&#xff0c;Z26Z26Z26 。进制转化是依次提取数字从低到高的每一位&#xff0c;要求每一位从 000 开始 。对当前数字 −1-1−1 &#xff0c;等于进制最低位 −1-1−1 &#xff0c;也就是最低位看作 A0A0A0&#xff0c;Z25Z2…

Docker:Nacos的持久化和集群部署

目录 一、MySQL容器构建 二、单节点nacos容器外网部署 三、内网nacos多节点集群部署 四、外网Nginx负载内网nacos节点集群 一、MySQL容器构建 由于我们今天要启动的服务比较多&#xff0c;考虑到部分电脑可能会出现带不动的情况&#xff0c;我们可以先将之前的文件备份一下…