Commit 9ca61e44 authored by Clement Remi's avatar Clement Remi
Browse files

update

Showing with 414 additions and 930 deletions
+414 -930
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 4ac17d5203f4fed9801b331b002090ea
config: 85882ff0ddf883585509119f73a6ac8e
tags: 645f666f9bcd5a90fca523b33c5a78b7
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8">
<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OhmPi project &mdash; Ohmpi: open hardware resistivity-meter documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OhmPi project &mdash; Ohmpi: open hardware resistivity-meter documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script src="_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="OhmPi V 1.01 (limited to 32 electrodes)" href="V1_01.html" />
<link rel="prev" title="OHMPI: Open source and open hardware resitivity-meter" href="index.html" />
</head>
<body class="wy-body-for-nav">
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi:
<a href="index.html" class="icon icon-home"> Ohmpi:
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
......@@ -73,18 +35,7 @@
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi project</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#partenaires"><strong>Partenaires</strong></a><ul>
......@@ -99,72 +50,33 @@
<li class="toctree-l1"><a class="reference internal" href="V2_00.html">OhmPi V 2.xx (64 or 128 electrodes)</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Ohmpi:</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>OhmPi project</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/Ohmpi.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ohmpi-project">
<div class="section" id="ohmpi-project">
<h1>OhmPi project<a class="headerlink" href="#ohmpi-project" title="Permalink to this headline"></a></h1>
<section id="partenaires">
<div class="section" id="partenaires">
<h2><strong>Partenaires</strong><a class="headerlink" href="#partenaires" title="Permalink to this headline"></a></h2>
<a class="reference internal image-reference" href="_images/logo_ohmpi.JPG"><img alt="Logo OhmPi" class="align-center" src="_images/logo_ohmpi.JPG" style="width: 350px; height: 250px;" /></a>
<p>Authors:</p>
......@@ -198,13 +110,13 @@
<p>Creation date : Juillet 2020.</p>
<p>Update : 04 août 2021.</p>
<p>Status of document: In progress.</p>
<section id="citing-ohmpi">
<div class="section" id="citing-ohmpi">
<h3><strong>Citing OhmPi</strong><a class="headerlink" href="#citing-ohmpi" title="Permalink to this headline"></a></h3>
<p><em>Rémi Clement, Yannick Fargier, Vivien Dubois, Julien Gance, Emile Gros, et al.. OhmPi: An open</em>
<em>source data logger for dedicated applications of electrical resistivity imaging at the small and laboratory</em>
<em>scale. HardwareX, Elsevier, 2020, 8, 24 p. ff10.1016/j.ohx.2020.e00122ff.</em></p>
</section>
<section id="introduction-to-ohmpi">
</div>
<div class="section" id="introduction-to-ohmpi">
<h3><strong>Introduction to OhmPi</strong><a class="headerlink" href="#introduction-to-ohmpi" title="Permalink to this headline"></a></h3>
<p>This documentation presents the development of a low-cost, open hardware resistivity meter to provide the scientific community with a robust and flexible tool for small-scale experiments. Called OhmPi, this basic resistivity meterfeatures current injection and measurement functions associated with a multiplexer that allows performing automatic measurements with up to 32 electrodes.OhmPi’s philosophy is to provide a fully open source and open hardware tool /
to the near surface scientific community.</p>
......@@ -212,64 +124,39 @@ to the near surface scientific community.</p>
<p class="admonition-title">Note</p>
<p>Everyone willing to get involved is welcome in OhmPi Project!.</p>
</div>
</section>
</section>
</section>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="V1_01.html" class="btn btn-neutral float-right" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral float-left" title="OHMPI: Open source and open hardware resitivity-meter" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="OHMPI: Open source and open hardware resitivity-meter" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="V1_01.html" class="btn btn-neutral float-right" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, INRAE, Rémi CLEMENT
</p>
<p>&#169; Copyright 2020, INRAE, Rémi CLEMENT.</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8">
<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OhmPi V 1.01 (limited to 32 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OhmPi V 1.01 (limited to 32 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script src="_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="OhmPi V 1.02 (limited to 32 electrodes)" href="V1_02.html" />
<link rel="prev" title="OhmPi project" href="Ohmpi.html" />
</head>
<body class="wy-body-for-nav">
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi:
<a href="index.html" class="icon icon-home"> Ohmpi:
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
......@@ -74,18 +35,7 @@
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Ohmpi.html">OhmPi project</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V 1.01 (limited to 32 electrodes)</a><ul>
......@@ -122,70 +72,31 @@
<li class="toctree-l1"><a class="reference internal" href="V2_00.html">OhmPi V 2.xx (64 or 128 electrodes)</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Ohmpi:</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>OhmPi V 1.01 (limited to 32 electrodes)</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/V1_01.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ohmpi-v-1-01-limited-to-32-electrodes">
<div class="section" id="ohmpi-v-1-01-limited-to-32-electrodes">
<h1>OhmPi V 1.01 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-01-limited-to-32-electrodes" title="Permalink to this headline"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -193,13 +104,13 @@
However, we have corrected the bugs that existed on this version and explained the missing mounting points in detail below.
We invite you to refer to this document to assemble Ohmpi V1.01.</p>
</div>
<section id="the-philosophy-of-ohmpi">
<div class="section" id="the-philosophy-of-ohmpi">
<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline"></a></h2>
<p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available
electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection,
but suitable for small laboratory experiments and small field time monitoring</p>
</section>
<section id="technical-data">
</div>
<div class="section" id="technical-data">
<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this headline"></a></h2>
<table class="docutils align-default">
<colgroup>
......@@ -255,10 +166,10 @@ control system</p></td>
</tr>
</tbody>
</table>
</section>
<section id="raspberry-pi-configuration">
</div>
<div class="section" id="raspberry-pi-configuration">
<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this headline"></a></h2>
<section id="os-installation">
<div class="section" id="os-installation">
<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline"></a></h3>
<p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system).
For this step, the installation instructions are well described on the Raspberry website</p>
......@@ -269,9 +180,9 @@ For this step, the installation instructions are well described on the Raspberry
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/raspbian_version.jpg"><img alt="alternate text" src="_images/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
</figure>
</div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -307,8 +218,8 @@ To ensure that the GPIOs are in Low position, you will need to modify the /boot/
<li><p>Press Ctrl +x to escap and return to the terminal</p></li>
<li><p>Close the terminal</p></li>
</ol>
</section>
<section id="virtual-environnement-and-packages">
</div>
<div class="section" id="virtual-environnement-and-packages">
<h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline"></a></h3>
<p>All dependencies are specified in requirements.txt</p>
<div class="admonition note">
......@@ -341,38 +252,38 @@ to leave the virtual environment simply type:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">deactivate</span>
</pre></div>
</div>
</section>
<section id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
</div>
<div class="section" id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
<h3>Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)<a class="headerlink" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi" title="Permalink to this headline"></a></h3>
<p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p>
<p>1- Run the Thonny Python IDE software, Click on raspebrry acces <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
<p>2- Thonny’s interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3))</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_first_interface.jpg"><img alt="alternate text" src="_images/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_option.jpg"><img alt="alternate text" src="_images/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>4-On the new open windows select <strong>alternative Pyhton3 or virtual environnement</strong></p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter.jpg"><img alt="alternate text" src="_images/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>5- New buttons appeared, selected <strong>“locate another python executable “</strong></p>
<p>6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created <strong>/home/pi/ohmpi/bin/python3</strong>.</p>
<p>7- In the <strong>known interpreter</strong> tab the path of the virtual environnementshould appear</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter_folder.jpg"><img alt="alternate text" src="_images/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>8- Close the window by clicking on <strong>ok</strong>.</p>
<p>9- Close thonny to save modifications</p>
</section>
</section>
<section id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">
</div>
</div>
<div class="section" id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">
<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this headline"></a></h2>
<section id="electrical-resistivity-measurements-board">
<div class="section" id="electrical-resistivity-measurements-board">
<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this headline"></a></h3>
<section id="a-description">
<div class="section" id="a-description">
<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this headline"></a></h4>
<p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115
is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The
......@@ -405,14 +316,12 @@ electric field in the ground, with the total input impedance value being estimat
A shortcut between Electrodes A and B will generate excessive currents, whose intensities depend on the type of battery used.
A lithium ion battery or automobile-type lead-acid battery can deliver a strong enough current to damage the board and, as such,
constitutes a potential hazard. We therefore recommend adding a 1.5-A fuse between the battery and resistor R9.</p>
<figure class="align-center" id="id1">
<div class="align-center figure" id="id1">
<a class="reference internal image-reference" href="_images/schema_measurement_board.jpg"><img alt="alternate text" src="_images/schema_measurement_board.jpg" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement board</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
</figcaption>
</figure>
</section>
<section id="b-implementation">
<p class="caption"><span class="caption-text">Measurement board</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
</div>
</div>
<div class="section" id="b-implementation">
<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this headline"></a></h4>
<p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto
it by following the steps described below and illustrated in the following figure :</p>
......@@ -428,16 +337,23 @@ it by following the steps described below and illustrated in the following figur
\[coeff p2 = (R7 + R6) / R7\]</div>
<div class="math notranslate nohighlight">
\[coeff p3 = (R9 + R8) / R9\]</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">37</span><span class="sd"> hardware parameters</span>
<span class="linenos">38</span><span class="sd"> &quot;&quot;&quot;</span>
<span class="linenos">39</span> <span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span>
<span class="linenos">40</span> <span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span>
<span class="linenos">41</span> <span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span>
<span class="linenos">42</span> <span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span>
<span class="linenos">43</span> <span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>36
37
38
39
40
41
42
43</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> hardware parameters</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span>
<span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span>
<span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span>
<span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span>
<span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span>
</pre></div>
</div>
</td></tr></table></div>
<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
</div></blockquote>
</dd>
......@@ -454,21 +370,17 @@ or stronger power supply, it would be possible to adjust the divider bridge valu
Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the
battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to
place a fuse holder with a 1.5-A fuse for safety purposes.</p>
<figure class="align-center" id="id2">
<div class="align-center figure" id="id2">
<a class="reference internal image-reference" href="_images/measurement_board.jpg"><img alt="alternate text" src="_images/measurement_board.jpg" style="width: 800px; height: 500px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<figure class="align-center" id="id3">
<p class="caption"><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image"></a></p>
</div>
<div class="align-center figure" id="id3">
<a class="reference internal image-reference" href="_images/measurement_board-2.jpg"><img alt="alternate text" src="_images/measurement_board-2.jpg" style="width: 800px; height: 700px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image"></a></p>
</figcaption>
</figure>
</section>
</section>
<section id="current-injection-board">
<p class="caption"><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image"></a></p>
</div>
</div>
</div>
<div class="section" id="current-injection-board">
<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline"></a></h3>
<p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground.
In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results
......@@ -481,12 +393,10 @@ to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The rol
the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position,
the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized,
they remain in the normally closed position. This set-up offers a simple and robust solution to inject current.</p>
<figure class="align-center" id="id4">
<div class="align-center figure" id="id4">
<a class="reference internal image-reference" href="_images/current_board.jpg"><img alt="alternate text" src="_images/current_board.jpg" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
</div>
<p>The next step consists of featuring the 4-channel relay module used for current injection and its assembly. The wiring
between the relays must be carried out in strict accordance with Fig. 10. This card must then be connected to the Raspberry
Pi and the measurement card. On the Raspberry Pi, it is necessary to connect inputs In1 and In2 to the same GPIO. For this
......@@ -494,22 +404,20 @@ purpose, it is necessary to solder together the two pins on the 4-channel relay
the relay card’s 4 channels respectively to the GND pin and 5Vcc of the Raspberry Pi. Now connect relays 1, 2, 3 and 4, as
shown in the diagram, using 1-mm2 cables (red and black in Fig. 10). Lastly, connect the inputs of relay 1 and 2 respectively
to terminals B and A of the measurement board.</p>
<figure class="align-center" id="id5">
<div class="align-center figure" id="id5">
<a class="reference internal image-reference" href="_images/installation_current_board.jpg"><img alt="alternate text" src="_images/installation_current_board.jpg" style="width: 800px; height: 700px;" /></a>
<figcaption>
<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
</div>
<p>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
</section>
<section id="frist-four-electrodes-resistivity-mesurement">
</div>
<div class="section" id="frist-four-electrodes-resistivity-mesurement">
<h3>Frist four electrodes resistivity mesurement<a class="headerlink" href="#frist-four-electrodes-resistivity-mesurement" title="Permalink to this headline"></a></h3>
<p>Under construction !</p>
<p>Describe the way to valide the first part of the instruction.
Electrical resistivity measurement on test circuit</p>
</section>
</section>
<section id="multiplexer-implentation">
</div>
</div>
<div class="section" id="multiplexer-implentation">
<h2>Multiplexer implentation<a class="headerlink" href="#multiplexer-implentation" title="Permalink to this headline"></a></h2>
<p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement
by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands
......@@ -520,12 +428,10 @@ modules with 16 channels each. On the first board, on each MUX, 15 relays out of
configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes,
which is entirely possible, a GPIO channel multiplier will have to be used.
To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below.</p>
<figure class="align-center" id="id6">
<div class="align-center figure" id="id6">
<a class="reference internal image-reference" href="_images/multiplexer_implementation.jpg"><img alt="alternate text" src="_images/multiplexer_implementation.jpg" style="width: 800px; height: 500px;" /></a>
<figcaption>
<p><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
</div>
<p>For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly.
The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had
been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added.
......@@ -534,12 +440,10 @@ As a final step, connect the cables to the correct connectors. This operation mu
for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi,
see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure.</p>
<blockquote>
<div><figure class="align-center" id="id7">
<div><div class="align-center figure" id="id7">
<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</div>
</div></blockquote>
<p>For the 16-channel relay shield no. 1, these steps must be followed:
* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board.
......@@ -601,43 +505,39 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a
<blockquote>
<div><p>Connection of the GPIOs to each multiplexer</p>
</div></blockquote>
</section>
<section id="electrode-connection">
</div>
<div class="section" id="electrode-connection">
<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this headline"></a></h2>
<p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used.
According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming
connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p>
<figure class="align-center" id="id8">
<div class="align-center figure" id="id8">
<a class="reference internal image-reference" href="_images/cable.jpg"><img alt="alternate text" src="_images/cable.jpg" style="width: 800px; height: 300px;" /></a>
<figcaption>
<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image"></a></p>
</div>
<p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B
must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block.
This operation must be repeated for all 32 electrodes.</p>
<figure class="align-center" id="id9">
<div class="align-center figure" id="id9">
<a class="reference internal image-reference" href="_images/electrode_cable.jpg"><img alt="alternate text" src="_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a>
<figcaption>
<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image"></a></p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The 16 channel relay cards exist in 5-V and 12-V , in the bottom figure we have 12-V cards that we will directly connect to the battery.
In case you bought 16 channel relay 5-V cards, you will need to add a DC/DC 12-V/5-V converter. You can use a STEP DOWN MODULE DC-DC (Velleman WPM404) and set the voltage to 5V with the potentiometer.</p>
</div>
</section>
<section id="operating-instruction">
</div>
<div class="section" id="operating-instruction">
<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this headline"></a></h2>
<section id="preliminary-procedure-only-for-the-initial-operation">
<div class="section" id="preliminary-procedure-only-for-the-initial-operation">
<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this headline"></a></h3>
<p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>)
or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme” file
is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing
the required packages and running the code.</p>
</section>
<section id="startup-procedure">
</div>
<div class="section" id="startup-procedure">
<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline"></a></h3>
<p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer)
into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply
......@@ -647,23 +547,30 @@ function may be adjusted/optimized depending on the measurement attributes. For
plugged into the hardware; the “ohmpi.py” source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now
hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance
are displayed on the screen. A measurement file is automatically created and named “measure.csv”; it will be placed in the same folder.</p>
</section>
<section id="electrical-resistivity-measurement-parameters-description">
</div>
<div class="section" id="electrical-resistivity-measurement-parameters-description">
<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this headline"></a></h3>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">27</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">28</span><span class="sd"> measurement parameters</span>
<span class="linenos">29</span><span class="sd"> &quot;&quot;&quot;</span>
<span class="linenos">30</span> <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span>
<span class="linenos">31</span> <span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span>
<span class="linenos">32</span> <span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span>
<span class="linenos">33</span> <span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span>
<span class="linenos">34</span> <span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>27
28
29
30
31
32
33
34</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> measurement parameters</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span>
<span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span>
<span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span>
<span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span>
<span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span>
</pre></div>
</div>
</td></tr></table></div>
<p>The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code.</p>
</section>
</section>
<section id="complete-list-of-components">
</div>
</div>
<div class="section" id="complete-list-of-components">
<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -831,63 +738,38 @@ are displayed on the screen. A measurement file is automatically created and nam
</tr>
</tbody>
</table>
</section>
</section>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="V1_02.html" class="btn btn-neutral float-right" title="OhmPi V 1.02 (limited to 32 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="Ohmpi.html" class="btn btn-neutral float-left" title="OhmPi project" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="Ohmpi.html" class="btn btn-neutral float-left" title="OhmPi project" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="V1_02.html" class="btn btn-neutral float-right" title="OhmPi V 1.02 (limited to 32 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, INRAE, Rémi CLEMENT
</p>
<p>&#169; Copyright 2020, INRAE, Rémi CLEMENT.</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8">
<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OhmPi V 1.02 (limited to 32 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OhmPi V 1.02 (limited to 32 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script src="_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="OhmPi V 2.xx (64 or 128 electrodes)" href="V2_00.html" />
<link rel="prev" title="OhmPi V 1.01 (limited to 32 electrodes)" href="V1_01.html" />
</head>
<body class="wy-body-for-nav">
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi:
<a href="index.html" class="icon icon-home"> Ohmpi:
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
......@@ -74,18 +35,7 @@
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Ohmpi.html">OhmPi project</a></li>
<li class="toctree-l1"><a class="reference internal" href="V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
......@@ -122,82 +72,43 @@
<li class="toctree-l1"><a class="reference internal" href="V2_00.html">OhmPi V 2.xx (64 or 128 electrodes)</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Ohmpi:</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>OhmPi V 1.02 (limited to 32 electrodes)</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/V1_02.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ohmpi-v-1-02-limited-to-32-electrodes">
<div class="section" id="ohmpi-v-1-02-limited-to-32-electrodes">
<h1>OhmPi V 1.02 (limited to 32 electrodes)<a class="headerlink" href="#ohmpi-v-1-02-limited-to-32-electrodes" title="Permalink to this headline"></a></h1>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>In this version, we have improved the electronic measurement board. To upgrade from version 1.01 to 1.02, you just have to replace the measurement board by the new one proposed here.</p>
</div>
<section id="the-philosophy-of-ohmpi">
<div class="section" id="the-philosophy-of-ohmpi">
<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline"></a></h2>
<p>The philosophy of Ohmpi V1.01 is to offer a multi electrode resistivity meter, from a set of commercially available
electronic cards it is a resistivity meter limited to 32 electrodes only. It is limited to low-current injection,
but suitable for small laboratory experiments and small field time monitoring</p>
</section>
<section id="technical-data">
</div>
<div class="section" id="technical-data">
<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this headline"></a></h2>
<table class="docutils align-default">
<colgroup>
......@@ -253,10 +164,10 @@ control system</p></td>
</tr>
</tbody>
</table>
</section>
<section id="raspberry-pi-configuration">
</div>
<div class="section" id="raspberry-pi-configuration">
<h2>Raspberry Pi configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this headline"></a></h2>
<section id="os-installation">
<div class="section" id="os-installation">
<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline"></a></h3>
<p>The first step is to start up the Raspberry Pi board, including installation of an OS (operating system).
For this step, the installation instructions are well described on the Raspberry website</p>
......@@ -267,9 +178,9 @@ For this step, the installation instructions are well described on the Raspberry
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/raspbian_version.jpg"><img alt="alternate text" src="_images/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
</figure>
</div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -305,8 +216,8 @@ To ensure that the GPIOs are in Low position, you will need to modify the /boot/
<li><p>Press Ctrl +x to escap and return to the terminal</p></li>
<li><p>Close the terminal</p></li>
</ol>
</section>
<section id="virtual-environnement-and-packages">
</div>
<div class="section" id="virtual-environnement-and-packages">
<h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline"></a></h3>
<p>All dependencies are specified in requirements.txt</p>
<div class="admonition note">
......@@ -339,38 +250,38 @@ to leave the virtual environment simply type:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">deactivate</span>
</pre></div>
</div>
</section>
<section id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
</div>
<div class="section" id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
<h3>Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)<a class="headerlink" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi" title="Permalink to this headline"></a></h3>
<p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p>
<p>1- Run the Thonny Python IDE software, Click on raspebrry acces <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
<p>2- Thonny’s interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3))</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_first_interface.jpg"><img alt="alternate text" src="_images/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_option.jpg"><img alt="alternate text" src="_images/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>4-On the new open windows select <strong>alternative Pyhton3 or virtual environnement</strong></p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter.jpg"><img alt="alternate text" src="_images/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>5- New buttons appeared, selected <strong>“locate another python executable “</strong></p>
<p>6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created <strong>/home/pi/ohmpi/bin/python3</strong>.</p>
<p>7- In the <strong>known interpreter</strong> tab the path of the virtual environnementshould appear</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter_folder.jpg"><img alt="alternate text" src="_images/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>8- Close the window by clicking on <strong>ok</strong>.</p>
<p>9- Close thonny to save modifications</p>
</section>
</section>
<section id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">
</div>
</div>
<div class="section" id="assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">
<h2>Assembly of the measuring/current injection cards, and connection with the Raspberry Pi<a class="headerlink" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi" title="Permalink to this headline"></a></h2>
<section id="electrical-resistivity-measurements-board">
<div class="section" id="electrical-resistivity-measurements-board">
<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this headline"></a></h3>
<section id="a-description">
<div class="section" id="a-description">
<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this headline"></a></h4>
<p>To measure electrical resistivity with Raspberry Pi, an ADS1115 was introduced, as proposed by Florsch [7]. The ADS1115
is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. Its value has been set at 2/3 in this study. The
......@@ -408,18 +319,16 @@ In version 1.02, we have improved the electronic board of measurement. we have a
We also added 4 capacitors on the +12v inputs of the fast operational amplifiers. These are decoupling capacitors (typically 100nF ceramic)
between each power supply terminal and ground. The last point, we have added a four very high resistances of 10 MOhm, between the ground and
the signal input on the operational amplifiers. This prevents the operational amplifiers from overheating.</p>
<figure class="align-center" id="id1">
<div class="align-center figure" id="id1">
<a class="reference internal image-reference" href="_images/schema_measurement_board1_02.png"><img alt="alternate text" src="_images/schema_measurement_board1_02.png" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement board (Ohmpi version 1.02)</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Measurement board (Ohmpi version 1.02)</span><a class="headerlink" href="#id1" title="Permalink to this image"></a></p>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If you want to have very accurate measurements you can replace the resistors with a tolerance of 1% by resistors with a tolerance of 0.01% which will improve the measurement, but the cost will be higher.</p>
</div>
</section>
<section id="b-implementation">
</div>
<div class="section" id="b-implementation">
<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this headline"></a></h4>
<p>The measurement board must be printed using the PCB file (Source file repository), with components soldered onto
it by following the steps described below and illustrated in the following figure :</p>
......@@ -435,16 +344,23 @@ it by following the steps described below and illustrated in the following figur
\[coeff p2 = (R7 + R6) / R7\]</div>
<div class="math notranslate nohighlight">
\[coeff p3 = (R9 + R8) / R9\]</div>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span> <span class="sd">&quot;&quot;&quot;</span>
<span class="linenos">37</span><span class="sd"> hardware parameters</span>
<span class="linenos">38</span><span class="sd"> &quot;&quot;&quot;</span>
<span class="linenos">39</span> <span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span>
<span class="linenos">40</span> <span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span>
<span class="linenos">41</span> <span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span>
<span class="linenos">42</span> <span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span>
<span class="linenos">43</span> <span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>36
37
38
39
40
41
42
43</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> hardware parameters</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">R_ref</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># reference resistance value in ohm</span>
<span class="n">coef_p0</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P0, measurement in V/V</span>
<span class="n">coef_p1</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P1, measurement in V/V</span>
<span class="n">coef_p2</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P2, measurement in V/V</span>
<span class="n">coef_p3</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="c1"># slope for current conversion for ADS.P3, measurement in V/V</span>
</pre></div>
</div>
</td></tr></table></div>
<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
</div></blockquote>
</dd>
......@@ -463,21 +379,17 @@ it by following the steps described below and illustrated in the following figur
Once all the components have been soldered together, the measurement board can be connected to the Raspberry Pi and the
battery terminal, according to Figure 9. Between the battery and the TX+ terminal of the measurement board, remember to
place a fuse holder with a 1.5-A fuse for safety purposes.</p>
<figure class="align-center" id="id2">
<div class="align-center figure" id="id2">
<a class="reference internal image-reference" href="_images/measurement_board1-02.jpg"><img alt="alternate text" src="_images/measurement_board1-02.jpg" style="width: 800px; height: 700px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<figure class="align-center" id="id3">
<p class="caption"><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-Kohm resistors ± 1%, c)adding the 1.5-Kohm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image"></a></p>
</div>
<div class="align-center figure" id="id3">
<a class="reference internal image-reference" href="_images/measurement_board-2-V1-02.jpg"><img alt="alternate text" src="_images/measurement_board-2-V1-02.jpg" style="width: 800px; height: 700px;" /></a>
<figcaption>
<p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image"></a></p>
</figcaption>
</figure>
</section>
</section>
<section id="current-injection-board">
<p class="caption"><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image"></a></p>
</div>
</div>
</div>
<div class="section" id="current-injection-board">
<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this headline"></a></h3>
<p>To carry out the electrical resistivity measurement, the first step consists of injecting current into the ground.
In our case, a simple 9-V lead-acid battery is used to create an electrical potential difference that results
......@@ -490,12 +402,10 @@ to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The rol
the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by the GPIO 8 in the open position,
the positive battery pole is connected to electrode A and the negative pole to electrode B. When not energized,
they remain in the normally closed position. This set-up offers a simple and robust solution to inject current.</p>
<figure class="align-center" id="id4">
<div class="align-center figure" id="id4">
<a class="reference internal image-reference" href="_images/current_board.jpg"><img alt="alternate text" src="_images/current_board.jpg" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
</div>
<p>The next step consists of featuring the 4-channel relay module used for current injection and its assembly. The wiring
between the relays must be carried out in strict accordance with Fig. 10. This card must then be connected to the Raspberry
Pi and the measurement card. On the Raspberry Pi, it is necessary to connect inputs In1 and In2 to the same GPIO. For this
......@@ -503,22 +413,20 @@ purpose, it is necessary to solder together the two pins on the 4-channel relay
the relay card’s 4 channels respectively to the GND pin and 5Vcc of the Raspberry Pi. Now connect relays 1, 2, 3 and 4, as
shown in the diagram, using 1-mm2 cables (red and black in Fig. 10). Lastly, connect the inputs of relay 1 and 2 respectively
to terminals B and A of the measurement board.</p>
<figure class="align-center" id="id5">
<div class="align-center figure" id="id5">
<a class="reference internal image-reference" href="_images/installation_current_board_1_02.jpg"><img alt="alternate text" src="_images/installation_current_board_1_02.jpg" style="width: 800px; height: 700px;" /></a>
<figcaption>
<p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
</div>
<p>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
</section>
<section id="frist-four-electrodes-resistivity-mesurement">
</div>
<div class="section" id="frist-four-electrodes-resistivity-mesurement">
<h3>Frist four electrodes resistivity mesurement<a class="headerlink" href="#frist-four-electrodes-resistivity-mesurement" title="Permalink to this headline"></a></h3>
<p>Under construction !</p>
<p>Describe the way to valide the first part of the instruction.
Electrical resistivity measurement on test circuit</p>
</section>
</section>
<section id="multiplexer-implentation">
</div>
</div>
<div class="section" id="multiplexer-implentation">
<h2>Multiplexer implentation<a class="headerlink" href="#multiplexer-implentation" title="Permalink to this headline"></a></h2>
<p>The resistivity measurement is conducted on four terminals (A, B, M and N). The user could perform each measurement
by manually plugging four electrodes into the four channel terminals. In practice, ERT requires several tens or thousands
......@@ -529,12 +437,10 @@ modules with 16 channels each. On the first board, on each MUX, 15 relays out of
configuration enables making smaller multiplexers (8 or 16 electrodes only). On the other hand, if you prefer upping to 64 electrodes,
which is entirely possible, a GPIO channel multiplier will have to be used.
To prepare the multiplexer, the channels of the two relay boards must be connected according to the wiring diagram shown below.</p>
<figure class="align-center" id="id6">
<div class="align-center figure" id="id6">
<a class="reference internal image-reference" href="_images/multiplexer_implementation.jpg"><img alt="alternate text" src="_images/multiplexer_implementation.jpg" style="width: 800px; height: 500px;" /></a>
<figcaption>
<p><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
</div>
<p>For this purpose, 0.5-mm² cables with end caps are used and their length adjusted for each connection in order to produce a clean assembly.
The length was adjusted so that the distance between the two points to be connected could be directly measured on the board once they had
been assembled one above the other, in adding an extra 3 cm. The wires at the ends need to be stripped and the end caps added.
......@@ -543,12 +449,10 @@ As a final step, connect the cables to the correct connectors. This operation mu
for activating each relay (Fig. 12). However, we will be activating several relays with a single GPIO (to limit the number of GPIOs used on Raspberry Pi,
see Section 2.4). To execute this step, it will be necessary to follow the protocol presented in Figure.</p>
<blockquote>
<div><figure class="align-center" id="id7">
<div><div class="align-center figure" id="id7">
<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a>
<figcaption>
<p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
</div>
</div></blockquote>
<p>For the 16-channel relay shield no. 1, these steps must be followed:
* Position a test circuit with 10 horizontal and 10 vertical holes on the pins of the 16-channel relay shield board.
......@@ -610,43 +514,39 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a
<blockquote>
<div><p>Connection of the GPIOs to each multiplexer</p>
</div></blockquote>
</section>
<section id="electrode-connection">
</div>
<div class="section" id="electrode-connection">
<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this headline"></a></h2>
<p>At this point, all that remains is to connect the electrodes of each multiplexer to a terminal block (Fig. 13). In our set-up, screw terminals assembled on a din rail were used.
According to the chosen multiplexer configuration, all the relays of each multiplexer will be connected to an electrode and, consequently, each electrode will have four incoming
connections. Instead of having four cables connecting an electrode terminal to each multiplexer, we recommend using the cable assembly shown in the following Figure.</p>
<figure class="align-center" id="id8">
<div class="align-center figure" id="id8">
<a class="reference internal image-reference" href="_images/cable.jpg"><img alt="alternate text" src="_images/cable.jpg" style="width: 800px; height: 300px;" /></a>
<figcaption>
<p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image"></a></p>
</div>
<p>the next figure provides an example of multiplexer relay connections for electrode no. 1: this electrode of multiplexer MUX A must be connected to electrode no. 1 of MUX B. Moreover, electrode no. 1 of MUX B
must be connected to electrode no. 1 of MUX N, which in turn must be connected to electrode no. 1 of MUX M. Lastly, electrode no. 1 of MUX M is connected to the terminal block.
This operation must be repeated for all 32 electrodes.</p>
<figure class="align-center" id="id9">
<div class="align-center figure" id="id9">
<a class="reference internal image-reference" href="_images/electrode_cable.jpg"><img alt="alternate text" src="_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a>
<figcaption>
<p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image"></a></p>
</figcaption>
</figure>
<p class="caption"><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image"></a></p>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>The 16 channel relay cards exist in 5-V and 12-V , in the bottom figure we have 12-V cards that we will directly connect to the battery.
In case you bought 16 channel relay 5-V cards, you will need to add a DC/DC 12-V/5-V converter. You can use a STEP DOWN MODULE DC-DC (Velleman WPM404) and set the voltage to 5V with the potentiometer.</p>
</div>
</section>
<section id="operating-instruction">
</div>
<div class="section" id="operating-instruction">
<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this headline"></a></h2>
<section id="preliminary-procedure-only-for-the-initial-operation">
<div class="section" id="preliminary-procedure-only-for-the-initial-operation">
<h3>Preliminary procedure (Only for the initial operation)<a class="headerlink" href="#preliminary-procedure-only-for-the-initial-operation" title="Permalink to this headline"></a></h3>
<p>The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (<a class="reference external" href="https://osf.io/dzwb4/">https://osf.io/dzwb4/</a>)
or at the following Gitlab repository address: <a class="reference external" href="https://gitlab.irstea.fr/reversaal/OhmPi">https://gitlab.irstea.fr/reversaal/OhmPi</a>. The code must be then unzipped into a selected folder (e.g. OhmPi-master). A “readme” file
is proposed in the directory to assist with installation of the software and required python packages. It is strongly recommended to create a python virtual environment for installing
the required packages and running the code.</p>
</section>
<section id="startup-procedure">
</div>
<div class="section" id="startup-procedure">
<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this headline"></a></h3>
<p>As an initial operating instruction, all batteries must be disconnected before any hardware handling. Ensure that the battery is charged at full capacity. Plug all the electrodes (32 or fewer)
into the screw terminals. The Raspberry Pi must be plugged into a computer screen, with a mouse and keyboard accessed remotely. The Raspberry Pi must then be plugged into the power supply
......@@ -656,21 +556,26 @@ function may be adjusted/optimized depending on the measurement attributes. For
plugged into the hardware; the “ohmpi.py” source code must be run within a python3 environment (or a virtual environment if one has been created) either in the terminal or using Thonny. You should now
hear the characteristic sound of a relay switching as a result of electrode permutation. After each quadrupole measurement, the potential difference as well as the current intensity and resistance
are displayed on the screen. A measurement file is automatically created and named “measure.csv”; it will be placed in the same folder.</p>
</section>
<section id="electrical-resistivity-measurement-parameters-description">
</div>
<div class="section" id="electrical-resistivity-measurement-parameters-description">
<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this headline"></a></h3>
<p>In the version 1.02, the measurement parameters are in the Jason file (ohmpi_param.json).</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">1</span> <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span>
<span class="linenos">2</span> <span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span>
<span class="linenos">3</span> <span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span>
<span class="linenos">4</span> <span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span>
<span class="linenos">5</span> <span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span>
<span class="linenos">6</span> <span class="n">export_path</span><span class="o">=</span> <span class="s2">&quot;home/pi/Desktop/measurement.csv&quot;</span>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6</pre></div></td><td class="code"><div class="highlight"><pre><span></span> <span class="n">nb_electrodes</span> <span class="o">=</span> <span class="mi">32</span> <span class="c1"># maximum number of electrodes on the resistivity meter</span>
<span class="n">injection_duration</span> <span class="o">=</span> <span class="mf">0.5</span> <span class="c1"># Current injection duration in second</span>
<span class="n">nbr_meas</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># Number of times the quadripole sequence is repeated</span>
<span class="n">sequence_delay</span><span class="o">=</span> <span class="mi">30</span> <span class="c1"># Delay in seconds between 2 sequences</span>
<span class="n">stack</span><span class="o">=</span> <span class="mi">1</span> <span class="c1"># repetition of the current injection for each quadripole</span>
<span class="n">export_path</span><span class="o">=</span> <span class="s2">&quot;home/pi/Desktop/measurement.csv&quot;</span>
</pre></div>
</td></tr></table></div>
</div>
</div>
</section>
</section>
<section id="complete-list-of-components">
<div class="section" id="complete-list-of-components">
<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this headline"></a></h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -845,63 +750,38 @@ are displayed on the screen. A measurement file is automatically created and nam
</tr>
</tbody>
</table>
</section>
</section>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="V2_00.html" class="btn btn-neutral float-right" title="OhmPi V 2.xx (64 or 128 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="V1_01.html" class="btn btn-neutral float-left" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="V1_01.html" class="btn btn-neutral float-left" title="OhmPi V 1.01 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="V2_00.html" class="btn btn-neutral float-right" title="OhmPi V 2.xx (64 or 128 electrodes)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, INRAE, Rémi CLEMENT
</p>
<p>&#169; Copyright 2020, INRAE, Rémi CLEMENT.</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<head>
<meta charset="utf-8">
<meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OhmPi V 2.xx (64 or 128 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OhmPi V 2.xx (64 or 128 electrodes) &mdash; Ohmpi: open hardware resistivity-meter documentation</title><link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script src="_static/language_data.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="OhmPi V 1.02 (limited to 32 electrodes)" href="V1_02.html" />
</head>
<body class="wy-body-for-nav">
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home" alt="Documentation Home"> Ohmpi:
<a href="index.html" class="icon icon-home"> Ohmpi:
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
......@@ -72,18 +34,7 @@
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Ohmpi.html">OhmPi project</a></li>
<li class="toctree-l1"><a class="reference internal" href="V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
......@@ -107,77 +58,38 @@
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Ohmpi:</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
<li>OhmPi V 2.xx (64 or 128 electrodes)</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/V2_00.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="ohmpi-v-2-xx-64-or-128-electrodes">
<div class="section" id="ohmpi-v-2-xx-64-or-128-electrodes">
<h1>OhmPi V 2.xx (64 or 128 electrodes)<a class="headerlink" href="#ohmpi-v-2-xx-64-or-128-electrodes" title="Permalink to this headline"></a></h1>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/Under-Construction.png"><img alt="Ohmpi 2" src="_images/Under-Construction.png" style="width: 500px; height: 250px;" /></a>
</figure>
<figure class="align-center">
</div>
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/image_ohmpi_2.jpg"><img alt="Ohmpi 2" src="_images/image_ohmpi_2.jpg" style="width: 800px; height: 600px;" /></a>
</figure>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>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.
......@@ -188,14 +100,14 @@ This new version is made up of:</p>
<li><p>A box</p></li>
</ol>
</div>
<section id="the-philosophy-of-ohmpi">
<div class="section" id="the-philosophy-of-ohmpi">
<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this headline"></a></h2>
<p>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.</p>
</section>
<section id="technical-data">
</div>
<div class="section" id="technical-data">
<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this headline"></a></h2>
<table class="docutils align-default">
<colgroup>
......@@ -283,10 +195,10 @@ control system</p></td>
</tr>
</tbody>
</table>
</section>
<section id="step-n1-raspberry-pi-configuration">
</div>
<div class="section" id="step-n1-raspberry-pi-configuration">
<h2><strong>STEP n°1</strong> : Raspberry Pi configuration<a class="headerlink" href="#step-n1-raspberry-pi-configuration" title="Permalink to this headline"></a></h2>
<section id="os-installation">
<div class="section" id="os-installation">
<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this headline"></a></h3>
<table class="docutils align-default">
<colgroup>
......@@ -324,9 +236,9 @@ For this step, the installation instructions are well described on the Raspberry
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/raspbian_version.jpg"><img alt="alternate text" src="_images/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
</figure>
</div>
</div>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
......@@ -362,8 +274,8 @@ To ensure that the GPIOs are in Low position, you will need to modify the /boot/
<li><p>Press Ctrl +x to escap and return to the terminal</p></li>
<li><p>Close the terminal</p></li>
</ol>
</section>
<section id="virtual-environnement-and-packages">
</div>
<div class="section" id="virtual-environnement-and-packages">
<h3>Virtual Environnement and packages<a class="headerlink" href="#virtual-environnement-and-packages" title="Permalink to this headline"></a></h3>
<p>A virtual environment is a way to have multiple, parallel instances of the Python interpreter, each with different package sets and different configurations.
Each virtual environment contains a discrete copy of the Python interpreter, including copies of its support utilities. It also protects your system in case of problems with the packages.</p>
......@@ -398,34 +310,34 @@ to leave the virtual environment simply type:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">deactivate</span>
</pre></div>
</div>
</section>
<section id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
</div>
<div class="section" id="activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi">
<h3>Activate virtual environnement on Thonny (Python IDE) (on Rapberry Pi)<a class="headerlink" href="#activate-virtual-environnement-on-thonny-python-ide-on-rapberry-pi" title="Permalink to this headline"></a></h3>
<p>If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.</p>
<p>1- Run the Thonny Python IDE software, Click on raspebrry acces <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
<p>2- Thonny’s interface opens, Python runs on the Root (Python 3.7.3 (/usr/bin/python3))</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_first_interface.jpg"><img alt="alternate text" src="_images/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_option.jpg"><img alt="alternate text" src="_images/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>4-On the new open windows select <strong>alternative Pyhton3 or virtual environnement</strong></p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter.jpg"><img alt="alternate text" src="_images/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>5- New buttons appeared, selected <strong>“locate another python executable “</strong></p>
<p>6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created <strong>/home/pi/ohmpi/bin/python3</strong>.</p>
<p>7- In the <strong>known interpreter</strong> tab the path of the virtual environnementshould appear</p>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/thonny_interpreter_folder.jpg"><img alt="alternate text" src="_images/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>8- Close the window by clicking on <strong>ok</strong>.</p>
<p>9- Close thonny to save modifications</p>
</section>
</section>
<section id="step-n2-assembly-of-the-measurement-board">
</div>
</div>
<div class="section" id="step-n2-assembly-of-the-measurement-board">
<h2><strong>STEP n°2</strong>: Assembly of the measurement board<a class="headerlink" href="#step-n2-assembly-of-the-measurement-board" title="Permalink to this headline"></a></h2>
<table class="docutils align-default">
<colgroup>
......@@ -436,9 +348,9 @@ to leave the virtual environment simply type:</p>
</tr>
</tbody>
</table>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/00_mes_board_components.jpg"><img alt="alternate text" src="_images/00_mes_board_components.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<table class="colwidths-given docutils align-default" id="id1">
<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id1" title="Permalink to this table"></a></caption>
<colgroup>
......@@ -661,11 +573,11 @@ to leave the virtual environment simply type:</p>
</tr>
</tbody>
</table>
<section id="description">
<div class="section" id="description">
<h3>Description<a class="headerlink" href="#description" title="Permalink to this headline"></a></h3>
<figure class="align-center">
<div class="align-center figure">
<a class="reference internal image-reference" href="_images/schema_measurement_board.jpg"><img alt="alternate text" src="_images/schema_measurement_board.jpg" style="width: 600px; height: 450px;" /></a>
</figure>
</div>
<p>Figure shows the general schematics for the electronic measurement board developed.
We have developed a complete “plug and play” measurement board. To measure electrical resistivity with Raspberry Pi.
two ADS1115 were used,one for the voltage measurement one for the current measurement, as proposed by Florsch [7]. The ADS1115
......@@ -1012,9 +924,9 @@ for Raspberry Pi connection</p></td>
</tr>
</tbody>
</table>
</section>
</section>
<section id="step-n3-start-up-of-the-measurement-board">
</div>
</div>
<div class="section" id="step-n3-start-up-of-the-measurement-board">
<h2><strong>STEP n°3</strong>: Start-up of the measurement board.<a class="headerlink" href="#step-n3-start-up-of-the-measurement-board" title="Permalink to this headline"></a></h2>
<table class="docutils align-default">
<colgroup>
......@@ -1150,8 +1062,8 @@ Raspberry Pi’s power port.</p></td>
</tr>
</tbody>
</table>
</section>
<section id="step-n4-measurement-board-validation">
</div>
<div class="section" id="step-n4-measurement-board-validation">
<h2><strong>STEP n°4</strong>: Measurement board validation<a class="headerlink" href="#step-n4-measurement-board-validation" title="Permalink to this headline"></a></h2>
<blockquote>
<div><p>Run the terminal, and write</p>
......@@ -1166,68 +1078,46 @@ Raspberry Pi’s power port.</p></td>
</colgroup>
<tbody>
<tr class="row-odd"><td rowspan="2"><p>Step n°3</p></td>
<td><img alt="_images/005.jpg" src="_images/005.jpg" />
<td><img alt="_images/i2cdetect.png" src="_images/i2cdetect.png" />
</td>
</tr>
<tr class="row-even"><td><p>Montage des écarteurs supérieurs sur la carte Raspberry</p></td>
<tr class="row-even"><td><p>If everything is working, three I2C addresses should appear
on the disp.</p></td>
</tr>
</tbody>
</table>
</section>
</section>
<p>Run the Thonny IDE and load the code Ohmpy4elec.pi</p>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="V1_02.html" class="btn btn-neutral float-left" title="OhmPi V 1.02 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="V1_02.html" class="btn btn-neutral float-left" title="OhmPi V 1.02 (limited to 32 electrodes)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, INRAE, Rémi CLEMENT
</p>
<p>&#169; Copyright 2020, INRAE, Rémi CLEMENT.</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</script>
</body>
</html>
\ No newline at end of file
sphinx/build/html/_images/i2cdetect.png

17.3 KB

......@@ -521,7 +521,7 @@ Complete list of components
.. csv-table:: Table Title
:file: C:\Users\remi.clement\Documents\28_ohmpi_all_git\master\sphinx\source\list.csv
:file: C:\Users\remi.clement\Documents\28_ohmpi_all_git\master2\sphinx\source\list.csv
:widths: 30, 70, 70, 70, 70,70
:header-rows: 1
......
......@@ -533,7 +533,7 @@ Complete list of components
.. csv-table:: List of components
:file: C:\Users\remi.clement\Documents\28_ohmpi_all_git\master\sphinx\source\list - 1_02.csv
:file: C:\Users\remi.clement\Documents\28_ohmpi_all_git\master2\sphinx\source\list - 1_02.csv
:widths: 30, 70, 70, 70, 70,70
:header-rows: 1
......
......@@ -599,14 +599,16 @@ which allows to realize precise current measurement around a shunt resistor. The
i2cdetect -y 1
.. table::
:align: center
+--------+------------------------------------------------------------+
| | .. image:: step_n_3/005.jpg |
| | .. image:: step_n_4/i2cdetect.png |
|Step n°3+------------------------------------------------------------+
| | Montage des écarteurs supérieurs sur la carte Raspberry |
| | |
| |If everything is working, three I2C addresses should appear |
| |on the disp. |
+--------+------------------------------------------------------------+
Run the Thonny IDE and load the code Ohmpy4elec.pi
\ No newline at end of file
......@@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
......@@ -130,7 +130,7 @@ ul.search li a {
font-weight: bold;
}
ul.search li p.context {
ul.search li div.context {
color: #888;
margin: 2px 0 0 30px;
text-align: left;
......@@ -277,25 +277,25 @@ p.rubric {
font-weight: bold;
}
img.align-left, figure.align-left, .figure.align-left, object.align-left {
img.align-left, .figure.align-left, object.align-left {
clear: left;
float: left;
margin-right: 1em;
}
img.align-right, figure.align-right, .figure.align-right, object.align-right {
img.align-right, .figure.align-right, object.align-right {
clear: right;
float: right;
margin-left: 1em;
}
img.align-center, figure.align-center, .figure.align-center, object.align-center {
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
img.align-default, figure.align-default, .figure.align-default {
img.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
......@@ -319,8 +319,7 @@ img.align-default, figure.align-default, .figure.align-default {
/* -- sidebars -------------------------------------------------------------- */
div.sidebar,
aside.sidebar {
div.sidebar {
margin: 0 0 0.5em 1em;
border: 1px solid #ddb;
padding: 7px;
......@@ -378,14 +377,12 @@ div.body p.centered {
/* -- content of sidebars/topics/admonitions -------------------------------- */
div.sidebar > :last-child,
aside.sidebar > :last-child,
div.topic > :last-child,
div.admonition > :last-child {
margin-bottom: 0;
}
div.sidebar::after,
aside.sidebar::after,
div.topic::after,
div.admonition::after,
blockquote::after {
......@@ -458,22 +455,20 @@ td > :last-child {
/* -- figures --------------------------------------------------------------- */
div.figure, figure {
div.figure {
margin: 0.5em;
padding: 0.5em;
}
div.figure p.caption, figcaption {
div.figure p.caption {
padding: 0.3em;
}
div.figure p.caption span.caption-number,
figcaption span.caption-number {
div.figure p.caption span.caption-number {
font-style: italic;
}
div.figure p.caption span.caption-text,
figcaption span.caption-text {
div.figure p.caption span.caption-text {
}
/* -- field list styles ----------------------------------------------------- */
......@@ -508,63 +503,6 @@ table.hlist td {
vertical-align: top;
}
/* -- object description styles --------------------------------------------- */
.sig {
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
}
.sig-name, code.descname {
background-color: transparent;
font-weight: bold;
}
.sig-name {
font-size: 1.1em;
}
code.descname {
font-size: 1.2em;
}
.sig-prename, code.descclassname {
background-color: transparent;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.sig-param.n {
font-style: italic;
}
/* C++ specific styling */
.sig-inline.c-texpr,
.sig-inline.cpp-texpr {
font-family: unset;
}
.sig.c .k, .sig.c .kt,
.sig.cpp .k, .sig.cpp .kt {
color: #0033B3;
}
.sig.c .m,
.sig.cpp .m {
color: #1750EB;
}
.sig.c .s, .sig.c .sc,
.sig.cpp .s, .sig.cpp .sc {
color: #067D17;
}
/* -- other body styles ----------------------------------------------------- */
......@@ -691,6 +629,14 @@ dl.glossary dt {
font-size: 1.1em;
}
.optional {
font-size: 1.3em;
}
.sig-paren {
font-size: larger;
}
.versionmodified {
font-style: italic;
}
......@@ -818,13 +764,8 @@ div.code-block-caption code {
}
table.highlighttable td.linenos,
span.linenos,
div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
-webkit-user-select: text; /* Safari fallback only */
-webkit-user-select: none; /* Chrome/Safari */
-moz-user-select: none; /* Firefox */
-ms-user-select: none; /* IE10+ */
div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */
user-select: none;
}
div.code-block-caption span.caption-number {
......@@ -839,6 +780,16 @@ div.literal-block-wrapper {
margin: 1em 0;
}
code.descname {
background-color: transparent;
font-weight: bold;
font-size: 1.2em;
}
code.descclassname {
background-color: transparent;
}
code.xref, a code {
background-color: transparent;
font-weight: bold;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,7 +4,7 @@
*
* Sphinx JavaScript utilities for all documentation.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
......@@ -29,14 +29,9 @@ if (!window.console || !console.firebug) {
/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
return decodeURIComponent(x).replace(/\+/g, ' ');
};
/**
......@@ -290,10 +285,9 @@ var Documentation = {
initOnKeyListeners: function() {
$(document).keydown(function(event) {
var activeElementType = document.activeElement.tagName;
// don't navigate when in search box, textarea, dropdown or button
// don't navigate when in search box or textarea
if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
&& activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
&& !event.shiftKey) {
&& !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
switch (event.keyCode) {
case 37: // left
var prevHref = $('link[rel="prev"]').prop('href');
......@@ -301,14 +295,12 @@ var Documentation = {
window.location.href = prevHref;
return false;
}
break;
case 39: // right
var nextHref = $('link[rel="next"]').prop('href');
if (nextHref) {
window.location.href = nextHref;
return false;
}
break;
}
}
});
......
!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<span class="toctree-expand"></span>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}t.length>0&&($(".wy-menu-vertical .current").removeClass("current"),t.addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l1").parent().addClass("current"),t.closest("li.toctree-l1").addClass("current"),t.closest("li.toctree-l2").addClass("current"),t.closest("li.toctree-l3").addClass("current"),t.closest("li.toctree-l4").addClass("current"),t.closest("li.toctree-l5").addClass("current"),t[0].scrollIntoView())}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);
\ No newline at end of file
!function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),n("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),n("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n('<button class="toctree-expand" title="Open/close menu"></button>'),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t<e.length&&!window.requestAnimationFrame;++t)window.requestAnimationFrame=window[e[t]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[e[t]+"CancelAnimationFrame"]||window[e[t]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(e,t){var i=(new Date).getTime(),o=Math.max(0,16-(i-n)),r=window.setTimeout((function(){e(i+o)}),o);return n=i+o,r}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()}).call(window)},function(n,e){n.exports=jQuery},function(n,e,t){}]);
\ No newline at end of file
......@@ -5,7 +5,7 @@
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
* :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2020 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
......@@ -13,8 +13,7 @@
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
/* Non-minified version is copied as a separate JS file, is available */
/* Non-minified version JS is _stemmer.js if file is provided */
/**
* Porter Stemmer
*/
......@@ -200,6 +199,7 @@ var Stemmer = function() {
var splitChars = (function() {
var result = {};
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment