基于51单片机与ESP8266的智能台灯设计
一、硬件设计
1. 硬件选型
主控芯片:选用STC89C52RC,单片机通过串口与EPS866模块通信。
LDO: 选用AMS1117-3.3V,ESP8266模块需要使用3.3V电源,使用1117-3.3V将常用的5V转成3.3V。
WIFI模块:使用ESP8266-01模块,为了可以正常和51单片机通信,使用串口助手将ESP8266的波特率改为9600。
2. 原理图设计
3. PCB设计
4. 实物
二、软件设计
1. 51单片机程序设计
1.1 单片机要和ESP8266正常通信,需要设置通信波特率相同。如:51单片机使用的波特率为9600,ESP8266也需要设置为9600,否则无法正常通信,而ESP8266模块默认波特率为115200。修改ESP8266波特率的方法:ESP8266和USB-TTL连接好线后,使用串口助手发送AT+UART=9600,8,1,0,0指令即可。
ESP8266 | USB-TTL |
3V3 | 3V3 |
EN | 3V3 |
RX | TX |
TX | RX |
GND | GND |
1.2 部分程序如下:
// 初始化定时器0
void Timer0Init()
{TMOD |= 0x01;TH0 = (65536-50) / 256; // TL0 = (65536-50) % 256;TR0 = 1; // 启动定时器ET0 = 1; // 打开定时器中断EA = 1; // 打开总中断
}void delayms(uint xms) //延时
{uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);
}uchar i,j,temp;
bit flag;
uchar receive[4];void int_init(){ //开启定时器1,产生9600波特率TMOD = 0x20; //定时器1工作在方式2八位自动重装模式TH1 = 0xfd;TL1 = 0xfd;TR1 = 1; //开启定时器1PCON = 0x00; //波特率不加倍SM0 = 0; //串口工作方式SM1 = 1; REN = 1; //串口接收允许
}void send_char(uchar a)
{SBUF = a;while (TI == 0);TI = 0;
}void send_string(uchar * s)
{while (*s != '\0'){send_char(*s);s++;}
}void init_esp8266()
{send_string("AT+CIPMUX=1\r\n");delayms(3000);send_string("AT+CIPSERVER=1,8080\r\n");delayms(3000);
}
2. Android APP程序设计
Android APP我是使用Android Studio来编写的,首先设计好界面,页面布局如下:
需要连接esp8266需要有网络权限,在AndroidManifest.xml文件中添加
<uses-permission android:name="android.permission.INTERNET" />
MainActivity代码如下:
package com.lili.controlled;import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;public class MainActivity extends Activity implements MoveListener {public ImageView ledImageView;public Button connectButton; // 连接esp8266public Button openOrCloseLEDButton; // 打开或者关闭LED按钮private IosColumnBrightnessView mIosColumnBrightnessView;private ConnectThread connectThread;public boolean isConnected;public boolean isOpenLED;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();connectThread = new ConnectThread(this, "192.168.4.1", 8080);// 开启连接线程connectThread.start();}private void initView() {// LED灯图标ledImageView = (ImageView) findViewById(R.id.image);connectButton = findViewById(R.id.button_connect);openOrCloseLEDButton = findViewById(R.id.openOrCloseLED);// 调节亮度viewmIosColumnBrightnessView = findViewById(R.id.ios_brightness);mIosColumnBrightnessView.setMoveListener(this);}// 连接esp8266public void connect(View view){// 如果没有连接if (!isConnected){connectThread.startConnect = true;} else {try {connectThread.closeConnect();} catch (Exception e) {e.printStackTrace();}}}// 打开或者关闭LEDpublic void openOrCloseLED(View view){// 如果已经连接到esp8266if (isConnected){// 如果已经打开LEDif (isOpenLED){// 关闭LEDconnectThread.closeLED();} else {// 开启LEDconnectThread.openLED();}} else {Toast.makeText(this, "未连接到服务器!", Toast.LENGTH_SHORT).show();}}@Overridepublic void move_light(int value) {// 如果已经连接到esp8266if (isConnected){// 发送数据}}
}
最后,原理图、PCB图、51单片机源码和Android APP源码放在我网站上,有需要的小伙伴们可以点击下载【基于51单片机与ESP8266的智能台灯设计】
基于51单片机与ESP8266的智能台灯设计相关推荐
- 【资料分享】基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告、基于51单片机和MAX1898的智能手机充电器设计
1661[毕设课设]基于51单片机的智能指纹考勤系统设计-原理图-PCB-程序-报告 摘 要 随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到.这些技术的 ...
- 【51毕设案例】基于51单片机-定时喂食供氧智能鱼缸
目录 功能介绍: 整体功能简述: 硬件框图: 软件流程图: 原理图: 仿真图: 元器件清单: 主要部分代码展示:void main() 工程管理展示: 下载内容展示: 更详细代码视频讲解及代码下载请看 ...
- 基于51单片机的公交车安全智能检测系统、基于51单片机的金属探测仪控制设计、基于单片机的智能电子密码锁系统设计、基于51单片机酒精浓度检测仪设计【资料转发分享】
630基于51单片机的公交车安全智能检测系统-设计资料 本资料是基于单片机的公交车安全监测系统 具有如下功能: 1.监测环境的温度,超标报警.可以设置上下限 2.监测是否有火灾以及有毒气体,超标报警, ...
- 基于51单片机的RFID RC522智能钱包
RFID RC522智能钱包 基于51单片机的RFID RC522智能钱包,这个程序主要演示的是RFID RC522智能钱包中的设置及扣款功能,相信会扣款那么充值也就改一个数字的事,具体的功能要自己根 ...
- 基于STM32蓝牙控制的app智能台灯设计
提示:记录毕设 文章目录 前言 一.任务书 1.1设计(研究)目标: 1.2设计(研究)内容: 二.代码思路 三.硬件设计 3.1总体设计 3.2蓝牙部分设计 四.联系我们 五.部分代码 喜欢请点赞哦 ...
- 基于51单片机的烟雾火灾报警器proteus仿真设计
基于51单片机的烟雾火灾报警器proteus仿真设计 1 开发环境 仿真图:proteus8.9以上 程序代码:KEIL4/KEIL5 原理图:AD 设计编号:A0004 代码讲解+仿真讲解+仿真演示 ...
- 单片机六位抢答器c语言程序,八路电子抢答器(基于51单片机的8路抢答器设计C语言程序)...
哥,你还有AT89C51单片机8路抢答器的资料吗 哥,你还有AT89C51单片机8路抢答器的资料吗 AT89C51单片机8路抢答器的资料 源程序如下 #include #define uchar un ...
- 基于单片机超声波视力保护系统设计-基于51单片机8音键电子琴仿真设计-基于8086八路模拟信号采集均值显示系统设计-基于8086八路数据电压温度采集系统-基于8086波形发生器仿真设计【毕设课设分享】
539基于单片机超声波视力保护系统设计-设计资料 硬件构成:单片机+最小系统+LCD1602液晶显示模块+超声波模块+DS18B20温度采集模块+光线检测模块+ADC0832模块+蜂鸣器模块+LED指 ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
最新文章
- Powercli 批量获取vmhost 时间
- nginx在windows里面配置
- 手把手教你:如何让Windows恋上Linux bash
- Android自动化测试Uiautomator--UiSelector接口简介
- linux原理与应用期末考试,武汉大学计算机学院2009-2010学年第一学期期末考试《Linux原理与应用》期末考试试卷(共8套,有答案)...
- Sklearn 与 TensorFlow 机器学习实用指南(补档)
- require.js引入css文件,[DikeJS]RequireJS引入CSS样式文件(五)
- iOS开发笔记 基于wsdl2objc调用asp.net WebService
- linux下无法安装VMware的解决方法
- 《计算机组成原理》第二版第七章课后习题答案
- 微信小程序获取用户手机号
- iphone没有计算机功能,苹果iPad为什么没有计算器应用程序
- 【git】小甲鱼Git教程《极客Python之Git实用教程》笔记一
- 增强版在线LEFSe分析和可视化鉴定标志性基因或物种
- vue富媒体编辑器组件:vue-wangeditor的使用
- Linux学习笔记RHEL 7(九)--RHEL7.0 DNS服务配置
- 海量数据大课学习笔记(2)-不在其位要谋其政,技术Leader能力模型提升-小滴课堂
- Java高级特性 - 多线程练习题
- Ubuntu 16.04+ROS+ORB-SLAM2配置以及相关问题
- 用Python制作动态饼图