Wemos D1 mini
-
NetAs
- Posts: 138
- Joined: Mon May 28, 2018 7:06 am
- Location: Wrocław
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.
-
John_Fajny
- Posts: 22
- Joined: Mon Mar 19, 2018 7:34 pm
- Location: Elbląg
wklej kod lub link do niego
-
NetAs
- Posts: 138
- Joined: Mon May 28, 2018 7:06 am
- Location: Wrocław
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);
}