当前位置:网站首页>基于wifi控制的51单片机温度报警器
基于wifi控制的51单片机温度报警器
2022-07-04 15:01:00 【吃肉解千愁】
新手入门笔记,难免存在很多纰漏。忘各位大佬发现错误后不吝赐教
笔者非电气专业,很多地方没有知识支撑,难免出现纰漏或解释摸棱两可
全套资料链接:百度网盘
我的小程序源码:点击提取
1、功能介绍
- 拓展显示器显示当前温度和阈值温度。
- 当温度超过设定的阈值后蜂鸣器报警。
- 可以通过wifi用手机界面调整参数。
因为之前有几次实验手机连不上单片机,我以为wifi的函数只能改变硬件的电平。但是又经过实验测试,wifi的函数可以直接放语句。这样逻辑就简单了,直接if-else大法。
2、逻辑结构介绍
通过wifi传入的字符改变现有的程序 if else大法
3、单片机前置知识
3.1 为什么选择单片机
单片机能够从现实中采集数据并通过程序来处理。使得电子设备经过程序的控制变得更加智能。方便了人们的生活。
3.2 单片机是什么。
- 在我的眼中单片机是微型电脑。
- 它有一些拓展接口如:显示屏、温度采集器、蓝牙、wifi等。这些拓展器赋予单片机更加强大的功能。
- 浓浓的电气特色。通过程序改变某个位置的电气特征实现功能。
吐槽下只能用C语言的古老语法。
3.3 单片机怎么用
将电气细节封装成小黑盒后程序就变成了调API写C语言小程序。
但是不懂底层电气原理会翻车~,详情见后面的“4.3显示函数“
- 软件方向需要编程基础(51单片机的语言是C)
- 硬件方向需要懂板子原理。(笔者表示看不懂(也没打算看懂))
4、开发总体流程
传感器和IO口的通信非常难以理解,这也是断掉我学硬件的想法之一 ~~
但是但是但是 通信几乎不能更改,就是说直接调别人写好的API就行了
4.1 主函数里面有什么
- 捕获当前温度并显示加判断是否报警
- 捕获中断并进入编辑阈值模式
4.2 实现捕获温度函数
使用的是DS18B20温度传感器。根据硬件特性确定计算公式、时序控制温度读取的过程
4.3 实现显示函数
用于展示提示信息和输入的信息。
采用LCD1602 液晶显示。只能显示英语。这里在显示后没有清空屏幕翻了车。
4.4 实现报警函数
if判断下,如果温度高于阈值蜂鸣器将震荡。
4.5 实现修改阈值函数
传入参数:字母
- A:进入编辑
- B:退出编辑
- C:删除一位
- D:小数点
- 类似‘1’:数字
实现方式:数组哨兵
每次调用后显示函数
4.6 实现wifi传入数据进入修改阈值函数
一开始店家发我的wifi模块不对劲,调了一天,沟通无果后给了个有理有据的差评,店家又补发了一个好的模块:happy:。
if - else
调用修改阈值函数。重点在于wifi的通信。使用的wifi模块是ESP8266-WIFI。
通信的话需要保证wifi和单片机的波特率一样。
函数内通过发送 AT+CIPSEND=0,7 指令,设定发送数据长度,然后发送数据 到 WIFI 模块。
一般 APP 发送出来的数据格式内容为:+IPD,ID 号,发送数据长度:数据。
当手机连接热点成功后,其中+IPD,ID 号就是固定的,用户可根据需要发送 多少数据,然后长度就可以确定。这样在串口接收中断中就可以按照这个格式 进行解析,我们主要关注的是“数据”那块。
例如配套资料里面实验中控制 LED1 开的指令:+IPD,0,1:1 每个数据是10个字符。数据就是s[9]了。
5、小结
最后的代码仍有大大小小的bug,只能说勉强能跑。
通过半个月的单片机学习,我对软件控制多了些了解。对硬件也有了些了解。
边栏推荐
- Penetration test --- database security: detailed explanation of SQL injection into database principle
- Common knowledge of unity Editor Extension
- I let the database lock the table! Almost fired!
- APOC custom functions and procedures
- 跳跃表实例
- ~88 running people practice
- 科普达人丨一文看懂阿里云的秘密武器“神龙架构”
- Inside and outside: flow chart drawing elementary: six common mistakes
- ECCV 2022放榜了:1629篇论文中选,录用率不到20%
- How to contribute to the source code of ongdb core project
猜你喜欢
Start by counting
Software Engineer vs Hardware Engineer
DIY a low-cost multi-functional dot matrix clock!
QT graphical view frame: element movement
Detailed process of DC-2 range construction and penetration practice (DC range Series)
Principle and general steps of SQL injection
I let the database lock the table! Almost fired!
从数数开始
Penetration test --- database security: detailed explanation of SQL injection into database principle
DC-2靶场搭建及渗透实战详细过程(DC靶场系列)
随机推荐
Final consistency of MESI cache in CPU -- why does CPU need cache
Object.keys()的用法
ONgDB图数据库与Spark的集成
Jump table instance
Communication mode based on stm32f1 single chip microcomputer
[Previous line repeated 995 more times]RecursionError: maximum recursion depth exceeded
C language: implementation of daffodil number function
Can I "reverse" a Boolean value- Can I 'invert' a bool?
最大子数组与矩阵乘法
Hidden communication tunnel technology: intranet penetration tool NPS
I let the database lock the table! Almost fired!
Opencv learning -- arithmetic operation of image of basic operation
PR FAQ: how to set PR vertical screen sequence?
Cut! 39 year old Ali P9, saved 150million
Go语言循环语句(第10课下)
A trap used by combinelatest and a debouncetime based solution
Expression #1 of ORDER BY clause is not in SELECT list, references column ‘d.dept_ no‘ which is not i
Understand asp Net core - Authentication Based on jwtbearer
Talking about Net core how to use efcore to inject multiple instances of a context annotation type for connecting to the master-slave database
Ten clothing stores have nine losses. A little change will make you buy every day