ESP01上传不了,也链接不上WIFI.-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2671|回复: 2

[未解决] ESP01上传不了,也链接不上WIFI.

[复制链接]
发表于 2021-5-26 14:17 | 显示全部楼层 |阅读模式
本帖最后由 rh902999 于 2021-5-26 14:18 编辑

ESP01上传不了,也链接不上WIFI.


#include <SCoop.h>//引入头文件
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <DS1302.h>
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>  
#include <Adafruit_BMP280.h>
#include <dht11.h>
#include <SoftwareSerial.h>


dht11 DHT11;
SoftwareSerial esp8266(5, 6);        //(rx,tx),声明WIFI
#define DHT11PIN 4
#define BMP_SCK 13  
#define BMP_MISO 12
#define BMP_MOSI 11
#define BMP_CS 10
Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
DS1302 rtc(9, 8, 7); // RST, DAT, CLK
#define ONE_WIRE_BUS A0 //数据总线
OneWire oneWire(ONE_WIRE_BUS); //声明
DallasTemperature sensors(&oneWire); //声明
int x5 = A5;
String  outa="";    //读取温度值存入变量
String  outb="";    //读取时间值存入变量
String  outc="";    //读取气压值存入变量
String  outd="";    //读取海拔值存入变量
String  oute="";    //占用
String  outf="空";  //空
String  outh="";    //湿度

//WIFI变量
String AP = "padavan-2x";   
String PASS = "12345678";
String Data;
int countTrueCommand;
int countTimeCommand;
boolean found = false;
//WIFI变量

void setup() {
   mySCoop.start();
   pinMode(x5, OUTPUT);
   Serial.begin(9600);


  sensors.begin(); //初始化总线
  sensors.setWaitForConversion(false); //设置为非阻塞模式


}


void loop()
{
   yield();
}


defineTaskLoop(Task1)//水泵
{

  digitalWrite(x5, HIGH);   // 点亮
    sleep(3600000);             // 等待
  digitalWrite(x5, LOW);   // 通过将引脚电平拉低,关闭
    sleep(10000);            // 等待

   }

defineTaskLoop(Task2)//温度
{

    float tempC = sensors.getTempCByIndex(0); //获取索引号0的传感器摄氏温度数据
    if (tempC != DEVICE_DISCONNECTED_C)       //如果获取到的温度正常
    {
      Serial.print("\n当前温度是: ");
      Serial.print(tempC);
      Serial.println(" ℃");
    }

    //Serial.println("发起温度转换");
    sensors.requestTemperatures(); //发起新的温度转换
    //Serial.print(tempC);  //打印当前温度值
    //outa=String(tempC)+"℃";
     outa=String(tempC)+"℃";
     sleep(1000);


   }

/*

defineTaskLoop(Task3)//时间
{


  outb=String(rtc.getDateStr(FORMAT_LONG, FORMAT_LITTLEENDIAN, '-'))+"-"+String(rtc.getTimeStr());
  delay(1000);

   }

*/


defineTaskLoop(Task4)//大气压
{

   if (!bmp.begin())
   {  
    Serial.println(F("找不到对应的传感器"));
    while (1);
  }
  /*
    Serial.print(F("温度 = "));

    Serial.print(bmp.readTemperature());

    Serial.println(" *C");



    Serial.print(F("气压 = "));

    Serial.print(bmp.readPressure());

    Serial.println(" Pa");



    Serial.print(F("海拔 = "));

    Serial.print(bmp.readAltitude(1013.25));

    Serial.println(" m");

    */
   oute=String(Serial.print(F("")));
   outc=String(bmp.readPressure())+"Pa";
   outd=String(bmp.readAltitude(1013.25))+"m";

    delay(1000);

   }

  defineTaskLoop(Task5)//湿度
{

  int chk = DHT11.read(DHT11PIN);
  switch (chk)
  {
    case DHTLIB_OK:
    Serial.println("OK");
    break;
    case DHTLIB_ERROR_CHECKSUM:
   // Serial.println("Checksum error");
    break;
    case DHTLIB_ERROR_TIMEOUT:
   // Serial.println("Time out error");
    break;
    default:
   // Serial.println("Unknown error");
    break;
  }

  // 获取测量数据
   outh=String(((float)DHT11.humidity, 2));
   delay(1000);
}

  defineTaskLoop(Task6)//上传
{

  esp8266.begin(115200);
  sendCommand("AT", 5, "OK");
  sendCommand("AT+CWMODE=1", 5, "OK");
  sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK");
  Data = "GET /crzz.php?aa="+outh+"&ab="+outd+"&ac="+outc+"&ad="+outb+"&ae="+outa;
  sendCommand("AT+CIPMUX=1",5,"OK");
  sendCommand("AT+CIPSTART=0,\"TCP\",\"192.168.10.204\",80",4,"OK");
  sendCommand("AT+CIPSEND=0," +String(Data.length()+4),2,">");
  esp8266.println(Data);
  delay(1000);
  countTrueCommand++;
  sendCommand("AT+CIPCLOSE=0",2,"OK");
  }


void sendCommand(String command, int maxTime, char readReplay[]) {
  Serial.print(countTrueCommand);
  Serial.print(". at command => ");
  Serial.print(command);
  Serial.print(" ");
  while (countTimeCommand < (maxTime * 1))
  {
    esp8266.println(command);//at+cipsend
    if (esp8266.find(readReplay)) //ok
    {
      found = true;
      break;
    }

    countTimeCommand++;
  }

  if (found == true)
  {
    Serial.println("Yes");
    countTrueCommand++;
    countTimeCommand = 0;
  }

  if (found == false)
  {
    Serial.println("Fail");
    countTrueCommand = 0;
    countTimeCommand = 0;
  }

  found = false;
  }

发表于 2021-5-26 16:57 | 显示全部楼层
本帖最后由 myself1820 于 2021-5-26 16:58 编辑

没看到yield(); 这个程序,不好判断
 楼主| 发表于 2021-5-26 17:46 | 显示全部楼层
#include <SCoop.h>//引入头文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 05:32 , Processed in 0.085487 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表