0

目标:使用 Arduino IDE 通过 ESP8266 将两个整数值从 Arduino Nano 发送到互联网

我是嵌入式编程的新手,目前正在从事一个项目,该项目通过 esp8266 将一些整数值从 Arduino 模拟引脚发送到在线数据库(IP 地址、端口)。

此刻我知道如何将数据从 ESP8266 单独发送到 IP,使 ESP 保持客户端模式。但我不知道如何将 Arduno Nano 生成的数据传输到 ESP8266。

#include <ESP8266WiFi.h>
#include<Wire.h>

const char *ssid = "SSID";
const char *password = "asdfghjkl";

const char* host = "192.222.43.1";
int portNum = 986;

WiFiClient client;
WiFiServer server(portNum);

void setup() {
  Serial.begin(115200);
  Wire.begin();
  delay(10);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("WIFI OK");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  Serial.println("Connected to Wifi");
}

String message="";

void loop() {  
message = "12,13"; // Message to be sent to ESP8266

  if(!client.connected())
      {
        client.connect(host,portNum);
      }
      if(message.length()>0)
      {
        Serial.println(message);
        client.println(message);

        message="";
    }

我可以理解我必须连接 Arduino - ESP 的 TX-RX 引脚才能传递数据。但由于某种原因,我无法使其工作。

如果有人可以通过一个简单的示例帮助我理解该过程,我将不胜感激。

谢谢。

PS:我必须使用 Arduino 的原因是因为我使用的传感器需要 2 个模拟引脚,而 ESP 只有 1 个。

4

2 回答 2

1

您将 Arduino Tx 连接到 Esp Rx

您将 ESP Tx 连接到您的串行设备到您的 PC(这样您就可以在终端窗口中读取来自 ESP 的消息)

在 ESP 上,您使用已加载的 Wire 库。

您使用 Serial 对象来侦听 ESP 的 Rx 引脚上的传入数据。

void loop()
{
     while (Serial.available()) 
     {
         Do something;
     }
}

这与 Arduino 到 Arduino 串行通信完全相同,这里有一个很好的教程: Arduino to Arduino comms

警告:ESP 使用 3.3V,而 Arduino 在 Tx 和 Rx 引脚上使用 5V。不得让 5v 到达 ESP 的引脚,否则可能会烧坏。

本教程显示了安全接线图。 安全接线图

于 2016-11-27T16:57:54.060 回答
-1

1)试试这个样本:看起来不错的简单样本

2)您的循环函数存在逻辑问题 a)您的消息将尽快发送出去,因为在您离开循环函数后,您将再次进入该函数 b)您不等待传入的数据

我希望示例有所帮助:我没有尝试过,因为我直接使用了 AT 命令。

于 2016-11-27T22:19:18.820 回答