Arduino+ESP8266手机控制小灯亮灭及常见问题

       最近在接触Arduino和ESP8266模块,比较基础的就是运用Arduino IDE软件、ESP8266模块和一款手机软件来控制8266测试板上的小灯亮灭。

项目软件:

Arduino IDE软件

下载地址:http://arduino.cc/en/Main/Software

手机APP (ios系统)

我用的ios系统中似乎不太方便下载netorch网络调试助手,所以我直接在App Store里下载了一个UDP/TCP/REST,效果都是一样的。

 Arduino+ESP8266手机控制小灯亮灭及常见问题

 

 

硬件设备:

1.ESP8266模块(种类很多,我用的是物联网测试板带-CH340G)

      我这个测试板带里自带CH340,如果大家之前使用过51单片机的话,电脑里应该都有CH340的驱动,就不用重复安装了。

2.一根usb数据线(一定要具备传输数据的功能,不能只有供电作用)

3.一台笔记本电脑(我的是windows10系统)

Arduino+ESP8266手机控制小灯亮灭及常见问题

Arduino程序


/*这篇把8266作为TCPcleint,加入手机创建的tcpServer中来控制一个继电器*/

#include <ESP8266WiFi.h>

const char *ssid     = "WIFI_NAME";//这里是我的wifi,你使用时修改为你要连接的wifi ssid
const char *password = "WIFI_PASSWORD";//你要连接的wifi密码
const char *host = "192.168.*.*";//修改为手机的的tcpServer服务端的IP地址,即手机在路由器上的ip
WiFiClient client;
const int tcpPort = 8266;//修改为你建立的Server服务端的端口号

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");//写几句提示
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)//WiFi.status() ,这个函数是wifi连接状态,返回wifi链接状态
    //这里就不一一赘述它返回的数据了,有兴趣的到ESP8266WiFi.cpp中查看
  {
    delay(500);
    Serial.print(".");
  }//如果没有连通向串口发送.....

  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());//WiFi.localIP()返回8266获得的ip地址
}


void loop()
{
  while (!client.connected())//几个非连接的异常处理
  {
    if (!client.connect(host, tcpPort))
    {
      Serial.println("connection....");
      //client.stop();
      delay(500);
    }
  }
  while (client.available())//available()同ARDUINO,不解释了
  {
    char val = client.read();//read()同arduino
    if (val == 'a') { //pc端发送a和b来控制
      digitalWrite(LED_BUILTIN, HIGH);
      client.write("已关灯");
    }
    if (val == 'b')
    {
      digitalWrite(LED_BUILTIN, LOW);
      client.write("已开灯");
    }
  }
}

 这是我参考另一位博主的代码,非常通俗易懂可操作,其中需要大家修改的部分就是ssid:修改为自己手机热点名称,password:修改为手机热点密码,host修改为手机APP中显示的server端ip地址,tcpport修改为手机APP中server端口号。到这里程序部分就不用改动。

常见问题!!!

编译时出现No such file or directory

这是我第一次编译时出现的问题,也是非常困扰,在csdn上参考了四五篇文章最终得以解决。

我总结的解决步骤就是:

1.https://arduino.esp8266.com/stable/package_esp8266com_index.json

将上述网址复制到Arduino IDE中文件->首选项->附加开发板管理网址中,点击“好”

2.点击工具->管理库->搜索esp8266,下载库,在线下载会很慢,甚至会连续出现很多错误导致下载不了,这里我重复了很多次未能解决,然后试了试下载之前的版本(也没必要下载最新版本),最后很成功。

3.如何检查是否下载成功?

可以点开工具,下载成功的话开发板一栏可以选择Deneric ESP8266 Module,这就代表下载成功,然后点击编译,上传至ESP8266板子就可以了。

手机软件调试:

1.打开个人热点,让ESP8266连接成功。前提是程序中你得修改上述部分内容

2.打开TCP调试app

Arduino+ESP8266手机控制小灯亮灭及常见问题

3.在server端检查ip与port是否与程序中一致,一致后可以在发送栏输入a(关闭),b(打开)来测试小灯。

祝大家好运!,如有侵权,请联系我删除。谢谢大家。

 

 

 

 

 

上一篇:超声波模块测距 Arduino代码


下一篇:Arduino UNO + 74HC595+数码管实现0-9循环计数显示+ Proteus仿真