美文网首页玩转Arduino程序员
ESP8266 在 Arduino 上的使用指南

ESP8266 在 Arduino 上的使用指南

作者: 和牛 | 来源:发表于2017-11-24 17:06 被阅读95次

    谈到硬件开发无法绕开 ESP8266, 这个带有 Wifi 功能的芯片品牌近几年由于它便宜到令人发指的价格,开放的环境受到追捧。想知道更多它受追捧的原因可以看看 这篇文章。本文主要讲一下 ESP8266 在 Arduino 上的开发使用。

    实际上,ESP8266 一开始是使用 AT 指令来开发的。后来由于收到欢迎,开发者建立和完善了新的开发机制,现在你可以在 Arduino 上用专属语言,NodeMCU固件上用 Lua 语言,Micropython 上用 Python 语言,甚至是 JavaScript 语言。感兴趣的可以搜一下对应的实现方式。

    安装

    附加开发板管理器(Board Manager)是官方推荐的安装方式。此方法通过在 Arduino IDE 的首选项设置里添加安装地址,使用 Arduino 内置的包安装管理方式进行安装。具体操作步骤是:

    • 安装 CP1202 驱动
    • 点开首选项,在附加安装板管理器加入 http://arduino.esp8266.com/stable/package_esp8266com_index.json,点击确定;
    • 点击工具的库管理界面,待加载完成选择或者输入 ESP8266 安装即可。如果出现网络连接错误等提示,可能是网络环境不好,需要换一个更好的网络环境才能安装成功,差网络会一直报错,搞到抓狂还以为是配置出现了什么问题。如果进度条显示安装速度很慢,可以先下载安装包到缓存,再次安装。缓存位置可以在首选项的附加开发板的管理器下面看到。
    • 安装成功以后,工具菜单的开发板下便可以选择 ESP8266 开发板了。点击 查看更详细的操作步骤。

    软件编写

    在 Arduino 上直接编写测试用例:

    #include <Arduino.h>
    #include <ESP8266WiFi.h>
    #include <ESP8266WiFiMulti.h>
    #include <ESP8266HTTPClient.h>
    
    #define USE_SERIAL Serial
    ESP8266WiFiMulti WiFiMulti;
    
    void setup() {
        USE_SERIAL.begin(115200);
    
        USE_SERIAL.println();
        USE_SERIAL.println();
        USE_SERIAL.println();
    
        for(uint8_t t = 4; t > 0; t--) {
            USE_SERIAL.printf("[SETUP] WAIT %d...\n", t);
            USE_SERIAL.flush();
            delay(1000);
        }
        
        //路由器名称和密码
        WiFiMulti.addAP("ssid", "password");
    }
    
    void loop() {
        if((WiFiMulti.run() == WL_CONNECTED)) {
            HTTPClient http;
            USE_SERIAL.print("[HTTP] begin...\n");
            http.begin("http://192.168.1.165:8655/la/v1/user/feedback"); //HTTP
            
            //需要传输的数据
            char postData[] = "title=arduino&content=";
            char dataBuff[50];
            strcat(postData,testData);
            
            //头信息,需要的反注释就可以
            //http.addHeader("Authorization", "Bearer 77eb2493769bb566f5bc346f6d598e7");
            //http.addHeader("Content-Type", "application/json;charset=utf-8");
            //http.addHeader("cache-control", "no-cache");
            http.addHeader("Content-Type", "application/x-www-form-urlencoded");
              int httpCode = http.POST(postData);
      
            if(httpCode > 0) {
                  // HTTP header has been send and Server response header has been handled
                  USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);
      
                  // file found at server
                  if(httpCode == HTTP_CODE_OK) {
                      String payload = http.getString();
                      USE_SERIAL.print(payload);
                  }
              } else {
                  USE_SERIAL.print("fail");
                  USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
              } 
              http.end();
          } 
        }
        delay(1000);
    }
    
    

    软件烧录

    如果是 D1 MINI 这样自带 USB 接口的模块,插到电脑上,在 Arduino 上选择 ESP8266 的开发版点击烧录就可以了。如果是 ESP01 这样的单一模块,一般要通过 USB 转 TTL 模块进行烧录。接线的时候 一定要确认跳针在正确的位置,供电 3.3v, 否则会烧坏模块。烧录模式一定要将 GPIO0 接地线,否则会烧录失败。


    连线图

    相关文章

      网友评论

        本文标题:ESP8266 在 Arduino 上的使用指南

        本文链接:https://www.haomeiwen.com/subject/jnsfbxtx.html