51单片机 wifi连接

news2024/11/19 19:17:01

一、基本概念

ESP8266是一款集成了WiFi功能的高性能芯片,广泛应用于物联网设备、智能家居、传感器网络等领域。以下是ESP8266的详细讲解:

1. 功能特点:ESP8266集成了TCP/IP协议栈,支持STA(Station)和AP(Access Point)模式,可以连接到无线路由器,并且可以作为热点提供WiFi连接。ESP8266还支持多路TCP/UDP连接,支持WPA/WPA2加密,具有低功耗特性。

2. 硬件特性:ESP8266内置了Tensilica L106 32位微控制器,工作频率可达80MHz;集成了高性能天线,功耗低,性能稳定;支持SPI、I2C、UART等多种接口,方便与传感器、外围设备进行通信。

3. 开发环境:ESP8266的开发通常使用Arduino IDE、Espressif SDK等开发工具,也可以使用Lua语言进行开发。Espressif Systems提供了丰富的文档和示例代码,方便开发者快速上手。

4. 项目应用:ESP8266广泛应用于物联网设备、智能家居、智能灯光系统、无线传感器网络等领域。通过ESP8266,可以实现设备之间的远程控制、数据传输、远程监测等功能。

5. 资源丰富:ESP8266拥有庞大的开发者社区和支持者,有丰富的资源和教程,方便开发者学习和解决问题。

总的来说,ESP8266作为一款强大的WiFi模块,具有良好的稳定性、低成本和丰富的功能特性,适合用于各种物联网和智能设备的开发与应用。

二、配置wifi模块

2.1 AT

WIFI GOT IP
AT


OK

2.2 配置成9600波特率
 

AT+UART=9600,8,1,0,0

2.3 设置工作模式

1. 是station(设备)模式 2.是AP(路由)模式 3.是双模

AT+CWMODE=3

2.4 以设备模式接入家中路由器配置
 

AT+CWJAP="ChinaNet-dUNY","g6jdzedh"   //第一个括号写的是自己的wifi号 第二个写的是wifi密码

2.5 查询IP地址
 

AT+CIFSR

+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"8e:ce:4e:cf:19:22"
+CIFSR:STAIP,"192.168.1.12"
+CIFSR:STAMAC,"8c:ce:4e:cf:19:22"

2.6 连接到 TCP server

AT+CIPSTART="TCP","192.168.1.9",8880


 

三、代码

#include "reg52.h"
#include "intrins.h"
#include <string.h>


#define SIZE 12
sfr AUXR = 0x8E;
sbit D5 = P3^7;
sbit D6 = P3^6;

char buffer[SIZE];
code char LJWL[]  = "AT+CWJAP=\"ChinaNet-dUNY\",\"g6jdzedh\"\r\n"; //入网指令
code char LJFWQ[] = "AT+CIPSTART=\"TCP\",\"192.168.1.9\",8880\r\n"; //连接服务器指令
char TCMS[]  = "AT+CIPMODE=1\r\n";  //透传指令
char SJCS[]  = "AT+CIPSEND\r\n";	//数据传输开始指令
char RESET[] = "AT+RST\r\n";		//重启模块指令
char AT_OK_Flag = 0;				//OK返回值的标志位
char AT_Connect_Net_Flag = 0;		//WIFI GOT IP返回值的标志位
 
void UartInit(void)		//9600bps@11.0592MHz
{
	AUXR = 0x01;
	SCON = 0x50; //配置串口工作方式1,REN使能接收
	TMOD &= 0x0F;
	TMOD |= 0x20;//定时器1工作方式位8位自动重装
	
	TH1 = 0xFD;
	TL1 = 0xFD;//9600波特率的初值
	TR1 = 1;//启动定时器
	
	EA = 1;//开启总中断
	ES = 1;//开启串口中断
}

void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void sendByte(char data_msg)
{
	SBUF = data_msg;
	while(!TI);
	TI = 0;
}

void sendString(char* str)
{
	while( *str != '\0'){
		sendByte(*str);
		str++;
	}
}

void main()
{
	int mark = 0;
	D5 = D6 = 1;//灭状态灯
	//配置C51串口的通信方式
	UartInit();
	Delay1000ms();//给espwifi模块上电时间
	
	//发送联网AT指令并等待成功
	sendString(LJWL);
	//while(!AT_Connect_Net_Flag);
	while(!AT_OK_Flag);
	AT_OK_Flag = 0;
	//发送连服务器指令并等待成功
	sendString(LJFWQ);
	while(!AT_OK_Flag);
	AT_OK_Flag = 0;
	//发送透传模式指令并等待成功
	sendString(TCMS);
	while(!AT_OK_Flag);
	AT_OK_Flag = 0;
	//发送数据传输指令并等待成功
	sendString(SJCS);
	while(!AT_OK_Flag);
	
	if(AT_Connect_Net_Flag){
			D5 = 0;//点亮D5,代表入网成功
	}
	if(AT_OK_Flag){
		D6 = 0;//点亮D6,代表连接服务器并打开透传模式成功
	}
	
	while(1){
		Delay1000ms();
		//“心跳包”
		sendString("chenlichen shuai\r\n");
	}
}

void Uart_Handler() interrupt 4
{
	static int i = 0;//静态变量,被初始化一次
	char tmp;

	if(RI)//中断处理函数中,对于接收中断的响应
	{
			RI = 0;//清除接收中断标志位
			tmp = SBUF;
			if(tmp == 'W' || tmp == 'O' || tmp == 'L' || tmp == 'F'){
				i = 0;
			}
			buffer[i++] = tmp;
			//入网成功的判断依据WIFI GOT IP
			if(buffer[0] == 'W' && buffer[5] == 'G'){
				AT_Connect_Net_Flag	= 1;
				memset(buffer, '\0', SIZE);
			}
			//连接服务器等OK返回值指令的判断
			if(buffer[0] == 'O' && buffer[1] == 'K'){
				AT_OK_Flag	= 1;
				memset(buffer, '\0', SIZE);
			}
			//联网失败出现FAIL字样捕获
			if(buffer[0] == 'F' && buffer[1] == 'A'){
				for(i=0;i<5;i++){
					D5 = 0;
					Delay1000ms();
					D5 = 1;
					Delay1000ms();
				}
				sendString(RESET);
				memset(buffer, '\0', SIZE);
			}
			//灯控指令
			if(buffer[0] == 'L' && buffer[2] == '1'){
				D5 = 0;//点亮D5
				memset(buffer, '\0', SIZE);
			}
			if(buffer[0] == 'L' && buffer[2] == '0'){
				D5 = 1;//熄灭D5
				memset(buffer, '\0', SIZE);
			}
			if(i == 12) i = 0;
	}
		
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1475427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kamacoder第八题摆平积木的C语言解法

8. 摆平积木 时间限制&#xff1a;1.000S 空间限制&#xff1a;32MB 题目描述 小明很喜欢玩积木。一天&#xff0c;他把许多积木块组成了好多高度不同的堆&#xff0c;每一堆都是一个摞一个的形式。然而此时&#xff0c;他又想把这些积木堆变成高度相同的。但是他很懒&…

[足式机器人]Part2 Dr. CAN学习笔记-Ch00-2 - 数学知识基础

本文仅供学习使用 本文参考: B站:DR_CAN 《控制之美(卷1)》 王天威 《控制之美(卷2)》 王天威 Dr. CAN学习笔记-Ch00 - 数学知识基础 Part2 4. Ch0-4 线性时不变系统中的冲激响应与卷积4.1 LIT System:Linear Time Invariant4.2 卷积 Convolution4.3 单位冲激 Unit Impulse—…

上传大文件报错No data found for resource with given identifier

预览中的数据No data found for resource with given identifier 首先以为是nginx问题查看nginx日志 39.89.216.201 - - [27/Feb/2024:10:14:53 0800] "POST /api/crm/clue/upload HTTP/1.1" 499 0 "https://op-dev.*.com/customer/clue-management" &qu…

163邮箱SMTP端口号及服务器地址详细设置?

163邮箱SMTP端口号是什么&#xff1f;163邮件SMTP设置教程&#xff1f; 除了基本的邮箱账号和密码外&#xff0c;还需要了解SMTP服务器地址和端口号&#xff0c;以及相应的设置。这些设置对于确保邮件能够顺利发送至关重要。下面&#xff0c;蜂邮EDM将详细介绍163邮箱SMTP端口…

idea生成WebServices接口

文章目录 idea生成WebServices接口1.创建接口2.生成wsdl文件3.在soapUI中&#xff0c;生成6个文件4.将生成的文件拷贝到工程中5.在service-config中注册服务 idea生成WebServices接口 1.创建接口 新建一个webServices工程&#xff0c;按照接口规范生成接口、请求类、响应类。…

phpldapadmin This base cannot be created with PLA

phpldapadmin This base cannot be created with PLA 1、问题描述2、问题分析3、解决方法&#xff1a;创建根节点 1、问题描述 安装phpldapadmin参考链接: https://blog.csdn.net/OceanWaves1993/article/details/136048686?spm1001.2014.3001.5501 刚安装完成phpldapadmin&…

2024全新版EasyRecovery14数据恢复软件功能详细分析

一、功能概述 EasyRecovery14是一款功能全面的数据恢复软件&#xff0c;它提供了从各种存储设备&#xff08;如硬盘、U盘、SD卡、数码相机等&#xff09;中恢复丢失或删除数据的能力。该软件支持多种恢复模式&#xff0c;包括快速恢复、深度扫描、格式化恢复等&#xff0c;以满…

C语言 int和unsigned int逻辑比较

文章目录 测试1、测试 CMP (int,int)2、测试 CMP (int ,unsigned int)3、测试 CMP (unsigned int ,unsigned int)4、测试 CMP(int ,常量&#xff09; 总结 测试 在IAR(8.40.2)平台下测试单片机为STM32F103ZET6 1、测试 CMP (int,int) //a -2,b 3 int test_fun(int a, int…

vue组件中data为什么必须是一个函数

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

R语言——条形图数据可视化的多种方式

本文章将会介绍如何使用R语言中的ggplot2包使用条形图进行数据可视化。将会使用一个“生产企业原材料的订购与运输”的订单数据&#xff0c;该数据来自2021数学建模国赛C题。 某建筑和装饰板材的生产企业所用原材料主要是木质纤维和其他植物素纤维材料总体可分为 A B C 三种类…

LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 题目分析 通过分析矩阵的特点发现&#xff0c;其左下角和右上角可以看作一个“二叉搜索树的根节…

ROS-Ubuntu 版本相关

ROS-Ubuntu 版本相关&#xff1a;安装指引 年代ROS1版本Ubuntu 版本2014Indigo14.042016Kinetic16.042018Melodic18.042020Noetic20.04 & 22.04 ROS2兼顾了工业使用上的问题。 年代ROS2版本Ubuntu 版本2022Humble20.04 & 22.042023Iron16.04 相关参考&#xff1a; […

MySQL进阶:大厂高频面试——各类SQL语句性能调优经验

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;MySQL进阶&#xff1a;强推&#xff0c;冲大厂必精通&#xff01;MySQL索引底层&#xff08;BTree&#xff09;、性能分析、使用…

【Java程序设计】【C00336】基于Springboot的防疫物资管理系统(有论文)

基于Springboot的防疫物资管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的防疫物资管理系统&#xff0c;本系统有管理员以及用户二种角色&#xff1b; 管理员&#xff1a;个人中心、管理员管理、用户管理…

AI领域的从业女性, 合成数据和减少AI的偏见等议题

关于企业AI领域创新举措的新闻层出不穷&#xff0c;澳鹏也不例外。AI领域的女性、数据管理和偏见减少的专家建议以及合成数据突破等内容成为今年第三季度各大媒体出版物的头版头条&#xff01;请继续阅读&#xff0c;了解新闻媒体对澳鹏上一季度表现的评价。 ‘虚假’数据如何对…

laravel8配合jwt

composer 安装包 composer require tymon/jwt-authconfig/app.php 注册服务提供者 providers > [Tymon\JWTAuth\Providers\LaravelServiceProvider::class, ]aliases > [JWTAuth > Tymon\JWTAuth\Facades\JWTAuth::class,JWTFactory > Tymon\JWTAuth\Facades\JWT…

Web服务器群集:OpenEuler 部署 LAMP(LNMP) 基础服务

目录 一、实验 1.环境 2. 网络配置 3. MobaXterm远程连接 4. apache 2.4.58 源码编译安装 5. php 8.3.1源码编译安装 6.配置httpd 连接 php-fpm 6. nginx 1.24.0源码编译安装 7. mysql 8.0.36安装 二、问题 1.MobaXterm设置右键复制粘贴 2.OpenEuler如何查看CPU的核…

String LCM

题目链接&#xff1a;Problem - 1473B - Codeforces 解题思路&#xff1a; 先算出两个字符串的最小公倍数&#xff0c;再分别除以字符串长度&#xff0c;构造出两个新的字符串&#xff0c;就是最小公倍数除以老字符串长度个老字符串相加&#xff0c;打个比方&#xff0c;a字符…

STM32驱动SHT30温湿度传感器

这次分享stm32驱动sht30温湿度传感器的方法和代码&#xff0c;这款传感器是仪器仪表行业上常用的一款型号。 目录 1.配置IO 2.写上通用的IIC协议 3.主函数获取数据 1.配置IO 我用到的IO口是 PB15---SCL PB14---SDA IIC中SDA和SCL引脚是开漏电路形式&#xff0c;所以SDA…

小程序框架(概念、工作原理、发展及应用)

引言 移动应用的普及使得用户对于轻量级、即时可用的应用程序需求越来越迫切。在这个背景下&#xff0c;小程序应运而生&#xff0c;成为一种无需下载安装、即点即用的应用形式&#xff0c;为用户提供了更便捷的体验。小程序的快速发展离不开强大的开发支持&#xff0c;而小程…