Newer
Older
.. warning::
**Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.**
In this version, we have developed two new board types that allow the assembly of Ohmpi v2.00, a measurement board and a multiplexer board.
This new version is made up of:
1. A measurement board for four-point measurement
The philosophy of Ohmpi 2
==========================
The philosophy of Ohmpi V2.00 is to offer a new DIY multielectrode resistivity meter. It is a resistivity meter with 64 electrodes , which can be upgraded to 128 electrodes.
It is limited to low-current injection,but suitable for small laboratory experiments and small field time-lapse monitoring.
Ohmpi, is developed by a team that seeks to share all its experience and wishes to improve and offer a more and more robust tool to the community.Ohmpi V2.00 is a completely different version from the previous one.
We will stop the development on the previous version, to dedicate our efforts on this new version.
=============================================================================================================================================================
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
| **Parameter** | **Specifications V1** | Units | **Specifications v2** | Units |
+===============================+=======================+===========+=======================+===========+
|Electrodes |32 | |64 to 128 | |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Operating temperature |-0 to 50 |°c |-25 to 50 |°c |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Power consumption of CPU and |18.5 |W |18.5 |W |
|control system | | | | |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Voltage injection |12 |V |12 |V |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Battery |9 |V |12 |V |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Current |0 to 40 |mA |0 to 40 |mA |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Min pulse duration |150 |mS |150 |mS |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Input impedance |80 |Mohm |80 |Mohm |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Data storage |micro SD card | |micro SD card | |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
|Resolution |0.01 |ohm |0.01 |ohm |
+-------------------------------+-----------------------+-----------+-----------------------+-----------+
Ohmpi_V2_00/V2_00_step_01
Ohmpi_V2_00/V2_00_step_02
Interfaces and applications
============================
Different interfaces can be used to communicated with the OhmPi.
**Web interface**
The raspberrypi of the OhmPi is used as a Wifi Access Point (AP) and run
a small webserver to serve the 'index.html' interface. Using a laptop or
a mobile phone connected to the wifi of the Raspberry Pi, one can see this
interface, upload sequence, change parameters, run sequence and download data.
To configure the Raspberry Pi to act as an access point and run
the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
Once configure, the webserver should start by itself on start and once
connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
to access the interface.

Guillaume Blanchy
committed
.. figure:: img/http-interface-pseudo-section.png
Web interface with its interactive pseudo-section.

Guillaume Blanchy
committed
.. figure:: img/http-interface-evolution.png
Evolution of quadrupole apparent resistivity with time.

Guillaume Blanchy
committed
.. figure:: img/http-interface-rs.png
**Python interface**
By importing the `OhmPi` class from the ohmpi.py, one can controle the OhmPi using interactive IPython.
Typically, it involves using the Thonny on the Raspberry Pi or the Terminal. Once can also connect using
ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
To access the Python API, make sure the file ohmpi.py is in the same
directory as where you run the commands/script. The file ohmpi.py can
be found on the OhmPi gitlab repository. We recommend downloading the
entire repository as ohmpi.py import other .py files and default configuration
files (.json and .py).
.. code-block:: python
:caption: Example of using the Python API to control OhmPi
import os
import numpy as np
import time
os.chdir("/home/pi/OhmPi")
from ohmpi import OhmPi
### Define object from class OhmPi
k = OhmPi() # this load default parameters from the disk
### Default parameters can also be edited manually
k.settings['injection_duration'] = 0.5 # injection time in seconds
k.settings['nb_stack'] = 1 # one stack is two half-cycles
k.settings['nbr_meas'] = 1 # number of time the sequence is repeated
### Update settings if needed
k.update_settings({"injection_duration":0.2})
### Set or load sequence
k.sequence = np.array([[1,2,3,4]]) # set numpy array of shape (n,4)
# k.set_sequence('1 2 3 4\n2 3 4 5') # call function set_sequence and pass a string
# k.load_sequence('ABMN.txt') # load sequence from a local file
### Run contact resistance check
### Run sequence (synchronously - it will wait that all
# sequence is measured before returning the prompt
k.run_sequence()
# k.run_sequence_async() # sequence is run in a separate thread and the prompt returns immediately
# time.sleep(2)
# k.interrupt() # kill the asynchrone sequence
### Run multiple sequences at given time interval
k.settings['nb_meas'] = 3 # run sequence three times
k.settings['sequence_delay'] = 100 # every 100 s
k.run_multiple_sequences() # asynchrone
# k.interrupt() # kill the asynchrone sequence
### Single measurement can also be taken with
k.switch_mux_on([1, 4, 2, 3])
k.run_measurement() # use default acquisition parameters
k.switch_mux_off([1, 4, 2, 3]) # don't forget this! risk of short-circuit
### Custom or adaptative argument, see help(k.run_measurement)
k.run_measurement(nb_stack=4, # do 4 stacks (8 half-cycles)
injection_duration=2, # inject for 2 seconds
autogain=True) # adapt gain of ADS to get good resolution
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
Interface to communicate with the Pi designed for the Internet of Things (IoT). This interface enable to control a network of OhmPi remotely through an MQTT broker. An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Commands are received by ohmpi.py script and processed. All commands are sent in JSON format following the Python API with args and kwargs:
.. code-block:: json
:caption: Updating acquisition settings.
{
"cmd_id": "3fzxv121UITwGjWYgcz4xw",
"cmd": "update_settings",
"kwargs": {
"config": {
"nb_meas": 2,
"nb_electrodes": 10,
"nb_stack": 2,
"injection_duration": 2,
"sequence_delay": 100
}
}
}
.. code-block:: json
:caption: Check contact resistances
{
"cmd_id": "3fzxv121UITwGjWYgcz4xw",
"cmd": "rs_check",
}
.. code-block:: json
:caption: Running same sequence multiple times (nb_meas).
{
"cmd_id": "3fzxv121UITwGjWYgcz4Yw",
"cmd": "run_multiple_sequences",
}
.. code-block:: json
:caption: Interrupt current acquisition.
{
"cmd_id": "3fzxv121UITwGjWYgcz4xw",
"cmd": "update_settings",
}