| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Ik heb die bovenste en nooit problemen met ESP8266 of Arduino Pro Mini.... Toeval?Verwijderd schreef op zondag 05 april 2015 @ 20:59:
waarschijnlijk heb je er 1 met een nep FTDI chip
heb er hier ook een paar liggen.
deze werken wel goed
[afbeelding]

Dingetje komt van eBay, dus fat chance dat er een nep-FTDI op zit
Die bovenste ziet eruit zoals mijn niet werkende kloon. Er komen weer nieuwe aan, een er is er al halverwege China en NL, ziet er hetzelfde uit, en hopelijk werkt die wel. En dan zijn er nog twee in bestelling vanuit de link van borroz. Het gaat nu vast goed komen, alleen nog "even" wachten tot het binnen is.ThinkPadd schreef op maandag 06 april 2015 @ 16:50:
[...]
Ik heb die bovenste en nooit problemen met ESP8266 of Arduino Pro Mini.... Toeval?![]()
Dingetje komt van eBay, dus fat chance dat er een nep-FTDI op zit
Verwijderd
eerder mazzelThinkPadd schreef op maandag 06 april 2015 @ 16:50:
[...]
Ik heb die bovenste en nooit problemen met ESP8266 of Arduino Pro Mini.... Toeval?
Probleem vergelijkbaar met dit: YouTube: WP 20150215 001?wauwwie schreef op maandag 06 april 2015 @ 17:17:
Die bovenste ziet eruit zoals mijn niet werkende kloon. Er komen weer nieuwe aan, een er is er al halverwege China en NL, ziet er hetzelfde uit, en hopelijk werkt die wel. En dan zijn er nog twee in bestelling vanuit de link van borroz. Het gaat nu vast goed komen, alleen nog "even" wachten tot het binnen is.
Ik heb ook dat bovenste model en mijn ESP kreeg ik ook niet goed geprogrammeerd. Ik heb inmiddels een nieuwe FTDI kabel en ESP besteld om te kijken wat nu echt het probleem is. ESP natuurlijk ook om nog meer leuke dingen te kunnen maken. Er is ook nog een OLED schermpje onderweg.
[ Voor 6% gewijzigd door somers1234 op 06-04-2015 18:37 ]
Dan heb ik ook mazzel, had er 3 besteld en alle 3 werken zoals verwacht... Zijn meer de ESP's die het begeven.
Verwijderd
als die op de arduino ook niet werkt kan je er van uitgaan dat het een nep FTDI chip betreft en derhalve werkt de driver niet, printje kan er best prima uitzien verder.cyberde schreef op maandag 06 april 2015 @ 18:48:
[...]
Dan heb ik ook mazzel, had er 3 besteld en alle 3 werken zoals verwacht... Zijn meer de ESP's die het begeven.
persoonlijk heb ik FTDI op mijn boycot list heb gezet na hun killer driver update .. absoluut NOT DONE
vandaar dus de CH340 usb serial .. werkt prima.
Precies hetzelfde probleem met dezelfde foutmelding. En zo te zien ook met dezelfde FTDI programmer.somers1234 schreef op maandag 06 april 2015 @ 18:34:
[...]
Probleem vergelijkbaar met dit: YouTube: WP 20150215 001?
Ik heb ook dat bovenste model en mijn ESP kreeg ik ook niet goed geprogrammeerd. Ik heb inmiddels een nieuwe FTDI kabel en ESP besteld om te kijken wat nu echt het probleem is. ESP natuurlijk ook om nog meer leuke dingen te kunnen maken. Er is ook nog een OLED schermpje onderweg.
Ik had eerst ook problemen met het flashen. Voor mij was de oplossing om een externe voeding te gebruiken voor de esp en de gnd van de voeding te verbinden met de gnd van de ftdi. Ik kan niet goed zien of jij een externe voeding gebruikt. Zo niet, probeer het eens.wauwwie schreef op maandag 06 april 2015 @ 20:32:
[...]
Precies hetzelfde probleem met dezelfde foutmelding. En zo te zien ook met dezelfde FTDI programmer.
PSN: PcDCch
Ik heb een vraag. Ik gebruik de dht22 maar kwam erachter dat hij beter op 5v werkte en hij last heeft van de esp8266, als hij er vlak bij staat (vaak foute readings etc).
Nu dacht ik dan maar de SI7021 een i2c temperatuur en luchtvochtigheidsensor, iets duurder maar wel beter, hoop ik.
Ik heb uit de github de ti7021.lua gehaald,
Nu werkt het en krijg de volgende waardes,
Humidity: 52.602564697266 %
Temperature: 20.808916015625 C
Maar ik wil ze maar met 1 cijfer achter de komma, enig idee hoe ik dat kan doen
Hier het script at ik gebruik
tmr.alarm(0, 60000, 1, function()
SDA_PIN = 3 -- sda pin, GPIO0
SCL_PIN = 4 -- scl pin, GPIO2
si7021 = require("si7021")
si7021.init(SDA_PIN, SCL_PIN)
si7021.read(OSS)
h = si7021.getHumidity()/100
t = si7021.getTemperature()/100
-- pressure in differents units
print("Humidity: "..(h).." %")
-- temperature in degrees Celsius and Farenheit
print("Temperature: "..(t).." C")
-- release module
si7021 = nil
package.loaded["si7021"]=nil
end)
Hint #1 zijn deze twee regels in je code:
1
2
| h = si7021.getHumidity()/100 t = si7021.getTemperature()/100 |
Hint #2: In nodeMCU op de ESP8266 is de 'math.round' functie niet beschikbaar en zul je het dus anders moeten oplossen.
[ Voor 10% gewijzigd door ThinkPad op 06-04-2015 22:28 ]
Verwijderd
-- pressure in differents unitskroonen schreef op maandag 06 april 2015 @ 22:22:
Hoi,
Nu werkt het en krijg de volgende waardes,
Humidity: 52.602564697266 %
Temperature: 20.808916015625 C
h2 = tonumber(string.format("%." .. (1) .. "f", h))
print("Humidity: "..(h2).." %")
-- temperature in degrees Celsius and Farenheit
t2 = tonumber(string.format("%." .. (1) .. "f", t))
print("Temperature: "..(t2).." C")
- bron:
- http://lua-users.org/wiki/SimpleRound
- http://www.lua.org/manual/5.1/manual.html#pdf-string.format
- http://lua-users.org/wiki/SampleCode
[ Voor 13% gewijzigd door Verwijderd op 07-04-2015 07:51 ]
Bedankt dat is precies wat ik zocht. Bedankt. Nu kan ik gaan kijken of de si7021 stabieler is als de dht22 voor temperatuur en luchtvochtigheid metingen.
update:
- ok, dus niet voeden met de Arduino 3v3, niet genoeg mA kennelijk
- RX/TX niet 5v tolerant, dus 74hc4050 er tussen voor de TX
Nog meer?
[ Voor 39% gewijzigd door RobV op 09-04-2015 19:43 ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Hiervoor heb ik een "Part 8" van op mijn blog geschreven! Deze kun je hier vinden.
Nog eventjes een plaatje van hoe het er nu uit ziet!

Je kunt ze weer bestellen via DirtyPCB's!
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Verwijderd
geduld en stalen zenuwen
-
uiteraard afhankelijk hoe je ermee gaat werken, maar als je met node MCU /LUA aan de slag gaat is het handig om altijd een bootstrap te gebruiken.
init.lua :
tmr.alarm(0,3000,0,function() dofile("init2.lua") end)
(dit start timer 0 voor 3 seconden.. dus alstie 'hangt en je reboot kan je hier er nog uit)
en dan je actuele code in init2.lua proppen
op die manier kan je hem altijd onderbreken, zoniet moet je regelmatig node MCU opnieuw flashen wanneer er een fout in je code zit.
[ Voor 64% gewijzigd door Verwijderd op 10-04-2015 11:43 ]
oh dear...
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
En een goed werkende FTDI programmer....
Verder was/is al mijn ander spul 5V. Was goed opletten welke breadbord met DC/DC converter er op 3,3V en welke op 5V ingesteld stond. Vooral met troubleshooten op de defecte FTDI heb ik per ongeluk een ESP8266 aan de 5V gehangen

Ik heb jouw ontwerp gisteravond besteld. Past jouw ontwerp met onderdelen in een BMD60014 behuizing? Ik heb je de vraag ook in de PM gesteld, maar nu hebben meer mensen wat aan je antwoordQuindor schreef op vrijdag 10 april 2015 @ 01:27:
Ik heb de v2 van mijn QuinLED dimmer nu al eventjes in gebruik en deze werken tot nu toe allemaal perfect. Het WiFi signaal is ook top, dus ik voel me comfortabel om alles te delen.
Hiervoor heb ik een "Part 8" van op mijn blog geschreven! Deze kun je hier vinden.
Nog eventjes een plaatje van hoe het er nu uit ziet!![]()
[afbeelding]
Je kunt ze weer bestellen via DirtyPCB's!

Hele tijd maar foto's online plaatsen maar niks meer bekend maken... Waarom?
Kwalitatief blaten
Super gaaf zeg! Ik heb met veel plezier je serie op je blog doorgelezen, en refreshte elke paar dagen nog even om te kijken of er al een nieuwe update op stondQuindor schreef op vrijdag 10 april 2015 @ 01:27:
Ik heb de v2 van mijn QuinLED dimmer nu al eventjes in gebruik en deze werken tot nu toe allemaal perfect. Het WiFi signaal is ook top, dus ik voel me comfortabel om alles te delen.
Hiervoor heb ik een "Part 8" van op mijn blog geschreven! Deze kun je hier vinden.
Heb je verder nog veel aan de lua code veranderd of is de code uit een van je eerdere blog posts nog prima te gebruiken. Al bij al $4.50 voor zo'n assembled wifi dimmer boardje is natuurlijk geen prijs.
Hey, dat is een gaaf doosje! Ik zal straks eventjes de schuifmaat pakken en de exacte externe dimensies opmeten maar ik denk dat het prima gaat passen! Als dat zo is bestel ik er ook een paar!wauwwie schreef op vrijdag 10 april 2015 @ 11:39:
[...]
Ik heb jouw ontwerp gisteravond besteld. Past jouw ontwerp met onderdelen in een BMD60014 behuizing? Ik heb je de vraag ook in de PM gesteld, maar nu hebben meer mensen wat aan je antwoord
--update
Ok, het bordje met alle componenten erop is
~50mm diep bij ~24mm breed en zo'n ~22mm hoog (voornamelijk de mosfets).
Dat zou dus prima moeten passen. De mosfets zitten eventueel wat krap maar in mijn ervaring worden ze niet eens warm. Je kunt ze ook altijd nog iets schuiner solderen en dan zou het geen probleem mogen zijn!
@epandi
Part7 heeft op dit moment (en zal in de toekomst denk ik ook altijd) de nieuwste code erin hebben staan die ik ook gebruik. Ik ben wel aan het kijken om binnenkort een keer een rewrite te doen, maar dat komt dan wel.
[ Voor 34% gewijzigd door Quindor op 11-04-2015 00:49 ]
De bedoeling is dat de arduino telkens er een wijziging is in de sensoren (bv garagepoort open,...) een commando doorstuurt naar de esp en dat deze dit dan doorstuurt naar een webpagina. Dit werkt voorlopig zonder probleem.
Hiernaast wil ik ook de esp via de url van de webpagina een commando geven, die hij dan op z'n beurt doorgeeft aan de arduino. De response van de arduino moet op de webpagina terecht komen.
Nu loop ik hier echter tegen wat problemen aan.... Het uitlezen van de opdracht uit de url en het doorsturen naar de arduino is geen probleem, maar... het uitlezen van de response en dit in de webpagina zetten, lukt niet altijd...
Ik had eerst de code geschreven voor de esp-01 en deze manueel getest (dus zelf de response ingetikt in terminal...dit werkte)
Als ik het echter door de arduino laat doen werkt het soms
De code van de esp-01 (arduino ide) is: (sorry voor de lange block code)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
| // interface met arduino nano voor stand garagepoort etc // bevat 2 grote onderelen: // - doorsturen van de gegevens naar php script als dit gevraagd wordt door de aruidono // - status opvragen en feedback geven int RS_i=0 ; byte RS_byte; byte RS_data[40]; //Buffer voor RS232 int i; String antwoord; boolean debug = false; //voor de inkomende seriele zaken te versturen naar de webserver #include <ESP8266WiFi.h> const char* ssid = "*****"; const char* password = "******"; WiFiServer server(80); void setup() { Serial.begin(9600); Serial.println("programma esp_schuifpoort_etc_v1"); // We start by connecting to a WiFi network delay(100); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); if (debug) Serial.print("."); } // Start the server server.begin(); } void loop() { ///////////////////////////////////////////// // RS232 - seriele poort verwerken // ///////////////////////////////////////////// if (Serial.available()>0) // doe iets met de inkomende RS232 boodschappen { RS_byte=Serial.read(); RS_data[RS_i++]=RS_byte; if (RS_byte==10||RS_byte==13) {RS_datafilter();} } ///////////////////////////////////////////// // WEBSERVER // ///////////////////////////////////////////// // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; //alles hieronder wordt dus NIET meer uitgevoerd!!!!, alles hiervoor zetten dus! } antwoord = ""; //resetten van het antwoord // Wait until the client sends some data if (debug) Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); if (debug) Serial.println(req); client.flush(); // Match the request int val; if (req.indexOf("comm=vijver") != -1) {//we willen de vijver hoogte Serial.println("HH"); } else if (req.indexOf("comm=regenwater") != -1) { //we willen de regenwater hoogte Serial.println("GH"); } else if (req.indexOf("comm=ventilS") != -1) { //we willen de regenwater hoogte Serial.println("VH"); } else if (req.indexOf("comm=garagepoort") != -1) { //we willen de regenwater hoogte Serial.println("PH"); } else if (req.indexOf("comm=schuifpoort") != -1) { //we willen de regenwater hoogte Serial.println("SH"); } else if (req.indexOf("comm=ventilZH") != -1) { //we willen de regenwater hoogte int a = req.indexOf("comm=ventilZH"); String commando = req.substring(a+11,a+14); Serial.println(commando); } else { if (debug) Serial.println("invalid request"); client.stop(); //return; antwoord = "verkeerde input, mogelijke commandos: comm=vijver ; regenwater ; ventilS ; garagepoort ; schuifpoort ; ventilZHx met x de gewenste stand"; } // wachten op de response via serieel unsigned long totwanneer = millis() + 2500; //om loops te voorkomen, zie verder int leesfout = 0; RS_byte = 48; while (RS_byte != 10 || RS_byte != 13) { delay(0); // om de watchdog bezig te houden if (millis() > totwanneer){antwoord="fout, geen reactie van arduino binnen de gestelde tijd";break;} //om loops te voorkomen geven we de arduino 2 seconden de tijd om te antwoorden if (Serial.available()>0){ RS_byte=Serial.read(); //Serial.println("benhier2"); if (RS_byte==10||RS_byte==13) { //Serial.println("10 of 13 ontvangen"); break; } antwoord += char(RS_byte); Serial.println(RS_byte); if (millis() > totwanneer){leesfout = 1;break;} //om loops te voorkomen geven we de arduino 2 seconden de tijd om te antwoorden } } if (leesfout == 1) antwoord="fout, timeout in de leesroutine"; leesfout = 0; // Prepare the response antwoord += "\n"; client.flush(); // Send the response to the client client.print(antwoord); delay(1); if (debug) Serial.println("Client disonnected"); antwoord = ""; // The client will actually be disconnected // when the function returns and 'client' object is detroyed } //------------------------------------------------------------------------------- // Extra RS232 routines //------------------------------------------------------------------------------- void RS_datafilter() // Filter inkomende RS232 boodschappen { int aantal; boolean NB_init; //voor de gewone statusupdates if(RS_data[0]=='s' && RS_data[1]=='t' && RS_data[2]=='w' && RS_data[3]=='z' && RS_data[4]=='_') //de arduino moet het commando starten met stwz_ { // doorsturen naar het php script die de verdere verwerking doet // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort = 80; const char* host = "10.0.2.183"; //ip adres van de server die het commando zal verwerekn if (!client.connect(host, httpPort)) { if (debug) Serial.println("connection failed"); return; } // We now create a URI for the request String url = "/test/hoogte_poort.php?"; for (i=5; i<sizeof(RS_data);i++) {if (RS_data[i] != 0){url += (char)RS_data[i];}} //we nemen het begin er niet bij stwz_ if (debug) Serial.print("Requesting URL: "); if (debug) Serial.println(url); // This will send the request to the server client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10); // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line = client.readStringUntil('\r'); if (debug) Serial.print(line); } if (debug) Serial.println(); if (debug) Serial.println("closing connection"); } //voor de response - eigenlijk is dit hier niet meer nodig...wordt opgevangen in de loop van het verzenden if(RS_data[0]=='R' && RS_data[1]=='E' && RS_data[2]=='_') //de arduino stuurt een antwoord op een eerdere vraag, start met RE_ { antwoord = ""; for (i=3; i<sizeof(RS_data);i++) {if (RS_data[i] != 0){antwoord += (char)RS_data[i];}} //we nemen het begin er niet bij RE_ if (debug) Serial.println(antwoord); } RS_cleardata(); } void RS_cleardata() // Wis RS232 buffer { for (i=0; i<sizeof(RS_data);i++) {RS_data[i]=0;} RS_i=0; } |
Voor het effectieve deel van de ontvangst heb ik al verschillende zaken geprobeerd, maar het lijkt me niet te lukken het geheel stabiel te krijgen. (bv met while Serial.available , met m'n buffer,...)
De seriele verbinding tussen arduino en esp is wel OK (levelshifter) want het deel waarbij de arduino gewoon commando's print lukt wel zonder probleem (en de arduino krijgt ook de commando's van de esp aan)
Heeft er iemand een idee hoe ik dit wel werkend krijg? (heb er ondertussen al grijze haren van gekregen...)
Het rare is ook dat het af en toe werkt als de softserial ftdi aan de arduino hangt (debugserial), maar erzonder quasi nooit?(dan is de resonse gewoon leeg, geen van de foutmeldingen
Ik heb ook al verschillende voedingen van 1 en 2A geprobeerd (de esp wordt gevoed van de 5v voeding via een dc-dc converter. Diezelfde 5v voedt ook de arduino nano)
Hier is hij in ieder geval te koop:LamSchaap schreef op vrijdag 10 april 2015 @ 17:49:
Nog steeds geen webshop gezien waar ik die ESP8266 development board kan kopen.
[afbeelding]
Hele tijd maar foto's online plaatsen maar niks meer bekend maken... Waarom?
http://www.aliexpress.com/item/New-Wireless-module-NodeMcu-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266-Limited-number/32260333698.html?s=p
Beetje jammer van de prijs vergeleken met het vorige bordje.
Verwijderd
voor 1/3 van die prijs heb je deze[steven] schreef op zaterdag 11 april 2015 @ 20:31:
[...]
Beetje jammer van de prijs vergeleken met het vorige bordje.
*update.. voor 8,09 maar 1 besteld
vooralsnog hou ik het nog even bij een breadboardje

[ Voor 5% gewijzigd door Verwijderd op 13-04-2015 08:32 ]
Kleine update: net gemerkt dat de esp blijkbaar voorbij de code op regel 52 kan raken terwijl er geen request is (maar de webpagina gewoon openstaat)? Die regel zou toch alles erna moeten skippen als er geen client is (of is een openstaande browers een client?)Promy schreef op zaterdag 11 april 2015 @ 19:40:
Ik probeer hier sinds enkele dagen..
De foto's zijn van het nieuwe development board, maar of ze die ook verkopen of nog gewoon de oude? Daarnaast vind ik $25 teveel voor dit bordje.LamSchaap schreef op vrijdag 10 april 2015 @ 17:49:
Nog steeds geen webshop gezien waar ik die ESP8266 development board kan kopen.
[afbeelding]
Hele tijd maar foto's online plaatsen maar niks meer bekend maken... Waarom?
Update!!Again!!!!Industry 4.0!New Wireless module!NodeMcu Lua WIFI Internet of Things development board based ESP8266
Verwijderd

bron:
- https://github.com/nodemc...demcu_api_en#i2c-module-1
- http://www.esp8266-projec...ds3231-i2c-real-time.html
- https://github.com/nodemc...master/lua_modules/ds3231
- http://www.ebay.com/itm/1...ain_0&hash=item487ceac5a4
[ Voor 8% gewijzigd door Verwijderd op 15-04-2015 12:28 ]
Grappig. Gebaseerd op de foto: op eBay vermoedelijk dezelfde module maar dan >50% goedkoper.wauwwie schreef op maandag 13 april 2015 @ 20:17:
[...]
De foto's zijn van het nieuwe development board, maar of ze die ook verkopen of nog gewoon de oude? Daarnaast vind ik $25 teveel voor dit bordje.
Update!!Again!!!!Industry 4.0!New Wireless module!NodeMcu Lua WIFI Internet of Things development board based ESP8266
Material 3 Thema's voor HA | Swiss Army Knife custom card voor HA | AmoebeLabs

Heb op eentje de compontenten gesoldeerd en alles werkt naar behoren, kan er (goedkope) RGB ledstrips mee aansturen via http. Ik zal binnenkort de code en schema's op github zetten en een blogpost maken, als ik tijd heb.
Heb inmiddels een nieuwe ESP (201) ontvangen welke ik getest heb met mijn waarschijnlijk neppe programmer. Het programmeren stopt na een paar seconde met een timeout. Hetzelfde probleem als met mijn vorige ESP dus... Nu even wachten totdat mijn andere programmer (met CH340G chip ipv FTDI) binnen is.somers1234 schreef op maandag 06 april 2015 @ 18:34:
Probleem vergelijkbaar met dit: YouTube: WP 20150215 001?
Ik heb ook dat bovenste model en mijn ESP kreeg ik ook niet goed geprogrammeerd. Ik heb inmiddels een nieuwe FTDI kabel en ESP besteld om te kijken wat nu echt het probleem is.
Het rare is ook dat mijn programmer gevoed wordt via het idle signaal op de RX lijn. Zonder USB kabel gaat het power ledje namelijk branden door de 3,3V die op de RX lijn staat. Intern in de neppe FTDI chip komt deze RX spanning blijkbaar op de VCC terecht. Is dit een speciale chinese feature of hebben ook de echte FTDI chipjes hier last van?
Verwijderd
even wachten op die usb serial dan maar
Cool om te zien dat meer mensen bordjes ontwerpen! Ziet er goed uit.fdm391 schreef op donderdag 16 april 2015 @ 14:12:
Ik heb mijn bordjes ontvangen van DirtyPCBs, het doosje waar ze in zaten leek me wat aan de grote kant (had prototype package van +- 10 besteld), voelde ook wat zwaar.. Tot mijn verbazing bleek dat er niet ~10 maar 21 (!) bordjes in het doosje zaten. Voor 14$ heb ik nu 21 bordjes o_O
[afbeelding]
Heb op eentje de compontenten gesoldeerd en alles werkt naar behoren, kan er (goedkope) RGB ledstrips mee aansturen via http. Ik zal binnenkort de code en schema's op github zetten en een blogpost maken, als ik tijd heb.
Maar je hebt 4 MOSFETs? Ik dacht dat het een limiet van de ESP was dat ze niet meer dan 3 kanalen PWM kunnen doen? Of is dat puur een limiet van de NodeMCU firmware?
Welke firmware draai je erop?
3 mosfets en 1 voltage regulator voor de 3.3V. Heb alleen een rekenfoutje gemaakt of het verbruik van de ESP niet goed ingeschat, maar de regulator word een beetje warm (heetQuindor schreef op donderdag 16 april 2015 @ 20:11:
[...]
Cool om te zien dat meer mensen bordjes ontwerpen! Ziet er goed uit.
Maar je hebt 4 MOSFETs? Ik dacht dat het een limiet van de ESP was dat ze niet meer dan 3 kanalen PWM kunnen doen? Of is dat puur een limiet van de NodeMCU firmware?
Welke firmware draai je erop?
Ik heb er nu NodeMCU op draaien inderdaad, die doet PWM softwarematig voor zover ik weet (analoog aan het voorbeeld in de SDK). Heb me er verder ook niet echt in verdiept, maar NodeMCU kan in ieder geval maar 3 PWM kanalen aan (wat voor mij uiteraard voldoende is).
@borroz: Heb je misschien een linkje naar die I2C scanner?
Edit:
Nevermind, al gevonden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| -- Based on work by sancho and zeroday among many other open source authors -- This code is public domain, attribution to gareth@l0l.org.uk appreciated. id=0 -- need this to identify (software) IC2 bus? gpio_pin= {5,4,0,2,14,12,13} -- this array maps internal IO references to GPIO numbers -- user defined function: see if device responds with ACK to i2c start function find_dev(i2c_id, dev_addr) i2c.start(i2c_id) c=i2c.address(i2c_id, dev_addr ,i2c.TRANSMITTER) i2c.stop(i2c_id) return c end print("Scanning all pins for I2C Bus device") for scl=1,7 do for sda=1,7 do tmr.wdclr() -- call this to pat the (watch)dog! if sda~=scl then -- if the pins are the same then skip this round i2c.setup(id,sda,scl,i2c.SLOW) -- initialize i2c with our id and current pins in slow mode :-) for i=0,127 do -- TODO - skip invalid addresses if find_dev(id, i)==true then print("Device found at address 0x"..string.format("%02X",i)) print("Device is wired: SDA to GPIO"..gpio_pin[sda].." - IO index "..sda) print("Device is wired: SCL to GPIO"..gpio_pin[scl].." - IO index "..scl) end end end end end |
OLED heb ik nu ook aan de praat

[ Voor 86% gewijzigd door somers1234 op 17-04-2015 13:14 ]
Verwijderd
mooi dat het nu werktsomers1234 schreef op vrijdag 17 april 2015 @ 10:38:
Heb zojuist de FTDI FT232RL chip van mijn programmer los gesoldeerd en vervangen voor een andere chip. Het programmeren gaat nu wel goed. Kan nu met 100% zekerheid zeggen dat het aan de FTDI chip heeft gelegen.
OLED heb ik nu ook aan de praat![]()
[afbeelding]
heb jij een linkje voor mij naar lua code/module die je gebruikt met dat specifieke oled schermpje
** dofile("u8g_graphics_test.lua")
not enough memory






[ Voor 23% gewijzigd door Verwijderd op 18-04-2015 11:02 ]
Het volgende linkje bevat een leuk voorbeeld met cirkels, vierkantjes, driehoeken, tekst enz:Verwijderd schreef op vrijdag 17 april 2015 @ 14:55:
heb jij een linkje voor mij naar lua code/module die je gebruikt met dat specifieke oled schermpje
https://github.com/nodemc...lib/u8g_graphics_test.lua
Zelf gebruik ik de volgende code om wat tekst te weergeven:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function init_i2c_display() sda = 5 -- GPIO14 scl = 6 -- GPIO12 sla = 0x3c i2c.setup(0, sda, scl, i2c.SLOW) disp = u8g.ssd1306_128x64_i2c(sla) end function prepare() disp:setFont(u8g.font_6x10) disp:setFontRefHeightExtendedText() disp:setDefaultForegroundColor() disp:setFontPosTop() end function draw() prepare() disp:drawStr(0, 0, "Opgenomen vermogen") disp:drawStr(0, 34, "Verbruik vandaag") disp:setScale2x2() disp:drawStr(0, 6, "355 W") disp:drawStr(0, 23, "18,1 kWh") disp:undoScale() end function print_display(delay) disp:firstPage() repeat draw() until disp:nextPage() == false tmr.delay(delay) end init_i2c_display() print_display(1000000) |
Hier meer info over de basis van u8glib en waarom het stukje "repeat ... until ..." wordt gebruikt.
Dat is nog wel een issue ja... Dat voorbeeld kan ik één keer runnen waarna ik ook die melding krijg. Bij mijn eigen simpele stukje code heb ik dit probleem niet. In de praktijk ga je hier niks van merken denk ik.Verwijderd schreef op vrijdag 17 april 2015 @ 14:55:
dofile("u8g_graphics_test.lua")
not enough memory
De code even builden zou ook moeten gaan lees ik.
[ Voor 13% gewijzigd door somers1234 op 17-04-2015 17:52 ]
Heb van het development board een schema gemaakt.Verwijderd schreef op zaterdag 31 januari 2015 @ 13:40:
[afbeelding]
ESP201 & Dev Board
spaar ze allemaal
(hoor graag de fouten)

[ Voor 6% gewijzigd door jwbr op 17-04-2015 23:32 ]
Verwijderd
zag wel vandaag deze onbekende

[ Voor 66% gewijzigd door Verwijderd op 18-04-2015 00:23 ]
Je kan altijd softwarematige PWM gebruiken, voor lichtsturing heb je maar 100Hz dutycycle nodig dus je kan meer PWM's maken dan je GPIO's hebt.Quindor schreef op donderdag 16 april 2015 @ 20:11:
[...]Maar je hebt 4 MOSFETs? Ik dacht dat het een limiet van de ESP was dat ze niet meer dan 3 kanalen PWM kunnen doen? Of is dat puur een limiet van de NodeMCU firmware?...
Ik weet niet of die processor timer-interrupts ondersteunt, zo ja heb je zo een PWM routine geschreven (laat em elke x tijd interrupt geven, in de interrupt ga je een tellertje bijhouden, en kijken of elk van je PWM's al boven het tellertje zitten, zo ja uitgang uitschakelen. Bij overflow teller weer uitgang inschakelen).
Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.
Verwijderd
Ik ben in het bezit van esp8266-201 nu heb ik daar nodemcu opgezet en probeer ik temperatuur uit te lezen met een ds1820 en door te sturen naar thingspeak nu geeft hij met de ene software singlewireds1820 die bij nodemcu zit de verkeerde temp aan en met ds1820.lua soms verdwijnen dan alle bestanden die ik naar die esp heb geupload iemand misschien idee.

Zo is het aangesloten weet niet of het een beetje duidelijk is.
Groet Stimpy
[ Voor 16% gewijzigd door Verwijderd op 20-04-2015 21:15 ]
Verwijderd
en wat is de fout precies, krijg je wel een temp terug via serial ?
soms kan je idd files 'kwijtraken' op je esp en in het ergste geval moet je hem opnieuw met nodeMCU flashen.
meestal komt dit door een fout in de code.
om eea te voorkomen kan je beter gebruik maken van een bootstrap ipv direct init.lua code
voorbeeld :
init. lua :
---------------------------------------------------------------------------------
-- bootstrap universeel 3 seconds delay
tmr.alarm(0,3000,0,function() dofile("init2.lua") end)
---------------------------------------------------------------------------------
en dan je eigenlijke code in intit2.lua
hierdoor kan je altijd je ESP restarten en stoppen (met lualoader)
[ Voor 127% gewijzigd door Verwijderd op 20-04-2015 22:08 ]
Verwijderd
ik gebruik deze site als voorbeerd
http://vaasa.hacklab.fi/2...18b20-thingspeak-nodemcu/
deze code :
init.lua print(wifi.sta.getip()) wifi.setmode(wifi.STATION) wifi.sta.config("West Friesland Wifi Princehof","") print(wifi.sta.getip()) dofile('dallas.lua') dallas.lua require('ds18b20') port = 80 -- ESP-01 GPIO Mapping gpio5 = 1 ds18b20.setup(gpio5) function sendData() t1=ds18b20.read() t1=ds18b20.read() print("Temp:"..t1.." C\n") -- 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=Q67WTIRSOWGXJEO&field1="..t1.." 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 -- send data every X ms to thing speak tmr.alarm(0, 60000, 1, function() sendData() end ) |

[ Voor 94% gewijzigd door Verwijderd op 20-04-2015 22:33 ]
Verwijderd
-- GPIO0 = 3
-- GPIO1 = 10
-- GPIO2 = 4
-- GPIO3 = 9
-- GPIO4 = 2
-- GPIO5 = 1
-- GPIO9 = 11
-- GPIO10 = 12
-- GPIO13 = 7
-- GPIO14 = 5
-- GPIO15 = 8
-- GPIO16 = 0
kan me vergissen maar hij gaat bij 'setup' in de fout
[ Voor 61% gewijzigd door Verwijderd op 21-04-2015 10:08 ]
Verwijderd
local defaultPin = x veranderd in 1 want ik gebruik gpio5.
deze code
require('ds18b20') port = 80 -- ESP-01 GPIO Mapping --gpio5 = 1 --ds18b20.setup(gpio5) function sendData() t1=ds18b20.read() t1=ds18b20.read() int("Temp:"..t1.." C\n") -- 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.conn:connect(80,'184.106.153.149') conn:send("GET /update?key=COONG6W31SK2R8WI&field1="..t1.." 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 -- send datevery X ms to thing speak tmr.alarm(0, 6000, 1, function() sendData() end ) |
en krijg nu
NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
>
Hard Restart maandag 20 april 2015 23:08:45
192.168.6.229 255.255.255.0 192.168.6.1
192.168.6.229 255.255.255.0 192.168.6.1
PANIC: unprotected error in call to Lua API (dallas.lua:7: attempt to call field 'read' (a nil value))
c_ÇÏRSöfJSúfJSúfêá
Verwijderd
zal een zipje samenstellen met de code en je een linkje sturen
wordt later of morgenochtend
* update, heb hem weer even opgebouwd en je een berichtje gestuurd
[ Voor 189% gewijzigd door Verwijderd op 23-04-2015 13:18 ]
Verwijderd
Dat zou top zijn hehehe begrijp er echt niks van of ik doe iets verkeerd weet wel als ik hem reboot en dan survey van wifi doe de bestanden daarna weer zie staan.Verwijderd schreef op maandag 20 april 2015 @ 23:22:
ik had min of meer dezelfde setup en werkend met thingspeak
zal een zipje samenstellen met de code en je een linkje sturen
wordt later of morgenochtend
Heb nu alleen die 18ds20.lua gupload en gebruikt nu gewoon de terminal met. deze code:
t=require("ds18b20")
print(t.readNumber(1))
t = nil
ds18b20 = nil
package.loaded["ds18b20"]=nil
en dan geeft hij deze output :
Text upload: E:\Arduino\New\nodemcu-firmware-master\nodemcu-firmware-master\lua_modules\ds18b20\ds18b20.lua
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
3437 bytes uploaded to ds18b20.lua
> = node.heap()
20128
> for k,v in pairs(file.list()) do l = string.format("%-15s",k) print(l.." "..v.." bytes") end
ds18b20.lua 3437 bytes
> t=require("ds18b20")
> print(t.readNumber(1))
stdin:1: attempt to index global 't' (a nil value)
> t = nil
> ds18b20 = nil
> package.loaded["ds18b20"]=nil
stdin:1: attempt to index global 'package' (a nil value)
> for k,v in pairs(file.list()) do l = string.format("%-15s",k) print(l.." "..v.." bytes") end
Ik gebruik NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
lua: cannot open init.lua
Ik wil ook een domotica bij mij thuis gaan aanleggen dmv een raspberri pi met daarop Openhab en Mosquitto. Nu leek mij de ESP8266 een ideale mC om te gebruiken daarvoor. Zeker met de Arduino IDE vind ik het heel gemakkelijk om wat in elkaar te frutselen. Maar ik kreeg de volgende code maar niet gecompiled:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| #include <PubSubClient.h> #include <OneWire.h> #include <DallasTemperature.h> #include <ESP8266WiFi.h> #include <stdlib.h> #define ONE_WIRE_BUS 2 const char* ssid = "XXXXXXXXXXX"; const char* password = "XXXXXXXXXXXX"; byte server[] = {192,168,2,5}; char topic1111[] = "1111"; char topic1112[] = "1112"; String clientName = "Node1"; void callback(char* topic, byte* payload, unsigned int length) { // handle message arrived } OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); WiFiClient wifiClient; PubSubClient client(server, 1883, callback, wifiClient); void setup() { Serial.begin(115200); delay(10); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } Serial.print("."); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); sensors.begin(); client.connect((char*) clientName.c_str()); } void loop() { client.loop(); sensors.requestTemperatures(); char charVal[10]; String payload = ""; float Temp = sensors.getTempCByIndex(0); dtostrf(Temp, 4, 1, charVal); for(int i=0;i<sizeof(charVal);i++) { payload+=charVal[i]; } client.publish(topic1111, (char*) payload.c_str()); delay(5000); } |
Maar de compiler bleef maar zeuren dat dtostrf niet gedeclared was in deze scope, terwijl verschillende bronnen (Inclusief arduino.cc) melden dat dit zou moeten werken... Na 2 dagen kloten kwam ik er eindelijk achter wat het probleem was. Hier zakte mijn broek wel een beetje van af
1
2
3
4
5
| #include <PubSubClient.h> #include <OneWire.h> #include <DallasTemperature.h> #include <ESP8266WiFi.h> #include <stdlib_noniso.h> |
Nu compileerd ie wel.

[ Voor 0% gewijzigd door Vuikie op 21-04-2015 13:31 . Reden: indentatie goed gezet... ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Scherp blijven he, het is pas dinsdag!
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Maargoed, de reden dat ik het heb gepost is eigenlijk om te vragen of mensen nog meer dingen weten die bij de ESP8266 build van de arduino IDE anders zijn. En om ieg. te waarschuwen voor als je de stlib nodig hebt je dus de nonISO versie moet gebruiken als je voor de ESP progged.
Ik zal vanavond wel posten of de MQTT library werkt.Dat zou voor mij weer een stapje dichterbij de domotica zoals ik hem wil hebben zijn.
[ Voor 7% gewijzigd door Vuikie op 21-04-2015 18:10 ]
- Deze advertentie is geblokkeerd door Pi-Hole -
Afgelopen weekend een andere FTDI binnen gekregen, en die werkte wel. Ik blij! maar de dag erna weer hetzelfde probleem. Na een wtf moment bleek het te liggen aan het breadboard. Nu met een dupont kabeltje ertussen werkt het als een speer ipv direct in het breadboard. Ook met de eerste (misschien nog steeds neppe) FTDI programmer gaat het nu wel goed.wauwwie schreef op zondag 05 april 2015 @ 15:52:
Misschien iemand een tip voor me? Ik probeer een esp-01 te flashen volgens een van de vele tutorials naar nodemcu. De esp wordt herkend, flashen start , maar stopt na 6-10% en krijg ik de melding "Error:Write flash timeout.". Ik gebruik een FT232RL FTDI op 3.3V
Wat heb ik al gedaan:
- Betere/onafhankelijke voeding (gnd doorverbonden)
- verschillende bootloaders (Nodemcu, orginele)
- verschillende flashers (NodeMcu, esploader)
Niets werkt, en onderstussen krijg ik geen antwoord meer op AT+
Ik heb twee esp-01's en beide hebben dezelfde eigenschap. Logisch zou zijn als het niet in de esp's zit, maar wat zou het kunnen zijn?
Nu nog wat tijd vinden om de software te schrijven zodat het gaat doen wat ik wil.
Verwijderd
MQTTVuikie schreef op dinsdag 21 april 2015 @ 18:07:
@RobV: Zal ik proberen
Ik zal vanavond wel posten of de MQTT library werkt.Dat zou voor mij weer een stapje dichterbij de domotica zoals ik hem wil hebben zijn.
MQTTspy
ben zelf nog niet zover.. maar volg eea wel
Ik heb recentelijk een ESP8266 aangeschaft om als seriële COM poort te kunnen gebruiken.
Ik ben gelicenseerd radiozendamateur en wil een zendontvanger IC-7000,via het netwerk met behulp van zogenaamde CAT-software kunnen bedienen. In de huidige situatie werkt dit allemaal perfect.
Middels een USB to Serial interface is de IC-7000 verbonden met een PC. Hierop draait een server applicatie die bij de software van Ham Radio Deluxe hoort. Vie een client applicatie kan ik nu overal in huis vanaf mijn laptop de zelfde software draaien en de IC-7000 volledig bedienen. Alles draai perfect. Hieronder een afbeelding van de huidige configuratie:
Nu had ik het idee om de PC met de USB to Serial interface vervangen door een ESP8266 aangezien deze WIFI naar serial zou moeten doen. De ESP8266 is voorzien van FW 0.9.5. Ik ben er zonder veel problemen in geslaagd om hem te configureren zodat de ESP op mijn netwerk zit. Ik kan hem pingen. Toch krijg ik het niet voor elkaar om te communiceren met de IC-7000. Ik heb al een Virtual Serial Port software tool geprobeerd maar zonder resultaat.
Nu lees ik op de diverse Forums zaken als "ESP8266 in server mode" en opmerkingen dat de serial poort niet bi-directioneel zou zijn, enz. maar nergens een oplossing die mij een stap dichter bij het oplossen van mijn uitdaging brengt.
Wie in dit forum kan/wil mij helpen. Wat doe ik fout?
De onderstaande afbeelding geeft een idee wat ik eigenlijk zou willen:
[ Voor 21% gewijzigd door camview op 22-04-2015 12:25 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ets Jan 8 2013,rst cause:1, boot mode:(3,7) load 0x40100000, len 30000, room 16 tail 0 chksum 0x83 load 0x3ffe8000, len 2556, room 8 tail 4 chksum 0x52 load 0x3ffe8a00, len 2824, room 4 tail 4 chksum 0x8c csum 0x8c ö |
Het maakt precies niet uit welke zaken ik flash naar de esp-01 (lua of een eigen arduino IDE programma.
Iemand een idee hoe ik deze terug werkend krijg?
UPDATE:voorlopig kunnen oplossen door de blank en 0.95AT firmware erop te zetten...
[ Voor 7% gewijzigd door Promy op 22-04-2015 14:37 ]
Ik ga het even in de gaten houden, heb nu (like 10 minuten geleden) een MQTT script draaien op een ESP-01 die elke vijf minuten de temperatuur naar de broker published. Even in de gaten houden of ie het blijft doen.Kelfox schreef op dinsdag 21 april 2015 @ 22:19:
Heeft iemand MQTT al werkend voor een langere periode (langer dan een week?) met bijvoorbeeld een temperatuur sensor die elke 10 sec. een message op een broker post? Zo ja, welke firmware?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| #include <PubSubClient.h> #include <OneWire.h> #include <DallasTemperature.h> #include <ESP8266WiFi.h> #include <stdlib_noniso.h> #define ONE_WIRE_BUS 2 const char* ssid = "XXXXXXXXXX"; const char* password = "XXXXXXXXXX"; byte server[] = {XXX,XXX,XXX,XXX}; char topic1111[] = "/1111"; char topic1112[] = "/1112"; String clientName = "Node1"; void callback(char* topic, byte* payload, unsigned int length) { // handle message arrived } OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); WiFiClient wifiClient; PubSubClient client(server, 1883, callback, wifiClient); void setup() { Serial.begin(115200); delay(10); Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } Serial.print("."); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); sensors.begin(); if (client.connect((char*) clientName.c_str())){ Serial.println("Connected."); } else{ Serial.println("Connection failed"); } } void loop() { client.loop(); sensors.requestTemperatures(); char charVal[10]; String payload = ""; float Temp = sensors.getTempCByIndex(0); dtostrf(Temp, 4, 1, charVal); for(int i=0;i<5;i++) { payload+=charVal[i]; } charVal[5]='\0'; Serial.println(payload); if (client.publish(topic1111, (char*) payload.c_str())){ Serial.println("Publish ok!"); } else{ Serial.println("Publish failed"); } delay(5000); } |
De bovenstaande code werkt, maar ik heb ook dat het niet stabiel is. Na 1 tot 5 minuten crashed de ESP. Zou kunnen dat het aan de voeding ligt, ik voed hem nu via een PL2303 USB-UART omzetter en laat hem elke 5 seconden de temperatuur posten. dat zou wel eens iets te veel van het goede kunnen zijn.
Wat ik even belangrijker vind is dat mijn openhab niet meer bind met de MQTT broker. Maar dat is voer voor een andere topic geloof ik.
Heeft er iemand een idee waarom onderstaande code na een 10tal minuten stopt: geen reactie meer op de webpagina, wel reactie op ping.
De arduino die eraan hangt stuurt regelmatig commando's door die verwerkt worden door de esp (stwz_ in de code)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
| // interface met arduino nano voor stand garagepoort etc // bevat 2 grote onderelen: // - doorsturen van de gegevens naar php script als dit gevraagd wordt door de aruidono // - status opvragen en feedback geven int RS_i=0 ; byte RS_byte; byte RS_data[40]; //Buffer voor RS232 int i; String antwoord; boolean okgelezen = false; unsigned long totwanneer; //voor de inkomende seriele zaken te versturen naar de webserver #include <ESP8266WiFi.h> const char* ssid = "*****"; const char* password = "*****"; WiFiServer server(80); void setup() { Serial.begin(9600); Serial.println("programma esp_schuifpoort_etc_v6"); delay(100); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); if (debug) Serial.print("."); } server.begin(); } void loop() { ///////////////////////////////////////////// // RS232 - seriele poort verwerken // ///////////////////////////////////////////// if (Serial.available()>0) // doe iets met de inkomende RS232 boodschappen { RS_byte=Serial.read(); RS_data[RS_i++]=RS_byte; if (RS_byte==10||RS_byte==13) {RS_datafilter();} } ///////////////////////////////////////////// // WEBSERVER // ///////////////////////////////////////////// // Check if a client has connected WiFiClient client = server.available(); if (!client) { return; //alles hieronder wordt dus NIET meer uitgevoerd!!!!, alles hiervoor zetten dus! } antwoord = ""; //resetten van het antwoord // Wait until the client sends some data if (debug) Serial.println("new client"); while(!client.available()){ delay(1); } // Read the first line of the request String req = client.readStringUntil('\r'); if (debug) Serial.println(req); client.flush(); // Match the request //int val; boolean ok_lezen = 0; //bijhouden of er uitgelezen mag worden of niet while (Serial.available()>0) // doe iets met de inkomende RS232 boodschappen { RS_byte=Serial.read(); RS_data[RS_i++]=RS_byte; if (RS_byte==10||RS_byte==13) {RS_datafilter();} } if (req.indexOf("comm=vijver") != -1) {//we willen de vijver hoogte Serial.println("HH"); ok_lezen = true; } else if (req.indexOf("comm=regenwater") != -1) { //we willen de regenwater hoogte Serial.println("GH"); ok_lezen = true; } else if (req.indexOf("comm=ventilS") != -1) { //we willen de regenwater hoogte Serial.println("VH"); ok_lezen = true; } else if (req.indexOf("comm=garagepoort") != -1) { //we willen de regenwater hoogte Serial.println("PH"); ok_lezen = true; } else if (req.indexOf("comm=schuifpoort") != -1) { //we willen de regenwater hoogte Serial.println("SH"); ok_lezen = true; } else if (req.indexOf("comm=ventilZH") != -1) { //we willen de regenwater hoogte int a = req.indexOf("comm=ventilZH"); String commando = req.substring(a+11,a+14); Serial.println(commando); ok_lezen = true; } else { if (debug) Serial.println("invalid request"); //client.stop(); //return; antwoord = "verkeerde input - mogelijke commandos zijn comm=vijver - regenwater - ventilS - garagepoort - schuifpoort - ventilZHx met x de gewenste stand"; } client.flush(); // wachten op de response via serieel if ( ok_lezen == true) { totwanneer = millis() + 2500; //om loops te voorkomen, zie verder int leesfout = 0; while (okgelezen == false) { delay(0); //om de watchdog bezig te houden if (millis() > totwanneer){antwoord="fout, geen reactie van arduino binnen de gestelde tijd";break;} //om loops te voorkomen geven we de arduino 2 seconden de tijd om te antwoorden if (Serial.available() > 0){ RS_byte=Serial.read(); RS_data[RS_i++]=RS_byte; if (RS_byte==10||RS_byte==13) {RS_datafilter();} } } } okgelezen = false; // Send the response to the client //String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>"; String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; s += antwoord; //s += "</html>\n"; s += "\n"; client.print(s); delay(1); antwoord = ""; } //------------------------------------------------------------------------------- // Extra RS232 routines //------------------------------------------------------------------------------- void RS_datafilter() // Filter inkomende RS232 boodschappen { int aantal; boolean NB_init; //voor de gewone statusupdates if(RS_data[0]=='s' && RS_data[1]=='t' && RS_data[2]=='w' && RS_data[3]=='z' && RS_data[4]=='_') //de arduino moet het commando starten met stwz_ { // doorsturen naar het php script die de verdere verwerking doet // Use WiFiClient class to create TCP connections WiFiClient client; const int httpPort = 80; const char* host = "10.0.2.183"; //ip adres van de server die het commando zal verwerekn if (!client.connect(host, httpPort)) { if (debug) Serial.println("connection failed"); return; } // We now create a URI for the request String url = "/test/hoogte_poort.php?"; for (i=5; i<sizeof(RS_data);i++) {if (RS_data[i] != 0){url += (char)RS_data[i];}} //we nemen het begin er niet bij stwz_ if (debug) Serial.print("Requesting URL: "); if (debug) Serial.println(url); // This will send the request to the server client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(10); // Read all the lines of the reply from server and print them to Serial while(client.available()){ String line = client.readStringUntil('\r'); if (debug) Serial.print(line); } } //voor de response - eigenlijk is dit hier niet meer nodig...wordt opgevangen in de loop van het verzenden if(RS_data[0]=='R' && RS_data[1]=='E' && RS_data[2]=='_') //de arduino stuurt een antwoord op een eerdere vraag, start met RE_ { antwoord = ""; for (i=3; i<sizeof(RS_data);i++) {if (RS_data[i] != 0){antwoord += (char)RS_data[i];}} //we nemen het begin er niet bij RE_ okgelezen = true; } totwanneer = millis() + 2500; //om loops te voorkomen in de routine van de server, hier verlengen we dit omdat we blijkbaar nog bezig zijn... RS_cleardata(); } void RS_cleardata() // Wis RS232 buffer { for (i=0; i<sizeof(RS_data);i++) {RS_data[i]=0;} RS_i=0; } |
Verwijderd
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Dus ik zoek geen kant-en-klaar bord met de chip erop, maar echt de losse chip. Heb hem al op AliExpress gezien dus misschien maar eens bestellen
voorlopig terug overgestapt op lua code (weliswaar zonder de webserver...en dat blijft stabiel- voorlopig toch)
[ Voor 34% gewijzigd door Promy op 23-04-2015 23:18 ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Die prijzen was mij ook opgevallen ja! Ik heb een heteluchtsoldeerstation, dus op zich zou moeten kunnen wat jij voorstelt. Geen slecht idee!mad_max234 schreef op donderdag 23 april 2015 @ 16:34:
@dennis, Is het niet goedkoper en handiger om met hete lucht een esp8266 te rippen van zijn onderdelen? Meestal vragen ze behoorlijk wat meer voor losse onderdelen dan dat je zo kant en klaar printje koopt. Heb gelijk alle onderdelen die je nodig hebt, ook de flashchip en kristal en zo.
Ik ben even verder gaan zoeken en nu bleek dat mijn bruggetje tussen de +3,3V en de CH_PD pin van dus danige soldeer kwaliteit was dat ik mij zeer moet gaan schamen...Promy schreef op woensdag 22 april 2015 @ 22:52:
Stabiel blijven, dat is inderdaad een groot probleem...
++knip++

Nu werkt ie wel(Voor 1 uur getest) stabiel.
Ik heb al wel door dat chip heel pikkie is qua voeding enzo. Als er iets electrisch niet helemaal in de haak is, helpt dat er niet aan de stabiliteit van de chip.
Ik heb de nodemcu firmware(20150331) geflasht op mijn esp v12.
Dan laad ik een init.lua scriptje die op een ip adres wacht.
vervolgens wordt het volgende scriptje uitgevoerd...
1
2
3
4
5
6
7
8
| tmr.alarm(0,10000,1,function() conn=net.createConnection(net.TCP, false) conn:on("receive", function(conn, pl) print(pl) end) conn:on("disconnection", function(conn) print("disconnected") end) conn:connect(80,"121.41.33.127") conn:send("GET / HTTP/1.1\r\nHost: www.nodemcu.com\r\n" .."Connection: keep-alive\r\nAccept: */*\r\n\r\n") end) |
werkt prima, geen probleem.
vervang ik 2 regels met
1
2
3
| conn:connect(8084,"192.168.178.42") conn:send("GET /json.htm?type=command¶m=udevice&idx=6&nvalue=0&svalue=20.5 HTTP/1.1\r\nHost: nas:8084r\n" .."Connection: keep-alive\r\nAccept: */*\r\n\r\n") |
Krijg ik gelijk een disconnect.
Deze url werkt wel gewoon vanaf een willekeurig andere pc of device.
Iemand een idee?
[ Voor 1% gewijzigd door koli-man op 24-04-2015 21:32 . Reden: iets vergeten ]
Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff
[ Voor 97% gewijzigd door Promy op 24-04-2015 22:03 ]
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Vervang de 'nas' onder 'Host:' eens door het IP van je NAS. Denk dat het dan wel werkt.koli-man schreef op vrijdag 24 april 2015 @ 21:28:
Misschien dat iemand het volgende issue ook wel eens tegengekomen is, en opgelost heeft.
*KNIP*
Iemand een idee?
P.S. Als je wat leuks te delen hebt (ik zie aan de URL dat het Domoticz is

dit gezien? Heeft resetknopjes..Verwijderd schreef op zaterdag 25 april 2015 @ 12:49:
[afbeelding]
een flash & resetknopje op zo'n adapterprintje .. past net
https://blog.adafruit.com...-huzzah-esp8266-breakout/
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Nee, helaas. Dat brengt geen verbetering. Beetje jammer dit. En om nou een work around te gaan verzinnen hiervoor is ook een beetje jammer. Posten buiten mijn netwerk en dan weer in domoticz pompen voelt ook een beetje 'net niet'.ThinkPadd schreef op zaterdag 25 april 2015 @ 13:46:
[...]
Vervang de 'nas' onder 'Host:' eens door het IP van je NAS. Denk dat het dan wel werkt.
P.S. Als je wat leuks te delen hebt (ik zie aan de URL dat het Domoticz is) schroom dan niet om hier: http://domoticz.com/forum/viewtopic.php?f=4&t=4024 en/of hier http://domoticz.com/forum/viewforum.php?f=38 te posten
Eens een andere firmware versies uitproberen misschien, maar ik zit eigenlijk op een vrij nieuwe release.
Misschien maar eens een pr indienen.
Hey Isaac...let's go shuffleboard on the Lido - deck...my site koli-man => MOEHA on X-Box laaaiiiff
Ik denk dat het probleem bij je neppe FTDI programmer ligt. Er zijn meer mensen (onder andere ik) die dergelijke problemen hebben met deze neppe chips.jctjepkema schreef op zondag 26 april 2015 @ 09:26:
Ik kom dan wel bij verdere percentages, maar ik kom dan maar tot de 47/48%. Ik probeer wel even een andere voeding, maar ik heb het gevoel dat ik iets verkeerd doe en niet dat het een software probleem is.
Iig bedant allen!
Verwijderd
nee nog niet gezien, wel dezeRobV schreef op zaterdag 25 april 2015 @ 14:19:
[...]
dit gezien? Heeft resetknopjes..
https://blog.adafruit.com...-huzzah-esp8266-breakout/
bron
[ Voor 18% gewijzigd door Verwijderd op 26-04-2015 22:26 ]
En anders moet ik hem maar zelf maken wat het is toch gewoon een Hayes command set toch?
| Mijn joystick / simpit project | Blog | Elite Dangerous CMDR Cataclysm72
Als de boer zijn koeien kust, zijn ze jarig wees gerust. Varkens op een landingsbaan, leiden nooit een lang bestaan. Als de boer zich met stront wast, zijn zijn hersens aangetast. Als het hooi is in de schuur, zit het wijf bij den gebuur.
Ben zelf ook nieuwsgierig welke voordelen dit heeft ten opzichte van LUA.