可进入原文获取 智能镜[智能镜_三明治开发社区的博客-CSDN博客 ]整软硬件开源资料包
假设有女孩子愿意跟你约会,已知下午 3 点见面,2点她就说准备出门了,请问你准时见到她的概率有多大?调查显示,64.4%的女性每次化妆需要10-30分钟,24.8%的女性需要30~60分钟,花这么久时间女生们究竟在捣鼓什么?正如不是每一把游戏都会赢,女生在化妆的时候也有所谓成功概率这种东西,遮瑕没做好补一下,底妆假白重新来,左右脸化不对称费时间。如果能改善这几件事情相信会大大提升化妆成功率,降低男生等待率。“欲善其事,毕利其器”这时候如果有一款功能齐全的化妆镜不但能够让女生颜值加分,更能将广大男同胞从凡约会必等的魔咒中解救出来。
1. 功能定义:
说来就来,针对上面提到的几个成功率低事件,我们可以自定义一款具体以下功能的智能镜:
2.整体方案:
为了实现上面的功能,智能镜的整体搭建方案如下:选用涂鸦智能的Wi-Fi&BLE云模组作为主控方便接入涂鸦云实现APP端智能控制;搭配灯圈、屏幕、PIR感应器来实现我们的多种灯光模式、时间显示以及人体感应的功能;另外可以增加一个四路触摸按键实现实体触控控制。
3.硬件方案
- 主控选择涂鸦Wi-Fi&BLE双模模组,该模组支持多种通信协议、多种尺寸规格、多种工作温度、多种焊接方式的一系列超高性价比自研模组,广泛应用于各种产品类型和开发方式
- 屏幕选择型号为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读取电池的电量。
无线充电:无线充电主要由两部分组成,无线充电发射模块和无线充电接收模块,我们直接从网上采购。
- 主控原理图:
- 结构设计:
结构部分由镜面、镜面遮光板、镜面卡、灯罩、灯罩卡、机身、机身底、充电顶、充电底九部分组成。
4.创建产品
首先登录 涂鸦智能IoT平台 点击创建产品,在标准类目栏的最下方找到“找不到品类”,点击进入自定义产品创建页面。
5.环境搭建(可点击 阅读原文 获取完整资源包)
本案例是基于BK7231N平台进行的SOC开发,开发所用的涂鸦通用SDK编译需要linux环境,首先要安装linux开发环境,然后从涂鸦仓库拉取包含SDK环境的demo例程
下载[Tuya IoTOS Embeded WiFi & BLE sdk](csdn - 安全中心)
6.功能实现:
- 触摸按键:在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 文件中。
- 人体感应:emo还有一个人体感应开关灯光和屏幕的功能,是通过一个PIR传感器来简单实现的。该传感器会在检测到人体运动的时候输出高电平,简单易用。直接写一个读取连接传感器IO的电平的函数,然后把它放到线程里周期运行,并在读到高电平的时候保存PIR状态在设备数据结构体当中,然后另一个线程对设备数据结构体中PIR的状态进行判定,当设备打开人体感应功能,且设备总开关处于打开的情况下,PIR检测到有人的时候将会打开灯光开关,同时启动定时器。当定时器触发进入中断时将会关闭灯光开关。
- 电量检测及显示:这个功能通过ADC采样得到电池电压,再根据电压值预估电池剩余电量,同时把之前屏幕素材收集阶段准备的几张电池图案显示在屏幕上。
7.编译和烧录
在linux终端输入指令运行SDK环境目录下的build_app.sh脚本来编译代码生成固件,指令格式为 sh build_app.sh APP_PATH APP_NAME APP_VERSION:
固件生成路径为:apps->APP_PATH->output 。烧录完成之后就可以进行功能调试了
\
这样一款带有多种灯光模式,既可以显示时间又可以智能感应开关的镜子你是不是心动了,进入详细步骤指导获取详细的开发方案,get同款!
上期精彩回顾:[实不相瞒这台植物萌宠有点东西](实不相瞒,这台植物萌宠有点东西! - 掘金 (juejin.cn))