I have an Arduino based project with an esp32 as the main MCU working as the hub connected to two stm32f103 Blue Pills on the stm32 Arduino core. The esp32 is connected to an ili9341 tft, an sd card where the data is saved, and its own encoder. Each Blue Pill has 2 encoder buttons, 2 PWM, and one switch. First encoder for the PWM has a frequency from 0 to 400, and the second encoder has a duty cycle from 1.1 to 99.9. The button of the encoder is to multiply the value by 10 when pressed. The switch is to control the other PWM using the same encoders. Each stm32 is connected to both an ads1118 i2c and an ads1115 adc, which will have 4 channels each. The values of the two encoders and the eight analog channels will be displayed on both the android screen as well as the LCD. The esp32 will use Arduino code, while the host GUI will be an android app that controls each stm32 PWM for both duty and frequency. The app will record 100 points of each analog channel along the full range of the duty cycle (100 samples). Then the data will be saved locally to the filesystem of the esp32 as well as to a GitHub directory, which will serve as a backup. In addition to the encoders, the android app will also control the hardware. On the android screen, there will be two windows, and each window will showcase 4 graphs. The first window will display the first set of four channels of the ads1118 i2c, with each graph of a specific frequency of the PWM1. The first graph will be the baseline of a specified frequency during the auto mode where x is the duty cycle and y is the value of each of the first set of four analog channels. The default for the auto mode is an increment of half of a second for each of the 100 points. However, this can be changed anywhere between 1 to 1000 milliseconds. Each subsequent graph will simply have another specified frequency. The second window will be the same except that it will display the second set of 4 channels of the ads1115 adc and the PWM2 frequency. All frequencies can be chosen via an input from a digital encoder widget on the linux application + webserver screen or via the connected knob encoders on each Blue Pill STM32. All values will be displayed on both the application screen and the LCD ili9341 tft screen regardless of where they are switched, whether the application software or the manual moving of the knobs. The language required to execute this host application is GAMBAS basic language under raspian of raspberry pi3, , there is a already examples using arduino in examples sections . Every data file will be downloaded from and/or uploaded to GitHub in text format. Finally, the android app will have the ability to display four files simultaneously for comparison and a URL link to the download of any new firmware updates to the esp32, whenever they become available on GitHub as well. Accepted term is single milestone full payment when job is done and accepted. again there is already example how to use arduino also how to create a web application.
[login to view URL]