Wemos D1 mini

NetAs
Posts: 138
Joined: Mon May 28, 2018 7:06 am
Location: Wrocław

Post

Mam problem z Wemos D1 mini, nie tylko na 1 sztuce ale już testowałem na kilku, zawsze to samo. Otóż, soft napisany w Arduino, wgrany do Wemos-a, działa jak należy przez 4 dni, potem się zawiesza. Pomaga wyłączenie z prądu i ponowne włączenie i znów działa przez ok 4 dni. Nie wiem od czego to może być zależne, jakby jakiś licznik działał z Wemosie że jak osiągnie jakiś limit to zwiecha. Wemos ma podłączone 3 termometry ds18b20 pod jeden Dx - nie pamiętam który. Wyczytałem na innym forum że może to być przyczyna zasilania, ale na tej samej płytce, tym samym zasilaczu wgrany soft zybiego 2.5.3 i działa bez zarzutu 2 tygodnie non stop. Podejrzewam, że to język arduino może coś nie do końca kompiluje oprogramowanie lub jakieś funkcje tam użyte powodują takie zwiechy. Może ktoś miał podobny przypadek i wie o co chodzi? Wyłączyłem podgląd SERIAL przez COM, bo też wyczytałem że to może powodować ale nic to nie pomogło.
User avatar
John_Fajny
Posts: 22
Joined: Mon Mar 19, 2018 7:34 pm
Location: Elbląg

Post

wklej kod lub link do niego
NetAs
Posts: 138
Joined: Mon May 28, 2018 7:06 am
Location: Wrocław

Post

Code: Select all

#include <DallasTemperature.h>
#include <OneWire.h>
#include <ThingSpeak.h> 
#include <ESP8266WiFi.h>

#define ONE_WIRE_BUS D4                          
#define TEMPERATURE_PRECISION 9                  

unsigned long myChannelNumber = ****;            
const char* myWriteAPIKey = "*****";  //dane ukryte
const char* ssid     = "*****";          
const char* password = "******";      

DeviceAddress tank_out  = { 0x28, 0xFF, 0x5C, 0x94, 0x31, 0x18, 0x01, 0xA2 };
DeviceAddress tank_in   = { 0x28, 0xFF, 0x76, 0x33, 0x31, 0x18, 0x02, 0x2A };
DeviceAddress solar_out = { 0x28, 0xFF, 0x25, 0x21, 0x31, 0x18, 0x02, 0xCE };

int updatePeriod = 300;                           

int status = WL_IDLE_STATUS;
WiFiClient  client;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {  
  WiFi.begin(ssid, password);
  
  ThingSpeak.begin(client);
  sensors.begin();
  sensors.setResolution(tank_out, TEMPERATURE_PRECISION);
  sensors.setResolution(tank_in, TEMPERATURE_PRECISION);
  sensors.setResolution(solar_out, TEMPERATURE_PRECISION); 
}

void loop() {
  
  sensors.requestTemperatures(); //Pobranie temperatury czujnika
  float temp1=sensors.getTempC(tank_out);
  ThingSpeak.setField(1,temp1);
  
  float temp2=sensors.getTempC(tank_in);
  ThingSpeak.setField(2,temp2);
  
  float temp3=sensors.getTempC(solar_out);
  ThingSpeak.setField(3,temp3);

  ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
  delay(updatePeriod * 1000);
}
Aplikacja mierzy tylko temperature z 3 czujników DS18B20 i wysyła je do thingSpeak-a. Dodam że czujniki są na przewodach podłączone do D4 bez rezystora, choć nie wiem czy to ma znaczenie.

Return to “Pomoc”