系统功能:
系统上电显示“欢迎使用智能饮水系统请稍后”,两秒后进入正常页面显示。
第一行显示检测到的水温值
第二行显示检测到的水位值
第三行显示检测到的TDS值
第四行显示本次出水的总水量
短按PB3按键TTS语音模块播报水温水位及TDS值。
RC522检测到卡片后启动水泵出水,出水到一定流量后自动停止出水。
手机连接蓝牙模块后,系统向手机定时上报当前的水温水位TDS和水流量值。
主要功能模块原理图:
电源时钟烧录接口:
单片机和按键输入电路:
传感器采集电路:
系统主要功能模块代码
初始化代码:
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
InitVar();
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_SPI1_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */
InitOled();
InitOledDisp();
HAL_Delay(100);
OledFill(0x00); //全屏熄灭
//初始化RFID
HAL_Delay(100);
MFRC_Init();
PCD_Reset();
if(InitDS18B20()==0)
{
// printf("%s", "DS18B20初始化成功");
//DS18B20在上电第一次读取时显示温度为85℃,这是正常的。
//85℃是DS18B20在上电复位后在温度寄存器内的对应数字量,
//这里DS18B20初始化成功后读一次值,避免出现85℃
DS18B20GetTemp_SkipRom();
}
/* USER CODE END 2 */
系统控制代码;
//系统信息更新
void SystemControl(void)
{
WaterControl();
ReadSensorVal();
UpdateTempData();
UpdateBleData();
TestReadCard();
}
蓝牙模块上报系统数据:
//更新BLE数据
void UpdateBleData(void)
{
static uint8_t bleCnt = 0;
bleCnt++;
if(bleCnt>=BLE_UPDATE_INTER)
{
bleCnt = 0;
printf("Temp:%4.1f\r\n", ds18b20Temp);
printf("Level:%04d\r\n", getWaterVal);
printf("TDS:%03d\r\n", getTdsVal);
printf("Flow:%6.1f\r\n", waterFlow.acculat);
}
}
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。
各功能模块资料: