OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6579|回复: 0

宝,这是什么镜?美颜滤镜!

[复制链接]

183

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
812
金钱
812
注册时间
2020-5-19
在线时间
78 小时
发表于 2021-7-2 17:44:46 | 显示全部楼层 |阅读模式
最近,杭州天天下雨。

清早,睁开双眼,依旧是阴霾霾的天气,窗外下着淅沥沥的小雨。像往常一样,准备洗漱。只感觉,身后一阵风吹过,女友拿着镜子直往窗户那边冲!

此刻,涂鸦“攻城狮”小张脑海中蹦跶出一百个问号???这是什么日常迷惑行为???



原来,今天下雨,由于家中光线太暗,女友为避免眉毛不变成蜡笔小新,腮红不变为日本艺妓,粉底避免刷墙般瘆人,只能去借助大自然的光芒完善自己的妆容。



小张哭笑不得,不得不感叹一句:做女人真难!转念一想,既然需要自然光,那亲自 DIY 一款智能化妆镜肯定能解决女友的“化妆难”烦恼。不得不说:真是个体贴入微的小哥哥呢~

小编似乎闻到一丝丝恋爱的酸臭味~

你以为就这样吗?放心,后面还有一棵柠檬树等着你!

先来瞅瞅这款宝藏“魔镜”~
33333.png

女神都毫无抵抗力的多功能智能“魔镜”!
01
功能设计



功能
说明
开关
触控按键& App 双控制
灯光模式冷光、暖光、自然光
调光无极调光
显示时间、天气、温度、低电量图标
人体感应检测到人体灯亮,未检测到人体 60 s后灯熄灭
供电方式支持有线&无线充电
断电记忆断电重启后恢复上一次设置(模式&亮度)


02
整体方案

为实现上面的功能,小张说:智能镜的整体搭建方案是选用涂鸦智能的 Wi-Fi&
Bluetooth LE 云模组作为主控方便接入涂鸦云实现 App 端智能控制,搭配灯圈、屏幕、PIR 感应器来实现我们的多种灯光模式、时间显示以及人体感应的功能,另外可以增加一个四路触摸按键实现实体触控控制。



03
硬件方案


主控选择涂鸦 Wi-Fi & Bluetooth LE 双模模组,该模组支持多种通信协议、多种尺寸规格、多种工作温度、多种焊接方式的一系列超高性价比自研模组,广泛应用于各种产品类型和开发方式。

屏幕选择型号为 MF219 2.19 寸集成串口屏,屏幕内置了国标一级、二级简体中文字库和英文 ASCII 字符集,同时开放内部点阵 DDRAM,能够在屏幕上的任意位置显示图片及图形。同时支持 UART 接口方式,接线比较简单;且用户只要几条简单指令就能设计出美观绚丽的用户界面。

触控按键采用 BS814A-1 触摸芯片,BS81x 系列芯片具有 2~16 个触摸按键,可用来检测外部触摸按键上人手的触摸动作。该系列的芯片具有较高的集成度,仅需极少的外部组件便可实现触摸按键的检测。

灯珠:暖光灯珠采用HL-AM-2835H489W-S1-08HL-HR3;冷光灯珠采用HL-AM-2835H421W-S1-08-HR3;另外为实现自然光和无极调光功能增加两颗LED驱动OC7141

人体感应:选用一颗微型人体感应 PIR

供电系统:

整机供电电源芯片:采用两个 SY8089A1AAC 实现,前面一颗芯片可以将 2.5-5.5V 的输入电源稳定到 4.35V 为锂电池充电,后面一颗可以将电池输出电压稳定到 3.3V 为主控、触摸、灯圈、屏幕、PIR 供电。

电池:选用 3.8V 6000mAh 的聚合物电池,可以满足灯圈长时间供电

电量检测:用 CBU 模组的 ADC 引脚实现,通过 ADC 读取电池的电量。

无线充电:无线充电主要由两部分组成,无线充电****模块和无线充电接收模块,我们直接从网上采购。

  • 主控原理图:


  • 结构设计:


结构部分由镜面、镜面遮光板、镜面卡、灯罩、灯罩卡、机身、机身底、充电顶、充电底九部分组成。



04
创建产品

下面是小张通过涂鸦 IoT 开发平台,让化妆镜实现真正的联网与智能化。
登录涂鸦智能 IoT 平台创建产品,点击创建产品,在标准类目栏的最下方找到“找不到品类”,点击进入自定义产品创建页面。(详细创建步骤可参考平台内操作指导)

05
环境搭建

小张说:智能化妆镜是基于 BK7231N 平台进行的 SoC 开发,开发所用的涂鸦通用 SDK 编译需要 linux 环境,首先要安装 linux 开发环境,然后从涂鸦仓库拉取包含 SDK 环境的 Demo 例程 。
注:GitHub 具体地址通过关注“涂鸦开发者”,回复“化妆镜”,即可获取哦~
06
功能实现


  • 触摸按键:在tuya_mirror_key.c文件中,封装了app_key_init()app_key_scan()两个函数。app_key_init()用于初始化按键IO,app_key_scan()用于扫描按键按下情况获取键值;

  • 屏幕显示:Demo选用的是一个块 2.19 寸集成模块串口屏,光靠屏幕内置的字库和图案所呈现的效果肯定是毫无美感的,我们需要自己准备字符素材,把收集好的图片素材打包为 bin 文件烧录至屏幕模组里即可;其次在例程的 tuya_mirror_screen.c 里面封装了屏幕初始化函数 screen_init() 和各个元素的显示函数: screen_display_time()、screen_display_week()、screen_display_year()、screen_display_day 等,在应用线程中调用时传入获取到的本地时间和日期即可在屏幕上显示出来。

  • 时间和日期获取:要获取本地时间,首先需包含头文件 uni_time.h。定义一个本地时间结构体变量,然后作为传参调用 uni_local_time_get() 接口获取时间

  • PWM 驱动灯板:Demo 使用了一冷一暖两种 LED 灯,通过输出两路 PWM 驱动,实现灯光亮度可调和冷暖色的切换。例程中有关 pwm 的初始化和启动、占空比设置等相关代码都实现在 tuya_mirror_pwm.c 文件中。

  • 人体感应:Demo 还有一个人体感应开关灯光和屏幕的功能,是通过一个 PIR 传感器来简单实现的。该传感器会在检测到人体运动的时候输出高电平,简单易用。直接写一个读取连接传感器 IO 的电平的函数,然后把它放到线程里周期运行,并在读到高电平的时候保存 PIR 状态在设备数据结构体当中,然后另一个线程对设备数据结构体中 PIR 的状态进行判定,当设备打开人体感应功能,且设备总开关处于打开的情况下,PIR 检测到有人的时候将会打开灯光开关,同时启动定时器。当定时器触发进入中断时将会关闭灯光开关。

  • 电量检测及显示:这个功能通过 ADC 采样得到电池电压,再根据电压值预估电池剩余电量,同时把之前屏幕素材收集阶段准备的几张电池图案显示在屏幕上。
07
编译和烧录

在 linux 终端输入指令运行 SDK 环境目录下的 build_app.sh 脚本来编译代码生成固件,指令格式为 sh build_app.sh APP_PATH APP_NAME APP_VERSION
固件生成路径为:apps->APP_PATH->output 。烧录完成之后就可以进行功能调试了 至此,一款带有多种灯光模式,既可以显示时间,又可以智能感应开关的化妆镜就完成了。你与女神的距离,可能就差这一款多功能智能“魔镜”,戳我立即为她升级美妆“装备”!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 07:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表