智能颈部按摩仪——6.断电记忆、云端控制

news/2024/11/16 20:32:27/

一、断电记忆

1、原理

断电记忆的原理是将设备在断电前的各个工作状态写入到空闲的flash闪存中,在下次上电时从flash中读取数据,让设备工作在断电前的工作状态。
TLSR8253芯片flash布局如下:
在这里插入图片描述
0x040000 - 0x060000为未使用区域,可将设备状态写入该区域内。

2、实现

(1)写状态到flash

/***********************************************************
*   Function:  write_massage_status_to_flash
*   Input:     none
*   Output:    none
*   Return:    none
*   Notice:    将按摩仪状态写到 flash 中
***********************************************************/
void write_massage_status_to_flash(void)
{Flash_Write_Buff[0] = massage_state.on_off;Flash_Write_Buff[1] = massage_state.pattern;Flash_Write_Buff[2] = massage_state.gear;Flash_Write_Buff[3] = massage_state.heat;flash_write_page(FLASH_ADDR, FLASH_BUFF_LEN, (unsigned char *)Flash_Write_Buff);return;
}

(2)从flash读状态

/**********************************************************************
*   Function:  read_massage_status_to_flash
*   Input:     none
*   Output:    none
*   Return:    none
*   Notice:    从 flash 中读取按摩仪断电前状态,存到按摩仪状态结构体内
**********************************************************************/
void read_massage_status_to_flash(void)
{flash_read_page(FLASH_ADDR, FLASH_BUFF_LEN, (unsigned char *)Flash_Read_Buff);//将从 flash 读取到的数据,存放到结构体中massage_state.on_off = Flash_Read_Buff[0];massage_state.pattern = Flash_Read_Buff[1];massage_state.gear = Flash_Read_Buff[2];massage_state.heat = Flash_Read_Buff[3];return;
}

(3)恢复出厂设置

/***********************************************************
*   Function:  erase_massage_flash
*   Input:     none
*   Output:    none
*   Return:    none
*   Notice:    恢复出厂设置
***********************************************************/
void erase_massage_flash(void)
{massage_state.on_off = OFF;massage_state.pattern = relieve;massage_state.gear = first_gear;massage_state.heat = off_heat;Flash_Write_Buff[0] = OFF;Flash_Write_Buff[1] = relieve;Flash_Write_Buff[2] = first_gear;Flash_Write_Buff[3] = off_heat;flash_write_page(FLASH_ADDR, FLASH_BUFF_LEN, (unsigned char *)Flash_Write_Buff);return;
}

二、云端控制

1、原理

单点蓝牙一个DP点的所有信息存放在一个数组中。以功能模式为例,其DPID为104,对应数组为:

unsigned char mode_buf[]   = {0x68, 0x04, 0x01, 0x00};	//{DP_ID, DP_type, DP_len, DP_data}
tuya_ble_dp_data_report(mode_buf, 4);	//数据上报函数

上报单个DP点数据时调用tuya_ble_dp_data_report(uint8_t *p_data,uint32_t len)函数即将数据上报到云端。
APP下发控制命令也是以数组的形式存放在dp_data_array[255+3]数组中,编写DP数据下发处理函数,将dp_data_array[255+3]作为输入参数放在tuya_ble_demo.c中的tuya_cb_handler(tuya_ble_cb_evt_param_t* event)函数中即可实现APP指令下发。

2、实现代码
void app_dp_handle(uint8_t *dp_data)
{printf("dp_data:%d  %d  %d  %d\r\n", dp_data[0], dp_data[1], dp_data[2], dp_data[3]);   switch (dp_data[0]) {case 0x66:if (dp_data[3] == strong_heat) {massage_state.heat = strong_heat;} else {massage_state.heat = off_heat;}printf("dp_data[3]:%d massage_state.heat:%d\r\n", dp_data[3], massage_state.heat);if (!app_flag) {switching_heat(massage_state.heat);}break;case 0x67:printf("dp_data[3]:%d \r\n", dp_data[3]);switch (dp_data[3]) {case first_gear:hhhhhhhhhmassage_state.gear = first_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case second_gear:massage_state.gear = second_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case third_gear:massage_state.gear = third_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case fourth_gear:massage_state.gear = fourth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case fifth_gear:massage_state.gear = fifth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case sixth_gear:massage_state.gear = sixth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case seventh_gear:massage_state.gear = seventh_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case eighth_gear:massage_state.gear = eighth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case ninth_gear:massage_state.gear = ninth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case tenth_gear:massage_state.gear = tenth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case eleventh_gear:massage_state.gear = eleventh_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case twelfth_gear:massage_state.gear = twelfth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case thirteenth_gear:massage_state.gear = thirteenth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case fourteenth_gear:massage_state.gear = fourteenth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case fifteenth_gear:massage_state.gear = fifteenth_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;case max_gear:massage_state.gear = max_gear;if (!app_flag) {switching_gear(massage_state.gear);}break;default:break;}break;case 0x68:if (dp_data[3] == relieve) {h'h'h'h'h'h'h'h'hmassage_state.pattern = relieve;} else if (dp_data[3] == vitality) {massage_state.pattern = vitality;} else if (dp_data[3] == hammering) {massage_state.pattern = hammering;} else if (dp_data[3] == scraping_therapy) {massage_state.pattern = scraping_therapy;} else {massage_state.pattern = intelligent;}break;case 0x69:if (dp_data[3] == ON) {massage_state.on_off = ON;rs2255_init();voice_prompt_init();pattern_pin_init();app_flag = 0;} else {massage_state.on_off = OFF;power_off_init();app_flag = 1;}break;default:break;}
}

http://www.ppmy.cn/news/438285.html

相关文章

咦?智能颈部按摩仪还能语音播报,快搞起来!

一、档位切换实现 1、档位实现原理 按摩仪共设置15个档位,可以控制按摩的力度,通过BOOST升压电路实现。 通过P8口产生PWM波,调节PWM输出的正占空比来实现升压,详细的硬件原理可参考硬件部分关于升压原理的介绍,具体数…

智能颈部按摩仪设计——2.开发环境搭建

一、产品创建 进入涂鸦IoT智能平台在运动健康品类中选择颈部按摩仪,通讯协议选择蓝牙创建产品 完成产品创建,弹出功能点选项框后已有三个必选功能选项,关闭后在自定义功能点处添加产品实现的其他功能点。 设备面板选择自由配置面板&#xff…

舒缓肩颈酸痛,温暖呵护颈椎,宾多康智能颈椎按摩仪体验

如今很多人因为坐姿不健康,加上久坐的生活习惯,平时又缺少运动,所以难免有肩颈酸痛的问题,不积极改善的话,会对健康有很大影响。对此,我们除了要改善生活习惯,积极锻炼之外,还可以通过按摩仪之类的工具,来缓解颈部的酸痛、僵硬,促进颈椎的恢复。 这两天我在用的,是一…

开发功能更完善?教你打造完全体智能颈部按摩仪

若想开发功能更全面的智能颈部按摩仪可以参考中国知网上的一个课题研究《基于FPGA的便携式低频脉冲治疗仪的研制_裴跃生》和智能颈部按摩仪设计。 实现功能: 在现有的智能颈部按摩仪模式的基础上可以增加其它模式的设计,让智能颈部按摩仪体验更加完美。…

开发功能更加完善的智能颈部按摩仪

若想开发功能更全面的智能颈部按摩仪可以参考中国知网上的一个课题研究《基于FPGA的便携式低频脉冲治疗仪的研制_裴跃生》和智能颈部按摩仪设计 实现功能: 在现有的智能颈部按摩仪模式的基础上可以增加其它模式的设计,让智能颈部按摩仪体验更加完美。…

智能颈部按摩仪设计——3.功能模式实现

一、前言 按摩仪主要有物理按摩和电脉冲两种,本项目为电脉冲类型,其原理是通过电极感应金属片,用脉冲技术对颈椎进行刺激,从而缓解颈椎酸痛。 市场上按摩仪的常见功能主要有敲打、锤击、揉捏、针灸、推拿、刮痧、恒温热敷等&…

哇,这夸张的硬件设计——神奇的智能颈部按摩仪!

一、智能颈部按摩仪简介 现代人的生活忙忙碌碌,不少人下班之后还在地铁上用电脑做着未完成的工作,用手机回着各种消息,久而久之,我们的颈椎就会出现疲劳、酸痛的问题,有些甚至会发生眩晕、恶心的症状。 为此&#xff…

拆给你看!智能颈部按摩仪内部图片分享。

智能颈部按摩仪拆机研究 网上买了一款智能颈部按摩仪拆机研究了一下,下面来聊下我的拆机结果。 智能颈部按摩仪原理:是由电极贴片接触肌肤,利用低电压的脉冲电流作用于神经或肌肉等,从而促进局部血液循环,改善肌肉状态…