ESP8266深度学习之四使用Aruino IDE实现ESP8266编程

一、Arduino IDE简介
Arduino IDE是专门为Arduino单片机打造的C语言开发环境,简单易用,通用性好,ESP8266本身对编程环境的要求并不高,总体来看,通过Arduino开发ESP8266能够更好的实现代码移植,同时摆脱AT指令的简单操作方式,可操作性更高,当然,对开发者的要求也会比较高。
我们怎么理解这种操作方式呢?
实际上,ESP8266作为单片机的一种,可是视为Arduino UNO设备的WIFI版,当然,从引脚数量和内存上,ESP8266确实有比较大的短板,但是在网络编程方面ESP8266更有直观优势。
个人主要是使用ESP8266进行网络通信工作,再通过串口实现8266与Arduino的物理通信和信息传送。就相当于把ESP8266当做传递信息的“信使”,用户网络通信直接编程了本地通信,在代码编写、软件结构设计等方面都会更加便捷。
下面是Arduino ide的操作环境和官方下载地址,大家可直接下载或者在百度搜索下载都是可以的:
界面
https://www.arduino.cc/en/Main/Software
从上面的界面可以看到,Arduino封装好以后,我们看不见main函数,取而代之的是setup()函数和loop()函数。
顾名思义,setup()函数优先运行,这里可以配置我们需要预定义的一些基本动作操作,如端口速率,启动项等。
loop()函数执行后,系统会不间断执行循环操作,我们可以把loop函数当作while(1)来看待。
二、环境配置
(一)在Arduino IDE的“文件”-“首选项”的“附加开发板管理网址”上,填入以下地址
http://arduino.esp8266.com/stable/package_esp8266com_index.json
点确定后,再执行下一步操作。
(二)在“工具”-“开发板”-“开发板管理”里,搜索ESP8266开发板信息,并点击安装
信息
由于这个网址是外网地址,自己亲测效果来看,下载速度是很慢的,感觉像是老牛。很无语,毕竟不是国产货,不过也可以直接下载一个版本的安装包,然后在安装系统里更新替换也是可以的。
我个人就是这个做的,至于这种方式的安装包,大家有需求的,可以留言给我。
(三)安装好后就是选择板卡和配置了
配置
以上配置是ESP8266-01S是配置。特别是FLASH MODE不要轻易选错,不然烧录会有问题,这个很关键。
如果你连接的设备是NODE MCU。那么相应的内存和配置,可以根据实际情况进行调整。

三、测试效果
很对人可能对以上配置有困惑,到底配置的信息对不对,特别是内存设置的信息对不对,不太好预估。不用担心,Arduino预装这个安装包时,只要增加了ESP8266开发板信息,相应的也会增加ESP8266实例代码库,里面有专门检测配置信息的,如下:

void setup(void) {
    Serial.begin(115200);
}

void loop() {

    uint32_t realSize = ESP.getFlashChipRealSize();
    uint32_t ideSize = ESP.getFlashChipSize();
    FlashMode_t ideMode = ESP.getFlashChipMode();

    Serial.printf("Flash real id:   %08X\n", ESP.getFlashChipId());
    Serial.printf("Flash real size: %u\n\n", realSize);

    Serial.printf("Flash ide  size: %u\n", ideSize);
    Serial.printf("Flash ide speed: %u\n", ESP.getFlashChipSpeed());
    Serial.printf("Flash ide mode:  %s\n", (ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN"));

    if(ideSize != realSize) {
        Serial.println("Flash Chip configuration wrong!\n");
    } else {
        Serial.println("Flash Chip configuration ok.\n");
    }

    delay(5000);
}

具体效果我就不截图了,需要的可以留言,通过以上指令,系统会检测出配置的一些主要信息是否正确,不正确的,按提示修改即可,非常方便。
这里,再推荐一段代码,个人认为是比较实用的:

#include "ESP8266WiFi.h"
void setup() {
  Serial.begin(115200);
  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
  Serial.println("Setup done");
}
void loop() {
  Serial.println("scan start");
  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0)
    Serial.println("no networks found");
  else
  {
    Serial.print(n);
    Serial.println(" networks found");
    for (int i = 0; i < n; ++i)
    {
      // Print SSID and RSSI for each network found
      Serial.print(i + 1);
      Serial.print(": ");
      Serial.print(WiFi.SSID(i));
      Serial.print(" (");
      Serial.print(WiFi.RSSI(i));
      Serial.print(")");
      Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
      delay(10);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(5000);
}

通过这段代码,我们可以检测出附件的WIFI网络信息,为我们测试单片机WIFI设备是否正常提供了依据。
四、注意事项
(一)推荐实用NODE MCU作为主要的开发测试工具,毕竟此款产品内存大,只需一个USB数据线即可连接操作。若想后期移植到01s设备中,也建议现在MCU中测通再烧录到01s中。
(二)目前联网只能是2.4G片段的WIFI,如果是5G频段的WIFI还不行,这需要硬件升级,不过还好,我们目前的大部分网络设备都是2.4G的。
(三)若Arduino IDE编译成功但上传代码出现问题时,优先采用重启单片机方式解决,即插拔电源。当然,01S设备需要首先把GPIO0引脚连接负极,否则无法实现烧录,同时,烧录后原来的配置信息就直接覆盖了,目前好像还没有恢复办法。因此,如果之前有相关信息存储,可考虑提前备份。
好了,就写到这里了,大家有什么疑问可以@我,我再逐步丰富,欢迎支持哈!

发布了11 篇原创文章 · 获赞 16 · 访问量 2090

猜你喜欢

转载自blog.csdn.net/qxrobot/article/details/103547824