开启左侧

另类的Arduino — ESP8266

[复制链接]
发表于 2016-12-14 15:13:03 | 显示全部楼层 |阅读模式
曾记得在很早很早以前,要使得Arduino接入互联网是比较蛮烦的事,那时候我们用的都是有线网络,如果有一个WiFi的模块那真的是“身份的象征”了。
在ESP8266上市以前,也有很多WiFi模块,不过因为稍高的价格让大多数人望而却步,而宁愿原则便宜的W5100或者ENC28J60(我相信更多的是W5100)。
ESP8266上市后,以其超级高的信价比和操作简易度被大多数玩家接受。
而更多时候我们选择的是使用Arduino通过串口去控制它,可是其本身就是一个很好的控制器,这样做有一点浪费了它比较多的资源。

在这篇文章中,我们将使用ESP8266当做一个Arduino来使用。
当然我相信很多玩家都一定看过了这种使用方法,不过这次我们不是使用大家常见NodeMCU,而是直接使用ESP8266 ESP - 01。也就是常见的那种小的ESP8266。

一、需要的材料
ESP - 01   x 1
USB 转 TTL  x1
按钮  x2
LED  x1
导线若干
面包板   x1

二、步骤
首先需要在Arduino  IDE中安装对ESP8266的支持,具体查看如下的帖子:
http://www.arduino.cn/forum.php? ... p;highlight=ESP8266

其次完成连线,接线有两种方式
含有DTR接线和不含有DTR接线(DTR就是给8266一个刷机信号)
ESP8266_starter_bb.jpg ESP8266_starter_button.jpg
第一个图是有DTR的接线,第二个图是没有DTR的接线,我们改用导线代替。

含有DTR
USB TTL------ ESP8266 ESP-01
GND-----------GND
TX--------------RX
RX--------------TX
RTS------------RST
DTR-----------GPIO0

不含有DTR
USB TTL---------------- ESP8266 ESP-01
GND-----------------------GND
TX---------------------------RX
RX---------------------------TX
Reset Button------------RST
Flash Button------------GPIO0
当然我们还要考虑到没有USB转TTL的小伙伴,这时候我们可以用一块UNO或者MEGA来使用。接线如下图
ESP8266_starter_arduino.jpg
Arduino---------------- ESP8266 ESP-01
GND-----------------------GND
TX---------------------------TX
RX---------------------------RX
Reset Button------------RST
Flash Button------------GPIO0

当你完成了接线和支持文件的安装后,你可以下载程序啦~
Capture6.png
板子需要这么选择,COM口也需要选择,当你没有DTR的时候,你需要先按住RESET再按FLASH来确保8266进入刷机模式。
然后接上一个LED
ESP8266_webserverled.jpg
注意8266工作电压是3.3V,千万别用5V哦。
  1. #include <ESP8266WiFi.h>

  2. const char* ssid = "YOUR_SSID";//输入你的SSID,就是WiFi名称
  3. const char* password = "YOUR_PASSWORD";//WiFi密码

  4. int ledPin = 2; // GPIO2 of ESP8266
  5. WiFiServer server(80);

  6. void setup() {
  7.   Serial.begin(115200);
  8.   delay(10);


  9.   pinMode(ledPin, OUTPUT);
  10.   digitalWrite(ledPin, LOW);
  11.    
  12.   // 连接网络
  13.   Serial.println();
  14.   Serial.println();
  15.   Serial.print("Connecting to ");
  16.   Serial.println(ssid);
  17.    
  18.   WiFi.begin(ssid, password);
  19.    
  20.   while (WiFi.status() != WL_CONNECTED) {
  21.     delay(500);
  22.     Serial.print(".");
  23.   }
  24.   Serial.println("");
  25.   Serial.println("WiFi connected");
  26.    
  27.   // 开启服务
  28.   server.begin();
  29.   Serial.println("Server started");

  30.   // 输出IP地址
  31.   Serial.print("Use this URL to connect: ");
  32.   Serial.print("http://");
  33.   Serial.print(WiFi.localIP());
  34.   Serial.println("/");
  35.    
  36. }

  37. void loop() {
  38.   // Check if a client has connected
  39.   WiFiClient client = server.available();
  40.   if (!client) {
  41.     return;
  42.   }
  43.    
  44.   // Wait until the client sends some data
  45.   Serial.println("new client");
  46.   while(!client.available()){
  47.     delay(1);
  48.   }
  49.    
  50.   // Read the first line of the request
  51.   String request = client.readStringUntil('\r');
  52.   Serial.println(request);
  53.   client.flush();
  54.    
  55.   // Match the request

  56.   int value = LOW;
  57.   if (request.indexOf("/LED=ON") != -1) {
  58.     digitalWrite(ledPin, HIGH);
  59.     value = HIGH;
  60.   }
  61.   if (request.indexOf("/LED=OFF") != -1){
  62.     digitalWrite(ledPin, LOW);
  63.     value = LOW;
  64.   }

  65. // Set ledPin according to the request
  66. //digitalWrite(ledPin, value);
  67.    

  68.   // Return the response
  69.   client.println("HTTP/1.1 200 OK");
  70.   client.println("Content-Type: text/html");
  71.   client.println(""); //  do not forget this one
  72.   client.println("<!DOCTYPE HTML>");
  73.   client.println("<html>");
  74.    
  75.   client.print("Led pin is now: ");
  76.    
  77.   if(value == HIGH) {
  78.     client.print("On");  
  79.   } else {
  80.     client.print("Off");
  81.   }
  82.   client.println("<br><br>");
  83.   client.println("Click <a href=\"/LED=ON\">here</a> turn the LED on pin 2 ON<br>");
  84.   client.println("Click <a href=\"/LED=OFF\">here</a> turn the LED on pin 2 OFF<br>");
  85.   client.println("</html>");

  86.   delay(1);
  87.   Serial.println("Client disonnected");
  88.   Serial.println("");

  89. }
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

Copyright © 2016-2017 i创学院 - 上海享渔教育科技有限公司 Powered by Discuz!     ( 沪ICP备16033954号-1 )