系统功能:
以单片机为控制核心,综合运用传感器、物联网、太阳能等技术,设计一种基于单片机为控制核心的智能恒温外卖柜。它由恒温系统、无线模块、智能提醒系统、供电系统等组成,通过太阳能电池板独立供电,利用太阳能储能元件驱动单片机,通过温度传感器检测箱内温度并进行控制,并且利用键盘、LCD1602液晶显示器、NRF24L01无线传输模块等实行智能操作,使外卖柜具有恒温、智能提醒、太阳能供电等功能。
要求进行系统的硬件和软件设计,完成电路仿真和制作,编程调试出所有的功能。
系统功能框图:
主要功能模块原理图:
电源时钟烧录接口:
单片机和按键输入电路:
传感器和控制电路:
资料获取地址
系统主要功能模块代码
初始化代码:
/* 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();
/* USER CODE BEGIN 2 */
HAL_Delay(100);
SetUart1RxToInput();
HAL_Delay(50);
//uart1打开接收中断
HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);
InitOled();
InitOledDisp();
ResetDHT11();
/* USER CODE END 2 */
系统状态控制:
//系统信息更新
void SystemControl(void)
{
UpdateTempData();
UpdateBleData();
if(getTempVal>setTempH) //获取到的温度大于设定的温度高阈值
{
heatState = false;
HEAT_OFF();
fanState = true;
FAN_ON();
BUZZER_ON();
}
else if(getTempVal<setTempL) //获取到的温度低于设定的温度低阈值
{
heatState = true;
HEAT_ON();
fanState = false;
FAN_OFF();
BUZZER_ON();
}
else
{
heatState = false;
HEAT_OFF();
fanState = false;
FAN_OFF();
BUZZER_OFF();
}
}
蓝牙模块上报系统数据:
//蓝牙模块上报系统数据
void UpdateBleData(void)
{
static uint8_t bleCnt = 0;
bleCnt++;
if(bleCnt>=BLE_UPDATE_INTER)
{
bleCnt = 0;
//打印获取到的温度值
printf("getTempVal:%02d\r\n", getTempVal);
//打印设置的温度高阈值
printf("setTempH:%02d\r\n", setTempH);
//打印设置的温度低阈值
printf("setTempL:%02d\r\n", setTempL);
if(heatState==true)
{
printf("Heat:ON\r\n");
}
else
{
printf("Heat:OFF\r\n");
}
if(fanState==true)
{
printf("Fan:ON\r\n");
}
else
{
printf("Fan:OFF\r\n");
}
}
}
此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。