研究过嵌入式方面的人都应该了解 esp8266 wifi芯片,前段时间接触一个小竞赛,需要一块传输数据给服务器的模块,毫不犹豫选择了esp8266,可能是自己孤陋寡闻吧...  进入正题

1. 开发环境

Arduino    编写芯片程序需要

eclipse      编写服务端程序

花生壳        内网穿透(不是一定要有的)

2. 硬件连线图

(图片源自网络)

(wifi芯片,AT指令通用的,只是连线不同罢了)

2. 首先在Arduino 开发环境,使用软串口的方式 ,使用单片机和esp8266发送数据 ,代码如下

#include <SoftwareSerial.h>SoftwareSerial mySerial(3, 2); // RX, TXvoid setup()  {Serial.begin(9600);while (!Serial) {;}Serial.println("hardware serial!");mySerial.begin(9600);mySerial.println("software seria");}void loop(){if (mySerial.available())Serial.write(mySerial.read());if (Serial.available())mySerial.write(Serial.read());}

这段代码在Arduino 开发环境编写,电脑通过硬串口与单片机发送数据,单片机使用软串口和 esp8266发送数据

Arduino ide下载官网

成功之后,在串口助手中可以发现如下信息

(注意一定要先选中下面的 发送新行!)

3. 通过 AT 指令,设置 esp 8266的wifi源(也就是 这个芯片借用别人的wifi发送消息,就是蹭wifi)

这里先写上几个我在尝试过程中遇到的bug

再输入框里输入  AT+CIOBAUD=9600  回车

有些esp8266芯片的默认波特率可能是 115200 ,这里我们通过这条指令,修改波特率(如图所示)

***********以下命令连接   wifi

注意这些指令也是通过输入框发送给ESP8266的,如图所示

AT+CWMODE=3                   // 设置ap+st混合模式AT+RST                                 // 重启一下AT+CWJAP=" SSID "," password "    (这里填写你家的,或者学校的  wifi名字  和 密码)

输入一条指令  AT+CWMODE=3

返回  OK

输入AT+RST

返回 OK

我是由于原来就连接过wifi,所以会显示连接完成,WIFI GOT IP

如果是第一次连接  指令 AT+CWJAP=" SSID "," password " 也要输入

-------------------------------------------------------------------------------

(注意接下来的代码完全也可以通过  输入框  发送  AT 指令  但是  我是出于自动化的考虑,写到了代码里面,也就是说通过

AT 指令也可以发送  GET 网络请求)

4. 前面我们通过软串口程序,设置好了wifi, 现在我们在Arduino 开发环境编写代码让 esp8266发送请求,

#include <SoftwareSerial.h>
SoftwareSerial WIFISerial(3, 2); // RX, TX    //模拟一个软串口
void setup()  {Serial.begin(9600);while (!Serial) {;}                       //等待串口初始化WIFISerial.begin(9600);delay(1000);WIFISerial.println("AT"); Serial.println("AT");    delay(1000);WIFISerial.println("AT+CIPMUX=0");     //打开单连接    Serial.println("AT+CIPMUX=0");             delay(1000);WIFISerial.println("AT+CIPSTART=\"TCP\",\"19xr3.imwork.net\",29971");  //  这里填写你的域名(主机ip地址 ,127的那个貌似不行),端口号Serial.println("AT+CIPSTART=\"TCP\",\"19xr3.imwork.net\",29971");// 接收数据的计算机地址,连接到 TCP 服务器delay(3000);WIFISerial.println("AT+CIPMODE=1");    //透传模式Serial.println("AT+CIPMODE=1");    //透传模式delay(1000);WIFISerial.println("AT+CIPSEND");    //透传模式Serial.println("AT+CIPSEND");    //透传模式delay(1000);}void loop(){while(WIFISerial.available()){Serial.write(WIFISerial.read());}
//串口打印 软串口读到的每一句话,这里Serial.println("I am ready");Serial.flush();String t = readLine();if(t!=""){WIFISerial.println("GET http://19xr3.imwork.net/a/r/"+t);   //  发送一个http请求}delay(2000);   //时隔两秒发送下一个请求}
String readLine()
{  String str;  while (Serial.available()>0)  {  char temp = Serial.read();  if (temp != '\n') {  str += char(temp);  delay(2);  }//delete temp;else break;//delete temp;  }  return str;
}  

注意: 以上代码 让wifi芯片发送http请求 ,使用 get 方法,文章最后面给了使用post 方法发送数据的代码。

以上代码需要注意的是

1.  域名可以使用 本机地址,

(这是程序烧写之后,打开串口助手,等待你发送数据)

2.  readline  函数  里面的  delay (2) 不可以缺少

3.  注意  代码下划线的使用

4. AT 指令可以在网上找到讲解,这里不多说

5. 如果没有域名   拿主机 ip 地址也可以  命令行  输入 ipconfig,用 ipv4 地址替换代码中的域名

但是要注意!!!!   我代码中有下划线的地方一个不能少,之前因为这个吃了好多亏

   WIFISerial.println("AT+CIPSTART=\"TCP\",\"19xr3.imwork.net\",29971");

这个不能少!

     WIFISerial.println("GET http://19xr3.imwork.net/a/r/"+t);   //  发送一个http请求  

这里  a/r/  这个下划线一定要有  ,  a 和 r 只是服务器的路径罢了。

5.  服务端  我是使用eclipse+ jfinal 编写的代码

本质就是  把地址后面的参数输出到控制台 程序使用普通的 jsp+servlet 也可以实现

http://www.baidu.com/parameter_and_value

启动服务器,然后打开串口助手

前面几行是程序的输出信息,然后不断出现  I am ready  可以发送数据了  在下面输入 任意字符串

在服务端会有显示,如图。

除此之外,你们看我的服务器代码 有一段 renderText("This is restore method ")

这句话在串口助手中也可以找到

这里我们发送信息的方式是  通过地址的参数发送信息,也就类似与  访问  http://www.baidu.com/hello

我们也可以使用post 发送信息

代码仅供参考

#include <ArduinoJson.h>#include <SoftwareSerial.h>
SoftwareSerial WIFISerial(3, 2); // RX, TX    //模拟一个软串口
void setup()  {Serial.begin(9600);while (!Serial) {;}  WIFISerial.begin(9600);delay(1000);WIFISerial.println("AT"); Serial.println("AT");    delay(1000);WIFISerial.println("AT+CIPMUX=0");     //打开单连接    Serial.println("AT+CIPMUX=0");             delay(1000);WIFISerial.println("AT+CIPSTART=\"TCP\",\"19xr3.imwork.net\",29971");Serial.println("AT+CIPSTART=\"TCP\",\"19xr3.imwork.net\",29971");// 接收数据的计算机地址,连接到 TCP 服务器delay(3000);WIFISerial.println("AT+CIPMODE=1");    //透传模式Serial.println("AT+CIPMODE=1");    //透传模式delay(1000);WIFISerial.println("AT+CIPSEND");    //透传模式Serial.println("AT+CIPSEND");    //透传模式delay(1000);}void loop(){while(WIFISerial.available()){Serial.write(WIFISerial.read());}Serial.println("I am ready");Serial.flush();String t = readLine();if(t!=""){String data = (String)"{\"heartbeat\":\"" + t+"\"}";  int length = data.length();  String postRequest =(String)("POST ") + "/ HTTP/1.1\r\n" +  "Content-Type: application/json;charset=utf-8\r\n" +  "Host: " +"http://19xr3.imwork.net:29971/a/r/"+ ":" + 29971 + "\r\n" +            "Content-Length: " + length + "\r\n" +  "Connection: Keep Alive\r\n\r\n" +  data+"\r\n";  WIFISerial.print(postRequest);}delay(2000);
}String readLine()
{  String str;  while (Serial.available()>0)  {  char temp = Serial.read();  if (temp != '\n') {  str += char(temp);  delay(2);  }//delete temp;else break;//delete temp;  }  return str;
}  

感谢以下博客文章

https://www.sogou.com/link?url=DSOYnZeCC_q8-9mlKJZvMq8q7oefb5diMlByC-y2GDUl8OT6rYpPtg

http://www.windworkshop.cn/?p=1217

http://www.21ic.com/evm/evaluate/MCU/201712/747645_2.htm

https://www.cnblogs.com/ticktack/p/8043344.html

https://www.cnblogs.com/niejunchan/p/5738628.html

使用esp8266 wifi芯片和DFRduino开发板(Arduino也可以),向自己的服务器发送请求(尽可能详细的说明)相关推荐

  1. 小E开发板wifi音箱一实现PC通过wifi传数据到开发板进行播放

              外话:各位手头上没有esp8266的开发板注意了,目前开发快正在进行"免费开发板活动",本人就是在他们那里申请到的开发板,开发快提供的不单单是开发板,还有他们强 ...

  2. Wio RP2040无线WiFi迷你开发板Arduino IDE开发环境安装与使用基础

    Arduino IDE作为一种开源硬件开发软件工具,目前拥有很好的应用生态和众多的用户,本文介绍Wio RP2040无线WiFi迷你开发板Arduino IDE环境安装与设置,并给出采用Arduino ...

  3. LGT8F328P 开发板arduino环境搭建及中断程序

    LGT8F328P 开发板arduino环境搭建: 1. 在官网上下载 Arduino硬件支持包 http://www.lgtic.com/downloads/ Arduino开发平台相关 LGT8F ...

  4. 为开发板Arduino Mega or Mega 2560编译时出错

    问题: 是在Ubuntu上下载了Arduino IDE,然后在运行Arduino示例里面的代码时,发现无法编译,提示错误"as: 未识别的选项 '-mmcu=avr6', exit stat ...

  5. 芯片-模组-开发板-软件开发包SDK(Software Development Kit)的关系(软件开发人员必须了解的硬件知识)

    使用的芯片相同,但不同模组的Flash大小.天线的材质.模组尺寸是不同的.是的,芯片到模组的演变经历了"定制化.专用化"的过程.模组最终会嵌入到电视.电冰箱.空调等不同的产品中去, ...

  6. 最新瑞芯微四核芯片RK3288开源开发板

    RK3288一体机开发主板,采用瑞芯微四核芯片RK3288方案,主频高达1.8GHz.支持常用外接设备,接口丰富.性能稳定.支持多路显示接口:支持双 mipi.LVDS.HDMI.EDP.多种显示输出 ...

  7. 6713芯片手册_6713-FPGA开发板手册.pdf

    6713-FPGA开发板手册 DSP6713-FPGA-USB2.0 高速采集板 用户手册 (Ver2.21) DSP6713-FPGA-USB2.0 高速采集板用户手册 目 录 1.产品简介 3 1 ...

  8. arduinopn532模块_NFC开发板/nfc芯片标签/PN532开发板/RFID读卡器/NFC模块/Arduino

    带40 kB ROM和1 kB RAM的80C51微控制器内核 高度集成的模拟电路,解调和译码响应 输出缓冲驱动器通过非常少量的外部无源器件连接天线 集成了RF场检测器 集成了数据模式检测器 支持IS ...

  9. 兼容arduino的linux开发板,Arduino的各种常用开发板

    Arduino开发板大全,来看看你玩过哪些? 昨天认识了Arduino,今天来看看Arduino的各种常用开发板. 它有各种型号的,如Arduino Uno.Arduino Leonardo.Ardu ...

最新文章

  1. 字节跳动pest分析_字节跳动小程序分析:前景及优势都是什么?
  2. ENAS加载自己的数据集之路
  3. common pool2 mysql_用common-pool自定义资源池
  4. Docker自学纪实(三)Docker容器数据持久化
  5. RawCode-本身就是实验性的8位类型
  6. html5 canvas签字,HTML5 canvas实现电子签名
  7. nginx 80端口重定向到443端口
  8. SQL 导出表数据存储过程
  9. Windows监听进程的两个函数
  10. 【Oracle】闪回表
  11. ROS学习(六)—— 理解ROS节点
  12. java Servlet文件拷贝的模板代码
  13. Scala For Java的一些参考
  14. 拓端tecdat|R语言用rle,svm和rpart决策树进行时间序列预测
  15. close与volume的相关性
  16. 掌握旋风:SAP成功实施实地指南
  17. 【贪玩巴斯】带你一起攻克英语语法长难句—— 第六章——英语的特殊结构 ——2022年3月19日-20日
  18. OPPO技术开放日第六期丨OPPO安全解析“应用与数据安全防护”背后的技术
  19. hao123站长李兴平的成功史
  20. (贰)笔记:AUI 中 Tab 的使用及 item 样式与下划线样式的修改

热门文章

  1. 2022,博士们,又开始晒工资了
  2. maven的settings配置文件详解
  3. 如何编写知识竞赛抢答赛规则和流程策划书
  4. UIApplication(BTGMethodSwizzler) btg_swizzleSendEvent: 崩溃
  5. 麦克风声源定位原理_基于麦克风阵列的声源定位算法之GCC-PHAT
  6. 浮躁_se7en3_新浪博客
  7. 图说区块链 神一样的金融科技与未来社会
  8. python绘制太阳系模型_用python做一个漂亮的太阳系运动模拟
  9. bzoj 2121 字符串游戏
  10. Error:A problem occurred configuring project ‘:app‘. > Failed to find target with hash string ‘andro