{"id":5386,"date":"2022-10-31T20:20:25","date_gmt":"2022-10-31T19:20:25","guid":{"rendered":"https:\/\/arduino.net.pl\/?p=5386"},"modified":"2023-12-26T22:27:27","modified_gmt":"2023-12-26T21:27:27","slug":"micropython-programowanie-esp32-i-esp8266-przez-wifi-webrepl","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/micropython-programowanie-esp32-i-esp8266-przez-wifi-webrepl\/","title":{"rendered":"MicroPython: Programowanie ESP32 i ESP8266 przez WiFi. WebREPL, flash"},"content":{"rendered":"\n<p>\u0179r\u00f3d\u0142o: <a href=\"https:\/\/youtu.be\/10Y89xaVkqw\">https:\/\/youtu.be\/10Y89xaVkqw<\/a><br>oraz OwocowaAda: <a href=\"https:\/\/learn.adafruit.com\/micropython-basics-esp8266-webrepl\/access-webrepl?gclid=CjwKCAjw5P2aBhAlEiwAAdY7dNwR_NunABR878VYJggElLBBLnaVWILi_Pd2EPresCuE51b6-fvGFRoCQEEQAvD_BwE\" target=\"_blank\" rel=\"noopener\" title=\"\">Access WebREPL<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wgrywanie flash do ESP8266 i ESP32<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Otwieramy TERMINAL (MacOS)<\/li>\n\n\n\n<li>Je\u015bli nie mamy zainstalowanego esptool instalujemy:\n<ul class=\"wp-block-list\">\n<li><code>sudo easy_install esptool<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Pod\u0142\u0105czamy p\u0142ytk\u0119 kablem do portu USB<\/li>\n\n\n\n<li>Sprawdzamy na jakim porcie si\u0119 zameldowa\u0142a:\n<ul class=\"wp-block-list\">\n<li><code>ls \/dev\/cu.*<\/code><\/li>\n\n\n\n<li>u mnie dla ESP8266 wy\u015bwietli\u0142 si\u0119 adres:<em> \/dev\/cu.usbserial-2231140<\/em> <br>U was na pewno b\u0119dzie inny<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Skoro mamy dost\u0119p mo\u017cemy na p\u0142ytce wymaza\u0107 istniej\u0105cy flash:\n<ul class=\"wp-block-list\">\n<li><code>esptool.py --port \/dev\/cu.usbserial-2231140 erase_flash<\/code><br>pami\u0119tamy o zmianie portu<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Nast\u0119pnie \u0142adujemy flash z obowi\u0105zuj\u0105c\u0105 dla p\u0142ytki wersj\u0105 Micropython: <a href=\"https:\/\/micropython.org\/download\/esp8266\/\" target=\"_blank\" rel=\"noopener\" title=\"\">https:\/\/micropython.org\/download\/esp8266\/<\/a><br>\u017beby nie wpisywa\u0107 kilometrowego adresu zmieniamy katalog na ten w kt\u00f3rym przechowujemy flash. U mnie:\n<ul class=\"wp-block-list\">\n<li><code>cd \/Users\/minimj\/Documents\/Arduino\/VSC_MicroPython\/_ADDS\/flash<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Teraz mo\u017cemy za\u0142adowa\u0107 nowy flash. U mnie dla ESP8266:\n<ul class=\"wp-block-list\">\n<li><code>esptool.py --port \/dev\/cu.usbserial-2231140 --baud 460800 write_flash --flash_size=detect 0 esp8266-20220618-v1.19.1.bin<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Dla <strong>ESP32<\/strong> dodatkowe informacje tu:\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.micropython.org\/en\/latest\/esp32\/tutorial\/intro.html\" target=\"_blank\" rel=\"noopener\" title=\"\">https:\/\/docs.micropython.org\/en\/latest\/esp32\/tutorial\/intro.html<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-normal-font-size\"><strong>Najnowszy flash 1.21.0 dla esp8266 na moim komputerze, TERMINAL macOS, \u015bci\u0105ga:<\/strong><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; gutter: false; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\nls \/dev\/cu.*\nesptool.py --port &#x5B;PORT] erase_flash \ncd \/Users\/minimj\/Documents\/Arduino\/VSC_MicroPython\/_ADDS\/flash_MP\nesptool.py --port &#x5B;PORT] --baud 460800 write_flash --flash_size=detect 0 ESP8266_GENERIC-20231005-v1.21.0.bin\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Instalowanie WebREPL dla ESP8266<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Otwieramy panel WiFi w komputerze i znajdujemy sie\u0107 naszego ESP8266. U mnie wygl\u0105da tak:\n<ul class=\"wp-block-list\">\n<li><code>MicroPython-f809c3<\/code><\/li>\n\n\n\n<li>Logujemy si\u0119 do sieci. Has\u0142o to: <em>micropythoN<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Pobieramy folder WebREPL z github-a:\n<ul class=\"wp-block-list\">\n<li><code>git clone https:\/\/github.com\/micropython\/webrepl.git<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Wchodzimy do katalogu webrepl (<code>cd webrepl<\/code>)i uruchamiamy plik webrepl.html\n<ul class=\"wp-block-list\">\n<li><code>open webrepl.html<\/code><br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>W przegl\u0105darce otworzy si\u0119 zak\u0142adka z oknem:<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"226\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13-1024x226.png\" alt=\"\" class=\"wp-image-5389\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13-1024x226.png 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13-300x66.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13-768x170.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13-440x97.png 440w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-19.21.13.png 1073w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Je\u015bli nie ma adresu nale\u017cy wpisa\u0107: <code>ws:\/\/192.168.4.1:8266\/<\/code><\/li>\n\n\n\n<li>Teraz po wci\u015bni\u0119ciu przycisku <strong>Connect<\/strong> powinni\u015bmy si\u0119 po\u0142\u0105czy\u0107 z urz\u0105dzeniem. Je\u015bli si\u0119 nie udaje nale\u017cy wr\u00f3ci\u0107 do TERMINAL-a i wpisa\u0107 komend\u0119:\n<ul class=\"wp-block-list\">\n<li><code>screen \/dev\/cu.usbserial-2231140 115200<\/code> <br><em>\/oczywi\u015bcie podmieniamy kana\u0142 usb na w\u0142asny<\/em>\/<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Powinno si\u0119 otworzy\u0107 okno z informacj\u0105:\n<ul class=\"wp-block-list\">\n<li><em>MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266<\/em><br>je\u015bli nie, warto zresetowa\u0107 modu\u0142. Jeste\u015bmy wewn\u0105trz p\u0142ytki, mo\u017cemy pisa\u0107 program<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Wpisujemy linijk\u0119:\n<ul class=\"wp-block-list\">\n<li><code>import webrepl_setup<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-20.06.03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"163\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-20.06.03.png\" alt=\"zrzut z okna przegl\u0105darki\" class=\"wp-image-5392\" style=\"width:546px;height:163px\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-20.06.03.png 546w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-20.06.03-300x90.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2022\/10\/Zrzut-ekranu-2022-10-31-o-20.06.03-440x131.png 440w\" sizes=\"auto, (max-width: 546px) 100vw, 546px\" \/><\/a><figcaption class=\"wp-element-caption\">rys. procedura webrepl_setup<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wpisujemy nowe has\u0142o, potwierdzamy, dostajemy info:\n<ul class=\"wp-block-list\">\n<li><em>Changes will be activated after reboot<\/em><br><em>Would you like to reboot now? (y\/n)<\/em><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Oczywi\u015bcie wpisujemy <code>y<\/code><\/li>\n\n\n\n<li>Teraz je\u015bli wr\u00f3cimy do przegl\u0105darki i przyci\u015bniemy <strong>Connect<\/strong> w oknie programu pojawi si\u0119:\n<ul class=\"wp-block-list\">\n<li>Welcome&nbsp;to&nbsp;MicroPython!&nbsp;&nbsp;&nbsp;&nbsp;<br>Password:&nbsp;<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Wpisujemy nowe has\u0142o i dostajemy informacj\u0119: <em>WebREPL connected<\/em>. To oznacza, \u017ce je\u015bli od\u0142\u0105czymy p\u0142ytk\u0119 od komputera, to nadal b\u0119dzie do niej dost\u0119p przez WiFi i WebREPL<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">WebREPL dla ESP32<\/h2>\n\n\n\n<p>Tu ju\u017c nie jest tak prosto jak dla ESP8266. Lepiej pos\u0142u\u017cy\u0107 si\u0119 edytorem <a href=\"https:\/\/thonny.org\/\" target=\"_blank\" rel=\"noopener\" title=\"Thonny\">Thonny<\/a>. <br>Thonny to ca\u0142kiem sprytne narz\u0119dzie dzi\u0119ki kt\u00f3remu mo\u017cemy wgra\u0107 do p\u0142ytki flash, \u0142\u0105czy\u0107 si\u0119 z ni\u0105 przez port USB jak i korzystaj\u0105c z WebREPL. Jedna wa\u017cna r\u00f3\u017cnica jest taka, \u017ce zanim uruchomimy WebREPL musimy do pliku <strong>boot.py<\/strong> wpisa\u0107 nast\u0119puj\u0105cy kod:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\nimport webrepl\nimport credentials\n\ndef connect():\n    import network\n    sta_if = network.WLAN(network.STA_IF)\n    if not sta_if.isconnected():\n        print(&#039;connecting to network...&#039;)\n        sta_if.active(True)\n        sta_if.connect(credentials.WIFI_SSID, credentials.WIFI_PASSWORD)\n        while not sta_if.isconnected():\n            pass\n    print(&#039;network config:&#039;, sta_if.ifconfig())\n\ndef showip():\n    import network\n    sta_if = network.WLAN(network.STA_IF)\n    print(&#039;network config:&#039;, sta_if.ifconfig())\n\nconnect()\nwebrepl.start()\n<\/pre><\/div>\n\n\n<ul class=\"wp-block-list\">\n<li>Przez Thonny \u0142\u0105czymy si\u0119 z ESP32 przez USB, wpisujemy powy\u017cszy kod (pami\u0119tamy o <strong><em>Ctrl+C<\/em><\/strong> \u017ceby przerwa\u0107 po\u0142\u0105czenie i uzyska\u0107 dost\u0119p do p\u0142ytki). Je\u015bli mamy ju\u017c w pliku <strong>boot.py<\/strong> zapisane \u0142\u0105czenie z sieci\u0105, dodajemy tylko linie: <strong>import webrepl<\/strong> oraz <strong>webrepl.start()<\/strong><\/li>\n\n\n\n<li>Teraz po<strong> &gt;&gt;&gt;<\/strong> wpisujemy: <strong>import webrepl_setup<\/strong> \n<ul class=\"wp-block-list\">\n<li>Dalej wszystko przebiega jak opisa\u0142em powy\u017cej dla esp8266 (patrz: <em>rys. procedura webrepl_setup<\/em>)<\/li>\n\n\n\n<li>Po restarcie (<strong><em>Ctrl+D<\/em><\/strong>) otrzymujemy info:\n<ul class=\"wp-block-list\">\n<li>u mnie: WebREPL daemon started on ws:\/\/192.168.1.156:8266<br>Started webrepl in normal mode<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Teraz wystarczy\u0142oby wpisa\u0107 w konfiguracji Thonny adres oraz has\u0142o podane przy setup-ie i wszystko powinno \u015bmiga\u0107 (pami\u0119tamy, \u017ceby w komputerze w\u0142\u0105czone by\u0142o WiFi to samo z kt\u00f3rym \u0142\u0105czy si\u0119 p\u0142ytka). Niestety u mnie nie dzia\u0142a, Thonny si\u0119 wywala i pozostaje mi tylko skorzysta\u0107 z <strong>webrepl.html<\/strong>. B\u0119d\u0119 nad tym pracowa\u0142, je\u015bli sprawdz\u0119 co jest nie tak, dam zna\u0107.<\/li>\n<\/ul>\n\n\n\n<p><strong>Dokumentacja<\/strong>: <a href=\"https:\/\/docs.micropython.org\/en\/latest\/esp32\/quickref.html?highlight=webrepl\">https:\/\/docs.micropython.org\/en\/latest\/esp32\/quickref.html?highlight=webrepl<\/a><br><strong>GitHub<\/strong>: <a href=\"https:\/\/github.com\/micropython\/webrepl\" title=\"\">https:\/\/github.com\/micropython\/webrepl<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">LINKI:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.micropython.org\/en\/v1.19.1\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Documentation for MicroPython v1.19.1<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/youtu.be\/zWJb6X_lOr8\" target=\"_blank\" rel=\"noopener\" title=\"\">ESP32 MicroPython pro-tip: Use WebREPL within Thonny<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=EnTqX_nLTHM\">https:\/\/www.youtube.com\/watch?v=EnTqX_nLTHM<\/a><\/li>\n<\/ul>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>\u0179r\u00f3d\u0142o: https:\/\/youtu.be\/10Y89xaVkqworaz OwocowaAda: Access WebREPL Wgrywanie flash do ESP8266 i ESP32 Najnowszy flash 1.21.0 dla esp8266 na moim komputerze, TERMINAL macOS, \u015bci\u0105ga: Instalowanie WebREPL dla ESP8266 WebREPL dla ESP32 Tu&#8230;<\/p>\n","protected":false},"author":3,"featured_media":5394,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[80,5,141,65,59],"tags":[81,16,167,30,156],"class_list":["post-5386","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp32","category-esp8266","category-micropython","category-programowanie","category-python","tag-esp32","tag-esp8266","tag-flash","tag-tutorial","tag-webrpl"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/5386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=5386"}],"version-history":[{"count":27,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/5386\/revisions"}],"predecessor-version":[{"id":6299,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/5386\/revisions\/6299"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media\/5394"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=5386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=5386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=5386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}