118bd9b6de | ||
---|---|---|
.idea | ||
ReadAnalog | ||
ReadRaw | ||
__pycache__ | ||
espVoltmeter | ||
ESP32Driver.py | ||
README.md | ||
SeeDatResistance.iml | ||
read_arduino.py | ||
requirements.txt | ||
sealammonia.fbp | ||
serial_plot.py | ||
serial_plotter.py | ||
test.py | ||
toplevel.py | ||
ui.py |
README.md
Read Resistances
Read the resistance of a voltage divider using ESP32
Required & Dependencies
Required
- Python 3 (but below 3.10). And the following packages using
pip
.
Alternatively, you can just switch the file source of the Command line Prompt by using 'cd <Project_File_Directory>' and after that, runpip install -r requirements.txt
in to have all packages installed automatically- matplotlib
- pyserial
- wxPython
- PlatformIO IDE, which could be downloaded as an extension in vs code
- ESP32 WROOM-32 Development Board
Recommended
- Code Runner (for VSCode only)
- wxFormBuilder
- Arduino IDE
How to use
Direct use
First download the .ino
file from espVoltmeter
folder using Arduino IDE. Or if you are using Arduino Mega 2560 you can
use the code in
(Arduino Mega and Uno boards are no longer supported. Please use this link to
use on Arduino IDE or PlatformIO for VSCode)
For Windows you can just download the released executable to use. Make sure to disable any virus-scanning software when download as Microsoft incorrectly recognized PyInstaller as virus. For non-Windows systems you can just run ReadAnalog
folder by open the folder in VSCode and run with PlatformIO, or just run flash.py
in a terminalpython test.py
and start from the UI. Enter the relevant information and start collect and measuring data. If you do not have a board avaliable, leave the dropdown menu in the UI as "no device" and it will run a simulation.
develop & build
Beside the c-based code for the Arduino board to read raw data from the board, everything has now been done in the python
files. The main program is test.py
, which calls UI.py
to prompt for input. It is NOT recommended modifying the ui.py
as it is generated from wxFormBuilder from sealammonia.fbp
, which could be modified if any frontend feature need to change.
the main program will generate settings.json
which saves all required parameters needed to calculate and graph and save the
sensor's values. It also creates a .csv file under RecordedData
directory to save all recorded+calculated data.
read_arduino.py
read raw data from Arduino board and convert it to the correct resistance, which could be plotted out
using serial_plotter.py
. frontend.py
is the alternative version of the frontend writting using tkinter
, and serial_plot.py
was an older version of serial_plotter.py
. They are not longer supported.
ATTENTION MAC USER: currently the software cannot correctly functional on mac (especially arm-based ones). You might need to consider to use it on a windows VM or using parallel desktop
Issues
- Newer hardware will require 3.3V.
Currently can only use 5V as input voltage.May need to change the algorithm inread_arduino.py
. - axis window size is not correct
- on PyInstaller, windows misdetected our executable as a virus
- change the scale on Y-axis so that graph looks smoother
Todos & Old Specs:
- Fix Issues
- Automatically setup the driver for ESP32
- programically to stablize the graph (change the y-scale of the graph to make the less dramatic)
- (not urgent) make if runnable on Mac
- display sensor value in either the UI or on the plot
- Reopen plot window from the UI when closed
- Need to continue writing to file when graphing window is closed
- Make it so the time stamp is the actual time
- No blank line in between lines of csv file (new line may be added when file is closed)
- Make it so we have the option to run multiple graphs at the same time, setting window size in UI
- Inputting value of 0 for window size should have an infinite window size
- Accept any inputs (such as resistor values, plot window size, base voltage etc.) as either command line argument or as input at beginning of program
- Write random values to simulate a sensor if no sensor available (this feature might be removed in the future)
- Advanced option menu in the UI to allow user to make more adjustments
- Add resolution option in the UI to allow interchange between arduino (10bit) and esp32 (12 bits)
- Possibly adding new module to support ESP32
- Support for non-Windows platforms (and maybe mobile)
- Make it into one executable
- Possibly adding new module to support Arduino MEGA and older firmwares