I would like to invite you to a presentation and launch of a fully open source ESP32 development board from Olimex. Everything is available for this project - you can even download the PCB design in KiCad and customise it to your needs. The ESP32-EVB features the ESP32-WROOM-32E Wi-Fi/BT module, an additional LAN8710A wired Ethernet controller, LiPo battery capability thanks to the TP4054 controller, a built-in CAN transceiver, two relays, a USB to UART converter (for programming, among other things), a microSD card slot, an IR transmitter and receiver, and abundant connectors, including Olimex's UEXT to connect additional peripherals.
And let's not forget the ability to connect an antenna.
I bought the board for £150.
Project repository:
https://github.com/OLIMEX/ESP32-EVB
Schematic:
It came with an antenna and three plastic non-slip feet. Apparently the price is quite high, but maybe it's worth it? Especially since the manufacturer plays open cards - everything is made available.
Time to see if it's just as easy to run peripherals on this board.
Ethernet
I chose the PlatformIO environment, a Visual Code add-on, to work with the ESP32. As it happens, the ESP32-EVB board is already integrated with it - its profile is available in the repositories. Similarly, we already have the LAN driver ready.
My platformio.ini:
[env:esp32-evb]
platform = espressif32
board = esp32-evb
framework = arduino
monitor_speed = 115200
build_flags =
-D ETH_PHY_TYPE=ETH_PHY_LAN8720
-D ETH_PHY_ADDR=0
-D ETH_PHY_MDC=23
-D ETH_PHY_MDIO=18
-D ETH_PHY_POWER=-1
-D ETH_CLK_MODE=ETH_CLOCK_GPIO0_IN
However, I had a bit of a problem with just getting the LAN up and running. I tried various ways, but it was only when I modified the example to manually reset the controller with a sufficiently long delay that communication started. In this configuration the communication works even when powered by a long USB cable. For verification on Ethernet, I put up a simple "hello world" page that downloads fully over the cable - no Wi-Fi.
Code: C / C++
The example works, which means we have the basics:
Transmitters
Another thing worth checking are the relays. There's not much philosophy here anymore - they are simply connected (via transistors) to two specific GPIOs. All you need is a simple pinMode and digitalWrite and you can control them. For the example, I have connected them to simple buttons on the page:
Code: C / C++
Full HTML code:
https://pastebin.com/ES6dYX0u
The result:
The relays respond correctly to the buttons, this is how we made the simplest substitute for Tasmota.
IR receiver
The last thing I decided to test is the IR receiver. This should work with most IR remote controls from various appliances such as TVs, DVD players, radios or there air conditioners etc. On ESP, it's probably best to use the IRremoteESP8266 library for this. We still have the Arduino-IRRemote library, it too supports ESP, but it supports fewer protocols.
We update the platformio.ini:
lib_deps =
crankyoldgit/IRremoteESP8266 @ ^2.8.6
The rest according to the examples - set the pin and decode.
Code: C / C++
I took two remotes from the living room - one from the TV, the other from the Internet TV decoder. Both are seen correctly, one transmits in RC5, the other in NEC.
Summary
How do I rate this tile? Undoubtedly a lot can be done on it, although the price is quite high compared to the simplest base USB to UART + ESP32 converter connections such as the NodeMCU-32S. I certainly praise the variety of projects that can be realised with it - we have relays, we have IR, and there is even an option to connect a microSD card or there CAN bus. In addition, there are ready-made libraries for everything - there were no major problems at all getting the wired Ethernet up and running.
Of the downsides of this board, I guess I could mention a potentially long list of issues from GitHub, although personally I haven't come across any of these problems yet. Additionally, I would have preferred that this 40-pin connector be replaced with something that is better described, and more accurately described on the description layer so that I know at a glance in advance which pin is which - this is just more convenient for me.
On the plus side, however, there's also the UEXT connector - as far as I can see, Olimex has spent a bit on these modules and they're not that horrendously expensive, although £30 for an RTC, for example, is not the best deal of a lifetime either.
Have you used the boards from Olimex? Is it worth paying more for such a ready-made board, or is it better to use the minimal version with ESP32 and possibly connect a module with LAN in bulk?
Cool? Ranking DIY Helpful post? Buy me a coffee.