{"id":1022,"date":"2019-09-07T09:34:32","date_gmt":"2019-09-07T09:34:32","guid":{"rendered":"http:\/\/fambach.net\/?p=1022"},"modified":"2024-04-04T13:03:57","modified_gmt":"2024-04-04T13:03:57","slug":"esp32-nuetzliche-infos","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/esp32-nuetzliche-infos\/","title":{"rendered":"ESP32 Useful Information"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Contents\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Fakten\" >Facts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Anwendungsbereiche\" >Areas of application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Ansichten\" >Views<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Programmierung\" >Programming<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Bibliotheken\" >Libraries<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Testprogramm\" >Test programme<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Alexa\" >Alexa<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Probleme\" >Problems<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Gerat_erkannt_funktioniert_aber_nicht\" >Ger&auml;t erkannt funktioniert aber nicht<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Sonstiges\" >Miscellaneous<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Einbinden_mit_dem_Handy\" >Einbinden mit dem Handy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#ESPHome\" >ESPHome<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Fazit\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Verwandte_Beitrage\" >Verwandte Beitr&auml;ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/#Quellen\" >Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Der ESP32 ist der Nachfolger des erfolgreichen ESP8266 Controllers. Er&nbsp;besitzt eine 32Bit Tensilica&nbsp;Xtensa LX6 CPU in der Regel mit zwei Kernen (RISC Architektur). Hier sammle ich f&uuml;r mich interessante Informationen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Areas of application<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Household applications<\/li>\n\n\n\n<li>Home automation<\/li>\n\n\n\n<li>Smart sockets and lighting control<\/li>\n\n\n\n<li>WLAN Control<\/li>\n\n\n\n<li>Baby monitor<\/li>\n\n\n\n<li>IP cameras<\/li>\n\n\n\n<li>Sensor networks<\/li>\n\n\n\n<li>Wearables <\/li>\n\n\n\n<li>Bloototh Applikationen wie Kopfh&ouml;rer\/Lautsprecher &#8230; <\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Documentation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.espressif.com\/en\/products\/hardware\/esp32\/overview\">https:\/\/www.espressif.com\/en\/products\/hardware\/esp32\/overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/espressif\/arduino-esp32\">https:\/\/github.com\/espressif\/arduino-esp32<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Packaging<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Den ESP32 gibt es als Chip oder Modul mit zus&auml;tzlichen externen Speicher, Antennen u.&auml;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The current versions can be found in the Espressif ordering information. Here is the link to it:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/espressif_products_ordering_information_en.pdf\"><\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/espressif_products_ordering_information_en.pdf\" target=\"_blank\">Espressif Order Information<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Designation<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Every ESP comes with a label. The individual chips are marked with a code. Here is an example:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"659\" height=\"797\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-15_00_51.jpg\" alt=\"\" class=\"wp-image-6871\"><figcaption class=\"wp-element-caption\">Espressif Datasheet \u2013 Ordering Information <br>Source: https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">With the modules, the print is more of a reference to the respective data sheet or the <a rel=\"noreferrer noopener\" href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/espressif_products_ordering_information_en.pdf\" target=\"_blank\">Order information<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Auch gibt es die Chips und Module in unterschiedlichen Versionen, die sich zus&auml;tzlich voneinander unterscheiden k&ouml;nnen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">inner workings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The following diagram shows the architecture of the controller.<br>In addition to various interfaces, it has:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wi-Fi<\/li>\n\n\n\n<li>Bluetooth<\/li>\n\n\n\n<li>A temperature sensor<\/li>\n\n\n\n<li>Crypto Routines<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/fambach.net\/wp-content\/uploads\/2018\/06\/666px-Espressif_ESP32_Function_Block_Diagram.svg_.png\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"591\" src=\"https:\/\/fambach.net\/wp-content\/uploads\/2018\/06\/666px-Espressif_ESP32_Function_Block_Diagram.svg_.png\" alt=\"\" class=\"wp-image-1024\" srcset=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2018\/06\/666px-Espressif_ESP32_Function_Block_Diagram.svg_.png 666w, https:\/\/www.fambach.net\/wp-content\/uploads\/2018\/06\/666px-Espressif_ESP32_Function_Block_Diagram.svg_-300x266.png 300w\" sizes=\"auto, (max-width: 599px) calc(100vw - 50px), (max-width: 767px) calc(100vw - 70px), (max-width: 991px) 429px, (max-width: 1199px) 637px, 354px\" \/><\/a><figcaption class=\"wp-element-caption\">ESP32 block diagram<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Storage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der ESP kommt mit unterschiedlichen Speicher Konfigurationen daher, hier ein kurzer &Uuml;berblick welche Kombinationen aktuell m&ouml;glich sind. Um welche Konfiguration es sich handelt kann dem jeweiligen Datenblatt oder der <a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/espressif_products_ordering_information_en.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Order Information<\/a> to be taken.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">RAM<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ur-Esp32 hat ein 520KB internen Speicher aber auch die M&ouml;glichkeit diesen extern zu erweitern. Aktuell wird als externe Erweiterung nur PSRAM unterst&uuml;tzt. Es ist m&ouml;glich den Speicher auf bis zu 8MB zu erweitern wobei aktuell nur 4 MB gleichzeitig adressiert werden k&ouml;nnen. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Flash<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Depending on the configuration, the ESP comes in chip format with 0, 2, or 4 MB of internal FLASH. For modules, the FLASH can be externally fitted within the module. The original ESP can address a maximum of 16 MB of flash memory. Depending on how the flash memory is mapped and what type is used, different amounts of it can be managed.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>QSPI Flash\n<ul class=\"wp-block-list\">\n<li>Beim Mapping als Instuctions Speicher,  k&ouml;nnen bis zu 11MB + 248KB adressiert werden. Bei mehr als 3 MB + 248 KB wird der Zugriff inperformant.<\/li>\n\n\n\n<li>Beim Mapping als exklusiv lesen Datenspeicher k&ouml;nnen maximal 4MB adressiert werden.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Externer SRam can als CPU Datenspeicher gemappt weden und es werden bis zu 8MB unterst&uuml;tzt. Es k&ouml;nnen aber nur auf 4MB gleichzeitig zugegriffen werden. (Beispiel OTA 2x 4MB Nutzbar) <\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">ROM<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The UR-ESP has 448KB of ROM. According to the Espressif Forum, these include special internal functions and, for example, the Bluetooth stack. The externally usable functionality can be found on Git:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/espressif\/esp-idf\/tree\/master\/components\/esp32\/include\/rom\">https:\/\/github.com\/espressif\/esp-idf\/tree\/master\/components\/esp32\/include\/rom<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">UART 1,2,3<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Esp32 besitzt 3 UART Schnittstellen, die von einander unabh&auml;ngig konfiguriert werden k&ouml;nnen.  Die Maximalgeschwindigkeit betr&auml;gt 5Mbps  Dies erm&ouml;glicht eine asysnchrone Kommunikation mit RS232, RS485 und IrDa unterst&uuml;tzung. <strong>Any GPIO pin can be used as a connection.<\/strong>. (Source: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf\" target=\"_blank\">Espressif ESP32 datasheet<\/a> Page 28, 31)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Default pin assignment:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table id=\"wpls-table-1\"><tbody><tr><th>UART<\/th><th>RX IO<\/th><th>TX IO<\/th><th>CTS<\/th><th>RTS<\/th><\/tr><tr><td>UART0<\/td><td>GPIO3<\/td><td>GPIO1<\/td><td>N\/A<\/td><td>N\/A<\/td><\/tr><tr><td>UART1<\/td><td>GPIO9<\/td><td>GPIO10<\/td><td>GPIO6<\/td><td>GPIO11<\/td><\/tr><tr><td>UART2<\/td><td>GPIO16<\/td><td>GPIO17<\/td><td>GPIO8<\/td><td>GPIO7<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Source: https:\/\/circuits4you.com\/2018\/12\/31\/esp32-hardware-serial2-example\/<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In the Arduino GUI, the following settings are available:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Serial \u2013 Uart0 GPIO 1\/3<\/li>\n\n\n\n<li>Serial1 \u2013 Uart 1, GPIO 9\/10 already mostly occupied by flash memory<\/li>\n\n\n\n<li>Serial2 \u2013 Uart 2 GPIO 16\/17 <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ansteuerung ist in allen g&auml;ngigen Frameworks wie Arduino IDE, Espressif, Micropython&#8230; enthalten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">I&sup2;C Wire Bus<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The ESP32 has two Wire buses. <strong>F&uuml;r den Anschluss kann jeder GPIO Pin gew&auml;hlt werden.<\/strong>  It can operate at a speed of 100Kbit\/s (Standard Mode), 400Kbit\/s (Fast Mode), and up to 5MHz. Both buses support 7-bit and 10-bit addressing. (Source: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf\" target=\"_blank\">Espressif ESP32 Datasheet<\/a> Page 28,31)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Ansteuerung ist in allen g&auml;ngigen Frameworks wie Arduino IDE, Espressif, Micropython&#8230; enthalten. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ADC's<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der ESP32 besitzt zwei getrennt ADC 12Bit Register mit insgesamt 18 Kan&auml;len. Durch die 12 Bit ergibt sich eine Messspanne von 0 bis 4095.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ADC1 hat 8 Kan&auml;le, diese sind an den GPIOs 32-39 Verf&uuml;gbar. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ADC2 besitzt 10 Kan&auml;le und ist mit den GPIOs &nbsp;0, 2, 4, 12 &#8211; 15 und 25 &#8211; 27 verbunden. Weiterhin ist der <strong>ADC2 cannot be used when Wi-Fi is in use<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table id=\"wpls-table-2\"><thead><tr><th>GPIO<\/th><th>ADC<\/th><th>Channel<\/th><th>Note <\/th><\/tr><\/thead><tbody><tr><td>36<\/td><td>1<\/td><td>0<\/td><td><\/td><\/tr><tr><td>37<\/td><td>1<\/td><td>1<\/td><td><\/td><\/tr><tr><td>38<\/td><td>1<\/td><td>2<\/td><td><\/td><\/tr><tr><td>39<\/td><td>1<\/td><td>3<\/td><td><\/td><\/tr><tr><td>32<\/td><td>1<\/td><td>4<\/td><td><\/td><\/tr><tr><td>33<\/td><td>1<\/td><td>5<\/td><td><\/td><\/tr><tr><td>34<\/td><td>1<\/td><td>6<\/td><td><\/td><\/tr><tr><td>35<\/td><td>1<\/td><td>7<\/td><td><\/td><\/tr><tr><td>4<\/td><td>2<\/td><td>0<\/td><td><\/td><\/tr><tr><td>0<\/td><td>2<\/td><td>1<\/td><td>Most often assigned to boot options<\/td><\/tr><tr><td>2<\/td><td>2<\/td><td>2<\/td><td><\/td><\/tr><tr><td>15<\/td><td>2<\/td><td>3<\/td><td><\/td><\/tr><tr><td>13<\/td><td>2<\/td><td>4<\/td><td><\/td><\/tr><tr><td>12<\/td><td>2<\/td><td>5<\/td><td><\/td><\/tr><tr><td>14<\/td><td>2<\/td><td>6<\/td><td><\/td><\/tr><tr><td>27<\/td><td>2<\/td><td>7<\/td><td><\/td><\/tr><tr><td>25<\/td><td>2<\/td><td>8<\/td><td><\/td><\/tr><tr><td>24<\/td><td>2<\/td><td>9<\/td><td><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">ADC assignment to GPIOs<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Further information can be found in the article linked below from Espressif.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Programming environment<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Arduino GUI<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog wp-block-embed-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"TLa0ht5EPN\"><a href=\"https:\/\/www.fambach.net\/en\/esp32-arduino-gui-einrichten\/\">Setting up ESP32 with the Arduino GUI<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201eSetting up ESP32 with the Arduino GUI \u2013 Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/esp32-arduino-gui-einrichten\/embed\/#?secret=VZSdazLkmo#?secret=TLa0ht5EPN\" data-secret=\"TLa0ht5EPN\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Platformio<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog wp-block-embed-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"fZHgiN36H3\"><a href=\"https:\/\/www.fambach.net\/en\/platform-io\/\">Platform IO<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201ePlatform IO\u201c \u2014 Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/platform-io\/embed\/#?secret=6GHrnDniXr#?secret=fZHgiN36H3\" data-secret=\"fZHgiN36H3\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Espressif IDF<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog wp-block-embed-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"GXxvR91RJH\"><a href=\"https:\/\/www.fambach.net\/en\/espressif-idf-fuer-esp32-s2-installieren\/\">Install Espressif IDF for ESP32-S2<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201eInstalling Espressif IDF for ESP32-S2\u201c \u2014 Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/espressif-idf-fuer-esp32-s2-installieren\/embed\/#?secret=yOS7GYL9tB#?secret=GXxvR91RJH\" data-secret=\"GXxvR91RJH\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">VS-Code f&uuml;r Espressif IDF<\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog wp-block-embed-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"4L1kRuSgo1\"><a href=\"https:\/\/www.fambach.net\/en\/vs-code-espressif-idf\/\">VS-Code Espressif IDF<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201eVS-Code Espressif IDF \u2014 Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/vs-code-espressif-idf\/embed\/#?secret=CgRcHXWLJo#?secret=4L1kRuSgo1\" data-secret=\"4L1kRuSgo1\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Voltage at ESP query<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der ESP 8266 hat noch die M&ouml;glichkeit die Spannung zu messen. Beim ESP32 be&ouml;tigt man eine Hilfsschaltung, ein Spannungsteiler mit 100kOhm und 10kOhm am ADC. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More info can be found in the linked post:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.arduinoforum.de\/arduino-Thread-ESP32-Batteriestatus\">https:\/\/www.arduinoforum.de\/arduino-Thread-ESP32-Batteriestatus<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Formel zur Spannungsberechnung<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Uin = (100 + 10) \/ 10 ((R1 + R2) \/R2)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<cite>https:\/\/www.arduinoforum.de\/arduino-Thread-ESP32-Batteriestatus<\/cite><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Software Tips<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Read hardware data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The esp.h file\/ESP class provides access to some hardware information. Such as ID, versions, free memory, etc. The complete range of functions can be viewed on GitHub. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/espressif\/arduino-esp32\/blob\/master\/cores\/esp32\/Esp.h\">https:\/\/github.com\/espressif\/arduino-esp32\/blob\/master\/cores\/esp32\/Esp.h<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eingebunden werden muss die Esp.h meist nicht diese ist bei den Standardbibliotheken mit dabei. (Danke f&uuml;r den Hinweis an Andreas, siehe Kommentar) . Folgend ein paar Beispiele aus der Datei.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Neustart ausl&ouml;sen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Funktion ist das Neustarten des ESPs. Dies kann nach einem remote Update der Firmware n&ouml;tig sein oder bei schlampiger Programmierung wenn der Speicher voll ist ;).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">ESP.restart();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Query storage information<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gerade f&uuml;r das Debuggen sind Speicherinfomationen ganz n&uuml;tzlich. Zum Beispiel kann hieran erkannt werden, ob verwendeter Speicher auch wieder frei gegeben wird. Die folgenden k&ouml;nnen hierf&uuml;r aufgerufen werden: <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heap\/SPI Speicher Gr&ouml;&szlig;e<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">uint32_t var = ESP.getHeapSize();\nuint32_t var2 = ESP.getPsramSize();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Free Heap\/PS Memory<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">uint32_t var1 = ESP.getFreeHeap();\nuint32_t var2 = ESP.getFreePsram();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Minimum Heap\/SPI memory since controller start.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">uint32_t var1 = ESP.getMinFreeHeap(); \nuint32_t var2 = ESP.getMinFreePsram();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Maximale Blockgr&ouml;&szlig;e des Heap\/SPI Speichers<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">uint32_t var1 = ESP.getMaxAllocHeap();\nuint32_t var2 = ESP.getMaxAllocPsram();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Basic OTA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OTA &#8211; Over The Air &#8211; Protokolle erm&ouml;glichen es Microcontroller &uuml;ber das Netzwerk zu flashen. Da der ESP32 &uuml;ber WLAN verf&uuml;gt ist ein flashen &uuml;ber das Netz m&ouml;glich. Die ausf&uuml;hrliche Anleitung kann unter folgenden Link gefunden werden:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/lastminuteengineers.com\/esp32-ota-updates-arduino-ide\/\" target=\"_blank\">Anleitung f&uuml;r OTA<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Basically, the procedure is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Install Python<\/li>\n\n\n\n<li>Beispiel Project Basic OTA ausw&auml;hlen<\/li>\n\n\n\n<li>Enter Wi-Fi data<\/li>\n\n\n\n<li>Flash OTA firmware <\/li>\n\n\n\n<li>OTA teil in eigenen Code einbauen und immer &uuml;ber das Netzwerk flashen<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"594\" height=\"255\" data-id=\"6813\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-18-17_59_27.jpg\" alt=\"\" class=\"wp-image-6813\"><figcaption class=\"wp-element-caption\">Projekt ausw&auml;hlen, Netzwerkdaten angeben und compilieren.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"350\" height=\"448\" data-id=\"6814\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-18-17_58_59.jpg\" alt=\"\" class=\"wp-image-6814\"><figcaption class=\"wp-element-caption\">Board einmal &uuml;ber USB programmieren.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"614\" data-id=\"6812\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-18-18_03_07.jpg\" alt=\"\" class=\"wp-image-6812\"><figcaption class=\"wp-element-caption\">Danach kann &uuml;ber das Netzwerk geflashed werden.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"522\" data-id=\"6815\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-18-18_08_21.jpg\" alt=\"\" class=\"wp-image-6815\"><figcaption class=\"wp-element-caption\">This is what it looks like in the console.<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Problems<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">WiFi only connects every 2nd time.<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To start the connection as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\">  WiFi.disconnect();\n  WiFi.mode(WIFI_STA); \/\/ can also be another mode\n  while (WiFi.status() != WL_CONNECTED) {\n    WiFi.begin(SSID, PASSWORD);\n    delay(1000);\n  }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Storage Full \/ too small<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Gerade bei Graphiken oder bei der Bluetooth Biliothek ger&auml;t man schnell mal an die Grenzen des verf&uuml;gbaren Programmspeichers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein gutes Einf&uuml;hrungvideo gibts von Andreas Spiess:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=Qu-1RK4Fk7g\" target=\"_blank\">YouTube Andreas Spiess \u2013 More Memory for the ESP32\u2026<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Grunde geht es darum die Speicherzuordnung richtig einzustellen. Um mehr Speicher f&uuml;r die Applikationen zu bekommen, kann OTA ausgeschaltet oder der SPIFFS Speicher vermindert werden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Arduino GUI<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In der Arduino Gui sind die einstellungen im Men&uuml; Werkzeuge zu finden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"588\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-09_48_31.jpg\" alt=\"\" class=\"wp-image-6852\"><figcaption class=\"wp-element-caption\">Arduino GUI \u2013 Memory Settings<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wer zus&auml;tzliche Optionen braucht, kann diese in der Konfiguration XML hinzuf&uuml;gen.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Espressif-IDF<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">In der Espressiv-IDF k&ouml;nnen die Einstellungen &uuml;ber die Menuconfig und &uuml;ber eine eigene Partitionstabelle vorgenommen werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"427\" height=\"252\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-09_56_10.jpg\" alt=\"\" class=\"wp-image-6855\"><figcaption class=\"wp-element-caption\">Espressif IDF &#8211; Menuconfig, Hauptmen&uuml;<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"427\" height=\"176\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-09_55_00.jpg\" alt=\"\" class=\"wp-image-6854\"><figcaption class=\"wp-element-caption\">Espressif-IDF &#8211; Anpassen der Speichergr&ouml;&szlig;e und der Autodetectoption<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"547\" height=\"106\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-10_01_16.jpg\" alt=\"\" class=\"wp-image-6857\"><figcaption class=\"wp-element-caption\">Espressif-IDF \u2013 Customising the Partition Table<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"874\" height=\"132\" src=\"https:\/\/www.fambach.net\/wp-content\/uploads\/2020-12-20-09_58_18.jpg\" alt=\"\" class=\"wp-image-6856\"><figcaption class=\"wp-element-caption\">Espressif-IDF \u2013 Partition table in the project directory<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Verwandte Beitr&auml;ge<\/h2>\n\n\n<div class=\"display-posts-listing\">\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp-web-serial-bibliothek\/\">ESP WEB Serial Library<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp32-c3-seeed-studio-xiao\/\">ESP32-C3 Seeed Studio XIAO<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp32-c3-super-mini-board\/\">ESP32-C3 Super Mini Board<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/preview-luatos-esp32-c3-board\/\">Preview \u2013 LuatOS ESP32-C3 Board<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp32-bluetooth-gamepad-2\/\">ESP32 Bluetooth Gamepad<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp01-relay-platinen-2\/\">ESP01 \u2013 DHT11 Temperature and Humidity Sensor Boards<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp01-relay-platinen\/\">ESP01 Relay Boards<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp8266-32-wifi-manager\/\">ESP8266\/32 WiFi Manager.<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/d1-mini-shield-prototyp-platine\/\">D1 Mini Shield \u2013 Prototype PCB<\/a><\/div>\n<div class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/preview-esp01-relais-modul\/\">ESP01 \u2013 Relay Board<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/ESP32\">https:\/\/en.wikipedia.org\/wiki\/ESP32<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.espressif.com\/en\/products\/hardware\/esp32\/overview\">https:\/\/www.espressif.com\/en\/products\/hardware\/esp32\/overview<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/espressif\/arduino-esp32\">https:\/\/github.com\/espressif\/arduino-esp32<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/randomnerdtutorials.com\/esp32-pinout-reference-gpios\/\" target=\"_blank\" rel=\"noreferrer noopener\">ESP Wroom 32 IO Reference<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.espressif.com\/projects\/esp-idf\/en\/latest\/esp32\/api-reference\/peripherals\/adc.html\" target=\"_blank\">Espressif's Contribution to the ADC<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/lastminuteengineers.com\/esp32-ota-updates-arduino-ide\/\" target=\"_blank\">Anleitung f&uuml;r OTA<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=Qu-1RK4Fk7g\" target=\"_blank\">YouTube Andreas Spiess \u2013 More Memory for the ESP32\u2026<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/thingpulse.com\/esp32-how-to-use-psram\/#:~:text=Espressif%2C%20the%20manufacturer%20of%20the,lower%204MB%20in%20your%20applications.\" target=\"_blank\">ThingPulse's contribution to PSRam<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/espressif_products_ordering_information_en.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">Espressif Order Information<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf\">https:\/\/www.espressif.com\/sites\/default\/files\/documentation\/esp32_datasheet_en.pdf<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Der ESP32 ist der Nachfolger des erfolgreichen ESP8266 Controllers. Er&nbsp;besitzt eine 32Bit Tensilica&nbsp;Xtensa LX6 CPU in der Regel mit zwei Kernen (RISC Architektur). Hier sammle ich f&uuml;r mich interessante Informationen. Anwendungsgebiete Dokumentation https:\/\/www.espressif.com\/en\/products\/hardware\/esp32\/overview https:\/\/github.com\/espressif\/arduino-esp32 Hardware Verpackung Den ESP32 gibt es als Chip oder Modul mit zus&auml;tzlichen externen Speicher, Antennen u.&auml;. Welche Versionen es aktuell gibt &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"ESP01 &#8211; neoPixel Ring\"<\/span> <span class=\"meta-nav\">\u2192<\/span><\/a>","protected":false},"author":1,"featured_media":10481,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[188],"tags":[33,148],"class_list":["post-1022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esp-32","tag-esp","tag-esp32","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=1022"}],"version-history":[{"count":37,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1022\/revisions"}],"predecessor-version":[{"id":10023,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1022\/revisions\/10023"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/10481"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=1022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=1022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=1022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}