I-002 智能家居系列--ESP8266环境搭建

智能家居系列

  • 1 NodeMCU简介
  • 2 硬件介绍
  • 3 开发工具的选择
    • 3.1 软件介绍
    • 3.2 环境搭建
  • 4 测试代码
  • 5 后续会更新这边文章

1 NodeMCU简介

NodeMCU简介. NodeMCU ,是一个开源的 物联网 平台。. 它使用 Lua 脚本语言编程。. 该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。该平台使用了很多开源项目, 例如 lua-cjson, spiffs. NodeMCU包含了可以运行在esp8266 Wi-Fi SoC 芯片之上的固件,以及基于ESP-12模组的硬件。

2 硬件介绍

I-002 智能家居系列--ESP8266环境搭建_第1张图片
ESP8266芯片有17个GPIO引脚(GPIO0~GPIO16)。这些引脚中的GPIO6~GPIO 11被用于连接开发板的闪存(Flash Memory)。如果在实验电路中使用GPIO6~GPIO11,NodeMCU开发板将无法正常工作。因此建议您不要使用GPIO6~GPIO11。
特殊引脚说明:

引脚 说明
GPIO 2 在NodeMCU开发板启动时是不能连接低电平的
GPIO 15 引脚在开发板运行中一直保持低电平状态。因此请不要使用GPIO15引脚来读取开关状态或进行I²C通讯
GPIO 0 在开发板运行中需要一直保持高电平状态。否则ESP8266将进入程序上传工作模式也就无法正常工作了。您无需对GPIO 0 引脚进行额外操作,因为NodeMCU的内置电路可以确保GPIO 0 引脚在工作时连接高电平而在上传程序时连接低电平。

3 开发工具的选择

Node MCU的可以使用多种语言进行开发:

  • Lua语言
  • Python
  • C语言
    本次开发我们使用C语言,使用的开发工具为Arduino IDE,这种开发工具简单好用,且资料较多,且后续的开发我们可能会使用到Arduino开发板。
    I-002 智能家居系列--ESP8266环境搭建_第2张图片

3.1 软件介绍

界面大致分为四个部分:

  • 菜单栏:包含文件菜单、编辑菜单、程序菜单、工具菜单和帮助菜单;
  • 工具栏:包含编译、上传、新建程序(sketch)、打开程序(sketch)、保存程序(sketch)和串口监视器(Serial Monitor);
  • 编辑区:程序代码编写区域;
  • 状态区:显示程序编译和上传等信息。

3.2 环境搭建

1. 安装开发板编译器:打开arduino IDE —> 文件—>首选项
I-002 智能家居系列--ESP8266环境搭建_第3张图片
2.打开首选项,选择 附加开发板管理器网址, 添加第三方开发板管理器网址:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

I-002 智能家居系列--ESP8266环境搭建_第4张图片
3. Arduino IDE中,点击工具–>开发板–>开发板管理器
I-002 智能家居系列--ESP8266环境搭建_第5张图片
如果在配置时未发现需要的选项,请将软件重启。
4.打开开发板管理器,搜索"esp8266",点击安装
I-002 智能家居系列--ESP8266环境搭建_第6张图片
器件包一般都会安装失败:下载这个软件,直接双击安装即可。
5.将ESP8266插入电脑USB接口。
I-002 智能家居系列--ESP8266环境搭建_第7张图片
6.Arduino中选择工具–>开发板—>NodeMCU1.0
I-002 智能家居系列--ESP8266环境搭建_第8张图片
7.选择ESP8266连接的串口端口,可以查看自己设备管理器中具体连接的串口端口号
I-002 智能家居系列--ESP8266环境搭建_第9张图片

4 测试代码

/*
 *  本实验将教你如何将板子设定成HTTP服务器
 *  本服务器会依照接收到的信息去改变*引脚
 *  http://server_ip/gpio/0 会将脚位变成 低电压
 *  http://server_ip/gpio/1 会将脚位变成 高电压
 *  本服务器的ip会在序列号中显示
 */
 
#include
 
const char* ssid = "******";    //这里输入你家的WiFi名称
const char* password = "******";   //这里输入你家的WiFi密码
 
WiFiServer server(80);  //开启此板子的port80
 
//#define GPIO2 2   
 
void setup() {
  Serial.begin(115200);  //开启电脑的串口号,速度设为115200
  delay(10);
 
  pinMode(2,OUTPUT);      //将引脚2设为输出,就是板子上面D4的脚位
  digitalWrite(2,0);      //先将这引脚设为低电压
 
  //接下来板子开始要连线到你家的路由器了
  Serial.println();  //打印空格
  Serial.println();  //打印空格
  Serial.println("Connecting to ");  //打印连接到你家
  Serial.println(ssid); 
 
  WiFi.begin(ssid,password);  //使用你家的WiFi和密码开始连接路由器
 
  while(WiFi.status() != WL_CONNECTED){   //这是个无限循环,还没连线成功时会一直跳出点点
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("");// 连线成功之后会在这里,跳出连线成功
  Serial.println("WiFi connected");
 
  server.begin();  //服务器启动
  Serial.println("Server started");
 
  Serial.println(WiFi.localIP());  //列出此服务器被分配到的网络IP
}
 
void loop() {
  //确定是否连线中,不是的话就跳出去
    WiFiClient client = server.available();
  if(!client){
      return;
    }
//等待传到这个服务器的信息,一直等一直等
Serial.println("new client");
while(!client.available()){
    delay(1);
  }
 
// 收到传过来的信息之后,将收到的信息存入req
String req = client.readStringUntil('\r');
Serial.println(req);   // 打印收到的信息
client.flush();  
 
 
//开始比对收到的信息来决定作什么事
int val;
if (req.indexOf("/gpio/0") != -1)   //如果收到/gpio/0
  val = 0;
else if (req.indexOf("/gpio/1") != -1)   //如果收到/gpio/1
  val = 1;
else{
    Serial.println("invalid request");
    client.stop();
    return;
}
 
digitalWrite(2,val);   //依照收到的信息改变灯的亮暗
 
client.flush();
 
 
 // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n\r\n\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "\n";
 
  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");
}

5 后续会更新这边文章

欢迎一起讨论技术问题,求关注!

你可能感兴趣的:(7,物联网,单片机,嵌入式硬件,硬件架构,物联网,fpga开发)