676|3

52

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

智能车载座椅加热器之蓝牙功能实现 [复制链接]

 

作品简介

  • 智能车载座椅加热器:

 

“1”为蓝牙模块负责采集数据向手机端发送。

“2”NTC温度传感器负责对座椅温度的感知。

“3”STM32Demo 板负责采集温度传感器的数据并转化为温度,将实时温度通过串口经过蓝牙模块上传至手机APP,同时根据温度值控制座椅加热。

“4”座椅加热状态指示,为了更好展现加热过程控制速度。用LED灯来指示方便观察效果。

产品功能:北方冬天室外停车,早上座椅方向盘特别冷,为了提升用户驾驶体验,该系统就是根据用户驾驶习惯(需要用户端设置,服务器端发送,本例只做执行端),获取座椅温度,当座椅温度低于10摄氏度

启动加热功能,当温度接近20℃时候关闭加热。(以上功能根据服务器在用户定点用车前提前三分钟启动执行)待用户驾车时完成预加热功能。

系统框图

 

NTC温度传感器负责感知座椅温度,STM32核心板负责将NTC感知的电阻变化采集成数字量并对数字量的阻值转化为温度,同时将温度值通过蓝牙模块发送给手机APP端。另一方面将温度值转化为加热丝的控制量,根据加热丝的温度控制加热量。NTC作为控制量的输入端感知温度,核心板负责实时采集温度并将温度传给APPD端,同时控制PWM的输出。实现数据采集,数据上报,数据控制三方协同。

各部分功能说明

蓝牙模块数据交互

目前已实现蓝牙模块的数据交互。
该部分核心代码如下:

#include "usart.h"
#include "stdio.h"
/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

UART_HandleTypeDef huart3;

/* USART3 init function */

void MX_USART3_UART_Init(void)
{

  /* USER CODE BEGIN USART3_Init 0 */

  /* USER CODE END USART3_Init 0 */

  /* USER CODE BEGIN USART3_Init 1 */

  /* USER CODE END USART3_Init 1 */
  huart3.Instance = USART3;
  huart3.Init.BaudRate = 9600;
  huart3.Init.WordLength = UART_WORDLENGTH_8B;
  huart3.Init.StopBits = UART_STOPBITS_1;
  huart3.Init.Parity = UART_PARITY_NONE;
  huart3.Init.Mode = UART_MODE_TX_RX;
  huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart3.Init.OverSampling = UART_OVERSAMPLING_16;
  huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
  huart3.Init.ClockPrescaler = UART_PRESCALER_DIV1;
  huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
  if (HAL_UART_Init(&huart3) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetTxFifoThreshold(&huart3, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_SetRxFifoThreshold(&huart3, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_UARTEx_DisableFifoMode(&huart3) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN USART3_Init 2 */

  /* USER CODE END USART3_Init 2 */

}

void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
{

  GPIO_InitTypeDef GPIO_InitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
  if(uartHandle->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspInit 0 */

  /* USER CODE END USART3_MspInit 0 */

  /** Initializes the peripherals clocks
  */
    PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART3;
    PeriphClkInit.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
    if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
    {
      Error_Handler();
    }

    /* USART3 clock enable */
    __HAL_RCC_USART3_CLK_ENABLE();

    __HAL_RCC_GPIOC_CLK_ENABLE();
    /**USART3 GPIO Configuration
    PC10     ------> USART3_TX
    PC11     ------> USART3_RX
    */
    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
    HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /* USER CODE BEGIN USART3_MspInit 1 */

  /* USER CODE END USART3_MspInit 1 */
  }
}

void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
{

  if(uartHandle->Instance==USART3)
  {
  /* USER CODE BEGIN USART3_MspDeInit 0 */

  /* USER CODE END USART3_MspDeInit 0 */
    /* Peripheral clock disable */
    __HAL_RCC_USART3_CLK_DISABLE();

    /**USART3 GPIO Configuration
    PC10     ------> USART3_TX
    PC11     ------> USART3_RX
    */
    HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);

  /* USER CODE BEGIN USART3_MspDeInit 1 */

  /* USER CODE END USART3_MspDeInit 1 */
  }
}

/* USER CODE BEGIN 1 */
int fputc(int ch,FILE *f)
{
  HAL_UART_Transmit(&huart3,(uint8_t*)&ch,1,0xffff);
    return ch;
}

int fgetc(FILE * f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart3,(uint8_t*)&ch,1,0xffff);
  return ch;
}
/* USER CODE END 1 */

 

 

最新回复

大佬NB啊,如果不考虑成本的话可以试试ESP32,开发简单而且板子会小很多   详情 回复 发表于 2023-12-18 09:15
点赞 关注
 
 

回复
举报

6807

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

代码运行后效果如何

 
 
 

回复

6968

帖子

11

TA的资源

版主

板凳
 

作品挺不错呀,期待看到楼主的APP,多才多艺的大佬。

 
 
 

回复

704

帖子

0

TA的资源

纯净的硅(高级)

4
 

大佬NB啊,如果不考虑成本的话可以试试ESP32,开发简单而且板子会小很多

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表