玩转Arduino程序员

ESP8266 在 Arduino 上的使用指南

2017-11-24  本文已影响95人  和牛

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

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

安装

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

软件编写

在 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 接地线,否则会烧录失败。


连线图
上一篇下一篇

猜你喜欢

热点阅读