ESP-01 Timer probléma ?

ESP8266, ESP32 chipek és az ESP-xx modulok. Programozási nyelvek, trükkök, hardware tippek.
ZsoltiD
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. november 20. vasárnap, 23:03

ESP-01 Timer probléma ?

HozzászólásSzerző: ZsoltiD » 2016. november 20. vasárnap, 23:29

Sziasztok!

Az egyik projektem megnézi a bemeneti feszültséget és az aktuális hőmérsékletet.
DS18B20 szenzort használok és egy LD33CV feszültségszabályzó IC-t. (Az adatokat rögzítem egy adatbázisban)

Igazából két probléma adódott, amik szerintem összefüggnek.
Első, hogy az ESP 3,072 Voltot mutat és 22,56 °C-ot, viszont multiméterrel mérve ez stabilan 3,300 V, és egy pontos hőmérőm is 20,50 °C-ot ír.
A második, hogy beállítottam 10 percet deep sleep módra, de az ESP kb 9 és fél perc után 'ébred'.

A legutosó firmwaret is próbáltam feltölteni (ESP8266_NONOS_SDK_2_0), de ez nem oldotta meg. :(

Ekkora hiba lehetslges a méréseknél?

Van esetleg ötletetek, hogy mi lehet a baj?

Kód: Egész kijelölése

// Including the ESP8266 WiFi library
#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>

// Replace with your network details
const char* ssid = "xxxxx";
const char* password = "yyyyy";
float min = 10;

int vcc;
float tempC;

// Enable ADC MODE for VCC scanning
ADC_MODE(ADC_VCC);

// Data wire is plugged into pin D1, GPIO 2
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature DS18B20(&oneWire);
char temperatureCString[6];
char temperatureFString[6];
const char* host = "xyxyxyxy.com";

// only runs once on boot
void setup() {
  // Initializing serial port for debugging purposes
  Serial.begin(115200);
  delay(10);

  // Display MAC Address
  String MAC_ADDR = WiFi.macAddress();

  // IC Default 9 bit.
  DS18B20.begin();
 
  // Connecting to WiFi network
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // Get actual VCC
  vcc = ESP.getVcc();
  delay(20);
 
  // last two bytes of the MAC (HEX'd) for the DB:
  uint8_t mac[WL_MAC_ADDR_LENGTH];
  WiFi.softAPmacAddress(mac);
  String macIDend = String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
                 String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);

  // Get temperature
  do {
    DS18B20.requestTemperatures();
    tempC = DS18B20.getTempCByIndex(0);
    dtostrf(tempC, 2, 2, temperatureCString);
    delay(100);
  } while (tempC == 85.0 || tempC == (-127.0));
 
  // Use WiFiClient class to create TCP connections
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort)) {
    Serial.println("connection failed");
    return;
  }
 
  // This will send the request to the server
  client.print(String("GET /insert_temp_logs.php?temp_id=" + macIDend +"&temp_val=" + temperatureCString +"&temp_vcc=" + vcc + "") + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
               
  Serial.print("Going to sleep.");
  //sleep and try again
  ESP.deepSleep(min * 60000000); //val * 1 min
}

void loop(void)
{
}

ZsoltiD
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. november 20. vasárnap, 23:03

Re: ESP-01 Timer probléma ?

HozzászólásSzerző: ZsoltiD » 2016. november 20. vasárnap, 23:50

Az összekötést elfelejtettem, hátha itt van a gond (a kinézet gagyi, de a célnak talán megfelel):

Kép

Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1023
Csatlakozott: 2009. február 28. szombat, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: ESP-01 Timer probléma ?

HozzászólásSzerző: SanyiSay » 2016. november 21. hétfő, 9:48

Üdv!

DS18B20 szenzor nálam is hoz érdekes értékeket.
Eleinte túl közel volt az ESP-hez ami eléggé melegszik ahhoz, hogy hozzáadjon a valós értékhez,
Kézi műszeremhez van hőmérő szenzor azzal gyorsan rámértem most, alapból 26 fok van ezt is mérte mindkettő szinte tized pontosan. Beállítottam a mérési sűrűséget 10 mp-re és a DS modul mérési értéke felment 29 fok fölé. Hozzányomtam a műszer hőmérőjét és így az is 29 et mutat, ha elhúzom 5 milire akkor visszaesik a műszer hőfok. Úgyhogy úgy néz ki hogy sűrű mérés közben a DS modul melegíti magát.
Programból, ha stabilak ezek az értékek szerintem ki lehet korrigálni könnyen.
Alapból fél óránként mérem a hőfokot itthon, így ez a malőr még nem jött ki.
Most futok mindenfelé, de ha hazaértem mérek még párat.


Feszmérést és sleep időzítést passzolom.

Két észrevétel ami csak az általános stabilitást javítja:
A loop ciklust nem érdemes üresen hagyni mert WDT reset lehet a vége. delay(0), vagy yield(), utasítást szoktak betenni.
Ugyanez igaz a while ciklusokra is. (a kódodban ezzel nincs gond) Amikor esetleg szervertől vársz választ vagy soros porton, vagy bármi amikor nem ismered a ciklus hosszát akkor okozhat ugyanígy gondot.

Kapcsolási rajz: Tennék még egy 100n-os zavarszűrőt a tápra mert azzal is okozhat bizonytalan működést.

http://esp8266.github.io/Arduino/versio ... -stability

ZsoltiD
Újonc
Újonc
Hozzászólások: 3
Csatlakozott: 2016. november 20. vasárnap, 23:03

Re: ESP-01 Timer probléma ?

HozzászólásSzerző: ZsoltiD » 2016. november 21. hétfő, 12:25

Köszi a gyors választ!
Kipróbálom akkor a kondit. Nem mértem mondjuk fél óránként, de 10 perc is sok időnek tűnik ahhoz, hogy jó legyen az érték.
Több ESP01-el is néztem, mindegyiknél kb ugyanennyi volt a hiba. (15 cm-re van az ESP-től, tehát az nem lehet gond)

Esetleg egy feszmérést ki tudnál íratni te is, hogy megnézzük, nálam van-e a hiba, vagy ez is korrigálásra szorul? :)

Avatar
SanyiSay
Elektronbűvölő
Hozzászólások: 1023
Csatlakozott: 2009. február 28. szombat, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: ESP-01 Timer probléma ?

HozzászólásSzerző: SanyiSay » 2016. november 21. hétfő, 14:50

Nem olvastam végig a DS18B20 adatlapját, de szerintem abba nem lehet beleszólni, mit és hogyan mérjen. Küldi a mért adatokat mindegy mivel dolgozod fel. Nem tudom lehet e küldeni neki konfiguráló értékeket, de ilyent még eddig nem olvastam mintakódokban.

Feszmérésre ránézhetnék, de az csak egy érték lesz, talán még kaotikusabb mint a hőmérés. Mert hát ugye nincs itthon semmi kalibrálva amivel ellenőrizhetném. Mérek valamit az ESP meg szintén mér valamit. ESP ADC-val meg csak ellenállás osztós kapcsoló sort csináltam oda pedig tökéletes volt a kb mérési eredmény. Nem ártana előtte egy kis ESP ADC alapokat átolvasni, tesztelgetni, tisztába lenni mit várok és mit várhatok egyáltalán, mielőtt precíziós műszert csinálnék az ESP-ből.


Vissza: “ExpressIf WiFi”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég