Arduino nanon linkittäminen ESP8266 Wifi -moduuliin

Aloin äskettäin leikkiä Arduinojen kanssa muutaman anturin liittämiseksi. Käytin Arduino Nanoa lämpötilan, kosteuden, ilmanpaineen ja valon tason mittaamiseen.

Tietojen tallentamiseksi tietokantaan käytin toista Arduinoa, jonka liitin Raspberry Pi -laitteeseen, ja annoin kahden Arduinon puhua langattomasti toisilleen 433 MHz: n kautta.

Kaikki toimii melko hyvin, mutta 433 MHz: n tiedonsiirto ei ole aivan luotettavin (kaipaan usein lähetystä). Kun törmäsin ESP8266-moduuliin, se tuntui optimaaliselta ratkaisulta viestintään. Kuinka hienoa olisi, jos voisin vain vedä tiedot pois HTTP-puhelun kautta Raspberry Pi: ltä?

Sen jälkeen, kun olen pelannut monta tuntia, ladannut monia erilaisia laiteohjelmia, turhautunut yhä enemmän, koska en voinut saada se tekemään mitä tahansa, saan sen vihdoin toimimaan FTDI-moduulin kautta, joka on kytketty näin:

kirjoita kuvan kuvaus täällä

Käytän MB102-tehomoduulia ESP8266: n vaatiman 3.3v: n toimittamiseen. Osoittautuu, että sinun on liitettävä maadoitus MB102: sta FTDI-moduulin maahan saadaksesi oikean vastauksen. Sen jälkeen pystyin lähettämään AT-komentoja ja saamaan oikeat vastaukset. Voisin jopa yhdistää sen kotini Wifi-verkkoon.

Seuraava asia, jonka haluan tehdä, on liittää se Arduinoon. Löysin tälle hyvin yksinkertaisen mallin ( http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/ ), jossa yhdistät RX TX: hen ja TX RX: ään. Yhdistin MB102: n seuraavasti:

kirjoita kuvan kuvaus tähän

Ilmeisesti minun pitäisi nyt pystyä lataamaan tyhjä luonnos Arduinoon ja käyttää sitten sarjamonitoria uudelleen AT-komennon tunnistamiseen, täsmälleen samalla tavalla kuin tein sen käytettäessä FTDI-moduulia.

Ongelmana on, että en saa mitään tällä tavalla. En edes näe omia AT-komentojani konsolissa. Näen ESP8266: n vilkkuvan joka kerta kun lähetän komennon (näen sen olevan edelleen yhteydessä reitittimeeni, luultavasti se muisti FTDI: n kautta lähettämäni tiedot .. .?)

Kysymys kuuluu, mitä menen pieleen? Luin joitain viestejä TX: stä Arduinosta, joka on myös 5v ja että sinun on tehtävä jotain, jotta se palautetaan takaisin 3.3v: hen, mutta siellä ovat myös monia opetusohjelmia, joissa sanotaan, että sitä ei tarvita.

Vastaa

Helpoin tapa työskennellä näiden ohjelmien kanssa on muodostaa yhteys ne Arduino-nastojen varapariin ja käytä kommunikointiin SoftwareSerialia (ellet käytä yhtä Arduinoa useammalla kuin yhdellä UART-laitteella). asettaa ESP8266 vastaamaan sitä. Ne lähetetään tällä hetkellä 115200 baudilla. Voit käyttää laitteiston UART-liitintä nastoissa (0, 1), mutta Arduinon uudelleenohjelmointi tarkoittaa, että & katkaistaan ESP: n yhteys väliaikaisesti joka kerta ja vanhenee melko nopeasti.

Tässä on, mitä teen uusilla ESP: llä (Jos olet vilkastanut ESP: täsi uudelleen, sinun on ensin ladattava AT-käskyjoukkoemulaattori ja ensin salama se uudelleen):

# To configure a new ESP module: # Connect the ESP and the FTDI as in your top diagram, set your # terminal-emulator to 115200 baud, and enter the following: AT # ESP should respond "OK" AT+RST # Resets the ESP AT+UART_DEF=9600,8,1,0,0 # Sets ESP UART: 9600,N,8,1,no flow ctl # Now change the terminal emulator baud rate to 9600 AT+CWMODE=1 # Set ESP to station mode (client) ATE0 # Set ESP"s echo off AT+CWLAP # List access points - after a short pause # the ESP returns a list of WiFi access points 

Tulevaa tarvetta varten tässä on linkki ESP8266 AT -käyttöjärjestelmään .

Päivitä kesäkuu 2020: Yllä oleva linkki oli rikki, nyt korjattu. Löydät dokumentaation myös osoitteesta Espressif ”github-tili (verkossa luettavissa, mutta ei pdf, tästä päivästä lähtien).

Kommentit

  • Tajusin juuri, että tämä kysymys on ruopattu 6 kuukauden vastaamattomien kysymysten arkistosta. . No, ehkä tämä vastaus voi auttaa jotakuta muuta nyt tai pian.

vastaus

Saattaa olla ongelma siirtonopeudella Nano FTDI -piiriltä RX / TX: lle ja ESP8266: lle. Katkaisitko yhteyden luonnin lataamisen yhteydessä?

Entä jos yrität sen sijaan tätä?

Kippis!

Kommentit

  • Kun työskentelen ESP8266: n kanssa, se toimii 115200 baudilla, kaikki muu antaa vain roskaa . Olen ’ kokeillut linkitetyn blogin koodia (vain muuttanut siirtonopeutta), näen sen ’ lähettävän komennon ESP8266: lle (sininen valo vilkkuu), mutta se epäonnistuu, kun se yrittää suorittaa Serial.find (” > ”) -komento. Näen myös mitään ESP8266: n lähtöä. Katkaisin ESP8266: n yhteyden lataamisen aikana.

Vastaa

Löysin täällä hyvän opetusohjelman, yritin ja se tekee työ: https://blogs.msdn.microsoft.com/abhinaba/2016/01/23/esp8266-wifi-with-arduino-uno-and-nano/

Kommentit

  • Se toimii lukuun ottamatta CIOBAUD-komentoa, joka on korvattu.Kaikkien UART-toimintojen nykyinen komento on: AT+UART_DEF=<baud>,<databits>,<stopbits>,<parity>,<flowcontrol> tai AT+UART_DEF-9600,8,1,0,0 yhteensopiva SoftwareSerialin kanssa. Korvaa ” _DEF ” sanoilla ” _CUR ” jos tämä muutos koskee vain istuntoa; ensimmäinen komento tekee siitä käynnistysoletusasetuksen.
  • Voitko laajentaa kyseisen blogin tietoja tähän vastaukseen, jos linkki kuolee, mutta myös tehdä siitä parempi vastaus

Vastaa

Kyllä, jos käytät eri virtalähteitä, kentät on aina kytkettävä, muuten levyt eivät tiedä mitä nolla volttia on.

Arduinon TX on 5v, tarvitset tasonsiirtimen 5v: n muuntamiseksi 3.3v: ksi, jotain tällaista ( https://shop.pimoroni.com/products/adafruit-4-channel-i2c-safe-bi-directional-logic-level-converter?utm_medium=cpc&utm_source=googlepla&variant=302017581&gclid=CPqujsPxlc0CFcYcGwodb8YIoA )

ESP8266: n TX on 3,3 V ja Arduinon RX on 5 V, ja tarvitset tasonsiirtimen tämän käsittelemiseksi. Voit käytä samaa kuin yllä on lueteltu, koska se voi muuntaa neljä korkeaa (5v) signaalia 4 matalaksi (3.3v) signaaliksi.

Ihmiset sanovat, että voit niin vastuksilla, mutta olen myös lukenut, että he älä toimi riittävän hyvin käsittelemään nopeasti vaihtuvia digitaalisia signaaleja (joten 300 Baud sarjasi voi olla OK, mutta ei 115000 :))

Ihmiset a Sanon myös, ettet tarvitse tasomuuntimia. Se on totta, että saattaa toimia jonkin aikaa ilman niitä, mutta ennemmin tai myöhemmin jokin menee pieleen. Jännitteen lisääminen nopeuttaa prosessia, jotta voit kuvitella mitä tapahtuu, jos liität 230 V: n virtalähteen suoraan USB-laitteeseen.

Viimeinen asia: tiedätkö, että ESP8266 on 80/160 MHz: n prosessori, jossa on 256 kt RAM-muistia, kun verrataan sitä sinuun Arduinoon, se on kuin tietokoneesi ohjelmointi puhelimesi kautta. Voit kokeilla yhdistää ESP8266 FTDI-moduulin kautta ja ohjelmoida se Arduino IDE: n kautta Arduino C: ssä. Se on paljon helpompaa kuin kaikki nämä yhteysasiat.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *