8266wifi模块信号后,怎么读取传过来的数据

WIFI模块连接服务器,并实现与服务器相互通讯
时间: 17:55:22
&&&& 阅读:188
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&
  最近在做一个智能锁的项目,该项目要求实现在任何地方(当然是要有网络的)可以在手机上用APP开锁。而我负责的部分主要是实现底层与服务器连接,并且要能相互通讯。考虑了很多问题,最终选择了用ESP8266 WIFI模块实现了这个功能。下面向大家就简单分享一下。
  工具:网络调试助手 &ESP8266 &STM32F1开发板
  首先,用网络调试助手来虚拟一个服务器,如下:
  有了服务器后,接下来我们就要用WIFI来连接这个服务器。ESP8266 有三种工作模式,由于项目要求,我选用了STA中的客户端模式。下面是这个WIIFI模块在STM32上的配置程序:
  上面就是配置程序,至于其他的工作模式,有兴趣的同学,可以继续研究!!
  本来想把项目程序一起发上来的,居然发现发不了、、、、、
  标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文地址:http://www.cnblogs.com/panlangen/p/7562474.html
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码![毕设记录] WiFi完成过程文档 - 简书
[毕设记录] WiFi完成过程文档
文档创建时间:日
本文档描述的是如何在stm32f10x上用串口转wifi模块ESP8266实现与上位机的通信。
ESP8266模块,是一款USART转WiFi模块,可以使嵌入式系统串口通过无线网络与上位机进行通信。
这个模块的引脚一般引出来的有6个:
VCC:电源(建议接3.3v,在5v下也可以工作,据测试发热量稍大)
GND:电源地
TXD:模块串口发送引脚(TTL电平,可接单片机的RXD)
RXD:模块串口接收引脚(TTL电平,可接单片机的TXD)
RST:复位(低电平有效)
IO-0:低电平是进入固件烧写模式,高电平为运行状态(默认状态)
这个模块通常会有三种工作模式:
AP模式,这种模式下模块相当于一个WiFi热点,其他设备可以接入这个热点,从而实现无线通信。(和蓝牙类似,不需要网络也可以实现)
STA模式,这个模式下模块相当于一个WiFi设备,需要通过路由器与其他的网络设备通信。
AP+SAT模式,这种模式是上述两种模式的并集。
每种模式下,都有若干种“身份”。本文档,主要讨论的是模块在STA模式下充当TCP Client的使用方法。
模块提供了一套完整的AT指令,供我们来操作,详细的指令请参考文档,这里不逐一列出。
波特率115200
输入以回车换行符‘\r\n'结尾
使用双引号表示字符串数据
实现WiFi的功能,分成硬件和软件部分。硬件上,使用stm32的USART2与ESP8266相连接。软件上,根据手册,封装AT命令,使用中断读取接收数据等。
引脚连接方式:
ESP8266_RXD连接stm32_USART2_TXD
ESP8266_TXD连接stm32_USART2_RXD
ESP8266_VCC连接3.3v
ESP8266_GND连接GND
ESP8266_RST悬空
PS:stm32与ESP8266要共地。
软件上,主要由下面几个文件来实现WiFi模块的驱动:
wifi_config.c 这个文件主要完成USART2的初始化,USART2的中断控制器配置
wifi_function.c 这个文件主要实现对wifi模块的AT指令操作,并完成STA TCP Client连接
这里不给出详细的代码,具体的代码可以看,这里重点讨论wifi_function.c这个文件,下面列出它的函数作解释,具体实现自己看看源文件:
//使能wifi模块
void ESP8266_Choose ( FunctionalState enumChoose );
//重启模块
void ESP8266_Rst( void );
//执行AT测试
void ESP8266_AT_Test( void );
//发送AT指令
//cmd:AT指令内容, reply1:期望的回应, reply2:期望的回应,waittime:等待时间
bool ESP8266_Cmd( char * cmd, char * reply1, char * reply2, u32 waittime );
//选择wifi模块的模式 AP, STA, AP+STA
bool ESP8266_Net_Mode_Choose( ENUM_Net_ModeTypeDef enumMode );
//开启多客户端连接
bool ESP8266_Enable_MultipleId( FunctionalState enumEnUnvarnishTx );
//连接到服务器(STA模式下需要使用到)
bool ESP8266_Link_Server( ENUM_NetPro_TypeDef enumE, char * ip, char * ComNum, ENUM_ID_NO_TypeDef id);
//开启透传模式
bool ESP8266_UnvarnishSend( void );
//发送数据
bool ESP8266_SendString( FunctionalState enumEnUnvarnishTx, char * pStr, u32 ulStrLength, ENUM_ID_NO_TypeDef ucId );
//接收数据
char *ESP8266_ReceiveString( FunctionalState enumEnUnvarnishTx );
//配置STA_TCP_Client连接模式
ESP8266_STA_TCP_Client( void );
//从透传模式返回普通AT模式
bool ESP8266_Return_At( void );
//失能透传模式
bool ESP8266_Disable_UnvarnishSend( void );
//关闭TCP连接
bool ESP8266_Tcp_Close( void );
//按照配置,开启TCP连接
bool ESP8266_Connect_Tcp( void );
具体,是怎么往模块里面发送AT指令的,这里以其中一个为例子进行讲述:
//加入某个wifi热点的函数
//对应的AT指令是:AT+CWJAP=“ssid”,“passwor”
bool ESP8266_JoinAP ( char * pSSID, char * pPassWord ){
//声明一个存放命令的区域
char cCmd [120];
//通过sprintf函数,将参数传进来的ssid和password拼接到字符串后面,放入之前声明的区域
sprintf ( cCmd, "AT+CWJAP=\"%s\",\"%s\"", pSSID, pPassWord );
//通过ESP8266_Cmd ()函数,往模块里面写入命令
return ESP8266_Cmd ( cCmd, "OK", NULL, 7000 );
下面,分析下如何配置TCP连接,并使能它的:
//配置TCP连接
//LCD是为了便于调试添加的,在液晶屏上显示程序的运行信息
bool ESP8266_STA_TCP_Client ( void ){
bool statusCur =
bool statusLst =
// 开启sta连接模式
LCD_DispStr(0,0,(uint8_t *)"begin to sta connection ...",BLUE);
ESP8266_AT_Test ();
statusCur = ESP8266_Net_Mode_Choose ( STA );
if (statusCur == true){
LCD_DispStr(0,20,(uint8_t *)"sta mode success",0xffff);
statusLst =
LCD_DispStr(0,20,(uint8_t *)"sta mode fail",0xffff);
statusLst =
//加入热点的SSID和PASSWORD
LCD_DispStr(0,40,(uint8_t *)"begin to join ERIC_LAI ...",BLUE);
//这里写死了热点的ssid和pw,需要根据各自的情况自行修改
statusCur = ESP8266_JoinAP ( "ERIC_LAI", "lai686868" );
if (statusCur == true && statusLst == true){
LCD_DispStr(0,60,(uint8_t *)"join ERIC_LAI success",0xffff);
statusLst =
LCD_DispStr(0,60,(uint8_t *)"join ERIC_LAI success",0xffff);
statusLst =
//使能TCP连接
bool ESP8266_Connect_Tcp(void){
bool status =
// 连接到TCP服务器
ESP8266_Enable_MultipleId ( ENABLE );
LCD_DispStr(0,120,(uint8_t *)"begin to connect the server ...",BLUE);
status = ESP8266_Link_Server ( enumTCP, serverIpAddress, "9998", Multiple_ID_0 );
if (status == true){
LCD_DispStr(0,140,(uint8_t *)"connect server success",0xffff);
LCD_DispStr(0,140,(uint8_t *)"connect server fail",0xffff);
这一步成功之后,就是接受和发送数据的事情了。因为是串口,所以本质上用的还是串口中断来接收数据的。在wifi_config.c里面,我们完成了串口的使用和中断的配置。但是,串口只能一位一位的发送数据,所以,我们需要写一些代码来实现字符串的接收。上面的注意事项,’\r\n‘是发送完成的标志。所以,我们一直接收数据,知道接收到回车换行符为止。接收到后,标志位置位,退出接收循环。详细代码如下:
//以下的代码在stm32f10x_it.c里面
void USART2_IRQHandler( void ){
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET){
= USART_ReceiveData( USART2 );
if( strEsp8266_Fram_Record .InfBit .FramLength & ( RX_BUF_MAX_LEN - 1 ) ){ //预留1个字节写结束符
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ++ ]
if ( USART_GetITStatus( USART2, USART_IT_IDLE ) == SET ) {//数据帧接收完毕
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 1;
ch = USART_ReceiveData( USART2 ); //由软件序列清除中断标志位(先读USART_SR,然后读USART_DR)
以上,完成之后,通过上面给出的ESP8266_ReceiveString()函数就可以获取接收到的字符串,注意:这是一个堵塞的函数!一旦调用就会等待接收到回车换行符为止。
上面的代码,在发送数据和接收数据的情况,都没有使用透传模式。所以,发送数据的时候需要确定数据的长度(最长不超过1024),接收数据的时候会有报头(+IDP,*,*:)。所以,发送图片的时候需要将图片分割开来发送,接收的时候需要做数据截断,把报头去掉。关于图片分割,在图片传输的时候讲述,截断数据的方法在下面给出:
char* getRealRecv(char *pStr){
char *pBuf, *ppStr, *pStrDelimiter[2];
int uc = 0;
char cStrInput [100];
sprintf(cStrInput, "%s", pStr);
pBuf = cStrI
while ( ( ppStr = strtok ( pBuf, ":" ) ) != NULL ){
pStrDelimiter [ uc ++ ] = ppS
pBuf = NULL;
return pStrDelimiter[1];
以上,是WiFi模块的完成过程。
Master student in computer science
Concordia University, Montreal
can reach me at: h_lai@encs.concordia.ca
http://laihaotao.me
整体思路ESP8266作为TCP服务器,,手机作为TCP客户端,自己使用Lua直接做到了芯片里面,省了单片机,,节约成本,其实本来就是个单片机(感觉Lua开发8266真的很好,甩AT指令好几条街,,而且很容易上手,),不过呢,等几天我也会做一个51用AT指令的.....强烈...
这里只是为了看懂原理图,不牵扯具体的计算等内容(比如电路电流多少啊,三极管放大等等)。因为对于嵌入式开发人员来说,只需要明白不同的电平对于开发板的结果即可,不需要知道具体电路的情况。 微机原理:侧重于讲计算机结构数字电子技术基础:侧重于门电路 GPIO和门电路GPIO类GP...
文章框架 前言 扯单一周目BOSS出现!请速速讨伐!ESP8266是我第一个,也是唯一一个接触过的无线网络模块,我非常喜欢!大部分网上的教程都是ARM架构单片机配用ESP8266。我比较抠门,给大家上51版的。我记得当时和老板承诺可以做成无线通信的时候我也不是很确定,心里一...
重点是说SPI通信协议,,,, 不要害怕协议因为协议是人规定的,,刚好我也是人......规定的协议既然能成为规范让所有人所接受,那么必然有它的优势和优点,必然值得学习,, 害怕协议的人是因为当初碰到了不懂的老师,他只会告诉你这很难............其实是他不会......
摘要:这是一个记录软硬件结合的物联网项目,目的是打造微信实时监控室内环境,由于传感器简陋,这篇文章只介绍温度和湿度的监控,使用的是DHT11温湿度传感器,主机为Arduino UNO+W5100 Ethernet/SD扩展版,路由器为HG255D Pandorabox by...
《歡樂頌》開播,我是關雎爾。平順,不閃耀的人生,但總有一顆“要”向上的心。
不否認路邊鼓掌人的魅力,但,至少不應該是現在。年輕,總遺傳著隨時爆炸的隱性基因。總有人會實現了另一部分人的瘋狂,另一部分人的詩與遠方。
沒有才華,不會交際,不敢嘗試,“有想法”,很少能堅持...
.clearfix的应用: .clearfix:after {content: & &;display:clear:height: 0;} .clearfix {zoom: 1;} .clearfix的原理: 1、在IE6, 7下zoom: 1会触...
12/21挑战结构力21天打卡 沈玥榕-昆明 【每日一结构】结构思考力21天思维改善训练营 G:【你的生命有什么可能】三种人生策略 1、遇见-随心所欲,潇洒自由,适合有大把时间来试错的年轻人。不到处走走,多做尝试,又怎么知道自己想要什么呢。 2、定位-像狙击手一样,盯紧几公...查看: 10810|回复: 16
ESP8266 wifi 获取天气数据情况 心知天气API 中国气象局开放平台 arduino
签到天数: 535 天[LV.9]以坛为家II
本帖最后由 AllBlue 于
15:45 编辑
ESP8266连接到互联网并通过免费的API接口获取天气JSON数据并解析!
选择免费开放的信息平台:
上知乎看了一下: ,还是有很多的!
1、中国气象局开放平台网址:(应该比较权威平台),但表示打开网址错误,大家可以看下这个: (看这不舒服总比看不了强)。查看网页你会发现,需要填写申请表并发送至邮箱:进行审核,审核通过会回复,我已经填写并发出了,没反应,不知道什么时候可以有回应!只能放弃(网上有人说现在不支持了)。
2、,注册账号即可免费使用部分数据(一天免费访问量3000,提供的数据也比较多)!最后测试国内城市天气数据中有中文,无法处理!放弃。
&&api 文档说明:
&&city id list:
3、:支持多语言,:国内369个地级市+天气实况(温度、天气现象)+3天天气预报+生活指数(6项)+400次访问/小时!OK,就选这个了。
4、、 等等,不做介绍合适自己用的就行!
心知天气更改新IP - api.seniverse.com,原api - api.thinkpage.cn也可用(最好用新的),使用本文中的程序时,请保证你的ID是付费版 付费版 付费版(第一次注册会有免费试用)!
测试API接口(在浏览器中打开测试网址即可):
上文提到使用心知天气,我们看下心知天气API接口说明:;支持城市列表:。当然首先你需要注册,对于我们来说免费即可,学习用途,不做商业用途!如果你需要商用,也可以付费。
我注册了免费账号(也可以自行注册): API密钥:24qbvr1mjsnukavo(仅供学习,每小时400次访问)
● 示例1:获取指定城市的实况天气 -- GET& & /weather/now.json
请求地址 -
具体参数:key - API密钥 location - 位置&&language - 语言(可选,默认zh-Hans简体中文)unit - 单位(可选,默认c)
返回结果:
{&&&results&:[{
&&&location&: {
& && &&id&: &C23NB62W20TF&,
& && &&name&: &西雅图&,
& && &&country&: &US&,
& && &&timezone&: &America/Los_Angeles&,
& && &&timezone_offset&: &-07:00&&&},
&&&now&: {
& && &&text&: &多云&, //天气现象文字
& && &&code&: &4&, //天气现象代码
& && &&temperature&: &14&, //温度,单位为c摄氏度或f华氏度
& && &&feels_like&: &14&, //体感温度,单位为c摄氏度或f华氏度
& && &&pressure&: &1018&, //气压,单位为mb百帕或in英寸
& && &&humidity&: &76&, //相对湿度,0~100,单位为百分比
& && &&visibility&: &16.09&, //能见度,单位为km公里或mi英里
& && &&wind_direction&: &西北&, //风向文字
& && &&wind_direction_degree&: &340&, //风向角度,范围0~360,0为正北,90为正东,180为正南,270为正西
& && &&wind_speed&: &8.05&, //风速,单位为km/h公里每小时或mph英里每小时
& && &&wind_scale&: &2&, //风力等级,请参考:465076.htm
& && &&clouds&: &90&, //云量,范围0~100,天空被云覆盖的百分比 #目前不支持中国城市#
& && &&dew_point&: &-12& //露点温度,请参考:118348.htm #目前不支持中国城市#&&},
&&&last_update&: &T22:45:00-07:00& //数据更新时间(该城市的本地时间)
● 示例2:逐日预报和你是 -- GET& & /weather/daily.json
请求地址示例 -
北京今天和未来4天的预报
北京昨天天气、今天和未来3天的预报(仅旗舰会员和大客户支持昨天天气)
具体参数:key - API密钥 location - 位置&&language - 语言(可选,默认zh-Hans简体中文)unit - 单位(可选,默认c) start - 起始时间(可选,默认0) days - 天数(可选)
返回结果:
{&&&results&: [{
& & &location&: {
& && &&id&: &WX4FBXXFKE4F&,
& && &&name&: &北京&,
& && &&country&: &CN&,
& && &&path&: &北京,北京,中国&,
& && &&timezone&: &Asia/Shanghai&,
& && &&timezone_offset&: &+08:00&& & },
& & &daily&: [{& && && && && && && && & //返回指定days天数的结果
& && &&date&: &&,& && && && & //日期
& && &&text_day&: &多云&,& && && && && &//白天天气现象文字
& && &&code_day&: &4&,& && && && && && &//白天天气现象代码
& && &&text_night&: &晴&,& && && && && &//晚间天气现象文字
& && &&code_night&: &0&,& && && && && & //晚间天气现象代码
& && &&high&: &26&,& && && && && && && &//当天最高温度
& && &&low&: &17&,& && && && && && && & //当天最低温度
& && &&precip&: &0&,& && && && && && &&&//降水概率,范围0~100,单位百分比
& && &&wind_direction&: &&,& && && && & //风向文字
& && &&wind_direction_degree&: &255&,& &//风向角度,范围0~360
& && &&wind_speed&: &9.66&,& && && && & //风速,单位km/h(当unit=c时)、mph(当unit=f时)
& && &&wind_scale&: &&& && && && && && &//风力等级
& && &&date&: &&,
& && &&text_day&: &晴&,
& && &&code_day&: &0&,
& && &&text_night&: &晴&,
& && &&code_night&: &0&,
& && &&high&: &27&,
& && &&low&: &17&,
& && &&precip&: &0&,
& && &&wind_direction&: &&,
& && &&wind_direction_degree&: &157&,
& && &&wind_speed&: &17.7&,
& && &&wind_scale&: &3&
& && &...& && && && && && && && && && & //更多返回结果
& & &last_update&: &T18:00:00+08:00& //数据更新时间(该城市的本地时间)
更多这里不介绍,直接访问!
ESP8266 获取天气数据(使用nodemcu测试,无需电路,需要网络):
需要使用的库:
实时天气情况,测试网址:
在浏览器中打开网址,分析数据:
think_weather_json.png (7.75 KB, 下载次数: 1)
09:39 上传
分析得到的哪些数据是你需要的,然后在程序中打印出来......
nodemcu通过USB数据线连接到电脑,下载例程:
[C] 纯文本查看 复制代码/**
Get the Weather from intenet with esp8266
get data from 心知天气:[url=http://www.thinkpage.cn/]http://www.thinkpage.cn/[/url]
api 文档说明:[url=http://www.thinkpage.cn/doc]http://www.thinkpage.cn/doc[/url]
city id list download :[url=http://www.thinkpage.cn/data/thinkpage_cities.zip]http://www.thinkpage.cn/data/thinkpage_cities.zip[/url]
Created by yfrobot,
This example is in public domain.
#include &ESP8266WiFi.h&
#include &ArduinoJson.h&
const char* ssid
= &YFROBOT&;
// XXXXXX -- 使用时请修改为当前你的 wifi ssid
const char* password = &yfrobot2016&;
// XXXXXX -- 使用时请修改为当前你的 wifi 密码
const char* host = &api.thinkpage.cn&;
const char* APIKEY = &24qbvr1mjsnukavo&;
const char* city = &huaian&;
const char* language = &en&;
//心知天气获取连接:[url=https://api.thinkpage.cn/v3/weather/daily.json?key=KEY&location=]https://api.thinkpage.cn/v3/weather/daily.json?key=KEY&location=[/url]城市&language=zh-Hans&unit=c&start=-1&days=5
const unsigned long BAUD_RATE = 115200;
// serial connection speed
const unsigned long HTTP_TIMEOUT = 2100;
// max respone time from server
const size_t MAX_CONTENT_SIZE = 2048;
// max size of the HTTP response
// Skip HTTP headers so that we are at the beginning of the response's body
-- 跳过 HTTP 头,使我们在响应正文的开头
bool skipResponseHeaders() {
// HTTP headers end with an empty line
char endOfHeaders[] = &\r\n\r\n&;
client.setTimeout(HTTP_TIMEOUT);
bool ok = client.find(endOfHeaders);
if (!ok) {
Serial.println(&No response or invalid response!&);
// 发送请求指令
bool sendRequest(const char* host, const char* cityid, const char* apiKey) {
// We now create a URI for the request
//心知天气
String GetUrl = &/v3/weather/now.json?key=&;
GetUrl += apiK
GetUrl += &&location=&;
GetUrl += &&language=&;
// This will send the request to the server
client.print(String(&GET &) + GetUrl + & HTTP/1.1\r\n& +
&Host: & + host + &\r\n& +
&Connection: close\r\n\r\n&);
// Read the body of the response from the HTTP server -- 从HTTP服务器响应中读取正文
void readReponseContent(char* content, size_t maxSize) {
size_t length = client.peekBytes(content, maxSize);
delay(100);
Serial.println(&Get the data from Internet!&);
content[length] = 0;
Serial.println(content);
Serial.println(&Read Over!&);
// The type of data that we want to extract from the page -- 我们要从此网页中提取的数据的类型
struct UserData {
char city[16];
char cnty[16];
char weather[32];
char temp[16];
char feel[16];
char hum[16];
char visi[16];
char udate[32];
// 解析数据
bool parseUserData(char* content, struct UserData* userData) {
// Compute optimal size of the JSON buffer according to what we need to parse.
-- 根据我们需要解析的数据来计算JSON缓冲区最佳大小
// This is only required if you use StaticJsonBuffer. -- 如果你使用StaticJsonBuffer时才需要
const size_t BUFFER_SIZE = 1024;
// Allocate a temporary memory pool on the stack -- 在堆栈上分配一个临时内存池
StaticJsonBuffer&BUFFER_SIZE& jsonB
-- 如果堆栈的内存池太大,使用 DynamicJsonBuffer jsonBuffer 代替
// If the memory pool is too big for the stack, use this instead:
DynamicJsonBuffer jsonB
JsonObject& root = jsonBuffer.parseObject(content);
if (!root.success()) {
Serial.println(&JSON parsing failed!&);
const char* x = root[&results&][0][&location&][&name&];//
Serial.println(x);
// Here were copy the strings we're interested in -- 复制我们感兴趣的字符串
strcpy(userData-&city, root[&results&][0][&location&][&name&]);
strcpy(userData-&cnty, root[&results&][0][&location&][&country&]);
strcpy(userData-&weather, root[&results&][0][&now&][&text&]);
strcpy(userData-&temp, root[&results&][0][&now&][&temperature&]);
strcpy(userData-&feel, root[&results&][0][&now&][&feels_like&]);
strcpy(userData-&hum, root[&results&][0][&now&][&humidity&]);
strcpy(userData-&visi, root[&results&][0][&now&][&visibility&]);
strcpy(userData-&udate, root[&results&][0][&last_update&]);
// It's not mandatory to make a copy, you could just use the pointers
// Since, they are pointing inside the &content& buffer, so you need to make
// sure it's still in memory when you read the string
-- 这不是强制复制,你可以使用指针,因为他们是指向“内容”缓冲区内,所以你需要确保
当你读取字符串时它仍在内存中
// Print the data extracted from the JSON -- 打印从JSON中提取的数据
void printUserData(const struct UserData* userData) {
Serial.println(&Print parsed data :&);
Serial.print(&City : &);
Serial.print(userData-&city);
Serial.print(&, \t&);
Serial.print(&Country : &);
Serial.println(userData-&cnty);
Serial.print(&Weather : &);
Serial.print(userData-&weather);
Serial.print(&,\t&);
Serial.print(&Temp : &);
Serial.print(userData-&temp);
Serial.print(& C&);
Serial.print(&,\t&);
Serial.print(&Feel : &);
Serial.print(userData-&feel);
Serial.print(& C&);
Serial.print(&,\t&);
Serial.print(&Humidity : &);
Serial.print(userData-&hum);
Serial.print(& %&);
Serial.print(&,\t&);
Serial.print(&visibility : &);
Serial.print(userData-&visi);
Serial.println(& km&);
Serial.print(&Last Updata : &);
Serial.print(userData-&udate);
Serial.println(&&);
// Close the connection with the HTTP server -- 关闭与HTTP服务器连接
void stopConnect() {
Serial.println(&Disconnect&);
client.stop();
void setup(){
WiFi.mode(WIFI_STA);
//设置esp8266 工作模式
Serial.begin(BAUD_RATE );
//设置波特率
Serial.println();
Serial.print(&connecting to &);
Serial.println(ssid);
WiFi.begin(ssid, password);
//连接wifi
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(&.&);
Serial.println(&&);
Serial.println(&WiFi connected&);
delay(500);
// Check if a client has connected
if (!client.connect(host, 80)) {
Serial.println(&connection failed&);
if (sendRequest(host, city, APIKEY) && skipResponseHeaders()) {
char response[MAX_CONTENT_SIZE];
readReponseContent(response, sizeof(response));
UserData userD
if (parseUserData(response, &userData)) {
printUserData(&userData);
stopConnect();
void loop(){
delay(3000);
直接下载:
(2.97 KB, 下载次数: 200, 售价: 2 金币)
11:00 上传
点击文件名下载附件
售价: 2 金币 &
下载积分: 辛勤 -1
下载完成后,打开串口(波特率 - 115200):
print_data.jpg (65.46 KB, 下载次数: 6)
14:45 上传
print_data_2.png (47.75 KB, 下载次数: 1)
10:52 上传
提示:解析过程非常重要(一定要先在浏览器中打开并分析),代码稍有误差,会导致eap8266重启。如果遇到问题记得回帖!
现在就差个显示部分,就可以充当天气提示器了!
OLED 0.96显示天气: (有视频)
该用户从未签到
不错不错&&试试看& &顶
该用户从未签到
还差个金币啊
该用户从未签到
多少基于arduino的啊
该用户从未签到
ArduinoJson.h怎么提示缺少这个啊
签到天数: 535 天[LV.9]以坛为家II
ArduinoJson.h怎么提示缺少这个啊
下载安装库文件,就好了;地址文中有的
该用户从未签到
ESP8266WiFi.h在哪里下载啊?
签到天数: 535 天[LV.9]以坛为家II
ESP8266WiFi.h在哪里下载啊?
这个是需要安装ESP8266编译环境的,安装好后就可以了!
教程地址:
签到天数: 1 天[LV.1]初来乍到
多谢楼主分享。考虑用其他的天气。因为现在的心知天气,免费api里提供的东西好像太少了,湿度都没有
签到天数: 3 天[LV.2]偶尔看看I
楼主你好。解析是什么意思?为什么我下载我ESP8266下载进去了,串口没有输出
Powered by}

我要回帖

更多关于 esp8266 wifi数据透传 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信