Hello, greetings to all. I have an Arduino code in which I must include these libraries but they are not within the Arduino IDE that I have. How do I include them? They are: BLE, LittleFS, RainMaker and USB.
Also, when I add the ESP32 library, the code shows <dummy.h> what does it mean? Beforehand thank you very much.
Try the library manager. You find it behind one of the tabs. Tools? There You can download new libraries.
If a library is not included in the IDE's library manager, you must download a zip file containing the library, often this will be available from GitHub. Once you have downloaded the zipped library, you can import it into the IDE using the "Add .ZIP Library" from the menus.
You can use the Library Manager. IDE menu Sketch -> Include Library -> Manage Libraries.
If the libraries that you need are not in there, you will have to hunt for them using your favorite search engine; most of them are on GitHub. Keywords could be Arduino or ESP plus the name of the library. Download the zip and IDE menu Sketch -> Include Library -> Include .ZIP Library.
I have a suspicion that you did not install things as it should be; I leave it to @in0 to determine that
Slow down folks. @dieguitovalle is referring to the ESP32 boards platform's "platform bundled libraries":
Those libraries are installed via Boards Manager along with the ESP32 support. If you go looking for them in Library Manager you're going to have a bad day.
Would that mean that the boards package is not installed or installed incorrectly?
From the Arduino Library Specification:
https://arduino.github.io/arduino-cli/latest/library-specification/#source-code
When the user imports a library into their sketch (from the Arduino IDE's "Sketch > Include Library" menu or the Arduino Web Editor's "Include" button), the default behavior (configurable via the library.properties
includes
field) is for an#include
statement to be added for all header (.h) files in the src/ directory
OK, so let's take a look at the library's library.properties
metadata file:
https://github.com/espressif/arduino-esp32/blob/2.0.0/libraries/ESP32/library.properties
name=ESP32
version=2.0.0
author=Hristo Gochkov, Ivan Grokhtkov
maintainer=Hristo Gochkov <hristo@espressif.com>
sentence=ESP32 sketches examples
paragraph=
category=Other
url=
architectures=esp32
No includes
field to be seen, so we can disregard that part of the specification. So we now know that when you select Sketch > Include Library > ESP32, the Arduino IDE will add #include
directives for all the header files it finds in the library's source folder.
Let's see what is in that folder:
https://github.com/espressif/arduino-esp32/tree/2.0.0/libraries/ESP32/src
Sure enough, there is only a file named dummy.h
. So everything is working just as expected.
But why would a library named "ESP32" only have a single header file with this weird name? The answer is provided in the file itself:
https://github.com/espressif/arduino-esp32/blob/2.0.0/libraries/ESP32/src/dummy.h
// This file is here only to silence warnings from Arduino IDE
// Currently IDE doesn't support no-code libraries, like this collection of example sketches.
That's all there is to it. Just an empty file with an explanatory comment to avoid too much confusion, thus the name "dummy".
Even though this library is not much to look at, it serves an important purpose. That purpose is to serve as a container for some example sketches that demonstrate some of the features of the ESP32 boards platform itself. Packaging these in the form of a library causes the Arduino IDE to make them easily accessible to the user via the File > Examples > ESP32 menu. Check them out!
It is possible. Some of the platform bundled libraries used to be integrated into the espressif/arduino-esp32
repository as submodules, and when people did the installation of the development version via Git, but didn't follow the complex instructions carefully, they would end up with the default behavior of only having empty folders where the submodules should have been. I don't remember if these specific libraries were ever submodules. They are not using any submodules at this time.
Another thing I notice is that some (but not all) of the listed libraries have different names in their metadata than the folder name. For example the "ESP32" library is actually defined as "ESP32 BLE Arduino".
https://github.com/espressif/arduino-esp32/blob/2.0.0/libraries/BLE/library.properties#L1
Ideally, the Arduino IDE always uses this "fancy" name when present, only falling back on the folder name in the case of the "1.0 format" libraries that don't have metadata. That is how the classic Arduino IDE works, but I notice that Arduino IDE 2.x uses the "fancy name" in the File > Examples menu, but the folder name in the Sketch > Include Library menu
I'm at a similar frustration level. I've been trying to get the Rainmaker.ino example to compile. Though I've copied the example HERE, it bombs because the author failed to include dependencies. If I back up and grab them from "src", all of the cpp and h files have "#if ESP_IDF_VERSION_MAJOR >= 4 && CONFIG_ESP_RMAKER_TASK_STACK && CONFIG_IDF_TARGET_ESP32" at each file, so these are looking for the IDF, not Arduino. Yikes.
I should add I've searched for Rainmaker in Library Manager but it doesn't find anything.
I believe that will be fixed as a side effect of the fix for this bug:
It compiles just fine for me.
One thing to note. This statement in the tutorial is outdated:
- RainMaker support is not yet part of a stable esp32-arduino release. So we will use the master branch of the ESP32 Arduino repository. We will update here and elsewhere once this support is available in a stable release.
the support was added in the 2.0.0 release last August but the folks at Espressif never updated the tutorial as promised.
They are all provided by the installation of the ESP32 boards platform.
I'm going to ask you to post some additional information that might help us to identify the problem.
Please do this:
- When you encounter an error, you'll see a button on the right side of the orange bar in the Arduino IDE: Copy error messages. Click that button.
- Open a forum reply here by clicking the Reply button.
- Click the
</>
icon on the post composer toolbar.
This will add the forum's code block markup (```
) to your reply to make sure the error messages are correctly formatted.
- Press Ctrl+V.
This will paste the compilation output into the code block. - Move the cursor outside of the code block markup before you add any additional text to your reply.
- Click the Reply button to post the output.
I don't think GIT put the files where they're supposed to be.`
Preformatted text` Arduino: 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"
In file included from R:$ketches\sketch_dec02b\RMakerParam.h:4:0,
from R:\$ketches\sketch_dec02b\RMakerDevice.h:4,
from R:\$ketches\sketch_dec02b\RMakerNode.h:4,
from R:\$ketches\sketch_dec02b\RMaker.h:5,
from R:\$ketches\sketch_dec02b\sketch_dec02b.ino:2:
RMakerType.h:4:29: fatal error: esp_rmaker_core.h: No such file or directory
compilation terminated.
exit status 1
esp_rmaker_core.h: No such file or directory
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
I'll probably need to determine what to move to "libraries" folder.
esp-rainmaker now resides at C:\users\Robert_M\esp-rainmaker. No wonder Arduino can't find them.
This turned out to be not having the most recent version of ESP32 Boards installed. Who knew when I updated to version 2.0.1the missing components came along? This should be a "do this first" instruction in the tutorial.
I'm glad to hear it is working now. Thanks for taking the time to post an update with your solution.
I'm pretty much up and running, made a Node, assigned some custom parameters, etc. I like how you can name Nodes and Parameters therein to be anything you like. In my H.A. scheme, a few of my ESP32s are in some inaccessible places and I've relied on Arduino OTA to upload fixes. Meaning I could convert my remote nodes to use Rainmaker. I ran into a caveat though, I wasn't able to have OTA coexist with Rainmaker. The ESP never accepts an invitation, so it makes me wonder if the Rainmaker partitioning scheme hasn't tossed out OTA? Do we know how to find the partitioning scheme to confirm? The other snag I'm seeing is, how do I remotely provision the node to generate the barcode? If the ESP is already on WiFi, is there a way to generate provisioning?
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.