2️⃣ 5V锂电池
3️⃣ 5V 0.2A直流风扇
构成主要芯片
1️⃣ 主控芯片:STM32F103C8T6
2️⃣ 电机驱动芯片:DRV8833
3️⃣ 温度传感器:GX18B20
4️⃣ 5V转3.3V稳压芯片:AMS1117-3.3
连接接口
1️⃣ 用户充电接口:Type-C
2️⃣ 充电连接口:MX1.25mm针座接口
3️⃣ 放电接口:XH2.54mm2P接口
4️⃣ 风扇接口:SH1.0mm4P母座
5️⃣ 下载程序接口:2.54mm单排弯针
原理图
五、元器件清单
数量 | 说明 | 值 | 主要类别 | 次要类别 |
---|---|---|---|---|
2 | 22pF | 22pF | 电容 | 贴片电容(MLCC) |
8 | 100nF | 100nF | 电容 | 贴片电容(MLCC) |
2 | 22uF | 22uF | 电容 | 贴片型铝电解电容 |
1 | 2.2uF | 2.2uF | 电容 | 贴片电容(MLCC) |
1 | 10nF | 10nF | 电容 | 贴片电容(MLCC) |
1 | HX25003-2WAP | / | 连接器 | 线对板/线对线连接器 |
1 | A1251WR-2P | / | 连接器 | 线对板/线对线连接器 |
1 | PZ254V-11-04P | / | 连接器 | 排针 |
1 | NCD0805R1 | / | 光耦/LED/数码管/光电器件 | 发光二极管/LED |
1 | 1MΩ | 1MΩ | 电阻 | 贴片电阻 |
2 | 10kΩ | 10kΩ | 电阻 | 贴片电阻 |
1 | 510Ω | 510Ω | 电阻 | 贴片电阻 |
1 | TS-1101-C-W | / | 按键/开关 | 轻触开关 |
1 | STM32F103C8T6 | / | 单片机/微控制器 | 单片机(MCU/MPU/SOC) |
1 | DS18B20U | / | 传感器 | 温度传感器 |
1 | AMS1117-3.3 | / | 电源芯片 | 线性稳压器(LDO) |
1 | DRV8833PWP | / | 电源芯片 | 电机驱动芯片 |
1 | U262-161N-4BVC11 | 连接器 | USB连接器 | |
1 | 8MHz | 8MHz | 晶振/振荡器/谐振器 | 无源晶振 |
1 | AFC10-S04QCA-00 | 连接器 | 线对板/线对线连接器 |
六、 软件设计
main.c
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "GX18B20.h"
#include "usart.h"
//#include "DS18B20.h"
int main(void)
{
float temperature = 0;
delay\_init();
uart\_init(9600);
LED\_Init();
DS18B20\_Init();
IN1 = 0;
IN2 = 0;
MOTOR = 0;
while(1)
{
temperature = DS18B20\_GetTemperature();
//在此处处理温度值,例如打印到串口或显示屏
#if 1
IN1 = 1;
IN2 = 0;
if(temperature > 35.00)
{
BEEP =0; //PC13
MOTOR = 1;
}
else
{
BEEP =1; //PC13
MOTOR = 0;
}
#else
MOTOR = 1;
#endif
printf("温度=%.2f\r\n",temperature);
delay\_ms(500);
delay\_ms(500);
}
}
GX18B20.c
#include "GX18B20.h"
#include "delay.h"
// 初始化函数
void GPIO\_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIO时钟
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
// 配置引脚为推挽输出
GPIO_InitStructure.GPIO_Pin = GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO\_Init(GPIO_PORT, &GPIO_InitStructure);
// 默认拉低总线
GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
}
// 发送复位脉冲
void OW\_Reset(void)
{
// 拉低总线至少480us
GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
delay\_us(500);
// 释放总线
GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
delay\_us(60);
// 等待设备拉低总线
while (GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN) == Bit_RESET);
}
// 发送一个字节
void OW\_WriteByte(uint8\_t byte)
{
uint8\_t i;
for (i = 0; i < 8; i++)
{
// 拉低总线至少1us
GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
delay\_us(2);
// 发送数据位
if (byte & 0x01)
{
GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
}
else
{
GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
}
// 拉高总线,释放总线
delay\_us(60);
GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
delay\_us(2);
// 移位
byte >>= 1;
}
}
// 读取一个字节
uint8\_t OW\_ReadByte(void)
{
uint8\_t byte = 0;
uint8\_t i;
for ( i = 0; i < 8; i++)
{
// 拉低总线至少1us
GPIO\_ResetBits(GPIO_PORT, GPIO_PIN);
delay\_us(2);
// 拉高总线,释放总线
GPIO\_SetBits(GPIO_PORT, GPIO_PIN);
delay\_us(2);
// 读取数据位
if (GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN))
{
byte |= (1 << i);
}
// 等待余下的时隙结束
delay\_us(60);
}
return byte;
}
// 初始化函数
void DS18B20\_Init(void)
{
// 配置GPIO
GPIO\_Configuration();
}
// 获取温度
float DS18B20\_GetTemperature(void)
{
uint8\_t temp_LSB, temp_MSB;
int16\_t temp;
// 发送复位脉冲
OW\_Reset();
// 发送跳过ROM指令
OW\_WriteByte(0xCC);
// 发送温度转换指令
OW\_WriteByte(0x44);
// 等待转换完成
while (!GPIO\_ReadInputDataBit(GPIO_PORT, GPIO_PIN));
// 发送复位脉冲
OW\_Reset();
// 发送跳过ROM指令
OW\_WriteByte(0xCC);
// 发送读取温度指令
OW\_WriteByte(0xBE);
// 读取温度数据
temp_LSB = OW\_ReadByte();
temp_MSB = OW\_ReadByte();
// 计算温度值
temp = (temp_MSB << 8) | temp_LSB;
return (float)temp / 16.0f;
}
GX18B20.h
#ifndef \_\_GX18B20\_H
#define \_\_GX18B20\_H
#include "sys.h"
#include "stdlib.h"
#include "stm32f10x.h"
#include "delay.h"
// 定义引脚号
#define GPIO\_PORT GPIOA
#define GPIO\_PIN GPIO\_Pin\_0
extern void DS18B20\_Init(void);
extern float DS18B20\_GetTemperature(void);
#endif
led.c
#include "led.h"
void LED\_Init(void)
{
//LED
GPIO_InitTypeDef GPIO_InitStructure;
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); //使能3端口时钟
GPIO\_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
//GPIO\_PinRemapConfig(GPIO\_Remap\_SWJ\_JTAGDisable, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO\_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC
GPIO\_SetBits(GPIOC,GPIO_Pin_14);
//蜂鸣器
RCC\_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE); //使能3端口时钟
GPIO\_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO\_Init(GPIOC, &GPIO_InitStructure); //初始化GPIOC
GPIO\_SetBits(GPIOC,GPIO_Pin_13);
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**



**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**


**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
)]
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
<img src="https://img-community.csdnimg.cn/images/73bb5de17851459088c6af944156ee24.jpg" alt="img" style="zoom: 67%;" />
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**