远程APP控制筋膜枪方案

前言

在现代社会,随着生活水平的提升和健康意识的增强,人们对健康与舒适生活的追求愈发强烈。肌肉疲劳、身体僵硬、工作压力,这些问题困扰着许多人。为了解决这些困扰,深圳京鸿通信科技有限公司自豪地推出了一款全新设计的筋膜枪,为您的健康生活带来全新的体验。

本款筋膜枪采用了nrf52832研发,整机耗电只有22UA,多档位调节,蓝牙远程连接控制,远程更新驱动程序,智能充电和灯光提示,持久压力和高强度振动,自动补正振动强度,更是为不同人群提供不同的感受。

以下是内容大纲

  • HVP3传统筋膜枪比较
  • 整机测试以及多数功能调试经验分享
  • 一站式嵌入式开发

整机测试以及多数功能调试经验分享

筋膜枪持有不同档位,以及不同情况下的压力反馈,用户可以通过设备上的触摸屏或手机APP进行模式选择和力度调节。多档位力度选择确保每个用户都能找到适合自己的舒适强度。

本设备采用高效无刷电机技术,运作时噪音极低(低于40分贝)。

输出压力和灯光控制

void vendor_fg_led_update(void)
{

	uint8 is_falsh = 0;
	uint8 brake_gear  = Vendor_general_calc_brake_gear(mVendor_run_info.power_level, mVendor_run_info.work_mode, mVendor_run_info.fg_freq, &is_falsh);

	if(1 == mVendor_run_info.gear_change_climbing)
	{
		return ;
	}
	//LOGD("[MAIN] FG %d ms, %d HZ bake, brake_gear_level=%d %d\n", mVendor_run_info.fg_timems, mVendor_run_info.fg_freq, brake_gear, mVendor_run_info.brake_gear_level);
	if(is_falsh == 1)
	{
		if(brake_gear > 0)
		{
			Vendor_Main_gear_output(mVendor_run_info.power_level, mVendor_run_info.work_mode, 0);
		}
        if(brake_gear != mVendor_run_info.brake_gear_level)
        {
			mVendor_run_info.brake_gear_level = 0; 
			//LOGD("brake_planel_led set %d\r\n", mVendor_run_info.brake_gear_level);
			Vendor_Main_brake_planel_led(mVendor_run_info.brake_gear_level, mVendor_run_info.work_mode);
        }					
	}
	else
	{
		
		if(brake_gear > 0)
		{
			if(VENDOR_WORK_MODE_PROFESSIONAL == mVendor_run_info.work_mode)
			{
				Vendor_Main_gear_output(mVendor_run_info.power_level, mVendor_run_info.work_mode, brake_gear);
			}
		}
        if(brake_gear != mVendor_run_info.brake_gear_level)
        {
			mVendor_run_info.brake_gear_level = brake_gear; 
			//LOGD("brake_planel_led set %d\r\n", mVendor_run_info.brake_gear_level);
			Vendor_Main_brake_planel_led(mVendor_run_info.brake_gear_level, mVendor_run_info.work_mode);
        }					
	}

}
    m_seq_values = duty_cycle;
    nrf_drv_pwm_simple_playback(&m_pwm0, &m_seq, 1, 0);

旋钮设有多个档位,从低到高依次递增,用户可以根据具体需求进行选择。每个档位对应不同的电压输出,确保从轻量级使用到重度使用都能获得最佳体验。

采用高精度传感器和控制芯片,确保旋钮在不同档位下的电压输出稳定可靠。这样不仅提高了设备的性能,也延长了设备的使用寿命。

搭配蓝牙功能通过APP链接进行远程开启关闭,使设备更智能便捷,用户可以随心所欲通过移动设备对设备进行控制。

蓝牙广播数据包配置

		// 定义一个制造商自定义数据的结构体变量,配置广播数据时将该变量的地址赋值给广播数据包中
		ble_advdata_manuf_data_t manuf_specific_data;
		// 0x0059是Nordic的制造商ID
		manuf_specific_data.company_identifier = 0x08ba;
		// 指向自定义数据
		manuf_specific_data.data.p_data = my_adv_manuf_data;
		// 自定义数据的大小
		manuf_specific_data.data.size	 = sizeof(my_adv_manuf_data);
		// 定义自定义数据到广播包中
		//init.advdata.p_manuf_specific_data = &manuf_specific_data;
		init.advdata.name_type				 = BLE_ADVDATA_FULL_NAME;
		init.advdata.short_name_len = strlen(DEVICE_NAME); 
	
		init.advdata.include_appearance 	 = true;
		init.advdata.flags					 = BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE;
		init.advdata.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
		init.advdata.uuids_complete.p_uuids  = m_adv_uuids;
	
		init.config.ble_adv_fast_enabled  = true;
		init.config.ble_adv_fast_interval = APP_ADV_INTERVAL;
		init.config.ble_adv_fast_timeout  = APP_ADV_DURATION;

读取主从通信

收包流程

memset(mVendor_run_info.uart_recv, 0, sizeof(mVendor_run_info.uart_recv));
memcpy(mVendor_run_info.uart_recv, data_buff, data_cout);
mVendor_run_info.uart_recv_len = data_cout;
memset(data_buff, 0, sizeof(data_buff));
//NRF_LOG_INFO("data_cout = %d",data_cout);
data_cout = 0;

分析接收数据

	if(len == 0)//未收到
	{
//		NRF_LOG_INFO("ck err-1 \r\n");
//				printf("ck err-1 \r\n");
		return -1;
	}
	if(ptr[0] != 0xA5)//包头错误
	{
//		NRF_LOG_INFO("ck err-2 \r\n");
//				printf("ck err-2 \r\n");
		return -1;
	}
	if(len >= 2)//未收完
	{
		data_len = ptr[1];
	}
	else
	{
	//	LOG("ck err+1 %d\r\n", len);
		return 1;
	}
	if(len > data_len)//超出
	{
//		NRF_LOG_INFO("ck err-3 \r\n");
//				printf("ck err-3 \r\n");
		return -1;
	}
	if(len < data_len)//过少
	{
		//LOG("ck err+2 %d,need %d\r\n", len, data_len);
		return 2;
	}

	if(ptr[len - 1] != 0x5A)//收错
	{
//		NRF_LOG_INFO("ck err-4 %02X\r\n", ptr[len - 1] );
//				printf("ck err-4 %02X\r\n", ptr[len - 1] );
		return -1;
	}

	
	for(i = 1; i < len - 2; i++)//
	{
		crc ^= ptr[i];
	}
	if(crc != ptr[len - 2])
	{
//		NRF_LOG_INFO("ck err-5 [%02X-%02X] \r\n", crc,  ptr[len - 2]);
//				printf("ck err-5 [%02X-%02X] \r\n", crc,  ptr[len - 2]);
		return -1;
	}
	
	return 0;

内置大容量锂电池,整机休眠功耗实测22UA,一次充电可持续使用5-6小时,满足日常及长时间外出使用需求。设备充电时间短,方便用户快速充电后继续使用。

充电时,电池电量小于25%时显示红灯呼吸灯,电量25%-50%显示黄色呼吸灯,电量50%-75%显示黄红色呼吸灯,大于75%显示绿色呼吸灯,充满后绿色灯常亮。

/**@brief Function for putting the chip into sleep mode.
 *
 * @note This function will not return.
 */
static void sleep_mode_enter(void)
{
    ret_code_t err_code;

    err_code = bsp_indication_set(BSP_INDICATE_IDLE);
    APP_ERROR_CHECK(err_code);

    // Prepare wakeup buttons.
    err_code = bsp_btn_ble_sleep_mode_prepare();
    APP_ERROR_CHECK(err_code);

    // Go to system-off mode (this function will not return; wakeup will cause a reset).
//	app_uart_close();
	 // sd_power_dcdc_mode_set(1);
	 
    err_code = sd_power_system_off();
//    APP_ERROR_CHECK(err_code);
}

总结

本款筋膜枪在研发时就有一些见解和对芯片的研究之处,接下来鄙人会慢慢将其分享出来,以帮助各位在开发路上少踩坑。

研发类型的需求和讨论,如有需要请联系鄙人。京鸿科技有限公司邮箱:zhongweixiong@kyohoon.com,联系电话:15507589165 钟先生

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值