对于听力障碍人群来说,在意外来临前将感知的危险信息传递给他们是件非常重要的事情。那么如何来解决这个问题呢?
我们可以将采集到的危险信息以触觉的方式来传递给他们,如在火焰传感器感知到危险时,可以无线通讯的方式传递到配有触觉振动效果的手镯上来停止他们。
为简化信息传递过程,这里先以串行通讯的方式来控制触觉马达的振动。
1. 触觉马达控制
1)触觉马达
在泰坦触觉TITAN Core开发套件中,提供了一块基于ESP32的高度集成度触觉评估板和4个不同型号的触觉马达,见图1和图2所示。别看该开发套件不起眼,它可是能进行蓝牙播放音乐的。

图1 开发板

图2 触觉马达
其触觉评估板的引脚排列如图3所示,它支持以串口通讯的方式来控制触觉马达。

图3 引脚排列
对于4个触觉马达来讲,其特点如下:
低频马达 (LF):非常适用营造深沉的超低音震感
中频马达 (MF):适用于通用的触觉反馈
高频马达 (HF):专为呈现高频质感和发出提醒设计
低频冲击马达 (LFi):结合了低频响应与冲击式振动
2)控制测试
利用STM32U385开发板的串行通讯功能,可以控制触觉马达的振动效果。
为便于控制,可将不同振动效果的指令存放到数组中。
以触觉指令"pulse 0.5 50 0.5;"为例,其字节内容为:70 75 6C 73 65 20 30 2E 35 20 35 30 20 30 2E 35 3B
对于触觉指令"tick 0.5 50 1.0;",其字节内容为:74 69 63 6B 20 30 2E 35 20 35 30 20 31 2E 30 3B
对于触觉指令"vibrate 250 1 10 0.5 1;"的字节内容则为:76 69 62 72 61 74 65 20 32 35 30 20 31 20 31 30 20 30 2E 35 20 31 3B
相应的指令数组如下
// "pulse 0.5 50 0.5;"
uint8_t :CJMD_1[17]={0X70,0X75,0X6C,0X73,0X65,0X20,0X30,0X2E,0X35,0X20,0X35,0X30,0X20,0X30,0X2E,0X35,0X3B};
// "tick 0.5 50 1.0;"
uint8_t CJMD_2[16]={0X74,0X69,0X63,0X6B,0X20,0X30,0X2E,0X35,0X20,0X35,0X30,0X20,0X31,0X2E,0X30,0X3B};
// "vibrate 250 1 10 0.5 1;"
uint8_t CJMD3[23]={0X76,0X69,0X62,0X72,0X61,0X74,0X65,0X20,0X32,0X35,0X30,0X20,0X31,0X20,0X31,0X30,0X20,0X30,0X2E,0X35,0X20,0X31,0X3B};
此外,为进行字符串指令向为字节形式的转换,可先发送字符串指令,然后再以十六进制的方式来显示接收到的内容。见图4所示。

图4 指令形式转换
2. 触发信号源
1)传感器触发
以火患预防为例,可使用火焰传感器来感知周围环境的火患情况,当检测到数据变化异常后,就通过串口发送相应的触觉提示指令以告知服务对象。
2)按键触发
出使用传感器感知异常情况外,还可以通过按键将感知的异常情况告知服务对象,即按键触发提示指令的发出。
实现按键触发的主程序为:
复制
int main(void){HAL_Init();SystemClock_Config();BSP_LED_Init(LD2);MX_GPIO_Init();MX_USART1_UART_Init();MX_ICACHE_Init();KEY_Config();while (1){if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_SET){HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_2, 16, 0xFFFF);}BSP_LED_Toggle(LD2);HAL_Delay(500);}}

图5 触发测试
在使用串口通讯控制触觉马达时,使用的串口引脚为:
Tx Pin----PA9
Rx Pin----PA10
所用接口及引脚如图6所示,与触觉马达的连接如图7所示。

图6 所用接口及引脚

图7 连接及测试
实现传感器及按键触发提示的主程序为:
复制
int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_ADC1_Init();MX_ICACHE_Init();BSP_LED_Init(LD2);MX_USART1_UART_Init();KEY_Config();if (HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED) != HAL_OK){Error_Handler();}if (HAL_ADC_Start(&hadc1) != HAL_OK){Error_Handler();}if (HAL_ADC_PollForConversion(&hadc1, 10) != HAL_OK){Error_Handler();}I2C_CONFIG();HAL_Delay(50);while (1){uhADCxConvertedData = HAL_ADC_GetValue(&hadc1);uhADCxConvertedData_Voltage_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(VDDA_APPLI, uhADCxConvertedData, LL_ADC_RESOLUTION_12B);if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)==GPIO_PIN_SET){HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_2, 16, 0xFFFF);}if(uhADCxConvertedData_Voltage_mVolt >xz ){HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_3, 23, 0xFFFF);}BSP_LED_On(LD2);HAL_Delay(LED_BLINK_SLOW);BSP_LED_Off(LD2);HAL_Delay(LED_BLINK_SLOW);}}
在采用界面化管理的情况下,其界面如图图8所示。

图8 显示屏所用接口及引脚

图9 按键所用接口及引脚

图10 器件连接
在采用界面化管理的情况下,其界面如图图11所示。

图11 界面形式
软键盘所用引脚连接关系为:
K1------PC10
K2------PC11
K3------PC12
K4------PD2
软键盘所用引脚初始化函数为:
复制
void KEY_Config(void){static GPIO_InitTypeDef GPIO_InitStruct;__HAL_RCC_GPIOC_CLK_ENABLE();GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);__HAL_RCC_GPIOD_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_2;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);}
实现多键值分析处理的主程序为:
复制
int main(void){HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_ADC1_Init();MX_ICACHE_Init();BSP_LED_Init(LD2);if (HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED) != HAL_OK){Error_Handler();}if (HAL_ADC_Start(&hadc1) != HAL_OK){Error_Handler();}if (HAL_ADC_PollForConversion(&hadc1, 10) != HAL_OK){Error_Handler();}HAL_Delay(50);SPI_CONFIG();tft_Init();LCD_Clear(RED);BACK_COLOR=RED;POINT_COLOR=WHITE;LCD_ShowString(240,10," 8:30:00");show_tbh(20,45,7);show_tbh(97,45,0);show_tbh(174,45,5);show_tbh(250,45,6);show_tbh(20,145,1);show_tbh(97,145,2);show_tbh(174,145,4);show_tbh(250,145,3);POINT_COLOR=YELLOW;LCD_DrawLine(0, 32, 319,32);showhanzi16h(90,10,0,0);showhanzi16h(110,10,1,0);showhanzi16h(130,10,2,0);showhanzi16h(150,10,3,0);showhanzi16h(170,10,4,0);showhanzi16h(190,10,5,0);showhanzi16h(210,10,6,0);showhanzi16h(255,110,7,0);showhanzi16h(275,110,8,0);showhanzi16h(180,110,9,0);showhanzi16h(200,110,10,0);showhanzi16h(102,110,11,0);showhanzi16h(122,110,12,0);showhanzi16h(27,110,13,0);showhanzi16h(47,110,14,0);showhanzi16h(255,210,15,0);showhanzi16h(275,210,16,0);showhanzi16h(180,210,17,0);showhanzi16h(200,210,18,0);showhanzi16h(102,210,19,0);showhanzi16h(122,210,17,0);showhanzi16h(27,210,20,0);showhanzi16h(47,210,19,0);KEY_Config();MX_USART1_UART_Init();HAL_UART_Transmit(&huart1, (uint8_t *)CJMD3, 23, 0xFFFF);while (1){if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_10)==GPIO_PIN_RESET){showhanzi16h(255,210,15,1);showhanzi16h(275,210,16,1);HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_1, 16, 0xFFFF);}else{showhanzi16h(255,210,15,0);showhanzi16h(275,210,16,0);}if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_11)==GPIO_PIN_RESET){showhanzi16h(180,210,17,1);showhanzi16h(200,210,18,1);HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_2, 16, 0xFFFF);}else{showhanzi16h(180,210,17,0);showhanzi16h(200,210,18,0);}if(HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_12)==GPIO_PIN_RESET){showhanzi16h(102,210,19,1);showhanzi16h(122,210,17,1);HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_3, 16, 0xFFFF);}else{showhanzi16h(102,210,19,0);showhanzi16h(122,210,17,0);}if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_2)==GPIO_PIN_RESET){showhanzi16h(27,210,20,1);showhanzi16h(47,210,19,1);HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_4, 16, 0xFFFF);}else{showhanzi16h(27,210,20,0);showhanzi16h(47,210,19,0);}uhADCxConvertedData = HAL_ADC_GetValue(&hadc1);uhADCxConvertedData_Voltage_mVolt = __LL_ADC_CALC_DATA_TO_VOLTAGE(VDDA_APPLI, uhADCxConvertedData, LL_ADC_RESOLUTION_12B);if(uhADCxConvertedData_Voltage_mVolt > xz){HAL_UART_Transmit(&huart1, (uint8_t *)&CJMD_5, 23, 0xFFFF);}HAL_Delay(LED_BLINK_SLOW);}}
经程序的编译及下载,使用按键操作的效果如图12所示,即在按下按键时所选的功能会呈反白显示效果。

图12 操作测试
由于时间的原因,目前暂未完成以无线通讯的方式来发送提示指令。若完成该功能,则可摆脱线路连接的制约,从而达到佩戴式的应用。











。
---------------------
作者:jinglixixi
链接:https://bbs.21ic.com/icview-3478447-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

737

被折叠的 条评论
为什么被折叠?



