ESP32 | Arduino sketches for the ESP32
kandi X-RAY | ESP32 Summary
kandi X-RAY | ESP32 Summary
These are sketches I have found to run on my own 1.4" x 0.7" ESP32 development board pictured below. These are mostly for using I2C sensors with the ESP32 but I intend to make use of all of the peripherals of the ESP32 and I will post working sketches as I do so. The board is open source and the design can be found here. Now you can buy this ESP32 Development Board on Tindie.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of ESP32
ESP32 Key Features
ESP32 Examples and Code Snippets
Community Discussions
Trending Discussions on ESP32
QUESTION
I'm working on an aws/amazon-freertos project. In there I found some unusual error "A stack overflow in task iot_thread has been detected".
Many time I got this error and somehow I managed to remove it by changing the code.
I just want to know what this error means actually?
As per what I know, it simply means that the iot_thread ask stack size is not sufficient. So it's getting overflow.
Is this the only reason why this error comes or can there be another reason for this?
If yes then where should I increase the stack size of the iot_thread task?
Full Log:
...ANSWER
Answered 2021-Jun-14 at 22:05It simply means that the iot_thread ask stack size is not sufficient. [...] Is this the only reason why this error comes or can there be another reason for this?
Either it is insufficient you your stack usage is excessive (due to recursion error or instantiation of instantiation of large objects or arrays. Either way the cause is the same. Whether it is due insufficient stack or excessive stack usage is a matter of design an intent.
If yes then where should I increase the stack size of the iot_thread task?
The stack for a thread is assigned in the task creation function. For a dynamically allocated stack that would be the xTaskCreate()
call usStackDepth
parameter:
QUESTION
I have a ESP32 configured as webserver. I have multiple webpages, that I include as files
for example index.h
...ANSWER
Answered 2021-Jun-14 at 19:29You should post a Minimal, Reproducible Example to get detailed advice. Otherwise we can only guess what's your framework, language, web server etc.
Depends on how your web server works. If it's simple and wants to you to give it the entire page at once, you'll have to allocate a chunk of RAM (e.g. dynamically from heap, or perhaps during compile-time from the data section) and generate the web page in there before handing it to the server.
In extremely simple cases you can just snprintf()
the entire page and hand it over:
QUESTION
Started to develop a wiresless 'cable' solution (with websockets) between two ESPs, a wireless serial 'cable' between computer and a serial device to mimick a direct wired connection. Was working great however just accidentally fried one of the ESPs (short a serial cable connection to higher voltage - sigh) when testing. Replaced one of the ESP32s with an ESP8266. Suspect this should work however it did not.
The problem is the ESP8266 (client) cannot find the network of the ESP32 (server). Why it doesn't work? My computer can see the server and can connect. Fried ESP32 the same, no problem.
Tried the WiFiScan demo on the ESP8266 and can detect all other WiFi SSIDs/MACs in neighborhood however cannot detect the ESP32 server it's SSID/MAC.
Why it doesn't work? What is the difference and how can I solve this?
ESP32 - code of the server
...ANSWER
Answered 2021-Jun-14 at 07:45WiFi channels 12-14 are not used in some countries (e.g. US). Perhaps the ESP32 AP picked one of those channels, and ESP8266 is configured by default with settings from a country which doesn't allow them. Set the AP channel to some reasonably safe value in range 1-11.
I can see that the default channel should be 1, but I'd suggest experimenting with it, perhaps setting it to 6:
QUESTION
I need to program a ESP32 to act as webserver and have 2 simple pages.
The first one should contain a form that the user has to fill in. (one text box, one dropdown and one checkbox.) The form has a submit button, and when it is pressed, the values are written to the ESP32, and a new page is presented. This new page will the update its content dynamically via AJAX calls.
I've found and seen countless tutorials and managed to make the second AJAX page that updates on its own without refreshing. I am not able to undertand tough how I can make the / root page with the form to submit its data, AND to forward to the second page.
So basically the questions are 3:
- how can i have more than one page on a ESP32?
- how can I submit a form so that the values get stored in variables on the ESP?
- how can the submit button forward to the next page?
Thank you
-----EDIT:------
I found an answer to questions 1 and 3 with this sample: https://www.arduinoslovakia.eu/blog/2019/4/esp8266---http-server-s-viac-strankami?lang=en
question 2 is still open tough. Thank you!
...ANSWER
Answered 2021-Jun-13 at 17:23You need to parse the incoming url, depending on the request you are sending with your form. The most common is a POST request, regarding to HTML forms.
If you send a POST request to your ESP, then your data will be in the body and you should parse in there. You will get a request like this (Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST)
QUESTION
I started several attempts to get this complex working. As mentioned in so many other discussions the micropython modules are not recognized, e.g. machine. Python modules like numpy were also not found.
I think, the python environment is not working correctly and the modules are there but not found. But, there is no recommendation or tutorial that really solves this. How can I set this up?
What I did so far:
manually installed all components according to tutorials
another way: installed the pything coding pack which contains a lot of stuff.
The Windows paths have the correct folder paths to the components.
I set the obviously correct python interpreter in vscode
connection/communication with board is working. I can set up codes which dont contain micropython modules.
in other IDE's like thonny/mu the modules are found.
I also installed a python venv: I could install numpy inside this venv and later it was found in vscode (wasn't found before) when I used the venv python as interpreter in vscode. But I wasn't succesful with micropython in venv.
PS: I can use the micropython modules like machine or network and upload the sketch to the esp32 board. It is working on the board. But I cant run any of the sketches in vscode. I think that Vscode uses cpython instead of micropython but shouldn't this be working after the installations I mentioned?
...ANSWER
Answered 2021-May-24 at 00:00It sounds like you're confusing modules you install on the machine running Visual Studio Code and modules you install in Micropython on the ESP32.
They're totally separate.
Python on your Windows machine can use venv.
MicroPython doesn't use venv at all (there apparently is a clone of venv for MicroPython but it's not readily apparent what it does or why or how you'd use it). It is a completely separate instance of Python from the one on your Windows machine, and it doesn't operate the same way. Modules you install under venv won't be visible or usable by MicroPython. Numpy in particular is not available for MicroPython.
Many modules need to be written specially to work with MicroPython. MicroPython isn't running in a powerful operating system like Windows, MacOS or Linux. It's running in a highly constrained environment that lacks much of the functionality of those operating systems, and that has extremely little memory and storage compared to them. You can't expect that a module written for regular Python will just work on MicroPython (and likewise, many MicroPython modules use hardware features like I2C or SPI access that may not be available on more powerful, general purpose computers).
Only modules available with upip
will be available for MicroPython. They'll need to be installed in the instance of MicroPython running on the ESP32, not in the instance of Python running under Windows. They're two, totally separate instances of Python.
QUESTION
Hi I'm trying to get this code block to run in the mainline of one of the examples provided with ESP-IDF (denoted by arrows)
...ANSWER
Answered 2021-Jun-11 at 08:13The root cause of this error is that the struct esp_netif_t
is a private type in the netif implementation. You're not supposed to create any objects of this type, only pass around handles (pointers) to it.
I suspect you've misunderstood what esp_netif_get_netif_impl_name()
does. According to the API doc it takes a handle to a esp_netif_t
and returns the name corresponding to this interface.
What you seem to be after is retrieving the handle to your interface in the first place. For this the (rather terse) API doc suggest a few other functions, e.g. esp_netif_get_handle_from_ifkey(...)
for searching for interfaces using something called interface key (no idea, sorry, but google helps there) or esp_netif_next(...)
for iterating over interfaces.
According to this forum post you might want to try something like this:
QUESTION
While experimenting with a UDP server that runs on esp32, I found that the size of the received packet is limited to 1500 bytes: 20 (IP header) + 8 (UDP header) + 1472 (data), (although in theory UDP as if can support packets data up to 64K). This means that in order to transfer a larger amount of data, the client must split it into several chunks and send them one after the other, and on the server side, this data will need to be restored. I think that the overhead of such a solution will be quite high. I also know that TOIT provides TCP/IP connection. Naturally, the packet size is also limited in the case of TCP/IP. This is 64K (65535 bytes). Does TOIT have any additional restrictions on the TCP/IP connection, or 64K value is fact also for TOIT?
...ANSWER
Answered 2021-Jun-10 at 12:17As described in this question/answer, it's a matter of avoiding packet fragmentation. Sending packages above this size will force the system to split them up into multiple fragments of size MTU, with each of them being individually unreliable. As memory is already very limited on embedded systems, sending large (> MTU) packages where all fragments has to arrive before it can be processed, can be very unfortunate for the overall application behavior as it can time out or go out-of-memory.
Instead the application should look at a streaming pipeline (perhaps even TCP to handle the unreliable aspects as well).
As TCP/IP is a streaming protocol, any sized "packages" can be sent, as they are automatically split into fragments of size MTU. Note that the data is received in "random"-sized packages, though the order of the bytes is fully preserved.
QUESTION
I am learning how to control P10 Led matrix 64x32 with NodeModule MCU ESP8266, I google and found this library https://github.com/2dom/PxMatrix and this tutorial https://www.instructables.com/RGB-LED-Matrix-With-an-ESP8266/. I believed that I wire between P10 and ESP8266 in true way in the tutorial, but that P10 led does not display as the example:
The true result will be:
This is my wire diagram:
This is my code:
...ANSWER
Answered 2021-Jun-10 at 09:17I fixed this by adding
display.setPanelsWidth(2);
display.setMuxPattern(SHIFTREG_ABC_BIN_DE);
because my led is combined by 2 matrix 32x16.
QUESTION
I have a TTGO T-CALL ESP32+Sim800L board and I want to send accelerometer data to Firebase. I am using the TinyGSM library which supports SSL/https connections for Sim800L. I am currently sending dummy data to see if it works but it is giving me a failed flag. Why is it not sending data to Firebase?
...ANSWER
Answered 2021-Jun-08 at 05:47I didn't find a lot of resources online, however, I did manage to do this and I made a GitHub repo for anyone who needs help with the same.
Basically as Firebase accepts only Https requests, it is not possible to formulate that on most microcontrollers and GSM modules. To circumvent this problem, I created a php server to which I can send an HTTP POST request and the script can get the data from it and push it to Firebase with a php firebase library.
QUESTION
First the problem.
The user can upload file from the web with ajax. If the file is relatively big, the uploading takes a while. If the user's connection is lost or something happens during the uploading process, the file is going to be damaged or empty.
How should I secure the upload process so the file remains the same if it fails for some reason?
I'm using the following libraries on the Arduino ESP32:
I have a basic file upload handler on my esp32 which looks like this:
...ANSWER
Answered 2021-May-20 at 06:45It seems to me that the problem solved.
I have managed to replace the String buffer with a char one in external memory. It seems stable but requires more testing. I'll post the solution but if anyone has a better approach feel free to comment here.
Thanks.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install ESP32
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page