乐鑫技术交流
直播中

刘静

7年用户 1251经验值
私信 关注
[问答]

Huzzah ESP8622连接到Arduino Uno,Wifi未连接的原因?

大家好,
我正在为我所在地区的一些 hoophouse 蔬菜种植者做实习项目。他们有兴趣安装一个温度警报,让他们知道 hoophouse 何时变得太热或太冷,他们的 hoophouse 不在 wifi 和蓝牙范围内,他们希望在线查看数据并将温度警报发送到他们的手机以及。我的经验非常有限,但我想尝试去做。
我决定使用无线电发射器,因为 hoophouses 离房子不是很近。总体计划是将温度传感器(AHT20,但可能会切换到 SHT-30)连接到 Arduino Uno 和 RFM69HCW 无线电发射器,以将温度传输到房屋中的另一个 RFM69HCW,也连接到 arduino uno。当温度过低或过高时,压电蜂鸣器和红色 LED 会熄灭。
现在以上所有的都在工作。温度通过无线电传输,显示在房屋的液晶显示器上,如果太热或太冷,警报就会响起。(下面附上的代码是 wifi 问题的测试器,未附上当前的工作代码)。
我还想将此信息发送到 Thingspeak,以便可以跟踪数据,而且我还希望在人们的 hoophouse 过热或过冷时向他们的手机发送 SMS 警报。
我从 Adafruit 购买了一块 ESP8266 Huzzah 开发板,认为它适合 wifi 连接,并且可以连接到家里的 Arduino Uno(如果需要,我也有 FTDI 电缆)。Adafruit HUZZAH ESP8266 Breakout:ID 2471:9.95 美元:Adafruit Industries,独特有趣的 DIY 电子产品和套件
目前 Huzzah ESP8266 未连接到互联网。我的代码卡在“重新连接”上。发生这种情况时,ESP8266 上没有灯(蓝色或红色)。不过,Arduino UNO 上的 TX 和 RX 灯会熄灭。
我之前试着玩过 FTDI 和另一个程序,当我这样做时,ESP8266 上的蓝色和红色灯熄灭了。此外,我就在路由器旁边,我知道互联网运行良好,密码和 wifi 名称正确,路由器为 5 GHz,我读过的 ESP8266 是正确的。
我听说 arduino 接受命令,可能不会将其转发给 ESP8266,我认为这是我的问题,但我不确定如何解决。在较早的论坛帖子中,有人说移除 Uno 的 MCU,但我相信这会搞乱我的其他操作。
这就是我无法连接到 Wifi 的原因,是否有解决方法?
上传照片有问题,见附件)
注意:Huzzah ESP8266 有一个稳压器,所以我可以将 V+ 连接到 5V,而 Rx 是 5V 兼容的。我也试过 TX-RX,RX-TX。
根据另一个论坛上的建议,我还尝试将 Tx 和 Rx 连接到不同的数字引脚(6 和 7,因为 RFM68HCW 无线电发射器正在使用 2 和 3)。这导致了同样的“重新连接”问题。
Uno: --- ESP8266:
TX --- TX
Rx --- RX
5V --- V+
3.3V --- EN, RST
GND --- GND
注意:此代码仅用于测试 wifi 和连接与 Thingspeak。
我从这里获取了原始代码:ThingSpeak Arduino Weather Station - Arduino 项目中心,我没有将他们的 DHT 传感器代码切换到我的,以及其他一些东西,不过应该不会太难。我只需要先解决 wifi 问题。
代码:全选Serial.print(" nnn ");
  
  Serial.begin(9600);  //Start with baud 9600
  ESP8266.begin(9600);
  dht.begin();
  startTime = millis();
  ESP8266.println("AT+RST");
  delay(2000);
  Serial.println("Connecting to Wifi");
   while(check_connection==0)
  {
    Serial.print(".");
   ESP8266.print("AT+CWJAP=\"*******\",\"*************\"\r\n");
  ESP8266.setTimeout(5000);
if(ESP8266.find("WIFI CONNECTED\r\n")==1)
{
Serial.println("WIFI CONNECTED");
break;
}
times_check++;
if(times_check>3)
{
  times_check=0;
   Serial.println("Trying to Reconnect..");
  }
  }

  
}

void loop()
{
  
  waitTime = millis()-startTime;   
  if (waitTime > (writingTimer*1000))
  {
//    readSensors();
    writeThingSpeak();
    startTime = millis();   
  }
}


//void readSensors(void)
//{
  //temp_f = dht.readTemperature();
  //humidity = dht.readHumidity();
// temp_f = temp.temperature();
  //humidity = humidity.relative_humidity();
//}

void writeThingSpeak(void)
{

  float temp = 5; //faking sensor data to test wifi
  float humid = 6; //faking sensor data to test wifi
  
  startThingSpeakCmd();
  // preparacao da string GET
  String getStr = "GET /update?api_key=";
  getStr += myAPIkey;
  getStr +="&field1=";
  getStr += String(temp);
  getStr +="&field2=";
  getStr += String(humid);
  getStr += "\r\n\r\n";
  GetThingspeakcmd(getStr);
}

void startThingSpeakCmd(void)
{
  ESP8266.flush();
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += "184.106.153.149"; // api.thingspeak.com IP address
  cmd += "\",80";
  ESP8266.println(cmd);
  Serial.print("Start Commands: ");
  Serial.println(cmd);

  if(ESP8266.find("Error"))
  {
    Serial.println("AT+CIPSTART error");
    return;
  }
}

String GetThingspeakcmd(String getStr)
{
  String cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());
  ESP8266.println(cmd);
  Serial.println(cmd);

  if(ESP8266.find(">"))
  {
    ESP8266.print(getStr);
    Serial.println(getStr);
    delay(500);
    String messageBody = "";
    while (ESP8266.available())
    {
      String line = ESP8266.readStringUntil('\n');
      if (line.length() == 1)
      {
        messageBody = ESP8266.readStringUntil('\n');
      }
    }
    Serial.print("MessageBody received: ");
    Serial.println(messageBody);
    return messageBody;
  }
  else
  {
    ESP8266.println("AT+CIPCLOSE");     
    Serial.println("AT+CIPCLOSE");
  }
}


代码:全选12:55:21.090 -> ⸮  Connecting to Wifi
12:55:24.654 -> ....Trying to Reconnect..
12:55:44.774 -> ....Trying to Reconnect..
12:56:04.923 -> ....Trying to Reconnect..
12:56:25.087 -> ....Trying to Reconnect..
12:56:45.223 -> .


更多回帖

发帖
×
20
完善资料,
赚取积分