目标:使用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-RX引脚 - ESP来传递数据。但由于某种原因,我无法使其发挥作用。
如果有人能用一个简单的例子帮我理解这个过程,我真的很感激。
感谢。
PS:我必须使用Arduino的原因是因为我使用的传感器需要2个模拟引脚而ESP只有1个。
答案 0 :(得分: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,Arduinos在Tx和Rx引脚上使用5V。您不得让5v到达ESP的引脚,否则它可能会烧坏。
本教程显示了一个安全的接线图。 safe wiring diagram
答案 1 :(得分:-1)
1)试试这个样本:simple sample that looks good
2)循环函数中存在逻辑问题 a)您的信息将尽快发送出去,因为在您离开循环功能后,您将再次输入该功能 b)您不等待传入数据
我希望样本有所帮助:我没有尝试过,因为我直接使用AT命令。