# STM32数字网络温度计 ShaoBing-No.1
***本项目所有源码文件包括原理图PCB已开源到GitHub上 供大家学习讨论-> [ShaoBing-No.1](https://github.com/firestaradmin/ShaoBing-No.1)***
***视频实况已上传至BiliBili [点我观看](https://www.bilibili.com/video/av80249560)***
---
## 项目概括
- **项目简介:stm32项目,时间片论询结构,驱动OLED显示温度历史曲线,具备物联网功能发送数据至手机APP,可PI计算输出控制温度方案**
- ![在这里插入图片描述](ShaoBing_V1/2019121514003442.jpg)
- **项目起因:**
大学专业课程设计,需设计一款基于DS18B20 的数字温度计
- **项目要求:**
1. 实现测温范围 -5~125℃,误差+-0.1℃
2. 实时采集温度数据,并实时显示记录温度曲线
3. 设置控制的期望值范围,超出范围则声光报警
- **扩展要求:**
4. 可与计算机进行通讯 ,可上传温度数据
5. 具有PI控制算法,可计算输出值
6. 具有物联网功能,将数据传递至服务器,手机显示温度曲线 基于ESP8266-01S
7. 位式或连续温度调节
- **项目器件:**
1. STM32F103C8T6 主控芯片*1
2. DS18B20 测温*1
3. OLED_IIC 屏幕*1
4. ESP8266-01S WIFI模块*1
5. LED灯
6. 蜂鸣器
7. etc..
---
## 项目实现
### 1. 原理图设计:
首先进行原理图设计,基于最基础的STM32F103C8T6芯片,将需要用到的元器件模块等等,连接至主控。
具体可以参考以下原理图。(如有错误请指正 谢谢)
![在这里插入图片描述](ShaoBing_V1/20191215133941893.png)
### 2. PCB设计:
将原理图画成PCB文件,并找一个商家发板。
每次发板子,等待都是漫长的过程。但是还好,嘉立创每月可以发两次5元的板子,算是对学生和工程师的优惠了
PCB设计如下:(如有错误请指正 谢谢)
![在这里插入图片描述](ShaoBing_V1/20191215135042270.png)
### 3. Code 代码部分
板子到手后,就急急忙忙的焊完了,通电测试正常后,开始编写程序。
- 程序部分分为两块:主控STM32的程序和ESP8266-01S的固件
主控采用Keil编写,ESP采用Arduino编写,因为Arduino的Wifi库真的很好用。
#### STM32F103主控部分:
主控的思路基本就是,一个循环里做各任务的调用,如按键扫描键值处理,屏幕的动态更新,等等
每个任务都是采用Void形式,不返回数值,全部使用全局变量的标志来实现各函数间的通讯信息传递。
这样的好处就是不会阻塞程序的运行,使得程序的每一个部分都会被执行到。与RTOS等时间片论相比
就有那味儿了!!
主控部分我的大部分精力都花在了OLED的刷新速率优化和按键处理上
OLED最后采用硬件IIC + DMA 的行为传送,在主控RAM里模拟一个1024B的显存,每次显存有变化则刷新至OLED,以OLED-IIC 400Kpbs的速率下,刷新整屏幕只需要 *0.02332s* 理论上刷新率可以达到42帧,而采用DMA传输,还不浪费CPU的资源。
主循环中的进程主要有下面四个
```c
//while(1)主循环里 顺序执行以下进程,进程基本无阻碍,使用全局变量消息传递机制,可保证实时性。
myKey_GetKeyValue();//获取键值
app_Handle_KeyState();//键值处理
app_Updata_Interface();//界面更新
app_Dynamic_Display();//动态显示
```
先硬件层上,中断处理按键,是否有按键按下,然后调用
```c
myKey_GetKeyValue();//获取键值
```
根据按下的时间更新按键消息。再根据按键消息来执行各个函数功能。
具体按键处理机制,可以参考我的另一篇博客 *[STM32按键处理机制](https://blog.csdn.net/yougeng123/article/details/103733592)*
之后是界面更新函数进程和动态更新函数进程。
界面更新函数进程主要根据当前页面序号与上次页面序号是否相同,来决定是不是要更新界面,具体定义如下:
```c
//界面显示
typedef enum
{
No_Interface = 256,
Main_Interface = 0,
Menu_Interface = 1,
Menu_ENTER_Interface = 2,
Input_Interface = 3
}Interface_Num_enumTypedef;//页面序号定义
Interface_Num_enumTypedef now_Interface_Num = No_Interface ; //当前的页面序号
Interface_Num_enumTypedef next_Interface_Num = Main_Interface; //下次需要更新到的页面序号
```
页面静态更新函数:
```c
//静态显示 aka 静态页面更新进程
void app_Updata_Interface()
{
if(now_Interface_Num != next_Interface_Num)
{
OLED_RamClear();
switch (next_Interface_Num)
{
case Main_Interface:
OLED_ShowBMP(0,0,127,63, (u8 *)Interface_Main);
now_Interface_Num = Main_Interface;
break;
case Menu_Interface:
OLED_ShowBMP(0,0,127,63, (u8 *)Interface_Menu);
now_Interface_Num = Menu_Interface;
break;
case Menu_ENTER_Interface:
OLED_ShowBMP(0,0,127,63, (u8 *)MENU_ENTER_INTERFACE);
············省略
```
动态更新每一个主循环进行一次,就会动态更新一次,以便于显示按键动画,温度曲线等动态效果。当处于哪个页面就会更新相应的效果,具体应用具体设计。篇幅过大就不贴出来了。源码已上传至Github
那么界面显示最主要的还是OLED的驱动显示,OLED驱动好了,更新速率上去了,动画才会更加流畅。可以参考 *[ STM32 DMA-IIC刷新OLED屏(理论可达42+帧率)](https://blog.csdn.net/yougeng123/article/details/103734303)*
#### ESP8266-01S部分:
ESP的程序相对来说简单了很多,需要做的只是连接WIFI然后串口接受温度数据,并HTTP-POST请求上传数据置服务器即可。(其实可以做的复杂点,就是自己设计一个通讯协议,这样通讯更严谨,但由于时间问题,就草草的设计了简单的通讯,无帧头帧尾和校验位)
//本来打算加个选择连接WIFI的功能,并且增加软键盘输入密码等功能,但是学期末了,时间不太够了,想想觉得很麻烦,就算了,直接将WIFI名和密码写在了程序里。
ESP的程序编写用到了Arduino的ESP8266的库,网上可以下载到,也可以到我的GitHub上下载。
思路:先连接WIFI 然后一直循环在串口接收的函数里,判断是否有正确的温度数据被接受,有则POST请求至服务器
```cpp
char* getValue()
{
while (true)
{
if (Serial.available() > 0)
{
inByte = Serial.read();
//Serial.print(inByte);
if (inByte == '[')
{
isCommand = true;
rxBuffer_tail = 0;
//rxBuffer[0] = 0;
}
else if (inByte == ']')
{
isCommand = false;
rxBuffer[rxBuffer_tail] = '\0';
return rxBuffer;
}
else if (isCommand)
{
rxBuffer[rxBuffer_tail++] = inByte;
}
}
}
}
```
具体代码已开源至GitHub。
@firestaradmin
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于stm32,时间片论结构,驱动OLED显示温度历史曲线,具备(ESP8266-01S)物联网功能发送数据至手机APP,可PI计算输出控制温度方案,温度上下限声光报警 个人花大量时间整理出的真实毕业设计实战成果,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用。 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源,直到选到您满意的资源为止哦~ 个人花大量时间整理出的真实毕业设计实战成果,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用。 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源,直到选到您满意的资源为止哦~ 个人花大量时间整理出的真实毕业设计实战成果,内容丰富,文档也很详细。无论做毕业设计还是用于学习技能,或工作中当做参考资料,都能发挥重要作用。 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源,直到选到您满意的资源为止哦~
资源推荐
资源详情
资源评论
收起资源包目录
《毕业设计》--基于stm32,驱动OLED显示温度历史曲线,具备物联网功能发送数据至手机APP.zip (242个子文件)
ShaoBing_No_1.uvguix.79183 88KB
ShaoBing_No_1.axf 448KB
1.h.bak 6KB
1.h.bak 6KB
右.h.bak 556B
左.h.bak 556B
实际应用.bmp 3.75MB
主界面.bmp 2.77MB
Water.bmp 9KB
246.bmp 6KB
209.bmp 4KB
菜单进入选项.bmp 1KB
test1.bmp 1KB
主界面.bmp 1KB
菜单.bmp 1KB
328.bmp 798B
216.bmp 798B
207.bmp 798B
208.bmp 576B
右箭头10x11.bmp 106B
左箭头10x11.bmp 106B
VCL60.BPL 1.26MB
RTL60.BPL 661KB
stm32f10x_tim.c 104KB
stm32f10x_flash.c 59KB
stm32f10x_rcc.c 49KB
stm32f10x_adc.c 45KB
stm32f10x_i2c.c 43KB
stm32f10x_can.c 43KB
stm32f10x_usart.c 36KB
system_stm32f10x.c 35KB
stm32f10x_fsmc.c 34KB
myShaoBingApp.c 33KB
stm32f10x_spi.c 29KB
stm32f10x_dma.c 28KB
OLED_I2C_Buffer.c 28KB
stm32f10x_sdio.c 27KB
stm32f10x_gpio.c 22KB
stm32f10x_dac.c 18KB
core_cm3.c 16KB
stm32f10x_cec.c 11KB
myKey.c 10KB
stm32f10x_pwr.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_bkp.c 8KB
misc.c 7KB
stm32f10x_exti.c 7KB
main.c 6KB
stm32f10x_wwdg.c 5KB
stm32f10x_dbgmcu.c 5KB
stm32f10x_iwdg.c 5KB
AT24C04.c 4KB
DS18B20.c 4KB
myUSART.c 4KB
stm32f10x_crc.c 3KB
stm32f10x_it.c 2KB
myTIM.c 2KB
delay.c 2KB
ee.c 482B
stm32f10x_tim.crf 314KB
oled_i2c_buffer.crf 306KB
myshaobingapp.crf 305KB
main.crf 302KB
mykey.crf 302KB
myusart.crf 301KB
stm32f10x_rcc.crf 300KB
stm32f10x_i2c.crf 298KB
stm32f10x_usart.crf 298KB
at24c04.crf 298KB
stm32f10x_gpio.crf 296KB
stm32f10x_dma.crf 296KB
ds18b20.crf 295KB
system_stm32f10x.crf 294KB
stm32f10x_exti.crf 293KB
misc.crf 293KB
mytim.crf 293KB
delay.crf 292KB
core_cm3.crf 4KB
myshaobingapp.d 1KB
myusart.d 1KB
oled_i2c_buffer.d 1KB
main.d 1KB
stm32f10x_usart.d 1KB
stm32f10x_gpio.d 1KB
stm32f10x_exti.d 1KB
stm32f10x_rcc.d 1KB
stm32f10x_i2c.d 1KB
stm32f10x_tim.d 1KB
stm32f10x_dma.d 1KB
system_stm32f10x.d 1KB
mykey.d 1KB
ds18b20.d 980B
at24c04.d 978B
mytim.d 944B
delay.d 901B
misc.d 899B
core_cm3.d 137B
startup_stm32f10x_md.d 78B
Asc12x24E.dat 5KB
Asc8X16E.dat 4KB
共 242 条
- 1
- 2
- 3
资源评论
季风泯灭的季节
- 粉丝: 2038
- 资源: 3370
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕设和企业适用springboot智能制造类及信息安全管理系统源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及无人驾驶系统源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及行业资讯平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及智能图书馆管理系统源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及智能物流调度平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及智能云平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造类及资产管理平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及产品溯源系统源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及教育资讯平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及情感分析平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及企业IT解决方案平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及全渠道电商平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及视觉识别平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及人工智能客服平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及数据存储平台源码+论文+视频.zip
- 毕设和企业适用springboot智能制造平台类及图书管理系统源码+论文+视频.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功