Code Monkey home page Code Monkey logo

jupyterphysscilab / jupyterpidaq Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 2.0 2.35 MB

Interactive analog data acquisition and analysis within Jupyter notebooks using GUI tools.

Home Page: https://jupyterphysscilab.github.io/JupyterPiDAQ/

License: GNU General Public License v3.0

Python 25.83% JavaScript 0.93% Jupyter Notebook 73.24%
jupyter-notebooks analog-to-digital-converter physical-sciences data-acquisition raspberrypi vernier-sensors vernier-labquest

jupyterpidaq's Introduction

JupyterPiDAQ

Introduction | License

Introduction:

This software allows GUI (Graphical User Interface) driven live collection, plotting and analysis of digitized data inside a Jupyter notebook. The package was initially developed to provide an inexpensive laboratory system for teaching based on the Raspberry Pi. However, it now works on other hardware. Presently the working combinations are:

on Raspberry Pis

on Macs and Windows

demo mode on anything Jupyter runs on

  • A demo mode will run on any computer with a Jupyter notebook install and Python 3.6+. You can try the demo mode without installing on your own computer by launching an instance on the MyBinder servers: Binder

The goal is for the user interface to be as close to self-explanatory as possible. However, documentation is being developed along with some example experiments.

Sensors:

Like many commercial educational packages the software knows about the properties of some sensors, so can collect data directly in the units appropriate for the sensor, in addition to the raw voltage signal returned by the sensor. Not all sensors are compatible with all boards. The developer(s) attempt to keep this list of known sensors up-to-date, but the code may provide additional sensors not listed here:

  • ADS1115 compatible (board can provide 3.3 V of power/reference to sensors):

    • voltage reading (V, mV) from any sensor that puts out a voltage in the range +/-3.3 V.
    • built-in thermistor (V, mV, K, C, F).
    • Vernier SS temperature probe (V, mV, K, C, F).
  • DAQC2 compatible (board can provide 5.0 V of power/reference to sensors):

    • voltage reading (V, mV) from any sensor that puts out a voltage in the range +/- 12 V.
    • Vernier SS temperature probe (V, mV, K, C, F).
    • Vernier old and new pressure sensors (V, Pa, kPa, Bar, Torr, mmHg, atm)
    • Vernier standard pH probe (V, mV, pH).
    • Vernier flat (tris compatible) pH probe (V, mV, pH).
    • Compatible with standard Vernier analog probes. Default calibrations being added as time and sensors become available.
  • LabQuest compatible (board provides 5.0 V of power/reference to sensors):

    • voltage reading (V, mV) from any sensor that puts out a voltage in the range +/- 10 V.
    • Vernier SS temperature probe (V, mV, K, C, F).
    • Vernier old and new pressure sensors (V, Pa, kPa, Bar, Torr, mmHg, atm)
    • Vernier standard pH probe (V, mV, pH).
    • Vernier flat (tris compatible) pH probe (V, mV, pH).
    • Compatible with standard Vernier analog probes. Default calibrations being added as time and sensors become available.

With any of these interfaces, you can hook up your own sensors and manually convert the raw voltage readings or write and submit a new sensor definition to the project.

License:

This software is distributed under the GNU V3 license. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Copyright - Jonathan Gutow, 2021 - 2024.

jupyterpidaq's People

Contributors

gutow avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

jupyterpidaq's Issues

Possible alternative behavior for run setup interface

Instead of everything in a single cell, which seems to leave traces of the setup table widget in reopened notebooks, the setup could behave more like the jupyter_Pandas_GUI tools. It would create the code for the run in the cell immediately below it and then delete itself when all the settings are approved.

Add 2 pt calibration to pH sensor

pH sensors drift a lot. It would be nice to have a way to do a two point calibration on pH probes and have that used to convert the raw signal to pH directly.

Use estimated standard deviation of average as error on an averaged point.

Currently the software reports the standard deviation of all the points averaged together to get a single reported value rather than the estimated standard deviation of the single reported value. This is definitely too pessimistic. The estimate (already returned by the data acquisition process) should be used.

Make plots default to downloading .svg

Plots are currently defaulting to .png downloads. As the user can get this simply by taking a screenshot making the download button provide a .svg provides more adaptability. This has been implemented in pandas_GUI.

Use one average time column for multiple channels

Especially on the Raspberry Pi where the maximum reasonable data collection rate is 3 - 5 samples/sec, it makes little sense to worry about the skew between channels that is less than 100 ms. Maybe should make reporting actual collection time of each point an option?

Make JupyterPiDAQ specific javascript have its own namespace...

To be a somewhat better citizen the javascript specific to JupyterPiDAQ should reside in its own namespace (maybe under JupyterPiDAQ). If I can figure out how to get it to work in JLab this will be less of an issue as the namespace protection is embedded in the way the javascript is built.

with LabQuest interface data written to disk before collection is fully stopped...

Because of the way the LabQuest interfaces buffer data, there can be a significant delay in transferring the data at the end of a run. Currently, we write what has been transferred to the user interface before everything in the buffer is transferred. The termination of data collection needs to be better coordinated across the concurrent threads/processes.

Add a manual triggering of data acquistion mode

The idea would be to have a mode where traces of the channels are displayed and the user can select to trigger recording of a data point when the channels stabilize. This should also include the ability for manually entered data to go with the electronically collected data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.