一、硬件设计

1.硬件选型

主控芯片:选用STC15W104。这款MCU比较小巧,控制3个LED灯的亮灭只需要3个IO即可,不足之处是没有串口,与ESP8266通信只能使用模拟串口,买了挺多的,先将就用着先吧。

LDO: 选用AMS1117-3.3V,ESP8266模块需要使用3.3V电源,使用1117-3.3V将常用的5V转成3.3V。

2.原理图设计

原理图比较简单,注意ESP8266模块的TX和RX引脚需要连接到STC15W104的P3.0和P3.1引脚上以及EN引脚连接到3.3V即可。原理图如下:

3.PCB设计

PCB设计的话,我设计成板上焊接一个8P的母座,然后将ESP8266模块插上去就可以正常使用。PCB图和效果如下:

二|、软件设计

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连接方式
ESP8266 USB-TTL
3V3 3V3
EN 3V3
RX TX
TX RX
GND GND

1.2 模拟串口这部分程序参考官方文档,程序中为收到字符A,开启LED2,收到字符B,关闭LED2,要控制多个LED灯的亮灭,根据收到的不同指令来区分即可。部分程序如下:

//发送一个字节
void sendChar(uchar a)
{if(!TING)      //发送空闲{TBUF = a;TING = 1; }Delay10ms();
}//发送字符串
void sendString(uchar *s)
{while(*s!='\0'){sendChar(*s);s++;}
}void esp8266_init()
{Delay3000ms();sendString("AT+CIPMUX=1\r\n");        //允许多连接Delay3000ms();sendString("AT+CIPSERVER=1,8080\r\n");     //建立服务器Delay3000ms();
}//-----------------------------------------
//UART模块的初始变量   initial UART module variable
void UART_INIT()
{TING = 0;RING = 0;REND = 0;TCNT = 0;RCNT = 0;
}void main()
{InternalRAM_enable();Timer0_1T();Timer0_AsTimer();Timer0_16bitAutoReload();Timer0_Load(Timer0_Reload);Timer0_InterruptEnable();Timer0_Run();EA = 1;                       //打开总中断                 open global interrupt switchUART_INIT();                //UART模块的初始变量esp8266_init();LED3 = 1;     while (1){if (REND)              //如果接收完,把接收到的值存入接收buff{REND = 0;temp = RBUF;              //取出接收到的数据if(temp=='A'){                LED2 = 0;} if (temp == 'B') {LED2 = 1;}}}
}

2. Android APP程序设计

Android APP我是使用Android Studio来编写的,首先设计好界面,页面布局如下:

代码部分的话,需要注意的地方是连接esp8266需要有网络权限,在AndroidManifest.xml文件中添加

 <uses-permission android:name="android.permission.INTERNET" />

MainActivity代码如下:

package com.lili.esp8266;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 {public ImageView ledImageView;public Button connectButton; // 连接esp8266public Button openOrCloseLEDButton; // 打开或者关闭LED按钮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);}// 连接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();}}}

最后,有需要的小伙伴们可以使用“单片机项目设计”小程序获取下载链接。

51单片机+ESP8266+Android APP实现局域网内控制LED灯相关推荐

  1. 51单片机入学第一课———点亮自己的LED灯珠

    芜湖~起飞~ 点亮自己的小灯灯( ̄▽ ̄)" 理论基础 什么是**LED** 点亮电路板上LED的原理 实际操作 新建项目 编写程序 烧录程序 结果 总结 点亮自己的小灯灯( ̄▽ ̄)" ...

  2. 51单片机基础——串口通信发送字符ab控制流水灯

    /* 当串口调试助手发送a时执行5ms流水灯功能, 当串口调试助手发送b时执行50ms流水灯功能 */#include <reg52.h> #include<intrins.h> ...

  3. 【51单片机STC89C52】定时器(中断)控制LED

    目录 一.定时器/计数器T0 1.定时器/计数器的相关寄存器 2.定时器/计数器控制寄存器TCON 3.定时器/计数器工作模式寄存器TMOD 二.配置相关寄存器 1.使用STC-ISP工具 2.配置寄 ...

  4. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...

  5. 51单片机+ESP8266制作的门锁,含电路图、制板文件。支持密码、人脸、语音。

    51单片机+ESP8266制作的门锁,含电路图.制板文件.支持密码.人脸.语音. 硬件部分 软件部分 功能 第三方API.SDK 原理图 主要代码 程序执行流程 硬件部分 Esp-8266-01S(3 ...

  6. 毕业设计 基于51单片机无线蓝牙APP控LED灯亮灭亮度设计

    基于51单片机无线蓝牙APP控LED灯亮灭亮度设计 1.项目简介 1.1 系统构成 1.2 系统功能 2.部分电路设计 2.1 LED信号指示灯电路设计 2.2 蓝牙模块 3.部分代码展示 3.1 串 ...

  7. 51单片机WIFI手机APP智能窗户窗帘控制系统手动自动定时

    实践制作DIY- GC0045(2)-WIFI手机APP智能窗户窗帘控制系统 一.功能说明: 基于51单片机设计-WIFI手机APP智能窗户窗帘控制系统 功能介绍: STC89C52(AT89C52) ...

  8. 51单片机+ESP8266实现手机控制单片机(点亮LED灯)

    固件的烧写 既然要使用WiFi模块,那首先要进行固件的烧写 已经烧写好固件的可以直接跳过看模块的初始化 WiFi模块使用的是自带CH340驱动的NodeMCU开发板 固件烧录工具采用固件烧写\flas ...

  9. stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭

    stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...

最新文章

  1. VScode 无法创建文件或者无法保存文件
  2. 【小程序】汇编实现判断回文
  3. ASP.NET2.0中的全球化与本地化UICulture,Culture
  4. java 容器 线程_JAVA多线程并发容器
  5. SSM中向后端传递的属性为多个对象的实现方法
  6. 用[bx+idata]的方式进行数组的处理
  7. AJAX入门——工作原理
  8. SQL 获取指定月份的天数
  9. raspberry pi_如何将Raspberry Pi配置为微控制器
  10. Java输入年度和月份判断有多少天
  11. linux下grep文件内容搜索工具及基本正则表达式详解
  12. CST,CET,UTC,GMT,DST,Unix时间戳几种常见时间概述与关系(转)
  13. xp3系统配置cocos2dx
  14. 大数据数仓之报表开发
  15. 犹太人成功和浪漫的秘诀(.html)
  16. HarryPotter第二部—Nagini
  17. java摩托游戏_盘点那些JAVA游戏第3期
  18. 做好这三步,你的小程序离“爆款”就不远了
  19. 建立互信及追求卓越的环境
  20. 精通数据库可以从事什么工作_是的,您也可以开始从事数据科学

热门文章

  1. 网卡驱动:8139Cp
  2. php解摩斯电码,PHP实现基于文本的莫斯电码生成器
  3. SEU-系统安全-期末复习
  4. Linux —— 文件操作
  5. 【图像分类--图片数据扩充】图片数据不够怎么凑
  6. 程序员鼓励师到底是啥?
  7. 抖音自媒体怎么将视频一键发布到快手、视频号?
  8. 今天14:00 | NeurIPS 专场七 青年科学家专场
  9. caffe 训练手写字体HWDB1.1trn_gnt.zip HWDB1.1tst_gnt.zip并测试完整超详尽攻略
  10. python课程教学大纲-Python数据分析课程教学大纲