Go to file
Eric Yu ef64f20f0a
Update README.md
2022-06-26 12:55:40 -07:00
.idea Added ReadMe 2022-05-18 23:19:37 -07:00
ReadAnalog Update platformio.ini 2022-06-08 11:39:53 -07:00
ReadRaw Upload files 2022-05-15 12:48:22 -07:00
README.md Update README.md 2022-06-26 12:55:40 -07:00
SeeDatResistance.iml Added ReadMe 2022-05-18 23:19:37 -07:00
read_arduino.pyw Update read_arduino.pyw 2022-06-07 14:53:35 -07:00
requirements.txt Added ReadMe 2022-05-18 23:19:37 -07:00
sealammonia.fbp Upload files 2022-05-15 12:48:22 -07:00
serial_plot.pyw Upload files 2022-05-15 12:48:22 -07:00
test.py Upload files 2022-05-15 12:48:22 -07:00
toplevel.py Added ReadMe 2022-05-18 23:19:37 -07:00
ui.py Upload files 2022-05-15 12:48:22 -07:00
writerandomvalues.py Upload files 2022-05-15 12:48:22 -07:00

README.md

Read Resistances

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 \file address\' and after that, run pip 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
  • Code Runner (for VSCode only)
  • wxFormBuilder
  • Arduino IDE

How to use

Direct use

First download the .ino file from ReadRaw folder using Arduino IDE. Or if you are using Arduino Mega 2560 you can use the code in ReadAnalog folder by open the folder in VSCode and run with PlatformIO, or just run flash.py in a terminal Then you can just run python toplevel.py and start from the UI. Enter the relevant information and start collect and measuring data.

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 toplevel.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.pyw read raw data from Arduino board and convert it to the correct resistance, which could be plotted out using serial_plot.pyw. Note that all .pyw are still Python files and should be correctly opened using any IDE/text edtiors as .py file does, except not going to pop up a black terminal when running directly. test.py is the alternative version of the frontend writting using tkinter.

Issues

  • Currently can only use 5V as input voltage. May need to change the algorithm in read_arduino.py. Newer hardware will require 3.3V.
  • Should call writerandomvalues.py to simulate Arduino data when nothing is connected but user still want to run. Currently just pop up error
  • "plot" button is completely disabled, should be enabled whenever is not plotting but is reading data
  • Matplotlib cannot really run in multithread, this might going to be an issue for packing the program into an executable

Todos & Specs:

  • Fix Issues
  • 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
  • Make it into one executable