Forum użytkowników automatyki budynkowej
Inne => Rasberry, Arduino, ESP8266, mikrokontrolery => Wątek zaczęty przez: wjacek w Marzec 24, 2015, 11:07:25 pm
-
Działa mi bardzo niestabilnie, korzystam z oficjalnych nodeMcu może ktoś ws/pomoże ?
-
W LUA, trybie modemowym AT czy w SDK ?
-
U mnie wygląda na zasilanie, jak rozpracuje to się odezwę.
-
richo LUA nodeMcu
-
Rysiek, z tego co mówiłeś masz opracowane i działające DS18B20 pod nodeMcu lua.
Podziel się.
-
Tego że mam rozpracowane to nigdzie nie mówiłem, ale na początku przygody z ESP odpaliłem podstawowe skrypty i zadziałały a potem to zostawiłem bo szukałem większych wyzwań ;-)
Postaram się to odgrzebać i opublikować.
-
Zakładam że przyczyna jest typowo elektryczna - z czego zasilasz esp8266? Czy na zasilaniu masz co najmniej kondensator 100nF + minimum 10uF? Czy dałeś pull-up 4k7 pomiędzy linią 1-wire a VCC?
Pozdrawiam,
Patryk
-
Odpaliłem układ na płytce prototypowej z zasilaniem 3,3V stabilizowanym.
Nawet bez pull-up działa bez problemów od paru godzin.
Podłączenie jak na załączonym obrazku.
Na czym polega u Ciebie niestabilność?
-
Podejrzewam że u mnie to jednak zasilanie lub oprogramowanie.
Odpowiadając na pytania: mam kondensatory filtrujące, mam rezystor pull-up.
Niestabilność to start co 2 uruchomienie oraz reset co klika godzin.
Proszę dajcie swoje kody źródłowe działające stabilnie.
-
ten działa stabilnie :
https://github.com/ok1cdj/ESP8266-LUA/tree/master/Thermometer-DS18B20-Thingspeak (https://github.com/ok1cdj/ESP8266-LUA/tree/master/Thermometer-DS18B20-Thingspeak)
-
Potwierdzam co napisał sztywniak apropo kodu. Zmieniłem tylko kawałek kodu sendData bo mi głupoty pokazywał po przecinku:
function sendData()
getTemp()
t1 = lasttemp / 10000
--t2 = (lasttemp >= 0 and lasttemp % 10000) or (10000 - lasttemp % 10000)
--print("Temp:"..t1 .. "."..string.format("%04d", t2).." C\n")
--ts=t1 .. "."..string.format("%04d", t2)
ts=string.format("%6.2f", t1)
print("Temp:"..ts.." C\n")
print("mem: "..node.heap())
-- conection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
-- api.thingspeak.com 184.106.153.149
conn:connect(80,'184.106.153.149')
conn:send("GET /update?key=XXXXXXXXXXXXX&field1="..ts.." HTTP/1.1\r\n")
conn:send("Host: api.thingspeak.com\r\n")
conn:send("Accept: */*\r\n")
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
conn:on("sent",function(conn)
print("Closing connection")
conn:close()
end)
conn:on("disconnection", function(conn)
print("Got disconnection...")
end)
end
natomiast odkryłem dzisiaj przedziwną rzecz. Moje wszystkie DS18B20 kupione w Fibaro działaja w tym układzie bez problemu a takie same (inne nry seryjne) 4 szt kupione w Botlandzie wskazują temp -0.1 czyli jakby ich ESP w ogóle nie widział !?
Czary mary czy co...
-
Upewnij się czy są to ds1820 czy ds18b20 - mają inną ramkę danych
-
Sęk w tym, że muszę sobie dokupić drugie oczy powiększające żeby to odczytać ;)
Dzięki za podpowiedz .
Edit:
Sprawdziłem pod lupą i wszystkie są DS18B20 !
A teraz taka ciekawostka. Wywaliłem z kodu publikowanie na Think Speak i zacząłem testy z różnym zasilaniem.
Okazało się, że te Dallasy, które kupiłem w Botlandzie wymagają 4k7 pull-up i zaczęły działać ! Te z Fibaro nie potrzebowały pull-up.
Niestety jak dołożyłem ponownie kod do publikowania na ThSpeak to znowu zdechły jakby ESP ich w ogóle nie widział nawet z pull-up.
Zaczynam dochodzić do wniosku że to ESP jeśli chodzi o niestabilność to przebija ulubione Fibaro :-(
-
No cóż z tym ESP mozna świra dostać.
Okazało się, że na odczytanie stanu Dallasów z Botlandu procek potrzebuje tylko więcej czasu. Wystarczyło wywalić wywołanie getTemp() z początku funkcji sendData() i przenieść je do timera i wszystkie Dallasy hulają nawet bez 4k7 pull-up :)
za funkcją getData() umieszczamy tylko kod:
--initiate DS18b20
getTemp()
-- send data every X ms to thing speak
tmr.alarm(0, 30000, 1, function()
getTemp()
sendData()
end )
Co ciekawe sprawdziłem co sie dzieje jak mamy więcej Dallasów na jednej linii. Program dalej działa i dzięki temu możemy sobie stworzyć średnią z np 2 Dallasów do poprawy dokładności pomiaru.
Muszę się napić piwa bo sie spociłem przy tej robocie :P
-
ten działa stabilnie :
https://github.com/ok1cdj/ESP8266-LUA/tree/master/Thermometer-DS18B20-Thingspeak (https://github.com/ok1cdj/ESP8266-LUA/tree/master/Thermometer-DS18B20-Thingspeak)
Panowie wreszcie trafilem na polskie forum gdzie mozna poczytac o esp8266
Mam problem
Potrzebuje wysylac dane na thingspeak i nic mi z tego nie wychodzi
Probuje wlasnie te wsady o ktorych mowa w watku
Dopisalem swoj write key
W programie ESPlorer pokazuje mi ze niby wysyla dane do thingspeak ale na stronie nie widac zmian
Panowie pomozcie bo juz nie mam sily
Pisalem po roznych zagranicznych forach i nic
-
Wgralem dzisiaj najnowszy bin 0.9.6
Wysyla dane do thingspeak ale temperatura jest z kosmosu Temp:-0.0999.0999 C
Co z tym dalej moze zrobic?
-
Trzeba wgrać starsze oprogramowanie 0.9.5 i będzie pokazywało normalnie.