ESP32 OLED Demo

  • ESP32 OLED Demo
    • 实现功能
    • 硬件组成
    • 软件设计
    • 低功耗模式说明
      • 低功耗模式硬件设计
      • 触摸传感器工作周期
      • 低功耗模式使用
    • OLED Demo 编译与运行
      • 前期准备
      • 获取 IoT Solution 项目代码
      • 编译与运行

ESP32 OLED Demo

源码地址:GitHub 源码地址

实现功能

ESP32 OLED demo 实现了以下功能:

  • 温湿度数据采集
  • 网络更新实时时间
  • OLED 分页显示温湿度、实时时间
  • 手势/触摸传感器控制 OLED 显示页面上下翻页
  • 通过触摸传感器手动进入低功耗模式

下图为 ESP32 OLED Demo 的硬件实物图:


硬件组成

该 DEMO 使用 ESP32_Button_Module_V2 作为开发板,包含以下元件:

  • 接近/环境光线传感器 (APDS9960)
  • OLED 显示屏 (SSD1306)
  • 温度、湿度传感器 (HTS221)
  • 两个触摸传感器按钮

完整硬件原理图:ESP32_BUTTON_MODULE_V2.pdf

显示屏、传感器电源开关控制原理图:

VDD33 为 LDO VOUT 3.3V 端,做为 ESP32、外设、 flash 电源;VDD33_PeriP 为显示屏、温湿度传感器、手势传感器电源。三极管 SI2301 用做电源开关,控制 VDD33_PeriP 端电压。默认情况下三极管 gate 端保持高电平,电源开关关闭,通过控制 Power_ON 保持低电平以打开电源开关。

软件设计

我们使用了以下方法实现了 ESP32 OLED demo:

  • 使用 esp-iot-solution 开发工具包
  • 基于 FreeRTOS 实时操作系统,多任务处理
  • SNTP 协议获取实时时间
  • 通过触摸传感器进入低功耗模式
  • 通过触摸传感器唤醒设备

低功耗模式说明

低功耗模式硬件设计

我们使用了以下方法使设备在低功耗模式下的功耗达到最低。

  • 控制显示屏、温湿度传感器、手势传感器的电源开关
  • 选用低功耗 LDO, 静态电流约为 1 μA
  • 对触摸传感器进行功耗管理

触摸传感器工作周期

触摸传感器在工作时,会有两种状态:sleep、measurement,两种状态循环交替进行。在正常的工作模式下我们把 sleep 时间设置得比较短,在进入低功耗模式后,我们把 sleep 时间设置得相对较长,以尽可能地降低功耗。

在进入低功耗模式前调用 touch_pad_set_meas_time(uint16_t sleep_cycle, uint16_t meas_cycle) 接口调整触摸传感器的 sleep 与 measure 时间。

参数说明:

  • sleep_cyclesleep_cycle 决定了两次测量的间隔时间,间隔时间 t_sleep = sleep_cycle / (RTC_SLOW_CLK frequency)。

    可以使用 rtc_clk_slow_freq_get_hz() 接口获取 RTC_SLOW_CLK frequency 值。

  • meas_cyclemeas_cycle 决定了测量时间,测量时间 t_meas = meas_cycle / 8M,最大测量时间为 0xffff / 8 M = 8.19 ms。

低功耗模式使用

长按触摸传感器按钮进入低功耗模式,在低功耗模式下,触摸传感器采样频率会降至最低,所以从低功耗模式下唤醒同样需要稍长时间地触摸传感器按钮。低功耗模式下电流采样如下:

  • 低功耗模式下 LDO VOUT 3.3V 端的电流采样图如下 (包含 ESP32、显示屏、传感器消耗的电流) :

注:在低功耗模式下 LDO VOUT 3.3V 端的平均电流约为 30 μA, 最大电流约为 1.6 mA, 处在波峰时, 触摸传感器位于 measurement 状态。

  • 低功耗模式下 LDO VIN 5V 端的电流采样图如下 (包含 ESP32、显示屏、传感器、LDO 消耗的电流) :

注:在低功耗模式下 LDO VIN 5V 端的平均电流约为 45 μA,最大电流约为 2.1 mA。

OLED Demo 编译与运行

前期准备

首先需要确保你的电脑上已经安装好 ESP32 工具链,工具链安装请参考 ESP-IDF 中的 README.md。

获取 IoT Solution 项目代码

执行指令,下载 iot-solution 项目仓库:

  • 可以直接递归获取仓库代码,这样将会自动初始化需要的所有子模块:

    git clone --recursive https://github.com/espressif/esp-iot-solution.git
  • 也可以手动进行初始化子模块,先运行以下指令:

    git clone https://github.com/espressif/esp-iot-solution.git
    
    • 然后切换到项目根目录执行以下指令, 下载本项目依赖的一些其它子模块:

      git submodule update --init --recursive
      

编译与运行

子模块代码下载完成后就可以对 Iot Solution 工程中的 oled_screen_module 进行编译和运行。切换到 esp-iot-solution/examples/oled\_screen\_module 目录下,然后进行下列步骤。

  • 串口参数设置

执行以下指令进行编译配置,如串口号和串口下载速度可以在 Serial flasher config 这一菜单选项中进行配置(如果不需配置, 可跳过这一步)。

    cd YOUR_IOT_SOLUTION_PATH/examples/oled_screen_modulemake menuconfig
  • 编译,烧写与运行

执行下面指令,编译 oled_screen_module,以下命令中的 flash 是下载命令,monitor 表示开启系统打印,可根据实际情况选择添加。

    make flash monitor

注:下载程序时,如果无法自动开始下载,可以尝试手动进入下载模式。下载固件完成后,按开发板上的 reset 键重新运行程序,可以查看串口打印。

ESP32 开发笔记(二)OLED ssd1306 apds9960 手势控制相关推荐

  1. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  2. iOS工程开发笔记二

    iOS工程开发笔记<二> 在Xcode 4, 5的模板工程中可以看到Precompile Prefix Header,但是在Xcode 6被去除了. Xcode 6去掉Precompile ...

  3. 微信小程序开发笔记二(WXSS和CSS样式美化)

    微信小程序开发笔记二(WXSS和CSS样式美化) 一.CSS基本知识 1.Class选择器的定义 2.ID选择器的定义 3.ID选择器和class选择器的区别 4.CSS中设置颜色 5.CSS中的文本 ...

  4. [安卓开发笔记二]android Studio通过jni调用C++代码

    [安卓开发笔记二]android Studio通过jni调用C++代码 16/12/11 更新 此博客基于安卓android studio 1.5所写,现在已经有了android studio2.2的 ...

  5. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  6. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  7. 【Visual C++】游戏开发笔记二十三 游戏基础物理建模(五) 粒子系统模拟(二)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7607916 作者:毛星云    邮箱: h ...

  8. 【Visual C++】游戏开发笔记二十一 游戏基础物理建模(三) 摩擦力系统模拟

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7555785 作者:毛星云    邮箱: h ...

  9. ESP32 开发笔记(三)源码示例 8_DHT11_RMT 使用RMT实现读取DHT11温湿度传感器

    开发板购买链接 https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.50111deb2Ij1As&ft=t&id=62636 ...

最新文章

  1. 采用HttpModules来重写URLs(实践篇)
  2. windows如何恢复默认pycharm配置
  3. Python中yield返回生成器的详细方法
  4. Adb安装程序出现TimeOut错误
  5. python统计汉字字数_Python 统计字数的思路详解
  6. 约瑟夫环非递归算法分析
  7. SaaS公司保持经久不衰的三大竞争优势
  8. Unity性能优化之物理引擎的优化(三)
  9. 机器学习算法工程师领域现状
  10. 关于CMOS截止频率的公式和概念
  11. 序幕(计算机基础知识)
  12. 查看phpinfo方法
  13. Nvidia TX2+rplidar+autolabor pro1实现自主导航机器人
  14. UVa11549 Calculator Conundrum
  15. 连接器缓解安装困难,节省LED照明设计的空间
  16. 用DIV+CSS技术设计我的家乡网站(web前端网页制作课作业)南宁绿城之都
  17. 计算机文化基础(高职高专版 第十一版)第五章答案
  18. 四川对口高考的计算机分数线,盘点四川省近年来对口高考录取分数线,中职生上大学很容易...
  19. Matlab:Matlab软件界面的简介(上边菜单栏、中间工作区、右栏、底部栏、运行图像结果栏)、使用方法之详细攻略
  20. Edge浏览器中使用bing搜索引擎时回车会出现换行,无法直接搜索的问题的解决方法

热门文章

  1. Learning with Noisy Correspondence for Cross-modal Matching 文献翻译 代码简析
  2. iOS 判断是否安装SIM卡
  3. 倾斜补偿的电子罗盘(3):椭球拟合,磁传感器软磁干扰和硬磁干扰的9参数校准
  4. 睿频开启及睿频与超频的区别
  5. cocos2dx《单机斗地主》源码解剖之八 电脑玩家出牌与跟牌(结束)
  6. 与墨云同行 |低头有坚定的脚步,抬头是清晰的远方
  7. 白雪公主和她的七个供应商
  8. 2021.01.05丨根据基因名称拼接表达量与相关注释
  9. pytorch深度学习简介(包括cnn,rnn等我只挑我感觉有必要记录)
  10. 大型Solidworks装配设计与仿真工作站配置方案