RB-Fds-131 Intelligent Display use-case question

Hi, I have built a counting device “prototype” for something using Arduino, an Oled display, rotary encoder, a 5-way joystick button module and all is well.

I am interested in improving my design by switching to an ESP32 board because it has built-in wireless capabilities abilities and more interrupt pins for some expanded capabilities I wish to incorporate. Additionally, I am looking for a better “physical platform” than my cobbled together boards and modules but am not ready to start designing and ordering custom PCBs yet…

I came across this “Intelligent Display” here on Robotshop (RB-Fds-131) and see that it incorporates a touch display and the esp32 in an easily mountable display module.

I am wondering if anyone knows if I would be able to run my code and attach my sensors directly to this module’s on board ESP32 and use it as an “all in one” development module, or if the inboard ESP32 is only handling the display processing and I would still need an external microcontroller to run my program? My program is not that complex (its using about 75% of the memory on am Arduino UNO at present and that includes my code to read the sensors, some menu functions that let me reset the counter and the u8g library to display stuff kn the OLED.

Any input would he appreciated.

Thank you!

Hi @Omi,

Welcome to the RobotShop community!

You can find much information concerning your questions in the datasheet/manual found on the product’s page under Useful Links.

In the first file on page 7 (section 5. ES8266 SoC) you can find the following:

And also:

So, it seems like the final answer is maybe? :S
Depending on which GPIOs are available you may be able to get away with an I2C bus (hardware or software!) and from there connect all of your other components to that board. From a quick look at the datasheet it seems only GPIO16 is available on that product for user custom use. That been said there is also a UART interface exposed too (RX/TX on pin 5/6 of the 10-pin FPC), so there may be something to be done using that.

The second datasheet has plenty of info concerning the Arduino libraries for this product.

I hope this helps!

Sincerely,

Ah, also it seems you can’t use GPIO16 for I2C due to it not supporting open drain mode.
Info taken from here says the following:

I guess the only option left would be to program the RX/TX pins to do any interfacing then. But from what I understand it should be possible to reprogram them to a different use.

Hi and thank you very much for taking the time to respond!

To be honest, I hadn’t found (I didn’t look very hard) the data sheet / instructions for this unit before asking my question as it was more of a “could I?” combined with a “should I?” question. :slight_smile:

In my current setup, I am using I2C to communicate with an OLED display and the only inputs I am using are my digital pins for the sensor (rotary encoder with quadrature setup: 2 inputs) and 5 buttons (which I can easily take down to 3 if I needed, or even zero assuming I can take advantage of this device’s touch-screen-input). Otherwise, I am not doing any other special I/O at this time (save for initial programming). I use the Arduino’s EEPROM to store 2 user-settable variables and had planned to add an I2C NVRAM (actually FRAM) board from Adafruit that I have to store the current count so that the last count remains in memory on power cycle (or accidental power loss). I was looking to add on an SPI BT module as well - which is when I started thinking about ESP32.

It actually hadn’t occurred to me (but I guess that was “hidden” in my question) how many GPIOs would (or would not) be available given all the on-board components of this display module. I was thinking more along the lines of “overhead” - would this display module have enough resources (hard or soft) to run a “program” or was it really meant to be used as a “display module / interface” added to larger project.

It looks like there might be 2 GPIOs available (If I give up control of the LCD back-light - which is OK) for my sensor input and I would have to rely on the touch-screen for user input (also perfectly OK). Given that this is already connected to a display (and the touch interface) and it has an on board SD card slot, I am thinking there is a good chance I can make this work. The one thing hanging out there at the moment would be storage of the current count. I was looking to the NVRAM module because of the maximum write cycle limitations of EEPROM and Flash. If I could get that working on an I2C bus of some kind that would be great - as you said, perhaps using the RX/TX pins is possible. I suppose I could try to come up with a rotational storage scheme on the SD or internal Flash so the program doesn’t keep writing over the same location all the time, but even still, I believe my counter could reach the 10’s of thousands and possibly 100,000+ counts in short-enough time that it would be risky. (Perhaps I can find a standard Serial-based NVRAM module - does such a thing exist? Is it fast enough? I wonder)

…Or I just use this as a nifty display module and use a 3rd party micro-controller as the “CPU” which would still simplify my current design in terms of physical hardware.

I have a few ESP32 boards I am about to try to “port” my code to and get it working on there. I think I am going to order one of these display modules anyway to check it out.

J

Hey,

No problem!

Hehe, that’s all good! :slight_smile:

I figure you prob. have enough resources internally. Most of the FLASH and RAM seem available even with the libraries and other support material in use (screen/wifi/etc. libs).

Sticking with the idea of an I2C bus, you could get your buttons from either 5 digital inputs through an I2C bus extender (giving virtual GPIOs, effectively) or connect them to a resistor network and use an I2C ADC!
Alternatively, you could always use a small micro to handle the inputs (rotary encoder and buttons) and make this available as an I2C slave.

From what I understood the back light is hard wired to that pin, which allows you to use the GPIO from the ESP for controlling it directly or making that pin an input and using and external signal (like a knob or something).
Therefore, that pin would not really be available unless you want your backlight to change all the time :stuck_out_tongue: (i.e.: not recommended). Of course, it’s possible I misunderstood it completely, too :smiley:

Yes, they do! :slight_smile:
Here’s an example of a quick search on Digi-Key. They list 45 options! If you filter for active, in stock options you get down to 9 parts. They are pretty inexpensive, too (and available in quantities of 1!).

That is certainly a good option, too!
If it was me, I’d prob. use a Teensy 4 (plenty of power) and connect that to this board as my accessory.

Good luck with the project and looking for to hearing more about it!
I recommend you make a project page here. I’m sure the RobotShop community would be interested in your developments with this!

Sincerely,