Arduino Uno (rev3) + wifi shield ESP8266 připojení-oživení
Úvodní stránka › Fórum › Hardware › Arduino › Arduino Uno (rev3) + wifi shield ESP8266 připojení-oživení
- Toto téma obsahuje celkem 46 odpovědí. Do diskuze (7 diskutujících) se naposledy zapojil uživatel Dzaraaa a poslední změna proběhla před 7 roky a 11 měsíci.
-
AutorPříspěvky
-
21.1.2017 v 9:20 #10138MilosDÚčastník
Na Mega chodí tohle:
pokus mega22.1.2017 v 10:07 #10150DzaraaaÚčastníkBohužel tento kód je pro verzi Mega. Děkuji.
22.1.2017 v 10:10 #10151DzaraaaÚčastníkNeměl by někdo zkušenost s tímto shieldem?
Momentálně mám zapojeno RX a TX shieldu na RX a TX arduina a potřebuji kód, který uvede shield do činnosti. Budu rád za Vaše nápady. Děkuji.22.1.2017 v 10:57 #10152Zbyšek VodaÚčastníkDobrý den,
musíte mít připojené RX na TX a TX na RX (ne RX na RX apod.)Potom už jenom přes sériovou linku (Serial.println…) posíláte do ESP AT příkazy (za předpokladu, že máte v desce původní firmware). At příkazy viz: http://www.pridopia.co.uk/pi-doc/ESP8266ATCommandsSet.pdf.
Pokud máte Arduino s více sériovými linkami (Mega, Leonardo, …), můžete do něj nahrát program, který bude sloužit jenom jako přeposílatel mezi PC a ESP, kterému přes Serial Monitor můžete posílat AT příkazy, ozkoušet si je a až potom je natvrdo napsat do programu. Pěkný návod je například zde: http://dalpix.com/blog/connecting-your-arduino-wifi-esp-8266-module
22.1.2017 v 11:15 #10153DzaraaaÚčastníkDobře a mohl byste mi sepsat úvod kódu, nevím si rady jsem začátečník. Potřebuji kód ve fázi kdy budu moci pokračovat s psaní AT příkazů. Děkuji.
22.1.2017 v 12:09 #10162Vojtěch VosáhloÚčastníkTo co chcete je prostě jednoduchý kód pro serial. Dá se najít kdekoliv na webu. Chápu že jste začátečník, to jsme byli všichni ale stačí hledat. Když něco nevím, skočím na https://www.arduino.cc/en/Reference/ a prostě si to najdu třeba i s ukázkovým kódem.
Ukázka pro serial println je: `/*
Analog inputreads an analog input on analog in 0, prints the value out.
created 24 March 2006
by Tom Igoe
*/int analogValue = 0; // variable to hold the analog value
void setup() {
// open the serial port at 9600 bps:
Serial.begin(9600);
}void loop() {
// read the analog input on pin 0:
analogValue = analogRead(0);// print it out in many formats:
Serial.println(analogValue); // print as an ASCII-encoded decimal
Serial.println(analogValue, DEC); // print as an ASCII-encoded decimal
Serial.println(analogValue, HEX); // print as an ASCII-encoded hexadecimal
Serial.println(analogValue, OCT); // print as an ASCII-encoded octal
Serial.println(analogValue, BIN); // print as an ASCII-encoded binary// delay 10 milliseconds before the next reading:
delay(10);
}Řeknu si že ale nechci posílat data přečtená z analogu ale jen AT+XXXXXX příkaz. Tak si kód prostě a jednoduše přepíšu, smažu čtení analogu a několik println vyměním za jedno. Vznikne mi něco takového:
void setup() {
// open the serial port at 9600 bps:
Serial.begin(9600);
}void loop() {
Serial.println(„AT“);
delay(1000);
}
`Doufám že chápete kam tím mířím. Prostě učit se, učit se, učit se 😉
22.1.2017 v 12:13 #10163Zbyšek VodaÚčastníkPopřípadě ten přeposílač mezi sériovými linkami (Serial a Serial1) vypadá takto:
void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { while (Serial1.available()) { Serial.write(Serial1.read()); } while (Serial.available()) { Serial1.write(Serial.read()); } }
ESP pak nepřipojujete na piny RX a TX, ale RX1 a TX1 – RX a TX jsou totiž napojené přímo na převodník z PC. Více linek ale mají jenom některé desky – jak jsem psal – Arduino Mega, Leonardo…
22.1.2017 v 12:48 #10164DzaraaaÚčastníkVyzkoušel jsem rady ale stejně jsem neuspěl. Po zadání tohoto kodu se zobrazí chybová hláška:
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
}
void loop()
{
while (Serial1.available()) {
Serial.write(Serial1.read());
}
while (Serial.available()) {
Serial1.write (Serial.read());
}hláška:
Serial1.write(Serial.read());
^
exit status 1jak ji vyřeším?
22.1.2017 v 12:57 #10165DzaraaaÚčastníkJeště mám nejasno v jedné věci. Když má arduino TX a RX piny 2 krát a to jednou na digitálních pinech 0 a 1 anebo vyvedeny jako samostatné. Mám zapojeny ty samostatné jak je tedy vzájemně propojit? RX na TX nebo RX na RX atd. Musí být v kodu programu zapsané,že má arduino pro komunikaci použít piny které jsou vyvedeny jako samostatné. Děkuji.
22.1.2017 v 13:10 #10166Vojtěch VosáhloÚčastníkPina má jen jedny a jsou vyvedeny 2x, nic specialniho se nastavovat nemusí. Musí být připojeny RX na TX a Tx na RX, jak už psal Zbyšek. Proč používáte kód pro 2 sériové porty když máte jen jeden jak jste psal?
22.1.2017 v 13:16 #10167DzaraaaÚčastníkTak tedy arduino UNO má jen jeden pár RX a TX jen jsou vyvedeny 2 krát jestli teď rozumím.
ještě jsem zjistil, že mám problém v téhle věci: nahrál jsem na samotné arduino bez nasazeného wifi shieldu program blink, vše chodí jak má a když nasadím wifi shield bez zapojení RX a TX vypíše to následující chybovou hlášku:
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00
Problém s přenosem dat na vývojovou desku (board). Na http://www.arduino.cc/en/Guide/Troubleshooting#upload naleznete další doporučení.
Co dělat s tímto problémem?24.1.2017 v 10:59 #10189DzaraaaÚčastníkVěděl by někdo jak řešit? Děkuji.
24.1.2017 v 11:44 #10190DreamerÚčastníkArduino UNO nemá TX a RX vyvedené dvakrát. Pouze je má na desce připojeny na převodník a přes tyto piny se nahrává program. Po nahrání programu jsou volně přístupné ale většinou se nepoužívají právě proto že je používá převodník při nahrávání programu. Pravděpodobně je tedy používá ke komunikaci i tvůj WiFi shield. Pro nahrání programu jej tedy musíš sundat, po nahrání zase nasadit (Samozřejmě s odpojeným napájením).
24.1.2017 v 11:49 #10191DzaraaaÚčastníkÁha… no jenomže mám ještě problém v tom viz předchozí text. Co s tím?
24.1.2017 v 14:43 #10192DreamerÚčastníkNo jestli myslíš ten problém popisovaný: 22.1.2017 (13:16) tak to IDE říká že nemůže komunikovat s UNO – tedy nemůže do něj nahrát program. Jak jsem psal výše nejspíš je to tím že jsou piny shieldu TX a RX propojeny s piny UNO. Pokud tomu tak je tak je to trochu nešťastné řešení. Konkrétně ale asi líp poradit nedokážu, tenhle konkrétní shield nemám a asi ani nikdo kdo se pokoušel ti odpovídat. Co konkrétně potřebuješ řešit? Možná by bylo lepší objednat třeba NodeMCU D1 mini. To se dá připojit přímo a programovat bez UNO a je tady určitě daleko známější.
24.1.2017 v 15:57 #10194Zbyšek VodaÚčastníkŘešení: V době programování Arduina odpojit cokoliv, co je připojeno na piny RX a TX (0 a 1). Jak psal Dreamer.
24.1.2017 v 16:34 #10202DzaraaaÚčastníkAno, nejspíše to tak bude. Také jak radíte – uvažuji o koupi nodeMCU, přesně tak bude to bez komplikací. Ale přeci bych chtěl toto řešení nějak využít když už jsem jej pořídil. Zkusím tedy naprogramovat arduino bez nasazeného shieldu a uvidím. Zatím děkuji Všem, kteří se účastnili diskuze 🙂
-
AutorPříspěvky
- Pro reakci na toto téma se musíte přihlásit.