极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14384|回复: 3

【ESP8266系列】如何使用OCROBOT IDE用arduino语法来玩ESP8266

[复制链接]
发表于 2016-8-30 21:16:53 | 显示全部楼层 |阅读模式
本帖最后由 迷你强 于 2016-8-31 15:48 编辑

如何使用OCROBOT IDE用arduino语法来玩ESP8266
ESP8266可是一个好玩的芯片,高性能,据说有160Mhz主频,wifi通讯,还有一定数量的IO口,当然传统的AT操作方式或者SDK的开发环境很多爱好者还是头疼的紧
不过,好在开源界的大神多,ESP8266-Arduino 项目:https://github.com/esp8266/Arduino ,就将其兼容性做的出神入化,本系列教程就主要介绍如何用arduino的语法标准来玩ESP8266
下面正式开始,我们将使用的硬件是OCROBOT ALPHA esp8266控制板,这个是我们的最新产品,暂时还买不到,您可以使用其他的ESP8266硬件,只要是标准硬件都没啥问题
esp8266硬件区分下载模式和运行模式,一般硬件厂商使用跳线或者上下拉的方式实现,我们的硬件上采用拨动开关,如图拨上去就处于下载模式了
然后我们来介绍下我们的IDE:
前往下载测试版本的IDE即可,打开如下图
首先我们要进行ESP8266的环境支持,你如果使用的是标准ide可以前往上面的github查阅安装方法。
  • 首先点击工具- 开发板:XXXXXX-开发板管理器
  • 开发板管理器里选择ESP8266选项卡,并点击安装
  • 然后就会自动进行环境的安装,等待一段时间,视网络及计算机情况,可能需要几分钟到十几分钟,耐心等待下面的进度条消失
  • 完成后点击关闭,然后再回到开发板菜单下,你会发现ESP8266板卡就出来了。
  • 我们选择 OCROBOT ESP8266 Module的板卡选项,介绍下子选项的含义
    其实很简单啦,需要调整的其实就是处理器的速度和端口号。。。。。

我们来测试下是否正常使用了,将模块设置为下载模式然后,尝试个闪灯

void setup() {   
    pinMode(D2, OUTPUT);
}
void loop() {  
     digitalWrite(D2, HIGH);     
     delay(1000);     
     digitalWrite(D2, LOW);
     delay(1000);   
}
这样LED就闪起来了,熟悉的小伙伴应该会发现,和arduino的标准玩法没有任何不同嘛~,其实只有细微的差别,为了兼容管脚
所有的管脚前面要加上D字修饰一下,理论上绝大部分的使用都没有什么区别的。
我们再来演示个串口通讯的程序试试(记得重新下载程序的时候按下res键让芯片复位,重新进入下载模式)
void setup() {
  Serial.begin(9600);
}
void loop() {
  Serial.println("hello OCROBOT~!");
  delay(1000);
}
下载完成
打开串口监视器看下:
对,这个开源解决方案能让ESP8266近乎于完美的兼容了arduino代码与IDE,我们将在以后的内容中介绍 I2C SPI总线与这个板子的核心功能WIFI,欢迎关注




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-8-31 12:59:29 | 显示全部楼层
本帖最后由 迷你强 于 2016-8-31 15:46 编辑

虽然我对这个系列有所保留,不过还是支持下

不知道wemos的代码能不能兼容呢



  1. #include <ESP8266WiFi.h>
  2. const char* ssid = "xxxxxxx";
  3. const char* password = "yyyyyyyy";

  4. // Create an instance of the server
  5. // specify the port to listen on as an argument
  6. WiFiServer server(80);

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

  10.   // prepare GPIO2
  11.   pinMode(2, OUTPUT);
  12.   digitalWrite(2, 0);
  13.   
  14.   // Connect to WiFi network
  15.   Serial.println();
  16.   Serial.println();
  17.   Serial.print("Connecting to ");
  18.   Serial.println(ssid);
  19.   
  20.   WiFi.begin(ssid, password);
  21.   
  22.   while (WiFi.status() != WL_CONNECTED) {
  23.     delay(500);
  24.     Serial.print(".");
  25.   }
  26.   Serial.println("");
  27.   Serial.println("WiFi connected");
  28.   
  29.   // Start the server
  30.   server.begin();
  31.   Serial.println("Server started");

  32.   // Print the IP address
  33.   Serial.println(WiFi.localIP());
  34. }

  35. void loop() {
  36.   // Check if a client has connected
  37.   WiFiClient client = server.available();
  38.   if (!client) {
  39.     return;
  40.   }
  41.   
  42.   // Wait until the client sends some data
  43.   Serial.println("new client");
  44.   while(!client.available()){
  45.     delay(1);
  46.   }
  47.   
  48.   // Read the first line of the request
  49.   String req = client.readStringUntil('\r');
  50.   Serial.println(req);
  51.   client.flush();
  52.   
  53.   // Match the request
  54.   int val;
  55.   if (req.indexOf("/gpio/0") != -1)
  56.     val = 0;
  57.   else if (req.indexOf("/gpio/1") != -1)
  58.     val = 1;
  59.   else {
  60.     Serial.println("invalid request");
  61.     client.stop();
  62.     return;
  63.   }

  64.   // Set GPIO2 according to the request
  65.   digitalWrite(2, val);
  66.   
  67.   client.flush();

  68.   // Prepare the response
  69.   String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  70.   s += (val)?"high":"low";
  71.   s += "</html>\n";

  72.   // Send the response to the client
  73.   client.print(s);
  74.   delay(1);
  75.   Serial.println("Client disonnected");

  76.   // The client will actually be disconnected
  77.   // when the function returns and 'client' object is detroyed
  78. }
复制代码


这段代码的功能是连上一个指定的wifi,当获取得到IP后从串口输出,然后开一个80端口的web服务
如果用浏览器访问http://server_ip/gpio/0 端口GPIO2就low电平
如果用浏览器访问http://server_ip/gpio/1 端口GPIO2就high电平
可以在GPIO2接个led测试效果

有机会的话,试一试哦
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-31 15:46:48 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2016-9-12 12:53:22 | 显示全部楼层
最近也有在做这个项目,arduino IDE调戏ESP8266兼容性蛮好,其实esp8266画龙点睛之一还有个SmartConfig功能,配合AirKiss可以无缝配置WIFI 如果结合微信公众平台的硬件API 可玩性蛮大 升级最新板固件即可支持 贴出这部分arduino代码供大家参考:
  1. void smartConfig()
  2.     {
  3.       WiFi.mode(WIFI_STA);
  4.       Serial.println("\r\nWait for Smartconfig");
  5.       WiFi.beginSmartConfig();
  6.       while (1)
  7.       {
  8.         Serial.print(".");
  9.         digitalWrite(LED, 0);
  10.         delay(500);
  11.         digitalWrite(LED, 1);
  12.         delay(500);
  13.         if (WiFi.smartConfigDone())
  14.         {
  15.           Serial.println("SmartConfig Success");
  16.           Serial.println(WiFi.SSID().c_str());
  17.           Serial.println(WiFi.psk().c_str());
  18.           break;
  19.         }
  20.       }
  21.     }
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-16 20:00 , Processed in 0.054638 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表