基于51单片机和物联网的智能家居系统(ESP8266物联网模块)

2023-05-16

前言

该智能家居系统以 STC89C52单片机为控制核心,结合 LCD1602 液晶显示屏、L298N电机驱动模块、光敏电阻,ESP8266WiFi模块,DS18B20温度计设计并实现了自动感光窗帘与居室内外温度检测器。经过最终的调试,实现了基本部分和发挥部分的所有功能。温度检测系统在环境温度改变的情况下可以实现误差为 0.5℃的基本温度测量。而智能窗帘系统在光照强度不同的情况下电机表现了不同的转动状态,故该系统具有感光自动开关的功能,同时该系统通过物联网模块实现了用户与窗帘交互的功能,可以手动调节窗帘的开关。以下是我和我的两名队友花了四天三夜共同完成的作品实物图
在这里插入图片描述

虽然外观不是很好看,但是基本可以实现所有所需要的功能,以下是对该作品的设计与总结

目录

一、系统方案
1.系统总体方案设计
2.系统结构框图

二、电路与程序设计
1.各部分电路设计
2.程序设计

三、测试结果
1.测试方案
2.测试结果及分析

四、结论

五、附录.
1.电路原理图
2.程序清单

一、系统方案
1.系统总体方案设计
(1)居室内外温度检测系统
本系统以 STC89C52 芯片作为控制中心,DS18B20 温度传感器为测温元件,LCD1602 液晶显示屏为显示器件。DS1802 数字温度计提供 9 位温度读数,指示器件的温度。信息经过单线接口送入DS1820 或从 DS1820 送出。当信息送入,经过单片机处理后在液晶上显示。其系统框图如图 1 所示。
(2)智能窗帘
本系统由光照检测电路、电机驱动电路以及物联网模块三个部分组成。窗帘自动控制系统的光控功能是可以根据光照的强弱来自动控制窗帘的开闭的,因此需要用到光照传感元器件,在本设计中采用了光敏电阻,并和一个常规电阻串联在一起,根据光线的变化改变光敏电阻的分压值,然后通过 XPT2046数模转换芯片传输给单片机,然后根据转换后的数值对电机的转动状态进行调控。同时用户可以通过物联网模块对电机的转动状态进行了解和调控。其系统框图如图2所示。

2.系统结构框图

图二

二、电路与程序设计
1.各部分电路设计
(1)温度检测模块
在温度检测系统中,该模块起到检测外部环境温度的作用。DS1802 数字温度计提供 9 位温度读数,指示器件的温度。信息经过单线接口送入 DS1820 或从DS1820 送出,因此从中央处理器到 DS1820 仅需连接一条线(和地)。读、写和完成温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
(2)AD 转换模块
为使被检测到的温度数据转换为电信号后传输至单片机,故设计一个 AD 转换模块以达到目的。其中 XPT2046 是一款 4 线制电阻式触摸屏控制器,内含 12位分辨率 125KHz 转换速率逐步逼近型 A/D 转换器。XPT2046 支持从 1.5V 到 5.25V的低电压 I/O 接口。内部自带 2.5V 参考电压,可以作为辅助输入、温度测量和电池监测之用,电池监测的电压范围可以从 0V 到 6V。因此可以满足系统要求。
(3)电机驱动模块
在智能窗帘系统中,电机模块用于使智能窗帘实现自动开关的功能。若要对电机进行 PWM 调速,需设置 IN1 和 IN2,确定电机的转动方向,然后对使能端输出 PWM 脉冲,即可实现调速。当使能信号为 0 时,电机处于自由停止状态;当使能信号为 1 时,且 IN1 和 IN2 为 00 或 11 时,电机处于制动状态,阻止电机转动。因此可在不同情况下,根据外部环境改变电机的转动状态,满足系统要求。 (4)STC90C52本设计选用单片机 STC89C52 作为控制核心,它是宏晶科技推出的新一代超强抗干扰、高速、低功耗的单片机,基于 Intel 标准的 8052,指令代码完全兼容传统的 8051 系列单片机,12 时钟/机器周期和 6 时钟/机器周期可任意选择,最新的 D 版本内集成 MAX810 专用复位电路。
(5)LCD 液晶显示屏
在温度检测系统中用于显示场景的温度数据以及在智能窗帘系统中用于显示光照强度数据。为工业字符型液晶,能够同时显示 16x2 即 32 个字符。
(6)ESP8266-01
为使用户可以随时了解并控制窗帘的开闭状态,故设计物联网模块以实现智能窗帘与用户交互的功能。其中 ESP8266 是一款超低功耗的 UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到 Wi-Fi 无线网络上,进行互联网或局域网通信,实现联网功能。
2.程序设计
(1)居室内外温度检测系统
本系统以 STC89C52 作为主控芯片,实现温度检测功能。其中温度检测模块检测环境温度,LCD1602 显示温度数据。流程图如图 3 所示。
(2)智能窗帘
本系统以 STC89C52 作为主控芯片,实现窗帘根据环境中光照强度自动开关的功能,且同时用户也可以通过移动终端了解并控制窗帘状态。其中光照检测系统检测环境中光照强度,电机驱动系统控制电机转动状态,物联网模块实现窗帘与用户交互功能。流程图如图 3 所示。

在这里插入图片描述

三、测试结果
1.测试方案
(1)居室内外温度检测系统
改变温度检测模块附近环境温度,观察 LCD1602 液晶屏所显示温度数据,测试结果为显示数据与实际环境温度基本吻合。
(2)智能窗帘
首先用手电筒照射装置,使光照强度大于 300,测试结果为窗帘打开,然后将装置放到阴暗处,使光照强度低于 90,测试结果为窗帘关闭。接着按下装置上方按键,将窗帘由自动模式转为手动模式,用手机连接装置的 WiFi 模块,控制窗帘的状态,测试结果为手机发送 1 时窗帘打开,发送 2 时窗帘关闭。
2.测试结果及分析
由测试结果可以看出,温度检测系统与智能窗帘系统可实现题目的基本要求部分和发挥部分的所有功能。其中温度检测系统可以在误差为 0.5℃的情况下检测出环境温度;智能窗帘系统可以实现强光与弱光环境下自动开关。另外部分功能如智能窗帘系统可以通过物联网模块使用户能在移动终控制窗帘状态。

四、结论
温度检测系统与智能窗帘系统实现了基本部分的全部功能以及完成了一些发挥部分,符合所有指标。本系统通过理论计算得到了合理的设计方案,以 STC89C52 单片机为控制核心,结LCD1602 液晶显示屏、L298N 电机驱动模块、光敏电阻,设计并实现了自动感光窗帘与居所内外温度检测器。通过实际测试,温度检测系统在环境温度改变的情况下实现了误差为0.5℃的基本温度测量。而智能窗帘系统在光照强度不同的情况下电机表现了不同的转动状态,故该系统具有感光自动开关的功能,同时该系统通过物联网模块实现了用户与窗帘交互的功能。

五、附录
1.电路原理图
在这里插入图片描述2.程序清单(因代码太长,这里就只放上主程序了,全部源程序包括原理图见文末)

#include<reg52.h>
#include"lcd.h"
#include"temp.h"
#include"XPT2046.h"
void LcdDisplay(int);//LCD显示函数
void UsartConfiguration();//串口初始化函数
void connect_init();//ESP8266初始化函数

uint temp;
uchar CNCHAR[6] = "摄氏度";
uint i=0;
uint j=0;
int flag=1; //手动 or 自动标志位
int ji=1; //正反转停止标志位
uchar receive[10];//接收数组

sbit K1=P3^3; //按键 IO 口
sbit M2PWM = P1^0; //电机 IO 口
sbit M2B = P1^1; 
sbit M2A = P1^2;
/*******************************************************************************
* 函 数 名         : delay和delayms
* 函数功能		   :10us和1ms的延时
*******************************************************************************/
void delay(unsigned int  i)
{
	while(i--);	
}

void delayms(unsigned int x)
{
	unsigned int i,j;
	for(i=x;i>0;i--)
		for(j=110;j>0;j--);
}
/*******************************************************************************
* 函数名         :datapros()
* 函数功能		 :数据处理光敏函数
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/
void datapros()
{
		delay(5000);
		temp = Read_AD_Data(0xA4);		//   AIN2 光敏电阻
}
/*******************************************************************************
* 函数名         : main
* 函数功能		   : 主函数
* 输入           : 无
* 输出         	 : 无
*******************************************************************************/

void main()
{	
    UsartConfiguration(); //串口初始化
	connect_init();      //ESP8266初始化
	LcdInit();			 //初始化LCD1602
	LcdWriteCom(0x88);	//写地址 80表示初始地址
	LcdWriteData('C');
	connect_init();   //再次ESP8266初始化
	while(1)
	{	datapros();	 //数据处理函数
	    LcdWriteCom(0x8A);
		LcdWriteData('0'+temp/1000); //千位
		LcdWriteCom(0x8B);
		LcdWriteData('0'+temp%1000/100);  //百位
		LcdWriteCom(0x8C);
		LcdWriteData('0'+temp%1000%100/10);	 //十位
		LcdWriteCom(0x8D);
		LcdWriteData('0'+temp%1000%100%10/10);	//个位		
    if(flag==1)
	{  
	  if(temp<90&&ji==-1)
	   {
		M2PWM=1;
		M2B=1;
		M2A=0;
		delayms(1000);	//转动1s
		M2PWM=0;
		M2B=0;
		M2A=0;
		ji=1;
	   }
	   else if(temp>300&&ji==1)
	   {
		M2PWM=1;
		M2B=0;
		M2A=1;
		delayms(1000); //转动1s
		M2PWM=0;
		M2B=0;
		M2A=0;
		ji=-1;
	   }
	   else
	   {
	   M2PWM=0;
	   M2B=0;
	   M2A=0;
	   } 
      
	}

   if(!K1)			  //手动切自动按键
   {
    delayms(5);		   //消抖
	if(!K1)
	{
	 flag=-flag;
	}
   }
	LcdDisplay(Ds18b20ReadTemp());	//显示温度 光照AD值
	

  }
 }

/*******************************************************************************
* 函数名         : LcdDisplay()
* 函数功能		   : LCD显示读取到的温度
* 输入           : v
* 输出         	 : 无
*******************************************************************************/

void LcdDisplay(int temp) 	 //lcd显示
{
    
  	uchar datas[] = {0, 0, 0, 0, 0}; //定义数组
	float tp;  
	if(temp< 0)				//当温度值为负数
  	{
	  	LcdWriteCom(0x80);		//写地址 80表示初始地址
	    LcdWriteData('-');  		//显示负
		//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
		temp=temp-1;
		temp=~temp;
		tp=temp;
		temp=tp*0.0625*100+0.5;	
		//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
		//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
		//算.5,还是在小数点后面。
 
  	}
 	else
  	{			
	  	LcdWriteCom(0x80);		//写地址 80表示初始地址
	    LcdWriteData('+'); 		//显示正
		tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
		//如果温度是正的那么,那么正数的原码就是补码它本身
		temp=tp*0.0625*100+0.5;	
		//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
		//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5的就
		//算加上0.5,还是在小数点后面。
	}
	datas[0] = temp / 10000;
	datas[1] = temp % 10000 / 1000;
	datas[2] = temp % 1000 / 100;
	datas[3] = temp % 100 / 10;
	datas[4] = temp % 10;

	LcdWriteCom(0x82);		  //写地址 80表示初始地址
	LcdWriteData('0'+datas[0]); //百位 

	LcdWriteCom(0x83);		 //写地址 80表示初始地址
	LcdWriteData('0'+datas[1]); //十位

	LcdWriteCom(0x84);		//写地址 80表示初始地址
	LcdWriteData('0'+datas[2]); //个位 

	LcdWriteCom(0x85);		//写地址 80表示初始地址
	LcdWriteData('.'); 		//显示 ‘.’

	LcdWriteCom(0x86);		 //写地址 80表示初始地址
	LcdWriteData('0'+datas[3]); //显示小数点  

	LcdWriteCom(0x87);		 //写地址 80表示初始地址
	LcdWriteData('0'+datas[4]); //显示小数点 

	 
}
/*******************************************************************************
* 函 数 名         :UsartConfiguration()
* 函数功能		   :设置串口
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/

void UsartConfiguration()
{
	SCON=0X50;			//设置为工作方式1
	TMOD|=0X20;			//设置计数器工作方式2
	PCON|=0X80;			//波特率加倍
	TH1=0XF3;				//计数器初始值设置,注意波特率是4800的
	TL1=0XF3;
	ES=1;						//打开接收中断
	EA=1;						//打开总中断
	TR1=1;					//打开计数器
}





void connect_init()
{
    char *a="AT+CIPMUX=1\r\n";
    char *b="AT+CIPSERVER=1,8080\r\n";
    while(*a!='\0')
    {
        SBUF=*a;      //写入要发送的字符
        while(!TI);    //等待发送完成
        TI=0;          //发送
        a++;
    }
    delay(500);//这里添加延时函数,延时5ms左右,给ESP8266反应时间
    while(*b!='\0')
    {
        SBUF=*b;  
        while(!TI);    //等待发送完成
        TI=0;
        b++;
    }
}

void UART_SER (void) interrupt 4 //串行中断服务程序
{   
    char res;
    res=SBUF;         //取出接受到的数据
    RI=0;              //清除接受中断标志位
    if(res==':'||i>0)    //i是全局变量
    {
        receive[i]=res;   //receive数组也是全局变量
        i++;
        if(res=='\n')
        {
            if(receive[1]=='1')		  //添加对收到信息的处理代码 1代表打开窗帘
           {
		     if(flag==-1)     
			{
			M2PWM=1;
	       	M2B=0;
	     	M2A=1;
			delayms(1000);	   // 转动1s
		    M2PWM=0;
	     	M2B=0;
		    M2A=0;
			}
		   }
		    else if(receive[1]=='2')   //添加对收到信息的处理代码 2代表关闭窗帘
		   {
		      if(flag==-1)
			{
			 M2PWM=1;
	         M2B=1;
		     M2A=0;
			 delayms(1000);	  //转动1s
		     M2PWM=0;
		     M2B=0;
		     M2A=0;
			}
		   }
		   i=0;
        }
    }
 }

总结

这是我第一次在CSDN这样官方的IT论坛上发表自己的作品,不仅是希望能给需要学习这方面的人一些指引并且提供我的思路和想法,更是希望这篇文章能够记录下我学习单片机的点滴,这是我学习51这么久以来最有综合性的项目,也可能是我最后一个用51单片机做的项目了(真香警告),接下来就要开始苦逼的学习STM32的道路了,文章中可能会有些缺陷或者错误,也可能会有因为我水平的原因而做得不足的地方(即将大二的学生),欢迎大佬来指正和讨论,一起学习!!

资料链接在下方 资料包含原理图,源代码和设计报告,有问题可以在评论区留言哦
https://download.csdn.net/download/qq_45416203/12854815

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于51单片机和物联网的智能家居系统(ESP8266物联网模块) 的相关文章

  • HDLBits刷题记录--Modules:Hierarchy

    HDLBits刷题记录 Modules Hierarchy Module 电路图 xff1a 代码 xff1a module top module span class token punctuation span input a span
  • C++中SORT函数使用方法

    一 sort函数 1 sort函数包含在头文件为 include lt algorithm gt 的c 43 43 标准库中 xff0c 调用标准库里的排序方法可以实现对数据的排序 xff0c 但是sort函数是如何实现的 xff0c 我们
  • Window下LaTex+VS Code的配置

    目录 前言 一 软件下载二 软件安装1 TexLive安装2 VS Code及插件安装 三 配置 VS Code四 简单测试一下五 进阶操作及可能遇到的问题1 前向搜索和反向搜索2 编译带参考文献的 tex文件 前言 考虑本文受众有新手小白
  • 与 vmx86 驱动程序的版本不匹配解决方法

    一个新手可能遇到的问题 第一次安装完VMware后 xff0c 启动时可能会遇到问题 xff1a 与 vmx86 驱动程序的版本不匹配 预期为xxx 实际为 xxx 驱动程序 vmx86 sys的版本不正确 如下图 xff1a 解决方法 x
  • 汽车电子系统知识积累

    文章目录 前言一 汽车电子系统的分类1 电子控制汽车电子控制系统2 电子控制车载汽车电子系统 二 分类及详述1 动力2 底盘3 车身4 娱乐 总结 前言 汽车电子系统是以汽车电子技术为基础的汽车结构 一 汽车电子系统的分类 按照电子系统对汽
  • Jetson Xavier NX 学习(一),安装sd卡镜像

    Jetson Xavier NX 学习 xff08 一 xff09 xff0c 安装sd卡镜像 说明个人说明了解JetPack SDK下载镜像将图像写入microSD卡启动查看设置 说明 Jetson Xavier NX可为运行现代AI工作
  • 服务器ssh远程连接失败

    服务器远程ssh连接失败解决方案 查看ssh服务状态 systemctl status sshd service 正常应该是下图情况 xff1a xff08 running xff09 绿色即为正常状态 在这里插入图片描述 如果正常查看后面
  • Day1--FreeRTOS简介及多任务点灯、多任务传参、Mutex

    实时操作系统 xff08 Real Time Operating System xff0c 简称RTOS xff09 Arduino任务执行流程 xff1a 单线程执行任务 RTOS xff1a 可以同时执行所有Task xff0c 每个任
  • Day3--流媒体缓存、消息缓存(重要)、直接任务通知

    FreeRTOS 10以后引入了一个新的数据类型就是 Stream Buffer 它和Queue最大的不同就是 xff0c Stream Buffer读写的大小没有限制 xff0c 而Queue是预设值好固定的值 Stream Buffer
  • 51安居安防手电筒拆解

    51安居安防手电筒拆解 相遇就是缘分 xff0c 欢迎 51安居这款手电筒有照明LED灯 安全锤 强力磁铁 手摇发电机 应急闪光灯 FM收音机 警报喇叭等非常多的功能 xff0c 但是自己维修比较困难 我的长辈在外面买了51安防的手电筒 x
  • 关于keil和proteus联调失败的原因探究

    1 没有在两个软件文件夹下放置 dll文件 没有在C51的INI文件中修改 2 没有安装某个 exe文件 3 在proteus中建好电路 xff0c 把keil生成的hex文件导入芯片 xff0c debug xff0c 打开远程调试 xf
  • 富斯遥控器/接收机的PWM/PPM/iBUS/SBUS通道设置

    富斯遥控器FS i6X拥有10通道输出 xff0c 富斯接收机FS iA10B拥有10通道输入 xff0c 两者都有PWM PPM iBUS SBUS协议 xff0c 但是PPM和iBUS协议最高只支持8通道 xff0c 而SBUS协议可以
  • 线程同步的四种方式

    一 xff0c 什么是线程同步和互斥 同步就是协同步调 xff0c 按预定的先后次序进行运行 如 xff1a 你说完 xff0c 我再说 这里的同步千万不要理解成那个同时进行 xff0c 应是指协同 协助 互相配合 线程同步是指多线程通过特
  • python使用cv2库、下载opencv库

    cv2库在opencv库内 xff0c 因此需要下载opencv python 1 打开windows命令行 xff1a win 43 R cmd 2 更新pip版本 xff08 不一定要 xff09 xff1a python m pip
  • PX4学习笔记(1)

    无人机飞控硬件采用Pixhawk 2 4 8 xff0c 软件采用PX4 xff0c 机架使用F450 1 安装PX4环境 1 1 安装虚拟机 VMware虚拟机 16 Pro 1 2 安装Ubuntu Ubuntu 18 04 amd64
  • PX4学习笔记(1-补)

    PX4学习笔记 xff08 1 xff09 中的1 6 安装PX4和gazebo9环境中有一条命令 sudo bash Tools setup ubuntu sh 处于对这个 sh文件的好奇 xff0c 并想分析一下内容 xff0c 于是将
  • 卡片电脑 鲁班猫ZeroW——入门笔记(1)

    由于树莓派价格过于昂贵 xff0c 且无人机又需要机载电脑 xff0c 因此一直在物色便宜好用的卡片电脑 无意中发现了野火的这款鲁班猫 xff0c 想着才260块钱 xff0c 于是买回来试试手 1 硬件结构 鲁班猫采用的是瑞芯微公司设计的
  • PX4学习笔记(2)

    1 PX4编译和仿真 1 1 第一次使用PX4 1 1 1 打开jMAVSim 找到PX4 Autopilot文件夹 xff08 2023 02 13 xff0c 新版本的PX4找不到Firmware了 xff0c 只有PX4 Autopi
  • 关于SKYDROID图传接收机无法在win10电脑上显示图像的问题分析

    因为此前图传接收机无法在win10电脑上显示图像 xff0c 多次尝试后 xff0c 我重新安装了WIN10系统 xff0c 发现禁用笔记本摄像头头 xff0c 在相机内能看到图像 xff0c 了 因此以为问题解决了 xff0c 继续安装其
  • PX4 ulg文件转换为csv(WPS或Excel打开)

    介绍 ulg文件为PX4的飞行日志文件 xff0c 可以通过python的pyulog库转换成scv格式 xff0c 用表格工具打开 下载pyulog 首先保证你的windows电脑内安装了python 3 win 43 R打开cmd 输入

随机推荐

  • Ubuntu18.04虚拟机MQTT服务器(1)——安装宝塔服务器面板与MQTT服务器

    1 虚拟机安装ubuntu18 04 使用VMware安装Ubuntu 18 04 64位系统 2 Ubuntu修改镜像源 在Software amp Update内修改镜像源为清华源 更新 3 安装ssh 输入以下命令 xff0c 安装远
  • ESP-01S烧录及使用,连接本地MQTT服务器

    网上的教程大多无法正常烧录与使用 xff0c 因此在这里进行总结 1 ESP 01S烧录 固件烧录建议使用专用的烧录器 xff0c 十分省心 本文讨论的是使用普通的CH340串口模块进行烧写 必须使用的工具 xff1a 杜邦线 CH340串
  • Qt学习笔记(2)——添加串口程序与调试

    1 串口调试程序总体布局 Qt版本大于5 1 1 1 在pro文件内添加serialport QT 43 61 serialport 1 2 在 h文件内添加库文件 include lt QtSerialPort gt 1 3 添加实例 h
  • AES CBC和CTR加解密实例

    AES xff08 Advanced Encryption Standard xff0c 高级加密标准 xff09 又叫Rijndael加密法 xff0c 用来替代DES算法 常见AES加密模式有ECB CBC CFB OFB和CTR等五种
  • 关于vuex使用常量替代 Mutation 事件类型的好处

    官方文档有说常量的好处 xff0c 但是的确没用过 xff0c 也不怎么懂 xff0c 就我目前有用的了解来说 在后面项目中使用了常量有如下好处 1 常量更容易避免程序出现错误 如果把一个值赋给程序中的一个常量 xff0c 而该常量已经有一
  • 多传感器融合及其应用

    后续会更新部分算法详细内容 多传感器融合及其应用 1 引言 现代雷达信息处理技术 现代雷达信息处理技术分为三个层次 xff1a 雷达信号处理与目标检测 但不雷达数据处理和多部雷达系统数据融合 有时也分别称为雷达信息一次处理 雷达信息二次处理
  • 《结构化编程》— LED灯为例

    你有过看很久以前项目代码看不太懂的情况吗 xff1f 你有过做一个项目就要从零重构代码的烦恼吗 xff1f 你有过那种遇到项目后无从入手编写的困扰吗 xff1f 诸君且看 xff0c 我是如何用一个LED灯代码去做结构化编程的 xff0c
  • 《FPGA学习》->点亮一颗LED灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 大家刚开始接触硬件编程的话 xff0c 我想大多都是从点亮一颗LED灯开始 xff0c 学习
  • 《FPGA学习》->流水灯设计

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 用verilog HDL语言设计一个FPGA的流水灯程序 xff0c 要求时序满足下图所示
  • 《FPGA学习》->多个按键控制LED灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 本次项目任务 xff0c 利用开发板上的4个按键KEY1 xff0c KEY2 xff0c
  • 《FPGA学习》->呼吸灯

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 呼吸灯 xff0c 简而言之就像人类呼吸一样 xff0c 有节奏的让LED灯从 xff1a
  • 《FPGA学习》->蜂鸣器播放

    x1f34e 与其担心未来 xff0c 不如现在好好努力 在这条路上 xff0c 只有奋斗才能给你安全感 你若努力 xff0c 全世界都会为你让路 蜂鸣器的发声原理由振动装置和谐振装置组成 xff0c 而蜂鸣器又分为无源他激型与有源自激型
  • 基于STM32的语音控制电机

    号外号外 单片机项目实战课程又更新了 炸弹 大家好 我是 朽木自雕i 一个闲暇时间用来敲敲代码 画画板子 焊焊电路 玩玩单片机 搞搞Linux 写写Blog记录成长的技术人er 很高兴再次见
  • ESP32单片机入门篇

    目录 一 ESP32单片机的基本概念 1 双核架构 2 Wi Fi和蓝牙功能 3 集成多种外设 4 支持多种操作系统 二 开发环境 1 Arduino IDE 2 ESP IDF 三 开发语言 四 注意事项 五 代码例程 xff08 1 x
  • 什么是死锁,产生死锁的原因及必要条件

    什么是死锁 xff1f 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而造成的一种僵局 xff0c 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 因此我们举个例子来描述 xff0c 如果此
  • ESP32红外控制舵机

    目录 一 ESP32红外解码 二 ESP32舵机控制 三 ESP32红外控制舵机 结语 ESP32作为一款功能强大的单片机 xff0c 常被应用于物联网 智能家居 智能硬件等领域 与其他单片机相比 xff0c ESP32具有更高的运行速度和
  • ESP32 OTA升级

    目录 一 ESP32 OTA升级原理 1 ESP32固件编译 2 固件的远程传输 二 基于ESP32HTTPUpdate库的OTA升级 1 硬件准备 2 软件实现 三 注意事项 1 升级文件大小限制 2 WiFi稳定性 3 固件版本号 结语
  • 基于ESP32的温湿度环境监测

    目录 一 传感器介绍 二 设计思路 三 电路连接 四 项目代码 五 注意事项 一 传感器介绍 SCH30 是一款温湿度一体化数字传感器 xff0c 采用CMOSens 技术 xff0c 提供出色的性能 可靠性和稳定性 它还具有超低能耗 xf
  • 小觅相机SDK安装与报错解决

    目录 安装小觅相机SDK1 下载SDK2 准备依赖3 编译代码出现问题 xff1a 报错 xff1a 原因 xff1a 解决方案 xff1a 4 编译安装ROS版本ROS的安装 5 配置 bashrc文件6 运行相机 最后顺利完成SDK安装
  • 基于51单片机和物联网的智能家居系统(ESP8266物联网模块)

    前言 该智能家居系统以 STC89C52单片机为控制核心 xff0c 结合 LCD1602 液晶显示屏 L298N电机驱动模块 光敏电阻 xff0c ESP8266WiFi模块 xff0c DS18B20温度计设计并实现了自动感光窗帘与居室