基于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模块连接方式
ESP8266USB-TTL
3V33V3
EN3V3
RXTX
TXRX
GNDGND

        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;				//开启定时器1
	
	PCON = 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; // 连接esp8266
    public Button openOrCloseLEDButton; // 打开或者关闭LED按钮

    private IosColumnBrightnessView mIosColumnBrightnessView;

    private ConnectThread connectThread;
    public boolean isConnected;

    public boolean isOpenLED;

    @Override
    protected 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);

        // 调节亮度view
        mIosColumnBrightnessView = findViewById(R.id.ios_brightness);
        mIosColumnBrightnessView.setMoveListener(this);
    }

    // 连接esp8266
    public void connect(View view)
    {
        // 如果没有连接
        if (!isConnected)
        {
            connectThread.startConnect = true;
        } else {
            try {
                connectThread.closeConnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    // 打开或者关闭LED
    public void openOrCloseLED(View view)
    {
        // 如果已经连接到esp8266
        if (isConnected)
        {
            // 如果已经打开LED
            if (isOpenLED)
            {
                // 关闭LED
                connectThread.closeLED();
            } else {
                // 开启LED
                connectThread.openLED();
            }

        } else {
            Toast.makeText(this, "未连接到服务器!", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void move_light(int value) {


        // 如果已经连接到esp8266
        if (isConnected)
        {
           // 发送数据
            

        }
    }
}

















三、资料
1. 原理图和PCB图  https://url83.ctfile.com/f/45573183-864690180-b2cb50?p=7526 (访问密码: 7526)

2. 单片机源码 https://url83.ctfile.com/f/45573183-864690177-0cac34?p=7526 (访问密码: 7526)

3. Android APP源码 https://url83.ctfile.com/f/45573183-864690174-e2fcb9?p=7526 (访问密码: 7526)

4. 实物 https://item.taobao.com/item.htm?ft=t&id=680383434690

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lilihewo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值