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,效果都是一样的。

 

 

 

硬件设备:

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

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

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

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

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

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

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

 

 

 

 

 

您可以使用ESP8266模块作为WiFi模块,将其与Arduino一起使用,通过手机ESP8266模块进行通信。以下是一些基本的步骤: 1. 安装Arduino IDE和ESP8266库。在Arduino IDE中,选择“文件”>“首选项”并在“附加开发板管理器网址”中添加“http://arduino.esp8266.com/stable/package_esp8266com_index.json”。然后,选择“工具”>“开发板”>“开发板管理器”,搜索“esp8266”并安装相应的库。 2. 连接ESP8266模块到Arduino。将ESP8266模块连接到Arduino的串口(RX-TX)引脚,以便它可以通过串口与Arduino通信。还需要将ESP8266的GPIO0引脚连接到Arduino的地引脚,以便可以将其放入固件更新模式。 3. 编写Arduino代码。使用Arduino IDE编写代码来控制ESP8266模块和与手机通信。您可以使用ESP8266WiFi库来配置ESP8266模块的WiFi连接,并使用Serial库来与ESP8266模块进行通信。 4. 编写手机应用程序。使用您选择的移动应用程序开发框架(如React Native或Flutter)编写应用程序,以便它可以通过WiFi与ESP8266模块进行通信。您可以使用HTTP请求或WebSocket通信协议来与ESP8266模块进行通信。 5. 测试通信。将ArduinoESP8266模块连接到计算机,并上传您的Arduino代码。将ESP8266模块与WiFi网络连接,并使用您的手机应用程序与其进行通信。测试通信是否正常。 希望这可以帮助您开始使用手机ArduinoESP8266进行通信!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值