diff --git a/doc/build/doctrees/Ohmpi.doctree b/doc/build/doctrees/Ohmpi.doctree
index 5734a81f8f3c5090ba228622de3c3f2d91f74321..4fcd48057741a8970f63ff4e9f57fd8c6a13a58b 100644
Binary files a/doc/build/doctrees/Ohmpi.doctree and b/doc/build/doctrees/Ohmpi.doctree differ
diff --git a/doc/build/doctrees/doc/Ohmpi.doctree b/doc/build/doctrees/doc/Ohmpi.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..8c20155438c6732188166e2c37985e218258f673
Binary files /dev/null and b/doc/build/doctrees/doc/Ohmpi.doctree differ
diff --git a/doc/build/doctrees/doc/V2023.x.x/V2023.doctree b/doc/build/doctrees/doc/V2023.x.x/V2023.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..2cc4ced37e0a0484358cc14fa9243870ca8528b2
Binary files /dev/null and b/doc/build/doctrees/doc/V2023.x.x/V2023.doctree differ
diff --git a/doc/build/doctrees/doc/V2023.x.x/V2023_step_01.doctree b/doc/build/doctrees/doc/V2023.x.x/V2023_step_01.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..0d880cb00dbaa7c2933b2d01b2582a288ad9e4c6
Binary files /dev/null and b/doc/build/doctrees/doc/V2023.x.x/V2023_step_01.doctree differ
diff --git a/doc/build/doctrees/doc/V2023.x.x/V2023_step_02.doctree b/doc/build/doctrees/doc/V2023.x.x/V2023_step_02.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..65bddf3ce50a793ff2c1c1a7955a02b5bb1de861
Binary files /dev/null and b/doc/build/doctrees/doc/V2023.x.x/V2023_step_02.doctree differ
diff --git a/doc/build/doctrees/doc/V2023.x.x/V2023_step_03.doctree b/doc/build/doctrees/doc/V2023.x.x/V2023_step_03.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..89d81aad85e59bedd771de8677ece6b8fd3cdf2d
Binary files /dev/null and b/doc/build/doctrees/doc/V2023.x.x/V2023_step_03.doctree differ
diff --git a/doc/build/doctrees/doc/V2023.x.x/V2023_step_04.doctree b/doc/build/doctrees/doc/V2023.x.x/V2023_step_04.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..f89d88332cd09a95ec14fb73960f2648b08f8022
Binary files /dev/null and b/doc/build/doctrees/doc/V2023.x.x/V2023_step_04.doctree differ
diff --git a/doc/build/doctrees/doc/V2024.x.x/V2024.doctree b/doc/build/doctrees/doc/V2024.x.x/V2024.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..33b9061a4a7b3ebe1678398ac4ba91bc1559e3bd
Binary files /dev/null and b/doc/build/doctrees/doc/V2024.x.x/V2024.doctree differ
diff --git a/doc/build/doctrees/doc/api.doctree b/doc/build/doctrees/doc/api.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..9ce9f3c33854e566da6fbdb675f1f10e96baf0bb
Binary files /dev/null and b/doc/build/doctrees/doc/api.doctree differ
diff --git a/doc/build/doctrees/doc/v1.xx/V1_01.doctree b/doc/build/doctrees/doc/v1.xx/V1_01.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7bebb86b8aa2acf25752f56c63936c660e925513
Binary files /dev/null and b/doc/build/doctrees/doc/v1.xx/V1_01.doctree differ
diff --git a/doc/build/doctrees/doc/v1.xx/V1_02.doctree b/doc/build/doctrees/doc/v1.xx/V1_02.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..27a04ffd968a30dc4d94d977e72ebc35a8cd862d
Binary files /dev/null and b/doc/build/doctrees/doc/v1.xx/V1_02.doctree differ
diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle
index 33e7903103a6736c070c3bc515087b0278d0f9c4..02672af823b865e9254a3787b83d0f733fe7b832 100644
Binary files a/doc/build/doctrees/environment.pickle and b/doc/build/doctrees/environment.pickle differ
diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree
index aac01e2f38c2290bb688b683b2b24b529fdad121..e5db6f599715ceca5ab03251834caf6409b382b6 100644
Binary files a/doc/build/doctrees/index.doctree and b/doc/build/doctrees/index.doctree differ
diff --git a/doc/build/doctrees/source_rst/Ohmpi.doctree b/doc/build/doctrees/source_rst/Ohmpi.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..bd22e2d0c2f21af04474b7af2d4bec038b971434
Binary files /dev/null and b/doc/build/doctrees/source_rst/Ohmpi.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..9b31327fc0e761953dba40cff4a6dd0f66d87468
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2023.x.x/V2023.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_01.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_01.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..7d8739e6d0b9d058083af0e66f8a1dc4f3b18d7f
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_01.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_02.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_02.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..a31a2a4a70f6ed4b0dad4a3ddf2122af9c00323c
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_02.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..136c7da98b05ccab8ffb45ec739be033a8b58e63
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_03.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_04.doctree b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_04.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..54d6913e0867c3d2e33605ae08bc2e4a365c74bb
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2023.x.x/V2023_step_04.doctree differ
diff --git a/doc/build/doctrees/source_rst/V2024.x.x/V2024.doctree b/doc/build/doctrees/source_rst/V2024.x.x/V2024.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..eb218d1b6d0d15fbc9f422471403fa79de68f527
Binary files /dev/null and b/doc/build/doctrees/source_rst/V2024.x.x/V2024.doctree differ
diff --git a/doc/build/doctrees/source_rst/api.doctree b/doc/build/doctrees/source_rst/api.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..6a5c36f771c73f3241c4ea7fe3762c264f390696
Binary files /dev/null and b/doc/build/doctrees/source_rst/api.doctree differ
diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..6af62847154df95d17a287380aa235180ca69572
Binary files /dev/null and b/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree differ
diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..aa197d0ba2b8b70ae1f4d0393a37d6ff6b55cdff
Binary files /dev/null and b/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree differ
diff --git a/doc/build/doctrees/source_rst/v1.xx/V2023.doctree b/doc/build/doctrees/source_rst/v1.xx/V2023.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..f20eba51a70f9cafb35fb3127a3d19d6c51a13c9
Binary files /dev/null and b/doc/build/doctrees/source_rst/v1.xx/V2023.doctree differ
diff --git a/doc/build/html/Ohmpi.html b/doc/build/html/Ohmpi.html
index 93758fd03d0cee5c094094717d293840fa102757..c46dfa0703330694445f706a033739d1642d0e6c 100644
--- a/doc/build/html/Ohmpi.html
+++ b/doc/build/html/Ohmpi.html
@@ -140,10 +140,8 @@ OhmPi must be assembled in a professional context and by people competent in ele
 held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi.
 The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and
 modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is
-distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS</p>
-<blockquote>
-<div><p>FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.</p>
-</div></blockquote>
+distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
+FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.</p>
 </div>
 <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 64 electrodes.OhmPi’s philosophy is to provide a fully open source and open hardware toolto the near surface scientific community.</p>
 <div class="admonition note">
diff --git a/doc/build/html/V1_01.html b/doc/build/html/V1_01.html
index 7e73752ff70e1d10c59282660e72abfe191efd7f..1e5fda553e61bd254993ade2f81c3c55eccf60df 100644
--- a/doc/build/html/V1_01.html
+++ b/doc/build/html/V1_01.html
@@ -77,6 +77,7 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
 </ul>
 
@@ -373,13 +374,13 @@ Once all the components have been soldered together, the measurement board can b
 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">
-<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>
+<a class="reference internal image-reference" href="measurement_board.jpg"><img alt="alternate text" src="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">
-<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>
+<a class="reference internal image-reference" href="measurement_board-2.jpg"><img alt="alternate text" src="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>
@@ -400,7 +401,7 @@ the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by t
 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">
-<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>
+<a class="reference internal image-reference" href="current_board.jpg"><img alt="alternate text" src="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>
@@ -413,7 +414,7 @@ the relay card’s 4 channels respectively to the GND pin and 5Vcc of the Raspbe
 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">
-<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>
+<a class="reference internal image-reference" href="installation_current_board.jpg"><img alt="alternate text" src="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>
@@ -439,7 +440,7 @@ configuration enables making smaller multiplexers (8 or 16 electrodes only). On
 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">
-<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>
+<a class="reference internal image-reference" href="multiplexer_implementation.jpg"><img alt="alternate text" src="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>
@@ -453,7 +454,7 @@ for activating each relay (Fig. 12). However, we will be activating several rela
 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">
-<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a>
+<a class="reference internal image-reference" href="connection.jpg"><img alt="alternate text" src="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>
@@ -527,7 +528,7 @@ connections. Instead of having four cables connecting an electrode terminal to e
 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">
-<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>
+<a class="reference internal image-reference" href="electrode_cable.jpg"><img alt="alternate text" src="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>
diff --git a/doc/build/html/V1_02.html b/doc/build/html/V1_02.html
index 5a5d70bf20c50cfda5576b40f8fe12da7d76a894..bdcf09d9e333603e03673ec77233ab1edd98604c 100644
--- a/doc/build/html/V1_02.html
+++ b/doc/build/html/V1_02.html
@@ -77,6 +77,7 @@
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
 </ul>
 
@@ -382,13 +383,13 @@ Once all the components have been soldered together, the measurement board can b
 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">
-<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>
+<a class="reference internal image-reference" href="measurement_board1-02.jpg"><img alt="alternate text" src="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">
-<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>
+<a class="reference internal image-reference" href="measurement_board-2-V1-02.jpg"><img alt="alternate text" src="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>
@@ -409,7 +410,7 @@ the polarity at electrodes A and B. Thus, when relays 3 and 4 are energized by t
 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">
-<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>
+<a class="reference internal image-reference" href="current_board.jpg"><img alt="alternate text" src="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>
@@ -422,7 +423,7 @@ the relay card’s 4 channels respectively to the GND pin and 5Vcc of the Raspbe
 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">
-<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>
+<a class="reference internal image-reference" href="installation_current_board_1_02.jpg"><img alt="alternate text" src="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>
@@ -448,7 +449,7 @@ configuration enables making smaller multiplexers (8 or 16 electrodes only). On
 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">
-<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>
+<a class="reference internal image-reference" href="multiplexer_implementation.jpg"><img alt="alternate text" src="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>
@@ -462,7 +463,7 @@ for activating each relay (Fig. 12). However, we will be activating several rela
 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">
-<a class="reference internal image-reference" href="_images/connection.jpg"><img alt="alternate text" src="_images/connection.jpg" style="width: 800px; height: 400px;" /></a>
+<a class="reference internal image-reference" href="connection.jpg"><img alt="alternate text" src="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>
@@ -536,7 +537,7 @@ connections. Instead of having four cables connecting an electrode terminal to e
 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">
-<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>
+<a class="reference internal image-reference" href="electrode_cable.jpg"><img alt="alternate text" src="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>
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20220207_154111.jpg b/doc/build/html/_images/20220207_154111.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20220207_154111.jpg
rename to doc/build/html/_images/20220207_154111.jpg
diff --git a/doc/logo_ohmpi.JPG b/doc/build/html/_images/logo_ohmpi1.JPG
similarity index 100%
rename from doc/logo_ohmpi.JPG
rename to doc/build/html/_images/logo_ohmpi1.JPG
diff --git a/doc/build/html/_sources/Ohmpi.rst.txt b/doc/build/html/_sources/Ohmpi.rst.txt
index 99d12c948dd75ab467b725dc15d5410732f343a0..d08b94990851235bc0f5d2a118581abcbd4ac3bf 100644
--- a/doc/build/html/_sources/Ohmpi.rst.txt
+++ b/doc/build/html/_sources/Ohmpi.rst.txt
@@ -2,7 +2,7 @@
 OhmPi project 
 ***************
 
-    .. image:: logo_ohmpi.JPG
+    .. image:: img/logo/ohmpi/logo_ohmpi.JPG
         :width: 250 px
         :align: center
         :height: 180 px
@@ -26,11 +26,11 @@ OhmPi project
 .. table::
    :align: center
   
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
-   |   .. image:: Logo_parteners/logo_inrae.jpg      |  .. image:: Logo_parteners/logo_univ_gustave.png |   .. image:: Logo_parteners/logo_ilvo.png    |
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
-   |   .. image:: Logo_parteners/logo_univ_mons.png  |  .. image:: Logo_parteners/ige.png               |                                              |              
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
+   |   .. image:: img/Logo/parteners/logo_inrae.jpg     |  .. image:: img/Logo/parteners/logo_univ_gustave.png |   .. image:: img/Logo/parteners/logo_ilvo.png|
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
+   |   .. image:: img/Logo/parteners/logo_univ_mons.png |  .. image:: img/Logo/parteners/ige.png               |                                              |              
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
    
   
 
@@ -55,7 +55,7 @@ OhmPi project
     The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and 
     modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is 
     distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
-     FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
+    FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
 
 
 
diff --git a/doc/source/Ohmpi.rst b/doc/build/html/_sources/doc/Ohmpi.rst.txt
similarity index 70%
rename from doc/source/Ohmpi.rst
rename to doc/build/html/_sources/doc/Ohmpi.rst.txt
index 99d12c948dd75ab467b725dc15d5410732f343a0..d08b94990851235bc0f5d2a118581abcbd4ac3bf 100644
--- a/doc/source/Ohmpi.rst
+++ b/doc/build/html/_sources/doc/Ohmpi.rst.txt
@@ -2,7 +2,7 @@
 OhmPi project 
 ***************
 
-    .. image:: logo_ohmpi.JPG
+    .. image:: img/logo/ohmpi/logo_ohmpi.JPG
         :width: 250 px
         :align: center
         :height: 180 px
@@ -26,11 +26,11 @@ OhmPi project
 .. table::
    :align: center
   
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
-   |   .. image:: Logo_parteners/logo_inrae.jpg      |  .. image:: Logo_parteners/logo_univ_gustave.png |   .. image:: Logo_parteners/logo_ilvo.png    |
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
-   |   .. image:: Logo_parteners/logo_univ_mons.png  |  .. image:: Logo_parteners/ige.png               |                                              |              
-   +-------------------------------------------------+--------------------------------------------------+----------------------------------------------+
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
+   |   .. image:: img/Logo/parteners/logo_inrae.jpg     |  .. image:: img/Logo/parteners/logo_univ_gustave.png |   .. image:: img/Logo/parteners/logo_ilvo.png|
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
+   |   .. image:: img/Logo/parteners/logo_univ_mons.png |  .. image:: img/Logo/parteners/ige.png               |                                              |              
+   +----------------------------------------------------+------------------------------------------------------+----------------------------------------------+
    
   
 
@@ -55,7 +55,7 @@ OhmPi project
     The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and 
     modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is 
     distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
-     FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
+    FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
 
 
 
diff --git a/doc/source/V2023.rst b/doc/build/html/_sources/doc/V2023.x.x/V2023.rst.txt
similarity index 100%
rename from doc/source/V2023.rst
rename to doc/build/html/_sources/doc/V2023.x.x/V2023.rst.txt
diff --git a/doc/source/Ohmpi_V2023/V2023_step_01.rst b/doc/build/html/_sources/doc/V2023.x.x/V2023_step_01.rst.txt
similarity index 100%
rename from doc/source/Ohmpi_V2023/V2023_step_01.rst
rename to doc/build/html/_sources/doc/V2023.x.x/V2023_step_01.rst.txt
diff --git a/doc/source/Ohmpi_V2023/V2023_step_02.rst b/doc/build/html/_sources/doc/V2023.x.x/V2023_step_02.rst.txt
similarity index 100%
rename from doc/source/Ohmpi_V2023/V2023_step_02.rst
rename to doc/build/html/_sources/doc/V2023.x.x/V2023_step_02.rst.txt
diff --git a/doc/source/Ohmpi_V2023/V2023_step_03.rst b/doc/build/html/_sources/doc/V2023.x.x/V2023_step_03.rst.txt
similarity index 100%
rename from doc/source/Ohmpi_V2023/V2023_step_03.rst
rename to doc/build/html/_sources/doc/V2023.x.x/V2023_step_03.rst.txt
diff --git a/doc/source/Ohmpi_V2023/V2023_step_04.rst b/doc/build/html/_sources/doc/V2023.x.x/V2023_step_04.rst.txt
similarity index 100%
rename from doc/source/Ohmpi_V2023/V2023_step_04.rst
rename to doc/build/html/_sources/doc/V2023.x.x/V2023_step_04.rst.txt
diff --git a/doc/source/V2024_rc.rst b/doc/build/html/_sources/doc/V2024.x.x/V2024.rst.txt
similarity index 100%
rename from doc/source/V2024_rc.rst
rename to doc/build/html/_sources/doc/V2024.x.x/V2024.rst.txt
diff --git a/doc/source/api.rst b/doc/build/html/_sources/doc/api.rst.txt
similarity index 100%
rename from doc/source/api.rst
rename to doc/build/html/_sources/doc/api.rst.txt
diff --git a/doc/source/V1_01.rst b/doc/build/html/_sources/doc/v1.xx/V1_01.rst.txt
similarity index 100%
rename from doc/source/V1_01.rst
rename to doc/build/html/_sources/doc/v1.xx/V1_01.rst.txt
diff --git a/doc/source/V1_02.rst b/doc/build/html/_sources/doc/v1.xx/V1_02.rst.txt
similarity index 100%
rename from doc/source/V1_02.rst
rename to doc/build/html/_sources/doc/v1.xx/V1_02.rst.txt
diff --git a/doc/build/html/_sources/index.rst.txt b/doc/build/html/_sources/index.rst.txt
index 6e1a93d55b23b80507b9b8c3882d66cc0f4caea0..eadff7d22eaefe5be13cbd763b1fac76a41fa219 100644
--- a/doc/build/html/_sources/index.rst.txt
+++ b/doc/build/html/_sources/index.rst.txt
@@ -23,7 +23,7 @@ OHMPI: Open source and open hardware resistivity-meter
     * Release guidelines
     * General tutorials
 
-.. image:: logo_ohmpi.JPG
+.. image:: img/Logo/ohmpi/logo_ohmpi.JPG
    :width: 200px
    :height: 150px
    :align: left
@@ -33,12 +33,12 @@ Contents:
 .. toctree:: 
    :maxdepth: 2 
 
-   Ohmpi
-   V1_01
-   V1_02
-   V2023
-   V2024_rc
-   api
+   source_rst/Ohmpi
+   source_rst/v1.xx/V1_01
+   source_rst/v1.xx/V1_02
+   source_rst/V2023.x.x/V2023
+   source_rst/V2024.x.x/V2024
+   source_rst/api
   
 
   
diff --git a/doc/build/html/_sources/source_rst/Ohmpi.rst.txt b/doc/build/html/_sources/source_rst/Ohmpi.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3d59a033d7aafb73bbfbe8b9f8d6426e1057cfcd
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/Ohmpi.rst.txt
@@ -0,0 +1,74 @@
+*************** 
+OhmPi project 
+***************
+
+    .. image:: ../img/logo/ohmpi/logo_ohmpi.JPG
+        :width: 250 px
+        :align: center
+        :height: 180 px
+        :alt: Logo OhmPi
+
+
+|  
+
+**Authors:** 
+------------
+| Rémi CLEMENT, Vivien DUBOIS, Nicolas Forquet, INRAE, REVERSAAL, Villeurbanne, France
+| Olivier KAUFMANN, Arnaud WATLET, Université de Mons, Mons, Belgium
+| Yannick FARGIER, GERS-RRO, Univ Gustave Eiffel, IFSTTAR, Lyon, France
+| Hélène GUYARD, IGE Grenoble, Université Grenoble Alpes, Grenoble, France
+| Guillaume BLANCHY, ILVO, Merelbeke, Belgium
+
+
+**Partners:**
+-------------
+
+.. table::
+   :align: center
+  
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   |   .. image::../img/Logo/parteners/logo_inrae.jpg     |  .. image::../img/Logo/parteners/logo_univ_gustave.png |   .. image::../img/Logo/parteners/logo_ilvo.png   |
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   |   .. image::../img/Logo/parteners/logo_univ_mons.png |  .. image::../img/Logo/parteners/ige.png               |                                                   |              
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   
+  
+
+**Citing OhmPi:** 
+-----------------
+
+|
+
+*Rémi Clement, Yannick Fargier, Vivien Dubois, Julien Gance, Emile Gros, et al.. OhmPi: An open*
+*source data logger for dedicated applications of electrical resistivity imaging at the small and laboratory*
+*scale. HardwareX, Elsevier, 2020, 8, 24 p. ff10.1016/j.ohx.2020.e00122ff.*
+
+|
+   
+**Introduction :** 
+------------------
+
+.. warning::
+    OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. 
+    OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be
+    held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. 
+    The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and 
+    modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is 
+    distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
+    FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
+
+
+
+
+
+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 meter\
+features current injection and measurement functions associated with a multiplexer \
+that allows performing automatic measurements with up to 64 electrodes.\
+OhmPi's philosophy is to provide a fully open source and open hardware tool\
+to the near surface scientific community.
+ 
+
+.. note:: 
+   Anyone who wants to get involved is welcome to join the OhmPi project!
diff --git a/doc/build/html/_sources/source_rst/V2023.x.x/V2023.rst.txt b/doc/build/html/_sources/source_rst/V2023.x.x/V2023.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..daac2d421e8502671baf0cdff237fe67e18d580b
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2023.x.x/V2023.rst.txt
@@ -0,0 +1,326 @@
+********************************************
+OhmPi V2023 (64 electrodes and 12V)
+******************************************** 
+
+.. warning::
+  **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. figure:: ../../img/v2023.x.x/image_ohmpi_2.jpg
+     :width: 400px
+     :align: center
+     :height: 350px
+     :alt: OhmPi V: 2023.0.0-rc1
+     :figclass: align-center
+
+.. note:: 
+   In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+   This new version is made up of:
+
+   1. A measurement board for four-point measurement
+
+   2. 4 multiplexer cards
+
+   3. A box
+
+  The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.
+
+The philosophy of OhmPi
+========================
+
+The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one. 
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.
+
+=============================================================================================================================================================
+
+Hardware
+========
+
+Specifications
+--------------
+
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+| **Parameter**                 |       **V1.0x**       | Units     |       **v2023**       | Units     |
++===============================+=======================+===========+=======================+===========+
+|Electrodes                     |32                     |           |64 to 128              |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Operating temperature          |-0 to 50               |°c         |-25 to 50              |°C         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Power consumption of CPU and   |18.5                   |W          |18.5                   |W          |
+|control system                 |                       |           |                       |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Voltage injection              |12                     |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Battery                        |9                      |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Current                        |0 to 40                |mA         |0 to 40                |mA         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Min pulse duration             |150                    |ms         |150                    |ms         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Input impedance                |80                     |MOhm       |80                     |MOhm       |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Data storage                   |micro SD card          |           |micro SD card          |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Resolution                     |0.01                   |Ohm        |0.01                   |Ohm        |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+
+Building an OhmPi V2023 step by step
+------------------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   V2023_step_01
+   V2023_step_02
+   V2023_step_03
+   V2023_step_04
+
+
+Software and operation
+======================
+
+System architecture
+-------------------
+
+The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.
+
+.. figure::../../../img/architecture.png
+
+     Software architecture of OhmPi V2023.
+
+The general system configuration is defined in the `config.py` file covered in the `Configuration file`_ section.
+The acquisition settings (i.e. injection duration, stacks...) are defined in a separate JSON file (default: ohmpi_settings.json).  
+
+The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the `Loggers`_ section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see `Interfaces and applications`_).
+
+Loggers
+-------
+
+Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see `MQTT interface`_ for more details) and one for creating zipped rotated logs on disk).
+
+Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.
+
+By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the `Configuration file`_.
+
+Advanced users may write new handlers and edit the `setup_loggers.py` file to customize the logging mechanisms to their needs.
+
+Configuration file
+------------------
+
+The configuration of the OhmPi file `config.py` allows to configure the OhmPi.
+A default version of `config.py` is provided in the repository.
+This file should be edited to customize the configuration following the user's needs and preferences.  
+
+The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options...)  
+
+One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.
+
+
+
+Interfaces and applications
+---------------------------
+
+Different interfaces can be used to interact with the OhmPi.
+
+Available interfaces are:
+- `Web interface`_ (=HTTP interface): run in bash: `bash run_http_interface.sh`
+- Python API: import the OhmPi class from Python script: `from ohmpi import OhmPi` (see `Python interface`_)
+- MQTT: IoT messaging through a broker (see `MQTT interface`_)
+
+
+Web interface
+.............
+
+This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.
+
+The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the 'index.html' interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.
+
+To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
+
+Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
+to access the interface.
+
+.. figure:: ../../img/http-interface-pseudo-section.png
+
+    Web interface with its interactive pseudo-section.
+
+
+.. figure:: ../../img/http-interface-evolution.png
+
+     Evolution of quadrupole apparent resistivity with time.
+
+
+.. figure:: ../../img/http-interface-rs.png
+
+     Contact resistance check.
+
+
+
+Python interface
+................
+
+This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.
+
+By importing the `OhmPi` class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
+
+To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).
+
+
+.. code-block:: python
+  :caption: Example of using the Python API to control OhmPi
+
+  import os
+  import numpy as np
+  import time
+  os.chdir("/home/pi/OhmPi")
+  from ohmpi import OhmPi
+
+  ### Define object from class OhmPi
+  k = OhmPi()  # this loads default parameters from the disk
+
+  ### Default parameters can also be edited manually
+  k.settings['injection_duration'] = 0.5  # injection time in seconds
+  k.settings['nb_stack'] = 1  # one stack is two half-cycles
+  k.settings['nbr_meas'] = 1  # number of time the sequence is repeated
+
+  ### Update settings if needed
+  k.update_settings({"injection_duration":0.2})
+
+  ### Set or load sequence
+  k.sequence = np.array([[1,2,3,4]])    # set numpy array of shape (n,4)
+  # k.set_sequence('1 2 3 4\n2 3 4 5')    # call function set_sequence and pass a string
+  # k.load_sequence('ABMN.txt')    # load sequence from a local file
+
+  ### Run contact resistance check
+  k.rs_check()
+
+  ### Run sequence (synchronously - it will wait that all
+  # sequence is measured before returning the prompt
+  k.run_sequence()
+  # k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately
+  # time.sleep(2)
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Run multiple sequences at given time interval
+  k.settings['nb_meas'] = 3  # run sequence three times
+  k.settings['sequence_delay'] = 100 # every 100 s
+  k.run_multiple_sequences()  # asynchron
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Single measurement can also be taken with
+  k.switch_mux_on([1, 4, 2, 3])
+  k.run_measurement()  # use default acquisition parameters
+  k.switch_mux_off([1, 4, 2, 3])  # don't forget this! risk of short-circuit
+
+  ### Custom or adaptative argument, see help(k.run_measurement)
+  k.run_measurement(nb_stack=4,  # do 4 stacks (8 half-cycles)
+                    injection_duration=2,  # inject for 2 seconds
+                    autogain=True)  # adapt gain of ADS to get good resolution
+
+
+
+MQTT interface
+..............
+
+This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.  
+
+This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.  
+
+An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.  
+
+MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as `MQTT Explorer <http://mqtt-explorer.com/>`_.
+
+Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:
+
+.. code-block:: json
+  :caption: Updating acquisition settings.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+    "kwargs": {
+      "config": {
+        "nb_meas": 2,
+        "nb_electrodes": 10,
+        "nb_stack": 2,
+        "injection_duration": 2,
+        "sequence_delay": 100
+      }
+    }
+  }
+
+
+.. code-block:: json
+  :caption: Check contact resistances
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "rs_check",
+  }
+
+.. code-block:: json
+  :caption: Running a sequence.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_sequence",
+  }
+
+.. code-block:: json
+  :caption: Running same sequence multiple times (nb_meas).
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_multiple_sequences",
+  }
+
+.. code-block:: json
+  :caption: Interrupt current acquisition.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "interrupt",
+  }
+
+Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as `Node-red <http://mqtt-explorer.com/>`_.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component. 
+
+Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :
+
+.. code-block:: JSON
+     node-red basic_ohmpi_flows_node-red.json
+
+These examples may require installing some additional node packages in order to work properly. This can be done in the `Palette Manager <https://nodered.org/docs/user-guide/editor/palette/manager> within Node-RED.
+
+.. figure:: ../../img/node-red_flow.png
+
+     Example flow in node-red to interact with an OhmPi.
+
+
+.. figure:: ../../img/node-red_interface_control.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.
+     
+.. figure:: ../../img/node-red_interface_data.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.
+
+
+For more documentation dedicated to node-red, please refer to the Node-red `cookbooks <https://cookbook.nodered.org/>`_.
diff --git a/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_01.rst.txt b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_01.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..29fb91978ca852edbb6344f7ef12176fab67d8d3
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_01.rst.txt
@@ -0,0 +1,156 @@
+**STEP n°1** : Raspberry Pi  configuration 
+*******************************************
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**PART A:** OS installation  
+=============================
+
++----------------------------------------------------+---------------+
+| **Required components**                            | **Quantity**  | 
++----------------------------------------------------+---------------+
+|Raspberry Pi 4 Model B                              |              1|
++----------------------------------------------------+---------------+
+|Micro SD 32 Go                                      |              1|
++----------------------------------------------------+---------------+
+|HDMI Cable                                          |              1|
++----------------------------------------------------+---------------+
+|Computer mouse                                      |              1|
++----------------------------------------------------+---------------+
+|Computer Keyboard                                   |              1|
++----------------------------------------------------+---------------+
+
+
+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 
+
+1. Watch the video `how to set up your raspberry Pi <https://www.youtube.com/watch?v=wjWZhV1v3Pk>`_.
+
+2. The authors recommend installing the latest stable and complete version of Raspberry Pi OS (Previously called Raspbian) by using Raspberry Pi Imager.
+
+3. or you can visit this `website <https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up>`.  
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+
+     .. figure:: ../../img/v2023.x.x/step_n_1/raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated and **I2C option** must be activated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+**PART B:** Virtual Environment and packages
+============================================
+
+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.
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+     
+     export CFLAGS=-fcommon
+     sudo pip install RPi.GPIO adafruit-blinka numpy pandas adafruit-circuitpython-ads1x15 adafruit-circuitpython-tca9548a adafruit-circuitpython-mcp230xx gpiozero
+
+Check that requirements are met using 
+
+.. code-block:: python
+
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+
+     deactivate
+
+
+**PART C:** Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)
+====================================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: ../../img/v2023.x.x/step_n_1//thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+8- Close the window by clicking on **ok**.
+
+9- Close Thonny to save modifications
+
+ 
diff --git a/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_02.rst.txt b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_02.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ca79eaeb05e427b2a5fc56ffed080b5316cc7820
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_02.rst.txt
@@ -0,0 +1,476 @@
+
+**STEP n°2**: Measurement board
+****************************************************
+
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**PART A** Assembly of the measurement board
+======================================================
+
+
+Required components 
+----------------------------------------------------
+
+.. figure:: ../../img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg       
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+
+
+
+.. csv-table:: List of components
+   :file: ../../img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1
+   
+Description
+------------------  
+
+.. figure:: ../../img/v2023.x.x/step_n_2/a/schema_measurement_board.jpg       
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+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
+is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. The advantage of ADS1115 is that the 
+input signal value could lie between - to + 6.114 V. For the current measurement we have directly integrated the INA282 component, 
+which allows to realize precise current measurement around a shunt resistor. The assembly are described in the following steps:
+
+
+
+.. table::
+   :align: center
+   
+   +--------+-------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/a/01_mes_board.jpg|
+   |      1 +-------------------------------------------------------------+
+   |        | Installation of female header, 1 by 10  pins, for ADS1115   | 
+   |        |                                                             |                                                                       
+   +--------+-------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+-------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/a/02_mes_board.jpg|
+   |2       +-------------------------------------------------------------+
+   |        | Soldering of 4 dual-in-line socket (2 by 2 pins) for        | 
+   |        | optical relay, AQY211EH.                                    |                                                                       
+   +--------+-------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/03_mes_board.jpg|
+   |3       +------------------------------------------------------------+
+   |        | Soldering of 1 dual-in-line socket (2 by 9 pins)           | 
+   |        | for MCP23008.                                              |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/04_mes_board.jpg|
+   | 4      +------------------------------------------------------------+
+   |        | Soldering of 1 dual-in-line socket (2 by 4 pins)           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+ 
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/05_mes_board.jpg|
+   |5       +------------------------------------------------------------+
+   |        | Soldering of 2 dual-in-line socket (2 by 4 pins)           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/06_mes_board.jpg|
+   | 6      +------------------------------------------------------------+
+   |        | Traco Power Supply 12V to 5V, TDH15 - 1211N                | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/07_mes_board.jpg|
+   |7       +------------------------------------------------------------+
+   |        | Four screw terminals for 12V inpout et 5V output           |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/08_mes_board.jpg|
+   |8       +------------------------------------------------------------+
+   |        | Traco power Supply 12V to 24V, TRN-1215                    | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+    
+
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/09_mes_board.jpg|
+   |9       +------------------------------------------------------------+
+   |        | Two screw terminals electrodes M and N                     | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/10_mes_board.jpg|
+   |10       +------------------------------------------------------------+
+   |         | Four screw terminals, for 12V power supply and for         | 
+   |         | electrodes A and B                                         |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/11_mes_board.jpg|
+   |11       +------------------------------------------------------------+
+   |         |  Soldering three capacitors (100nF)                        | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. warning::
+     
+     In this version, we used a shunt resistor of 2 ohms, which limits the current measurement to 48 mA. If the current is higher than this value, you just have to decrease the value of the shunt resistor. Don't forget to change the shunt value in the config.py file (value associated to key 'R_shunt' in the OHMPI_CONFIG dict).
+
+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/12_mes_board.jpg|
+   | 12      +------------------------------------------------------------+
+   |         | 2 ohms shunt resistor pre-adjustment                       | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/13_mes_board.jpg|
+   |13       +------------------------------------------------------------+
+   |         | Soldering 2 ohms shunt resistor                            | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/14_mes_board.jpg|
+   |14       +------------------------------------------------------------+
+   |         | 1 MOhm resistors                                           |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+  
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/15_mes_board.jpg|
+   |15       +------------------------------------------------------------+
+   |         | Soldering tow 1 kOhm resistors                             |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/16_mes_board.jpg|
+   |16       +------------------------------------------------------------+
+   |         | Soldering two 1.5 kOhm resistors                           |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/17_mes_board.jpg|
+   |17       +------------------------------------------------------------+
+   |         | Soldering two 1.5 kOhms resistors                          |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/18_mes_board.jpg|
+   |18       +------------------------------------------------------------+
+   |         | Female header 2 by 20 pins for Raspberry Pi connection     | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/19_mes_board.jpg|
+   |19       +------------------------------------------------------------+
+   |         | View of the female  header 2 by 20 pins installation       | 
+   |         | for Raspberry Pi connection                                |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/20_mes_board.jpg|
+   |20       +------------------------------------------------------------+
+   |         | Fixing MCP23008 component (Dot mark on the top left corner)| 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/21_mes_board.jpg|
+   |21       +------------------------------------------------------------+
+   |         |Mounting optical relay, AQY211EH (Dot mark in the top left  | 
+   |         |corners)                                                    |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/22_mes_board.jpg|
+   |22       +------------------------------------------------------------+
+   |         | Mounting LM158 operational amplifier                       |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/23_mes_board.jpg|
+   |23       +------------------------------------------------------------+
+   |         |  Mounting ADS115 board                                     | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/24_mes_board.jpg|
+   |24       +------------------------------------------------------------+
+   |         | Fixing the INA282 (Dot mark in the top right corner)       | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+  
+  
+**PART B** Start-up of the measurement board
+====================================================== 
+
+
++------------------------------------------------------------------------+
+| **Required components**                                                | 
++------------------------------------------------------------------------+
+
+.. csv-table:: List of components
+   :file: step_n_2/b/test_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/001.jpg         |
+   |1       +------------------------------------------------------------+
+   |        | Shutdown the raspberry Pi and unplug the power supply      | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/001.jpg                       |
+   |2       +--------------------------------------------------------------------------+
+   |        | Mounting the bottom spacers on the Raspberry Pi (male/female, 11mm, M3)  | 
+   |        |                                                                          |                                                                       
+   +--------+--------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/002.jpg                       |
+   |3       +--------------------------------------------------------------------------+
+   |        | Mounting the upper spacers on the Raspberry Pi (female/female, 11mm, M3) | 
+   |        |                                                                          |                                                                       
+   +--------+--------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/003.jpg        |
+   |4       +------------------------------------------------------------+
+   |        | Mounting the OhmPi's measurement board on the Raspberry Pi | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/004.jpg        |
+   |5       +------------------------------------------------------------+
+   |        | Mounting the OhmPi's measurement board on the Raspberry Pi | 
+   |        |                                                            |
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/005.jpg        |
+   |6       +------------------------------------------------------------+
+   |        | Plug the power supply into a socket and connect it to your | 
+   |        | Raspberry Pi's power port.                                 |
+   +--------+------------------------------------------------------------+  
+
+
+**PART C** Check the measurement board
+====================================================== 
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     i2cdetect -y 1
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/i2cdetect.png  |
+   |1       +------------------------------------------------------------+
+   |        |If everything is working, three I2C addresses should appear | 
+   |        |on the screen.                                              |                                                                       
+   +--------+------------------------------------------------------------+
+
+
+
+Setting up an equivalent electronic circuit, for this you will need: 
+ * 4 1kOhm resistor (R2)
+ * 1 220 Ohm resistor (R1)
+ * 1 small padboard
+ * Spool of solder
+ 
+ .. table::
+   :align: left
+ 
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/ref_circuit.png|
+   |2       +------------------------------------------------------------+
+   |        | Schematic of equivalent electronic circuit test            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_122820.jpg |
+   |3       +-----------------------------------------------------------------+
+   |        | Prepare the equivalent electronic circuit test                  |                                                                       
+   +--------+-----------------------------------------------------------------+ 
+
+  
+.. table::
+   :align: center
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_123034.jpg |
+   |4       +-----------------------------------------------------------------+
+   |        |  Prepare the battery connections and the terminals.             |                                                                       
+   +--------+-----------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_132856.jpg                |
+   |5       +--------------------------------------------------------------------------------+
+   |        | Soldering cables and terminals                                                 |                                                                       
+   +--------+--------------------------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg        |
+   |6       +--------------------------------------------------------------------------------+
+   |        |Install the red cables on the +12V terminal and black cable                     |                                                                       
+   |        |on the ground terminal. Connect to two different 12V                            |
+   |        |batteries                                                                       |
+   +--------+--------------------------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg       |
+   |7       +--------------------------------------------------------------------------------+
+   |        | Connect the equivalent electronic circuit test                                 |                                                                       
+   |        |                                                                                |
+   +--------+--------------------------------------------------------------------------------+
+   
+   
+.. table::
+   :align: center
+ 
+   +--------+-------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/thonny_first_interface.jpg        |
+   |7       +-------------------------------------------------------------------------------+
+   |        | Run the Thonny Interpreter                                                    |                    
+   |        |                                                                               |
+   +--------+-------------------------------------------------------------------------------+   
+
+
+.. table::
+   :align: center
+ 
+   +--------+------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20211206_144334.jpg              |
+   |7       +------------------------------------------------------------------------------+
+   |        | Run sample_measurement_example.py example, if everything                     |                    
+   |        | works you should  get the following result (220 Ohm)                         |
+   +--------+------------------------------------------------------------------------------+ 
diff --git a/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_03.rst.txt b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_03.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c268d128380cdaf9e750e66e02edff5dfd22acfd
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_03.rst.txt
@@ -0,0 +1,289 @@
+
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**STEP n°3:** MUX board
+****************************************************
+The multiplexing of the channels is a mechanical multiplexing based on OMRON's manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with 
+a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs. 
+We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit.
+This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each card has its own digital address between 0X70 and 0X77. 
+In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N.
+0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.
+
+**PART A** Assembly of MUX board
+======================================================
+
+
+Required components 
+----------------------------------------------------
+
+.. figure:: ../../img/v2023.x.x/step_n_3/a/MUX_board_components.jpg
+       :width: 600px
+       :align: center
+       :height: 650px
+       :alt: alternate text
+       :figclass: align-center
+
+
+.. csv-table:: List of components
+   :file: step_n_3/a/MUX_board_list_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1 
+   
+   
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_00.jpg                         |
+   |      1 +--------------------------------------------------------------------------------+
+   |        |Mux board pcb                                                                   | 
+   |        |                                                                                |                                                                       
+   +--------+--------------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_01.jpg     |
+   |      2 +------------------------------------------------------------+
+   |        |Installation of the 100 kOhm resistors                      |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+   
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_02.jpg     |
+   |      3 +------------------------------------------------------------+
+   |        |Installation of the MOSFET ZVN4206A                         |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+      
+   
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_03.jpg     |
+   |      4 +------------------------------------------------------------+
+   |        |Installation of the diode 1N4007                            |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+    
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_04.jpg     |
+   |      5 +------------------------------------------------------------+
+   |        |Installation of the relay                                   | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_05.jpg     |
+   |      6 +------------------------------------------------------------+
+   |        |Installation of the terminal screw                          | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_06.jpg     |
+   |      7 +------------------------------------------------------------+
+   |        |Installation of generic male header                         | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_07.jpg     |
+   |      8 +------------------------------------------------------------+
+   |        |Installation of Pin strip (6 pins)  and pin strip (16 pins) | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_08.jpg     |
+   |      9 +------------------------------------------------------------+
+   |        |Installation of DIP Dual In Line Socket 2*14                | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_09.jpg     |
+   |     10 +------------------------------------------------------------+
+   |        |Installation of Adafruit TCA9548A                           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_10.jpg     |
+   |     10 +------------------------------------------------------------+
+   |        |Installation of MCP23017                                    | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+   
+.. note:: 
+     This step must be duplicated 4 times for every Mux card.
+
+
+**PART B** MUX board address
+====================================================== 
+To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code.
+We present here the addresses selected by default.
+
+For the A electrode board, we suggest addressing it with address 0x70:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/A_0x70.jpg     |
+   |     1  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (A).                        |                                                                       
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/A_0x70-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+   
+
+  
+
+   
+For the B electrode board, we suggest addressing it with address 0x71:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/B_0x71.jpg     |
+   |     2  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                       
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/B_0x71-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+ 
+
+For the N electrode board, we suggest addressing it with address 0x72:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/M_0x72.jpg     |
+   |     3  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                     
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/M_0x72-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+ 
+
+For the M electrode board, we suggest addressing it with address 0x73: 
+  
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/N_0x73.jpg     |
+   |     4  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                     
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/N_0x73-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+    
+
+**PART C** Validation of MUX board
+======================================================
+The first step is to test the Mux boards before assembling them definitively.
+To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.
+
+The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.
+
+
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20211207_115706.jpg |
+   |     1  +-----------------------------------------------------------------+
+   |        |Build a cable with 6 contacts with 6 pins connector.             |
+   |        |                                                                 |                                                                     
+   +--------+-----------------------------------------------------------------+ 
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_142929.jpg |
+   |     2  +-----------------------------------------------------------------+
+   |        |Prepare the measurement board and the first mux board by         |
+   |        |example the card with address 0x71.                              |                                                                     
+   +--------+-----------------------------------------------------------------+
+
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_143105.jpg |
+   |     3  +-----------------------------------------------------------------+
+   |        |Connect the 12V power supply cables to the MUX board             |
+   |        |without powering the board.                                      |                                                                     
+   +--------+-----------------------------------------------------------------+   
+
+   +--------+------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220207_154111.jpg  |
+   |     4  +------------------------------------------------------------------+
+   |        |Connect the 12V power supply screw terminal of the mux            |
+   |        |board to the 12V screw terminal power supply of the               |
+   |        |measurement board.                                                |
+   +--------+------------------------------------------------------------------+   
+
+   +--------+------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_143823.jpg  |
+   |     5  +------------------------------------------------------------------+
+   |        |Connect the 6-contact cable                                       |
+   |        |                                                                  |                                                                     
+   +--------+------------------------------------------------------------------+
+   
+
+Start your 12V power supply, the raspberry must start. 
+
+Run the terminal and write:
+
+ .. code-block:: python
+
+     i2cdetect -y 1
+
+Three addresses should appear, including the address of the MUX board you have selected. This implies that your board has been detected.
+
+Open the script called "test_mux_board.py".
+
+Run the script
+
+   
+   
\ No newline at end of file
diff --git a/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_04.rst.txt b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_04.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d7d17b4a2b28006aa3a41fe607c6a7a628556188
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2023.x.x/V2023_step_04.rst.txt
@@ -0,0 +1,461 @@
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+
+
+
+**STEP n°4:** assemble the OhmPi
+****************************************************
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_1.jpg                         |
+   |      1 +------------------------------------------------------------+
+   |        |Cut 4 ribbon cables composed of 16 wires each to the proper | 
+   |        |length (about 1.5m). Each wire corresponds to an electrode. |                                                                      
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_2.jpg                         |
+   |      2 +------------------------------------------------------------+
+   |        |Crimp the ribbon cable on the corresponding idc connector   | 
+   |        |with a suitable clamp. Pay attention to the direction of    |
+   |        |the cables. Unbalanced IDC connector. The ribbon cable must |
+   |        |be perpendicular to the connector.                          |
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_3.jpg                         |
+   |      3 +------------------------------------------------------------+
+   |        |Example of IDC connector mounting. The wires should run as  | 
+   |        |perpendicular as possible to the IDC connector.             |                                                                      
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_4.jpg                         |
+   |      4 +------------------------------------------------------------+
+   |        |Same for a 6 wires ribbon cable of 1 m length.              | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_5.jpg                         |
+   |      5 +------------------------------------------------------------+
+   |        |Cut the ribbon cable flush with the IDC connector.          | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_6.jpg                         |
+   |      6 +------------------------------------------------------------+
+   |        |Position 9 spacers above the MUX board, and 9 spacers below |
+   |        |                                                            |                                                                      
+   +        +------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_7.jpg                         |
+   |        +------------------------------------------------------------+
+   |        |Profile view for mounting the spacers above and below.      | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_8.jpg                         |
+   |      7 +------------------------------------------------------------+
+   |        |Cut a 50 cm long wire of any color (here yellow). Strip and | 
+   |        |tin each end of the wire. Install the wire "A" on the screw |
+   |        |terminal of MUX board « A ».                                |                                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_9.jpg                         |
+   |      8 +------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of 50 cm length. Strip, tin | 
+   |        |and position the wires on the left screw terminal as shown  |
+   |        |in the picture: i)Red wire 12 V, ii) Black wire GND         |                                                                                       
+   +--------+------------------------------------------------------------+
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_10.jpg                        |
+   |      9 +------------------------------------------------------------+
+   |        |Mount the 4 ribbon cables (16-wires each) with IDC          | 
+   |        |connectors. A small noise is often heard when the IDC       |
+   |        |connector is clipped in place.                              |                                                                                       
+   +--------+------------------------------------------------------------+
+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_11.jpg                        |
+   |      10+------------------------------------------------------------+
+   |        |Mount the ribbon cables with 6-wires with the corresponding | 
+   |        |IDC connectors                                              |
+   |        |                                                            |                                                                                       
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_12.jpg                        |
+   |      11+------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of 10 cm length. Strip and  | 
+   |        |tin the wires at the ends. Mount the red wire on the 12V    |
+   |        |input and the black wire on the GND input on the right      |
+   |        |screw terminal.                                                   |
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_13.jpg                        |
+   |      12+------------------------------------------------------------+
+   |        |Mount and fix the second MUX board "B" on the first with    | 
+   |        |the help of 9 spacers.                                      |
+   |        |                                                            |
+   |        |                                                            |                            
+   +--------+------------------------------------------------------------+   
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_14.jpg                        |
+   |      13+------------------------------------------------------------+
+   |        |Cut, strip and tin a red wire and a black wire of 10 cm     | 
+   |        |length. Mount the wires on the left screw terminal.         |
+   |        |Red wire 12V input, black wire GND input.                   |
+   |        |Connect the red and black wires from board A to the right   |                            
+   |        |screw terminal of board B. Red wire 12V input. Black wire   |   
+   |        |GND input.                                                  |
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_15.jpg                        |
+   |      14+------------------------------------------------------------+
+   |        |Crimp a 16 wires IDC connector on the ribbon cable at about | 
+   |        |15 cm from the previous connector. Please, pay attention to |
+   |        |the direction of the cable before the crimp procedure.      |
+   |        |Mount the ribbon cable on the IDC connector on the board.   |                            
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_16.jpg                        |
+   |      15+------------------------------------------------------------+
+   |        |Repeat the operation for the other 3 ribbon cables.         |                  
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_17.jpg                        |
+   |      16+------------------------------------------------------------+
+   |        |Repeat the operation for the 6 wires ribbon cable.          |                  
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_18.jpg                        |
+   |      17+------------------------------------------------------------+
+   |        |Cut a 50 cm long wire "here purple" (Color not relevant but | 
+   |        |to be defined). Strip and tin the wire at its ends.         |
+   |        |Position the wire on the input B of the screw terminal of   |
+   |        |the multiplexing board B.                                   |
+   +--------+------------------------------------------------------------+ 
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_19.jpg                        |
+   |      18+------------------------------------------------------------+
+   |        |Repeat all these operations for the third MUX board         | 
+   |        |called "M".                                                 |           
+   +--------+------------------------------------------------------------+    
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_20.jpg                        |
+   |      19+------------------------------------------------------------+
+   |        |Repeat the operations for the fourth MUX Boards. Attention, | 
+   |        |it is necessary to position 5 different spacers (here nylon |
+   |        |screw hex spacers) in between the “M” board and the “N” MUX |
+   |        |Board (as shown on the photograph). Refer to the following  |                            
+   |        |photographs for more details on the assembly of the spacers |
+   +--------+------------------------------------------------------------+
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_21.jpg                        |
+   |      20+------------------------------------------------------------+
+   |        |When mounting the 4th MUX board ("N"), screws can be placed |
+   |        |on the nylon spacers to fix the boards together. Note that  |
+   |        |the other spacers could be used for this purpose.           |
+   |        |Connect ribbon cables (16 wires) from board 3 to board 4 as |
+   |        |previously described. Connect the red wire (12V) of MUX     |                                                 
+   |        |board "M" to the 12V terminal of the right screw terminal   |   
+   |        |of MUX Board "N". Connect the black wire (GND) of MUX board |
+   |        |“M” to the GND screw terminal on MUX board “N”.             |  
+   +--------+------------------------------------------------------------+   
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_22.jpg                        |
+   |      21+------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of one meter length. Place  | 
+   |        |the red wire on terminal “12V” and the black wire on        |
+   |        |terminal “GND” of the left screw terminal. Tie the wires    |
+   |        |together.                                                   |                            
+   +--------+------------------------------------------------------------+   
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_23.jpg                        |
+   |      22+------------------------------------------------------------+
+   |        |Tie the A, B, M and N wires together                        |                            
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_24.jpg                        |
+   |      23+------------------------------------------------------------+
+   |        |Cut a PVC plate with the following minimum dimensions :     |  
+   |        |200 mm * 150 mm * 5 mm                                      |                       
+   +--------+------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_25.jpg                        |
+   |      24+------------------------------------------------------------+
+   |        |Drill the plate to mount it on the remaining metal spacers. |  
+   |        |Do not tighten the assembly.                                |                       
+   +--------+------------------------------------------------------------+    
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_26.jpg                        |
+   |      25+------------------------------------------------------------+
+   |        |Position the Raspberry Pi (RPI) board on the plate so that  |  
+   |        |you can access the USB ports. Mark the holes of the RPI     |
+   |        |board on the plate for mounting.                            |
+   +--------+------------------------------------------------------------+
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_27.jpg                        |
+   |      26+------------------------------------------------------------+
+   |        |Add spacers on the PVC plate.                               |     
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_28.jpg                        |
+   |      27+------------------------------------------------------------+
+   |        |Attach the PVC plate to the metal spacers with washers      |     
+   |        |and nuts.                                                   |                                
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_29.jpg                        |
+   |      28+------------------------------------------------------------+
+   |        |Position and fix the RPI card on the spacers                |     
+   +--------+------------------------------------------------------------+     
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_30.jpg                        |
+   |      29+------------------------------------------------------------+
+   |        |Add spacers on the RPI board. The red (12V) and black (GND) |     
+   |        |wires coming out of the "M" MUX board must pass under       |    
+   |        |the RPI board.                                              |        
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_31.jpg                        |
+   |      30+------------------------------------------------------------+
+   |        |Place the measurement board on the RPI GPIO outputs and on  |
+   |        |the pre-positioned spacers. Note that LEDs are present on   |
+   |        |this measurement board with an associated resistance simply |
+   |        |for testing purposes (do not consider this temporary        |
+   |        |modification of the board). Same for the orange wire        |
+   |        |present on the board.                                               |
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_32.jpg                        |
+   |      31+------------------------------------------------------------+
+   |        |Connect the wires " A " (here yellow), " B " (here purple), |
+   |        |" M " (here brown) and " N " (here blue) on the             |
+   |        |corresponding terminal blocks on the measurement board.     |
+   |        |Connect the 6 wires ribbon cable on the measurement board   |
+   |        |by passing under the PVC plate.Connect the red and black    |                                                 
+   |        |wires to the 12 V and GND terminal block.                   |   
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_33.jpg                        |
+   |      32+------------------------------------------------------------+
+   |        |Top view of the assembly. Add clips to secure the wires     |     
+   |        |together.                                                   |
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_34.jpg                        |
+   |      33+------------------------------------------------------------+
+   |        |Second view.                                                |     
+   +--------+------------------------------------------------------------+    
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_35.jpg                        |
+   |      34+------------------------------------------------------------+
+   |        |Zoom in on the connection of the M and N wires.             |     
+   +--------+------------------------------------------------------------+ 
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_36.jpg                        |
+   |      35+------------------------------------------------------------+
+   |        |Zoom in on the connection of the A and B wires.             |     
+   +--------+------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_37.jpg                        |
+   |      36+------------------------------------------------------------+
+   |        |Zoom in on the connection of the « 12V » and « GND » wires. |     
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_38.jpg                        |
+   |      37+------------------------------------------------------------+
+   |        |Fixing the measurement board on the spacers present on the  |
+   |        |RPI board.                                                  |
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_39.jpg                        |
+   |      38+------------------------------------------------------------+
+   |        |Place the SD card containing the OS and the pre-installed   |
+   |        |programs. Connect a mouse and a keyboard to the USB inputs  |
+   |        |of the RPI board. Connect a monitor to the HDMI output of   |
+   |        |the RPI board.                                              |                                                  
+   +--------+------------------------------------------------------------+   
+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_40.jpg                        |
+   |      39+------------------------------------------------------------+
+   |        |Connect the red and black cables of board A to a 12V        |
+   |        |battery or other laboratory power supply delivering a 12VDC |
+   |        |voltage.                                                    |
+   |        |Enjoy 😊                                                    |
+   +--------+------------------------------------------------------------+  
+
+   
+   
\ No newline at end of file
diff --git a/doc/build/html/_sources/source_rst/V2024.x.x/V2024.rst.txt b/doc/build/html/_sources/source_rst/V2024.x.x/V2024.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b7c7486058b2f5aa91443199dcae18cabbc1b4c
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/V2024.x.x/V2024.rst.txt
@@ -0,0 +1,326 @@
+********************************************
+OhmPi V2023 (64 electrodes and 12V)
+******************************************** 
+
+.. warning::
+  **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. figure:: image_ohmpi_2.jpg
+     :width: 400px
+     :align: center
+     :height: 350px
+     :alt: OhmPi V: 2023.0.0-rc1
+     :figclass: align-center
+
+.. note:: 
+   In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+   This new version is made up of:
+
+   1. A measurement board for four-point measurement
+
+   2. 4 multiplexer cards
+
+   3. A box
+
+  The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.
+
+The philosophy of OhmPi
+========================
+
+The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one. 
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.
+
+=============================================================================================================================================================
+
+Hardware
+========
+
+Specifications
+--------------
+
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+| **Parameter**                 |       **V1.0x**       | Units     |       **v2023**       | Units     |
++===============================+=======================+===========+=======================+===========+
+|Electrodes                     |32                     |           |64 to 128              |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Operating temperature          |-0 to 50               |°c         |-25 to 50              |°C         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Power consumption of CPU and   |18.5                   |W          |18.5                   |W          |
+|control system                 |                       |           |                       |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Voltage injection              |12                     |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Battery                        |9                      |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Current                        |0 to 40                |mA         |0 to 40                |mA         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Min pulse duration             |150                    |ms         |150                    |ms         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Input impedance                |80                     |MOhm       |80                     |MOhm       |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Data storage                   |micro SD card          |           |micro SD card          |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Resolution                     |0.01                   |Ohm        |0.01                   |Ohm        |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+
+Building an OhmPi V2023 step by step
+------------------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   Ohmpi_V2023/V2023_step_01
+   Ohmpi_V2023/V2023_step_02
+   Ohmpi_V2023/V2023_step_03
+   Ohmpi_V2023/V2023_step_04
+
+
+Software and operation
+======================
+
+System architecture
+-------------------
+
+The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.
+
+.. figure:: img/architecture.png
+
+     Software architecture of OhmPi V2023.
+
+The general system configuration is defined in the `config.py` file covered in the `Configuration file`_ section.
+The acquisition settings (i.e. injection duration, stacks...) are defined in a separate JSON file (default: ohmpi_settings.json).  
+
+The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the `Loggers`_ section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see `Interfaces and applications`_).
+
+Loggers
+-------
+
+Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see `MQTT interface`_ for more details) and one for creating zipped rotated logs on disk).
+
+Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.
+
+By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the `Configuration file`_.
+
+Advanced users may write new handlers and edit the `setup_loggers.py` file to customize the logging mechanisms to their needs.
+
+Configuration file
+------------------
+
+The configuration of the OhmPi file `config.py` allows to configure the OhmPi.
+A default version of `config.py` is provided in the repository.
+This file should be edited to customize the configuration following the user's needs and preferences.  
+
+The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options...)  
+
+One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.
+
+
+
+Interfaces and applications
+---------------------------
+
+Different interfaces can be used to interact with the OhmPi.
+
+Available interfaces are:
+- `Web interface`_ (=HTTP interface): run in bash: `bash run_http_interface.sh`
+- Python API: import the OhmPi class from Python script: `from ohmpi import OhmPi` (see `Python interface`_)
+- MQTT: IoT messaging through a broker (see `MQTT interface`_)
+
+
+Web interface
+.............
+
+This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.
+
+The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the 'index.html' interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.
+
+To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
+
+Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
+to access the interface.
+
+.. figure:: img/http-interface-pseudo-section.png
+
+    Web interface with its interactive pseudo-section.
+
+
+.. figure:: img/http-interface-evolution.png
+
+     Evolution of quadrupole apparent resistivity with time.
+
+
+.. figure:: img/http-interface-rs.png
+
+     Contact resistance check.
+
+
+
+Python interface
+................
+
+This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.
+
+By importing the `OhmPi` class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
+
+To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).
+
+
+.. code-block:: python
+  :caption: Example of using the Python API to control OhmPi
+
+  import os
+  import numpy as np
+  import time
+  os.chdir("/home/pi/OhmPi")
+  from ohmpi import OhmPi
+
+  ### Define object from class OhmPi
+  k = OhmPi()  # this loads default parameters from the disk
+
+  ### Default parameters can also be edited manually
+  k.settings['injection_duration'] = 0.5  # injection time in seconds
+  k.settings['nb_stack'] = 1  # one stack is two half-cycles
+  k.settings['nbr_meas'] = 1  # number of time the sequence is repeated
+
+  ### Update settings if needed
+  k.update_settings({"injection_duration":0.2})
+
+  ### Set or load sequence
+  k.sequence = np.array([[1,2,3,4]])    # set numpy array of shape (n,4)
+  # k.set_sequence('1 2 3 4\n2 3 4 5')    # call function set_sequence and pass a string
+  # k.load_sequence('ABMN.txt')    # load sequence from a local file
+
+  ### Run contact resistance check
+  k.rs_check()
+
+  ### Run sequence (synchronously - it will wait that all
+  # sequence is measured before returning the prompt
+  k.run_sequence()
+  # k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately
+  # time.sleep(2)
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Run multiple sequences at given time interval
+  k.settings['nb_meas'] = 3  # run sequence three times
+  k.settings['sequence_delay'] = 100 # every 100 s
+  k.run_multiple_sequences()  # asynchron
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Single measurement can also be taken with
+  k.switch_mux_on([1, 4, 2, 3])
+  k.run_measurement()  # use default acquisition parameters
+  k.switch_mux_off([1, 4, 2, 3])  # don't forget this! risk of short-circuit
+
+  ### Custom or adaptative argument, see help(k.run_measurement)
+  k.run_measurement(nb_stack=4,  # do 4 stacks (8 half-cycles)
+                    injection_duration=2,  # inject for 2 seconds
+                    autogain=True)  # adapt gain of ADS to get good resolution
+
+
+
+MQTT interface
+..............
+
+This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.  
+
+This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.  
+
+An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.  
+
+MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as `MQTT Explorer <http://mqtt-explorer.com/>`_.
+
+Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:
+
+.. code-block:: json
+  :caption: Updating acquisition settings.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+    "kwargs": {
+      "config": {
+        "nb_meas": 2,
+        "nb_electrodes": 10,
+        "nb_stack": 2,
+        "injection_duration": 2,
+        "sequence_delay": 100
+      }
+    }
+  }
+
+
+.. code-block:: json
+  :caption: Check contact resistances
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "rs_check",
+  }
+
+.. code-block:: json
+  :caption: Running a sequence.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_sequence",
+  }
+
+.. code-block:: json
+  :caption: Running same sequence multiple times (nb_meas).
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_multiple_sequences",
+  }
+
+.. code-block:: json
+  :caption: Interrupt current acquisition.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "interrupt",
+  }
+
+Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as `Node-red <http://mqtt-explorer.com/>`_.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component. 
+
+Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :
+
+.. code-block:: console
+     node-red basic_ohmpi_flows_node-red.json
+
+These examples may require installing some additional node packages in order to work properly. This can be done in the `Palette Manager <https://nodered.org/docs/user-guide/editor/palette/manager> within Node-RED.
+
+.. figure:: img/node-red_flow.png
+
+     Example flow in node-red to interact with an OhmPi.
+
+
+.. figure:: img/node-red_interface_control.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.
+     
+.. figure:: img/node-red_interface_data.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.
+
+
+For more documentation dedicated to node-red, please refer to the Node-red `cookbooks <https://cookbook.nodered.org/>`_.
diff --git a/doc/build/html/_sources/source_rst/api.rst.txt b/doc/build/html/_sources/source_rst/api.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..c5c9a92aca74518508821f8a32c77fe20aa3f902
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/api.rst.txt
@@ -0,0 +1,9 @@
+API reference
+=============
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+.. automodule:: ohmpi
+   :members:
+
+
diff --git a/doc/build/html/_sources/source_rst/v1.xx/V1_01.rst.txt b/doc/build/html/_sources/source_rst/v1.xx/V1_01.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..474ea7091e8488a305cecd947b1db10e4ec4c63c
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/v1.xx/V1_01.rst.txt
@@ -0,0 +1,531 @@
+*****************************************
+OhmPi V 1.01 (limited to 32 electrodes)
+***************************************** 
+
+.. warning::
+    This version corresponds to the version published in the Hardware X journal.
+    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.
+    
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.**
+
+    
+
+
+The philosophy of Ohmpi 
+**************************
+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
+
+
+Technical data
+***************
++-------------------------------+--------------------+-----------+
+| **Parameter**                 | **Specifications** | Units     |
++-------------------------------+--------------------+-----------+
+|Electrodes                     |32                  |           |
++-------------------------------+--------------------+-----------+
+|Operating temperature          |0 to 50             |°C         |
++-------------------------------+--------------------+-----------+
+|Power consumption of CPU and   |18.5                |W          |             
+|control system                 |                    |           |
++-------------------------------+--------------------+-----------+
+|Voltage injection              |9                   |V          |
++-------------------------------+--------------------+-----------+
+|Battery                        |12                  |V          |
++-------------------------------+--------------------+-----------+
+|Current                        |0 to 50             |mA         |
++-------------------------------+--------------------+-----------+
+|Min pulse duration             |150                 |ms         |
++-------------------------------+--------------------+-----------+
+|Input impedance                |36                  |MOhm       |
++-------------------------------+--------------------+-----------+
+|Data storage                   |micro SD card       |           |
++-------------------------------+--------------------+-----------+
+|Resolution                     |O.O1                |Ohm        |
++-------------------------------+--------------------+-----------+
+
+Raspberry Pi  configuration
+****************************************** 
+OS installation  
+================
+
+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 
+
+1. Watch the video "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk)
+
+2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). 
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+     
+     .. figure:: raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+
+3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. 
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     cd /boot/
+
+4. Open config.txt with GNU nano editor
+
+ .. code-block:: python
+
+     sudo nano config.txt
+
+5. At the end of the file write : 
+
+ .. code-block:: python
+     
+     gpio=8=op,dl
+     gpio=7=op,dl
+
+6. Press Ctrl +O to save the modifications and press enter
+7. Press Ctrl +x to escape and return to the terminal
+8. Close the terminal
+
+
+
+Virtual Environment and packages
+================================
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+    
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+     
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+     
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+     
+     pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas
+
+Check that requirements are met using 
+
+.. code-block:: python
+     
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+      
+     deactivate
+
+
+Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi) 
+======================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+       
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+8- Close the window by clicking on **ok**.
+
+9- Close thonny to save modifications
+
+ 
+Assembly of the measuring/current injection cards, and connection with the Raspberry Pi
+***************************************************************************************** 
+
+Electrical resistivity measurements board
+==========================================
+
+a) Description
+-----------------------------
+
+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 
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. 
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test 
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. 
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute 
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which 
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, 
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been 
+set at 50 ohms in order to ensure:
+•	a precise resistance,
+•	a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) 
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. 
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the 
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included 
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge 
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, 
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking 
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials 
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve 
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the 
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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.
+
+.. figure:: schema_measurement_board.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board
+   
+b) Implementation
+--------------------------------
+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 :
+
+* Step no. 1: test divider bridge
+     For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..
+
+    .. math::
+        coef po = (R1 + R2) / R1
+        
+    .. math::	
+        coef p1 = (R3 + R4) / R3
+        
+    .. math::	
+        coef p2 = (R7 + R6) / R7
+        
+    .. math::
+        coef p3 = (R9 + R8) / R9
+        
+    .. code-block:: python
+        :linenos:
+        :lineno-start: 36
+
+         """
+         hardware parameters
+         """
+         R_ref = 50 # reference resistance value in ohm
+         coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V
+         coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V
+         coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V
+         coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V
+
+    The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.	
+
+
+* Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1%. 
+* Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%. 
+* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks 
+* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code
+* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction).
+
+1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a weaker 
+or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. 
+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.
+
+.. figure:: measurement_board.jpg
+   :width: 800px
+   :align: center
+   :height: 500px
+   :alt: alternate text
+   :figclass: align-center
+
+   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
+   
+.. figure:: measurement_board-2.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board installation with Raspberry Pi
+   
+Current injection board
+=======================
+
+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 
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This 
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts 
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open 
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected 
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse 
+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.
+
+.. figure:: current_board.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wiring of the 4-channel relay module board for current injection management
+
+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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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.   
+
+.. figure:: installation_current_board.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Current injection board installation with Raspberry Pi
+   
+   
+Congratulations, you have build a 4 electrodes resistivity-meter.
+
+
+First four electrodes resistivity measurement
+=============================================
+
+
+Under construction !
+
+Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit
+
+   
+Multiplexer implementation
+**************************
+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 
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of 
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.
+
+
+We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay 
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested 
+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.
+
+.. figure:: multiplexer_implementation.jpg
+   :width: 800px
+   :align: center
+   :height: 500px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Schematic diagram of the wiring of two 16-channel relay shields
+
+   
+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. 
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.
+
+Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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.
+ 
+ .. figure:: connection.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Connection to the 16-channel relay shield
+ 
+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.
+*	Follow the diagram and solder the pins as shown in Fig.
+*	Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.
+
+For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.
+
+
++-------------------------------+-------------------------------------------+---------------------+
+|                               |Relay shield n°1                           |Relay Shield n°2     |                      
+|                               +----------+----------+----------+----------+---------------------+
+|                               |Pin 1     |Pin 2-3   |Pin 4-7   |Pin 8-16  |Pin 1- 16            |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer A                 |12        |16        |20        |21        |26                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer B                 |18        |23        |24        |25        |19                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer M                 |06        |13        |04        |17        |27                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer N                 |22        |10        |09        |11        |05                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+    
+    Connection of the GPIOs to each multiplexer
+
+
+Electrode connection
+*************************
+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.
+
+.. figure:: cable.jpg
+   :width: 800px
+   :align: center
+   :height: 300px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wire cabling for multiplexer and terminal screw connection
+
+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.
+
+.. figure:: electrode_cable.jpg
+   :width: 800px
+   :align: center
+   :height: 800px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Example of a multiplexer connection to the screw terminal for electrode no. 1.
+ 
+.. warning::
+    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.
+
+Operating instruction
+*************************
+
+Preliminary procedure (Only for the initial operation)
+======================================================
+The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) 
+or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. 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.
+ 
+ 
+Startup procedure
+==================
+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 
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”, 
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py” 
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be 
+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.
+
+Electrical resistivity measurement parameters description
+==========================================================
+
+.. code-block:: python
+    :linenos:
+    :lineno-start: 27
+
+     """
+     measurement parameters
+     """
+     nb_electrodes = 32 # maximum number of electrodes on the resistivity meter
+     injection_duration = 0.5 # Current injection duration in second
+     nbr_meas= 1 # Number of times the quadrupole sequence is repeated
+     sequence_delay= 30 # Delay in seconds between 2 sequences
+     stack= 1 # repetition of the current injection for each quadrupole
+
+The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code.
+
+Complete list of components
+*******************************
+.. warning::
+   The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date  
+
+
+.. csv-table:: Table Title
+   :file: list.csv
+   :widths: 30, 70, 70, 70, 70,70
+   :header-rows: 1
+
+
diff --git a/doc/source/new 1.txt b/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt
similarity index 58%
rename from doc/source/new 1.txt
rename to doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt
index a7f8b4af89fc5c1e0f9f696e745a33be14356281..6dad02c86ccf2e61b98712c1b419467572497792 100644
--- a/doc/source/new 1.txt	
+++ b/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt
@@ -1,11 +1,236 @@
- In this part of the board, resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been 
-set at 2 ohms in order to ensure:
+***************************************
+OhmPi V 1.02 (limited to 32 electrodes)
+***************************************
+
+
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. note::
+
+     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.
+
+
+
+
+The philosophy of Ohmpi 
+***********************
+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
+
+
+Technical data
+***************
++-------------------------------+--------------------+-----------+
+| **Parameter**                 | **Specifications** | Units     |
++-------------------------------+--------------------+-----------+
+|Electrodes                     |32                  |           |
++-------------------------------+--------------------+-----------+
+|Operating temperature          |0 to 50             |°C         |
++-------------------------------+--------------------+-----------+
+|Power consumption of CPU and   |18.5                |W          |             
+|control system                 |                    |           |
++-------------------------------+--------------------+-----------+
+|Voltage injection              |9                   |V          |
++-------------------------------+--------------------+-----------+
+|Battery                        |12                  |V          |
++-------------------------------+--------------------+-----------+
+|Current                        |0 to 50             |mA         |
++-------------------------------+--------------------+-----------+
+|Min pulse duration             |150                 |ms         |
++-------------------------------+--------------------+-----------+
+|Input impedance                |36                  |MOhm       |
++-------------------------------+--------------------+-----------+
+|Data storage                   |micro SD card       |           |
++-------------------------------+--------------------+-----------+
+|Resolution                     |O.O1                |Ohm        |
++-------------------------------+--------------------+-----------+
+
+Raspberry Pi  configuration
+****************************************** 
+OS installation  
+================
+
+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 
+
+1. Watch the video "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk)
+
+2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). 
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+
+     .. figure:: raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+
+3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. 
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     cd /boot/
+
+4. Open config.txt with GNU nano editor
+
+ .. code-block:: python
+
+     sudo nano config.txt
+
+5. At the end of the file write : 
+
+ .. code-block:: python
+
+     gpio=8=op,dl
+     gpio=7=op,dl
+
+6. Press Ctrl +O to save the modifications and press enter
+7. Press Ctrl +x to escape and return to the terminal
+8. Close the terminal
+
+
+
+Virtual Environment and packages
+================================
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+
+     pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas
+
+Check that requirements are met using 
+
+.. code-block:: python
+
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+
+     deactivate
+
+
+Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)
+======================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+8- Close the window by clicking on **ok**.
+
+9- Close thonny to save modifications
+
+ 
+Assembly of the measuring/current injection cards, and connection with the Raspberry Pi
+***************************************************************************************** 
+
+Electrical resistivity measurements board
+==========================================
+
+a) Description
+-----------------------------
+
+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 
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. 
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test 
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. 
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute 
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which 
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, 
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been 
+set at 50 ohms in order to ensure:
 •	a precise resistance,
 •	a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
 To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) 
-is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: 
-
-
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
 To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. 
 In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the 
 reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included 
@@ -23,12 +248,12 @@ A shortcut between Electrodes A and B will generate excessive currents, whose in
 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.
 In version 1.02, we have improved the electronic board of measurement. we have added a DC/DC converter to supply the operational amplifiers 
-(2 Traco power DC/DCconverter TRN3-1215). These converters allow to limit the suppression of the signal when the injected voltage is higher than 10V.
+(2 Traco power DC/DC converter TRN3-1215). These converters allow to limit the suppression of the signal when the injected voltage is higher than 10V.
 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.
 
-.. figure:: schema_measurement_board.jpg
+.. figure:: schema_measurement_board1_02.png
    :width: 800px
    :align: center
    :height: 400px
@@ -38,7 +263,7 @@ the signal input on the operational amplifiers. This prevents the operational am
    Measurement board (Ohmpi version 1.02)
    
 .. note::
-	 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.
+     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.
    
    
    
@@ -50,44 +275,44 @@ it by following the steps described below and illustrated in the following figur
 * Step no. 1: test divider bridge
      For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..
 
-	.. math::
-		coeff po = (R1 + R2) / R1
-		
-	.. math::	
-		coeff p1 = (R3 + R4) / R3
-		
-	.. math::	
-		coeff p2 = (R7 + R6) / R7
-		
-	.. math::
-		coeff p3 = (R9 + R8) / R9
-		
-	.. code-block:: python
-		:linenos:
-		:lineno-start: 36
-
-		 """
-		 hardware parameters
-		 """
-		 R_ref = 50 # reference resistance value in ohm
-		 coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V
-		 coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V
-		 coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V
-		 coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V
-
-	The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.	
-
-
-* Step no. 2: installation of the 1-Kohm resistors with an accuracy of ± 1% (b-in the figure). 
-* Step no. 3: installation of the 1.5-Kohm resistors with an accuracy of ± 1%(C-in the figure). 
+    .. math::
+        coef po = (R1 + R2) / R1
+
+    .. math::
+        coef p1 = (R3 + R4) / R3
+
+    .. math::
+        coef p2 = (R7 + R6) / R7
+
+    .. math::
+        coef p3 = (R9 + R8) / R9
+
+    .. code-block:: python
+        :linenos:
+        :lineno-start: 36
+
+         """
+         hardware parameters
+         """
+         R_ref = 50 # reference resistance value in ohm
+         coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V
+         coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V
+         coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V
+         coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V
+
+    The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.
+
+
+* Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1% (b-in the figure).
+* Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%(C-in the figure).
 * Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (c-in the figure)
 * Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code (d-in the figure)
 * Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the orientation) (e-in the figure).
-* Step no. 7: installation of the 10-Mohm resistors with an accuracy of ± 5% (f-in the figure). 
+* Step no. 7: installation of the 10-MOhm resistors with an accuracy of ± 5% (f-in the figure).
 * Step no. 8: installation of the two DC/DC converter TRN3-1215 (h-in the figure).
-* Setp no. 9: installation of the four capacitor on 100-nF/50vDC and the fuse of 10-A (h-in the figure).
+* Step no. 9: installation of the four capacitor on 100-nF/50vDC and the fuse of 10-A (h-in the figure).
  
-1-Kohm and 1.5-Kohm resistors apply to the divider bridge. If, for example, you prefer using a stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. 
+1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
 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.
@@ -99,7 +324,7 @@ place a fuse holder with a 1.5-A fuse for safety purposes.
    :alt: alternate text
    :figclass: align-center
 
-   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
+   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
    
 .. figure:: measurement_board-2-V1-02.jpg
    :width: 800px
@@ -110,11 +335,6 @@ place a fuse holder with a 1.5-A fuse for safety purposes.
    
    Measurement board installation with Raspberry Pi
    
-
-
-
-
-
 Current injection board
 =======================
 
@@ -160,18 +380,18 @@ to terminals B and A of the measurement board.
 Congratulations, you have build a 4 electrodes resistivity-meter.
 
 
-Frist four electrodes resistivity mesurement 
-============================================
+First four electrodes resistivity measurement
+=============================================
 
 
 Under construction !
 
-Describe the way to valide the first part of the instruction.
+Describe the way to validate the first part of the instruction.
 Electrical resistivity measurement on test circuit
 
    
-Multiplexer implentation
-*************************
+Multiplexer implementation
+**************************
 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 
 of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of 
@@ -236,7 +456,7 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a
 | Multiplexer N                 |22        |10        |09        |11        |05                   |
 +-------------------------------+----------+----------+----------+----------+---------------------+
     
-	Connection of the GPIOs to each multiplexer
+    Connection of the GPIOs to each multiplexer
 
 
 Electrode connection
@@ -268,8 +488,8 @@ This operation must be repeated for all 32 electrodes.
    Example of a multiplexer connection to the screw terminal for electrode no. 1.
  
 .. warning::
-	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.
+    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.
 
 Operating instruction
 *************************
@@ -299,16 +519,16 @@ Electrical resistivity measurement parameters description
 In the version 1.02, the measurement parameters are in the Jason file (ohmpi_param.json).
 
 .. code-block:: python
-	:linenos:
-	:lineno-start: 1
+    :linenos:
+    :lineno-start: 1
 
-	
-	 nb_electrodes = 32 # maximum number of electrodes on the resistivity meter
-	 injection_duration = 0.5 # Current injection duration in second
-	 nbr_meas= 1 # Number of times the quadripole sequence is repeated
-	 sequence_delay= 30 # Delay in seconds between 2 sequences
-	 stack= 1 # repetition of the current injection for each quadripole
-	 export_path= "home/pi/Desktop/measurement.csv" 
+
+     nb_electrodes = 32 # maximum number of electrodes on the resistivity meter
+     injection_duration = 0.5 # Current injection duration in second
+     nbr_meas= 1 # Number of times the quadrupole sequence is repeated
+     sequence_delay= 30 # Delay in seconds between 2 sequences
+     stack= 1 # repetition of the current injection for each quadrupole
+     export_path= "home/pi/Desktop/measurement.csv"
 
 
 
@@ -319,6 +539,8 @@ 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: list - 1_02.csv
    :widths: 30, 70, 70, 70, 70,70
-   :header-rows: 1
\ No newline at end of file
+   :header-rows: 1
+
+
diff --git a/doc/build/html/_sources/source_rst/v1.xx/V2023.rst.txt b/doc/build/html/_sources/source_rst/v1.xx/V2023.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..3b7c7486058b2f5aa91443199dcae18cabbc1b4c
--- /dev/null
+++ b/doc/build/html/_sources/source_rst/v1.xx/V2023.rst.txt
@@ -0,0 +1,326 @@
+********************************************
+OhmPi V2023 (64 electrodes and 12V)
+******************************************** 
+
+.. warning::
+  **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. figure:: image_ohmpi_2.jpg
+     :width: 400px
+     :align: center
+     :height: 350px
+     :alt: OhmPi V: 2023.0.0-rc1
+     :figclass: align-center
+
+.. note:: 
+   In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+   This new version is made up of:
+
+   1. A measurement board for four-point measurement
+
+   2. 4 multiplexer cards
+
+   3. A box
+
+  The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.
+
+The philosophy of OhmPi
+========================
+
+The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one. 
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.
+
+=============================================================================================================================================================
+
+Hardware
+========
+
+Specifications
+--------------
+
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+| **Parameter**                 |       **V1.0x**       | Units     |       **v2023**       | Units     |
++===============================+=======================+===========+=======================+===========+
+|Electrodes                     |32                     |           |64 to 128              |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Operating temperature          |-0 to 50               |°c         |-25 to 50              |°C         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Power consumption of CPU and   |18.5                   |W          |18.5                   |W          |
+|control system                 |                       |           |                       |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Voltage injection              |12                     |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Battery                        |9                      |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Current                        |0 to 40                |mA         |0 to 40                |mA         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Min pulse duration             |150                    |ms         |150                    |ms         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Input impedance                |80                     |MOhm       |80                     |MOhm       |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Data storage                   |micro SD card          |           |micro SD card          |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Resolution                     |0.01                   |Ohm        |0.01                   |Ohm        |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+
+Building an OhmPi V2023 step by step
+------------------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   Ohmpi_V2023/V2023_step_01
+   Ohmpi_V2023/V2023_step_02
+   Ohmpi_V2023/V2023_step_03
+   Ohmpi_V2023/V2023_step_04
+
+
+Software and operation
+======================
+
+System architecture
+-------------------
+
+The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.
+
+.. figure:: img/architecture.png
+
+     Software architecture of OhmPi V2023.
+
+The general system configuration is defined in the `config.py` file covered in the `Configuration file`_ section.
+The acquisition settings (i.e. injection duration, stacks...) are defined in a separate JSON file (default: ohmpi_settings.json).  
+
+The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the `Loggers`_ section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see `Interfaces and applications`_).
+
+Loggers
+-------
+
+Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see `MQTT interface`_ for more details) and one for creating zipped rotated logs on disk).
+
+Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.
+
+By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the `Configuration file`_.
+
+Advanced users may write new handlers and edit the `setup_loggers.py` file to customize the logging mechanisms to their needs.
+
+Configuration file
+------------------
+
+The configuration of the OhmPi file `config.py` allows to configure the OhmPi.
+A default version of `config.py` is provided in the repository.
+This file should be edited to customize the configuration following the user's needs and preferences.  
+
+The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options...)  
+
+One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.
+
+
+
+Interfaces and applications
+---------------------------
+
+Different interfaces can be used to interact with the OhmPi.
+
+Available interfaces are:
+- `Web interface`_ (=HTTP interface): run in bash: `bash run_http_interface.sh`
+- Python API: import the OhmPi class from Python script: `from ohmpi import OhmPi` (see `Python interface`_)
+- MQTT: IoT messaging through a broker (see `MQTT interface`_)
+
+
+Web interface
+.............
+
+This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.
+
+The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the 'index.html' interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.
+
+To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
+
+Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
+to access the interface.
+
+.. figure:: img/http-interface-pseudo-section.png
+
+    Web interface with its interactive pseudo-section.
+
+
+.. figure:: img/http-interface-evolution.png
+
+     Evolution of quadrupole apparent resistivity with time.
+
+
+.. figure:: img/http-interface-rs.png
+
+     Contact resistance check.
+
+
+
+Python interface
+................
+
+This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.
+
+By importing the `OhmPi` class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
+
+To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).
+
+
+.. code-block:: python
+  :caption: Example of using the Python API to control OhmPi
+
+  import os
+  import numpy as np
+  import time
+  os.chdir("/home/pi/OhmPi")
+  from ohmpi import OhmPi
+
+  ### Define object from class OhmPi
+  k = OhmPi()  # this loads default parameters from the disk
+
+  ### Default parameters can also be edited manually
+  k.settings['injection_duration'] = 0.5  # injection time in seconds
+  k.settings['nb_stack'] = 1  # one stack is two half-cycles
+  k.settings['nbr_meas'] = 1  # number of time the sequence is repeated
+
+  ### Update settings if needed
+  k.update_settings({"injection_duration":0.2})
+
+  ### Set or load sequence
+  k.sequence = np.array([[1,2,3,4]])    # set numpy array of shape (n,4)
+  # k.set_sequence('1 2 3 4\n2 3 4 5')    # call function set_sequence and pass a string
+  # k.load_sequence('ABMN.txt')    # load sequence from a local file
+
+  ### Run contact resistance check
+  k.rs_check()
+
+  ### Run sequence (synchronously - it will wait that all
+  # sequence is measured before returning the prompt
+  k.run_sequence()
+  # k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately
+  # time.sleep(2)
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Run multiple sequences at given time interval
+  k.settings['nb_meas'] = 3  # run sequence three times
+  k.settings['sequence_delay'] = 100 # every 100 s
+  k.run_multiple_sequences()  # asynchron
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Single measurement can also be taken with
+  k.switch_mux_on([1, 4, 2, 3])
+  k.run_measurement()  # use default acquisition parameters
+  k.switch_mux_off([1, 4, 2, 3])  # don't forget this! risk of short-circuit
+
+  ### Custom or adaptative argument, see help(k.run_measurement)
+  k.run_measurement(nb_stack=4,  # do 4 stacks (8 half-cycles)
+                    injection_duration=2,  # inject for 2 seconds
+                    autogain=True)  # adapt gain of ADS to get good resolution
+
+
+
+MQTT interface
+..............
+
+This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.  
+
+This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.  
+
+An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.  
+
+MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as `MQTT Explorer <http://mqtt-explorer.com/>`_.
+
+Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:
+
+.. code-block:: json
+  :caption: Updating acquisition settings.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+    "kwargs": {
+      "config": {
+        "nb_meas": 2,
+        "nb_electrodes": 10,
+        "nb_stack": 2,
+        "injection_duration": 2,
+        "sequence_delay": 100
+      }
+    }
+  }
+
+
+.. code-block:: json
+  :caption: Check contact resistances
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "rs_check",
+  }
+
+.. code-block:: json
+  :caption: Running a sequence.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_sequence",
+  }
+
+.. code-block:: json
+  :caption: Running same sequence multiple times (nb_meas).
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_multiple_sequences",
+  }
+
+.. code-block:: json
+  :caption: Interrupt current acquisition.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "interrupt",
+  }
+
+Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as `Node-red <http://mqtt-explorer.com/>`_.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component. 
+
+Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :
+
+.. code-block:: console
+     node-red basic_ohmpi_flows_node-red.json
+
+These examples may require installing some additional node packages in order to work properly. This can be done in the `Palette Manager <https://nodered.org/docs/user-guide/editor/palette/manager> within Node-RED.
+
+.. figure:: img/node-red_flow.png
+
+     Example flow in node-red to interact with an OhmPi.
+
+
+.. figure:: img/node-red_interface_control.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.
+     
+.. figure:: img/node-red_interface_data.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.
+
+
+For more documentation dedicated to node-red, please refer to the Node-red `cookbooks <https://cookbook.nodered.org/>`_.
diff --git a/doc/build/html/developing_hardware_components.html b/doc/build/html/developing_hardware_components.html
index 37d41fdc700b600a452856cad1ee099d34ddf808..e28d5865e7ff16ca12eb7a98eedf6fa307785c9c 100644
--- a/doc/build/html/developing_hardware_components.html
+++ b/doc/build/html/developing_hardware_components.html
@@ -41,11 +41,10 @@
 </div>
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
               <ul>
-<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>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a></li>
 </ul>
 
         </div>
diff --git a/doc/build/html/doc/Ohmpi.html b/doc/build/html/doc/Ohmpi.html
new file mode 100644
index 0000000000000000000000000000000000000000..06b9dcee518821011fe72ac15fd1e536ddb9e23b
--- /dev/null
+++ b/doc/build/html/doc/Ohmpi.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+        <script src="../_static/jquery.js"></script>
+        <script src="../_static/underscore.js"></script>
+        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../_static/doctools.js"></script>
+    <script src="../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">OhmPi project</a><ul>
+<li><a class="reference internal" href="#authors"><strong>Authors:</strong></a></li>
+<li><a class="reference internal" href="#partners"><strong>Partners:</strong></a></li>
+<li><a class="reference internal" href="#citing-ohmpi"><strong>Citing OhmPi:</strong></a></li>
+<li><a class="reference internal" href="#introduction"><strong>Introduction :</strong></a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi project</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../_sources/doc/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">
+<h1>OhmPi project<a class="headerlink" href="#ohmpi-project" title="Permalink to this heading"></a></h1>
+<blockquote>
+<div><a class="reference internal image-reference" href="doc/img/logo/ohmpi/logo_ohmpi.JPG"><img alt="Logo OhmPi" class="align-center" src="doc/img/logo/ohmpi/logo_ohmpi.JPG" style="width: 250px; height: 180px;" /></a>
+</div></blockquote>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+<section id="authors">
+<h2><strong>Authors:</strong><a class="headerlink" href="#authors" title="Permalink to this heading"></a></h2>
+<div class="line-block">
+<div class="line">Rémi CLEMENT, Vivien DUBOIS, Nicolas Forquet, INRAE, REVERSAAL, Villeurbanne, France</div>
+<div class="line">Olivier KAUFMANN, Arnaud WATLET, Université de Mons, Mons, Belgium</div>
+<div class="line">Yannick FARGIER, GERS-RRO, Univ Gustave Eiffel, IFSTTAR, Lyon, France</div>
+<div class="line">Hélène GUYARD, IGE Grenoble, Université Grenoble Alpes, Grenoble, France</div>
+<div class="line">Guillaume BLANCHY, ILVO, Merelbeke, Belgium</div>
+</div>
+</section>
+<section id="partners">
+<h2><strong>Partners:</strong><a class="headerlink" href="#partners" title="Permalink to this heading"></a></h2>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td><img alt="doc/img/Logo/parteners/logo_inrae.jpg" src="doc/img/Logo/parteners/logo_inrae.jpg" />
+</td>
+<td><img alt="doc/img/Logo/parteners/logo_univ_gustave.png" src="doc/img/Logo/parteners/logo_univ_gustave.png" />
+</td>
+<td><img alt="doc/img/Logo/parteners/logo_ilvo.png" src="doc/img/Logo/parteners/logo_ilvo.png" />
+</td>
+</tr>
+<tr class="row-even"><td><img alt="doc/img/Logo/parteners/logo_univ_mons.png" src="doc/img/Logo/parteners/logo_univ_mons.png" />
+</td>
+<td><img alt="doc/img/Logo/parteners/ige.png" src="doc/img/Logo/parteners/ige.png" />
+</td>
+<td></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="citing-ohmpi">
+<h2><strong>Citing OhmPi:</strong><a class="headerlink" href="#citing-ohmpi" title="Permalink to this heading"></a></h2>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+<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>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+</section>
+<section id="introduction">
+<h2><strong>Introduction :</strong><a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules.
+OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be
+held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi.
+The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and
+modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is
+distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
+FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.</p>
+</div>
+<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 64 electrodes.OhmPi’s philosophy is to provide a fully open source and open hardware toolto the near surface scientific community.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Anyone who wants to get involved is welcome to join the OhmPi project!</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2023.x.x/V2023.html b/doc/build/html/doc/V2023.x.x/V2023.html
new file mode 100644
index 0000000000000000000000000000000000000000..0c9aaa44b03bb3a9474ffd395b24edefc5aa8d05
--- /dev/null
+++ b/doc/build/html/doc/V2023.x.x/V2023.html
@@ -0,0 +1,458 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>OhmPi V2023 (64 electrodes and 12V) &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li><a class="reference internal" href="#hardware">Hardware</a><ul>
+<li><a class="reference internal" href="#specifications">Specifications</a></li>
+<li><a class="reference internal" href="#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#software-and-operation">Software and operation</a><ul>
+<li><a class="reference internal" href="#system-architecture">System architecture</a></li>
+<li><a class="reference internal" href="#loggers">Loggers</a></li>
+<li><a class="reference internal" href="#configuration-file">Configuration file</a></li>
+<li><a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a><ul>
+<li><a class="reference internal" href="#web-interface">Web interface</a></li>
+<li><a class="reference internal" href="#python-interface">Python interface</a></li>
+<li><a class="reference internal" href="#mqtt-interface">MQTT interface</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V2023 (64 electrodes and 12V)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2023.x.x/V2023.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-v2023-64-electrodes-and-12v">
+<h1>OhmPi V2023 (64 electrodes and 12V)<a class="headerlink" href="#ohmpi-v2023-64-electrodes-and-12v" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/image_ohmpi_2.jpg"><img alt="OhmPi V: 2023.0.0-rc1" src="doc/V2023.x.x/image_ohmpi_2.jpg" style="width: 400px; height: 350px;" /></a>
+</figure>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<blockquote>
+<div><p>In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+This new version is made up of:</p>
+<ol class="arabic simple">
+<li><p>A measurement board for four-point measurement</p></li>
+<li><p>4 multiplexer cards</p></li>
+<li><p>A box</p></li>
+</ol>
+</div></blockquote>
+<p>The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.</p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of OhmPi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></a></h2>
+<p>The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one.
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.</p>
+</section>
+<hr class="docutils" />
+<section id="hardware">
+<h2>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading"></a></h2>
+<section id="specifications">
+<h3>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading"></a></h3>
+<table class="docutils align-default">
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th>
+<th class="head"><p><strong>V1.0x</strong></p></th>
+<th class="head"><p>Units</p></th>
+<th class="head"><p><strong>v2023</strong></p></th>
+<th class="head"><p>Units</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+<td><p>64 to 128</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>-0 to 50</p></td>
+<td><p>°c</p></td>
+<td><p>-25 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="building-an-ohmpi-v2023-step-by-step">
+<h3>Building an OhmPi V2023 step by step<a class="headerlink" href="#building-an-ohmpi-v2023-step-by-step" title="Permalink to this heading"></a></h3>
+<div class="toctree-wrapper compound">
+</div>
+</section>
+</section>
+<section id="software-and-operation">
+<h2>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading"></a></h2>
+<section id="system-architecture">
+<h3>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading"></a></h3>
+<p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p>
+<figure class="align-default" id="id4">
+<img alt="doc/V2023.x.x/img/architecture.png" src="doc/V2023.x.x/img/architecture.png" />
+<figcaption>
+<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section.
+The acquisition settings (i.e. injection duration, stacks…) are defined in a separate JSON file (default: ohmpi_settings.json).</p>
+<p>The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the <a class="reference internal" href="#loggers">Loggers</a> section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p>
+</section>
+<section id="loggers">
+<h3>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading"></a></h3>
+<p>Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p>
+<p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p>
+<p>By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the <a class="reference internal" href="#configuration-file">Configuration file</a>.</p>
+<p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p>
+</section>
+<section id="configuration-file">
+<h3>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading"></a></h3>
+<p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi.
+A default version of <cite>config.py</cite> is provided in the repository.
+This file should be edited to customize the configuration following the user’s needs and preferences.</p>
+<p>The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options…)</p>
+<p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p>
+</section>
+<section id="interfaces-and-applications">
+<h3>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading"></a></h3>
+<p>Different interfaces can be used to interact with the OhmPi.</p>
+<p>Available interfaces are:
+- <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite>
+- Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>)
+- MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p>
+<section id="web-interface">
+<h4>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading"></a></h4>
+<p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p>
+<p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the ‘index.html’ interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.</p>
+<p>To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on <a class="reference external" href="https://raspap.com/">raspap.com</a> and in ‘runOnStart.sh’.</p>
+<p>Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to <a class="reference external" href="http://10.3.141.1:8080">10.3.141.1:8080</a>
+to access the interface.</p>
+<figure class="align-default" id="id5">
+<img alt="doc/V2023.x.x/img/http-interface-pseudo-section.png" src="doc/V2023.x.x/img/http-interface-pseudo-section.png" />
+<figcaption>
+<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id6">
+<img alt="doc/V2023.x.x/img/http-interface-evolution.png" src="doc/V2023.x.x/img/http-interface-evolution.png" />
+<figcaption>
+<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id7">
+<img alt="doc/V2023.x.x/img/http-interface-rs.png" src="doc/V2023.x.x/img/http-interface-rs.png" />
+<figcaption>
+<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+</section>
+<section id="python-interface">
+<h4>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading"></a></h4>
+<p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p>
+<p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).</p>
+<p>To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).</p>
+<div class="literal-block-wrapper docutils container" id="id8">
+<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Permalink to this code"></a></div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;/home/pi/OhmPi&quot;</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">ohmpi</span> <span class="kn">import</span> <span class="n">OhmPi</span>
+
+<span class="c1">### Define object from class OhmPi</span>
+<span class="n">k</span> <span class="o">=</span> <span class="n">OhmPi</span><span class="p">()</span>  <span class="c1"># this loads default parameters from the disk</span>
+
+<span class="c1">### Default parameters can also be edited manually</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;injection_duration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>  <span class="c1"># injection time in seconds</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_stack&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># one stack is two half-cycles</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nbr_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># number of time the sequence is repeated</span>
+
+<span class="c1">### Update settings if needed</span>
+<span class="n">k</span><span class="o">.</span><span class="n">update_settings</span><span class="p">({</span><span class="s2">&quot;injection_duration&quot;</span><span class="p">:</span><span class="mf">0.2</span><span class="p">})</span>
+
+<span class="c1">### Set or load sequence</span>
+<span class="n">k</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]])</span>    <span class="c1"># set numpy array of shape (n,4)</span>
+<span class="c1"># k.set_sequence(&#39;1 2 3 4\n2 3 4 5&#39;)    # call function set_sequence and pass a string</span>
+<span class="c1"># k.load_sequence(&#39;ABMN.txt&#39;)    # load sequence from a local file</span>
+
+<span class="c1">### Run contact resistance check</span>
+<span class="n">k</span><span class="o">.</span><span class="n">rs_check</span><span class="p">()</span>
+
+<span class="c1">### Run sequence (synchronously - it will wait that all</span>
+<span class="c1"># sequence is measured before returning the prompt</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_sequence</span><span class="p">()</span>
+<span class="c1"># k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately</span>
+<span class="c1"># time.sleep(2)</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Run multiple sequences at given time interval</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span>  <span class="c1"># run sequence three times</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;sequence_delay&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># every 100 s</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_multiple_sequences</span><span class="p">()</span>  <span class="c1"># asynchron</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Single measurement can also be taken with</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_on</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">()</span>  <span class="c1"># use default acquisition parameters</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_off</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>  <span class="c1"># don&#39;t forget this! risk of short-circuit</span>
+
+<span class="c1">### Custom or adaptative argument, see help(k.run_measurement)</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">(</span><span class="n">nb_stack</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>  <span class="c1"># do 4 stacks (8 half-cycles)</span>
+                  <span class="n">injection_duration</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>  <span class="c1"># inject for 2 seconds</span>
+                  <span class="n">autogain</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>  <span class="c1"># adapt gain of ADS to get good resolution</span>
+</pre></div>
+</div>
+</div>
+</section>
+<section id="mqtt-interface">
+<h4>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading"></a></h4>
+<p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p>
+<p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p>
+<p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p>
+<p>MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as <a class="reference external" href="http://mqtt-explorer.com/">MQTT Explorer</a>.</p>
+<p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p>
+<div class="literal-block-wrapper docutils container" id="id9">
+<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{
+  &quot;cmd_id&quot;: &quot;3fzxv121UITwGjWYgcz4xw&quot;,
+  &quot;cmd&quot;: &quot;update_settings&quot;, Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+  &quot;kwargs&quot;: {
+    &quot;config&quot;: {
+      &quot;nb_meas&quot;: 2,
+      &quot;nb_electrodes&quot;: 10,
+      &quot;nb_stack&quot;: 2,
+      &quot;injection_duration&quot;: 2,
+      &quot;sequence_delay&quot;: 100
+    }
+  }
+}
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id10">
+<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rs_check&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id11">
+<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_sequence&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id12">
+<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_multiple_sequences&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id13">
+<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;interrupt&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<p>Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as <a class="reference external" href="http://mqtt-explorer.com/">Node-red</a>.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component.</p>
+<p>Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :</p>
+<p>These examples may require installing some additional node packages in order to work properly. This can be done in the <a href="#id2"><span class="problematic" id="id3">`</span></a>Palette Manager &lt;<a class="reference external" href="https://nodered.org/docs/user-guide/editor/palette/manager">https://nodered.org/docs/user-guide/editor/palette/manager</a>&gt; within Node-RED.</p>
+<figure class="align-default" id="id14">
+<img alt="doc/V2023.x.x/img/node-red_flow.png" src="doc/V2023.x.x/img/node-red_flow.png" />
+<figcaption>
+<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id15">
+<img alt="doc/V2023.x.x/img/node-red_interface_control.png" src="doc/V2023.x.x/img/node-red_interface_control.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id16">
+<img alt="doc/V2023.x.x/img/node-red_interface_data.png" src="doc/V2023.x.x/img/node-red_interface_data.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p>
+</section>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2023.x.x/V2023_step_01.html b/doc/build/html/doc/V2023.x.x/V2023_step_01.html
new file mode 100644
index 0000000000000000000000000000000000000000..78cce71480fc0c6612dfba0d1ad352dd052d8b5e
--- /dev/null
+++ b/doc/build/html/doc/V2023.x.x/V2023_step_01.html
@@ -0,0 +1,218 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°1 : Raspberry Pi configuration &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a><ul>
+<li><a class="reference internal" href="#part-a-os-installation"><strong>PART A:</strong> OS installation</a></li>
+<li><a class="reference internal" href="#part-b-virtual-environment-and-packages"><strong>PART B:</strong> Virtual Environment and packages</a></li>
+<li><a class="reference internal" href="#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°1</strong> : Raspberry Pi  configuration</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2023.x.x/V2023_step_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="step-n1-raspberry-pi-configuration">
+<h1><strong>STEP n°1</strong> : Raspberry Pi  configuration<a class="headerlink" href="#step-n1-raspberry-pi-configuration" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="part-a-os-installation">
+<h2><strong>PART A:</strong> OS installation<a class="headerlink" href="#part-a-os-installation" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Required components</strong></p></td>
+<td><p><strong>Quantity</strong></p></td>
+</tr>
+<tr class="row-even"><td><p>Raspberry Pi 4 Model B</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-odd"><td><p>Micro SD 32 Go</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-even"><td><p>HDMI Cable</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-odd"><td><p>Computer mouse</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-even"><td><p>Computer Keyboard</p></td>
+<td><p>1</p></td>
+</tr>
+</tbody>
+</table>
+<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>
+<ol class="arabic simple">
+<li><p>Watch the video <a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">how to set up your raspberry Pi</a>.</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspberry Pi OS (Previously called Raspbian) by using Raspberry Pi Imager.</p></li>
+<li><p>or you can visit this <cite>website &lt;https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up&gt;</cite>.</p></li>
+</ol>
+<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">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_1/raspbian_version.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_1/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
+</figure>
+</div>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated and <strong>I2C option</strong> must be activated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+</section>
+<section id="part-b-virtual-environment-and-packages">
+<h2><strong>PART B:</strong> Virtual Environment and packages<a class="headerlink" href="#part-b-virtual-environment-and-packages" title="Permalink to this heading"></a></h2>
+<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>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">export</span> <span class="n">CFLAGS</span><span class="o">=-</span><span class="n">fcommon</span>
+<span class="n">sudo</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">pandas</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">tca9548a</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">mcp230xx</span> <span class="n">gpiozero</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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="part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">
+<h2><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></a></h2>
+<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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_1/thonny_first_interface.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_1/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_1/thonny_option.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_1/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_1/thonny_interpreter.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_1/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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 environment should appear</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_1/thonny_interpreter_folder.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_1/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>8- Close the window by clicking on <strong>ok</strong>.</p>
+<p>9- Close Thonny to save modifications</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2023.x.x/V2023_step_02.html b/doc/build/html/doc/V2023.x.x/V2023_step_02.html
new file mode 100644
index 0000000000000000000000000000000000000000..3f6870fc2654ddd4078fb2696730ea911f3c48ba
--- /dev/null
+++ b/doc/build/html/doc/V2023.x.x/V2023_step_02.html
@@ -0,0 +1,569 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°2: Measurement board &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#"><strong>STEP n°2</strong>: Measurement board</a><ul>
+<li><a class="reference internal" href="#part-a-assembly-of-the-measurement-board"><strong>PART A</strong> Assembly of the measurement board</a><ul>
+<li><a class="reference internal" href="#required-components">Required components</a></li>
+<li><a class="reference internal" href="#description">Description</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#part-b-start-up-of-the-measurement-board"><strong>PART B</strong> Start-up of the measurement board</a></li>
+<li><a class="reference internal" href="#part-c-check-the-measurement-board"><strong>PART C</strong> Check the measurement board</a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°2</strong>: Measurement board</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2023.x.x/V2023_step_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="step-n2-measurement-board">
+<h1><strong>STEP n°2</strong>: Measurement board<a class="headerlink" href="#step-n2-measurement-board" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="part-a-assembly-of-the-measurement-board">
+<h2><strong>PART A</strong> Assembly of the measurement board<a class="headerlink" href="#part-a-assembly-of-the-measurement-board" title="Permalink to this heading"></a></h2>
+<section id="required-components">
+<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_2/a/00_mes_board_components.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_2/a/00_mes_board_components.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+</section>
+<section id="description">
+<h3>Description<a class="headerlink" href="#description" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_2/a/schema_measurement_board.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_2/a/schema_measurement_board.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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
+is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. The advantage of ADS1115 is that the
+input signal value could lie between - to + 6.114 V. For the current measurement we have directly integrated the INA282 component,
+which allows to realize precise current measurement around a shunt resistor. The assembly are described in the following steps:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/01_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/01_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of female header, 1 by 10  pins, for ADS1115</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/02_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/02_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 4 dual-in-line socket (2 by 2 pins) for
+optical relay, AQY211EH.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/03_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/03_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 1 dual-in-line socket (2 by 9 pins)
+for MCP23008.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/04_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/04_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 1 dual-in-line socket (2 by 4 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/05_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/05_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 2 dual-in-line socket (2 by 4 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/06_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/06_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Traco Power Supply 12V to 5V, TDH15 - 1211N</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/07_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/07_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Four screw terminals for 12V inpout et 5V output</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/08_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/08_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Traco power Supply 12V to 24V, TRN-1215</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/09_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/09_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Two screw terminals electrodes M and N</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/10_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/10_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Four screw terminals, for 12V power supply and for
+electrodes A and B</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>11</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/11_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/11_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering three capacitors (100nF)</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>In this version, we used a shunt resistor of 2 ohms, which limits the current measurement to 48 mA. If the current is higher than this value, you just have to decrease the value of the shunt resistor. Don’t forget to change the shunt value in the config.py file (value associated to key ‘R_shunt’ in the OHMPI_CONFIG dict).</p>
+</div>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>12</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/12_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/12_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>2 ohms shunt resistor pre-adjustment</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>13</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/13_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/13_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering 2 ohms shunt resistor</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>14</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/14_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/14_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>1 MOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>15</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/15_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/15_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering tow 1 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>16</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/16_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/16_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering two 1.5 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>17</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/17_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/17_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering two 1.5 kOhms resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>18</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/18_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/18_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Female header 2 by 20 pins for Raspberry Pi connection</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>19</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/19_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/19_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>View of the female  header 2 by 20 pins installation
+for Raspberry Pi connection</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>20</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/20_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/20_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Fixing MCP23008 component (Dot mark on the top left corner)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>21</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/21_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/21_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting optical relay, AQY211EH (Dot mark in the top left
+corners)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>22</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/22_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/22_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting LM158 operational amplifier</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>23</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/23_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/23_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting ADS115 board</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>24</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/a/24_mes_board.jpg" src="doc/V2023.x.x/step_n_2/a/24_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Fixing the INA282 (Dot mark in the top right corner)</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+</section>
+<section id="part-b-start-up-of-the-measurement-board">
+<h2><strong>PART B</strong> Start-up of the measurement board<a class="headerlink" href="#part-b-start-up-of-the-measurement-board" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Required components</strong></p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/001.jpg" src="doc/V2023.x.x/step_n_2/b/001.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Shutdown the raspberry Pi and unplug the power supply</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/001.jpg" src="doc/V2023.x.x/step_n_2/b/001.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the bottom spacers on the Raspberry Pi (male/female, 11mm, M3)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/002.jpg" src="doc/V2023.x.x/step_n_2/b/002.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the upper spacers on the Raspberry Pi (female/female, 11mm, M3)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/003.jpg" src="doc/V2023.x.x/step_n_2/b/003.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the OhmPi’s measurement board on the Raspberry Pi</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/004.jpg" src="doc/V2023.x.x/step_n_2/b/004.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the OhmPi’s measurement board on the Raspberry Pi</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/b/005.jpg" src="doc/V2023.x.x/step_n_2/b/005.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Plug the power supply into a socket and connect it to your
+Raspberry Pi’s power port.</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="part-c-check-the-measurement-board">
+<h2><strong>PART C</strong> Check the measurement board<a class="headerlink" href="#part-c-check-the-measurement-board" title="Permalink to this heading"></a></h2>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">i2cdetect</span> <span class="o">-</span><span class="n">y</span> <span class="mi">1</span>
+</pre></div>
+</div>
+</div></blockquote>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/i2cdetect.png" src="doc/V2023.x.x/step_n_2/c/i2cdetect.png" />
+</td>
+</tr>
+<tr class="row-even"><td><p>If everything is working, three I2C addresses should appear
+on the screen.</p></td>
+</tr>
+</tbody>
+</table>
+<dl>
+<dt>Setting up an equivalent electronic circuit, for this you will need:</dt><dd><ul class="simple">
+<li><p>4 1kOhm resistor (R2)</p></li>
+<li><p>1 220 Ohm resistor (R1)</p></li>
+<li><p>1 small padboard</p></li>
+<li><p>Spool of solder</p></li>
+</ul>
+<table class="docutils align-left">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/ref_circuit.png" src="doc/V2023.x.x/step_n_2/c/ref_circuit.png" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Schematic of equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+</dd>
+</dl>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/20210905_122820.jpg" src="doc/V2023.x.x/step_n_2/c/20210905_122820.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/20210905_123034.jpg" src="doc/V2023.x.x/step_n_2/c/20210905_123034.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the battery connections and the terminals.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/20210905_132856.jpg" src="doc/V2023.x.x/step_n_2/c/20210905_132856.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering cables and terminals</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg" src="doc/V2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Install the red cables on the +12V terminal and black cable
+on the ground terminal. Connect to two different 12V
+batteries</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg" src="doc/V2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/thonny_first_interface.jpg" src="doc/V2023.x.x/step_n_2/c/thonny_first_interface.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Run the Thonny Interpreter</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_2/c/20211206_144334.jpg" src="doc/V2023.x.x/step_n_2/c/20211206_144334.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Run sample_measurement_example.py example, if everything
+works you should  get the following result (220 Ohm)</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2023.x.x/V2023_step_03.html b/doc/build/html/doc/V2023.x.x/V2023_step_03.html
new file mode 100644
index 0000000000000000000000000000000000000000..13ff22350fb8d94d727b3279eb41268fd74ce8a6
--- /dev/null
+++ b/doc/build/html/doc/V2023.x.x/V2023_step_03.html
@@ -0,0 +1,378 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°3: MUX board &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#"><strong>STEP n°3:</strong> MUX board</a><ul>
+<li><a class="reference internal" href="#part-a-assembly-of-mux-board"><strong>PART A</strong> Assembly of MUX board</a><ul>
+<li><a class="reference internal" href="#required-components">Required components</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#part-b-mux-board-address"><strong>PART B</strong> MUX board address</a></li>
+<li><a class="reference internal" href="#part-c-validation-of-mux-board"><strong>PART C</strong> Validation of MUX board</a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°3:</strong> MUX board</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2023.x.x/V2023_step_03.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">
+             
+  <div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="step-n3-mux-board">
+<h1><strong>STEP n°3:</strong> MUX board<a class="headerlink" href="#step-n3-mux-board" title="Permalink to this heading"></a></h1>
+<p>The multiplexing of the channels is a mechanical multiplexing based on OMRON’s manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with
+a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs.
+We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit.
+This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each card has its own digital address between 0X70 and 0X77.
+In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N.
+0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.</p>
+<section id="part-a-assembly-of-mux-board">
+<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Permalink to this heading"></a></h2>
+<section id="required-components">
+<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2023.x.x/step_n_3/a/MUX_board_components.jpg"><img alt="alternate text" src="doc/V2023.x.x/step_n_3/a/MUX_board_components.jpg" style="width: 600px; height: 650px;" /></a>
+</figure>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_00.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_00.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mux board pcb</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_01.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_01.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the 100 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_02.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_02.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the MOSFET ZVN4206A</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_03.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_03.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the diode 1N4007</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_04.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_04.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the relay</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_05.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_05.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the terminal screw</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_06.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_06.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of generic male header</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_07.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_07.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of Pin strip (6 pins)  and pin strip (16 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_08.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_08.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of DIP Dual In Line Socket 2*14</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_09.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_09.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of Adafruit TCA9548A</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/a/MUX_10.jpg" src="doc/V2023.x.x/step_n_3/a/MUX_10.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of MCP23017</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>This step must be duplicated 4 times for every Mux card.</p>
+</div>
+</section>
+</section>
+<section id="part-b-mux-board-address">
+<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Permalink to this heading"></a></h2>
+<p>To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code.
+We present here the addresses selected by default.</p>
+<p>For the A electrode board, we suggest addressing it with address 0x70:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/b/A_0x70.jpg" src="doc/V2023.x.x/step_n_3/b/A_0x70.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (A).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="doc/V2023.x.x/step_n_3/b/A_0x70-a.jpg" src="doc/V2023.x.x/step_n_3/b/A_0x70-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the B electrode board, we suggest addressing it with address 0x71:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/b/B_0x71.jpg" src="doc/V2023.x.x/step_n_3/b/B_0x71.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="doc/V2023.x.x/step_n_3/b/B_0x71-a.jpg" src="doc/V2023.x.x/step_n_3/b/B_0x71-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the N electrode board, we suggest addressing it with address 0x72:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/b/M_0x72.jpg" src="doc/V2023.x.x/step_n_3/b/M_0x72.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="doc/V2023.x.x/step_n_3/b/M_0x72-a.jpg" src="doc/V2023.x.x/step_n_3/b/M_0x72-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the M electrode board, we suggest addressing it with address 0x73:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/b/N_0x73.jpg" src="doc/V2023.x.x/step_n_3/b/N_0x73.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="doc/V2023.x.x/step_n_3/b/N_0x73-a.jpg" src="doc/V2023.x.x/step_n_3/b/N_0x73-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="part-c-validation-of-mux-board">
+<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Permalink to this heading"></a></h2>
+<p>The first step is to test the Mux boards before assembling them definitively.
+To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.</p>
+<p>The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.</p>
+<blockquote>
+<div><table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/c/20211207_115706.jpg" src="doc/V2023.x.x/step_n_3/c/20211207_115706.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Build a cable with 6 contacts with 6 pins connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/c/20220124_142929.jpg" src="doc/V2023.x.x/step_n_3/c/20220124_142929.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the measurement board and the first mux board by
+example the card with address 0x71.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/c/20220124_143105.jpg" src="doc/V2023.x.x/step_n_3/c/20220124_143105.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the 12V power supply cables to the MUX board
+without powering the board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_3/c/20220124_143823.jpg" src="doc/V2023.x.x/step_n_3/c/20220124_143823.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the 6-contact cable</p></td>
+</tr>
+</tbody>
+</table>
+</div></blockquote>
+<p>Start your 12V power supply, the raspberry must start.</p>
+<p>Run the terminal and write:</p>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">i2cdetect</span> <span class="o">-</span><span class="n">y</span> <span class="mi">1</span>
+</pre></div>
+</div>
+</div></blockquote>
+<p>Three addresses should appear, including the address of the MUX board you have selected. This implies that your board has been detected.</p>
+<p>Open the script called “test_mux_board.py”.</p>
+<p>Run the script</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2023.x.x/V2023_step_04.html b/doc/build/html/doc/V2023.x.x/V2023_step_04.html
new file mode 100644
index 0000000000000000000000000000000000000000..2e127814be1d72218a33a3dc81afc52769218ebc
--- /dev/null
+++ b/doc/build/html/doc/V2023.x.x/V2023_step_04.html
@@ -0,0 +1,542 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°4: assemble the OhmPi &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°4:</strong> assemble the OhmPi</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2023.x.x/V2023_step_04.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">
+             
+  <div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="step-n4-assemble-the-ohmpi">
+<h1><strong>STEP n°4:</strong> assemble the OhmPi<a class="headerlink" href="#step-n4-assemble-the-ohmpi" title="Permalink to this heading"></a></h1>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_1.jpg" src="doc/V2023.x.x/step_n_4/step_4_1.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut 4 ribbon cables composed of 16 wires each to the proper
+length (about 1.5m). Each wire corresponds to an electrode.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_2.jpg" src="doc/V2023.x.x/step_n_4/step_4_2.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Crimp the ribbon cable on the corresponding idc connector
+with a suitable clamp. Pay attention to the direction of
+the cables. Unbalanced IDC connector. The ribbon cable must
+be perpendicular to the connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_3.jpg" src="doc/V2023.x.x/step_n_4/step_4_3.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Example of IDC connector mounting. The wires should run as
+perpendicular as possible to the IDC connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_4.jpg" src="doc/V2023.x.x/step_n_4/step_4_4.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Same for a 6 wires ribbon cable of 1 m length.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_5.jpg" src="doc/V2023.x.x/step_n_4/step_4_5.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut the ribbon cable flush with the IDC connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>6</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_6.jpg" src="doc/V2023.x.x/step_n_4/step_4_6.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position 9 spacers above the MUX board, and 9 spacers below</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="doc/V2023.x.x/step_n_4/step_4_7.jpg" src="doc/V2023.x.x/step_n_4/step_4_7.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Profile view for mounting the spacers above and below.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_8.jpg" src="doc/V2023.x.x/step_n_4/step_4_8.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a 50 cm long wire of any color (here yellow). Strip and
+tin each end of the wire. Install the wire “A” on the screw
+terminal of MUX board « A ».</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_9.jpg" src="doc/V2023.x.x/step_n_4/step_4_9.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a red wire and a black wire of 50 cm length. Strip, tin
+and position the wires on the left screw terminal as shown
+in the picture: i)Red wire 12 V, ii) Black wire GND</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_10.jpg" src="doc/V2023.x.x/step_n_4/step_4_10.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the 4 ribbon cables (16-wires each) with IDC
+connectors. A small noise is often heard when the IDC
+connector is clipped in place.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_11.jpg" src="doc/V2023.x.x/step_n_4/step_4_11.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the ribbon cables with 6-wires with the corresponding
+IDC connectors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>12</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_13.jpg" src="doc/V2023.x.x/step_n_4/step_4_13.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount and fix the second MUX board “B” on the first with
+the help of 9 spacers.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>13</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_14.jpg" src="doc/V2023.x.x/step_n_4/step_4_14.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut, strip and tin a red wire and a black wire of 10 cm
+length. Mount the wires on the left screw terminal.
+Red wire 12V input, black wire GND input.
+Connect the red and black wires from board A to the right
+screw terminal of board B. Red wire 12V input. Black wire
+GND input.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>14</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_15.jpg" src="doc/V2023.x.x/step_n_4/step_4_15.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Crimp a 16 wires IDC connector on the ribbon cable at about
+15 cm from the previous connector. Please, pay attention to
+the direction of the cable before the crimp procedure.
+Mount the ribbon cable on the IDC connector on the board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>15</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_16.jpg" src="doc/V2023.x.x/step_n_4/step_4_16.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operation for the other 3 ribbon cables.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>16</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_17.jpg" src="doc/V2023.x.x/step_n_4/step_4_17.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operation for the 6 wires ribbon cable.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>17</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_18.jpg" src="doc/V2023.x.x/step_n_4/step_4_18.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a 50 cm long wire “here purple” (Color not relevant but
+to be defined). Strip and tin the wire at its ends.
+Position the wire on the input B of the screw terminal of
+the multiplexing board B.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>18</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_19.jpg" src="doc/V2023.x.x/step_n_4/step_4_19.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat all these operations for the third MUX board
+called “M”.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>19</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_20.jpg" src="doc/V2023.x.x/step_n_4/step_4_20.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operations for the fourth MUX Boards. Attention,
+it is necessary to position 5 different spacers (here nylon
+screw hex spacers) in between the “M” board and the “N” MUX
+Board (as shown on the photograph). Refer to the following
+photographs for more details on the assembly of the spacers</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>20</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_21.jpg" src="doc/V2023.x.x/step_n_4/step_4_21.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>When mounting the 4th MUX board (“N”), screws can be placed
+on the nylon spacers to fix the boards together. Note that
+the other spacers could be used for this purpose.
+Connect ribbon cables (16 wires) from board 3 to board 4 as
+previously described. Connect the red wire (12V) of MUX
+board “M” to the 12V terminal of the right screw terminal
+of MUX Board “N”. Connect the black wire (GND) of MUX board
+“M” to the GND screw terminal on MUX board “N”.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>21</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_22.jpg" src="doc/V2023.x.x/step_n_4/step_4_22.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a red wire and a black wire of one meter length. Place
+the red wire on terminal “12V” and the black wire on
+terminal “GND” of the left screw terminal. Tie the wires
+together.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>22</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_23.jpg" src="doc/V2023.x.x/step_n_4/step_4_23.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Tie the A, B, M and N wires together</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>23</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_24.jpg" src="doc/V2023.x.x/step_n_4/step_4_24.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a PVC plate with the following minimum dimensions :
+200 mm * 150 mm * 5 mm</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>24</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_25.jpg" src="doc/V2023.x.x/step_n_4/step_4_25.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Drill the plate to mount it on the remaining metal spacers.
+Do not tighten the assembly.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>25</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_26.jpg" src="doc/V2023.x.x/step_n_4/step_4_26.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position the Raspberry Pi (RPI) board on the plate so that
+you can access the USB ports. Mark the holes of the RPI
+board on the plate for mounting.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>26</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_27.jpg" src="doc/V2023.x.x/step_n_4/step_4_27.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Add spacers on the PVC plate.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>27</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_28.jpg" src="doc/V2023.x.x/step_n_4/step_4_28.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Attach the PVC plate to the metal spacers with washers
+and nuts.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>28</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_29.jpg" src="doc/V2023.x.x/step_n_4/step_4_29.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position and fix the RPI card on the spacers</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>29</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_30.jpg" src="doc/V2023.x.x/step_n_4/step_4_30.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Add spacers on the RPI board. The red (12V) and black (GND)
+wires coming out of the “M” MUX board must pass under
+the RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>31</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_32.jpg" src="doc/V2023.x.x/step_n_4/step_4_32.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the wires ” A ” (here yellow), ” B ” (here purple),
+” M ” (here brown) and ” N ” (here blue) on the
+corresponding terminal blocks on the measurement board.
+Connect the 6 wires ribbon cable on the measurement board
+by passing under the PVC plate.Connect the red and black
+wires to the 12 V and GND terminal block.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>32</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_33.jpg" src="doc/V2023.x.x/step_n_4/step_4_33.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Top view of the assembly. Add clips to secure the wires
+together.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>33</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_34.jpg" src="doc/V2023.x.x/step_n_4/step_4_34.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Second view.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>34</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_35.jpg" src="doc/V2023.x.x/step_n_4/step_4_35.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the M and N wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>35</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_36.jpg" src="doc/V2023.x.x/step_n_4/step_4_36.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the A and B wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>36</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_37.jpg" src="doc/V2023.x.x/step_n_4/step_4_37.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the « 12V » and « GND » wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>37</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_38.jpg" src="doc/V2023.x.x/step_n_4/step_4_38.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Fixing the measurement board on the spacers present on the
+RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>38</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_39.jpg" src="doc/V2023.x.x/step_n_4/step_4_39.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Place the SD card containing the OS and the pre-installed
+programs. Connect a mouse and a keyboard to the USB inputs
+of the RPI board. Connect a monitor to the HDMI output of
+the RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>39</p></td>
+<td><img alt="doc/V2023.x.x/step_n_4/step_4_40.jpg" src="doc/V2023.x.x/step_n_4/step_4_40.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the red and black cables of board A to a 12V
+battery or other laboratory power supply delivering a 12VDC
+voltage.
+Enjoy 😊</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/V2024.x.x/V2024.html b/doc/build/html/doc/V2024.x.x/V2024.html
new file mode 100644
index 0000000000000000000000000000000000000000..8ef25541f2b906f3101daa02f33c7cd9aa32a8f7
--- /dev/null
+++ b/doc/build/html/doc/V2024.x.x/V2024.html
@@ -0,0 +1,458 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>OhmPi V2023 (64 electrodes and 12V) &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li><a class="reference internal" href="#hardware">Hardware</a><ul>
+<li><a class="reference internal" href="#specifications">Specifications</a></li>
+<li><a class="reference internal" href="#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#software-and-operation">Software and operation</a><ul>
+<li><a class="reference internal" href="#system-architecture">System architecture</a></li>
+<li><a class="reference internal" href="#loggers">Loggers</a></li>
+<li><a class="reference internal" href="#configuration-file">Configuration file</a></li>
+<li><a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a><ul>
+<li><a class="reference internal" href="#web-interface">Web interface</a></li>
+<li><a class="reference internal" href="#python-interface">Python interface</a></li>
+<li><a class="reference internal" href="#mqtt-interface">MQTT interface</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V2023 (64 electrodes and 12V)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/V2024.x.x/V2024.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-v2023-64-electrodes-and-12v">
+<h1>OhmPi V2023 (64 electrodes and 12V)<a class="headerlink" href="#ohmpi-v2023-64-electrodes-and-12v" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/V2024.x.x/image_ohmpi_2.jpg"><img alt="OhmPi V: 2023.0.0-rc1" src="doc/V2024.x.x/image_ohmpi_2.jpg" style="width: 400px; height: 350px;" /></a>
+</figure>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<blockquote>
+<div><p>In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+This new version is made up of:</p>
+<ol class="arabic simple">
+<li><p>A measurement board for four-point measurement</p></li>
+<li><p>4 multiplexer cards</p></li>
+<li><p>A box</p></li>
+</ol>
+</div></blockquote>
+<p>The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.</p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of OhmPi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></a></h2>
+<p>The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one.
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.</p>
+</section>
+<hr class="docutils" />
+<section id="hardware">
+<h2>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading"></a></h2>
+<section id="specifications">
+<h3>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading"></a></h3>
+<table class="docutils align-default">
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th>
+<th class="head"><p><strong>V1.0x</strong></p></th>
+<th class="head"><p>Units</p></th>
+<th class="head"><p><strong>v2023</strong></p></th>
+<th class="head"><p>Units</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+<td><p>64 to 128</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>-0 to 50</p></td>
+<td><p>°c</p></td>
+<td><p>-25 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="building-an-ohmpi-v2023-step-by-step">
+<h3>Building an OhmPi V2023 step by step<a class="headerlink" href="#building-an-ohmpi-v2023-step-by-step" title="Permalink to this heading"></a></h3>
+<div class="toctree-wrapper compound">
+</div>
+</section>
+</section>
+<section id="software-and-operation">
+<h2>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading"></a></h2>
+<section id="system-architecture">
+<h3>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading"></a></h3>
+<p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p>
+<figure class="align-default" id="id4">
+<img alt="doc/V2024.x.x/img/architecture.png" src="doc/V2024.x.x/img/architecture.png" />
+<figcaption>
+<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section.
+The acquisition settings (i.e. injection duration, stacks…) are defined in a separate JSON file (default: ohmpi_settings.json).</p>
+<p>The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the <a class="reference internal" href="#loggers">Loggers</a> section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p>
+</section>
+<section id="loggers">
+<h3>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading"></a></h3>
+<p>Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p>
+<p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p>
+<p>By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the <a class="reference internal" href="#configuration-file">Configuration file</a>.</p>
+<p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p>
+</section>
+<section id="configuration-file">
+<h3>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading"></a></h3>
+<p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi.
+A default version of <cite>config.py</cite> is provided in the repository.
+This file should be edited to customize the configuration following the user’s needs and preferences.</p>
+<p>The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options…)</p>
+<p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p>
+</section>
+<section id="interfaces-and-applications">
+<h3>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading"></a></h3>
+<p>Different interfaces can be used to interact with the OhmPi.</p>
+<p>Available interfaces are:
+- <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite>
+- Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>)
+- MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p>
+<section id="web-interface">
+<h4>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading"></a></h4>
+<p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p>
+<p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the ‘index.html’ interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.</p>
+<p>To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on <a class="reference external" href="https://raspap.com/">raspap.com</a> and in ‘runOnStart.sh’.</p>
+<p>Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to <a class="reference external" href="http://10.3.141.1:8080">10.3.141.1:8080</a>
+to access the interface.</p>
+<figure class="align-default" id="id5">
+<img alt="doc/V2024.x.x/img/http-interface-pseudo-section.png" src="doc/V2024.x.x/img/http-interface-pseudo-section.png" />
+<figcaption>
+<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id6">
+<img alt="doc/V2024.x.x/img/http-interface-evolution.png" src="doc/V2024.x.x/img/http-interface-evolution.png" />
+<figcaption>
+<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id7">
+<img alt="doc/V2024.x.x/img/http-interface-rs.png" src="doc/V2024.x.x/img/http-interface-rs.png" />
+<figcaption>
+<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+</section>
+<section id="python-interface">
+<h4>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading"></a></h4>
+<p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p>
+<p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).</p>
+<p>To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).</p>
+<div class="literal-block-wrapper docutils container" id="id8">
+<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Permalink to this code"></a></div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;/home/pi/OhmPi&quot;</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">ohmpi</span> <span class="kn">import</span> <span class="n">OhmPi</span>
+
+<span class="c1">### Define object from class OhmPi</span>
+<span class="n">k</span> <span class="o">=</span> <span class="n">OhmPi</span><span class="p">()</span>  <span class="c1"># this loads default parameters from the disk</span>
+
+<span class="c1">### Default parameters can also be edited manually</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;injection_duration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>  <span class="c1"># injection time in seconds</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_stack&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># one stack is two half-cycles</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nbr_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># number of time the sequence is repeated</span>
+
+<span class="c1">### Update settings if needed</span>
+<span class="n">k</span><span class="o">.</span><span class="n">update_settings</span><span class="p">({</span><span class="s2">&quot;injection_duration&quot;</span><span class="p">:</span><span class="mf">0.2</span><span class="p">})</span>
+
+<span class="c1">### Set or load sequence</span>
+<span class="n">k</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]])</span>    <span class="c1"># set numpy array of shape (n,4)</span>
+<span class="c1"># k.set_sequence(&#39;1 2 3 4\n2 3 4 5&#39;)    # call function set_sequence and pass a string</span>
+<span class="c1"># k.load_sequence(&#39;ABMN.txt&#39;)    # load sequence from a local file</span>
+
+<span class="c1">### Run contact resistance check</span>
+<span class="n">k</span><span class="o">.</span><span class="n">rs_check</span><span class="p">()</span>
+
+<span class="c1">### Run sequence (synchronously - it will wait that all</span>
+<span class="c1"># sequence is measured before returning the prompt</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_sequence</span><span class="p">()</span>
+<span class="c1"># k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately</span>
+<span class="c1"># time.sleep(2)</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Run multiple sequences at given time interval</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span>  <span class="c1"># run sequence three times</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;sequence_delay&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># every 100 s</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_multiple_sequences</span><span class="p">()</span>  <span class="c1"># asynchron</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Single measurement can also be taken with</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_on</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">()</span>  <span class="c1"># use default acquisition parameters</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_off</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>  <span class="c1"># don&#39;t forget this! risk of short-circuit</span>
+
+<span class="c1">### Custom or adaptative argument, see help(k.run_measurement)</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">(</span><span class="n">nb_stack</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>  <span class="c1"># do 4 stacks (8 half-cycles)</span>
+                  <span class="n">injection_duration</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>  <span class="c1"># inject for 2 seconds</span>
+                  <span class="n">autogain</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>  <span class="c1"># adapt gain of ADS to get good resolution</span>
+</pre></div>
+</div>
+</div>
+</section>
+<section id="mqtt-interface">
+<h4>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading"></a></h4>
+<p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p>
+<p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p>
+<p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p>
+<p>MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as <a class="reference external" href="http://mqtt-explorer.com/">MQTT Explorer</a>.</p>
+<p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p>
+<div class="literal-block-wrapper docutils container" id="id9">
+<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{
+  &quot;cmd_id&quot;: &quot;3fzxv121UITwGjWYgcz4xw&quot;,
+  &quot;cmd&quot;: &quot;update_settings&quot;, Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+  &quot;kwargs&quot;: {
+    &quot;config&quot;: {
+      &quot;nb_meas&quot;: 2,
+      &quot;nb_electrodes&quot;: 10,
+      &quot;nb_stack&quot;: 2,
+      &quot;injection_duration&quot;: 2,
+      &quot;sequence_delay&quot;: 100
+    }
+  }
+}
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id10">
+<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rs_check&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id11">
+<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_sequence&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id12">
+<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_multiple_sequences&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id13">
+<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;interrupt&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<p>Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as <a class="reference external" href="http://mqtt-explorer.com/">Node-red</a>.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component.</p>
+<p>Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :</p>
+<p>These examples may require installing some additional node packages in order to work properly. This can be done in the <a href="#id2"><span class="problematic" id="id3">`</span></a>Palette Manager &lt;<a class="reference external" href="https://nodered.org/docs/user-guide/editor/palette/manager">https://nodered.org/docs/user-guide/editor/palette/manager</a>&gt; within Node-RED.</p>
+<figure class="align-default" id="id14">
+<img alt="doc/V2024.x.x/img/node-red_flow.png" src="doc/V2024.x.x/img/node-red_flow.png" />
+<figcaption>
+<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id15">
+<img alt="doc/V2024.x.x/img/node-red_interface_control.png" src="doc/V2024.x.x/img/node-red_interface_control.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id16">
+<img alt="doc/V2024.x.x/img/node-red_interface_data.png" src="doc/V2024.x.x/img/node-red_interface_data.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p>
+</section>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/api.html b/doc/build/html/doc/api.html
new file mode 100644
index 0000000000000000000000000000000000000000..460fb60b1b7e0223ad25b034a914cbd5924e39bf
--- /dev/null
+++ b/doc/build/html/doc/api.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>API reference &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+        <script src="../_static/jquery.js"></script>
+        <script src="../_static/underscore.js"></script>
+        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../_static/doctools.js"></script>
+    <script src="../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../genindex.html" />
+    <link rel="search" title="Search" href="../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">API reference</a></li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">API reference</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../_sources/doc/api.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="api-reference">
+<h1>API reference<a class="headerlink" href="#api-reference" title="Permalink to this heading"></a></h1>
+<div class="toctree-wrapper compound">
+</div>
+<span class="target" id="module-ohmpi"></span></section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/v1.xx/V1_01.html b/doc/build/html/doc/v1.xx/V1_01.html
new file mode 100644
index 0000000000000000000000000000000000000000..b286610a3f5b26d76b94046d83d6c68795d9b8d1
--- /dev/null
+++ b/doc/build/html/doc/v1.xx/V1_01.html
@@ -0,0 +1,608 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.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 src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">OhmPi V 1.01 (limited to 32 electrodes)</a><ul>
+<li><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li><a class="reference internal" href="#technical-data">Technical data</a></li>
+<li><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi  configuration</a><ul>
+<li><a class="reference internal" href="#os-installation">OS installation</a></li>
+<li><a class="reference internal" href="#virtual-environment-and-packages">Virtual Environment and packages</a></li>
+<li><a class="reference internal" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul>
+<li><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul>
+<li><a class="reference internal" href="#a-description">a) Description</a></li>
+<li><a class="reference internal" href="#b-implementation">b) Implementation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#current-injection-board">Current injection board</a></li>
+<li><a class="reference internal" href="#first-four-electrodes-resistivity-measurement">First four electrodes resistivity measurement</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#multiplexer-implementation">Multiplexer implementation</a></li>
+<li><a class="reference internal" href="#electrode-connection">Electrode connection</a></li>
+<li><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul>
+<li><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li>
+<li><a class="reference internal" href="#startup-procedure">Startup procedure</a></li>
+<li><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#complete-list-of-components">Complete list of components</a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V 1.01 (limited to 32 electrodes)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/v1.xx/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">
+<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 heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>This version corresponds to the version published in the Hardware X journal.
+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>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></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">
+<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Parameter</strong></p></td>
+<td><p><strong>Specifications</strong></p></td>
+<td><p>Units</p></td>
+</tr>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>0 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 50</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>36</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>O.O1</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="raspberry-pi-configuration">
+<h2>Raspberry Pi  configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading"></a></h2>
+<section id="os-installation">
+<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading"></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>
+<ol class="arabic simple">
+<li><p>Watch the video “how to set up your raspberry Pi” (<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li>
+</ol>
+<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">
+<a class="reference internal image-reference" href="doc/v1.xx/raspbian_version.jpg"><img alt="alternate text" src="doc/v1.xx/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
+</figure>
+</div>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly.
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="4">
+<li><p>Open config.txt with GNU nano editor</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="5">
+<li><p>At the end of the file write :</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="6">
+<li><p>Press Ctrl +O to save the modifications and press enter</p></li>
+<li><p>Press Ctrl +x to escape and return to the terminal</p></li>
+<li><p>Close the terminal</p></li>
+</ol>
+</section>
+<section id="virtual-environment-and-packages">
+<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading"></a></h3>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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-environment-on-thonny-python-ide-on-raspberry-pi">
+<h3>Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_first_interface.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_option.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_interpreter.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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 environment should appear</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_interpreter_folder.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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">
+<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 heading"></a></h2>
+<section id="electrical-resistivity-measurements-board">
+<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading"></a></h3>
+<section id="a-description">
+<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading"></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
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design.
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection.
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board,
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been
+set at 50 ohms in order to ensure:
+•       a precise resistance,
+•       a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9)
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit.
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference,
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/schema_measurement_board.jpg"><img alt="alternate text" src="doc/v1.xx/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">
+<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading"></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>
+<ul>
+<li><dl>
+<dt>Step no. 1: test divider bridge</dt><dd><blockquote>
+<div><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p>
+</div></blockquote>
+<div class="math notranslate nohighlight">
+\[coef po = (R1 + R2) / R1\]</div>
+<div class="math notranslate nohighlight">
+\[coef p1 = (R3 + R4) / R3\]</div>
+<div class="math notranslate nohighlight">
+\[coef p2 = (R7 + R6) / R7\]</div>
+<div class="math notranslate nohighlight">
+\[coef p3 = (R9 + R8) / R9\]</div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span><span class="w"> </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>
+</pre></div>
+</div>
+<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
+</dd>
+</dl>
+</li>
+<li><p>Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1%.</p></li>
+<li><p>Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%.</p></li>
+<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks</p></li>
+<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code</p></li>
+<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction).</p></li>
+</ul>
+<p>1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a weaker
+or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/measurement_board.jpg"><img alt="alternate text" src="doc/v1.xx/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">
+<a class="reference internal image-reference" href="doc/v1.xx/measurement_board-2.jpg"><img alt="alternate text" src="doc/v1.xx/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">
+<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading"></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
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/current_board.jpg"><img alt="alternate text" src="doc/v1.xx/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>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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/installation_current_board.jpg"><img alt="alternate text" src="doc/v1.xx/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>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
+</section>
+<section id="first-four-electrodes-resistivity-measurement">
+<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading"></a></h3>
+<p>Under construction !</p>
+<p>Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit</p>
+</section>
+</section>
+<section id="multiplexer-implementation">
+<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading"></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
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p>
+<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/multiplexer_implementation.jpg"><img alt="alternate text" src="doc/v1.xx/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>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.
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p>
+<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/connection.jpg"><img alt="alternate text" src="doc/v1.xx/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>
+</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.
+*       Follow the diagram and solder the pins as shown in Fig.
+*       Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p>
+<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"></td>
+<td colspan="4"><p>Relay shield n°1</p></td>
+<td><p>Relay Shield n°2</p></td>
+</tr>
+<tr class="row-even"><td><p>Pin 1</p></td>
+<td><p>Pin 2-3</p></td>
+<td><p>Pin 4-7</p></td>
+<td><p>Pin 8-16</p></td>
+<td><p>Pin 1- 16</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer A</p></td>
+<td><p>12</p></td>
+<td><p>16</p></td>
+<td><p>20</p></td>
+<td><p>21</p></td>
+<td><p>26</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer B</p></td>
+<td><p>18</p></td>
+<td><p>23</p></td>
+<td><p>24</p></td>
+<td><p>25</p></td>
+<td><p>19</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer M</p></td>
+<td><p>06</p></td>
+<td><p>13</p></td>
+<td><p>04</p></td>
+<td><p>17</p></td>
+<td><p>27</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer N</p></td>
+<td><p>22</p></td>
+<td><p>10</p></td>
+<td><p>09</p></td>
+<td><p>11</p></td>
+<td><p>05</p></td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<div><p>Connection of the GPIOs to each multiplexer</p>
+</div></blockquote>
+</section>
+<section id="electrode-connection">
+<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading"></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">
+<a class="reference internal image-reference" href="doc/v1.xx/cable.jpg"><img alt="alternate text" src="doc/v1.xx/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>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">
+<a class="reference internal image-reference" href="doc/v1.xx/electrode_cable.jpg"><img alt="alternate text" src="doc/v1.xx/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>
+<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">
+<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading"></a></h2>
+<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 heading"></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">
+<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading"></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
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”,
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py”
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be
+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">
+<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading"></a></h3>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">27</span><span class="w"> </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 quadrupole 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 quadrupole</span>
+</pre></div>
+</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">
+<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/doc/v1.xx/V1_02.html b/doc/build/html/doc/v1.xx/V1_02.html
new file mode 100644
index 0000000000000000000000000000000000000000..9c114b88e4b19e6da68cfa9a3aa01a9ca8803bf2
--- /dev/null
+++ b/doc/build/html/doc/v1.xx/V1_02.html
@@ -0,0 +1,615 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.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 src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">OhmPi V 1.02 (limited to 32 electrodes)</a><ul>
+<li><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li><a class="reference internal" href="#technical-data">Technical data</a></li>
+<li><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi  configuration</a><ul>
+<li><a class="reference internal" href="#os-installation">OS installation</a></li>
+<li><a class="reference internal" href="#virtual-environment-and-packages">Virtual Environment and packages</a></li>
+<li><a class="reference internal" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul>
+<li><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul>
+<li><a class="reference internal" href="#a-description">a) Description</a></li>
+<li><a class="reference internal" href="#b-implementation">b) Implementation</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#current-injection-board">Current injection board</a></li>
+<li><a class="reference internal" href="#first-four-electrodes-resistivity-measurement">First four electrodes resistivity measurement</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#multiplexer-implementation">Multiplexer implementation</a></li>
+<li><a class="reference internal" href="#electrode-connection">Electrode connection</a></li>
+<li><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul>
+<li><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li>
+<li><a class="reference internal" href="#startup-procedure">Startup procedure</a></li>
+<li><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#complete-list-of-components">Complete list of components</a></li>
+</ul>
+</li>
+</ul>
+</div>
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V 1.02 (limited to 32 electrodes)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/doc/v1.xx/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">
+<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 heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<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">
+<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></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">
+<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Parameter</strong></p></td>
+<td><p><strong>Specifications</strong></p></td>
+<td><p>Units</p></td>
+</tr>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>0 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 50</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>36</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>O.O1</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="raspberry-pi-configuration">
+<h2>Raspberry Pi  configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading"></a></h2>
+<section id="os-installation">
+<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading"></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>
+<ol class="arabic simple">
+<li><p>Watch the video “how to set up your raspberry Pi” (<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li>
+</ol>
+<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">
+<a class="reference internal image-reference" href="doc/v1.xx/raspbian_version.jpg"><img alt="alternate text" src="doc/v1.xx/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
+</figure>
+</div>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly.
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="4">
+<li><p>Open config.txt with GNU nano editor</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="5">
+<li><p>At the end of the file write :</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="6">
+<li><p>Press Ctrl +O to save the modifications and press enter</p></li>
+<li><p>Press Ctrl +x to escape and return to the terminal</p></li>
+<li><p>Close the terminal</p></li>
+</ol>
+</section>
+<section id="virtual-environment-and-packages">
+<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading"></a></h3>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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-environment-on-thonny-python-ide-on-raspberry-pi">
+<h3>Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_first_interface.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_option.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_interpreter.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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 environment should appear</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="doc/v1.xx/thonny_interpreter_folder.jpg"><img alt="alternate text" src="doc/v1.xx/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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">
+<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 heading"></a></h2>
+<section id="electrical-resistivity-measurements-board">
+<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading"></a></h3>
+<section id="a-description">
+<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading"></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
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design.
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection.
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board,
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been
+set at 50 ohms in order to ensure:
+•       a precise resistance,
+•       a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9)
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit.
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference,
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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.
+In version 1.02, we have improved the electronic board of measurement. we have added a DC/DC converter to supply the operational amplifiers
+(2 Traco power DC/DC converter TRN3-1215). These converters allow to limit the suppression of the signal when the injected voltage is higher than 10V.
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/schema_measurement_board1_02.png"><img alt="alternate text" src="doc/v1.xx/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>
+<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">
+<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading"></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>
+<ul>
+<li><dl>
+<dt>Step no. 1: test divider bridge</dt><dd><blockquote>
+<div><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p>
+</div></blockquote>
+<div class="math notranslate nohighlight">
+\[coef po = (R1 + R2) / R1\]</div>
+<div class="math notranslate nohighlight">
+\[coef p1 = (R3 + R4) / R3\]</div>
+<div class="math notranslate nohighlight">
+\[coef p2 = (R7 + R6) / R7\]</div>
+<div class="math notranslate nohighlight">
+\[coef p3 = (R9 + R8) / R9\]</div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span><span class="w"> </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>
+</pre></div>
+</div>
+<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
+</dd>
+</dl>
+</li>
+<li><p>Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1% (b-in the figure).</p></li>
+<li><p>Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%(C-in the figure).</p></li>
+<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (c-in the figure)</p></li>
+<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code (d-in the figure)</p></li>
+<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the orientation) (e-in the figure).</p></li>
+<li><p>Step no. 7: installation of the 10-MOhm resistors with an accuracy of ± 5% (f-in the figure).</p></li>
+<li><p>Step no. 8: installation of the two DC/DC converter TRN3-1215 (h-in the figure).</p></li>
+<li><p>Step no. 9: installation of the four capacitor on 100-nF/50vDC and the fuse of 10-A (h-in the figure).</p></li>
+</ul>
+<p>1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/measurement_board1-02.jpg"><img alt="alternate text" src="doc/v1.xx/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">
+<a class="reference internal image-reference" href="doc/v1.xx/measurement_board-2-V1-02.jpg"><img alt="alternate text" src="doc/v1.xx/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">
+<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading"></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
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/current_board.jpg"><img alt="alternate text" src="doc/v1.xx/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>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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/installation_current_board_1_02.jpg"><img alt="alternate text" src="doc/v1.xx/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>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
+</section>
+<section id="first-four-electrodes-resistivity-measurement">
+<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading"></a></h3>
+<p>Under construction !</p>
+<p>Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit</p>
+</section>
+</section>
+<section id="multiplexer-implementation">
+<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading"></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
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p>
+<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/multiplexer_implementation.jpg"><img alt="alternate text" src="doc/v1.xx/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>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.
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p>
+<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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">
+<a class="reference internal image-reference" href="doc/v1.xx/connection.jpg"><img alt="alternate text" src="doc/v1.xx/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>
+</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.
+*       Follow the diagram and solder the pins as shown in Fig.
+*       Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p>
+<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"></td>
+<td colspan="4"><p>Relay shield n°1</p></td>
+<td><p>Relay Shield n°2</p></td>
+</tr>
+<tr class="row-even"><td><p>Pin 1</p></td>
+<td><p>Pin 2-3</p></td>
+<td><p>Pin 4-7</p></td>
+<td><p>Pin 8-16</p></td>
+<td><p>Pin 1- 16</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer A</p></td>
+<td><p>12</p></td>
+<td><p>16</p></td>
+<td><p>20</p></td>
+<td><p>21</p></td>
+<td><p>26</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer B</p></td>
+<td><p>18</p></td>
+<td><p>23</p></td>
+<td><p>24</p></td>
+<td><p>25</p></td>
+<td><p>19</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer M</p></td>
+<td><p>06</p></td>
+<td><p>13</p></td>
+<td><p>04</p></td>
+<td><p>17</p></td>
+<td><p>27</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer N</p></td>
+<td><p>22</p></td>
+<td><p>10</p></td>
+<td><p>09</p></td>
+<td><p>11</p></td>
+<td><p>05</p></td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<div><p>Connection of the GPIOs to each multiplexer</p>
+</div></blockquote>
+</section>
+<section id="electrode-connection">
+<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading"></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">
+<a class="reference internal image-reference" href="doc/v1.xx/cable.jpg"><img alt="alternate text" src="doc/v1.xx/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>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">
+<a class="reference internal image-reference" href="doc/v1.xx/electrode_cable.jpg"><img alt="alternate text" src="doc/v1.xx/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>
+<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">
+<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading"></a></h2>
+<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 heading"></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">
+<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading"></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
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”,
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py”
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be
+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">
+<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading"></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 quadrupole 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 quadrupole</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>
+</pre></div>
+</div>
+</section>
+</section>
+<section id="complete-list-of-components">
+<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html
index 7ab0775f9dfdd9116e3a9c49f3075b495e79bab7..789d4a25d0c477f67450bd4f4de42bd293158796 100644
--- a/doc/build/html/genindex.html
+++ b/doc/build/html/genindex.html
@@ -40,12 +40,12 @@
 </div>
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
               <ul>
-<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>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a></li>
 </ul>
 
         </div>
@@ -86,7 +86,7 @@
     module
 
       <ul>
-        <li><a href="api.html#module-ohmpi">ohmpi</a>
+        <li><a href="source_rst/api.html#module-ohmpi">ohmpi</a>
 </li>
       </ul></li>
   </ul></td>
@@ -99,7 +99,7 @@
     ohmpi
 
       <ul>
-        <li><a href="api.html#module-ohmpi">module</a>
+        <li><a href="source_rst/api.html#module-ohmpi">module</a>
 </li>
       </ul></li>
   </ul></td>
diff --git a/doc/build/html/index.html b/doc/build/html/index.html
index 7583c564fc2a06d103b4b35f8c936c4f528d8e57..d599edb287c877e78febbb6cb3948671096535aa 100644
--- a/doc/build/html/index.html
+++ b/doc/build/html/index.html
@@ -19,7 +19,7 @@
     <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 project" href="Ohmpi.html" /> 
+    <link rel="next" title="OhmPi project" href="source_rst/Ohmpi.html" /> 
 </head>
 
 <body class="wy-body-for-nav"> 
@@ -42,12 +42,12 @@
 </div>
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
               <ul>
-<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>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a></li>
 </ul>
 
         </div>
@@ -111,48 +111,48 @@
 <p>Contents:</p>
 <div class="toctree-wrapper compound">
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="Ohmpi.html">OhmPi project</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="Ohmpi.html#authors"><strong>Authors:</strong></a></li>
-<li class="toctree-l2"><a class="reference internal" href="Ohmpi.html#partners"><strong>Partners:</strong></a></li>
-<li class="toctree-l2"><a class="reference internal" href="Ohmpi.html#citing-ohmpi"><strong>Citing OhmPi:</strong></a></li>
-<li class="toctree-l2"><a class="reference internal" href="Ohmpi.html#introduction"><strong>Introduction :</strong></a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/Ohmpi.html#authors"><strong>Authors:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/Ohmpi.html#partners"><strong>Partners:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/Ohmpi.html#citing-ohmpi"><strong>Citing OhmPi:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/Ohmpi.html#introduction"><strong>Introduction :</strong></a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#technical-data">Technical data</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#raspberry-pi-configuration">Raspberry Pi  configuration</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#multiplexer-implementation">Multiplexer implementation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#electrode-connection">Electrode connection</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#operating-instruction">Operating instruction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_01.html#complete-list-of-components">Complete list of components</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#technical-data">Technical data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#raspberry-pi-configuration">Raspberry Pi  configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#multiplexer-implementation">Multiplexer implementation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#electrode-connection">Electrode connection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#operating-instruction">Operating instruction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_01.html#complete-list-of-components">Complete list of components</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#technical-data">Technical data</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#raspberry-pi-configuration">Raspberry Pi  configuration</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#multiplexer-implementation">Multiplexer implementation</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#electrode-connection">Electrode connection</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#operating-instruction">Operating instruction</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V1_02.html#complete-list-of-components">Complete list of components</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#technical-data">Technical data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#raspberry-pi-configuration">Raspberry Pi  configuration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#multiplexer-implementation">Multiplexer implementation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#electrode-connection">Electrode connection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#operating-instruction">Operating instruction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/v1.xx/V1_02.html#complete-list-of-components">Complete list of components</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V2023.html#hardware">Hardware</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V2023.html#software-and-operation">Software and operation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html#hardware">Hardware</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html#software-and-operation">Software and operation</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a><ul>
-<li class="toctree-l2"><a class="reference internal" href="V2024_rc.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V2024_rc.html#hardware">Hardware</a></li>
-<li class="toctree-l2"><a class="reference internal" href="V2024_rc.html#software-and-operation">Software and operation</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html#hardware">Hardware</a></li>
+<li class="toctree-l2"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html#software-and-operation">Software and operation</a></li>
 </ul>
 </li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a><ul class="simple">
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a><ul class="simple">
 </ul>
 </li>
 </ul>
@@ -163,7 +163,7 @@
            </div>
           </div>
           <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
-        <a href="Ohmpi.html" class="btn btn-neutral float-right" title="OhmPi project" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="source_rst/Ohmpi.html" class="btn btn-neutral float-right" title="OhmPi project" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv
index feb8623a7bbaff2d26dc22fcca8c0b2a3335b8ab..563884303f8ca27ef05f71cc6597eab4f03aef54 100644
Binary files a/doc/build/html/objects.inv and b/doc/build/html/objects.inv differ
diff --git a/doc/build/html/py-modindex.html b/doc/build/html/py-modindex.html
index d5b018c131ebb9bddd6b40fbfd6b855aef1fba76..ff96db771ecc208a5cf8ed96964c6fec67ede142 100644
--- a/doc/build/html/py-modindex.html
+++ b/doc/build/html/py-modindex.html
@@ -47,12 +47,12 @@
 </div>
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
               <ul>
-<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>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a></li>
 </ul>
 
         </div>
@@ -92,7 +92,7 @@
      <tr>
        <td></td>
        <td>
-       <a href="api.html#module-ohmpi"><code class="xref">ohmpi</code></a></td><td>
+       <a href="source_rst/api.html#module-ohmpi"><code class="xref">ohmpi</code></a></td><td>
        <em></em></td></tr>
    </table>
 
diff --git a/doc/build/html/search.html b/doc/build/html/search.html
index 21578951705fbf2050233cdd9d76dd2535b8dc23..3e55a587805ee357a5fe66fe3933c2ff88673068 100644
--- a/doc/build/html/search.html
+++ b/doc/build/html/search.html
@@ -43,12 +43,12 @@
 </div>
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
               <ul>
-<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>
-<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="V2024_rc.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/Ohmpi.html">OhmPi project</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a></li>
 </ul>
 
         </div>
diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js
index ed684841a44a7251d3b8c879aaf8006caa30fcfb..3cd987b5c91df6ad039cfa851dcc4165e14bf4e5 100644
--- a/doc/build/html/searchindex.js
+++ b/doc/build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["Ohmpi", "Ohmpi_V2023/V2023_step_01", "Ohmpi_V2023/V2023_step_02", "Ohmpi_V2023/V2023_step_03", "Ohmpi_V2023/V2023_step_04", "V1_01", "V1_02", "V2023", "V2024_rc", "api", "developing_hardware_components", "index"], "filenames": ["Ohmpi.rst", "Ohmpi_V2023\\V2023_step_01.rst", "Ohmpi_V2023\\V2023_step_02.rst", "Ohmpi_V2023\\V2023_step_03.rst", "Ohmpi_V2023\\V2023_step_04.rst", "V1_01.rst", "V1_02.rst", "V2023.rst", "V2024_rc.rst", "api.rst", "developing_hardware_components.rst", "index.rst"], "titles": ["OhmPi project", "<strong>STEP n\u00b01</strong> : Raspberry Pi  configuration", "<strong>STEP n\u00b02</strong>: Measurement board", "<strong>STEP n\u00b03:</strong> MUX board", "<strong>STEP n\u00b04:</strong> assemble the OhmPi", "OhmPi V 1.01 (limited to 32 electrodes)", "OhmPi V 1.02 (limited to 32 electrodes)", "OhmPi V2023 (64 electrodes and 12V)", "OhmPi V2023 (64 electrodes and 12V)", "API reference", "Software interface to new hardware components", "OHMPI: Open source and open hardware resistivity-meter"], "terms": {"r\u00e9mi": [0, 11], "clement": [0, 11], "vivien": [0, 11], "duboi": [0, 11], "nicola": [0, 11], "forquet": [0, 11], "inra": 0, "reversa": [0, 5, 6], "villeurbann": 0, "franc": 0, "yannick": [0, 11], "fargier": [0, 11], "ger": 0, "rro": 0, "univ": 0, "gustav": 0, "eiffel": 0, "ifsttar": 0, "lyon": 0, "h\u00e9l\u00e8ne": [0, 11], "guyard": [0, 11], "ig": 0, "grenobl": 0, "universit\u00e9": 0, "alp": 0, "olivi": [0, 11], "kaufmann": [0, 11], "arnaud": [0, 11], "watlet": [0, 11], "de": 0, "mon": 0, "belgium": 0, "guillaum": [0, 11], "blanchi": [0, 11], "ilvo": 0, "merelbek": 0, "julien": 0, "ganc": 0, "emil": 0, "gro": 0, "et": [0, 2], "al": 0, "an": [0, 1, 2, 3, 4, 5, 6, 10], "open": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "sourc": [0, 1, 5, 6, 10], "data": [0, 7, 8, 11], "logger": [0, 5, 6], "dedic": [0, 7, 8], "applic": [0, 10], "electr": [0, 2], "resist": [0, 2, 7, 8], "imag": [0, 1], "small": [0, 2, 4, 5, 6, 7, 8], "laboratori": [0, 4, 5, 6, 7, 8], "scale": 0, "hardwarex": 0, "elsevi": 0, "2020": 0, "8": [0, 1, 2, 3, 4, 5, 6, 7, 8], "24": [0, 2, 3, 4, 5, 6], "p": [0, 2, 3], "ff10": 0, "1016": 0, "j": 0, "ohx": 0, "e00122ff": 0, "particip": [0, 1, 2, 3, 4, 5, 6, 7, 8], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "requir": [0, 1, 4, 5, 6, 7, 8, 10], "skill": [0, 1, 2, 3, 4, 5, 6, 7, 8], "electron": [0, 1, 2, 3, 4, 5, 6, 7, 8], "respect": [0, 1, 2, 3, 4, 5, 6, 7, 8], "safeti": [0, 1, 2, 3, 4, 5, 6, 7, 8], "rule": [0, 1, 2, 3, 4, 5, 6, 7, 8], "must": [0, 1, 2, 3, 4, 5, 6, 7, 8], "assembl": [0, 1, 7, 8, 11], "profession": [0, 1, 2, 3, 4, 5, 6, 7, 8], "context": [0, 1, 2, 3, 4, 5, 6, 7, 8], "peopl": [0, 1, 2, 3, 4, 5, 6, 7, 8], "compet": [0, 1, 2, 3, 4, 5, 6, 7, 8], "The": [0, 1, 2, 3, 4, 10, 11], "team": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "cannot": [0, 1, 2, 3, 4, 5, 6, 7, 8], "held": [0, 1, 2, 3, 4, 5, 6, 7, 8], "respons": [0, 1, 2, 3, 4, 5, 6, 7, 8], "ani": [0, 1, 2, 3, 4, 5, 6, 7, 8], "materi": [0, 1, 2, 3, 4, 5, 6, 7, 8], "human": [0, 1, 2, 3, 4, 5, 6, 7, 8], "damag": [0, 1, 2, 3, 4, 5, 6, 7, 8], "which": [0, 1, 2, 3, 4, 5, 6, 7, 8], "would": [0, 1, 2, 3, 4, 5, 6, 7, 8], "associ": [0, 1, 2, 3, 4, 5, 6, 7, 8], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8], "equip": [0, 1, 2, 3, 4, 5, 6, 7, 8], "doe": [0, 1, 2, 3, 4, 5, 6, 7, 8], "work": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "after": [0, 1, 2, 3, 4, 5, 6, 7, 8], "you": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "mai": [0, 1, 5, 6, 7, 8], "redistribut": 0, "modifi": [0, 5, 6, 10], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "document": [0, 5, 7, 8], "make": [0, 3, 5, 6, 7, 8, 10], "product": [0, 2, 3], "under": [0, 4, 5, 6], "term": [0, 10], "cern": 0, "ohl": 0, "v2": 0, "http": [1, 2, 3, 5, 6, 7, 8], "ch": [], "distribut": 0, "without": [0, 3, 5, 6], "express": [0, 10], "OR": 0, "impli": [0, 3], "warranti": 0, "includ": [0, 1, 3, 5, 6, 7, 8, 10], "OF": 0, "merchant": 0, "satisfactori": 0, "qualiti": 0, "AND": 0, "fit": 0, "FOR": 0, "A": [0, 4, 5, 6, 7, 8, 10], "particular": 0, "purpos": [0, 4, 5, 6], "pleas": [0, 4, 5, 6, 7, 8], "see": [0, 5, 6, 7, 8], "condit": 0, "present": [0, 3, 4, 5, 6, 10], "develop": [0, 1, 2, 5, 6, 7, 8, 10, 11], "low": [0, 5, 6, 7, 8], "cost": [0, 2, 3, 5, 6, 10], "hardwar": [0, 5, 6], "meter": [0, 4, 5, 6, 7, 8], "provid": [0, 5, 6, 7, 8], "scientif": 0, "commun": [0, 7, 8], "robust": [0, 5, 6, 7, 8], "flexibl": 0, "tool": [0, 7, 8], "experi": [0, 5, 6, 7, 8], "call": [0, 1, 3, 4, 7, 8], "basic": [0, 10], "meterfeatur": 0, "current": [0, 2, 7, 8, 11], "inject": [0, 7, 8, 11], "measur": [0, 1, 3, 4, 7, 8, 11], "function": [0, 5, 6, 7, 8, 10], "multiplex": [0, 3, 4, 7, 8, 11], "allow": [0, 2, 3, 5, 6, 7, 8], "perform": [0, 1, 5, 6, 10], "automat": [0, 5, 6, 7, 8], "up": [0, 1, 3, 5, 6, 7, 8], "64": [0, 3, 5, 6, 11], "electrod": [0, 2, 3, 4, 11], "s": [0, 2, 3, 5, 6, 7, 8], "philosophi": [0, 11], "fulli": 0, "toolto": 0, "surfac": 0, "anyon": 0, "who": 0, "want": [0, 6], "get": [0, 1, 2, 5, 6, 7, 8], "involv": [0, 7, 8], "welcom": [0, 10], "join": 0, "ohmpi": [1, 2, 3, 10], "project": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "compon": [1, 7, 8, 11], "quantiti": [1, 5, 6], "4": [1, 2, 3, 5, 6, 7, 8], "model": [1, 2, 5, 6], "micro": [1, 5, 6, 7, 8], "sd": [1, 4, 5, 6, 7, 8], "32": [1, 4, 7, 8, 11], "go": [1, 3, 7, 8], "hdmi": [1, 4], "cabl": [1, 2, 3, 4, 5, 6], "comput": [1, 5, 6], "mous": [1, 4, 5, 6], "keyboard": [1, 4, 5, 6], "first": [1, 3, 4, 7, 8, 10], "start": [1, 3, 5, 6, 7, 8, 10, 11], "board": [1, 4, 7, 8, 10], "oper": [1, 2, 4, 10, 11], "system": [1, 5, 6, 10], "For": [1, 2, 3, 5, 6, 7, 8], "instruct": [1, 7, 8, 11], "ar": [1, 2, 5, 6, 7, 8, 10], "well": [1, 5, 6, 7, 8], "describ": [1, 2, 4, 5, 6, 10], "websit": [1, 5, 6], "watch": [1, 5, 6], "video": [1, 5, 6], "how": [1, 5, 6], "set": [1, 2, 5, 6, 7, 8], "your": [1, 2, 3, 5, 6, 10], "author": [1, 5, 6, 11], "recommend": [1, 5, 6, 7, 8, 10], "latest": [1, 5, 6], "stabl": [1, 5, 6], "complet": [1, 2, 7, 8, 11], "version": [1, 2, 5, 6, 7, 8, 10], "previous": [1, 4, 5, 6], "raspbian": [1, 5, 6], "can": [1, 4, 5, 6, 7, 8], "visit": 1, "raspberrypi": 1, "org": [1, 7, 8], "en": 1, "test": [1, 2, 3, 5, 6, 7, 8, 10], "were": [1, 2, 5, 6], "3": [1, 2, 4, 5, 6, 7, 8, 10], "we": [1, 2, 3, 5, 6, 7, 8], "follow": [1, 2, 3, 4, 5, 6, 7, 8, 10], "onc": [1, 5, 6, 7, 8], "ha": [1, 3, 5, 6, 7, 8], "been": [1, 3, 5, 6, 7, 8], "wire": [1, 3, 4, 5, 6], "spi": [1, 5, 6], "gpio": [1, 3, 5, 6], "remot": [1, 5, 6, 7, 8], "option": [1, 5, 6, 7, 8], "deactiv": [1, 5, 6], "i2c": [1, 2, 3], "via": [1, 5, 6], "gui": [1, 5, 6], "menu": [1, 5, 6], "failur": [1, 5, 6], "carri": [1, 5, 6], "out": [1, 4, 5, 6], "task": [1, 5, 6], "caus": [1, 5, 6], "relai": [1, 2, 3, 5, 6], "shield": [1, 5, 6], "card": [1, 3, 4, 7, 8, 11], "dure": [1, 5, 6], "wai": [1, 5, 6, 10], "have": [1, 2, 3, 5, 6, 7, 8, 10], "multipl": [1, 7, 8], "parallel": 1, "instanc": 1, "interpret": [1, 2, 5, 6], "each": [1, 3, 4, 5, 6], "differ": [1, 2, 3, 4, 5, 6, 7, 8], "contain": [1, 4, 5, 6, 7, 8], "discret": 1, "copi": [1, 7, 8, 10], "its": [1, 3, 4, 5, 6, 7, 8], "support": 1, "util": [1, 7, 8], "It": [1, 3, 5, 6, 7, 8, 10], "also": [1, 5, 6, 7, 8, 10], "protect": 1, "case": [1, 5, 6, 7, 8, 10], "problem": 1, "depend": [1, 5, 6, 7, 8], "specifi": [1, 5, 6], "txt": [1, 5, 6, 7, 8], "below": [1, 4, 5, 6, 7, 8], "should": [1, 2, 3, 4, 5, 6, 7, 8, 10], "type": [1, 3, 5, 6, 7, 8, 10], "termin": [1, 2, 3, 4, 5, 6, 7, 8], "necessari": [1, 3, 4, 5, 6, 10], "ensur": [1, 5, 6], "libatla": [1, 5, 6], "base": [1, 3, 5, 6, 7, 8, 10], "dev": [1, 5, 6], "librari": [1, 5, 6], "sudo": [1, 5, 6], "apt": [1, 5, 6], "strongli": [1, 5, 6], "user": [1, 5, 6, 7, 8, 11], "creat": [1, 5, 6, 7, 8, 10], "run": [1, 2, 3, 4, 5, 6, 7, 8], "code": [1, 3, 5, 6, 10], "done": [1, 5, 6, 7, 8], "either": [1, 5, 6], "directori": [1, 5, 6, 7, 8, 10], "gather": [1, 5, 6], "within": [1, 5, 6, 7, 8, 10], "python3": [1, 5, 6], "m": [1, 2, 3, 4, 5, 6], "venv": [1, 5, 6], "command": [1, 5, 6, 7, 8], "bin": [1, 5, 6], "suffici": [1, 5, 6], "meet": [1, 5, 6], "export": 1, "cflag": 1, "fcommon": 1, "pip": [1, 5, 6], "rpi": [1, 4, 5, 6], "adafruit": [1, 2, 3, 5, 6], "blinka": [1, 5, 6], "numpi": [1, 5, 6, 7, 8], "panda": [1, 5, 6], "circuitpython": [1, 5, 6], "ads1x15": [1, 5, 6], "tca9548a": [1, 3], "mcp230xx": 1, "gpiozero": 1, "check": [1, 5, 6, 7, 8], "met": [1, 5, 6], "list": [1, 11], "leav": [1, 5, 6], "simpli": [1, 5, 6], "If": [1, 2, 5, 6, 10], "decid": [1, 5, 6], "setup": [1, 5, 6], "time": [1, 3, 5, 6, 7, 8], "softwar": [1, 5, 6, 11], "click": [1, 5, 6], "access": [1, 4, 5, 6, 7, 8], "program": [1, 4, 5, 6], "pythonid": [1, 5, 6], "2": [1, 3, 4, 5, 6, 7, 8, 10], "root": [1, 5, 6], "7": [1, 2, 3, 4, 5, 6], "usr": [1, 5, 6], "select": [1, 3, 5, 6], "new": [1, 5, 6, 7, 8], "window": [1, 5, 6, 7, 8], "On": [1, 5, 6], "altern": [1, 5, 6], "5": [1, 2, 3, 4, 5, 6, 7, 8], "button": [1, 5, 6], "appear": [1, 2, 3, 5, 6], "locat": [1, 5, 6], "anoth": [1, 5, 6], "execut": [1, 5, 6, 7, 8], "6": [1, 2, 3, 4, 5, 6], "find": [1, 5, 6], "folder": [1, 5, 6], "where": [1, 5, 6, 7, 8, 10], "file": [1, 2, 5, 6, 10], "home": [1, 5, 6, 7, 8], "In": [1, 2, 3, 5, 6, 7, 8, 10], "known": [1, 5, 6], "tab": [1, 5, 6, 7, 8], "path": [1, 5, 6, 10], "close": [1, 5, 6], "ok": [1, 5, 6], "9": [1, 2, 3, 4, 5, 6, 7, 8], "save": [1, 5, 6], "modif": [1, 5, 6], "number": [2, 3, 5, 6, 7, 8], "per": [2, 3, 5, 6], "unit": [2, 3, 5, 6, 7, 8], "total": [2, 3, 5, 6], "manufactur": [2, 3, 5, 6], "refer": [2, 3, 4, 5, 6, 7, 8, 11], "web": [2, 3], "raspberri": [2, 3, 4, 7, 8, 11], "pi": [2, 4, 7, 8, 11], "1": [2, 3, 4, 7, 8, 10, 11], "58": [2, 5, 6], "75": 2, "www": [2, 3, 5, 6], "mouser": [2, 3], "fr": [2, 3, 5, 6], "productdetail": [2, 3], "seeed": 2, "studio": 2, "102110421": 2, "qs": [2, 3], "7mvldsj5uaxen3lyyh3sqw": 2, "3d": [2, 3], "lm158n": 2, "amp": [2, 5, 6], "o": [2, 3, 5, 6, 7, 8], "14": [2, 3, 4], "texa": [2, 5, 6], "instrument": [2, 5, 6, 7, 8], "lm358an": [2, 5, 6], "nopb": [2, 5, 6], "lm158j": 2, "x1j7hmvl2zh8vpefml8": 2, "2ffq": 2, "print": [2, 3, 5, 6, 7, 8], "circuit": [2, 3, 5, 6, 7, 8], "12": [2, 3, 4, 5, 6, 7, 8], "asler": [2, 3, 5, 6], "ads1115": [2, 5, 6], "11": [2, 5, 6], "23": [2, 3, 4, 5, 6], "1085": 2, "2fha2pyfaduh": 2, "2fogzutwiq9iz5vjaqfoyugqalgxpeckigrqvf4hn": 2, "252bg": 2, "capacitor": [2, 6], "100nf": [2, 6], "50vdc": [2, 6], "10": [2, 3, 4, 5, 6, 7, 8], "ceram": [2, 6], "0": [2, 3, 5, 6, 7, 8], "kemet": [2, 6], "c320c104k1": [2, 6], "c320c104k1r5ta7303": 2, "c4uyot": 2, "2flq1th4mcyoetma": 2, "resistor": [2, 3, 5, 6], "kohm": [2, 3, 5, 6], "5w": [2, 5, 6], "te": [2, 3, 5, 6], "connect": [2, 3, 4, 7, 8, 11], "h81k0bya": [2, 5, 6], "holsworthi": 2, "2fha2pyfaduhuylh7az": 2, "2fmjfh2xjoums6wztux4som": 2, "252bii": 2, "h81k5bya": [2, 5, 6], "2fha2pyfadugy9twham3ru9hmijohywhbin95knm": 2, "252bx": 2, "2fm": 2, "vishai": [2, 3], "ccf071k50gke36": 2, "dale": 2, "qkeozdl6eqpa6lzrlqfvow": 2, "mohm": [2, 5, 6, 7, 8], "762": 2, "524": 2, "cmf651m0000fkek143": 2, "ciayqk2gdckzia2levalkg": 2, "ohm": [2, 5, 6, 7, 8], "shunt": 2, "42": 2, "ohmit": 2, "41f2r0e": 2, "im6toxqzgoauedprb19mha": 2, "dual": [2, 3, 5, 6], "screw": [2, 3, 4, 5, 6], "08": [2, 3], "mm": [2, 3, 4, 5, 6], "pitch": [2, 3, 5, 6], "648": [2, 3, 5, 6], "cui": [2, 3], "devic": [2, 3, 10], "tb009": [2, 3], "508": [2, 3], "02be": [2, 3], "vlwxofp3u2wcfk5uckwtka": [2, 3], "dc": [2, 3, 5, 6], "convert": [2, 5, 6], "24v": [2, 6], "15": [2, 3, 4, 5, 6], "31": [2, 3, 4], "16": [2, 3, 4, 5, 6], "tracopow": [2, 6], "trn": [2, 6], "1215": [2, 6], "traco": [2, 6], "power": [2, 3, 4, 5, 6, 7, 8], "yca": 2, "2faaymw02gquicgqj0ta": 2, "dip": [2, 3], "line": [2, 3, 5, 6], "socket": [2, 3], "72": [2, 6], "mill": 2, "max": 2, "110": [2, 3, 5, 6], "43": [2, 5, 6], "308": 2, "41": [2, 3], "001000": 2, "iggadovctstu": 2, "2fqaur8narg": 2, "mgh": 2, "vip": 2, "gclid": 2, "eaiaiqobchmin_taxbcx8wivq5nvch2qaqfpeayyccabegjk1_d_bw": 2, "aqy211eh": 2, "84": [2, 3], "36": [2, 4, 5, 6], "panason": 2, "industri": 2, "wktuvitrialgiu8hcm7dvq": 2, "449": 2, "796": 2, "preci": [2, 3], "83": 2, "304": 2, "001101": [2, 3], "2fha2pyfadujqkqx4wauig": 2, "2fmgndxmcnv": 2, "2f33nj0gbxroculucynpyong": 2, "mcp23008": 2, "593": 2, "sgaepimzzmskedp9slc0yyv4kpdpmd1hts4slctivmw": 2, "header": [2, 3, 5, 6], "1x10": [2, 5, 6], "samtec": [2, 5, 6], "ssw": [2, 5, 6], "02": [2, 5, 11], "g": [2, 5, 6], "ru5fayqh": 2, "252be0w1orxzibqpw": 2, "smt": 2, "breakout": 2, "pcb": [2, 3, 5, 6, 10], "soic": 2, "1212": 2, "gurawfaegucaqqfvnvtyeg": 2, "eaiaiqobchmit8zjzr6x8wivgdnvch2vbwvseaqyayabegjqg_d_bw": 2, "ina282aid": 2, "ze4": 2, "2fufuz19ilfayzxocfra": 2, "thd": 2, "1211n": 2, "39": [2, 3, 4, 5, 6], "2fha2pyfadugpyeg4idvm": 2, "2fmsr": 2, "252b7an": 2, "2f0t3ruis9pcaqjlt4": 2, "252bnrpuooeq": 2, "20": [2, 4, 5, 6], "53": [2, 6], "ssq": 2, "120": [2, 3], "d": [2, 5, 6], "252be1bmvd": 2, "252bdzonqg": 2, "pin": [2, 3, 5, 6], "strip": [2, 3, 4, 5, 6], "ejector": [2, 3], "35": [2, 4], "blk": [2, 3], "10120550": [2, 3], "conrad": [2, 3], "com": [2, 3, 5, 6, 7, 8], "bkl": [2, 3], "contact": [2, 3, 5, 6, 7, 8], "space": [2, 3], "254": [2, 3], "row": [2, 3], "pc": [2, 3], "741435": [2, 3], "searchterm": [2, 3], "searchtyp": [2, 3], "suggest": [2, 3, 5, 6], "searchsuggest": [2, 3], "male": [2, 3], "femal": [2, 3, 5, 6], "spacer": [2, 3, 4], "5m": [2, 4], "hexagonal": 2, "87": [2, 3], "48": [2, 5, 6], "harwin": 2, "r25": 2, "3002002": 2, "w0yvoo0ixfenuv0hsdc4": 2, "2fq": 2, "86": [2, 3], "437": 2, "1108331841001101": 2, "318": 2, "ftmup6kvi2tnqoeziaq": 2, "2fpa": 2, "figur": [2, 5, 6, 7, 8], "show": [2, 5, 6], "gener": [2, 3, 5, 6, 7, 8, 11], "schemat": [2, 5, 6], "plug": [2, 5, 6], "plai": 2, "To": [2, 3, 5, 6, 7, 8], "two": [2, 3, 5, 6, 7, 8, 10], "one": [2, 4, 5, 6, 7, 8], "voltag": [2, 4, 5, 6, 7, 8], "propos": [2, 5, 6], "florsch": [2, 5, 6], "bit": [2, 5, 6], "adc": [2, 5, 6], "analog": [2, 5, 6], "digit": [2, 3, 5, 6], "adapt": [2, 5, 6, 7, 8, 10], "gain": [2, 5, 6, 7, 8], "advantag": 2, "input": [2, 4, 5, 6, 7, 8], "signal": [2, 5, 6], "valu": [2, 3, 5, 6], "could": [2, 4, 5, 6], "lie": [2, 5, 6], "between": [2, 3, 4, 5, 6], "114": [2, 5, 6], "v": [2, 3, 4, 7, 8, 11], "directli": [2, 5, 6], "integr": 2, "ina282": 2, "realiz": 2, "precis": [2, 5, 6], "around": [2, 7, 8], "instal": [2, 3, 4, 7, 8], "solder": [2, 5, 6], "optic": 2, "suppli": [2, 3, 4, 5, 6], "12v": [2, 3, 4, 5, 6, 11], "5v": [2, 5, 6], "tdh15": 2, "four": [2, 7, 8], "inpout": 2, "output": [2, 4, 5, 6, 7, 8], "three": [2, 3, 5, 6, 7, 8], "limit": [2, 7, 8, 11], "ma": [2, 5, 6, 7, 8], "higher": [2, 6], "than": [2, 5, 6], "just": [2, 6], "decreas": 2, "don": [2, 7, 8], "t": [2, 3, 7, 8], "forget": [2, 7, 8], "chang": [2, 3, 7, 8, 10], "config": [2, 5, 6, 7, 8, 10], "py": [2, 3, 5, 6, 7, 8, 10], "kei": 2, "r_shunt": 2, "ohmpi_config": 2, "dict": 2, "pre": [2, 4], "adjust": [2, 5, 6], "13": [2, 3, 4, 5, 6], "17": [2, 4, 5, 6], "18": [2, 4, 5, 6, 7, 8], "19": [2, 4, 5, 6], "view": [2, 4], "fix": [2, 4], "dot": 2, "mark": [2, 4], "top": [2, 4, 7, 8], "left": [2, 4], "corner": 2, "21": [2, 4, 5, 6], "mount": [2, 3, 4, 5, 6], "22": [2, 4, 5, 6], "lm158": 2, "amplifi": [2, 5, 6], "ads115": [2, 5, 6], "right": [2, 4], "3x11": 2, "wurth": 2, "elektronik": 2, "971110321": 2, "305": [2, 3], "apm": [2, 3], "hexseal": [2, 3], "rm3x8mm": [2, 3], "2701": [2, 3], "jjse": [2, 3], "2f12mkns3vxsdryxuhw": [2, 3], "shutdown": 2, "unplug": 2, "bottom": [2, 5, 6], "11mm": 2, "m3": [2, 3], "upper": 2, "port": [2, 4], "write": [2, 3, 5, 6, 7, 8, 10], "i2cdetect": [2, 3], "y": [2, 3], "everyth": 2, "address": [2, 5, 6, 7, 8], "screen": [2, 5, 6], "equival": [2, 5, 6], "need": [2, 3, 5, 6, 7, 8], "1kohm": 2, "r2": [2, 5, 6], "220": 2, "r1": [2, 5, 6], "padboard": 2, "spool": 2, "prepar": [2, 3, 5, 6], "batteri": [2, 4, 5, 6, 7, 8], "red": [2, 4, 5, 6, 7, 8], "black": [2, 4, 5, 6], "ground": [2, 5, 6], "thonni": [2, 7, 8], "sample_measurement_exampl": 2, "exampl": [2, 3, 4, 5, 6, 7, 8], "result": [2, 5, 6], "channel": [3, 5, 6], "mechan": [3, 5, 6, 7, 8], "omron": 3, "g5le": 3, "vd": 3, "vdc": 3, "combin": 3, "zvn4206a": 3, "mofset": 3, "onli": [3, 10], "30": [3, 5, 6], "enough": [3, 5, 6], "activ": [3, 7, 8], "repres": [3, 5, 6], "512": 3, "expand": 3, "mcp23017": 3, "from": [3, 4, 5, 6, 7, 8], "128": [3, 7, 8], "own": 3, "0x70": 3, "0x77": 3, "0x71": 3, "0x72": 3, "0x73": 3, "140": 3, "560": 3, "62": 3, "92": [3, 5, 6], "1580994": 3, "tru": [3, 5, 6], "diod": 3, "1n4007": 3, "256": 3, "091": 3, "296": 3, "incorpor": [3, 7, 8], "sgaepimzzmueqxo7l": 3, "2fbpyakboruumren": 3, "56": 3, "776": 3, "205": 3, "46": 3, "103321": 3, "5twgzeq9e7hsylqaljjyrw": 3, "i": [3, 4, 5, 6, 7, 8], "40": [3, 5, 6, 7, 8], "732": 3, "sgaepimzzmskedp9slc0yfx16nydmpxjueeogolbldi": 3, "27": [3, 4, 5, 6], "325": 3, "over": 3, "503811": 3, "mosfet": 3, "nchannel": 3, "471": 3, "576": [3, 5], "vhuuswq2": 3, "252bsz9b": 3, "2ff6fcxt7g": 3, "100k\u03c9": 3, "061": 3, "616": 3, "beyschlag": 3, "mba02040c1003frp00": 3, "mzrxyrlhvdt9crf7zyf": 3, "2f5q": 3, "89": 3, "2717": 3, "sgaepimzzmsyydr3r27av4eqf73yoh": 3, "252baqg": 3, "252bz3hvktao": 3, "10120558": 3, "54": 3, "No": 3, "51": 3, "741727": 3, "10120862": 3, "connector": [3, 4, 5, 6], "strain": 3, "relief": 3, "44": [3, 5, 6], "742063": 3, "10120158": 3, "ribbon": [3, 4], "x": [3, 5, 6], "mm\u00b2": [3, 5, 6], "multi": [3, 5, 6, 7, 8], "colour": 3, "1012015810": 3, "127": 3, "008": 3, "1548658": 3, "hex": [3, 4], "25": [3, 4, 5, 6, 7, 8], "79": 3, "49": 3, "keyston": 3, "24300": 3, "uwqyq": 3, "2f2czwu0ejpozmzc2a": 3, "745": 3, "846": 3, "614": 3, "25515": 3, "2f2czwuxuhumfr": 3, "252bzuq": 3, "55": [3, 5, 6], "328": 3, "uqd7xcvsscnr3hwd6fta8g": 3, "100": [3, 5, 6, 7, 8], "duplic": 3, "everi": [3, 7, 8], "build": [3, 5, 6], "therefor": [3, 5, 6], "identifi": 3, "assign": 3, "alloc": 3, "here": [3, 4, 6], "default": [3, 7, 8], "jumper": 3, "note": [3, 4, 5, 6], "name": [3, 5, 6, 7, 8, 10], "zoom": [3, 4], "befor": [3, 4, 5, 6, 7, 8], "them": [3, 5, 6, 7, 8], "definit": 3, "simplifi": 3, "thing": [3, 7, 8], "do": [3, 4, 7, 8, 10], "50": [3, 4, 5, 6, 7, 8], "cm": [3, 4, 5, 6], "long": [3, 4], "flat": 3, "pole": [3, 5, 6], "detect": 3, "script": [3, 7, 8, 10], "test_mux_board": 3, "cut": 4, "compos": 4, "proper": 4, "length": [4, 5, 6], "about": 4, "correspond": [4, 5], "crimp": [4, 5, 6], "idc": 4, "suitabl": [4, 5, 6, 7, 8], "clamp": 4, "pai": [4, 5, 6], "attent": [4, 5, 6], "direct": [4, 5, 6, 7, 8], "unbalanc": 4, "perpendicular": 4, "possibl": [4, 5, 6], "same": [4, 5, 6, 7, 8], "flush": 4, "posit": [4, 5, 6], "abov": [4, 5, 6], "mux": [4, 5, 6, 7, 8], "profil": 4, "color": 4, "yellow": 4, "tin": 4, "end": [4, 5, 6], "shown": [4, 5, 6], "pictur": 4, "ii": 4, "gnd": [4, 5, 6], "nois": 4, "often": 4, "heard": 4, "when": [4, 5, 6, 7, 8, 10], "clip": 4, "place": [4, 5, 6, 10], "second": [4, 5, 6, 7, 8], "b": [4, 7, 8], "help": [4, 7, 8, 10], "previou": [4, 7, 8], "procedur": 4, "repeat": [4, 5, 6, 7, 8], "other": [4, 5, 6, 7, 8], "purpl": 4, "relev": [4, 10], "defin": [4, 7, 8, 10], "third": [4, 7, 8], "fourth": 4, "nylon": 4, "photograph": 4, "more": [4, 7, 8], "detail": [4, 5, 7, 8], "4th": 4, "togeth": [4, 5, 6], "tie": 4, "pvc": 4, "plate": 4, "minimum": 4, "dimens": 4, "200": 4, "150": [4, 5, 6, 7, 8], "drill": 4, "remain": [4, 5, 6], "metal": 4, "tighten": 4, "so": [4, 5, 6], "usb": 4, "hole": [4, 5, 6], "26": [4, 5, 6], "add": [4, 5, 6], "attach": 4, "washer": 4, "nut": 4, "28": [4, 11], "29": [4, 5, 6], "come": 4, "pass": [4, 7, 8], "brown": 4, "blue": [4, 5, 6], "block": [4, 5, 6], "secur": [4, 7, 8], "33": 4, "34": 4, "37": [4, 5, 6], "38": [4, 5, 6], "os": [4, 7, 8], "monitor": [4, 5, 6, 7, 8], "deliv": [4, 5, 6], "12vdc": 4, "enjoi": 4, "publish": [5, 7, 8], "journal": 5, "howev": [5, 6, 10], "correct": [5, 6], "bug": 5, "exist": [5, 6, 10], "explain": 5, "miss": 5, "point": [5, 6, 7, 8], "invit": 5, "v1": [5, 6, 7, 8], "offer": [5, 6, 7, 8], "commerci": [5, 6], "avail": [5, 6, 7, 8, 10], "field": [5, 6, 7, 8], "specif": [5, 6, 10], "temperatur": [5, 6, 7, 8], "c": [5, 6, 7, 8], "consumpt": [5, 6, 7, 8], "cpu": [5, 6, 7, 8], "control": [5, 6, 7, 8], "w": [5, 6, 7, 8], "min": [5, 6, 7, 8], "puls": [5, 6, 7, 8], "durat": [5, 6, 7, 8], "ms": [5, 6, 7, 8], "imped": [5, 6, 7, 8], "storag": [5, 6, 7, 8], "resolut": [5, 6, 7, 8], "o1": [5, 6], "step": [5, 6, 10], "youtub": [5, 6], "wjwzhv1v3pk": [5, 6], "noob": [5, 6], "simpl": [5, 6], "sure": [5, 6, 7, 8, 10], "unexpectedli": [5, 6], "boot": [5, 6], "cd": [5, 6], "gnu": [5, 6], "nano": [5, 6], "editor": [5, 6, 7, 8], "At": [5, 6], "op": [5, 6], "dl": [5, 6], "press": [5, 6], "ctrl": [5, 6], "enter": [5, 6], "escap": [5, 6], "return": [5, 6, 7, 8], "wa": [5, 6], "introduc": [5, 6, 7, 8, 10], "Its": [5, 6], "studi": [5, 6], "hous": [5, 6], "design": [5, 6, 7, 8, 10], "diagram": [5, 6], "displai": [5, 6], "mimic": [5, 6], "behavior": [5, 6], "soil": [5, 6], "subject": [5, 6], "r11": [5, 6], "r10": [5, 6], "r12": [5, 6], "constitut": [5, 6], "thei": [5, 6, 7, 8], "typic": [5, 6, 7, 8, 10], "made": [5, 6, 7, 8], "stainless": [5, 6], "steel": [5, 6], "seri": [5, 6], "part": [5, 6, 7, 8, 10], "r9": [5, 6], "ad": [5, 6, 7, 8], "flow": [5, 6, 7, 8], "order": [5, 6, 7, 8, 10], "less": [5, 6], "sum": [5, 6], "inde": [5, 6], "000": [5, 6], "intens": [5, 6], "potenti": [5, 6], "calcul": [5, 6], "insert": [5, 6], "1115": [5, 6], "our": [5, 6, 7, 8], "a1": [5, 6], "a0": [5, 6], "increas": [5, 6], "track": [5, 6, 10], "divid": [5, 6], "bridg": [5, 6], "r5": [5, 6], "r8": [5, 6], "r6": [5, 6], "r7": [5, 6], "accord": [5, 6, 10], "n": [5, 6, 7, 8], "a2": [5, 6], "a3": [5, 6], "obtain": [5, 6], "ly": [5, 6], "rang": [5, 6, 10], "let": [5, 6], "equal": [5, 6], "multipli": [5, 6], "reduct": [5, 6], "section": [5, 6, 7, 8, 10], "despit": [5, 6], "high": [5, 6], "e": [5, 6, 7, 8], "accur": [5, 6], "still": [5, 6], "calibr": [5, 6], "voltmet": [5, 6], "variou": [5, 6], "These": [5, 6, 7, 8], "serv": [5, 6, 7, 8], "With": [5, 6], "disturb": [5, 6], "being": [5, 6], "estim": [5, 6], "mega": [5, 6], "shortcut": [5, 6], "excess": [5, 6], "whose": [5, 6, 7, 8], "lithium": [5, 6], "ion": [5, 6], "automobil": [5, 6], "lead": [5, 6], "acid": [5, 6], "strong": [5, 6], "hazard": [5, 6], "fuse": [5, 6], "repositori": [5, 6, 7, 8], "onto": [5, 6], "illustr": [5, 6, 7, 8], "ohmmet": [5, 6], "coeffici": [5, 6], "coef_p0": [5, 6], "coef_p1": [5, 6], "coef_p2": [5, 6], "coef_p3": [5, 6], "coef": [5, 6], "po": [5, 6], "p1": [5, 6], "r3": [5, 6], "r4": [5, 6], "p2": [5, 6], "p3": [5, 6], "r_ref": [5, 6], "slope": [5, 6], "convers": [5, 6], "p0": [5, 6], "accuraci": [5, 6], "both": [5, 6, 10], "addit": [5, 6, 7, 8], "lm358n": [5, 6], "appli": [5, 6], "prefer": [5, 6, 7, 8], "weaker": 5, "stronger": [5, 6], "tx": [5, 6], "rememb": [5, 6], "holder": [5, 6], "f": [5, 6], "consist": [5, 6], "circul": [5, 6], "through": [5, 6, 7, 8], "fig": [5, 6], "modul": [5, 6, 10], "switch": [5, 6], "common": [5, 6], "neg": [5, 6], "normal": [5, 6], "simultan": [5, 6], "role": [5, 6], "revers": [5, 6], "polar": [5, 6], "thu": [5, 6], "energ": [5, 6], "solut": [5, 6, 10], "manag": [5, 6, 7, 8], "next": [5, 6], "featur": [5, 6], "strict": [5, 6], "in1": [5, 6], "in2": [5, 6], "in3": [5, 6], "in4": [5, 6], "5vdc": [5, 6], "5vcc": [5, 6], "now": [5, 6], "mm2": [5, 6], "lastli": [5, 6], "congratul": [5, 6], "construct": [5, 6], "valid": [5, 6, 7, 8], "conduct": [5, 6, 10], "manual": [5, 6, 7, 8], "practic": [5, 6, 10], "ert": [5, 6], "sever": [5, 6], "ten": [5, 6], "thousand": [5, 6], "arrai": [5, 6, 7, 8], "stuck": [5, 6], "enabl": [5, 6, 7, 8], "smaller": [5, 6], "hand": [5, 6], "entir": [5, 6, 7, 8], "cap": [5, 6], "produc": [5, 6], "clean": [5, 6], "distanc": [5, 6], "had": [5, 6], "extra": [5, 6], "As": [5, 6], "final": [5, 6], "actual": [5, 6], "singl": [5, 6, 7, 8, 10], "protocol": [5, 6, 7, 8], "horizont": [5, 6], "vertic": [5, 6], "06": [5, 6], "04": [5, 6], "09": [5, 6], "05": [5, 6], "din": [5, 6], "rail": [5, 6], "chosen": [5, 6], "consequ": [5, 6], "incom": [5, 6], "instead": [5, 6], "moreov": [5, 6], "turn": [5, 6], "bought": [5, 6], "down": [5, 6], "velleman": [5, 6], "wpm404": [5, 6], "potentiomet": [5, 6], "download": [5, 6, 7, 8], "scienc": [5, 6], "framework": [5, 6], "manuscript": [5, 6], "osf": [5, 6], "io": [5, 6], "dzwb4": [5, 6], "gitlab": [5, 6, 7, 8], "irstea": [5, 6], "unzip": [5, 6], "master": [5, 6], "readm": [5, 6], "assist": [5, 6], "disconnect": [5, 6], "handl": [5, 6, 7, 8], "charg": [5, 6], "full": [5, 6], "capac": [5, 6], "fewer": [5, 6], "bank": [5, 6], "2a": [5, 6], "ll": [5, 6], "insid": [5, 6], "abmn": [5, 6, 7, 8], "quadrupol": [5, 6, 7, 8], "numer": [5, 6], "some": [5, 6, 7, 8, 10, 11], "main": [5, 6, 7, 8], "optim": [5, 6], "attribut": [5, 6], "stack": [5, 6, 7, 8], "the9": [5, 6], "hear": [5, 6], "characterist": [5, 6], "sound": [5, 6], "permut": [5, 6], "csv": [5, 6], "nb_electrod": [5, 6, 7, 8], "maximum": [5, 6, 7, 8], "injection_dur": [5, 6, 7, 8], "nbr_mea": [5, 6, 7, 8], "sequenc": [5, 6, 7, 8], "sequence_delai": [5, 6, 7, 8], "delai": [5, 6], "repetit": [5, 6], "evolv": [5, 6], "littl": [5, 6], "public": [5, 6], "articl": [5, 6], "date": [5, 6, 11], "sainsmart": [5, 6], "canal": 5, "pour": 5, "arduino": 5, "dsp": 5, "avr": 5, "pic": 5, "arm": 5, "99": [5, 6], "199": [5, 6], "sain": [5, 6], "smart": [5, 6], "101": [5, 6], "70": [5, 6], "103": [5, 6], "018": [5, 6], "1x1": [5, 6], "66": [5, 6], "1568649": [5, 6], "1x0": [5, 6], "71": [5, 6], "1565235": [5, 6], "68": [5, 6], "rs": [5, 6], "pro": [5, 6], "897": [5, 6], "1332": [5, 6], "858": [5, 6], "627": [5, 6], "52": [5, 6], "upw50b50rv": [5, 6], "1083": [5, 6], "7ah": [5, 6], "537": [5, 6], "5488": [5, 6], "lr20": [5, 6], "9v": [5, 6], "185": [5, 6], "4686": [5, 6], "ferrul": [5, 6], "500": [5, 6], "piec": [5, 6], "weidmul": [5, 6], "9004330000": [5, 6], "966067": [5, 6], "car": 5, "littelfus": [5, 6], "fhac0002zxj": 5, "96": 5, "improv": [6, 7, 8, 10], "upgrad": [6, 7, 8], "01": [6, 7, 8, 11], "replac": [6, 10], "trn3": 6, "suppress": 6, "10v": 6, "fast": 6, "decoupl": 6, "last": 6, "veri": [6, 10], "prevent": 6, "overh": 6, "toler": 6, "orient": 6, "h": 6, "nf": 6, "tabl": 6, "jason": 6, "ohmpi_param": 6, "json": [6, 7, 8], "export_path": 6, "desktop": 6, "0251001": 6, "pat1l": 6, "box": [7, 8], "mani": [7, 8], "dii": [7, 8], "laps": [7, 8], "seek": [7, 8], "share": [7, 8, 10], "wish": [7, 8], "2023": [7, 8, 11], "stop": [7, 8], "0x": [7, 8], "effort": [7, 8], "paramet": [7, 8], "80": [7, 8], "virtual": [7, 8], "environ": [7, 8], "packag": [7, 8], "id": [7, 8], "summar": [7, 8], "cover": [7, 8], "acquisit": [7, 8], "separ": [7, 8], "ohmpi_set": [7, 8], "central": [7, 8], "class": [7, 8, 10], "interact": [7, 8, 10], "handler": [7, 8], "layer": [7, 8], "releas": [7, 8, 11], "excel": [7, 8], "log": [7, 8], "implement": [7, 8, 10, 11], "broker": [7, 8], "zip": [7, 8], "rotat": [7, 8], "disk": [7, 8], "exec_logg": [7, 8], "data_logg": [7, 8], "plan": [7, 8], "state": [7, 8], "health": [7, 8], "soh": [7, 8], "futur": [7, 8], "By": [7, 8], "written": [7, 8], "consol": [7, 8], "like": [7, 8], "store": [7, 8, 10], "local": [7, 8], "dai": [7, 8], "size": [7, 8], "exce": [7, 8], "sent": [7, 8], "level": [7, 8], "advanc": [7, 8], "edit": [7, 8], "setup_logg": [7, 8], "custom": [7, 8], "desir": [7, 8], "usernam": [7, 8], "password": [7, 8], "One": [7, 8], "understand": [7, 8], "alter": [7, 8], "keep": [7, 8], "bash": [7, 8], "run_http_interfac": [7, 8], "sh": [7, 8], "api": [7, 8, 11], "import": [7, 8, 10], "iot": [7, 8], "messag": [7, 8], "friendli": [7, 8], "graphic": [7, 8], "quick": [7, 8], "easi": [7, 8], "wi": [7, 8], "fi": [7, 8], "ap": [7, 8], "webserv": [7, 8], "index": [7, 8], "html": [7, 8], "laptop": [7, 8], "mobil": [7, 8], "phone": [7, 8], "upload": [7, 8], "act": [7, 8], "raspap": [7, 8], "runonstart": [7, 8], "itself": [7, 8], "141": [7, 8], "8080": [7, 8], "pseudo": [7, 8], "evolut": [7, 8], "appar": [7, 8], "especi": [7, 8], "suit": [7, 8], "autom": [7, 8], "ipython": [7, 8], "ssh": [7, 8], "putti": [7, 8], "maco": [7, 8], "linux": [7, 8], "found": [7, 8], "np": [7, 8], "chdir": [7, 8], "object": [7, 8], "k": [7, 8], "load": [7, 8], "nb_stack": [7, 8], "half": [7, 8], "cycl": [7, 8], "updat": [7, 8], "update_set": [7, 8], "shape": [7, 8], "set_sequ": [7, 8], "n2": [7, 8], "string": [7, 8], "load_sequ": [7, 8], "rs_check": [7, 8], "synchron": [7, 8], "wait": [7, 8], "prompt": [7, 8], "run_sequ": [7, 8], "run_sequence_async": [7, 8], "thread": [7, 8], "immedi": [7, 8], "sleep": [7, 8], "interrupt": [7, 8], "kill": [7, 8], "asynchron": [7, 8], "given": [7, 8], "interv": [7, 8], "nb_mea": [7, 8], "run_multiple_sequ": [7, 8], "taken": [7, 8], "switch_mux_on": [7, 8], "run_measur": [7, 8], "switch_mux_off": [7, 8], "risk": [7, 8], "short": [7, 8], "argument": [7, 8], "autogain": [7, 8], "true": [7, 8], "good": [7, 8], "usag": [7, 8], "process": [7, 8], "sensor": [7, 8], "scope": [7, 8], "internet": [7, 8], "network": [7, 8], "auxiliari": [7, 8], "subscrib": [7, 8], "approach": [7, 8], "mosquitto": [7, 8], "server": [7, 8], "reachabl": [7, 8], "net": [7, 8], "servic": [7, 8], "install_local_mqtt_brok": [7, 8], "examin": [7, 8], "easili": [7, 8, 10], "parti": [7, 8], "explor": [7, 8], "receiv": [7, 8], "reboot": [7, 8], "further": [7, 8], "format": [7, 8], "kwarg": [7, 8], "cmd_id": [7, 8], "3fzxv121uitwgjwygcz4xw": [7, 8], "cmd": [7, 8], "3fzxv121uitwgjwygcz4yw": [7, 8], "tailor": [7, 8], "dashboard": [7, 8], "browser": [7, 8], "node": [7, 8], "complex": [7, 8], "properli": [7, 8], "palett": [7, 8], "noder": [7, 8], "doc": [7, 8], "guid": [7, 8], "ui": [7, 8], "visual": [7, 8], "cookbook": [7, 8], "draft": 10, "TO": 10, "BE": 10, "review": 10, "intend": 10, "advic": 10, "best": 10, "contribut": 10, "maintain": 10, "promot": 10, "exchang": 10, "reus": 10, "contributor": 10, "ideal": 10, "few": 10, "distinguish": 10, "deal": 10, "compli": 10, "Such": 10, "focu": 10, "reduc": 10, "newli": 10, "expos": 10, "minim": 10, "hardware_system": 10, "discuss": 10, "ohmpi_hardwar": 10, "initi": 10, "earli": 10, "stage": 10, "investig": 10, "strategi": 10, "readi": 10, "conceiv": 10, "kicad": 10, "schema": 10, "alwai": 10, "branch": 10, "python": 10, "similar": 10, "hardware_compon": 10, "abstract": 10, "abstract_hardware_compon": 10, "method": 10, "configur": [10, 11], "hardware_config": 10, "dictionari": 10, "config_xxx": 10, "xxx": 10, "nov": 11, "juli": 11, "2016": 11, "target": 11, "research": 11, "statu": 11, "matur": 11, "progress": 11, "offici": 11, "guidelin": 11, "tutori": 11, "content": 11, "partner": 11, "cite": 11, "introduct": 11, "technic": 11, "v2023": 11, "tow": 2}, "objects": {"": [[9, 0, 0, "-", "ohmpi"]]}, "objtypes": {"0": "py:module"}, "objnames": {"0": ["py", "module", "Python module"]}, "titleterms": {"ohmpi": [0, 4, 5, 6, 7, 8, 11], "project": 0, "author": 0, "partner": 0, "cite": 0, "introduct": 0, "step": [1, 2, 3, 4, 7, 8], "n": [1, 2, 3, 4], "1": [1, 5, 6], "raspberri": [1, 5, 6], "pi": [1, 5, 6], "configur": [1, 5, 6, 7, 8], "part": [1, 2, 3], "A": [1, 2, 3], "os": [1, 5, 6], "instal": [1, 5, 6], "b": [1, 2, 3, 5, 6], "virtual": [1, 5, 6], "environ": [1, 5, 6], "packag": [1, 5, 6], "c": [1, 2, 3], "activ": [1, 5, 6], "thonni": [1, 5, 6], "python": [1, 5, 6, 7, 8], "id": [1, 5, 6], "2": 2, "measur": [2, 5, 6], "board": [2, 3, 5, 6], "assembl": [2, 3, 4, 5, 6], "requir": [2, 3], "compon": [2, 3, 5, 6, 10], "list": [2, 3, 5, 6], "descript": [2, 5, 6], "start": 2, "up": 2, "check": 2, "3": 3, "mux": 3, "address": 3, "valid": 3, "4": 4, "v": [5, 6], "01": 5, "limit": [5, 6], "32": [5, 6], "electrod": [5, 6, 7, 8], "The": [5, 6, 7, 8], "philosophi": [5, 6, 7, 8], "technic": [5, 6], "data": [5, 6], "current": [5, 6], "inject": [5, 6], "card": [5, 6], "connect": [5, 6], "electr": [5, 6], "resist": [5, 6, 11], "implement": [5, 6], "first": [5, 6], "four": [5, 6], "multiplex": [5, 6], "oper": [5, 6, 7, 8], "instruct": [5, 6], "preliminari": [5, 6], "procedur": [5, 6], "onli": [5, 6], "initi": [5, 6], "startup": [5, 6], "paramet": [5, 6], "complet": [5, 6], "tabl": 5, "titl": 5, "02": 6, "v2023": [7, 8], "64": [7, 8], "12v": [7, 8], "hardwar": [7, 8, 10, 11], "specif": [7, 8], "build": [7, 8], "an": [7, 8], "softwar": [7, 8, 10], "system": [7, 8], "architectur": [7, 8], "logger": [7, 8], "file": [7, 8], "interfac": [7, 8, 10], "applic": [7, 8], "web": [7, 8], "mqtt": [7, 8], "api": 9, "refer": 9, "new": 10, "open": 11, "sourc": 11, "meter": 11, "summari": 11, "document": 11, "center": 11}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}})
\ No newline at end of file
+Search.setIndex({"docnames": ["developing_hardware_components", "index", "source_rst/Ohmpi", "source_rst/V2023.x.x/V2023", "source_rst/V2023.x.x/V2023_step_01", "source_rst/V2023.x.x/V2023_step_02", "source_rst/V2023.x.x/V2023_step_03", "source_rst/V2023.x.x/V2023_step_04", "source_rst/V2024.x.x/V2024", "source_rst/api", "source_rst/v1.xx/V1_01", "source_rst/v1.xx/V1_02"], "filenames": ["developing_hardware_components.rst", "index.rst", "source_rst\\Ohmpi.rst", "source_rst\\V2023.x.x\\V2023.rst", "source_rst\\V2023.x.x\\V2023_step_01.rst", "source_rst\\V2023.x.x\\V2023_step_02.rst", "source_rst\\V2023.x.x\\V2023_step_03.rst", "source_rst\\V2023.x.x\\V2023_step_04.rst", "source_rst\\V2024.x.x\\V2024.rst", "source_rst\\api.rst", "source_rst\\v1.xx\\V1_01.rst", "source_rst\\v1.xx\\V1_02.rst"], "titles": ["Software interface to new hardware components", "OHMPI: Open source and open hardware resistivity-meter", "OhmPi project", "OhmPi V2023 (64 electrodes and 12V)", "<strong>STEP n\u00b01</strong> : Raspberry Pi  configuration", "<strong>STEP n\u00b02</strong>: Measurement board", "<strong>STEP n\u00b03:</strong> MUX board", "<strong>STEP n\u00b04:</strong> assemble the OhmPi", "OhmPi V2023 (64 electrodes and 12V)", "API reference", "OhmPi V 1.01 (limited to 32 electrodes)", "OhmPi V 1.02 (limited to 32 electrodes)"], "terms": {"r\u00e9mi": [1, 2], "clement": [1, 2], "vivien": [1, 2], "duboi": [1, 2], "nicola": [1, 2], "forquet": [1, 2], "inra": 2, "reversa": [2, 10, 11], "villeurbann": 2, "franc": 2, "yannick": [1, 2], "fargier": [1, 2], "ger": 2, "rro": 2, "univ": 2, "gustav": 2, "eiffel": 2, "ifsttar": 2, "lyon": 2, "h\u00e9l\u00e8ne": [1, 2], "guyard": [1, 2], "ig": 2, "grenobl": 2, "universit\u00e9": 2, "alp": 2, "olivi": [1, 2], "kaufmann": [1, 2], "arnaud": [1, 2], "watlet": [1, 2], "de": 2, "mon": 2, "belgium": 2, "guillaum": [1, 2], "blanchi": [1, 2], "ilvo": 2, "merelbek": 2, "julien": 2, "ganc": 2, "emil": 2, "gro": 2, "et": [2, 5], "al": 2, "an": [0, 2, 4, 5, 6, 7, 10, 11], "open": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "sourc": [0, 2, 4, 10, 11], "data": [1, 2, 3, 8], "logger": [2, 10, 11], "dedic": [2, 3, 8], "applic": [0, 2], "electr": [2, 5], "resist": [2, 3, 5, 8], "imag": [2, 4], "small": [2, 3, 5, 7, 8, 10, 11], "laboratori": [2, 3, 7, 8, 10, 11], "scale": 2, "hardwarex": 2, "elsevi": 2, "2020": 2, "8": [2, 3, 4, 5, 6, 7, 8, 10, 11], "24": [2, 5, 7, 10, 11], "p": [2, 5], "ff10": 2, "1016": 2, "j": 2, "ohx": 2, "e00122ff": 2, "particip": [2, 3, 4, 5, 6, 7, 8, 10, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "requir": [0, 2, 3, 4, 7, 8, 10, 11], "skill": [2, 3, 4, 5, 6, 7, 8, 10, 11], "electron": [2, 3, 4, 5, 6, 7, 8, 10, 11], "respect": [2, 3, 4, 5, 6, 7, 8, 10, 11], "safeti": [2, 3, 4, 5, 6, 7, 8, 10, 11], "rule": [2, 3, 4, 5, 6, 7, 8, 10, 11], "must": [2, 3, 4, 5, 6, 7, 8, 10, 11], "assembl": [1, 2, 3, 4, 8], "profession": [2, 3, 4, 5, 6, 7, 8, 10, 11], "context": [2, 3, 4, 5, 6, 7, 8, 10, 11], "peopl": [2, 3, 4, 5, 6, 7, 8, 10, 11], "compet": [2, 3, 4, 5, 6, 7, 8, 10, 11], "The": [0, 1, 2, 4, 5, 6, 7], "team": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "cannot": [2, 3, 4, 5, 6, 7, 8, 10, 11], "held": [2, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [2, 3, 4, 5, 6, 7, 8, 10, 11], "ani": [2, 3, 4, 5, 6, 7, 8, 10, 11], "materi": [2, 3, 4, 5, 6, 7, 8, 10, 11], "human": [2, 3, 4, 5, 6, 7, 8, 10, 11], "damag": [2, 3, 4, 5, 6, 7, 8, 10, 11], "which": [2, 3, 4, 5, 6, 7, 8, 10, 11], "would": [2, 3, 4, 5, 6, 7, 8, 10, 11], "associ": [2, 3, 4, 5, 6, 7, 8, 10, 11], "us": [2, 3, 4, 5, 6, 7, 8, 10, 11], "equip": [2, 3, 4, 5, 6, 7, 8, 10, 11], "doe": [2, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "after": [2, 3, 4, 5, 6, 7, 8, 10, 11], "you": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "mai": [2, 3, 4, 8, 10, 11], "redistribut": 2, "modifi": [0, 2, 10, 11], "thi": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "document": [2, 3, 8, 10], "make": [0, 2, 3, 6, 8, 10, 11], "product": [2, 5], "under": [2, 7, 10, 11], "term": [0, 2], "cern": 2, "ohl": 2, "v2": 2, "http": [3, 4, 5, 8, 10, 11], "ch": [], "distribut": 2, "without": [2, 6, 10, 11], "express": [0, 2], "OR": 2, "impli": [2, 6], "warranti": 2, "includ": [0, 2, 3, 4, 6, 8, 10, 11], "OF": 2, "merchant": 2, "satisfactori": 2, "qualiti": 2, "AND": 2, "fit": 2, "FOR": 2, "A": [0, 2, 3, 7, 8, 10, 11], "particular": 2, "purpos": [2, 7, 10, 11], "pleas": [2, 3, 7, 8, 10, 11], "see": [2, 3, 8, 10, 11], "condit": 2, "present": [0, 2, 6, 7, 10, 11], "develop": [0, 1, 2, 3, 4, 5, 8, 10, 11], "low": [2, 3, 8, 10, 11], "cost": [0, 2, 5, 11], "hardwar": [2, 10, 11], "meter": [2, 3, 7, 8, 10, 11], "provid": [2, 3, 8, 10, 11], "scientif": 2, "commun": [2, 3, 8], "robust": [2, 3, 8, 10, 11], "flexibl": 2, "tool": [2, 3, 8], "experi": [2, 3, 8, 10, 11], "call": [2, 3, 4, 6, 7, 8], "basic": [0, 2], "meterfeatur": 2, "current": [1, 2, 3, 5, 8], "inject": [1, 2, 3, 8], "measur": [1, 2, 3, 4, 6, 7, 8], "function": [0, 2, 3, 8, 10, 11], "multiplex": [1, 2, 3, 6, 7, 8], "allow": [2, 3, 5, 6, 8, 10, 11], "perform": [0, 2, 4, 10, 11], "automat": [2, 3, 8, 10, 11], "up": [2, 3, 4, 6, 8, 10, 11], "64": [1, 2, 6, 10, 11], "electrod": [1, 2, 5, 6, 7], "s": [2, 3, 5, 6, 8, 10, 11], "philosophi": [1, 2], "fulli": 2, "toolto": 2, "surfac": 2, "anyon": 2, "who": 2, "want": [2, 11], "get": [2, 3, 4, 5, 8, 10, 11], "involv": [2, 3, 8], "welcom": [0, 2], "join": 2, "ohmpi": [0, 4, 5, 6], "project": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "compon": [1, 3, 4, 8], "quantiti": 4, "4": [3, 4, 5, 6, 8, 10, 11], "model": [4, 5, 10, 11], "micro": [3, 4, 8, 10, 11], "sd": [3, 4, 7, 8, 10, 11], "32": [1, 3, 4, 7, 8], "go": [3, 4, 6, 8], "hdmi": [4, 7], "cabl": [4, 5, 6, 7, 10, 11], "comput": [4, 10, 11], "mous": [4, 7, 10, 11], "keyboard": [4, 7, 10, 11], "first": [0, 3, 4, 6, 7, 8], "start": [0, 1, 3, 4, 6, 8, 10, 11], "board": [0, 3, 4, 7, 8], "oper": [0, 1, 4, 5, 7], "system": [0, 4, 10, 11], "For": [3, 4, 5, 6, 8, 10, 11], "instruct": [1, 3, 4, 8], "ar": [0, 3, 4, 5, 8, 10, 11], "well": [3, 4, 8, 10, 11], "describ": [0, 4, 5, 7, 10, 11], "websit": [4, 10, 11], "watch": [4, 10, 11], "video": [4, 10, 11], "how": [4, 10, 11], "set": [3, 4, 5, 8, 10, 11], "your": [0, 4, 5, 6, 10, 11], "author": [1, 4, 10, 11], "recommend": [0, 3, 4, 8, 10, 11], "latest": [4, 10, 11], "stabl": [4, 10, 11], "complet": [1, 3, 4, 5, 8], "version": [0, 3, 4, 5, 8, 10, 11], "previous": [4, 7, 10, 11], "raspbian": [4, 10, 11], "can": [3, 4, 7, 8, 10, 11], "visit": 4, "raspberrypi": 4, "org": [3, 4, 8], "en": 4, "test": [0, 3, 4, 5, 6, 8, 10, 11], "were": [4, 5, 10, 11], "3": [0, 3, 4, 5, 7, 8, 10, 11], "we": [3, 4, 5, 6, 8, 10, 11], "follow": [0, 3, 4, 5, 6, 7, 8, 10, 11], "onc": [3, 4, 8, 10, 11], "ha": [3, 4, 6, 8, 10, 11], "been": [3, 4, 6, 8, 10, 11], "wire": [4, 6, 7, 10, 11], "spi": [4, 10, 11], "gpio": [4, 6, 10, 11], "remot": [3, 4, 8, 10, 11], "option": [3, 4, 8, 10, 11], "deactiv": [4, 10, 11], "i2c": [4, 5, 6], "via": [4, 10, 11], "gui": [4, 10, 11], "menu": [4, 10, 11], "failur": [4, 10, 11], "carri": [4, 10, 11], "out": [4, 7, 10, 11], "task": [4, 10, 11], "caus": [4, 10, 11], "relai": [4, 5, 6, 10, 11], "shield": [4, 10, 11], "card": [1, 3, 4, 6, 7, 8], "dure": [4, 10, 11], "wai": [0, 4, 10, 11], "have": [0, 3, 4, 5, 6, 8, 10, 11], "multipl": [3, 4, 8], "parallel": 4, "instanc": 4, "interpret": [4, 5, 10, 11], "each": [4, 6, 7, 10, 11], "differ": [3, 4, 5, 6, 7, 8, 10, 11], "contain": [3, 4, 7, 8, 10, 11], "discret": 4, "copi": [0, 3, 4, 8], "its": [3, 4, 6, 7, 8, 10, 11], "support": 4, "util": [3, 4, 8], "It": [0, 3, 4, 6, 8, 10, 11], "also": [0, 3, 4, 8, 10, 11], "protect": 4, "case": [0, 3, 4, 8, 10, 11], "problem": 4, "depend": [3, 4, 8, 10, 11], "specifi": [4, 10, 11], "txt": [3, 4, 8, 10, 11], "below": [3, 4, 7, 8, 10, 11], "should": [0, 3, 4, 5, 6, 7, 8, 10, 11], "type": [0, 3, 4, 6, 8, 10, 11], "termin": [3, 4, 5, 6, 7, 8, 10, 11], "necessari": [0, 4, 6, 7, 10, 11], "ensur": [4, 10, 11], "libatla": [4, 10, 11], "base": [0, 3, 4, 6, 8, 10, 11], "dev": [4, 10, 11], "librari": [4, 10, 11], "sudo": [4, 10, 11], "apt": [4, 10, 11], "strongli": [4, 10, 11], "user": [1, 3, 4, 8, 10, 11], "creat": [0, 3, 4, 8, 10, 11], "run": [3, 4, 5, 6, 7, 8, 10, 11], "code": [0, 4, 6, 10, 11], "done": [3, 4, 8, 10, 11], "either": [4, 10, 11], "directori": [0, 3, 4, 8, 10, 11], "gather": [4, 10, 11], "within": [0, 3, 4, 8, 10, 11], "python3": [4, 10, 11], "m": [4, 5, 6, 7, 10, 11], "venv": [4, 10, 11], "command": [3, 4, 8, 10, 11], "bin": [4, 10, 11], "suffici": [4, 10, 11], "meet": [4, 10, 11], "export": 4, "cflag": 4, "fcommon": 4, "pip": [4, 10, 11], "rpi": [4, 7, 10, 11], "adafruit": [4, 5, 6, 10, 11], "blinka": [4, 10, 11], "numpi": [3, 4, 8, 10, 11], "panda": [4, 10, 11], "circuitpython": [4, 10, 11], "ads1x15": [4, 10, 11], "tca9548a": [4, 6], "mcp230xx": 4, "gpiozero": 4, "check": [3, 4, 8, 10, 11], "met": [4, 10, 11], "list": [1, 4], "leav": [4, 10, 11], "simpli": [4, 10, 11], "If": [0, 4, 5, 10, 11], "decid": [4, 10, 11], "setup": [4, 10, 11], "time": [3, 4, 6, 8, 10, 11], "softwar": [1, 4, 10, 11], "click": [4, 10, 11], "access": [3, 4, 7, 8, 10, 11], "program": [4, 7, 10, 11], "pythonid": [4, 10, 11], "2": [0, 3, 4, 6, 7, 8, 10, 11], "root": [4, 10, 11], "7": [4, 5, 6, 7, 10, 11], "usr": [4, 10, 11], "select": [4, 6, 10, 11], "new": [3, 4, 8, 10, 11], "window": [3, 4, 8, 10, 11], "On": [4, 10, 11], "altern": [4, 10, 11], "5": [3, 4, 5, 6, 7, 8, 10, 11], "button": [4, 10, 11], "appear": [4, 5, 6, 10, 11], "locat": [4, 10, 11], "anoth": [4, 10, 11], "execut": [3, 4, 8, 10, 11], "6": [4, 5, 6, 7, 10, 11], "find": [4, 10, 11], "folder": [4, 10, 11], "where": [0, 3, 4, 8, 10, 11], "file": [0, 4, 5, 10, 11], "home": [3, 4, 8, 10, 11], "In": [0, 3, 4, 5, 6, 8, 10, 11], "known": [4, 10, 11], "tab": [3, 4, 8, 10, 11], "path": [0, 4, 10, 11], "close": [4, 10, 11], "ok": [4, 10, 11], "9": [3, 4, 5, 6, 7, 8, 10, 11], "save": [4, 10, 11], "modif": [4, 10, 11], "number": [3, 5, 8, 10, 11], "per": [5, 10, 11], "unit": [3, 5, 8, 10, 11], "total": [5, 10, 11], "manufactur": [5, 6], "refer": [1, 3, 5, 7, 8, 10, 11], "web": 5, "raspberri": [1, 3, 5, 6, 7, 8], "pi": [1, 3, 5, 7, 8], "1": [0, 1, 3, 5, 6, 7, 8], "58": 5, "75": 5, "www": [5, 10, 11], "mouser": 5, "fr": [5, 10, 11], "productdetail": 5, "seeed": 5, "studio": 5, "102110421": 5, "qs": 5, "7mvldsj5uaxen3lyyh3sqw": 5, "3d": 5, "lm158n": 5, "amp": 5, "o": [3, 5, 8, 10, 11], "14": [5, 6, 7], "texa": 5, "instrument": [3, 5, 8], "lm358an": 5, "nopb": 5, "lm158j": 5, "x1j7hmvl2zh8vpefml8": 5, "2ffq": 5, "print": [3, 5, 8, 10, 11], "circuit": [3, 5, 8, 10, 11], "12": [3, 5, 6, 7, 8, 10, 11], "asler": 5, "ads1115": [5, 10, 11], "11": [5, 10, 11], "23": [5, 7, 10, 11], "1085": 5, "2fha2pyfaduh": 5, "2fogzutwiq9iz5vjaqfoyugqalgxpeckigrqvf4hn": 5, "252bg": 5, "capacitor": [5, 11], "100nf": [5, 11], "50vdc": [5, 11], "10": [3, 5, 6, 7, 8, 10, 11], "ceram": [5, 11], "0": [3, 5, 8, 10, 11], "kemet": 5, "c320c104k1": 5, "c320c104k1r5ta7303": 5, "c4uyot": 5, "2flq1th4mcyoetma": 5, "resistor": [5, 6, 10, 11], "kohm": [5, 6, 10, 11], "5w": 5, "te": 5, "connect": [1, 3, 5, 6, 7, 8], "h81k0bya": 5, "holsworthi": 5, "2fha2pyfaduhuylh7az": 5, "2fmjfh2xjoums6wztux4som": 5, "252bii": 5, "h81k5bya": 5, "2fha2pyfadugy9twham3ru9hmijohywhbin95knm": 5, "252bx": 5, "2fm": 5, "vishai": 5, "ccf071k50gke36": 5, "dale": 5, "qkeozdl6eqpa6lzrlqfvow": 5, "mohm": [3, 5, 8, 10, 11], "762": 5, "524": 5, "cmf651m0000fkek143": 5, "ciayqk2gdckzia2levalkg": 5, "ohm": [3, 5, 8, 10, 11], "shunt": 5, "42": 5, "ohmit": 5, "41f2r0e": 5, "im6toxqzgoauedprb19mha": 5, "dual": [5, 6, 10, 11], "screw": [5, 6, 7, 10, 11], "08": 5, "mm": [5, 7, 10, 11], "pitch": [5, 10, 11], "648": 5, "cui": 5, "devic": [0, 5], "tb009": 5, "508": 5, "02be": 5, "vlwxofp3u2wcfk5uckwtka": 5, "dc": [5, 10, 11], "convert": [5, 10, 11], "24v": 5, "15": [5, 7, 10, 11], "31": [5, 7], "16": [5, 6, 7, 10, 11], "tracopow": 5, "trn": 5, "1215": [5, 11], "traco": [5, 11], "power": [3, 5, 6, 7, 8, 10, 11], "yca": 5, "2faaymw02gquicgqj0ta": 5, "dip": [5, 6], "line": [5, 6, 10, 11], "socket": [5, 6], "72": 5, "mill": 5, "max": 5, "110": 5, "43": [5, 10, 11], "308": 5, "41": 5, "001000": 5, "iggadovctstu": 5, "2fqaur8narg": 5, "mgh": 5, "vip": 5, "gclid": 5, "eaiaiqobchmin_taxbcx8wivq5nvch2qaqfpeayyccabegjk1_d_bw": 5, "aqy211eh": 5, "84": 5, "36": [5, 7, 10, 11], "panason": 5, "industri": 5, "wktuvitrialgiu8hcm7dvq": 5, "449": 5, "796": 5, "preci": 5, "83": 5, "304": 5, "001101": 5, "2fha2pyfadujqkqx4wauig": 5, "2fmgndxmcnv": 5, "2f33nj0gbxroculucynpyong": 5, "mcp23008": 5, "593": 5, "sgaepimzzmskedp9slc0yyv4kpdpmd1hts4slctivmw": 5, "header": [5, 6, 10, 11], "1x10": 5, "samtec": 5, "ssw": 5, "02": [1, 5], "g": [5, 10, 11], "ru5fayqh": 5, "252be0w1orxzibqpw": 5, "smt": 5, "breakout": 5, "pcb": [0, 5, 6, 10, 11], "soic": 5, "1212": 5, "gurawfaegucaqqfvnvtyeg": 5, "eaiaiqobchmit8zjzr6x8wivgdnvch2vbwvseaqyayabegjqg_d_bw": 5, "ina282aid": 5, "ze4": 5, "2fufuz19ilfayzxocfra": 5, "thd": 5, "1211n": 5, "39": [5, 7, 10, 11], "2fha2pyfadugpyeg4idvm": 5, "2fmsr": 5, "252b7an": 5, "2f0t3ruis9pcaqjlt4": 5, "252bnrpuooeq": 5, "20": [5, 7, 10, 11], "53": 5, "ssq": 5, "120": 5, "d": [5, 10, 11], "252be1bmvd": 5, "252bdzonqg": 5, "pin": [5, 6, 10, 11], "strip": [5, 6, 7, 10, 11], "ejector": 5, "35": [5, 7], "blk": 5, "10120550": 5, "conrad": 5, "com": [3, 5, 8, 10, 11], "bkl": 5, "contact": [3, 5, 6, 8, 10, 11], "space": 5, "254": 5, "row": 5, "pc": 5, "741435": 5, "searchterm": 5, "searchtyp": 5, "suggest": [5, 6, 10, 11], "searchsuggest": 5, "male": [5, 6], "femal": [5, 10, 11], "spacer": [5, 7], "5m": [5, 7], "hexagonal": 5, "87": 5, "48": 5, "harwin": 5, "r25": 5, "3002002": 5, "w0yvoo0ixfenuv0hsdc4": 5, "2fq": 5, "86": 5, "437": 5, "1108331841001101": 5, "318": 5, "ftmup6kvi2tnqoeziaq": 5, "2fpa": 5, "figur": [3, 5, 8, 10, 11], "show": [5, 10, 11], "gener": [1, 3, 5, 6, 8, 10, 11], "schemat": [5, 10, 11], "plug": [5, 10, 11], "plai": 5, "To": [3, 5, 6, 8, 10, 11], "two": [0, 3, 5, 6, 8, 10, 11], "one": [3, 5, 7, 8, 10, 11], "voltag": [3, 5, 7, 8, 10, 11], "propos": [5, 10, 11], "florsch": [5, 10, 11], "bit": [5, 10, 11], "adc": [5, 10, 11], "analog": [5, 10, 11], "digit": [5, 6, 10, 11], "adapt": [0, 3, 5, 8, 10, 11], "gain": [3, 5, 8, 10, 11], "advantag": 5, "input": [3, 5, 7, 8, 10, 11], "signal": [5, 10, 11], "valu": [5, 6, 10, 11], "could": [5, 7, 10, 11], "lie": [5, 10, 11], "between": [5, 6, 7, 10, 11], "114": [5, 10, 11], "v": [1, 3, 5, 7, 8], "directli": [5, 10, 11], "integr": 5, "ina282": 5, "realiz": 5, "precis": [5, 10, 11], "around": [3, 5, 8], "instal": [3, 5, 6, 7, 8], "solder": [5, 10, 11], "optic": 5, "suppli": [5, 6, 7, 10, 11], "12v": [1, 5, 6, 7, 11], "5v": [5, 10, 11], "tdh15": 5, "four": [3, 5, 8], "inpout": 5, "output": [3, 5, 7, 8, 10, 11], "three": [3, 5, 6, 8, 10, 11], "limit": [1, 3, 5, 8], "ma": [3, 5, 8, 10, 11], "higher": [5, 11], "than": [5, 10, 11], "just": [5, 11], "decreas": 5, "don": [3, 5, 8], "t": [3, 5, 8], "forget": [3, 5, 8], "chang": [0, 3, 5, 8], "config": [0, 3, 5, 8, 10, 11], "py": [0, 3, 5, 6, 8, 10, 11], "kei": 5, "r_shunt": 5, "ohmpi_config": 5, "dict": 5, "pre": [5, 7], "adjust": [5, 10, 11], "13": [5, 7, 10, 11], "17": [5, 7, 10, 11], "18": [3, 5, 7, 8, 10, 11], "19": [5, 7, 10, 11], "view": [5, 7], "fix": [5, 7], "dot": 5, "mark": [5, 7], "top": [3, 5, 7, 8], "left": [5, 7], "corner": 5, "21": [5, 7, 10, 11], "mount": [5, 6, 7, 10, 11], "22": [5, 7, 10, 11], "lm158": 5, "amplifi": [5, 10, 11], "ads115": [5, 10, 11], "right": [5, 7], "3x11": [], "wurth": [], "elektronik": [], "971110321": [], "305": [], "apm": [], "hexseal": [], "rm3x8mm": [], "2701": [], "jjse": [], "2f12mkns3vxsdryxuhw": [], "shutdown": 5, "unplug": 5, "bottom": [5, 10, 11], "11mm": 5, "m3": 5, "upper": 5, "port": [5, 7], "write": [0, 3, 5, 6, 8, 10, 11], "i2cdetect": [5, 6], "y": [5, 6], "everyth": 5, "address": [3, 5, 10, 11], "screen": [5, 10, 11], "equival": [5, 10, 11], "need": [3, 5, 6, 8, 10, 11], "1kohm": 5, "r2": [5, 10, 11], "220": 5, "r1": [5, 10, 11], "padboard": 5, "spool": 5, "prepar": [5, 6, 10, 11], "batteri": [3, 5, 7, 8, 10, 11], "red": [3, 5, 7, 8, 10, 11], "black": [5, 7, 10, 11], "ground": [5, 10, 11], "thonni": [3, 5, 8], "sample_measurement_exampl": 5, "exampl": [3, 5, 6, 7, 8, 10, 11], "result": [5, 10, 11], "channel": [6, 10, 11], "mechan": [3, 6, 8, 10, 11], "omron": 6, "g5le": 6, "vd": 6, "vdc": 6, "combin": 6, "zvn4206a": 6, "mofset": 6, "onli": [0, 6], "30": [6, 10, 11], "enough": [6, 10, 11], "activ": [3, 6], "repres": [6, 10, 11], "512": 6, "expand": 6, "mcp23017": 6, "from": [3, 6, 7, 8, 10, 11], "128": [3, 6, 8], "own": 6, "0x70": 6, "0x77": 6, "0x71": 6, "0x72": 6, "0x73": 6, "140": [], "560": [], "62": [], "92": [], "1580994": [], "tru": [], "diod": 6, "1n4007": 6, "256": [], "091": [], "296": [], "incorpor": [3, 8], "sgaepimzzmueqxo7l": [], "2fbpyakboruumren": [], "56": [], "776": [], "205": [], "46": [], "103321": [], "5twgzeq9e7hsylqaljjyrw": [], "i": [3, 7, 8, 10, 11], "40": [3, 8, 10, 11], "732": [], "sgaepimzzmskedp9slc0yfx16nydmpxjueeogolbldi": [], "27": [7, 10, 11], "325": [], "over": [], "503811": [], "mosfet": 6, "nchannel": [], "471": [], "576": [], "vhuuswq2": [], "252bsz9b": [], "2ff6fcxt7g": [], "100k\u03c9": [], "061": [], "616": [], "beyschlag": [], "mba02040c1003frp00": [], "mzrxyrlhvdt9crf7zyf": [], "2f5q": [], "89": [], "2717": [], "sgaepimzzmsyydr3r27av4eqf73yoh": [], "252baqg": [], "252bz3hvktao": [], "10120558": [], "54": [], "No": [], "51": [], "741727": [], "10120862": [], "connector": [6, 7, 10, 11], "strain": [], "relief": [], "44": [], "742063": [], "10120158": [], "ribbon": 7, "x": [10, 11], "mm\u00b2": [10, 11], "multi": [3, 8, 10, 11], "colour": [], "1012015810": [], "127": [], "008": [], "1548658": [], "hex": 7, "25": [3, 7, 8, 10, 11], "79": [], "49": [], "keyston": [], "24300": [], "uwqyq": [], "2f2czwu0ejpozmzc2a": [], "745": [], "846": [], "614": [], "25515": [], "2f2czwuxuhumfr": [], "252bzuq": [], "55": [], "328": [], "uqd7xcvsscnr3hwd6fta8g": [], "100": [3, 6, 8, 10, 11], "duplic": 6, "everi": [3, 6, 8], "build": [6, 10, 11], "therefor": [6, 10, 11], "identifi": 6, "assign": 6, "alloc": 6, "here": [6, 7, 11], "default": [3, 6, 8], "jumper": 6, "note": [6, 7, 10, 11], "name": [0, 3, 6, 8, 10, 11], "zoom": [6, 7], "befor": [3, 6, 7, 8, 10, 11], "them": [3, 6, 8, 10, 11], "definit": 6, "simplifi": 6, "thing": [3, 6, 8], "do": [0, 3, 6, 7, 8], "50": [3, 6, 7, 8, 10, 11], "cm": [6, 7, 10, 11], "long": [6, 7], "flat": 6, "pole": [6, 10, 11], "detect": 6, "script": [0, 3, 6, 8], "test_mux_board": 6, "cut": 7, "compos": 7, "proper": 7, "length": [7, 10, 11], "about": 7, "correspond": [7, 10], "crimp": 7, "idc": 7, "suitabl": [3, 7, 8, 10, 11], "clamp": 7, "pai": [7, 10, 11], "attent": [7, 10, 11], "direct": [3, 7, 8, 10, 11], "unbalanc": 7, "perpendicular": 7, "possibl": [7, 10, 11], "same": [3, 7, 8, 10, 11], "flush": 7, "posit": [7, 10, 11], "abov": [7, 10, 11], "mux": [3, 7, 10, 11], "profil": 7, "color": 7, "yellow": 7, "tin": 7, "end": [7, 10, 11], "shown": [7, 10, 11], "pictur": 7, "ii": 7, "gnd": [7, 10, 11], "nois": 7, "often": 7, "heard": 7, "when": [0, 3, 7, 8, 10, 11], "clip": 7, "place": [0, 7, 10, 11], "second": [3, 7, 8, 10, 11], "b": [3, 7], "help": [0, 3, 7, 8], "previou": [3, 7, 8], "procedur": 7, "repeat": [3, 7, 8, 10, 11], "other": [3, 7, 8, 10, 11], "purpl": 7, "relev": [0, 7], "defin": [0, 3, 7, 8], "third": [3, 7, 8], "fourth": 7, "nylon": 7, "photograph": 7, "more": [3, 7, 8], "detail": [3, 7, 8, 10], "4th": 7, "togeth": [7, 10, 11], "tie": 7, "pvc": 7, "plate": 7, "minimum": 7, "dimens": 7, "200": 7, "150": [3, 7, 8, 10, 11], "drill": 7, "remain": [7, 10, 11], "metal": 7, "tighten": 7, "so": [7, 10, 11], "usb": 7, "hole": [7, 10, 11], "26": [7, 10, 11], "add": [7, 10, 11], "attach": 7, "washer": 7, "nut": 7, "28": [1, 7], "29": 7, "come": 7, "pass": [3, 7, 8], "brown": 7, "blue": [7, 10, 11], "block": [7, 10, 11], "secur": [3, 7, 8], "33": 7, "34": 7, "37": 7, "38": 7, "os": [3, 7, 8], "monitor": [3, 7, 8, 10, 11], "deliv": [7, 10, 11], "12vdc": 7, "enjoi": 7, "publish": [3, 8, 10], "journal": 10, "howev": [0, 10, 11], "correct": [10, 11], "bug": 10, "exist": [0, 10, 11], "explain": 10, "miss": 10, "point": [3, 8, 10, 11], "invit": 10, "v1": [3, 8, 10, 11], "offer": [3, 8, 10, 11], "commerci": [10, 11], "avail": [0, 3, 8, 10, 11], "field": [3, 8, 10, 11], "specif": [0, 10, 11], "temperatur": [3, 8, 10, 11], "c": [3, 8, 10, 11], "consumpt": [3, 8, 10, 11], "cpu": [3, 8, 10, 11], "control": [3, 8, 10, 11], "w": [3, 8, 10, 11], "min": [3, 8, 10, 11], "puls": [3, 8, 10, 11], "durat": [3, 8, 10, 11], "ms": [3, 8, 10, 11], "imped": [3, 8, 10, 11], "storag": [3, 8, 10, 11], "resolut": [3, 8, 10, 11], "o1": [10, 11], "step": [0, 10, 11], "youtub": [10, 11], "wjwzhv1v3pk": [10, 11], "noob": [10, 11], "simpl": [10, 11], "sure": [0, 3, 8, 10, 11], "unexpectedli": [10, 11], "boot": [10, 11], "cd": [10, 11], "gnu": [10, 11], "nano": [10, 11], "editor": [3, 8, 10, 11], "At": [10, 11], "op": [10, 11], "dl": [10, 11], "press": [10, 11], "ctrl": [10, 11], "enter": [10, 11], "escap": [10, 11], "return": [3, 8, 10, 11], "wa": [10, 11], "introduc": [0, 3, 8, 10, 11], "Its": [10, 11], "studi": [10, 11], "hous": [10, 11], "design": [0, 3, 8, 10, 11], "diagram": [10, 11], "displai": [10, 11], "mimic": [10, 11], "behavior": [10, 11], "soil": [10, 11], "subject": [10, 11], "r11": [10, 11], "r10": [10, 11], "r12": [10, 11], "constitut": [10, 11], "thei": [3, 8, 10, 11], "typic": [0, 3, 8, 10, 11], "made": [3, 8, 10, 11], "stainless": [10, 11], "steel": [10, 11], "seri": [10, 11], "part": [0, 3, 10, 11], "r9": [10, 11], "ad": [3, 8, 10, 11], "flow": [3, 8, 10, 11], "order": [0, 3, 8, 10, 11], "less": [10, 11], "sum": [10, 11], "inde": [10, 11], "000": [10, 11], "intens": [10, 11], "potenti": [10, 11], "calcul": [10, 11], "insert": [10, 11], "1115": [10, 11], "our": [3, 8, 10, 11], "a1": [10, 11], "a0": [10, 11], "increas": [10, 11], "track": [0, 10, 11], "divid": [10, 11], "bridg": [10, 11], "r5": [10, 11], "r8": [10, 11], "r6": [10, 11], "r7": [10, 11], "accord": [0, 10, 11], "n": [3, 8, 10, 11], "a2": [10, 11], "a3": [10, 11], "obtain": [10, 11], "ly": [10, 11], "rang": [0, 10, 11], "let": [10, 11], "equal": [10, 11], "multipli": [10, 11], "reduct": [10, 11], "section": [0, 3, 8, 10, 11], "despit": [10, 11], "high": [10, 11], "e": [3, 8, 10, 11], "accur": [10, 11], "still": [10, 11], "calibr": [10, 11], "voltmet": [10, 11], "variou": [10, 11], "These": [3, 8, 10, 11], "serv": [3, 8, 10, 11], "With": [10, 11], "disturb": [10, 11], "being": [10, 11], "estim": [10, 11], "mega": [10, 11], "shortcut": [10, 11], "excess": [10, 11], "whose": [3, 8, 10, 11], "lithium": [10, 11], "ion": [10, 11], "automobil": [10, 11], "lead": [10, 11], "acid": [10, 11], "strong": [10, 11], "hazard": [10, 11], "fuse": [10, 11], "repositori": [3, 8, 10, 11], "onto": [10, 11], "illustr": [3, 8, 10, 11], "ohmmet": [10, 11], "coeffici": [10, 11], "coef_p0": [10, 11], "coef_p1": [10, 11], "coef_p2": [10, 11], "coef_p3": [10, 11], "coef": [10, 11], "po": [10, 11], "p1": [10, 11], "r3": [10, 11], "r4": [10, 11], "p2": [10, 11], "p3": [10, 11], "r_ref": [10, 11], "slope": [10, 11], "convers": [10, 11], "p0": [10, 11], "accuraci": [10, 11], "both": [0, 10, 11], "addit": [3, 8, 10, 11], "lm358n": [10, 11], "appli": [10, 11], "prefer": [3, 8, 10, 11], "weaker": 10, "stronger": [10, 11], "tx": [10, 11], "rememb": [10, 11], "holder": [10, 11], "f": [10, 11], "consist": [10, 11], "circul": [10, 11], "through": [3, 8, 10, 11], "fig": [10, 11], "modul": [0, 10, 11], "switch": [10, 11], "common": [10, 11], "neg": [10, 11], "normal": [10, 11], "simultan": [10, 11], "role": [10, 11], "revers": [10, 11], "polar": [10, 11], "thu": [10, 11], "energ": [10, 11], "solut": [0, 10, 11], "manag": [3, 8, 10, 11], "next": [10, 11], "featur": [10, 11], "strict": [10, 11], "in1": [10, 11], "in2": [10, 11], "in3": [10, 11], "in4": [10, 11], "5vdc": [10, 11], "5vcc": [10, 11], "now": [10, 11], "mm2": [10, 11], "lastli": [10, 11], "congratul": [10, 11], "construct": [10, 11], "valid": [3, 10, 11], "conduct": [0, 10, 11], "manual": [3, 8, 10, 11], "practic": [0, 10, 11], "ert": [10, 11], "sever": [10, 11], "ten": [10, 11], "thousand": [10, 11], "arrai": [3, 8, 10, 11], "stuck": [10, 11], "enabl": [3, 8, 10, 11], "smaller": [10, 11], "hand": [10, 11], "entir": [3, 8, 10, 11], "cap": [10, 11], "produc": [10, 11], "clean": [10, 11], "distanc": [10, 11], "had": [10, 11], "extra": [10, 11], "As": [10, 11], "final": [10, 11], "actual": [10, 11], "singl": [0, 3, 8, 10, 11], "protocol": [3, 8, 10, 11], "horizont": [10, 11], "vertic": [10, 11], "06": [10, 11], "04": [10, 11], "09": [10, 11], "05": [10, 11], "din": [10, 11], "rail": [10, 11], "chosen": [10, 11], "consequ": [10, 11], "incom": [10, 11], "instead": [10, 11], "moreov": [10, 11], "turn": [10, 11], "bought": [10, 11], "down": [10, 11], "velleman": [10, 11], "wpm404": [10, 11], "potentiomet": [10, 11], "download": [3, 8, 10, 11], "scienc": [10, 11], "framework": [10, 11], "manuscript": [10, 11], "osf": [10, 11], "io": [10, 11], "dzwb4": [10, 11], "gitlab": [3, 8, 10, 11], "irstea": [10, 11], "unzip": [10, 11], "master": [10, 11], "readm": [10, 11], "assist": [10, 11], "disconnect": [10, 11], "handl": [3, 8, 10, 11], "charg": [10, 11], "full": [10, 11], "capac": [10, 11], "fewer": [10, 11], "bank": [10, 11], "2a": [10, 11], "ll": [10, 11], "insid": [10, 11], "abmn": [3, 8, 10, 11], "quadrupol": [3, 8, 10, 11], "numer": [10, 11], "some": [0, 1, 3, 8, 10, 11], "main": [3, 8, 10, 11], "optim": [10, 11], "attribut": [10, 11], "stack": [3, 8, 10, 11], "the9": [10, 11], "hear": [10, 11], "characterist": [10, 11], "sound": [10, 11], "permut": [10, 11], "csv": [10, 11], "nb_electrod": [3, 8, 10, 11], "maximum": [3, 8, 10, 11], "injection_dur": [3, 8, 10, 11], "nbr_mea": [3, 8, 10, 11], "sequenc": [3, 8, 10, 11], "sequence_delai": [3, 8, 10, 11], "delai": [10, 11], "repetit": [10, 11], "evolv": [10, 11], "littl": [10, 11], "public": [10, 11], "articl": [10, 11], "date": [1, 10, 11], "sainsmart": [], "canal": [], "pour": [], "arduino": [], "dsp": [], "avr": [], "pic": [], "arm": [], "99": [], "199": [], "sain": [], "smart": [], "101": [], "70": [], "103": [], "018": [], "1x1": [], "66": [], "1568649": [], "1x0": [], "71": [], "1565235": [], "68": [], "rs": [], "pro": [], "897": [], "1332": [], "858": [], "627": [], "52": [], "upw50b50rv": [], "1083": [], "7ah": [], "537": [], "5488": [], "lr20": [], "9v": [], "185": [], "4686": [], "ferrul": [], "500": [], "piec": [], "weidmul": [], "9004330000": [], "966067": [], "car": [], "littelfus": [], "fhac0002zxj": [], "96": [], "improv": [0, 3, 8, 11], "upgrad": [3, 8, 11], "01": [1, 3, 8, 11], "replac": [0, 11], "trn3": 11, "suppress": 11, "10v": 11, "fast": 11, "decoupl": 11, "last": 11, "veri": [0, 11], "prevent": 11, "overh": 11, "toler": 11, "orient": 11, "h": 11, "nf": 11, "tabl": [10, 11], "jason": 11, "ohmpi_param": 11, "json": [3, 8, 11], "export_path": 11, "desktop": 11, "0251001": [], "pat1l": [], "box": [3, 8], "mani": [3, 8], "dii": [3, 8], "laps": [3, 8], "seek": [3, 8], "share": [0, 3, 8], "wish": [3, 8], "2023": [1, 3, 8], "stop": [3, 8], "0x": [3, 8], "effort": [3, 8], "paramet": [3, 8], "80": [3, 8], "virtual": 3, "environ": 3, "packag": [3, 8], "id": [3, 8], "summar": [3, 8], "cover": [3, 8], "acquisit": [3, 8], "separ": [3, 8], "ohmpi_set": [3, 8], "central": [3, 8], "class": [0, 3, 8], "interact": [0, 3, 8], "handler": [3, 8], "layer": [3, 8], "releas": [1, 3, 8], "excel": [3, 8], "log": [3, 8], "implement": [0, 1, 3, 8], "broker": [3, 8], "zip": [3, 8], "rotat": [3, 8], "disk": [3, 8], "exec_logg": [3, 8], "data_logg": [3, 8], "plan": [3, 8], "state": [3, 8], "health": [3, 8], "soh": [3, 8], "futur": [3, 8], "By": [3, 8], "written": [3, 8], "consol": [3, 8], "like": [3, 8], "store": [0, 3, 8], "local": [3, 8], "dai": [3, 8], "size": [3, 8], "exce": [3, 8], "sent": [3, 8], "level": [3, 8], "advanc": [3, 8], "edit": [3, 8], "setup_logg": [3, 8], "custom": [3, 8], "desir": [3, 8], "usernam": [3, 8], "password": [3, 8], "One": [3, 8], "understand": [3, 8], "alter": [3, 8], "keep": [3, 8], "bash": [3, 8], "run_http_interfac": [3, 8], "sh": [3, 8], "api": [1, 3, 8], "import": [0, 3, 8], "iot": [3, 8], "messag": [3, 8], "friendli": [3, 8], "graphic": [3, 8], "quick": [3, 8], "easi": [3, 8], "wi": [3, 8], "fi": [3, 8], "ap": [3, 8], "webserv": [3, 8], "index": [3, 8], "html": [3, 8], "laptop": [3, 8], "mobil": [3, 8], "phone": [3, 8], "upload": [3, 8], "act": [3, 8], "raspap": [3, 8], "runonstart": [3, 8], "itself": [3, 8], "141": [3, 8], "8080": [3, 8], "pseudo": [3, 8], "evolut": [3, 8], "appar": [3, 8], "especi": [3, 8], "suit": [3, 8], "autom": [3, 8], "ipython": [3, 8], "ssh": [3, 8], "putti": [3, 8], "maco": [3, 8], "linux": [3, 8], "found": [3, 8], "np": [3, 8], "chdir": [3, 8], "object": [3, 8], "k": [3, 8], "load": [3, 8], "nb_stack": [3, 8], "half": [3, 8], "cycl": [3, 8], "updat": [3, 8], "update_set": [3, 8], "shape": [3, 8], "set_sequ": [3, 8], "n2": [3, 8], "string": [3, 8], "load_sequ": [3, 8], "rs_check": [3, 8], "synchron": [3, 8], "wait": [3, 8], "prompt": [3, 8], "run_sequ": [3, 8], "run_sequence_async": [3, 8], "thread": [3, 8], "immedi": [3, 8], "sleep": [3, 8], "interrupt": [3, 8], "kill": [3, 8], "asynchron": [3, 8], "given": [3, 8], "interv": [3, 8], "nb_mea": [3, 8], "run_multiple_sequ": [3, 8], "taken": [3, 8], "switch_mux_on": [3, 8], "run_measur": [3, 8], "switch_mux_off": [3, 8], "risk": [3, 8], "short": [3, 8], "argument": [3, 8], "autogain": [3, 8], "true": [3, 8], "good": [3, 8], "usag": [3, 8], "process": [3, 8], "sensor": [3, 8], "scope": [3, 8], "internet": [3, 8], "network": [3, 8], "auxiliari": [3, 8], "subscrib": [3, 8], "approach": [3, 8], "mosquitto": [3, 8], "server": [3, 8], "reachabl": [3, 8], "net": [3, 8], "servic": [3, 8], "install_local_mqtt_brok": [3, 8], "examin": [3, 8], "easili": [0, 3, 8], "parti": [3, 8], "explor": [3, 8], "receiv": [3, 8], "reboot": [3, 8], "further": [3, 8], "format": [3, 8], "kwarg": [3, 8], "cmd_id": [3, 8], "3fzxv121uitwgjwygcz4xw": [3, 8], "cmd": [3, 8], "3fzxv121uitwgjwygcz4yw": [3, 8], "tailor": [3, 8], "dashboard": [3, 8], "browser": [3, 8], "node": [3, 8], "complex": [3, 8], "properli": [3, 8], "palett": [3, 8], "noder": [3, 8], "doc": [3, 8], "guid": [3, 8], "ui": [3, 8], "visual": [3, 8], "cookbook": [3, 8], "draft": 0, "TO": 0, "BE": 0, "review": 0, "intend": 0, "advic": 0, "best": 0, "contribut": 0, "maintain": 0, "promot": 0, "exchang": 0, "reus": 0, "contributor": 0, "ideal": 0, "few": 0, "distinguish": 0, "deal": 0, "compli": 0, "Such": 0, "focu": 0, "reduc": 0, "newli": 0, "expos": 0, "minim": 0, "hardware_system": 0, "discuss": 0, "ohmpi_hardwar": 0, "initi": 0, "earli": 0, "stage": 0, "investig": 0, "strategi": 0, "readi": 0, "conceiv": 0, "kicad": 0, "schema": 0, "alwai": 0, "branch": 0, "python": 0, "similar": 0, "hardware_compon": 0, "abstract": 0, "abstract_hardware_compon": 0, "method": 0, "configur": [0, 1], "hardware_config": 0, "dictionari": 0, "config_xxx": 0, "xxx": 0, "nov": 1, "juli": 1, "2016": 1, "target": 1, "research": 1, "statu": 1, "matur": 1, "progress": 1, "offici": 1, "guidelin": 1, "tutori": 1, "content": 1, "partner": 1, "cite": 1, "introduct": 1, "technic": 1, "v2023": 1, "tow": 5}, "objects": {"": [[9, 0, 0, "-", "ohmpi"]]}, "objtypes": {"0": "py:module"}, "objnames": {"0": ["py", "module", "Python module"]}, "titleterms": {"ohmpi": [1, 2, 3, 7, 8, 10, 11], "project": 2, "author": 2, "partner": 2, "cite": 2, "introduct": 2, "step": [3, 4, 5, 6, 7, 8], "n": [4, 5, 6, 7], "1": [4, 10, 11], "raspberri": [4, 10, 11], "pi": [4, 10, 11], "configur": [3, 4, 8, 10, 11], "part": [4, 5, 6], "A": [4, 5, 6], "os": [4, 10, 11], "instal": [4, 10, 11], "b": [4, 5, 6, 10, 11], "virtual": [4, 10, 11], "environ": [4, 10, 11], "packag": [4, 10, 11], "c": [4, 5, 6], "activ": [4, 10, 11], "thonni": [4, 10, 11], "python": [3, 4, 8, 10, 11], "id": [4, 10, 11], "2": 5, "measur": [5, 10, 11], "board": [5, 6, 10, 11], "assembl": [5, 6, 7, 10, 11], "requir": [5, 6], "compon": [0, 5, 6, 10, 11], "list": [5, 10, 11], "descript": [5, 10, 11], "start": 5, "up": 5, "check": 5, "3": 6, "mux": 6, "address": 6, "valid": 6, "4": 7, "v": [10, 11], "01": 10, "limit": [10, 11], "32": [10, 11], "electrod": [3, 8, 10, 11], "The": [3, 8, 10, 11], "philosophi": [3, 8, 10, 11], "technic": [10, 11], "data": [10, 11], "current": [10, 11], "inject": [10, 11], "card": [10, 11], "connect": [10, 11], "electr": [10, 11], "resist": [1, 10, 11], "implement": [10, 11], "first": [10, 11], "four": [10, 11], "multiplex": [10, 11], "oper": [3, 8, 10, 11], "instruct": [10, 11], "preliminari": [10, 11], "procedur": [10, 11], "onli": [10, 11], "initi": [10, 11], "startup": [10, 11], "paramet": [10, 11], "complet": [10, 11], "tabl": [], "titl": [], "02": 11, "v2023": [3, 8], "64": [3, 8], "12v": [3, 8], "hardwar": [0, 1, 3, 8], "specif": [3, 8], "build": [3, 8], "an": [3, 8], "softwar": [0, 3, 8], "system": [3, 8], "architectur": [3, 8], "logger": [3, 8], "file": [3, 8], "interfac": [0, 3, 8], "applic": [3, 8], "web": [3, 8], "mqtt": [3, 8], "api": 9, "refer": 9, "new": 0, "open": 1, "sourc": 1, "meter": 1, "summari": 1, "document": 1, "center": 1}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 56}})
\ No newline at end of file
diff --git a/doc/build/html/source_rst/Ohmpi.html b/doc/build/html/source_rst/Ohmpi.html
new file mode 100644
index 0000000000000000000000000000000000000000..a3a191205533156b9521726b9dc6ed0f6f2b704d
--- /dev/null
+++ b/doc/build/html/source_rst/Ohmpi.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+        <script src="../_static/jquery.js"></script>
+        <script src="../_static/underscore.js"></script>
+        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../_static/doctools.js"></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.xx/V1_01.html" />
+    <link rel="prev" title="OHMPI: Open source and open hardware resistivity-meter" href="../index.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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="#authors"><strong>Authors:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#partners"><strong>Partners:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#citing-ohmpi"><strong>Citing OhmPi:</strong></a></li>
+<li class="toctree-l2"><a class="reference internal" href="#introduction"><strong>Introduction :</strong></a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="v1.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi project</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../_sources/source_rst/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">
+<h1>OhmPi project<a class="headerlink" href="#ohmpi-project" title="Permalink to this heading"></a></h1>
+<blockquote>
+<div><a class="reference internal image-reference" href="../_images/logo_ohmpi1.JPG"><img alt="Logo OhmPi" class="align-center" src="../_images/logo_ohmpi1.JPG" style="width: 250px; height: 180px;" /></a>
+</div></blockquote>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+<section id="authors">
+<h2><strong>Authors:</strong><a class="headerlink" href="#authors" title="Permalink to this heading"></a></h2>
+<div class="line-block">
+<div class="line">Rémi CLEMENT, Vivien DUBOIS, Nicolas Forquet, INRAE, REVERSAAL, Villeurbanne, France</div>
+<div class="line">Olivier KAUFMANN, Arnaud WATLET, Université de Mons, Mons, Belgium</div>
+<div class="line">Yannick FARGIER, GERS-RRO, Univ Gustave Eiffel, IFSTTAR, Lyon, France</div>
+<div class="line">Hélène GUYARD, IGE Grenoble, Université Grenoble Alpes, Grenoble, France</div>
+<div class="line">Guillaume BLANCHY, ILVO, Merelbeke, Belgium</div>
+</div>
+</section>
+<section id="partners">
+<h2><strong>Partners:</strong><a class="headerlink" href="#partners" title="Permalink to this heading"></a></h2>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td></td>
+<td></td>
+<td></td>
+</tr>
+<tr class="row-even"><td></td>
+<td></td>
+<td></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="citing-ohmpi">
+<h2><strong>Citing OhmPi:</strong><a class="headerlink" href="#citing-ohmpi" title="Permalink to this heading"></a></h2>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+<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>
+<div class="line-block">
+<div class="line"><br /></div>
+</div>
+</section>
+<section id="introduction">
+<h2><strong>Introduction :</strong><a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules.
+OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be
+held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi.
+The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and
+modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is
+distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
+FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.</p>
+</div>
+<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 64 electrodes.OhmPi’s philosophy is to provide a fully open source and open hardware toolto the near surface scientific community.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>Anyone who wants to get involved is welcome to join the OhmPi project!</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <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 resistivity-meter" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="v1.xx/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>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2023.x.x/V2023.html b/doc/build/html/source_rst/V2023.x.x/V2023.html
new file mode 100644
index 0000000000000000000000000000000000000000..ddeb42b7501b651c3cab7cc9412aa2a6151d17a6
--- /dev/null
+++ b/doc/build/html/source_rst/V2023.x.x/V2023.html
@@ -0,0 +1,488 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>OhmPi V2023 (64 electrodes and 12V) &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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="STEP n°1 : Raspberry Pi configuration" href="V2023_step_01.html" />
+    <link rel="prev" title="OhmPi V 1.02 (limited to 32 electrodes)" href="../v1.xx/V1_02.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#hardware">Hardware</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#specifications">Specifications</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_01.html"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_02.html"><strong>STEP n°2</strong>: Measurement board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_03.html"><strong>STEP n°3:</strong> MUX board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_04.html"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#software-and-operation">Software and operation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#system-architecture">System architecture</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#loggers">Loggers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuration-file">Configuration file</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#web-interface">Web interface</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#python-interface">Python interface</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#mqtt-interface">MQTT interface</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V2023 (64 electrodes and 12V)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2023.x.x/V2023.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-v2023-64-electrodes-and-12v">
+<h1>OhmPi V2023 (64 electrodes and 12V)<a class="headerlink" href="#ohmpi-v2023-64-electrodes-and-12v" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<figure class="align-center">
+<a class="reference internal image-reference" href="../../_images/image_ohmpi_2.jpg"><img alt="OhmPi V: 2023.0.0-rc1" src="../../_images/image_ohmpi_2.jpg" style="width: 400px; height: 350px;" /></a>
+</figure>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<blockquote>
+<div><p>In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+This new version is made up of:</p>
+<ol class="arabic simple">
+<li><p>A measurement board for four-point measurement</p></li>
+<li><p>4 multiplexer cards</p></li>
+<li><p>A box</p></li>
+</ol>
+</div></blockquote>
+<p>The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.</p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of OhmPi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></a></h2>
+<p>The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one.
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.</p>
+</section>
+<hr class="docutils" />
+<section id="hardware">
+<h2>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading"></a></h2>
+<section id="specifications">
+<h3>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading"></a></h3>
+<table class="docutils align-default">
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th>
+<th class="head"><p><strong>V1.0x</strong></p></th>
+<th class="head"><p>Units</p></th>
+<th class="head"><p><strong>v2023</strong></p></th>
+<th class="head"><p>Units</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+<td><p>64 to 128</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>-0 to 50</p></td>
+<td><p>°c</p></td>
+<td><p>-25 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="building-an-ohmpi-v2023-step-by-step">
+<h3>Building an OhmPi V2023 step by step<a class="headerlink" href="#building-an-ohmpi-v2023-step-by-step" title="Permalink to this heading"></a></h3>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="V2023_step_01.html"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_01.html#part-a-os-installation"><strong>PART A:</strong> OS installation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_01.html#part-b-virtual-environment-and-packages"><strong>PART B:</strong> Virtual Environment and packages</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_01.html#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi"><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="V2023_step_02.html"><strong>STEP n°2</strong>: Measurement board</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_02.html#part-a-assembly-of-the-measurement-board"><strong>PART A</strong> Assembly of the measurement board</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_02.html#part-b-start-up-of-the-measurement-board"><strong>PART B</strong> Start-up of the measurement board</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_02.html#part-c-check-the-measurement-board"><strong>PART C</strong> Check the measurement board</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="V2023_step_03.html"><strong>STEP n°3:</strong> MUX board</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_03.html#part-a-assembly-of-mux-board"><strong>PART A</strong> Assembly of MUX board</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_03.html#part-b-mux-board-address"><strong>PART B</strong> MUX board address</a></li>
+<li class="toctree-l2"><a class="reference internal" href="V2023_step_03.html#part-c-validation-of-mux-board"><strong>PART C</strong> Validation of MUX board</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="V2023_step_04.html"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</div>
+</section>
+</section>
+<section id="software-and-operation">
+<h2>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading"></a></h2>
+<section id="system-architecture">
+<h3>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading"></a></h3>
+<p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p>
+<p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section.
+The acquisition settings (i.e. injection duration, stacks…) are defined in a separate JSON file (default: ohmpi_settings.json).</p>
+<p>The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the <a class="reference internal" href="#loggers">Loggers</a> section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p>
+</section>
+<section id="loggers">
+<h3>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading"></a></h3>
+<p>Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p>
+<p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p>
+<p>By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the <a class="reference internal" href="#configuration-file">Configuration file</a>.</p>
+<p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p>
+</section>
+<section id="configuration-file">
+<h3>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading"></a></h3>
+<p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi.
+A default version of <cite>config.py</cite> is provided in the repository.
+This file should be edited to customize the configuration following the user’s needs and preferences.</p>
+<p>The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options…)</p>
+<p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p>
+</section>
+<section id="interfaces-and-applications">
+<h3>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading"></a></h3>
+<p>Different interfaces can be used to interact with the OhmPi.</p>
+<p>Available interfaces are:
+- <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite>
+- Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>)
+- MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p>
+<section id="web-interface">
+<h4>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading"></a></h4>
+<p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p>
+<p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the ‘index.html’ interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.</p>
+<p>To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on <a class="reference external" href="https://raspap.com/">raspap.com</a> and in ‘runOnStart.sh’.</p>
+<p>Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to <a class="reference external" href="http://10.3.141.1:8080">10.3.141.1:8080</a>
+to access the interface.</p>
+<figure class="align-default" id="id4">
+<img alt="../../_images/http-interface-pseudo-section.png" src="../../_images/http-interface-pseudo-section.png" />
+<figcaption>
+<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id5">
+<img alt="../../_images/http-interface-evolution.png" src="../../_images/http-interface-evolution.png" />
+<figcaption>
+<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id6">
+<img alt="../../_images/http-interface-rs.png" src="../../_images/http-interface-rs.png" />
+<figcaption>
+<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+</section>
+<section id="python-interface">
+<h4>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading"></a></h4>
+<p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p>
+<p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).</p>
+<p>To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).</p>
+<div class="literal-block-wrapper docutils container" id="id7">
+<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id7" title="Permalink to this code"></a></div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;/home/pi/OhmPi&quot;</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">ohmpi</span> <span class="kn">import</span> <span class="n">OhmPi</span>
+
+<span class="c1">### Define object from class OhmPi</span>
+<span class="n">k</span> <span class="o">=</span> <span class="n">OhmPi</span><span class="p">()</span>  <span class="c1"># this loads default parameters from the disk</span>
+
+<span class="c1">### Default parameters can also be edited manually</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;injection_duration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>  <span class="c1"># injection time in seconds</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_stack&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># one stack is two half-cycles</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nbr_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># number of time the sequence is repeated</span>
+
+<span class="c1">### Update settings if needed</span>
+<span class="n">k</span><span class="o">.</span><span class="n">update_settings</span><span class="p">({</span><span class="s2">&quot;injection_duration&quot;</span><span class="p">:</span><span class="mf">0.2</span><span class="p">})</span>
+
+<span class="c1">### Set or load sequence</span>
+<span class="n">k</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]])</span>    <span class="c1"># set numpy array of shape (n,4)</span>
+<span class="c1"># k.set_sequence(&#39;1 2 3 4\n2 3 4 5&#39;)    # call function set_sequence and pass a string</span>
+<span class="c1"># k.load_sequence(&#39;ABMN.txt&#39;)    # load sequence from a local file</span>
+
+<span class="c1">### Run contact resistance check</span>
+<span class="n">k</span><span class="o">.</span><span class="n">rs_check</span><span class="p">()</span>
+
+<span class="c1">### Run sequence (synchronously - it will wait that all</span>
+<span class="c1"># sequence is measured before returning the prompt</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_sequence</span><span class="p">()</span>
+<span class="c1"># k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately</span>
+<span class="c1"># time.sleep(2)</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Run multiple sequences at given time interval</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span>  <span class="c1"># run sequence three times</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;sequence_delay&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># every 100 s</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_multiple_sequences</span><span class="p">()</span>  <span class="c1"># asynchron</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Single measurement can also be taken with</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_on</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">()</span>  <span class="c1"># use default acquisition parameters</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_off</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>  <span class="c1"># don&#39;t forget this! risk of short-circuit</span>
+
+<span class="c1">### Custom or adaptative argument, see help(k.run_measurement)</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">(</span><span class="n">nb_stack</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>  <span class="c1"># do 4 stacks (8 half-cycles)</span>
+                  <span class="n">injection_duration</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>  <span class="c1"># inject for 2 seconds</span>
+                  <span class="n">autogain</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>  <span class="c1"># adapt gain of ADS to get good resolution</span>
+</pre></div>
+</div>
+</div>
+</section>
+<section id="mqtt-interface">
+<h4>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading"></a></h4>
+<p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p>
+<p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p>
+<p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p>
+<p>MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as <a class="reference external" href="http://mqtt-explorer.com/">MQTT Explorer</a>.</p>
+<p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p>
+<div class="literal-block-wrapper docutils container" id="id8">
+<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id8" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{
+  &quot;cmd_id&quot;: &quot;3fzxv121UITwGjWYgcz4xw&quot;,
+  &quot;cmd&quot;: &quot;update_settings&quot;, Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+  &quot;kwargs&quot;: {
+    &quot;config&quot;: {
+      &quot;nb_meas&quot;: 2,
+      &quot;nb_electrodes&quot;: 10,
+      &quot;nb_stack&quot;: 2,
+      &quot;injection_duration&quot;: 2,
+      &quot;sequence_delay&quot;: 100
+    }
+  }
+}
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id9">
+<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id9" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rs_check&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id10">
+<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id10" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_sequence&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id11">
+<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id11" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_multiple_sequences&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id12">
+<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id12" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;interrupt&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<p>Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as <a class="reference external" href="http://mqtt-explorer.com/">Node-red</a>.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component.</p>
+<p>Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :</p>
+<p>These examples may require installing some additional node packages in order to work properly. This can be done in the <a href="#id2"><span class="problematic" id="id3">`</span></a>Palette Manager &lt;<a class="reference external" href="https://nodered.org/docs/user-guide/editor/palette/manager">https://nodered.org/docs/user-guide/editor/palette/manager</a>&gt; within Node-RED.</p>
+<figure class="align-default" id="id13">
+<img alt="../../_images/node-red_flow.png" src="../../_images/node-red_flow.png" />
+<figcaption>
+<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id13" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id14">
+<img alt="../../_images/node-red_interface_control.png" src="../../_images/node-red_interface_control.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id15">
+<img alt="../../_images/node-red_interface_data.png" src="../../_images/node-red_interface_data.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p>
+</section>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="../v1.xx/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>
+        <a href="V2023_step_01.html" class="btn btn-neutral float-right" title="STEP n°1 : Raspberry Pi configuration" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2023.x.x/V2023_step_01.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_01.html
new file mode 100644
index 0000000000000000000000000000000000000000..74eb1526e51868143b20a526f5a624e48b783d90
--- /dev/null
+++ b/doc/build/html/source_rst/V2023.x.x/V2023_step_01.html
@@ -0,0 +1,238 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°1 : Raspberry Pi configuration &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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="STEP n°2: Measurement board" href="V2023_step_02.html" />
+    <link rel="prev" title="OhmPi V2023 (64 electrodes and 12V)" href="V2023.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="V2023.html#hardware">Hardware</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="V2023.html#specifications">Specifications</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="V2023.html#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul class="current">
+<li class="toctree-l4 current"><a class="current reference internal" href="#"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_02.html"><strong>STEP n°2</strong>: Measurement board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_03.html"><strong>STEP n°3:</strong> MUX board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_04.html"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#software-and-operation">Software and operation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+          <li class="breadcrumb-item"><a href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°1</strong> : Raspberry Pi  configuration</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2023.x.x/V2023_step_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="step-n1-raspberry-pi-configuration">
+<h1><strong>STEP n°1</strong> : Raspberry Pi  configuration<a class="headerlink" href="#step-n1-raspberry-pi-configuration" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="part-a-os-installation">
+<h2><strong>PART A:</strong> OS installation<a class="headerlink" href="#part-a-os-installation" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Required components</strong></p></td>
+<td><p><strong>Quantity</strong></p></td>
+</tr>
+<tr class="row-even"><td><p>Raspberry Pi 4 Model B</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-odd"><td><p>Micro SD 32 Go</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-even"><td><p>HDMI Cable</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-odd"><td><p>Computer mouse</p></td>
+<td><p>1</p></td>
+</tr>
+<tr class="row-even"><td><p>Computer Keyboard</p></td>
+<td><p>1</p></td>
+</tr>
+</tbody>
+</table>
+<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>
+<ol class="arabic simple">
+<li><p>Watch the video <a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">how to set up your raspberry Pi</a>.</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspberry Pi OS (Previously called Raspbian) by using Raspberry Pi Imager.</p></li>
+<li><p>or you can visit this <cite>website &lt;https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up&gt;</cite>.</p></li>
+</ol>
+<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">
+<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 class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated and <strong>I2C option</strong> must be activated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+</section>
+<section id="part-b-virtual-environment-and-packages">
+<h2><strong>PART B:</strong> Virtual Environment and packages<a class="headerlink" href="#part-b-virtual-environment-and-packages" title="Permalink to this heading"></a></h2>
+<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>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">export</span> <span class="n">CFLAGS</span><span class="o">=-</span><span class="n">fcommon</span>
+<span class="n">sudo</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">pandas</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">tca9548a</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">mcp230xx</span> <span class="n">gpiozero</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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="part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">
+<h2><strong>PART C:</strong> Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#part-c-activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></a></h2>
+<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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<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>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<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>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<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>
+<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 environment should appear</p>
+<figure class="align-center">
+<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>
+<p>8- Close the window by clicking on <strong>ok</strong>.</p>
+<p>9- Close Thonny to save modifications</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="V2023.html" class="btn btn-neutral float-left" title="OhmPi V2023 (64 electrodes and 12V)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="V2023_step_02.html" class="btn btn-neutral float-right" title="STEP n°2: Measurement board" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2023.x.x/V2023_step_02.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_02.html
new file mode 100644
index 0000000000000000000000000000000000000000..3f2f0ca2a0154e2780774ccfbe39a970c9dab61d
--- /dev/null
+++ b/doc/build/html/source_rst/V2023.x.x/V2023_step_02.html
@@ -0,0 +1,782 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°2: Measurement board &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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="STEP n°3: MUX board" href="V2023_step_03.html" />
+    <link rel="prev" title="STEP n°1 : Raspberry Pi configuration" href="V2023_step_01.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="V2023.html#hardware">Hardware</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="V2023.html#specifications">Specifications</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="V2023.html#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul class="current">
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_01.html"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" href="#"><strong>STEP n°2</strong>: Measurement board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_03.html"><strong>STEP n°3:</strong> MUX board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_04.html"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#software-and-operation">Software and operation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+          <li class="breadcrumb-item"><a href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°2</strong>: Measurement board</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2023.x.x/V2023_step_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="step-n2-measurement-board">
+<h1><strong>STEP n°2</strong>: Measurement board<a class="headerlink" href="#step-n2-measurement-board" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="part-a-assembly-of-the-measurement-board">
+<h2><strong>PART A</strong> Assembly of the measurement board<a class="headerlink" href="#part-a-assembly-of-the-measurement-board" title="Permalink to this heading"></a></h2>
+<section id="required-components">
+<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<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>
+<table class="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>
+<col style="width: 8%" />
+<col style="width: 18%" />
+<col style="width: 18%" />
+<col style="width: 18%" />
+<col style="width: 18%" />
+<col style="width: 9%" />
+<col style="width: 9%" />
+</colgroup>
+<thead>
+<tr class="row-odd"><th class="head"><p>Component</p></th>
+<th class="head"><p>Number</p></th>
+<th class="head"><p>Cost per unit €</p></th>
+<th class="head"><p>Total cost €</p></th>
+<th class="head"><p>Manufacturer</p></th>
+<th class="head"><p>Manufacturer s reference</p></th>
+<th class="head"><p>Web reference</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Raspberry Pi 4 Model B</p></td>
+<td><p>1</p></td>
+<td><p>58,75</p></td>
+<td><p>58,75</p></td>
+<td><p>Raspberry</p></td>
+<td><p>Raspberry Pi 4 Model B</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Seeed-Studio/102110421?qs=7MVldsJ5UaxeN3LYyh3sqw%3D%3D">https://www.mouser.fr/ProductDetail/Seeed-Studio/102110421?qs=7MVldsJ5UaxeN3LYyh3sqw%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>LM158N AMP-o</p></td>
+<td><p>2</p></td>
+<td><p>14,5</p></td>
+<td><p>58</p></td>
+<td><p>Texas Instruments</p></td>
+<td><p>LM358AN/NOPB</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Texas-Instruments/LM158J?qs=X1J7HmVL2ZH8vpEfMl8%2FFQ%3D%3D">https://www.mouser.fr/ProductDetail/Texas-Instruments/LM158J?qs=X1J7HmVL2ZH8vpEfMl8%2FFQ%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Printed circuit board</p></td>
+<td><p>1</p></td>
+<td><p>12</p></td>
+<td><p>12</p></td>
+<td><p>Asler</p></td>
+<td><ul class="simple">
+<li></li>
+</ul>
+</td>
+<td><ul class="simple">
+<li></li>
+</ul>
+</td>
+</tr>
+<tr class="row-odd"><td><p>ADS1115</p></td>
+<td><p>2</p></td>
+<td><p>11,9</p></td>
+<td><p>23,8</p></td>
+<td><p>Adafruit</p></td>
+<td><p>1085</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/1085?qs=%2Fha2pyFaduhE%2FOGzuTWIQ9Iz5VjaqFOYugqAlGxpEcKiGrQvF4hn%252Bg%3D%3D">https://www.mouser.fr/ProductDetail/Adafruit/1085?qs=%2Fha2pyFaduhE%2FOGzuTWIQ9Iz5VjaqFOYugqAlGxpEcKiGrQvF4hn%252Bg%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Capacitor 100nF 50Vdc 10% Ceramic</p></td>
+<td><p>3</p></td>
+<td><p>0,2</p></td>
+<td><p>0,8</p></td>
+<td><p>KEMET</p></td>
+<td><p>C320C104K1</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/KEMET/C320C104K1R5TA7303?qs=c4UyoTs%2FLq1th4mcyOeTmA%3D%3D">https://www.mouser.fr/ProductDetail/KEMET/C320C104K1R5TA7303?qs=c4UyoTs%2FLq1th4mcyOeTmA%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>Resistor 1 Kohm 0.5W +- 0.1%</p></td>
+<td><p>2</p></td>
+<td><p>1,3</p></td>
+<td><p>2,6</p></td>
+<td><p>TE Connectivity</p></td>
+<td><p>H81K0BYA</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K0BYA?qs=%2Fha2pyFaduhUylh7Az%2FmjFH2XjOUms6wZtUX4sOM%252BII%3D">https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K0BYA?qs=%2Fha2pyFaduhUylh7Az%2FmjFH2XjOUms6wZtUX4sOM%252BII%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Resistor 1.5 Kohms +- 0.1%</p></td>
+<td><p>2</p></td>
+<td><p>1,3</p></td>
+<td><p>2,6</p></td>
+<td><p>TE Connectivity</p></td>
+<td><p>H81K5BYA</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K5BYA?qs=%2Fha2pyFadugy9tWham3rU9HmIJOhyWhBIN95kNm%252BX%2FM%3D">https://www.mouser.fr/ProductDetail/TE-Connectivity-Holsworthy/H81K5BYA?qs=%2Fha2pyFadugy9tWham3rU9HmIJOhyWhBIN95kNm%252BX%2FM%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>Resistor 1.5 Kohms +- 5%</p></td>
+<td><p>2</p></td>
+<td><p>1,3</p></td>
+<td><p>2,6</p></td>
+<td><p>Vishay</p></td>
+<td><p>CCF071K50GKE36</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Vishay-Dale/CCF071K50GKE36?qs=QKEOZdL6EQpA6LZRLQFVOw%3D%3D">https://www.mouser.fr/ProductDetail/Vishay-Dale/CCF071K50GKE36?qs=QKEOZdL6EQpA6LZRLQFVOw%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Resistor 10 Mohms +-5%</p></td>
+<td><p>2</p></td>
+<td><p>0,762</p></td>
+<td><p>1,524</p></td>
+<td><p>VISHAY</p></td>
+<td><p>CMF651M0000FKEK143</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Vishay-Dale/CMF651M0000FKEK143?qs=CiayqK2gdcKzIA2LEVaLkg%3D%3D">https://www.mouser.fr/ProductDetail/Vishay-Dale/CMF651M0000FKEK143?qs=CiayqK2gdcKzIA2LEVaLkg%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>2 ohm shunt resistor+-  1%</p></td>
+<td><p>1</p></td>
+<td><p>2,42</p></td>
+<td><p>2,42</p></td>
+<td><p>Ohmite</p></td>
+<td><p>41F2R0E</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Ohmite/41F2R0E?qs=IM6ToxQzGOAuEDprb19mHA%3D%3D">https://www.mouser.fr/ProductDetail/Ohmite/41F2R0E?qs=IM6ToxQzGOAuEDprb19mHA%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Dual screw terminal (5.08-mm pitch)</p></td>
+<td><p>5</p></td>
+<td><p>0,648</p></td>
+<td><p>3,24</p></td>
+<td><p>CUI Devices</p></td>
+<td><p>TB009-508-02BE</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/CUI-Devices/TB009-508-02BE?qs=vLWxofP3U2wCFk5uCkWTkA%3D%3D">https://www.mouser.fr/ProductDetail/CUI-Devices/TB009-508-02BE?qs=vLWxofP3U2wCFk5uCkWTkA%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>DC/DC converter 12 to 24V</p></td>
+<td><p>1</p></td>
+<td><p>15,58</p></td>
+<td><p>31,16</p></td>
+<td><p>TracoPower</p></td>
+<td><p>TRN 3-1215</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TRACO-Power/TRN-3-1215?qs=YCa%2FAAYMW02gqUicGQj0tA%3D%3D">https://www.mouser.fr/ProductDetail/TRACO-Power/TRN-3-1215?qs=YCa%2FAAYMW02gqUicGQj0tA%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>DIP Dual In Line Socket 2*4</p></td>
+<td><p>3</p></td>
+<td><p>0,72</p></td>
+<td><p>2,16</p></td>
+<td><p>Mill-Max</p></td>
+<td><p>110-43-308-41-001000</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Mill-Max/110-43-308-41-001000?qs=IGgAdOvCTsTu%2FqaUr8NArg%3D%3D&amp;mgh=1&amp;vip=1&amp;gclid=EAIaIQobChMIn_TAxbCx8wIVQ5nVCh2QaQFpEAYYCCABEgJk1_D_BwE">https://www.mouser.fr/ProductDetail/Mill-Max/110-43-308-41-001000?qs=IGgAdOvCTsTu%2FqaUr8NArg%3D%3D&amp;mgh=1&amp;vip=1&amp;gclid=EAIaIQobChMIn_TAxbCx8wIVQ5nVCh2QaQFpEAYYCCABEgJk1_D_BwE</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>AQY211EH</p></td>
+<td><p>4</p></td>
+<td><p>3,84</p></td>
+<td><p>15,36</p></td>
+<td><p>Panasonic Industrial Devices</p></td>
+<td><p>AQY211EH</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Panasonic-Industrial-Devices/AQY211EH?qs=wKtUvITRialGIU8hcM7DvQ%3D%3D">https://www.mouser.fr/ProductDetail/Panasonic-Industrial-Devices/AQY211EH?qs=wKtUvITRialGIU8hcM7DvQ%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>DIP Dual In Line Socket 2*2</p></td>
+<td><p>4</p></td>
+<td><p>0,449</p></td>
+<td><p>1,796</p></td>
+<td><p>Preci-dip</p></td>
+<td><p>110-83-304-41-001101</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Preci-dip/110-83-304-41-001101?qs=%2Fha2pyFadujQKqx4wAuiG%2FMGNdxMCNv%2F33Nj0gBxRocuLUcYnpyONg%3D%3D">https://www.mouser.fr/ProductDetail/Preci-dip/110-83-304-41-001101?qs=%2Fha2pyFadujQKqx4wAuiG%2FMGNdxMCNv%2F33Nj0gBxRocuLUcYnpyONg%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>MCP23008</p></td>
+<td><p>1</p></td>
+<td><p>1,72</p></td>
+<td><p>1,72</p></td>
+<td><p>Adafruit</p></td>
+<td><p>593</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/593?qs=sGAEpiMZZMsKEdP9slC0YYV4kPdpMD1Hts4SLctIVmw%3D">https://www.mouser.fr/ProductDetail/Adafruit/593?qs=sGAEpiMZZMsKEdP9slC0YYV4kPdpMD1Hts4SLctIVmw%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Header sets 1x10</p></td>
+<td><p>2</p></td>
+<td><p>2,12</p></td>
+<td><p>4,24</p></td>
+<td><p>Samtec</p></td>
+<td><p>SSW-110-02-G-S</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Samtec/SSW-110-02-G-S?qs=rU5fayqh%252BE0w1ORXZiBQpw%3D%3D">https://www.mouser.fr/ProductDetail/Samtec/SSW-110-02-G-S?qs=rU5fayqh%252BE0w1ORXZiBQpw%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>SMT Breakout PCB for SOIC-8</p></td>
+<td><p>1</p></td>
+<td><p>2,5</p></td>
+<td><p>2,5</p></td>
+<td><p>Adafruit</p></td>
+<td><p>1212</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/1212?qs=GURawfaeGuCAqqfvnVtyeg%3D%3D&amp;mgh=1&amp;vip=1&amp;gclid=EAIaIQobChMIt8zJzr6x8wIVGdnVCh2vBwVsEAQYAyABEgJqG_D_BwE">https://www.mouser.fr/ProductDetail/Adafruit/1212?qs=GURawfaeGuCAqqfvnVtyeg%3D%3D&amp;mgh=1&amp;vip=1&amp;gclid=EAIaIQobChMIt8zJzr6x8wIVGdnVCh2vBwVsEAQYAyABEgJqG_D_BwE</a></p></td>
+</tr>
+<tr class="row-even"><td><p>INA282AID</p></td>
+<td><p>1</p></td>
+<td><p>4,11</p></td>
+<td><p>4,11</p></td>
+<td><p>Texas Instruments</p></td>
+<td><p>INA282AID</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Texas-Instruments/INA282AID?qs=Ze4%2FuFuz19ILFayZXOCfrA%3D%3D">https://www.mouser.fr/ProductDetail/Texas-Instruments/INA282AID?qs=Ze4%2FuFuz19ILFayZXOCfrA%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>THD 15-1211N</p></td>
+<td><p>1</p></td>
+<td><p>39,72</p></td>
+<td><p>39,72</p></td>
+<td><p>TracoPower</p></td>
+<td><p>THD 15-1211N</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TRACO-Power/THD-15-1211N?qs=%2Fha2pyFadugpyEG4IDvm%2FMSR%252B7aN%2F0T3rUIs9PCAqJlT4%252BnRpUOOeQ%3D%3D">https://www.mouser.fr/ProductDetail/TRACO-Power/THD-15-1211N?qs=%2Fha2pyFadugpyEG4IDvm%2FMSR%252B7aN%2F0T3rUIs9PCAqJlT4%252BnRpUOOeQ%3D%3D</a></p></td>
+</tr>
+<tr class="row-even"><td><p>DIP Dual In Line Socket 2*20</p></td>
+<td><p>1</p></td>
+<td><p>8,53</p></td>
+<td><p>8,53</p></td>
+<td><p>Samtec</p></td>
+<td><p>SSQ-120-23-G-D</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Samtec/SSQ-120-23-G-D?qs=rU5fayqh%252BE1BMVd%252BDZONqg%3D%3D">https://www.mouser.fr/ProductDetail/Samtec/SSQ-120-23-G-D?qs=rU5fayqh%252BE1BMVd%252BDZONqg%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>Pin strip no ejector</p></td>
+<td><p>1</p></td>
+<td><p>0,35</p></td>
+<td><p>0,35</p></td>
+<td><p>BLK electronic</p></td>
+<td><p>10120550</p></td>
+<td><p><a class="reference external" href="https://www.conrad.com/p/bkl-electronic-10120550-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-pcs-741435?searchTerm=741435&amp;searchType=suggest&amp;searchSuggest=product">https://www.conrad.com/p/bkl-electronic-10120550-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-pcs-741435?searchTerm=741435&amp;searchType=suggest&amp;searchSuggest=product</a></p></td>
+</tr>
+<tr class="row-even"><td><p>Male Female spacer 2.5M HEXAGONALE</p></td>
+<td><p>4</p></td>
+<td><p>0,87</p></td>
+<td><p>3,48</p></td>
+<td><p>HARWIN</p></td>
+<td><p>R25-3002002</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Harwin/R25-3002002?qs=W0yvOO0ixfENUv0hsdC4%2FQ%3D%3D">https://www.mouser.fr/ProductDetail/Harwin/R25-3002002?qs=W0yvOO0ixfENUv0hsdC4%2FQ%3D%3D</a></p></td>
+</tr>
+<tr class="row-odd"><td><p>DIP Dual In Line Socket 2*9</p></td>
+<td><p>1</p></td>
+<td><p>1,86</p></td>
+<td><p>1,86</p></td>
+<td><p>Preci-dip</p></td>
+<td><p>437-1108331841001101</p></td>
+<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Preci-dip/110-83-318-41-001101?qs=FtMuP6KVi2TNQOezIAQ%2FPA%3D%3D">https://www.mouser.fr/ProductDetail/Preci-dip/110-83-318-41-001101?qs=FtMuP6KVi2TNQOezIAQ%2FPA%3D%3D</a></p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="description">
+<h3>Description<a class="headerlink" href="#description" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<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>
+<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
+is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. The advantage of ADS1115 is that the
+input signal value could lie between - to + 6.114 V. For the current measurement we have directly integrated the INA282 component,
+which allows to realize precise current measurement around a shunt resistor. The assembly are described in the following steps:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="../../_images/01_mes_board.jpg" src="../../_images/01_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of female header, 1 by 10  pins, for ADS1115</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="../../_images/02_mes_board.jpg" src="../../_images/02_mes_board.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 4 dual-in-line socket (2 by 2 pins) for
+optical relay, AQY211EH.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 1 dual-in-line socket (2 by 9 pins)
+for MCP23008.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 1 dual-in-line socket (2 by 4 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering of 2 dual-in-line socket (2 by 4 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Traco Power Supply 12V to 5V, TDH15 - 1211N</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Four screw terminals for 12V inpout et 5V output</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Traco power Supply 12V to 24V, TRN-1215</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Two screw terminals electrodes M and N</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Four screw terminals, for 12V power supply and for
+electrodes A and B</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>11</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering three capacitors (100nF)</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>In this version, we used a shunt resistor of 2 ohms, which limits the current measurement to 48 mA. If the current is higher than this value, you just have to decrease the value of the shunt resistor. Don’t forget to change the shunt value in the config.py file (value associated to key ‘R_shunt’ in the OHMPI_CONFIG dict).</p>
+</div>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>12</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>2 ohms shunt resistor pre-adjustment</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>13</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering 2 ohms shunt resistor</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>14</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>1 MOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>15</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering tow 1 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>16</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering two 1.5 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>17</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Soldering two 1.5 kOhms resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>18</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Female header 2 by 20 pins for Raspberry Pi connection</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>19</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>View of the female  header 2 by 20 pins installation
+for Raspberry Pi connection</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>20</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Fixing MCP23008 component (Dot mark on the top left corner)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>21</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Mounting optical relay, AQY211EH (Dot mark in the top left
+corners)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>22</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Mounting LM158 operational amplifier</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>23</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Mounting ADS115 board</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>24</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Fixing the INA282 (Dot mark in the top right corner)</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+</section>
+<section id="part-b-start-up-of-the-measurement-board">
+<h2><strong>PART B</strong> Start-up of the measurement board<a class="headerlink" href="#part-b-start-up-of-the-measurement-board" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Required components</strong></p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Shutdown the raspberry Pi and unplug the power supply</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Mounting the bottom spacers on the Raspberry Pi (male/female, 11mm, M3)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td></td>
+</tr>
+<tr class="row-even"><td><p>Mounting the upper spacers on the Raspberry Pi (female/female, 11mm, M3)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="../../_images/003.jpg" src="../../_images/003.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the OhmPi’s measurement board on the Raspberry Pi</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="../../_images/004.jpg" src="../../_images/004.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mounting the OhmPi’s measurement board on the Raspberry Pi</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="../../_images/005.jpg" src="../../_images/005.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Plug the power supply into a socket and connect it to your
+Raspberry Pi’s power port.</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="part-c-check-the-measurement-board">
+<h2><strong>PART C</strong> Check the measurement board<a class="headerlink" href="#part-c-check-the-measurement-board" title="Permalink to this heading"></a></h2>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">i2cdetect</span> <span class="o">-</span><span class="n">y</span> <span class="mi">1</span>
+</pre></div>
+</div>
+</div></blockquote>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="../../_images/i2cdetect.png" src="../../_images/i2cdetect.png" />
+</td>
+</tr>
+<tr class="row-even"><td><p>If everything is working, three I2C addresses should appear
+on the screen.</p></td>
+</tr>
+</tbody>
+</table>
+<dl>
+<dt>Setting up an equivalent electronic circuit, for this you will need:</dt><dd><ul class="simple">
+<li><p>4 1kOhm resistor (R2)</p></li>
+<li><p>1 220 Ohm resistor (R1)</p></li>
+<li><p>1 small padboard</p></li>
+<li><p>Spool of solder</p></li>
+</ul>
+<table class="docutils align-left">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="../../_images/ref_circuit.png" src="../../_images/ref_circuit.png" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Schematic of equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+</dd>
+</dl>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="../../_images/20210905_122820.jpg" src="../../_images/20210905_122820.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="../../_images/20210905_123034.jpg" src="../../_images/20210905_123034.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the battery connections and the terminals.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="../../_images/20210905_132856.jpg" src="../../_images/20210905_132856.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Soldering cables and terminals</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="../../_images/Inked20211206_150522_LI.jpg" src="../../_images/Inked20211206_150522_LI.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Install the red cables on the +12V terminal and black cable
+on the ground terminal. Connect to two different 12V
+batteries</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="../../_images/Inked20211206_150522_LI2.jpg" src="../../_images/Inked20211206_150522_LI2.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the equivalent electronic circuit test</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="../../_images/thonny_first_interface1.jpg" src="../../_images/thonny_first_interface1.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Run the Thonny Interpreter</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="../../_images/20211206_144334.jpg" src="../../_images/20211206_144334.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Run sample_measurement_example.py example, if everything
+works you should  get the following result (220 Ohm)</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="V2023_step_01.html" class="btn btn-neutral float-left" title="STEP n°1 : Raspberry Pi configuration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="V2023_step_03.html" class="btn btn-neutral float-right" title="STEP n°3: MUX board" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html
new file mode 100644
index 0000000000000000000000000000000000000000..f3c7e95c7d0455ef7d0aa32431f5a03c61ea8c42
--- /dev/null
+++ b/doc/build/html/source_rst/V2023.x.x/V2023_step_03.html
@@ -0,0 +1,407 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°3: MUX board &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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="STEP n°4: assemble the OhmPi" href="V2023_step_04.html" />
+    <link rel="prev" title="STEP n°2: Measurement board" href="V2023_step_02.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="V2023.html#hardware">Hardware</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="V2023.html#specifications">Specifications</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="V2023.html#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul class="current">
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_01.html"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_02.html"><strong>STEP n°2</strong>: Measurement board</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" href="#"><strong>STEP n°3:</strong> MUX board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_04.html"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#software-and-operation">Software and operation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+          <li class="breadcrumb-item"><a href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°3:</strong> MUX board</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2023.x.x/V2023_step_03.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">
+             
+  <div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="step-n3-mux-board">
+<h1><strong>STEP n°3:</strong> MUX board<a class="headerlink" href="#step-n3-mux-board" title="Permalink to this heading"></a></h1>
+<p>The multiplexing of the channels is a mechanical multiplexing based on OMRON’s manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with
+a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs.
+We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit.
+This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each card has its own digital address between 0X70 and 0X77.
+In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N.
+0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.</p>
+<section id="part-a-assembly-of-mux-board">
+<h2><strong>PART A</strong> Assembly of MUX board<a class="headerlink" href="#part-a-assembly-of-mux-board" title="Permalink to this heading"></a></h2>
+<section id="required-components">
+<h3>Required components<a class="headerlink" href="#required-components" title="Permalink to this heading"></a></h3>
+<figure class="align-center">
+<a class="reference internal image-reference" href="../../_images/MUX_board_components.jpg"><img alt="alternate text" src="../../_images/MUX_board_components.jpg" style="width: 600px; height: 650px;" /></a>
+</figure>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="../../_images/MUX_00.jpg" src="../../_images/MUX_00.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mux board pcb</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="../../_images/MUX_01.jpg" src="../../_images/MUX_01.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the 100 kOhm resistors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="../../_images/MUX_02.jpg" src="../../_images/MUX_02.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the MOSFET ZVN4206A</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="../../_images/MUX_03.jpg" src="../../_images/MUX_03.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the diode 1N4007</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="../../_images/MUX_04.jpg" src="../../_images/MUX_04.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the relay</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>6</p></td>
+<td><img alt="../../_images/MUX_05.jpg" src="../../_images/MUX_05.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of the terminal screw</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="../../_images/MUX_06.jpg" src="../../_images/MUX_06.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of generic male header</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td><img alt="../../_images/MUX_07.jpg" src="../../_images/MUX_07.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of Pin strip (6 pins)  and pin strip (16 pins)</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td><img alt="../../_images/MUX_08.jpg" src="../../_images/MUX_08.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of DIP Dual In Line Socket 2*14</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="../../_images/MUX_09.jpg" src="../../_images/MUX_09.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of Adafruit TCA9548A</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="../../_images/MUX_10.jpg" src="../../_images/MUX_10.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Installation of MCP23017</p></td>
+</tr>
+</tbody>
+</table>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>This step must be duplicated 4 times for every Mux card.</p>
+</div>
+</section>
+</section>
+<section id="part-b-mux-board-address">
+<h2><strong>PART B</strong> MUX board address<a class="headerlink" href="#part-b-mux-board-address" title="Permalink to this heading"></a></h2>
+<p>To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code.
+We present here the addresses selected by default.</p>
+<p>For the A electrode board, we suggest addressing it with address 0x70:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>1</p></td>
+<td><img alt="../../_images/A_0x70.jpg" src="../../_images/A_0x70.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (A).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="../../_images/A_0x70-a.jpg" src="../../_images/A_0x70-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the B electrode board, we suggest addressing it with address 0x71:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>2</p></td>
+<td><img alt="../../_images/B_0x71.jpg" src="../../_images/B_0x71.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="../../_images/B_0x71-a.jpg" src="../../_images/B_0x71-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the N electrode board, we suggest addressing it with address 0x72:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>3</p></td>
+<td><img alt="../../_images/M_0x72.jpg" src="../../_images/M_0x72.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="../../_images/M_0x72-a.jpg" src="../../_images/M_0x72-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+<p>For the M electrode board, we suggest addressing it with address 0x73:</p>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>4</p></td>
+<td><img alt="../../_images/N_0x73.jpg" src="../../_images/N_0x73.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the jumpers and note the value of the address and the
+electrode name on the mux board (B).</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="../../_images/N_0x73-a.jpg" src="../../_images/N_0x73-a.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom on the jumper</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="part-c-validation-of-mux-board">
+<h2><strong>PART C</strong> Validation of MUX board<a class="headerlink" href="#part-c-validation-of-mux-board" title="Permalink to this heading"></a></h2>
+<p>The first step is to test the Mux boards before assembling them definitively.
+To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.</p>
+<p>The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.</p>
+<blockquote>
+<div><table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="../../_images/20211207_115706.jpg" src="../../_images/20211207_115706.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Build a cable with 6 contacts with 6 pins connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="../../_images/20220124_142929.jpg" src="../../_images/20220124_142929.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Prepare the measurement board and the first mux board by
+example the card with address 0x71.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="../../_images/20220124_143105.jpg" src="../../_images/20220124_143105.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the 12V power supply cables to the MUX board
+without powering the board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="../../_images/20220207_154111.jpg" src="../../_images/20220207_154111.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the 12V power supply screw terminal of the mux
+board to the 12V screw terminal power supply of the
+measurement board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="../../_images/20220124_143823.jpg" src="../../_images/20220124_143823.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the 6-contact cable</p></td>
+</tr>
+</tbody>
+</table>
+</div></blockquote>
+<p>Start your 12V power supply, the raspberry must start.</p>
+<p>Run the terminal and write:</p>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">i2cdetect</span> <span class="o">-</span><span class="n">y</span> <span class="mi">1</span>
+</pre></div>
+</div>
+</div></blockquote>
+<p>Three addresses should appear, including the address of the MUX board you have selected. This implies that your board has been detected.</p>
+<p>Open the script called “test_mux_board.py”.</p>
+<p>Run the script</p>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="V2023_step_02.html" class="btn btn-neutral float-left" title="STEP n°2: Measurement board" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="V2023_step_04.html" class="btn btn-neutral float-right" title="STEP n°4: assemble the OhmPi" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2023.x.x/V2023_step_04.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_04.html
new file mode 100644
index 0000000000000000000000000000000000000000..80855d5fed2b6b7870185d757eb03dd1f0f63fe3
--- /dev/null
+++ b/doc/build/html/source_rst/V2023.x.x/V2023_step_04.html
@@ -0,0 +1,567 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>STEP n°4: assemble the OhmPi &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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 V2023 (64 electrodes and 12V)" href="../V2024.x.x/V2024.html" />
+    <link rel="prev" title="STEP n°3: MUX board" href="V2023_step_03.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="V2023.html#hardware">Hardware</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="V2023.html#specifications">Specifications</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="V2023.html#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul class="current">
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_01.html"><strong>STEP n°1</strong> : Raspberry Pi  configuration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_02.html"><strong>STEP n°2</strong>: Measurement board</a></li>
+<li class="toctree-l4"><a class="reference internal" href="V2023_step_03.html"><strong>STEP n°3:</strong> MUX board</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" href="#"><strong>STEP n°4:</strong> assemble the OhmPi</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="V2023.html#software-and-operation">Software and operation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+          <li class="breadcrumb-item"><a href="V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+      <li class="breadcrumb-item active"><strong>STEP n°4:</strong> assemble the OhmPi</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2023.x.x/V2023_step_04.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">
+             
+  <div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="step-n4-assemble-the-ohmpi">
+<h1><strong>STEP n°4:</strong> assemble the OhmPi<a class="headerlink" href="#step-n4-assemble-the-ohmpi" title="Permalink to this heading"></a></h1>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>1</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_1.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_1.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut 4 ribbon cables composed of 16 wires each to the proper
+length (about 1.5m). Each wire corresponds to an electrode.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>2</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_2.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_2.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Crimp the ribbon cable on the corresponding idc connector
+with a suitable clamp. Pay attention to the direction of
+the cables. Unbalanced IDC connector. The ribbon cable must
+be perpendicular to the connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>3</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_3.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_3.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Example of IDC connector mounting. The wires should run as
+perpendicular as possible to the IDC connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>4</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_4.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_4.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Same for a 6 wires ribbon cable of 1 m length.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>5</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_5.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_5.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut the ribbon cable flush with the IDC connector.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="4"><p>6</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_6.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_6.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position 9 spacers above the MUX board, and 9 spacers below</p></td>
+</tr>
+<tr class="row-odd"><td><img alt="source_rst/V2023.x.x/step_n_4/step_4_7.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_7.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Profile view for mounting the spacers above and below.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>7</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_8.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_8.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a 50 cm long wire of any color (here yellow). Strip and
+tin each end of the wire. Install the wire “A” on the screw
+terminal of MUX board « A ».</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>8</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_9.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_9.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a red wire and a black wire of 50 cm length. Strip, tin
+and position the wires on the left screw terminal as shown
+in the picture: i)Red wire 12 V, ii) Black wire GND</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>9</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_10.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_10.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the 4 ribbon cables (16-wires each) with IDC
+connectors. A small noise is often heard when the IDC
+connector is clipped in place.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>10</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_11.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_11.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount the ribbon cables with 6-wires with the corresponding
+IDC connectors</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>12</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_13.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_13.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Mount and fix the second MUX board “B” on the first with
+the help of 9 spacers.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>13</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_14.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_14.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut, strip and tin a red wire and a black wire of 10 cm
+length. Mount the wires on the left screw terminal.
+Red wire 12V input, black wire GND input.
+Connect the red and black wires from board A to the right
+screw terminal of board B. Red wire 12V input. Black wire
+GND input.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>14</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_15.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_15.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Crimp a 16 wires IDC connector on the ribbon cable at about
+15 cm from the previous connector. Please, pay attention to
+the direction of the cable before the crimp procedure.
+Mount the ribbon cable on the IDC connector on the board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>15</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_16.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_16.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operation for the other 3 ribbon cables.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>16</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_17.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_17.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operation for the 6 wires ribbon cable.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>17</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_18.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_18.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a 50 cm long wire “here purple” (Color not relevant but
+to be defined). Strip and tin the wire at its ends.
+Position the wire on the input B of the screw terminal of
+the multiplexing board B.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>18</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_19.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_19.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat all these operations for the third MUX board
+called “M”.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>19</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_20.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_20.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Repeat the operations for the fourth MUX Boards. Attention,
+it is necessary to position 5 different spacers (here nylon
+screw hex spacers) in between the “M” board and the “N” MUX
+Board (as shown on the photograph). Refer to the following
+photographs for more details on the assembly of the spacers</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>20</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_21.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_21.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>When mounting the 4th MUX board (“N”), screws can be placed
+on the nylon spacers to fix the boards together. Note that
+the other spacers could be used for this purpose.
+Connect ribbon cables (16 wires) from board 3 to board 4 as
+previously described. Connect the red wire (12V) of MUX
+board “M” to the 12V terminal of the right screw terminal
+of MUX Board “N”. Connect the black wire (GND) of MUX board
+“M” to the GND screw terminal on MUX board “N”.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>21</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_22.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_22.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a red wire and a black wire of one meter length. Place
+the red wire on terminal “12V” and the black wire on
+terminal “GND” of the left screw terminal. Tie the wires
+together.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>22</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_23.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_23.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Tie the A, B, M and N wires together</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>23</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_24.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_24.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Cut a PVC plate with the following minimum dimensions :
+200 mm * 150 mm * 5 mm</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>24</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_25.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_25.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Drill the plate to mount it on the remaining metal spacers.
+Do not tighten the assembly.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>25</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_26.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_26.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position the Raspberry Pi (RPI) board on the plate so that
+you can access the USB ports. Mark the holes of the RPI
+board on the plate for mounting.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>26</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_27.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_27.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Add spacers on the PVC plate.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>27</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_28.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_28.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Attach the PVC plate to the metal spacers with washers
+and nuts.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>28</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_29.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_29.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Position and fix the RPI card on the spacers</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>29</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_30.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_30.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Add spacers on the RPI board. The red (12V) and black (GND)
+wires coming out of the “M” MUX board must pass under
+the RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>31</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_32.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_32.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the wires ” A ” (here yellow), ” B ” (here purple),
+” M ” (here brown) and ” N ” (here blue) on the
+corresponding terminal blocks on the measurement board.
+Connect the 6 wires ribbon cable on the measurement board
+by passing under the PVC plate.Connect the red and black
+wires to the 12 V and GND terminal block.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>32</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_33.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_33.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Top view of the assembly. Add clips to secure the wires
+together.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>33</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_34.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_34.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Second view.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>34</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_35.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_35.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the M and N wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>35</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_36.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_36.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the A and B wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>36</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_37.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_37.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Zoom in on the connection of the « 12V » and « GND » wires.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>37</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_38.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_38.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Fixing the measurement board on the spacers present on the
+RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>38</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_39.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_39.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Place the SD card containing the OS and the pre-installed
+programs. Connect a mouse and a keyboard to the USB inputs
+of the RPI board. Connect a monitor to the HDMI output of
+the RPI board.</p></td>
+</tr>
+</tbody>
+</table>
+<table class="docutils align-center">
+<tbody>
+<tr class="row-odd"><td rowspan="2"><p>39</p></td>
+<td><img alt="source_rst/V2023.x.x/step_n_4/step_4_40.jpg" src="source_rst/V2023.x.x/step_n_4/step_4_40.jpg" />
+</td>
+</tr>
+<tr class="row-even"><td><p>Connect the red and black cables of board A to a 12V
+battery or other laboratory power supply delivering a 12VDC
+voltage.
+Enjoy 😊</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="V2023_step_03.html" class="btn btn-neutral float-left" title="STEP n°3: MUX board" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="../V2024.x.x/V2024.html" class="btn btn-neutral float-right" title="OhmPi V2023 (64 electrodes and 12V)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/V2024.x.x/V2024.html b/doc/build/html/source_rst/V2024.x.x/V2024.html
new file mode 100644
index 0000000000000000000000000000000000000000..204abc787241bdfd6101afd3e1568442a763e956
--- /dev/null
+++ b/doc/build/html/source_rst/V2024.x.x/V2024.html
@@ -0,0 +1,469 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>OhmPi V2023 (64 electrodes and 12V) &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></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="API reference" href="../api.html" />
+    <link rel="prev" title="STEP n°4: assemble the OhmPi" href="../V2023.x.x/V2023_step_04.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V2023 (64 electrodes and 12V)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of OhmPi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#hardware">Hardware</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#specifications">Specifications</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#building-an-ohmpi-v2023-step-by-step">Building an OhmPi V2023 step by step</a><ul class="simple">
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#software-and-operation">Software and operation</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#system-architecture">System architecture</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#loggers">Loggers</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#configuration-file">Configuration file</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#web-interface">Web interface</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#python-interface">Python interface</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#mqtt-interface">MQTT interface</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V2023 (64 electrodes and 12V)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/V2024.x.x/V2024.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-v2023-64-electrodes-and-12v">
+<h1>OhmPi V2023 (64 electrodes and 12V)<a class="headerlink" href="#ohmpi-v2023-64-electrodes-and-12v" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/V2024.x.x/image_ohmpi_2.jpg"><img alt="OhmPi V: 2023.0.0-rc1" src="source_rst/V2024.x.x/image_ohmpi_2.jpg" style="width: 400px; height: 350px;" /></a>
+</figure>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<blockquote>
+<div><p>In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+This new version is made up of:</p>
+<ol class="arabic simple">
+<li><p>A measurement board for four-point measurement</p></li>
+<li><p>4 multiplexer cards</p></li>
+<li><p>A box</p></li>
+</ol>
+</div></blockquote>
+<p>The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.</p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of OhmPi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></a></h2>
+<p>The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one.
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.</p>
+</section>
+<hr class="docutils" />
+<section id="hardware">
+<h2>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading"></a></h2>
+<section id="specifications">
+<h3>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading"></a></h3>
+<table class="docutils align-default">
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th>
+<th class="head"><p><strong>V1.0x</strong></p></th>
+<th class="head"><p>Units</p></th>
+<th class="head"><p><strong>v2023</strong></p></th>
+<th class="head"><p>Units</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+<td><p>64 to 128</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>-0 to 50</p></td>
+<td><p>°c</p></td>
+<td><p>-25 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="building-an-ohmpi-v2023-step-by-step">
+<h3>Building an OhmPi V2023 step by step<a class="headerlink" href="#building-an-ohmpi-v2023-step-by-step" title="Permalink to this heading"></a></h3>
+<div class="toctree-wrapper compound">
+</div>
+</section>
+</section>
+<section id="software-and-operation">
+<h2>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading"></a></h2>
+<section id="system-architecture">
+<h3>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading"></a></h3>
+<p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p>
+<figure class="align-default" id="id4">
+<img alt="source_rst/V2024.x.x/img/architecture.png" src="source_rst/V2024.x.x/img/architecture.png" />
+<figcaption>
+<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section.
+The acquisition settings (i.e. injection duration, stacks…) are defined in a separate JSON file (default: ohmpi_settings.json).</p>
+<p>The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the <a class="reference internal" href="#loggers">Loggers</a> section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p>
+</section>
+<section id="loggers">
+<h3>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading"></a></h3>
+<p>Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p>
+<p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p>
+<p>By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the <a class="reference internal" href="#configuration-file">Configuration file</a>.</p>
+<p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p>
+</section>
+<section id="configuration-file">
+<h3>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading"></a></h3>
+<p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi.
+A default version of <cite>config.py</cite> is provided in the repository.
+This file should be edited to customize the configuration following the user’s needs and preferences.</p>
+<p>The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options…)</p>
+<p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p>
+</section>
+<section id="interfaces-and-applications">
+<h3>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading"></a></h3>
+<p>Different interfaces can be used to interact with the OhmPi.</p>
+<p>Available interfaces are:
+- <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite>
+- Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>)
+- MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p>
+<section id="web-interface">
+<h4>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading"></a></h4>
+<p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p>
+<p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the ‘index.html’ interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.</p>
+<p>To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on <a class="reference external" href="https://raspap.com/">raspap.com</a> and in ‘runOnStart.sh’.</p>
+<p>Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to <a class="reference external" href="http://10.3.141.1:8080">10.3.141.1:8080</a>
+to access the interface.</p>
+<figure class="align-default" id="id5">
+<img alt="source_rst/V2024.x.x/img/http-interface-pseudo-section.png" src="source_rst/V2024.x.x/img/http-interface-pseudo-section.png" />
+<figcaption>
+<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id6">
+<img alt="source_rst/V2024.x.x/img/http-interface-evolution.png" src="source_rst/V2024.x.x/img/http-interface-evolution.png" />
+<figcaption>
+<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id7">
+<img alt="source_rst/V2024.x.x/img/http-interface-rs.png" src="source_rst/V2024.x.x/img/http-interface-rs.png" />
+<figcaption>
+<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+</section>
+<section id="python-interface">
+<h4>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading"></a></h4>
+<p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p>
+<p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).</p>
+<p>To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).</p>
+<div class="literal-block-wrapper docutils container" id="id8">
+<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Permalink to this code"></a></div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;/home/pi/OhmPi&quot;</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">ohmpi</span> <span class="kn">import</span> <span class="n">OhmPi</span>
+
+<span class="c1">### Define object from class OhmPi</span>
+<span class="n">k</span> <span class="o">=</span> <span class="n">OhmPi</span><span class="p">()</span>  <span class="c1"># this loads default parameters from the disk</span>
+
+<span class="c1">### Default parameters can also be edited manually</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;injection_duration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>  <span class="c1"># injection time in seconds</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_stack&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># one stack is two half-cycles</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nbr_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># number of time the sequence is repeated</span>
+
+<span class="c1">### Update settings if needed</span>
+<span class="n">k</span><span class="o">.</span><span class="n">update_settings</span><span class="p">({</span><span class="s2">&quot;injection_duration&quot;</span><span class="p">:</span><span class="mf">0.2</span><span class="p">})</span>
+
+<span class="c1">### Set or load sequence</span>
+<span class="n">k</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]])</span>    <span class="c1"># set numpy array of shape (n,4)</span>
+<span class="c1"># k.set_sequence(&#39;1 2 3 4\n2 3 4 5&#39;)    # call function set_sequence and pass a string</span>
+<span class="c1"># k.load_sequence(&#39;ABMN.txt&#39;)    # load sequence from a local file</span>
+
+<span class="c1">### Run contact resistance check</span>
+<span class="n">k</span><span class="o">.</span><span class="n">rs_check</span><span class="p">()</span>
+
+<span class="c1">### Run sequence (synchronously - it will wait that all</span>
+<span class="c1"># sequence is measured before returning the prompt</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_sequence</span><span class="p">()</span>
+<span class="c1"># k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately</span>
+<span class="c1"># time.sleep(2)</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Run multiple sequences at given time interval</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span>  <span class="c1"># run sequence three times</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;sequence_delay&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># every 100 s</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_multiple_sequences</span><span class="p">()</span>  <span class="c1"># asynchron</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Single measurement can also be taken with</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_on</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">()</span>  <span class="c1"># use default acquisition parameters</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_off</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>  <span class="c1"># don&#39;t forget this! risk of short-circuit</span>
+
+<span class="c1">### Custom or adaptative argument, see help(k.run_measurement)</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">(</span><span class="n">nb_stack</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>  <span class="c1"># do 4 stacks (8 half-cycles)</span>
+                  <span class="n">injection_duration</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>  <span class="c1"># inject for 2 seconds</span>
+                  <span class="n">autogain</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>  <span class="c1"># adapt gain of ADS to get good resolution</span>
+</pre></div>
+</div>
+</div>
+</section>
+<section id="mqtt-interface">
+<h4>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading"></a></h4>
+<p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p>
+<p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p>
+<p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p>
+<p>MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as <a class="reference external" href="http://mqtt-explorer.com/">MQTT Explorer</a>.</p>
+<p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p>
+<div class="literal-block-wrapper docutils container" id="id9">
+<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{
+  &quot;cmd_id&quot;: &quot;3fzxv121UITwGjWYgcz4xw&quot;,
+  &quot;cmd&quot;: &quot;update_settings&quot;, Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+  &quot;kwargs&quot;: {
+    &quot;config&quot;: {
+      &quot;nb_meas&quot;: 2,
+      &quot;nb_electrodes&quot;: 10,
+      &quot;nb_stack&quot;: 2,
+      &quot;injection_duration&quot;: 2,
+      &quot;sequence_delay&quot;: 100
+    }
+  }
+}
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id10">
+<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rs_check&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id11">
+<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_sequence&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id12">
+<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_multiple_sequences&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id13">
+<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;interrupt&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<p>Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as <a class="reference external" href="http://mqtt-explorer.com/">Node-red</a>.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component.</p>
+<p>Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :</p>
+<p>These examples may require installing some additional node packages in order to work properly. This can be done in the <a href="#id2"><span class="problematic" id="id3">`</span></a>Palette Manager &lt;<a class="reference external" href="https://nodered.org/docs/user-guide/editor/palette/manager">https://nodered.org/docs/user-guide/editor/palette/manager</a>&gt; within Node-RED.</p>
+<figure class="align-default" id="id14">
+<img alt="source_rst/V2024.x.x/img/node-red_flow.png" src="source_rst/V2024.x.x/img/node-red_flow.png" />
+<figcaption>
+<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id15">
+<img alt="source_rst/V2024.x.x/img/node-red_interface_control.png" src="source_rst/V2024.x.x/img/node-red_interface_control.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id16">
+<img alt="source_rst/V2024.x.x/img/node-red_interface_data.png" src="source_rst/V2024.x.x/img/node-red_interface_data.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p>
+</section>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="../V2023.x.x/V2023_step_04.html" class="btn btn-neutral float-left" title="STEP n°4: assemble the OhmPi" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+        <a href="../api.html" class="btn btn-neutral float-right" title="API reference" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/api.html b/doc/build/html/source_rst/api.html
new file mode 100644
index 0000000000000000000000000000000000000000..29c90780a6d00f02b5f4779e8a23d6fd7a97a88d
--- /dev/null
+++ b/doc/build/html/source_rst/api.html
@@ -0,0 +1,115 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>API reference &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
+        <script src="../_static/jquery.js"></script>
+        <script src="../_static/underscore.js"></script>
+        <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../_static/doctools.js"></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 V2023 (64 electrodes and 12V)" href="V2024.x.x/V2024.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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.xx/V1_01.html">OhmPi V 1.01 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="v1.xx/V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">API reference</a><ul class="simple">
+</ul>
+</li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">API reference</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../_sources/source_rst/api.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="api-reference">
+<h1>API reference<a class="headerlink" href="#api-reference" title="Permalink to this heading"></a></h1>
+<div class="toctree-wrapper compound">
+</div>
+<span class="target" id="module-ohmpi"></span></section>
+
+
+           </div>
+          </div>
+          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
+        <a href="V2024.x.x/V2024.html" class="btn btn-neutral float-left" title="OhmPi V2023 (64 electrodes and 12V)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/v1.xx/V1_01.html b/doc/build/html/source_rst/v1.xx/V1_01.html
new file mode 100644
index 0000000000000000000000000000000000000000..9cd21884a541e33ae477467144c2896cdb27ad00
--- /dev/null
+++ b/doc/build/html/source_rst/v1.xx/V1_01.html
@@ -0,0 +1,617 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.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 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"> 
+  <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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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>
+<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#technical-data">Technical data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi  configuration</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#os-installation">OS installation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#virtual-environment-and-packages">Virtual Environment and packages</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#a-description">a) Description</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#b-implementation">b) Implementation</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#current-injection-board">Current injection board</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#first-four-electrodes-resistivity-measurement">First four electrodes resistivity measurement</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#multiplexer-implementation">Multiplexer implementation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#electrode-connection">Electrode connection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#startup-procedure">Startup procedure</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#complete-list-of-components">Complete list of components</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V 1.01 (limited to 32 electrodes)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/v1.xx/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">
+<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 heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>This version corresponds to the version published in the Hardware X journal.
+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>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></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">
+<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Parameter</strong></p></td>
+<td><p><strong>Specifications</strong></p></td>
+<td><p>Units</p></td>
+</tr>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>0 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 50</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>36</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>O.O1</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="raspberry-pi-configuration">
+<h2>Raspberry Pi  configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading"></a></h2>
+<section id="os-installation">
+<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading"></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>
+<ol class="arabic simple">
+<li><p>Watch the video “how to set up your raspberry Pi” (<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li>
+</ol>
+<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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/raspbian_version.jpg"><img alt="alternate text" src="source_rst/v1.xx/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
+</figure>
+</div>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly.
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="4">
+<li><p>Open config.txt with GNU nano editor</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="5">
+<li><p>At the end of the file write :</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="6">
+<li><p>Press Ctrl +O to save the modifications and press enter</p></li>
+<li><p>Press Ctrl +x to escape and return to the terminal</p></li>
+<li><p>Close the terminal</p></li>
+</ol>
+</section>
+<section id="virtual-environment-and-packages">
+<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading"></a></h3>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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-environment-on-thonny-python-ide-on-raspberry-pi">
+<h3>Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_first_interface.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_option.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_interpreter.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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 environment should appear</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_interpreter_folder.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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">
+<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 heading"></a></h2>
+<section id="electrical-resistivity-measurements-board">
+<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading"></a></h3>
+<section id="a-description">
+<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading"></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
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design.
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection.
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board,
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been
+set at 50 ohms in order to ensure:
+•       a precise resistance,
+•       a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9)
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit.
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference,
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/schema_measurement_board.jpg"><img alt="alternate text" src="source_rst/v1.xx/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">
+<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading"></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>
+<ul>
+<li><dl>
+<dt>Step no. 1: test divider bridge</dt><dd><blockquote>
+<div><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p>
+</div></blockquote>
+<div class="math notranslate nohighlight">
+\[coef po = (R1 + R2) / R1\]</div>
+<div class="math notranslate nohighlight">
+\[coef p1 = (R3 + R4) / R3\]</div>
+<div class="math notranslate nohighlight">
+\[coef p2 = (R7 + R6) / R7\]</div>
+<div class="math notranslate nohighlight">
+\[coef p3 = (R9 + R8) / R9\]</div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span><span class="w"> </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>
+</pre></div>
+</div>
+<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
+</dd>
+</dl>
+</li>
+<li><p>Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1%.</p></li>
+<li><p>Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%.</p></li>
+<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks</p></li>
+<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code</p></li>
+<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction).</p></li>
+</ul>
+<p>1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a weaker
+or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/measurement_board.jpg"><img alt="alternate text" src="source_rst/v1.xx/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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/measurement_board-2.jpg"><img alt="alternate text" src="source_rst/v1.xx/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">
+<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading"></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
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/current_board.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/installation_current_board.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
+</section>
+<section id="first-four-electrodes-resistivity-measurement">
+<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading"></a></h3>
+<p>Under construction !</p>
+<p>Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit</p>
+</section>
+</section>
+<section id="multiplexer-implementation">
+<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading"></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
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p>
+<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/multiplexer_implementation.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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.
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p>
+<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/connection.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>
+</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.
+*       Follow the diagram and solder the pins as shown in Fig.
+*       Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p>
+<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"></td>
+<td colspan="4"><p>Relay shield n°1</p></td>
+<td><p>Relay Shield n°2</p></td>
+</tr>
+<tr class="row-even"><td><p>Pin 1</p></td>
+<td><p>Pin 2-3</p></td>
+<td><p>Pin 4-7</p></td>
+<td><p>Pin 8-16</p></td>
+<td><p>Pin 1- 16</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer A</p></td>
+<td><p>12</p></td>
+<td><p>16</p></td>
+<td><p>20</p></td>
+<td><p>21</p></td>
+<td><p>26</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer B</p></td>
+<td><p>18</p></td>
+<td><p>23</p></td>
+<td><p>24</p></td>
+<td><p>25</p></td>
+<td><p>19</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer M</p></td>
+<td><p>06</p></td>
+<td><p>13</p></td>
+<td><p>04</p></td>
+<td><p>17</p></td>
+<td><p>27</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer N</p></td>
+<td><p>22</p></td>
+<td><p>10</p></td>
+<td><p>09</p></td>
+<td><p>11</p></td>
+<td><p>05</p></td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<div><p>Connection of the GPIOs to each multiplexer</p>
+</div></blockquote>
+</section>
+<section id="electrode-connection">
+<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading"></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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/cable.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/electrode_cable.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>
+<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">
+<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading"></a></h2>
+<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 heading"></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">
+<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading"></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
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”,
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py”
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be
+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">
+<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading"></a></h3>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">27</span><span class="w"> </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 quadrupole 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 quadrupole</span>
+</pre></div>
+</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">
+<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <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>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/v1.xx/V1_02.html b/doc/build/html/source_rst/v1.xx/V1_02.html
new file mode 100644
index 0000000000000000000000000000000000000000..a53c97a3684b7e4ce1cd5f2accf5623dfc65040f
--- /dev/null
+++ b/doc/build/html/source_rst/v1.xx/V1_02.html
@@ -0,0 +1,624 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.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/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.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 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 V2023 (64 electrodes and 12V)" href="../V2023.x.x/V2023.html" />
+    <link rel="prev" title="OhmPi V 1.01 (limited to 32 electrodes)" href="V1_01.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </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>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">OhmPi V 1.02 (limited to 32 electrodes)</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="#the-philosophy-of-ohmpi">The philosophy of Ohmpi</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#technical-data">Technical data</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#raspberry-pi-configuration">Raspberry Pi  configuration</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#os-installation">OS installation</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#virtual-environment-and-packages">Virtual Environment and packages</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi">Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#assembly-of-the-measuring-current-injection-cards-and-connection-with-the-raspberry-pi">Assembly of the measuring/current injection cards, and connection with the Raspberry Pi</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurements-board">Electrical resistivity measurements board</a><ul>
+<li class="toctree-l4"><a class="reference internal" href="#a-description">a) Description</a></li>
+<li class="toctree-l4"><a class="reference internal" href="#b-implementation">b) Implementation</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="#current-injection-board">Current injection board</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#first-four-electrodes-resistivity-measurement">First four electrodes resistivity measurement</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#multiplexer-implementation">Multiplexer implementation</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#electrode-connection">Electrode connection</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#operating-instruction">Operating instruction</a><ul>
+<li class="toctree-l3"><a class="reference internal" href="#preliminary-procedure-only-for-the-initial-operation">Preliminary procedure (Only for the initial operation)</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#startup-procedure">Startup procedure</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#electrical-resistivity-measurement-parameters-description">Electrical resistivity measurement parameters description</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="#complete-list-of-components">Complete list of components</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="../V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V 1.02 (limited to 32 electrodes)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/v1.xx/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">
+<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 heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<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">
+<h2>The philosophy of Ohmpi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></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">
+<h2>Technical data<a class="headerlink" href="#technical-data" title="Permalink to this heading"></a></h2>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td><p><strong>Parameter</strong></p></td>
+<td><p><strong>Specifications</strong></p></td>
+<td><p>Units</p></td>
+</tr>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>0 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 50</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>36</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>O.O1</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="raspberry-pi-configuration">
+<h2>Raspberry Pi  configuration<a class="headerlink" href="#raspberry-pi-configuration" title="Permalink to this heading"></a></h2>
+<section id="os-installation">
+<h3>OS installation<a class="headerlink" href="#os-installation" title="Permalink to this heading"></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>
+<ol class="arabic simple">
+<li><p>Watch the video “how to set up your raspberry Pi” (<a class="reference external" href="https://www.youtube.com/watch?v=wjWZhV1v3Pk">https://www.youtube.com/watch?v=wjWZhV1v3Pk</a>)</p></li>
+<li><p>The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer).</p></li>
+</ol>
+<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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/raspbian_version.jpg"><img alt="alternate text" src="source_rst/v1.xx/raspbian_version.jpg" style="width: 800px; height: 400px;" /></a>
+</figure>
+</div>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>Once the OS has been installed,  <strong>1-wire, spi and GPIO remote option</strong> must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.</p>
+</div>
+<p>3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly.
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.</p>
+<blockquote>
+<div><p>Run the terminal, and write</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">cd</span> <span class="o">/</span><span class="n">boot</span><span class="o">/</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="4">
+<li><p>Open config.txt with GNU nano editor</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">nano</span> <span class="n">config</span><span class="o">.</span><span class="n">txt</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="5">
+<li><p>At the end of the file write :</p></li>
+</ol>
+<blockquote>
+<div><div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gpio</span><span class="o">=</span><span class="mi">8</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+<span class="n">gpio</span><span class="o">=</span><span class="mi">7</span><span class="o">=</span><span class="n">op</span><span class="p">,</span><span class="n">dl</span>
+</pre></div>
+</div>
+</div></blockquote>
+<ol class="arabic simple" start="6">
+<li><p>Press Ctrl +O to save the modifications and press enter</p></li>
+<li><p>Press Ctrl +x to escape and return to the terminal</p></li>
+<li><p>Close the terminal</p></li>
+</ol>
+</section>
+<section id="virtual-environment-and-packages">
+<h3>Virtual Environment and packages<a class="headerlink" href="#virtual-environment-and-packages" title="Permalink to this heading"></a></h3>
+<p>All dependencies are specified in requirements.txt</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>All instructions below should be typed in the terminal</p>
+</div>
+<p>It is first necessary to ensure that the libatlas-base-dev library is installed:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> <span class="n">libatlas</span><span class="o">-</span><span class="n">base</span><span class="o">-</span><span class="n">dev</span>
+</pre></div>
+</div>
+<p>We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.</p>
+<p>Create the virtual environment:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">venv</span> <span class="n">ohmpy</span>
+</pre></div>
+</div>
+<p>Activate it using the following command:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">source</span> <span class="n">ohmpy</span><span class="o">/</span><span class="nb">bin</span><span class="o">/</span><span class="n">activate</span>
+</pre></div>
+</div>
+<p>Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">RPi</span><span class="o">.</span><span class="n">GPIO</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">blinka</span> <span class="n">numpy</span> <span class="n">adafruit</span><span class="o">-</span><span class="n">circuitpython</span><span class="o">-</span><span class="n">ads1x15</span> <span class="n">pandas</span>
+</pre></div>
+</div>
+<p>Check that requirements are met using</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="nb">list</span>
+</pre></div>
+</div>
+<p>You should run you code within the virtual environment
+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-environment-on-thonny-python-ide-on-raspberry-pi">
+<h3>Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)<a class="headerlink" href="#activate-virtual-environment-on-thonny-python-ide-on-raspberry-pi" title="Permalink to this heading"></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 raspberry access <strong>menu &gt; programming&gt; Thonny pythonIDE</strong></p>
+<p>2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_first_interface.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_first_interface.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>3-Click on <strong>Run&gt;select interpreter</strong>, a new window opens click on interpret</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_option.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_option.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<p>4-On the new open windows select <strong>alternative Python3 or virtual environment</strong></p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_interpreter.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_interpreter.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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 environment should appear</p>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/thonny_interpreter_folder.jpg"><img alt="alternate text" src="source_rst/v1.xx/thonny_interpreter_folder.jpg" style="width: 600px; height: 450px;" /></a>
+</figure>
+<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">
+<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 heading"></a></h2>
+<section id="electrical-resistivity-measurements-board">
+<h3>Electrical resistivity measurements board<a class="headerlink" href="#electrical-resistivity-measurements-board" title="Permalink to this heading"></a></h3>
+<section id="a-description">
+<h4>a) Description<a class="headerlink" href="#a-description" title="Permalink to this heading"></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
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design.
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection.
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board,
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been
+set at 50 ohms in order to ensure:
+•       a precise resistance,
+•       a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9)
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit.
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference,
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let’s note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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.
+In version 1.02, we have improved the electronic board of measurement. we have added a DC/DC converter to supply the operational amplifiers
+(2 Traco power DC/DC converter TRN3-1215). These converters allow to limit the suppression of the signal when the injected voltage is higher than 10V.
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/schema_measurement_board1_02.png"><img alt="alternate text" src="source_rst/v1.xx/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>
+<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">
+<h4>b) Implementation<a class="headerlink" href="#b-implementation" title="Permalink to this heading"></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>
+<ul>
+<li><dl>
+<dt>Step no. 1: test divider bridge</dt><dd><blockquote>
+<div><p>For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..</p>
+</div></blockquote>
+<div class="math notranslate nohighlight">
+\[coef po = (R1 + R2) / R1\]</div>
+<div class="math notranslate nohighlight">
+\[coef p1 = (R3 + R4) / R3\]</div>
+<div class="math notranslate nohighlight">
+\[coef p2 = (R7 + R6) / R7\]</div>
+<div class="math notranslate nohighlight">
+\[coef p3 = (R9 + R8) / R9\]</div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="linenos">36</span><span class="w"> </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>
+</pre></div>
+</div>
+<p>The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.</p>
+</dd>
+</dl>
+</li>
+<li><p>Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1% (b-in the figure).</p></li>
+<li><p>Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%(C-in the figure).</p></li>
+<li><p>Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (c-in the figure)</p></li>
+<li><p>Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code (d-in the figure)</p></li>
+<li><p>Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the orientation) (e-in the figure).</p></li>
+<li><p>Step no. 7: installation of the 10-MOhm resistors with an accuracy of ± 5% (f-in the figure).</p></li>
+<li><p>Step no. 8: installation of the two DC/DC converter TRN3-1215 (h-in the figure).</p></li>
+<li><p>Step no. 9: installation of the four capacitor on 100-nF/50vDC and the fuse of 10-A (h-in the figure).</p></li>
+</ul>
+<p>1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/measurement_board1-02.jpg"><img alt="alternate text" src="source_rst/v1.xx/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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/measurement_board-2-V1-02.jpg"><img alt="alternate text" src="source_rst/v1.xx/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">
+<h3>Current injection board<a class="headerlink" href="#current-injection-board" title="Permalink to this heading"></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
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/current_board.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/installation_current_board_1_02.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>Congratulations, you have build a 4 electrodes resistivity-meter.</p>
+</section>
+<section id="first-four-electrodes-resistivity-measurement">
+<h3>First four electrodes resistivity measurement<a class="headerlink" href="#first-four-electrodes-resistivity-measurement" title="Permalink to this heading"></a></h3>
+<p>Under construction !</p>
+<p>Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit</p>
+</section>
+</section>
+<section id="multiplexer-implementation">
+<h2>Multiplexer implementation<a class="headerlink" href="#multiplexer-implementation" title="Permalink to this heading"></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
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.</p>
+<p>We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/multiplexer_implementation.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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.
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.</p>
+<p>Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/connection.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>
+</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.
+*       Follow the diagram and solder the pins as shown in Fig.
+*       Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.</p>
+<p>For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.</p>
+<table class="docutils align-default">
+<tbody>
+<tr class="row-odd"><td rowspan="2"></td>
+<td colspan="4"><p>Relay shield n°1</p></td>
+<td><p>Relay Shield n°2</p></td>
+</tr>
+<tr class="row-even"><td><p>Pin 1</p></td>
+<td><p>Pin 2-3</p></td>
+<td><p>Pin 4-7</p></td>
+<td><p>Pin 8-16</p></td>
+<td><p>Pin 1- 16</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer A</p></td>
+<td><p>12</p></td>
+<td><p>16</p></td>
+<td><p>20</p></td>
+<td><p>21</p></td>
+<td><p>26</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer B</p></td>
+<td><p>18</p></td>
+<td><p>23</p></td>
+<td><p>24</p></td>
+<td><p>25</p></td>
+<td><p>19</p></td>
+</tr>
+<tr class="row-odd"><td><p>Multiplexer M</p></td>
+<td><p>06</p></td>
+<td><p>13</p></td>
+<td><p>04</p></td>
+<td><p>17</p></td>
+<td><p>27</p></td>
+</tr>
+<tr class="row-even"><td><p>Multiplexer N</p></td>
+<td><p>22</p></td>
+<td><p>10</p></td>
+<td><p>09</p></td>
+<td><p>11</p></td>
+<td><p>05</p></td>
+</tr>
+</tbody>
+</table>
+<blockquote>
+<div><p>Connection of the GPIOs to each multiplexer</p>
+</div></blockquote>
+</section>
+<section id="electrode-connection">
+<h2>Electrode connection<a class="headerlink" href="#electrode-connection" title="Permalink to this heading"></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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/cable.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>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">
+<a class="reference internal image-reference" href="source_rst/v1.xx/electrode_cable.jpg"><img alt="alternate text" src="source_rst/v1.xx/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>
+<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">
+<h2>Operating instruction<a class="headerlink" href="#operating-instruction" title="Permalink to this heading"></a></h2>
+<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 heading"></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">
+<h3>Startup procedure<a class="headerlink" href="#startup-procedure" title="Permalink to this heading"></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
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you’ll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”,
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py”
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be
+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">
+<h3>Electrical resistivity measurement parameters description<a class="headerlink" href="#electrical-resistivity-measurement-parameters-description" title="Permalink to this heading"></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 quadrupole 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 quadrupole</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>
+</pre></div>
+</div>
+</section>
+</section>
+<section id="complete-list-of-components">
+<h2>Complete list of components<a class="headerlink" href="#complete-list-of-components" title="Permalink to this heading"></a></h2>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p>The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date</p>
+</div>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <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="../V2023.x.x/V2023.html" class="btn btn-neutral float-right" title="OhmPi V2023 (64 electrodes and 12V)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/build/html/source_rst/v1.xx/V2023.html b/doc/build/html/source_rst/v1.xx/V2023.html
new file mode 100644
index 0000000000000000000000000000000000000000..bdc1984a71cf55e413843551929cf10ebc5911d2
--- /dev/null
+++ b/doc/build/html/source_rst/v1.xx/V2023.html
@@ -0,0 +1,442 @@
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
+
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <title>OhmPi V2023 (64 electrodes and 12V) &mdash; OhmPi open hardware resistivity-meter documentation</title>
+      <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+      <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <!--[if lt IE 9]>
+    <script src="../../_static/js/html5shiv.min.js"></script>
+  <![endif]-->
+  
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/js/theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" /> 
+</head>
+
+<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">
+            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" aria-label="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
+              <ul>
+<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>
+<li class="toctree-l1"><a class="reference internal" href="V1_02.html">OhmPi V 1.02 (limited to 32 electrodes)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2023.x.x/V2023.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../V2024.x.x/V2024.html">OhmPi V2023 (64 electrodes and 12V)</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">API reference</a></li>
+</ul>
+
+        </div>
+      </div>
+    </nav>
+
+    <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="Page navigation">
+  <ul class="wy-breadcrumbs">
+      <li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
+      <li class="breadcrumb-item active">OhmPi V2023 (64 electrodes and 12V)</li>
+      <li class="wy-breadcrumbs-aside">
+            <a href="../../_sources/source_rst/v1.xx/V2023.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-v2023-64-electrodes-and-12v">
+<h1>OhmPi V2023 (64 electrodes and 12V)<a class="headerlink" href="#ohmpi-v2023-64-electrodes-and-12v" title="Permalink to this heading"></a></h1>
+<div class="admonition warning">
+<p class="admonition-title">Warning</p>
+<p><strong>OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.</strong></p>
+</div>
+<figure class="align-center">
+<a class="reference internal image-reference" href="source_rst/v1.xx/image_ohmpi_2.jpg"><img alt="OhmPi V: 2023.0.0-rc1" src="source_rst/v1.xx/image_ohmpi_2.jpg" style="width: 400px; height: 350px;" /></a>
+</figure>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<blockquote>
+<div><p>In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+This new version is made up of:</p>
+<ol class="arabic simple">
+<li><p>A measurement board for four-point measurement</p></li>
+<li><p>4 multiplexer cards</p></li>
+<li><p>A box</p></li>
+</ol>
+</div></blockquote>
+<p>The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.</p>
+</div>
+<section id="the-philosophy-of-ohmpi">
+<h2>The philosophy of OhmPi<a class="headerlink" href="#the-philosophy-of-ohmpi" title="Permalink to this heading"></a></h2>
+<p>The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one.
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.</p>
+</section>
+<hr class="docutils" />
+<section id="hardware">
+<h2>Hardware<a class="headerlink" href="#hardware" title="Permalink to this heading"></a></h2>
+<section id="specifications">
+<h3>Specifications<a class="headerlink" href="#specifications" title="Permalink to this heading"></a></h3>
+<table class="docutils align-default">
+<thead>
+<tr class="row-odd"><th class="head"><p><strong>Parameter</strong></p></th>
+<th class="head"><p><strong>V1.0x</strong></p></th>
+<th class="head"><p>Units</p></th>
+<th class="head"><p><strong>v2023</strong></p></th>
+<th class="head"><p>Units</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>Electrodes</p></td>
+<td><p>32</p></td>
+<td></td>
+<td><p>64 to 128</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Operating temperature</p></td>
+<td><p>-0 to 50</p></td>
+<td><p>°c</p></td>
+<td><p>-25 to 50</p></td>
+<td><p>°C</p></td>
+</tr>
+<tr class="row-even"><td><p>Power consumption of CPU and
+control system</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+<td><p>18.5</p></td>
+<td><p>W</p></td>
+</tr>
+<tr class="row-odd"><td><p>Voltage injection</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-even"><td><p>Battery</p></td>
+<td><p>9</p></td>
+<td><p>V</p></td>
+<td><p>12</p></td>
+<td><p>V</p></td>
+</tr>
+<tr class="row-odd"><td><p>Current</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+<td><p>0 to 40</p></td>
+<td><p>mA</p></td>
+</tr>
+<tr class="row-even"><td><p>Min pulse duration</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+<td><p>150</p></td>
+<td><p>ms</p></td>
+</tr>
+<tr class="row-odd"><td><p>Input impedance</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+<td><p>80</p></td>
+<td><p>MOhm</p></td>
+</tr>
+<tr class="row-even"><td><p>Data storage</p></td>
+<td><p>micro SD card</p></td>
+<td></td>
+<td><p>micro SD card</p></td>
+<td></td>
+</tr>
+<tr class="row-odd"><td><p>Resolution</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+<td><p>0.01</p></td>
+<td><p>Ohm</p></td>
+</tr>
+</tbody>
+</table>
+</section>
+<section id="building-an-ohmpi-v2023-step-by-step">
+<h3>Building an OhmPi V2023 step by step<a class="headerlink" href="#building-an-ohmpi-v2023-step-by-step" title="Permalink to this heading"></a></h3>
+<div class="toctree-wrapper compound">
+</div>
+</section>
+</section>
+<section id="software-and-operation">
+<h2>Software and operation<a class="headerlink" href="#software-and-operation" title="Permalink to this heading"></a></h2>
+<section id="system-architecture">
+<h3>System architecture<a class="headerlink" href="#system-architecture" title="Permalink to this heading"></a></h3>
+<p>The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.</p>
+<figure class="align-default" id="id4">
+<img alt="source_rst/v1.xx/img/architecture.png" src="source_rst/v1.xx/img/architecture.png" />
+<figcaption>
+<p><span class="caption-text">Software architecture of OhmPi V2023.</span><a class="headerlink" href="#id4" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>The general system configuration is defined in the <cite>config.py</cite> file covered in the <a class="reference internal" href="#configuration-file">Configuration file</a> section.
+The acquisition settings (i.e. injection duration, stacks…) are defined in a separate JSON file (default: ohmpi_settings.json).</p>
+<p>The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the <a class="reference internal" href="#loggers">Loggers</a> section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see <a class="reference internal" href="#interfaces-and-applications">Interfaces and applications</a>).</p>
+</section>
+<section id="loggers">
+<h3>Loggers<a class="headerlink" href="#loggers" title="Permalink to this heading"></a></h3>
+<p>Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a> for more details) and one for creating zipped rotated logs on disk).</p>
+<p>Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.</p>
+<p>By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the <a class="reference internal" href="#configuration-file">Configuration file</a>.</p>
+<p>Advanced users may write new handlers and edit the <cite>setup_loggers.py</cite> file to customize the logging mechanisms to their needs.</p>
+</section>
+<section id="configuration-file">
+<h3>Configuration file<a class="headerlink" href="#configuration-file" title="Permalink to this heading"></a></h3>
+<p>The configuration of the OhmPi file <cite>config.py</cite> allows to configure the OhmPi.
+A default version of <cite>config.py</cite> is provided in the repository.
+This file should be edited to customize the configuration following the user’s needs and preferences.</p>
+<p>The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options…)</p>
+<p>One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.</p>
+</section>
+<section id="interfaces-and-applications">
+<h3>Interfaces and applications<a class="headerlink" href="#interfaces-and-applications" title="Permalink to this heading"></a></h3>
+<p>Different interfaces can be used to interact with the OhmPi.</p>
+<p>Available interfaces are:
+- <a class="reference internal" href="#web-interface">Web interface</a> (=HTTP interface): run in bash: <cite>bash run_http_interface.sh</cite>
+- Python API: import the OhmPi class from Python script: <cite>from ohmpi import OhmPi</cite> (see <a class="reference internal" href="#python-interface">Python interface</a>)
+- MQTT: IoT messaging through a broker (see <a class="reference internal" href="#mqtt-interface">MQTT interface</a>)</p>
+<section id="web-interface">
+<h4>Web interface<a class="headerlink" href="#web-interface" title="Permalink to this heading"></a></h4>
+<p>This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.</p>
+<p>The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the ‘index.html’ interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.</p>
+<p>To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on <a class="reference external" href="https://raspap.com/">raspap.com</a> and in ‘runOnStart.sh’.</p>
+<p>Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to <a class="reference external" href="http://10.3.141.1:8080">10.3.141.1:8080</a>
+to access the interface.</p>
+<figure class="align-default" id="id5">
+<img alt="source_rst/v1.xx/img/http-interface-pseudo-section.png" src="source_rst/v1.xx/img/http-interface-pseudo-section.png" />
+<figcaption>
+<p><span class="caption-text">Web interface with its interactive pseudo-section.</span><a class="headerlink" href="#id5" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id6">
+<img alt="source_rst/v1.xx/img/http-interface-evolution.png" src="source_rst/v1.xx/img/http-interface-evolution.png" />
+<figcaption>
+<p><span class="caption-text">Evolution of quadrupole apparent resistivity with time.</span><a class="headerlink" href="#id6" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id7">
+<img alt="source_rst/v1.xx/img/http-interface-rs.png" src="source_rst/v1.xx/img/http-interface-rs.png" />
+<figcaption>
+<p><span class="caption-text">Contact resistance check.</span><a class="headerlink" href="#id7" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+</section>
+<section id="python-interface">
+<h4>Python interface<a class="headerlink" href="#python-interface" title="Permalink to this heading"></a></h4>
+<p>This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.</p>
+<p>By importing the <cite>OhmPi</cite> class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).</p>
+<p>To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).</p>
+<div class="literal-block-wrapper docutils container" id="id8">
+<div class="code-block-caption"><span class="caption-text">Example of using the Python API to control OhmPi</span><a class="headerlink" href="#id8" title="Permalink to this code"></a></div>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+<span class="kn">import</span> <span class="nn">time</span>
+<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;/home/pi/OhmPi&quot;</span><span class="p">)</span>
+<span class="kn">from</span> <span class="nn">ohmpi</span> <span class="kn">import</span> <span class="n">OhmPi</span>
+
+<span class="c1">### Define object from class OhmPi</span>
+<span class="n">k</span> <span class="o">=</span> <span class="n">OhmPi</span><span class="p">()</span>  <span class="c1"># this loads default parameters from the disk</span>
+
+<span class="c1">### Default parameters can also be edited manually</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;injection_duration&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mf">0.5</span>  <span class="c1"># injection time in seconds</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_stack&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># one stack is two half-cycles</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nbr_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span>  <span class="c1"># number of time the sequence is repeated</span>
+
+<span class="c1">### Update settings if needed</span>
+<span class="n">k</span><span class="o">.</span><span class="n">update_settings</span><span class="p">({</span><span class="s2">&quot;injection_duration&quot;</span><span class="p">:</span><span class="mf">0.2</span><span class="p">})</span>
+
+<span class="c1">### Set or load sequence</span>
+<span class="n">k</span><span class="o">.</span><span class="n">sequence</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">]])</span>    <span class="c1"># set numpy array of shape (n,4)</span>
+<span class="c1"># k.set_sequence(&#39;1 2 3 4\n2 3 4 5&#39;)    # call function set_sequence and pass a string</span>
+<span class="c1"># k.load_sequence(&#39;ABMN.txt&#39;)    # load sequence from a local file</span>
+
+<span class="c1">### Run contact resistance check</span>
+<span class="n">k</span><span class="o">.</span><span class="n">rs_check</span><span class="p">()</span>
+
+<span class="c1">### Run sequence (synchronously - it will wait that all</span>
+<span class="c1"># sequence is measured before returning the prompt</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_sequence</span><span class="p">()</span>
+<span class="c1"># k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately</span>
+<span class="c1"># time.sleep(2)</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Run multiple sequences at given time interval</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;nb_meas&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">3</span>  <span class="c1"># run sequence three times</span>
+<span class="n">k</span><span class="o">.</span><span class="n">settings</span><span class="p">[</span><span class="s1">&#39;sequence_delay&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># every 100 s</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_multiple_sequences</span><span class="p">()</span>  <span class="c1"># asynchron</span>
+<span class="c1"># k.interrupt()  # kill the asynchron sequence</span>
+
+<span class="c1">### Single measurement can also be taken with</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_on</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">()</span>  <span class="c1"># use default acquisition parameters</span>
+<span class="n">k</span><span class="o">.</span><span class="n">switch_mux_off</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">])</span>  <span class="c1"># don&#39;t forget this! risk of short-circuit</span>
+
+<span class="c1">### Custom or adaptative argument, see help(k.run_measurement)</span>
+<span class="n">k</span><span class="o">.</span><span class="n">run_measurement</span><span class="p">(</span><span class="n">nb_stack</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span>  <span class="c1"># do 4 stacks (8 half-cycles)</span>
+                  <span class="n">injection_duration</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>  <span class="c1"># inject for 2 seconds</span>
+                  <span class="n">autogain</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>  <span class="c1"># adapt gain of ADS to get good resolution</span>
+</pre></div>
+</div>
+</div>
+</section>
+<section id="mqtt-interface">
+<h4>MQTT interface<a class="headerlink" href="#mqtt-interface" title="Permalink to this heading"></a></h4>
+<p>This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.</p>
+<p>This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.</p>
+<p>An example of MQTT broker that can be used is <a class="reference external" href="https://mosquitto.org/">Mosquitto</a>. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.</p>
+<p>MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as <a class="reference external" href="http://mqtt-explorer.com/">MQTT Explorer</a>.</p>
+<p>Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:</p>
+<div class="literal-block-wrapper docutils container" id="id9">
+<div class="code-block-caption"><span class="caption-text">Updating acquisition settings.</span><a class="headerlink" href="#id9" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span>{
+  &quot;cmd_id&quot;: &quot;3fzxv121UITwGjWYgcz4xw&quot;,
+  &quot;cmd&quot;: &quot;update_settings&quot;, Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+  &quot;kwargs&quot;: {
+    &quot;config&quot;: {
+      &quot;nb_meas&quot;: 2,
+      &quot;nb_electrodes&quot;: 10,
+      &quot;nb_stack&quot;: 2,
+      &quot;injection_duration&quot;: 2,
+      &quot;sequence_delay&quot;: 100
+    }
+  }
+}
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id10">
+<div class="code-block-caption"><span class="caption-text">Check contact resistances</span><a class="headerlink" href="#id10" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;rs_check&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id11">
+<div class="code-block-caption"><span class="caption-text">Running a sequence.</span><a class="headerlink" href="#id11" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_sequence&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id12">
+<div class="code-block-caption"><span class="caption-text">Running same sequence multiple times (nb_meas).</span><a class="headerlink" href="#id12" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4Yw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;run_multiple_sequences&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="literal-block-wrapper docutils container" id="id13">
+<div class="code-block-caption"><span class="caption-text">Interrupt current acquisition.</span><a class="headerlink" href="#id13" title="Permalink to this code"></a></div>
+<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+<span class="w">  </span><span class="nt">&quot;cmd_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;3fzxv121UITwGjWYgcz4xw&quot;</span><span class="p">,</span>
+<span class="w">  </span><span class="nt">&quot;cmd&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;interrupt&quot;</span><span class="p">,</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<p>Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as <a class="reference external" href="http://mqtt-explorer.com/">Node-red</a>.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component.</p>
+<p>Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :</p>
+<p>These examples may require installing some additional node packages in order to work properly. This can be done in the <a href="#id2"><span class="problematic" id="id3">`</span></a>Palette Manager &lt;<a class="reference external" href="https://nodered.org/docs/user-guide/editor/palette/manager">https://nodered.org/docs/user-guide/editor/palette/manager</a>&gt; within Node-RED.</p>
+<figure class="align-default" id="id14">
+<img alt="source_rst/v1.xx/img/node-red_flow.png" src="source_rst/v1.xx/img/node-red_flow.png" />
+<figcaption>
+<p><span class="caption-text">Example flow in node-red to interact with an OhmPi.</span><a class="headerlink" href="#id14" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id15">
+<img alt="source_rst/v1.xx/img/node-red_interface_control.png" src="source_rst/v1.xx/img/node-red_interface_control.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.</span><a class="headerlink" href="#id15" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<figure class="align-default" id="id16">
+<img alt="source_rst/v1.xx/img/node-red_interface_data.png" src="source_rst/v1.xx/img/node-red_interface_data.png" />
+<figcaption>
+<p><span class="caption-text">Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.</span><a class="headerlink" href="#id16" title="Permalink to this image"></a></p>
+</figcaption>
+</figure>
+<p>For more documentation dedicated to node-red, please refer to the Node-red <a class="reference external" href="https://cookbook.nodered.org/">cookbooks</a>.</p>
+</section>
+</section>
+</section>
+</section>
+
+
+           </div>
+          </div>
+          <footer>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; Copyright 2022, the OhmPi Team..</p>
+  </div>
+
+  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>
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/doc/source/list - 1_02.csv b/doc/source/bom_list/list - 1_02.csv
similarity index 100%
rename from doc/source/list - 1_02.csv
rename to doc/source/bom_list/list - 1_02.csv
diff --git a/doc/source/list.csv b/doc/source/bom_list/list.csv
similarity index 100%
rename from doc/source/list.csv
rename to doc/source/bom_list/list.csv
diff --git a/doc/source/list.xlsx b/doc/source/bom_list/list.xlsx
similarity index 100%
rename from doc/source/list.xlsx
rename to doc/source/bom_list/list.xlsx
diff --git a/doc/source/ige.png b/doc/source/ige.png
deleted file mode 100644
index 772ddd99b7baf222f7d82559c86d12e5b3450083..0000000000000000000000000000000000000000
Binary files a/doc/source/ige.png and /dev/null differ
diff --git a/doc/source/cable.jpg b/doc/source/img/v1.xx/cable.jpg
similarity index 100%
rename from doc/source/cable.jpg
rename to doc/source/img/v1.xx/cable.jpg
diff --git a/doc/source/connection.jpg b/doc/source/img/v1.xx/connection.jpg
similarity index 100%
rename from doc/source/connection.jpg
rename to doc/source/img/v1.xx/connection.jpg
diff --git a/doc/source/current_board.jpg b/doc/source/img/v1.xx/current_board.jpg
similarity index 100%
rename from doc/source/current_board.jpg
rename to doc/source/img/v1.xx/current_board.jpg
diff --git a/doc/source/electrode_cable.jpg b/doc/source/img/v1.xx/electrode_cable.jpg
similarity index 100%
rename from doc/source/electrode_cable.jpg
rename to doc/source/img/v1.xx/electrode_cable.jpg
diff --git a/doc/source/installation_current_board.jpg b/doc/source/img/v1.xx/installation_current_board.jpg
similarity index 100%
rename from doc/source/installation_current_board.jpg
rename to doc/source/img/v1.xx/installation_current_board.jpg
diff --git a/doc/source/installation_current_board_1_02.jpg b/doc/source/img/v1.xx/installation_current_board_1_02.jpg
similarity index 100%
rename from doc/source/installation_current_board_1_02.jpg
rename to doc/source/img/v1.xx/installation_current_board_1_02.jpg
diff --git a/doc/source/measurement_board-2-V1-02.jpg b/doc/source/img/v1.xx/measurement_board-2-V1-02.jpg
similarity index 100%
rename from doc/source/measurement_board-2-V1-02.jpg
rename to doc/source/img/v1.xx/measurement_board-2-V1-02.jpg
diff --git a/doc/source/measurement_board-2.jpg b/doc/source/img/v1.xx/measurement_board-2.jpg
similarity index 100%
rename from doc/source/measurement_board-2.jpg
rename to doc/source/img/v1.xx/measurement_board-2.jpg
diff --git a/doc/source/measurement_board.jpg b/doc/source/img/v1.xx/measurement_board.jpg
similarity index 100%
rename from doc/source/measurement_board.jpg
rename to doc/source/img/v1.xx/measurement_board.jpg
diff --git a/doc/source/measurement_board1-02.jpg b/doc/source/img/v1.xx/measurement_board1-02.jpg
similarity index 100%
rename from doc/source/measurement_board1-02.jpg
rename to doc/source/img/v1.xx/measurement_board1-02.jpg
diff --git a/doc/source/multiplexer_implementation.jpg b/doc/source/img/v1.xx/multiplexer_implementation.jpg
similarity index 100%
rename from doc/source/multiplexer_implementation.jpg
rename to doc/source/img/v1.xx/multiplexer_implementation.jpg
diff --git a/doc/source/schema_measurement_board1_02.png b/doc/source/img/v1.xx/schema_measurement_board1_02.png
similarity index 100%
rename from doc/source/schema_measurement_board1_02.png
rename to doc/source/img/v1.xx/schema_measurement_board1_02.png
diff --git a/doc/source/web_site.jpg b/doc/source/img/v1.xx/web_site.jpg
similarity index 100%
rename from doc/source/web_site.jpg
rename to doc/source/img/v1.xx/web_site.jpg
diff --git a/doc/source/img/v2023.x.x/image_ohmpi_2.jpg b/doc/source/img/v2023.x.x/image_ohmpi_2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d496aff74e226f6b0c683b983230273f7dd078ec
Binary files /dev/null and b/doc/source/img/v2023.x.x/image_ohmpi_2.jpg differ
diff --git a/doc/source/Ohmpi_V2023/step_n_1/raspbian_version.jpg b/doc/source/img/v2023.x.x/step_n_1/raspbian_version.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/raspbian_version.jpg
rename to doc/source/img/v2023.x.x/step_n_1/raspbian_version.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_1/schema_measurement_board.jpg b/doc/source/img/v2023.x.x/step_n_1/schema_measurement_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/schema_measurement_board.jpg
rename to doc/source/img/v2023.x.x/step_n_1/schema_measurement_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_1/thonny_first_interface.jpg b/doc/source/img/v2023.x.x/step_n_1/thonny_first_interface.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/thonny_first_interface.jpg
rename to doc/source/img/v2023.x.x/step_n_1/thonny_first_interface.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_1/thonny_interpreter.jpg b/doc/source/img/v2023.x.x/step_n_1/thonny_interpreter.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/thonny_interpreter.jpg
rename to doc/source/img/v2023.x.x/step_n_1/thonny_interpreter.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_1/thonny_interpreter_folder.jpg b/doc/source/img/v2023.x.x/step_n_1/thonny_interpreter_folder.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/thonny_interpreter_folder.jpg
rename to doc/source/img/v2023.x.x/step_n_1/thonny_interpreter_folder.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_1/thonny_option.jpg b/doc/source/img/v2023.x.x/step_n_1/thonny_option.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_1/thonny_option.jpg
rename to doc/source/img/v2023.x.x/step_n_1/thonny_option.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/00_mes_board_components.jpg b/doc/source/img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/00_mes_board_components.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/00_mes_board_components.jpg.gsr2 b/doc/source/img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg.gsr2
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/00_mes_board_components.jpg.gsr2
rename to doc/source/img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg.gsr2
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/01_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/01_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/01_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/01_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/02_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/02_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/02_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/02_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/03_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/03_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/03_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/03_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/04_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/04_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/04_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/04_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/05_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/05_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/05_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/05_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/06_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/06_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/06_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/06_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/07_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/07_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/07_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/07_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/08_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/08_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/08_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/08_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/09_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/09_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/09_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/09_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/0_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/0_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/0_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/0_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/10_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/10_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/10_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/10_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/11_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/11_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/11_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/11_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/12_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/12_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/12_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/12_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/13_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/13_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/13_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/13_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/14_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/14_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/14_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/14_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/15_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/15_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/15_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/15_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/16_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/16_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/16_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/16_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/17_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/17_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/17_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/17_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/18_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/18_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/18_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/18_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/19_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/19_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/19_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/19_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/20_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/20_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/20_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/20_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/21_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/21_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/21_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/21_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/22_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/22_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/22_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/22_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/23_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/23_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/23_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/23_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/24_mes_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/24_mes_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/24_mes_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/24_mes_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/list_of_components.srf b/doc/source/img/v2023.x.x/step_n_2/a/list_of_components.srf
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/list_of_components.srf
rename to doc/source/img/v2023.x.x/step_n_2/a/list_of_components.srf
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/measure_board_list_2_xx.csv b/doc/source/img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/measure_board_list_2_xx.csv
rename to doc/source/img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv
diff --git a/doc/source/Ohmpi_V2023/step_n_2/a/schema_measurement_board.jpg b/doc/source/img/v2023.x.x/step_n_2/a/schema_measurement_board.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/a/schema_measurement_board.jpg
rename to doc/source/img/v2023.x.x/step_n_2/a/schema_measurement_board.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/001.jpg b/doc/source/img/v2023.x.x/step_n_2/b/001.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/001.jpg
rename to doc/source/img/v2023.x.x/step_n_2/b/001.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/002.jpg b/doc/source/img/v2023.x.x/step_n_2/b/002.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/002.jpg
rename to doc/source/img/v2023.x.x/step_n_2/b/002.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/003.jpg b/doc/source/img/v2023.x.x/step_n_2/b/003.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/003.jpg
rename to doc/source/img/v2023.x.x/step_n_2/b/003.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/004.jpg b/doc/source/img/v2023.x.x/step_n_2/b/004.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/004.jpg
rename to doc/source/img/v2023.x.x/step_n_2/b/004.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/005.jpg b/doc/source/img/v2023.x.x/step_n_2/b/005.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/005.jpg
rename to doc/source/img/v2023.x.x/step_n_2/b/005.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/b/test_2_xx.csv b/doc/source/img/v2023.x.x/step_n_2/b/test_2_xx.csv
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/b/test_2_xx.csv
rename to doc/source/img/v2023.x.x/step_n_2/b/test_2_xx.csv
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210904_214109.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210904_214109.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210904_214109.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210904_214109.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_121859.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_121859.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_121859.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_121859.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_121904.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_121904.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_121904.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_121904.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_121917.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_121917.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_121917.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_121917.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_121926.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_121926.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_121926.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_121926.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_121933.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_121933.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_121933.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_121933.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122447.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122447.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122447.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122447.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122454.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122454.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122454.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122454.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122546.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122546.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122546.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122546.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122547.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122547.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122547.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122547.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122603.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122603.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122603.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122603.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122627.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122627.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122627.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122627.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122801.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122801.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122801.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122801.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_122820.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_122820.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_122820.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_122820.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_123034.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_123034.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_123034.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_123034.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_132856.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_132856.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_132856.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_132856.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20210905_210045.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20210905_210045.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20210905_210045.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20210905_210045.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20211206_144334.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20211206_144334.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20211206_144334.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20211206_144334.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/20211206_150522.jpg b/doc/source/img/v2023.x.x/step_n_2/c/20211206_150522.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/20211206_150522.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/20211206_150522.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/Inked20211206_150522_LI.jpg b/doc/source/img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/Inked20211206_150522_LI.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/Inked20211206_150522_LI2.jpg b/doc/source/img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/Inked20211206_150522_LI2.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/i2cdetect.png b/doc/source/img/v2023.x.x/step_n_2/c/i2cdetect.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/i2cdetect.png
rename to doc/source/img/v2023.x.x/step_n_2/c/i2cdetect.png
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/ref_circuit.png b/doc/source/img/v2023.x.x/step_n_2/c/ref_circuit.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/ref_circuit.png
rename to doc/source/img/v2023.x.x/step_n_2/c/ref_circuit.png
diff --git a/doc/source/Ohmpi_V2023/step_n_2/c/thonny_first_interface.jpg b/doc/source/img/v2023.x.x/step_n_2/c/thonny_first_interface.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_2/c/thonny_first_interface.jpg
rename to doc/source/img/v2023.x.x/step_n_2/c/thonny_first_interface.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/MUX_board_list_2_xx.csv b/doc/source/img/v2023.x.x/step_n_3/MUX_board_list_2_xx.csv
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/MUX_board_list_2_xx.csv
rename to doc/source/img/v2023.x.x/step_n_3/MUX_board_list_2_xx.csv
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_00.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_00.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_00.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_00.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_01.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_01.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_01.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_01.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_02.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_02.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_02.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_02.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_03.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_03.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_03.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_03.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_04.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_04.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_04.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_04.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_05.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_05.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_05.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_05.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_06.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_06.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_06.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_06.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_07.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_07.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_07.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_07.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_08.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_08.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_08.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_08.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_09.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_09.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_09.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_09.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_10.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_10.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_10.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_10.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_components.jpg b/doc/source/img/v2023.x.x/step_n_3/a/MUX_board_components.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_components.jpg
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_board_components.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_list_2_xx.csv b/doc/source/img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.csv
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_list_2_xx.csv
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.csv
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_list_2_xx.xlsx b/doc/source/img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.xlsx
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/MUX_board_list_2_xx.xlsx
rename to doc/source/img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.xlsx
diff --git a/doc/source/Ohmpi_V2023/step_n_3/a/mux_fig.gpj b/doc/source/img/v2023.x.x/step_n_3/a/mux_fig.gpj
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/a/mux_fig.gpj
rename to doc/source/img/v2023.x.x/step_n_3/a/mux_fig.gpj
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/A_0x70-a.jpg b/doc/source/img/v2023.x.x/step_n_3/b/A_0x70-a.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/A_0x70-a.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/A_0x70-a.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/A_0x70.jpg b/doc/source/img/v2023.x.x/step_n_3/b/A_0x70.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/A_0x70.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/A_0x70.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/B_0x71-a.jpg b/doc/source/img/v2023.x.x/step_n_3/b/B_0x71-a.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/B_0x71-a.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/B_0x71-a.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/B_0x71.jpg b/doc/source/img/v2023.x.x/step_n_3/b/B_0x71.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/B_0x71.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/B_0x71.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/M_0x72-a.jpg b/doc/source/img/v2023.x.x/step_n_3/b/M_0x72-a.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/M_0x72-a.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/M_0x72-a.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/M_0x72.jpg b/doc/source/img/v2023.x.x/step_n_3/b/M_0x72.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/M_0x72.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/M_0x72.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/N_0x73-a.jpg b/doc/source/img/v2023.x.x/step_n_3/b/N_0x73-a.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/N_0x73-a.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/N_0x73-a.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/b/N_0x73.jpg b/doc/source/img/v2023.x.x/step_n_3/b/N_0x73.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/b/N_0x73.jpg
rename to doc/source/img/v2023.x.x/step_n_3/b/N_0x73.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20211207_115706.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20211207_115706.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20211207_115706.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20211207_115706.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20211207_123021.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20211207_123021.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20211207_123021.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20211207_123021.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150201_1920x1080_scrot.png b/doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150201_1920x1080_scrot.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150201_1920x1080_scrot.png
rename to doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150201_1920x1080_scrot.png
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150447_1920x1080_scrot.png b/doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150447_1920x1080_scrot.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150447_1920x1080_scrot.png
rename to doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150447_1920x1080_scrot.png
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150500_1920x1080_scrot.png b/doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150500_1920x1080_scrot.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/2022-01-24-150500_1920x1080_scrot.png
rename to doc/source/img/v2023.x.x/step_n_3/c/2022-01-24-150500_1920x1080_scrot.png
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20220124_103812.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20220124_103812.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20220124_103812.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20220124_103812.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20220124_142929.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20220124_142929.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20220124_142929.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20220124_142929.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20220124_143105.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20220124_143105.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20220124_143105.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20220124_143105.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/20220124_143823.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20220124_143823.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/20220124_143823.jpg
rename to doc/source/img/v2023.x.x/step_n_3/c/20220124_143823.jpg
diff --git a/doc/source/img/v2023.x.x/step_n_3/c/20220207_154111.jpg b/doc/source/img/v2023.x.x/step_n_3/c/20220207_154111.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0d715ea7c52fc7fd04f7b0fbe90f50102f6485a9
Binary files /dev/null and b/doc/source/img/v2023.x.x/step_n_3/c/20220207_154111.jpg differ
diff --git a/doc/source/Ohmpi_V2023/step_n_3/c/thonny_mux_test_01.png b/doc/source/img/v2023.x.x/step_n_3/c/thonny_mux_test_01.png
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_3/c/thonny_mux_test_01.png
rename to doc/source/img/v2023.x.x/step_n_3/c/thonny_mux_test_01.png
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_1.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_1.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_1.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_1.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_10.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_10.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_10.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_10.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_11.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_11.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_11.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_11.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_12.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_12.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_12.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_12.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_13.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_13.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_13.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_13.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_14.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_14.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_14.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_14.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_15.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_15.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_15.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_15.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_16.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_16.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_16.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_16.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_17.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_17.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_17.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_17.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_18.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_18.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_18.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_18.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_19.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_19.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_19.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_19.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_2.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_2.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_2.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_2.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_20.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_20.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_20.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_20.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_21.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_21.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_21.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_21.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_22.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_22.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_22.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_22.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_23.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_23.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_23.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_23.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_24.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_24.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_24.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_24.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_25.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_25.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_25.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_25.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_26.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_26.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_26.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_26.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_27.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_27.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_27.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_27.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_28.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_28.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_28.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_28.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_29.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_29.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_29.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_29.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_3.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_3.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_3.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_3.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_30.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_30.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_30.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_30.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_31.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_31.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_31.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_31.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_32.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_32.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_32.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_32.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_33.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_33.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_33.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_33.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_34.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_34.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_34.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_34.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_35.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_35.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_35.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_35.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_36.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_36.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_36.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_36.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_37.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_37.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_37.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_37.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_38.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_38.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_38.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_38.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_39.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_39.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_39.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_39.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_4.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_4.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_4.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_4.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_40.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_40.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_40.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_40.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_5.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_5.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_5.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_5.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_6.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_6.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_6.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_6.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_7.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_7.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_7.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_7.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_8.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_8.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_8.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_8.jpg
diff --git a/doc/source/Ohmpi_V2023/step_n_4/step_4_9.jpg b/doc/source/img/v2023.x.x/step_n_4/step_4_9.jpg
similarity index 100%
rename from doc/source/Ohmpi_V2023/step_n_4/step_4_9.jpg
rename to doc/source/img/v2023.x.x/step_n_4/step_4_9.jpg
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 6e1a93d55b23b80507b9b8c3882d66cc0f4caea0..eadff7d22eaefe5be13cbd763b1fac76a41fa219 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -23,7 +23,7 @@ OHMPI: Open source and open hardware resistivity-meter
     * Release guidelines
     * General tutorials
 
-.. image:: logo_ohmpi.JPG
+.. image:: img/Logo/ohmpi/logo_ohmpi.JPG
    :width: 200px
    :height: 150px
    :align: left
@@ -33,12 +33,12 @@ Contents:
 .. toctree:: 
    :maxdepth: 2 
 
-   Ohmpi
-   V1_01
-   V1_02
-   V2023
-   V2024_rc
-   api
+   source_rst/Ohmpi
+   source_rst/v1.xx/V1_01
+   source_rst/v1.xx/V1_02
+   source_rst/V2023.x.x/V2023
+   source_rst/V2024.x.x/V2024
+   source_rst/api
   
 
   
diff --git a/doc/source/output.pdf b/doc/source/output.pdf
deleted file mode 100644
index 7f741b574d83f318192db39ec62ae7b2e5e9839f..0000000000000000000000000000000000000000
--- a/doc/source/output.pdf
+++ /dev/null
@@ -1,384 +0,0 @@
-%PDF-1.4
-%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
-1 0 obj
-<<
-/F1 2 0 R /F2 3 0 R /F3 10 0 R /F4 11 0 R
->>
-endobj
-2 0 obj
-<<
-/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
->>
-endobj
-3 0 obj
-<<
-/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
->>
-endobj
-4 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /DCTDecode ] /Height 366 /Length 14835 /Subtype /Image 
-  /Type /XObject /Width 521
->>
-stream
-s4IA1!/<peBk@>F9hbU;!!!!)!!iT*!!E9%!!*'"!XSl.!!E9%!!*'"!H%o>!!<3$!!*'*!!!$<!!N?&!!*'"!,_fV!!N?&!!*'"!-SAk!!<3$!!*'$!!!'5!!<3$!!3-%!!338!!<3$!!*'#zz!+5d,!!*'"!+5d,!!3,S!(-_k"U,)6":#,7"pbG=#RV.O$4."G'b:ia&Ju6$)&O)*(E4DC+WDFJ*>]P:/g;Si.4Zr")B^[h0.J_).P!"KgAjSA#7(SB#mq@S$PY'1(`Y"T.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnt.Olnts1eUH#Q\fE#m12P!!3`5!tbS6_uLkZ!!*6(!<E3%!<<*"z!!*-'"9eu7#RLhGs24oF&-)b4!s8T-!sJi2"98E&I/sBO!!El;&g8tq"qsjB#9n.%14bR]#U;[@_%fkqn0Bf!Ee4T)()If*)C6^X-n-W&2)[BQ3BBMq77Kd<8P2o\<E<1'=^#<GAS,RgBkh^2F`qtRH$Y*rKnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!;ioB+]k3(smlLFH:o_%qPq"add_uLk[!!<6&!<E3%!<E3$z!!*-'"9eu7#RLhGs24oF&HDk5!X&W.":#)5"98H(G5qXF!tbY>+Ya065u@kqE>'NOJHurVOeK%r#pV6(n.fDQd0^X71uTbN(Dn#.-7:2j.Q'+C3&s#e6q'R884cEP<)lt#=BSg;A7]@cBPD4&FEMbNG^4UeK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>_/RjlYail0@j2o_%qPq"addg&MN`!<<05!tbMt!;]0B.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!MWX?`c7pX$`)%U=6V?<'5++W-b+HZl%D9q"RYhkeVDMpmbs;Q?SQ^"-jHlo)Kc64?#e0#WW[j<ti[0\K19=Q?"XF=Tf+%.'_#AH[cbt_VN#PD/M-iB%8ta5SDZ3Y[nb?\hdF,>u;q_ZHW3-[1(2*S4J+@7P!3i6t(2*S4J+@7P!3iF$d_^Jui;Weue,(d7r1AlH!&M9^\EH+%C!@!SRldS1r[!V@W;K4)r2OH0,&$EhX$q:N@KCY3E5(KD:ZYb2FrC7cB(Gjtq[DcRX>p,jTLg?%l3[n1!GJ#oi^gl]Ra\^pXD]@=g0WOZi,1%ZWl,EQ"7KI6[42#/:Zc`DKii_BCZJWmMCVU:U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5C?!U5GqKC:60&,$dOs+B/#%*4'bN#:HJ7;^j,qak7CGb"n<Qm'fs%%:`/]e=6?VTcaQl>:r3$aAL(BcrU=Nq"jj]Hoba8NY@PiXGf.[H7oDCj:TtR8L/RlBdIA8E`nfj9,#g=?7mH]KQNrlkKrrWq)%38B5]*,hJ+,F&1Lm;`JG^H99Y;SoCB(k4iMJD^+@j=Utk_8_uV/^"6G**gi@laehn3&<Q=#Jr)3F!4j#`(4WfDCI\W^$jcQ@(RGGtsAiVD<;GB',.u`j&.&)5!.&)5!.&)5!.&)5Ffk[%JSZl8S:Du`oZ1#gDp%_B(r@=PirZZ)8l5'BU/&22]Jb%TdpE1'sNW?4KMWgsqY=mf;7l=Nt$Juh%rk"c0VYJJ,e9;G1I?iDK/_1R[N^:rPoZh\D<qU]#C?^0meT?LEZat'#&:BlMjQi<9H=nTb`Hq/4LUC^b?fZI^nl5:W09cD91YCoo@mok4SZ##?hn%LsA*2[eCjF;F[nc_aNbbPrG*QfbUWlNgn1.>77U3>9Jr1tY9L=UbTE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!!TE:!$cb*E@2jQg@U/&fK+5U8BfIf[*,IbF;Vd=17-5^uK:];@!_dR:hB?:\!Z*E:Q)VaL\XgIJ^2lca[0KUN">`ju:fE[FXdg+/O0<V\jK0ASi4K%tEk6!`[oGjG-'jcdn4AIZ7-<HMhO0HLZWF9:Mn(]=cMW6cbMC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!MC>,!\k`k3b4eD:K&j>iSj4dDQ]48NaE."3n],J.\[j:p<Mr;kcus#$B[a()8rDj+rBF/deLa57KZc2?Q.uBW,I%K9pski'N>l-9d&rgQ(0ii:`o*)29TO+!nMTU#(;"@c=:+ATfbX]l8bo,Ge9W29!*k*J=?Lsc/!]?PlXT!1fmN;8RQAL(q3lD&7=%Ik'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!'N&+jNP&$_Ch$8iV,;@XrTgHYTjHCD-h@H*%:`_O-rY2T^)hst'br]GB)']kO"?K/3cd&GKVcW#$^&7kmHT&s3q3n]?PeO%3qIE\pDA9?0_Ej<rr<NC;+4l7"Vag!"Vag!"VlMYd;QFnK+3K<p>^M)_Or7o-i+<t4BH[%Hp+^CO*7PjGps`-P)-e4A!>2`j0))A_r.S)21j;hf]'hZW+#=ff<X3'LuWbk=Q2eoEYVSD9,#YQ>5$ecf5@?:(7cq*EJ[5Fr_,WUCY#Vi/aVLPg0;Mt'=b,7'GKe`oVlWXVisLI?;'_cRGu`Ak5PF:&&7s2QeQmPeu+J6U>FOTNKVJJIK!&3/H5\\FdSk8NNHi%dQ$;2O8\\NrG0mGY)hq>26F(=F8l5V@W-ZYj2g<NB"o=%mAI2r#pEkL5C`tdkUS:N_X>TcgF['IhjqJtATqXe1\IqjU9U:a:&GW>f3e),L3HW^IOY,-rb$l2?EpGR-UkdZ_VM>!O@re9gu)Z]Gu=>Diq:%hl8hUWE=#j]<#_8o(hF[tQ2FEOn1nui?$s5s(!UNt,M0iqG^AhEp3pX572/gnH9jt6:]X!!:]XX>NDb0H;i:/%Rj``-#9I@;Ps8X)YA0n&<+P#8..2qV@lV!?B[:PE2*5)M_(P)HFD\i!mih+pG!G/d>H]:@YD=8eeGalnf&3RR#lCAZ0ZQ:dn_`m^et\?RNF[m2dD0=)3=HEb%=O6E(9o^ar[#,F3:%U$e?\jU_l0;emPk9*.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gX!.%gnceu]F?V+Z.phmWV2$itN7!70j#"P8Z>>u,lk--b5)/CGNE[t"#6>o/ND\(!:%Z\h6L/YUk,4>_]Z2DNtSpZP06>ePNNAW$33GpDh!o012F_KuVpnm:t'+JO`Db<97-MC8J!MC8J-YJVCiT2Lh6]hKCq&d,/s%6'sQ"5gW.3oj#nY7!k!rrC!\;-hc:pkfhn,U9km;:?Q,3U)1[p$Ur;Ei>7,]6%?W:BN>qSMo]ZhlH/.7;HZBNN@<SOfVC!0W;\"c`Ki/(%c2cXH/`c[rrH_754r[;*Y:!;*Y:!;*Z,1M#8!+Wp[FH[Td(EmW-84P<EpjE-pXUH-]`V2S-;f`p-34\CrC,3+QpakLR>hYl%/QW&=HWY1Tp&+1dp^J(\aYjk&!()]b87Wc]a@9Cr/`JpV_Nc;^71=l)==J&"1,MNW30[^_J,f5.]P7pP3[*"g.[?S9f&bke]q=$]7h:b\W$-igG;n.1<`nc&T"?+VqUK%BA63Dkj$f8cW0)<_6Lm9$X+RnpeRmb$N$>VbkhI?$B1LY13Z(D-*/<7]lR%SU1M31<SQI\*II;,oHT69SCB\%RH'Ak\Khl0(W'S.J/<Wni*)A>GHUbkP=0`_J;F"Vag585Vei!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!)Z0!!*3`gFZ%T(/"<[<-.l*8@$9],^cc\hkRD7XSpX#WI*;D(4uW4F6R74i,BIr0Fs%4l)tW+0f(Ke(-,2gV"%1i&,6t[Dii&T/pnR8/MC>,!MC>,![_+2c2S#liDD>u<,b0s87Xjbq6@QU'HWD_F(P[$mls0r;B,I&OGrPW`[o,1&*-K8Jf;"\kI^)u2fl-j[S!da"Y=IFDT&8[F7iFf7`tBjG!33%Q'FoX#FVIp0*u#Dd70"$!70"$!70"$!70"$!70"$!70%?L3Ul$7ffl<J)N1Nul&Kbt0KD>XIk6V)($='8($"-tdQb!Zfr^?F(B*;YmN11Ui8et2)=LokRpf9"XWG*H:Qse.PG'A4hOTU_.&+@!kQ6ViTE:!!TFU#@cDIQucC6?Ebf$`b^]]Z:gmi4@oM](I?6c?(^7D7XhFG)CA.Cr7h8;@XIE"e;?J-<T/8HM)Y)WT7.EGnC&8UQORb[O@2nXVeI$Sb>g"'.=deqJW.&+D-`<n#fJ-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-m^!J-tg`EqfH$?+d`]H&3fEbAFc3%Mt3#5d+AC07U=8/'FV6QLVn@[bI<4iHYA&G`)$+q<[7A_b]Ip?`E[C,qk:Ro`"nUcmYWGq=EhPMC>,!MC>,-PJGmSe3$-^b,f'Z*cX/!/YA8<FQ]9EVS,m<:PZ@[gH]P[(Ob(lJdM=Tnpj5*]>$Dllg-C\50FG.=0MFK#K>hj]riZaMbisB6Ad1p7.UJ;.%gX!.%gX!.%gX!.%gX!.%gX!.%gXPD]`\QH_E%@8\/+bhJo(P4>m3>!.^Ye!,JR4kCPdbGp&Z%74K!oc8#[A**+r].b(:hof'e=FDAgik]gAJ,k+BBE?l4#fj\u^\]tI?,DqMq&Z2+epZ\QXJr1tL@7:l,!FE%hSNu*-?3')FgCjZ%!7!T0A,VRcn?44Bj5IE./h_%.\_N)u%/ck*%JZL;q0Q2@Q.4m5-/V)4c)GdCS*d3='N%;IEUf_k'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mo#lj6Nln_QP$*he89"c>g;uG('AX58s+8oIl&&0"+dr^b3_SGmWr)!"]#:rfuZSnl`')Yq:,lr;QaqluIo&iD]1%q0ml`'N^TH_*o&7!C[`=9t!^>>12,&_'Y]t@_G#X!QX@u.ESBBPa#*_p,snOq`dWYZloN='!(h<jXlO\r[0)`X)q3GI2JoZ(!umL;K@tbl4d)a;'A@B:]X!!:]X!!:]X!!:]X!!:]X!!:]X!!:^<-Xb1'U>Y4*]R)G!8sSG_,l/4P-Ch>F;`]0D,fcFUESaXaYf$t+;%Yp]PO6Q`FMQ16iTEagC<5L39rn2'd*BM6P>cmYWGj?!F#.%gXQ0*9HF?7iWWgC#bt36+n'[QcVkQ#j?_6N7%JMbX3OYIM@>0jEVtiEA#.7MqMld@=QCcY9,2/+/JE_MTb7!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!%M.Q3r51bdYPuXK*I"+h5NWj`!,[5Z9&T$qZS2'`r4aM*Y#kVc&"i"$MC>YjoR_rKTE;P!/T(3r'l!4,fsXa)EM'a"A+A<2aK=n6rrC.!A,cOG5P//\pgfq?-f'5a4sd_cRpDZIHIW^,?Z^Yq;+20!;+20!;+20!;+20!;+20!;+20!;+20!;+20"_Yd&db^+)V(o!E4[Q"EW^sCqg,?t\(?c6mY(L[7CYI4B1clTjJ^-a`:Ytau%jF*Uu/)_\a?h4UQU:et)$7MX!$7MX!4lV>IYL$(j!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!%M.Q3r51bdYPuXK*I"+h5NWj`!,[5Z9&T$qZS2'`r4aM*Y#kVc&"i"$MC>YjoR_rKTE;U8'E8%WKoc2>rrCG`=>deMTD9HXJ*j05Me_Imrr=)]X7J?VJ*utm+67au'N&4XHjES<'ED!!'ED!!'ED!!'ED!!'ED!!'ED!!'ED!!'EQ='7fNINFq=HH?i:#kbq%3@,Yo?B[]gPGleHDYa&&d%5PXaGlcq$AZWI.Sr=S``8q0iIX=0g#o$:DdU5Aq!U9/.<aa'pj>=r!Ce"ge]W!.]2r9;0\1m'PVMJ\s@72/he#NnBA'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mo#`nIdd1%E->H_(J`TJXrQO%%g9c+,tQ2HP_QV^=V=L69Y3(`+7.LpC?P=4)nRg?S.bae^V4+lZ-^s%cc5r'N&0sm0+2$5QtNA^Z8kQJ*ZMUr<u[5.\eV!.<[%Xk)5:AhC,>\Si`EdkCL*2.L/G_1'kr`e<TdMVQQ!*g1f5o'N%Oi72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q'"7\!3124"J;X,N:\`<k%#9SNpNGu;THpG56r))RK?u=gmgHEk7a5FhFHMG.#\a_J*es[\#Qc#!p"m,RF'N%;=*T9F$:]Xca'"1H:("c#"?ku*PgZj<nrDZfTFh\FQ]`!"XVN5b%7!?$*D0FiWhrWbpEEtOpF5e>b1RAtDB8<"iRH\fj7=E#A5t)Ja!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!!C[]!"([B;NMDaRdD8ja)%7$P7<j7:Ze=3]D(/BPaO.8!KS+o<b.Ys1_r:lm-+A\ZfM5ng5ZIRp!D)PK3VW6N(HA898Q8t[;r,Q2En-F6eUC"?72/hI+&iqO70"$!70%Z.KJ,ODiEJ2d$cJW0"@%*E^sBaA&*$ko_#-.@#a4dS@`/g*6%OU7>FrLhIj87lIBEp\[DU!k0=^d^I4o/gP^\+,;+25PE<R%R5Qqj!5Qqj!5Qqj!5Qqj!5Qqj!5Qqj&G/'sr00m1^6G_)4+]&Xcr2O^\l:"D-Tbf)^/eE)eMVXk&iX;N.i[a9;M^W;l,H`_"*%ittJ2s^r.'J5mSE/c-T:j%N&Q)g8MC>GT.&)S!/(4D;fm+JM[nRpq\WlJug"_M$j1!:Jr8PBC38RdR30BceKiM!5`:O%2[ct4lVeMIjEU=qe_@ioYEQ9YlF-HCNZ]nAMWp4b7RGm<d\S/!YX8Ee+M_n:"I6mFT72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!>j%,hZ`&+kjbZs[BRJ`W105POam$i0qaGUK<`Q-![,!`b25=2OC+>A0GWceFib]q;(L<K_"sIpA6iQ'3e=I.?4`R(dO^APq&uRYpDNDQ1;DfSp*LK\m'a9:*;*Yri9hY@.>IM3q\RL&Y@jJ#jCiVPP3;9UhN^T0jOsX7#!L8o10Kf\!iAKnL#1`_RZudI0+jAM>N:GF_JFplI8,NT>Xa@TIHV)V5F^NbnZ1Ie:+.=[bl(dnM^GD^\MC[p%QjP79J-m^!J-m^!J-m^!J-m^!J-m^!J-t97,AM%VgM*oV4Ntu(N.O=RI>H2/O&ZqL8KpSB8Ll87!mJl-'Fpq-nVqHbrn#`hDaNho?fW'?$3h;/So=m^lcICeq`6itH%&8gPYh(=q;0Nsq@k?PMYTX*_MTb7!fAD!%\pgc=h`M,e#JdO`q-\BQ8o::REtafl4oNASKn"J6AF15-?%a8rqYs2NWo_/ELuj*?Y=r-q[*Z`GH3nL0Z8BK]9:i\Jr1tZj+&PPM?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?(K_DLqbsV1.BEH#K"$/V%o%b'S.6jp*#@]U$7j]_f`U)DK8cZY?nkE^%kl!8>HqE:q?=h^:PLNsde]F"_G8Wo*a#TZV83&(jV?p@[hErjOkE.&+FlqJ`0d-igA6&*jjAHG"Gnb\-")G3#qA1'bQ3*ok\T.&qs^#q8Ad7,]&HE0e`BB]M`p=X%F!E#DeR6Nb\f:9QnO+,Kj'>or[d@Q??lGWUc-c[=f9T)<Yk#G>/Q@BgE_;cAb'eG*9L)H^aW')?gGU5CIsjU*E1J-m^!J-m^!J-m^!J-m^))V2##Mks'n38_1G,7FTr4TNgkoE<[d8eH*0aJ_R,P)OTt3TJEs$Yr\:g,bY!+29;G0s:]i5J@!,E\#FMCTFH'Y,&V?OenL6Q?M`rI4?01XB$NIMQUl8Sql-0nBo-O:g<Vc$7MXZ:9^IM-igEj^cE+b?8ed%1DQtXM+@b*j/N%YG9HiTkDI+&Zn&8)r'>-W`jdeJ8';bKVpKYaA<1-+[=ZEL4)7C<-t=)n?Jjqs]puD7l;--YBYPA`!!)OF>[jN?@gDHcr0R<o=t$,ZT_U:9MC8J!MC8J!MC8J.,l"G1e,C)KMQO7(pd]h@r;.ePo=j&AmG.-!G56"Rbi_.Tf'DChg9:KJSt#`[?s(29I.RHfJ&>Ok!7[54!0qL%dms<nci$F"q,[Lqm5<ss%_`ZnT+c^]J$<gtqg[u$/'[s-Ngm]+ptN1qqhI2PC@2$$iKZNDrr>>l&,uXf7/m8bAq2r05PDLiQMr_kHm<WJBQN</D1&Z\]Gt>t&0>dSnA+4YLU-FL!::ltrr??9q`VpKk)AZjOe#)EW?G_@ha6V$EK]EKc?%SY5Q:]lWT/L)$M],N!!4PJ!95ru^*iDgLjU(h[[nkpDD_/rrEDep7kOchA;c_#DHuQV"Q84b#O"Sknk\WFnQPh-rZnf=I]GDuU2!VP<o.HJes!l)$%RJ+EWKKs[d9'EGLk7Ec29ltGPiST"OoP(p+NoRMou&"8+V,1qrLrZp=@5BkFq-H,Q@`QF8l5<:]=A/qb;B4m0EXk,U^Mpp?hk[V(l&iZiU"n72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!72/Q!9p.?!2NCa<7g3$tA2$/4'^@(KbPYN%2pnE[Ft1gGkE492:LieUIfmt&jm1`uN?sRZPnh]_<`U(H%o>]?[u%a42Oil9l(>Yp?^[\20+dUF;<uicTf)F$r40Z@8h3Z;\,6?nEr=$Y8sO%m8)O:Pa\bJAiZ@Sd72,`'V>)RZhqD-2!+=;(h0U7?[ViCD*kg3IT5Jr8f:#X5OlDL6M4#@iAS!hN7m[Z-@<"'?<9@D-7j]ks$roJ_Dpb0D7<#sXn]H,sf^!G0neEd<69j3hVXJt[&ppYTr&u<r+rnsZn.1Jr@B*c!b;K;""=U"%kW+6P.%gX!.%gX!.kb/t"dXjWcZ&1@j"];h%I]hIkVt^%HLXim`gg;0m#-QX<0E1TgFVW9SZ\)_pNNgL2;eN0SG#c@TC^LDQX/3\[HmEIakI`p70l+/A,;frhs#Y#G?qf3YKZ_gCho.I+T/L*l?uHXV?"iDQ,dC++nA"Zr6MOho(@`Bo@?_,$7MX]ZdoI3U4<T[VJ2B#^%to8-KuJ4:Ye=mM<mIQ>.L>OEr011I@W9#X+c^[ql/J(h"qUZS7a_ERU2+fUY;db0WGN]c[if(G@TO0qIb]Xn6(//&"6ZloCP/HG%1q9jc6YE]mn+a6d_RR[)KD]AojO68DhG*%%MM)3;38c7Z&_^+UGq70j5g^k;c:4;Klq*U5G[3MC>,!MC>,!MC>,!^.J:'rrD,Zl+coqMuNcIcX0mXaZm1?r09E(rkPdgkkXEEV#?Fjk&12![kI]`?V+>D^Tofrc/86VrrBImkpcZ`NVKj=Lcei0[p-)&ek;KgX^:;;@>m=_Htldc$knpO@E0["JEpL+'ES$??_O&)eS!LH(SY[=M&KW6)LN?!X?_G>Gh%UH8N=iP,hM4MIK'<:j8MV_Kg4o3BE%t+&qE!Gg(40R:PaMfg]%7G@]tW(mB>4Sr^]h@J*l"j!(p_(M.d"`Nf#6X!fAD!!fAD!!fAD!!fAD!!fAD!!fAD!!fAJ9V/l9U:#4#Z9>^kQTt1jNOe9d\RYn]s;j0cgBWj8m!/6E5rrCBYQi6FR!;oh=n?KBNq=h2p!59QT!/ds9qc=6_rPtu;Oc&M>o?uj+2#dQ0NN<'Zcb5\DnG`Ld<F([F>DUd%V5lcaij7PVhZIT5k%Vjm_S+d>9UTHO[BslD7t!gFn9dl_VGVE34E5ia7kf*.JHJ-->Q4\WNMM'M^$kphTDV])*5`.1Us,[%@\W5Jq%@q)_"P@@dTtNtp04HVL,0d?GpB75j!9(ARe*XK::nsBNOA[9%%mg@+QOU%NXt)TQYkd-$@'`e4LW0JCmH8:p\AhY\"5#;Y+]`@]t$_o5Jm-b*#rH5jl#]T*7pa<_r0kXo]DnH:J2(P`o6m=Ph`%to_G(]7<Q2fL3/KJD%g*YmXEJ>b'TX/BBT=[M6:$,>2EkK6A:c*N^\*ge<"I`X[7,8UjM`R&?N&Wa$rQf'NQR>>?Vi#DtGpq)gV/4!sFR+JXi:Gh)q<IGm:NeX/Aj;jin$BB2Y6La-LK(p!"#dRWc3a$uF9r&X*?gn,YUH6f68[:+L@t*kgRIX"MCf',`7$<KE<eY].J%/e:I%^aPq7oa`;t$d7jA52=J23^F>V-TK5fE'6u%J^$tq+2lM$L4@rbrK=^r<LjIPW0Q^l@43ZqGg^K]rr=R/f01>n<eE_.6_F/LO:K5-eNUWdI8:mLM4T!qAneDZH)5GlnhF`>\seY:q"jcS\;,Bkr/\5&iFu`\C2<aaMC>WKUaVtFoSj;;*(b:PfiUW-/Bb^!kaBaoh]6_n<sVEo\RJ!"Of'77Ch6*Ub9Ft>1V8aKW\R\JJ-t[k5N!?K;Wh<@*,G^/\steDU[cAFLHP8SYNX]4K<uq7ATl'o)d6r"OLkqa+*RhV"/*nP:ZJP]-s>TAH.[5!3*7p8!5<t*Xa=/d-5I[$C5K[V<rW/OG^-<%/uQ6HS<E>RJ+s6?&4::A_eg#R')g=>6E'A"<0bRT_T("gkMGt4peUl=TXso^BUaIk@6D*Gmkr%.oYrh&oWMKbfN>>:*\tq/Edn0Q8h5Po!/6j@!)T<cRK!9R.]!(E&iCGmNO>=YEIS>;\_)?RN;chIZTK^@9)el<BcO/hhQaQ7*fia8Vu/)_?iGK?^[HsX!90sW!/6E5rrCBYQi6FR!;ohmp9#@HqhtHp`HGU6l#]uai;Wchh=uWiT59N%nht@UP`5%dSE-;7l"e"m=Or)'%@QD1UH0,13UVKV.'600MC>,!^.J:'rrD,Zl+coqMuNcIcX0mXaZm1?r09E(rkPdgkkXEEV#?Fjk&12![kI]`?V+>;^BjfkJ&88cfDbi--hab;Q]qFL07HEXjnYP82KS#-@ik=-+7RlHod'P;j]h`b[*T'+<Jfa1Hi=V,"7'.Ea_m9ofh4.dBl$8eKg&Z]7X%&H^`\eZ3Aob;nCKnt,l[l+>Q4]1f9Z>4pq*VT:;;HX(\W$9D2*[<Na:ol(c"0\Df/)c!2/6YQ7N'P=6N/+[/6sM^cijhFU5XL]0.q'$00e[A#)_u1'n0g*^RbmD=DK&bb#JpE>>muj%6K0F/V/Nm;rak#\D!nq#c^D%`9T3IcR.42Z9<K!9Ah.L]6,EoVO,5QG2)OT`5#QK_U?%h7rTZ.eo<[5=k"4M?#'!M?#'!M?#'!M?#'!M?#'!M?#'!M?#,\]DhjTm\Tp`?BY<gkQ\6@%<qe?h+Ra\-3!tl%;/c;EqEt.^PO%3GdS5_?Nbh4'N%:!'N%:!'N%:!'N%:!'N%:!'N%:!(%2mqp$WXf))(p#q0o6dkF_>6kP>>r;-uY;i)^0R1]CgTp=K<EA?PL55Dc$(%0$=9^\]=&q3UuSra2*W/?f$C+$[l;*>D@X*.=b_72,`!72,`!72,`!72,`!72,`!72,dZHo(d&R%O>_rrCa<]WMe(TDZY-!:?-PcX#X\Na)MI&"i"1MTnBC-h@1s;+25`*b\D>'ED4V5IFkrPs%)*^p/CQq<R?]q'Ym:rrA4[VZ-YK(,,V.4TKID%_`ZnT+c^]J$<gtqg[u$/'[s-Ngm]+ptN1qqhI2PC@2$$iKZNDrr>>l&,uXf7/m8bB"Cdk)uaI<qf;]:g@b*'!.:"1!">jeJ,0NIJ,]KM-iX2,2:-S\p.q4"ZM;JY0qp2&CMbL.(L=d)'$(:+];XA,*I6]0C+'0C61F<'iI*.3h[aGPqL,)Gq/@Z>&>=;&lHDSRZP$"n-FB_GJ3;T[KDtq7'B1,2G5hQjR&f4MqePnXrrA2qiZJ&@rrCK7X5[:_r?J%o-ig!!-ig!!-ig!!-ig!!-ig!!-ig!!-ig7cn,/*TQi25'rrA]1^Jm)Jq%n0,qXg-S!'iE4?fB2URSs,1I8T"R;+5jEqA<'u'ED!!'ED!!'ED!!'ED!!'ED!!'ED4I=+f,;=3tKmo(1u>T/W?kbJ0\5'N%;I$1i^Q+2lM$L4@rbrK=e8i;P'QbVT7PrrDDNkN6.>PPKZ@oWl7+aF+!f-?+'(7=9+KTg]Yl!C[]!!C[]!!C[]!!C[]!!C[]!#C5gbraLBNbPqQTY4B(eL4Ae.rrBK7q`T.gp,R'gUcs9t4tAJi!.:E^nj,\Y=.ji472/Q!?R5X$J+?S2htmJorrAhWYH=kdTA$LJ8tMOP!+8pDoR-93dXK9po/D0RQi>U?UoWY8fc0p&n,%/*!8@,<PlMLq70"$!70%VBm0EXk,U^Mpp?hk[V(l&i[J&5>#QFcL-cA7CmJd0_0iu<#!W#;T'Mng!'Mng!'Mng!'Mng!'Mng!'Mng!'Mng12/"8Gd;NEDG=sO#Ll7d6PopQOh%Z\,ACE"`EKZLKGq](=4s9k*TRZr1O8f3;U](gs&:`%krr=96rrC#>X\iCpp,roSnG`J5g&B^DG$g=+SkK(`#Z$7@kTBg)Oe_pVii)kWKI=\[oFLs%aO1"fnQ"mS;>lPC]DOn75IRg;QfJ'XP5bO!'B0Q!#QFebB`A)-W^#GKnH]!prrDUHJ,E;meJ*LCd-go6&+U7uX@HjsrrAJJ^[QpOKDpH%!;RNtr[O!(6@;*!!'pPar/Dfu!#8hJ73C1S428]2KDTErfmZ0JGq](=4s9k*TRZr1O8f3;U](gs&:`%krr=96rrC#>X\hU^4V$rMrr=2@g;J/AO85A?rr<=#Ld1)FrrA1VrrD&Wrr@^"`#nU^rrC-frrDRhlVpa[O$gPW5KH'tYoT1krb%Do!5]E/&,HP2!9@hn!;NQYi<f#Zr<*'"nhbjo<I310Iq-jnrr<T#&+-GgAbc9*RH2-PK_U3!Jc>`G)F+3N]kWETZO;D`KtejYpGd.pg6ep^V5J5cU5CJ*iX4bZF/!Cfa4PmJD>`iQbhr#lj#_81O$d2i'odMoY>*K3bhiq7<%9A[h&]5h!!lAV5Nj3h!0O&V!90sW!/)`<+7p*D!6ERf!:a(T<*,RfO$gPW5KNL^[]pj>j8N\SrrBnLiXbkjrrD+nrrDho5N)q=#Q4c)!:hsrr)J'n'RsW>mf*7tndk,h7qMJq!1Do_n:^Rhrdk(Lq&2Ks.Za?kHpRc45lUi^N?A0#'je::+5$3I^Vfu%qeHesIQut?0DltW+TDG7J,Vourr@qOrXb\5J'^F[!$b#6!6&$A;+L=C%e&oe!$M9p`-,LKq4:7Z!!lAV5Nj3h!0O&V!90sW!/)`<+7p*D!6ERf!:a(T<)NUT6bE7\a?R,<*LGgcB9N8p_@to>q?R$#jCnPnpo6R;$1S9!"9/Al1k5F'HIW^ZA'jZD!"\W2mArfhq#:>^jM12;pk/QsrrDj55Q3-npd0?orr>=a!;qfurr<d?[7)1ioK0h*r.Fl^&_VUtk&Oc4d5;@TmGHVur_K$Fm.o2<NS3MkW33Rd/(1+\1b#GEfcFHD[&_]!-+aL4U:)`_.&)5!nkY.X!ri8ZB)&C\=oSJTMu,<OZ<L*PlooU[Y4&uHR(qOu1"s<YM?*6dKRX:-!9$rX!,MT7`:*S)qb,'2!1-J+bOYSWp=hV!4gC&ooU72$!fAD!!fAD!%WC>;KR_rBn0Xjf^UF)nmClZu8!W6'fdb,<G:msC*Cj<'+8BAbqOPClPQ(X;X6D)^!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!!2>?!"97$~>endstream
-endobj
-5 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /DCTDecode ] /Height 151 /Length 28608 /Subtype /Image 
-  /Type /XObject /Width 250
->>
-stream
-s4IA0!"_al8O`[\!<E1.!+5d,s8E!T7VQ[M+Eqj?FED)3+E_a>DJ((^Ea`p#ATAo&Gp#UqCh.*p+B*2jFE_/6AKXZ?6SADn!(-_e!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E6$gAjSA!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%s1eUH#QU1kq?$aB!!3`5!tbS6_uLkZ!!*6(!<E3%!<<*"z!!*-'"9eu7#RLhGs24oF&-)b4!s8T-!sJi2"98E&I/sBO!!El;&g8tq"qsjB#9n.%14bR]#U;[@_%fkqn0Bf!Ee4T)()If*)C6^X-n-W&2)[BQ3BBMq77Kd<8P2o\<E<1'=^#<GAS,RgBkh^2F`qtRH$Y*rKnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!;ioB+]k3(smlLFH:o_%qPq"add_uLk[!!<6&!<E3%!<E3$z!!*-'"9eu7#RLhGs24oF&HDk5!X&W.":#)5"98H(G5qXF!tbY>+Ya065u@kqE>'NOJHurVOeK%r#pV6(n.fDQd0^X71uTbN(Dn#.-7:2j.Q'+C3&s#e6q'R884cEP<)lt#=BSg;A7]@cBPD4&FEMbNG^4UeK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>_/RjlYail0@j2o_%qPq"addg&MN`!<<05!tbMt!<2p-3:6C\3QE@)5.kmO(rgll%$4$GhZGuNO%t*o"0Yl_NhE#^4Z[nL7XOh#"#QD2gXj2J_ich@H3+U)-Q)n=l]+c<:\$U\48%chRS<Dln&>AG`rgiJcWgMD4:o1[5j,?5%m;_"aQqSDnlKa9K_f_.F8W;unkW$1!!/;/g]?.h4QEWJ3cj'ges[,u3U?"VGrZmna)3o^0-C@W8)^&17QLX3rj^![`^_-a:,qT$B;]Qhj,Q0jJ0uK>!"OLr*-'HAH4IWD!T4FlHfQ50qr]sA4hK`!$h)\ue-";em.J[bn"8Ut'upQ1an@mDq^87ep%?<Q!PL5')=DR)%!<Q_4oU59i8fB3J^aetI<[dE)5e(*n_AKfJ9b)FnN$H79Q?)a\JXM$Id,maE,Z%"a!:Zkj#oBbK?*c\*HR2#':M4GJW]_Mk^!p"e"-jcB7Tm^Sh\Pr%oPH0J3?@.lfr.+%/q.&F?.Z5l(4FD3m[s$c8#\.T41UJT"$uE*)\^]gQ5"qq@%<R?Z,"mWVcut3Pk,<p$7Y5*U(O/F4ZBDl(5er*HRg^CsW;pfFA*]5EB-`irBR]M5(s/,JS<SnDf$Rr]lZ\jE/H\*..A:N]UaBk<3N;KAX6&!9]uJ+&Br@!#R]3j,Uf/f@09Ul46$,<-!'4*003Z8$CD6mnX9Fo`I?AQliJF0Kh0^,I_+5fQ=pm39)gqi\T3MIm1PlI_GM#R,&!bTR-;Qk8;Ko??iA%rbL9GrrB5g;;C^6*-;1&ci3uLXT1lWc@8dMqIH*;g!<@5HB&N>k.l?BIkCcA'5q46LQ:$OJWZT(\J-$'Nh493a%ed:3fh1A!"AaNI=Hq>I^g6h(a':hl>_DsOiL=[_`Sq%4S+SI!!aL8KB^D5;;[E5RHo`R3!7V3Y($Po9HW>EJ-j7<L[%sqd#Pn``unb1$02R\,,<Vsc_``5_ZsM^^:rps#IgE)3<00P,Q@bqcuMW$PLkp^%c\QjF,p3Ur-BH+N7&\VHK903a7T976@7XhkQ`?1q">QumDn1M37!%C3Zag]N#m5h&,uW5J.==4%o=rM3R?/:$t*]g=,qV'p%nRT3;+&S^`C2-"QWs#4D3.8UD_BFfQrMRj,Q/#5.SsP!HLArO5njgH@&M?n+iUGV#>T33#KY\mt*a:]l;nM!VI>'#f[>b#9JN##AsS:`XcH:#(t2j7j):hP'H<\Ih/GT&7^[Wp$1AZ4gI-kYC(:;^rbWo)$dTp*$7qG@$*\a*"G6UaQo!b"5EA/gmmMrf:a)JcP\`+!VFZ-5DDrAc8Q:F)=,TiglGg\Jj:N=B/mrBo]5beV?-?3>_!%j0uc6oA%r.fmE,9?USuIbpBSI_rr?;3q?!?2^]](,q/PaUhi:2RJ^YJ)N;WeA^qnt%_&:Ah!*jNq"-65Daj4>0irBK/70C8C!'\/(hbGk$)!R&00p1+1cX&]n(uTTul1bT_f,,R,PFfItj,cI"*;?*.*;(O!!KK73kGKPta<$]o:fR9$htnhB;:i;+)<lYPcN>6Amu`QfoGqqecQ,#>HO^)N5Kar-ob\McJ2hR1!M?(NEVX)Hf<>@7#I+MbJ]IC#rA"6ONdh[e5Q,DBkKj>'&$Y;Nl(1Xu4jRI7!13iXP(*s*^&FOM5EL02f:Pfk&cR.Ia(34<O3cE'NgUpap%B9b:HA?"j:483SNVCN0EWHh^rc<J5;A0ZdXT&nY>NS*r`D='cTjIfJ"Q?3J#+:Pl,ip;nE8Q8IPX4hk8?9)W6[j2!7pnj6/S+9f@PuUaZnh<iu_Nnj7)>S3??Fpe9YaTn]06@`dPArVLSjg*;1NT!1`T.fCCbRlc0k,q$r#oqYD1_M@On-N8XF.4.jRh/dGa\0qW9(rdLAZTE'3!5N0rOl(;d8V!!au!,%pDr:#1eF%cL^/i_0Q:X50Q*BDFtS7hZrH?)&YJ.*E=r;1lP#G.FsGWZE*HC]UH4jTui/ofM4l?fCQl.:R6:'O!3gH!;:'A#3`*kaeY3W=Nk'EI!9N:tT4+EPh'0R;T*"Q\b;+E2DNT'*?`,G/:fb44`::?.?t]4?qMa0#nCl.gF-W5l(Yc@7SMa8cQ,l](reO86g5*G@T+9P:!=N$$Dhlbsl(j7>8q?cN8`+-dusT`#@?_<mAFh0AjDJ-9frYo(e^)lGiEof+$edFTN$q=2Hir'rpKJ\e+i3#ls"S7<Q/StABsGGCaLe.K]HBDQ85IRY^dIYXhu5;&SNP]S#1r-t-1cdTWHn(`$Pa3uE68ks^S4*!B*rYbcM,S5F<Gf]qu^&]TDrGk\+2\(,u4ieKC)9M9+:(Q=)Y8$r/r\\BHZa[cc)uO6u[#I^cd_$0i>O!#.:6-^&>(u_)[0o,U.';RDG\th'pQ;ehZ2h/1O;Y:#ndGF=ama[fr[_Ep_46#!B>VOk\,<s\HM``1mq#`YT4aB<@WJQY[PEOdY)Q&\k<^n_<=$p6eSA*II$0E9/S^R>U%qJ*Gi@U_L0:)]-KD6abIDaPa'_qZKYh3^AlWSH^q02XWt?/"bAicr*I9SWV)ja0i;Li%^YYQ7!09lF?JYJOjEbbNifcCKDDBFb:.`JG"5J%fh"W8`dIHNkrMBK&GZ3WML\*`._jXqiQV]C"qTP7hC)1`bl8LbGM_*FW95bqu/Xb"]Ci!Jb<oAA-qe(Dp8GiYg)L1G_4p:C?_nR%5b>@^VL>TqShIm_:/Z#SGYeQ@;/`luZ\VaN:GD8U6,M8.Gq2&o@2A[X`EOh?.T*p7O>;E$9n>V)"W@F!q(\m7;<?k<6D/.TjT@rA;m:Ukpn0\]bAeW*6mtgIYIg4rsj`l_*I9)pp=Bn97kpMbA'^4K@@dT+Lo[L+LPZ@[VVdo@cYiHc4FlT>TeGA4'nI1&-BZIPE8b^"_JY)dZd#OOMphSilpb%?;rG0>T-BYA,-2<>Ubqi;KCioRAIe-G+jjg5dCNj`Z9rZrQ>Mae&>AGO+EH)rub$dd1eXm4V\!gX$@BF7tI]]GQ>Mj/+V5:VoVr(\!PM4kr?Ga/e[l3e+.3p_(b8cX*P-0h@B<>KY_thSH.P]2RqUdI&.Cp"iV^U'gD(2F/PtJ=DO#1(!P[otRQJ.ka!TMF\?7<]HT)eCf>K!/do>AI$L(.Uk<l09&2'n!J=r?$A$G3-=fi3n\;l*BQ["PD>Z)Y>Tr\;n'dhq6crD1-l/nr4TH10sDIKQ,1SpLrB.*'&I*JaXp>HW7l??+)eQhO-_@s`VHAkP3iMl/rFHS)mI1Bf<pgf8<eQiK\<@uhWWg.>SYP$W"$Qd)nOBBXE,Bu5!>e6rVTF-F;4#Y%a_SWe5U+XoK"m2'<hPI$jJ5(Mgh`^p$4f:Vem;P\r:7t9+mY;kk7%jqK"O29Scpb)<X)f)LD?hdKj''/pIbkCr6!4G!@TtHe"1>j+g7dZ\RnjYkl3QL>2lrX(%GY@bZcoc6LpfG;',k,:<+'-h^X4qP(h.`3oG]ddpMl8#2P>.W[<C(COEhoBH:<$2JN]rLXi>s8eY]J#E%&U`X#>NWFY;tS'(qS.S.42%R-U3&X;-&>"lYXtgGY@9)i9)-N%1X*2/j%5IXrt\R)_)_;*tOghY?!Z+)O9iq1W<p-=s(8L7\r[_\oN`O,+I!Y^,ZGarHSVbrr<IMaQa8MJF#etrr>31anX'Qci(0I.JjtW1W$j\nQ1B+6fSHb=lLmC5A+E`l]!gRH[-d>P58CPM00]16P)WtU.;oQRj9Jd:Ziht5Ek%)3;=<[0=Ul!Hn%,U!5Q<3I_CT5/`@`qc7kC$A[tfg<YBJQ#hF]'4C[DE>dY2E0bia;amup`PBX?V@E*df0*ckfcYN$r)0+51O_;1?4qeZ</]?W>>.(>+a&/+L/P/SAQ"$]_etX$@V-6biif%)4rT`k$FrlE$rr>7=HfN\0a$"B_l.[9Z!76%`V#C`$!5nUr&0=W_^PRL2rr=dW$D.7tp%dq"\%/Um/,fpin2B:e8#lJ*po1.F*^7sTkCn$_"!^%@)Qg>YkkRBQ=*2)>j!^e]6],S)rS!WA4ZasI]7#jtq20Yp:SY$qOJa07nefMi;,3u-4Jbb1m$t(O,>a&?b"X25a6puT?G>Ilj8A)KBt3p1m+<-s;;[sjcPagKIX-;Vrr@YEI`NTLDsao;45q.I7u2'l8St4"7C$8.a`0G>Q#5or3@D>a/nQ\cOiOF;IE2JU33U\r-\gb#Xrs/^i11K_Aqef,V+CZ/OuX,B>oXEub"At$7htW?m'e^m.f14+",anEGI0(].T1:Yg@1?%aYi5gP?sSWrKDrFf7\D+!qS#TibX[4E%u)b0c;TTKu_2ljf4%ZSJmCuL7;AF@^*@V4$,o4G*m]($m#pdjna:H^nW"7l@"-la,W<eFWZCJrr?;R3^!['_<_)Ip\t6d"2oUI&_$a[YL!mGht?X,85>gcpE$718G208+Q1[&:bp)K49,ZP8\r1_o:,jI?]1NmJ)I^6!![lgHqs4H_l/##GjE?7i3*^W*ZUfjH9S7cfJL96o1GP,?V+^nGAB4JMX;dB,]s/e$Te3g[Hcj6*c7M!X%+VT<Q<R_9i\54:7Qa'3D\>J;O(FMU:I1r>g?,L7`i!p\GO5D!q<r,JBW94M/XFnK?Wk.0K9ELf]&nn<[s@FXOX.>Q4""YXSn[t<2hfK1n^ZNb+b-Z)1L"_5>6^udujKV/78S/YQOG[Uj[YP%q7a_^LJql.2TlTgEX\O..B`^Hm.KV!r.\kg+40@]r-]?1lJW@l/q<u\$'2nD"AC*:O+O`Gi_r]*QkrJfYYBn7PHeAO$V)7GP1;%!8#1uR:Vc`UDH$&AVR1;`RBf,b)K.t,mpp?KTh)P#q7CX`_ol42O\?+S/]J\/`I7-LZ31\cEN`97>e4)_bnW3Ib@Vb,6_0$@]7G@,).#L3j`Y0)+(G4EjVN"o0RGeP8NooY>:iTLS<bmliXc;:VV;RkNe.QrA^[GH=1Bh:\K-W4E9dME(4)PNcEtJk<1QG>iX\N:T4m8#GD'`p?/@E5+"(E%nutI`\W1d:ZO8]$cIK?nFqTXMp6aj)W$\:m12sFc[Dk[GP8UcSS&Rp`_265WFLZ?^``&bScAnUT??&MTC>ujfgk#/jlVcbq)hICG?)"_M59W`NO>sFr8]q3Y.q&C=iYQ5j7fttf5Y1V*:PK-b;*>W3N21RH$1h[.(`5R.5t!2g>:8bS1):%g/V([]XC!GNBBkl*tGNZ`UU\ZA6^uaXCWjqo/qFNGg&d>mdRc8-&Kic8Qi+@^s3bDePAR*_iN!$kL9G2Xe3haGfS>-mQp"<PPAXiIl_e'n6Y;^ko,'<jZL+ln3"nOLf)!9A'a!C6/e<6D>Q"PqbRI%$NMthl1!$u$]FmFGae1R+,HKlnaFAJ/?#2pM&r;KXWB(3R4]FRRLN.SeF6Wn13,?`!!aSDIh0'0%nkYQ,fEG,F#_OIL9FH-3`N?sWIO?T8bkQbPi\N1J"t##NK+)Oiau&CXZE'!'f.rnF-U.r-L@jpa(86>Z&<I&FXg7CWq)%Z?afp<`uT+Q3<]#k*W<`X;WFrgJ#3J"[n_#:ik3%bJ&YiLrr<r758T1U(AR45Si4u,$+f:de=aI$=*<:@^9puX<\rZa@(_43PiF/Be%m#S3ZlPZIm0J'gt0WtV,i:AdB?<A)RSSc;O(?ZSOc=iV$`?<in%fXo2]f+%g.m.k'0K8r3mVub]#PAENOr7i%\>]AePhM9(AlJ'8<QETiMe18tB*;O-QUW@iUY-\)YM8GiKjY7S2^ZT`5!ViV\BPkFR/JmHQp%1I,B"Oudp?B3F^7r"So)9OHiSDtp6;Dh%SP1bP0gmFU7D^PU73EQ>7'HK,7%h7o?;qdf^,JtDT2$iGJ6rakI9O&,PO1aDeUY#"U'r(\<JY?Z.159J&h#C\n4Hl`4eP(,4d!3s3:!;-j4IuXI.Zr?s!hZs/]ftO0[!3I#SIqW3Y8g!j`T7c#s'n>LCWn6:Wr"i-nnBl^o$3(""<RWu.!1AaA5EE66ACp0,r"=\_!6,Fp*qp^*5P]A8hrh+j4T>DtFT2@%ir0d<rr@sYd.RD=Oc*'YXt/Tn:]=+dC]=BC4@T8MV).k\+$\ij3$8.<Se1o%l'S*!H0fO0AFo`o*-K<)/,G8*!.m-.f`(s@YriO]m+::B=@qNpLR):_n.!@t\[g;h%1.n>dT)YF3pX[=ZD;/>V/7i0#Z?t/&cB/#E-XJ)n^kJ[+6W0t7JKUI6cEC:4sTheieN,(>0"RQ%G'o(SN9H.(!(sA\Zi\3rjL!H[<\jW,!8$$c8[d.p'r_6g,r)mi\L?#`tJUG(^e\apGg<8Qa=?,F\]6U$HZu?;*-]>J"Akprr<ll*sI$_auHPWX&d>^&rou2=`$/\Af1e*[3^]MVf`kdo',`-H$lEk*)78Ke>"!`9E,!bh`1AjVd@<#kJ+RRf8@T<&H;`e#.^B&"DW>E+7eYL^3tS)p?'#Sp2TlriEt;+i9u:^0).n4[N6dE6XT*&,/)9WY1bnCf!JYs\_B<?Ih_E''jj/[6#qnF:Dn(RnIa*&otF6"Ji,crr-HG2HZ>!m35MfZC!`u9`QJ^HV^bf-4sa(.8nueP<g@nrEGN.M?Fm#8dqVIhq?Y"$\TW>;[.CAo(IoR4B%\`A/@ujVP,Ue`K#Zo;nMk:UjI>mY;QC%8BgPF6k870p;@rj.4IoRQ6FrL*o+8VUJ(N2&YQNd\5^htp;?$WJ%<M%=!;;$)+7WG-0QE0M"R@G=Va$J_q6&7neMSt#rr<]Ombd[.0BL\*VmV"H+7MRdT83FHZkm*F*'>&'rr><T@m?kt^J[(ql-C"B!9B!UrrCZpX8`/tBHQ4ud(B9T@u!;8)ih]+8",u5r"jGR8;G$?J'gj<1]IH.r1s;p*hQ,9Xa_uh&jXH.+94F`\,^Y6PE0&#rBgMa_0:CiLjU'"Vo4QokNUsi3dr*Zcf\ZYlsK'',Q$bUn_e/0/U$'r,O2OZPP_TkYK5Vcb8!7;DLD`CkK(.c%JE]AjVt@l8\\JTT3c73!3d:,OfI&:C79A5p$i7X:XlKuDsVA8Z*Z4?g"o&^(=s-3H'96!ng'$7JlROj3>J+E0A'q2]^W(nENADTZe*.=>s?[`QKI0I##.A%&ou:FBruSu<C:>RM6NYX_PoEk[X95+rr<D,iMQc*^ci>0!7ZJ8oC(/oNqMU0(EEM@6,;b?cVAM#f7V](564^&*9NP2V)`*I>iA;_>&>aVfZI'h<ie-*nkkTMpZ6*JZUl7i3)A5`iPmr/_;_HapDd#Jj)Wor.P=gu)QcJgCgI2MM:S<LWDoihSP2_D-an]i:'ir#:!!>73fAeA[[LE9W+EHJJjtKAH\gMrTpd=\nP'^TY8"7O.-Tq6=:d_?MZ)3-!.mjmh]=9:hiGE7q_A"NnI<dOi,9DkdXE)!R_8$/IGnNJ8FWdQiN[_aBjX-VcqS4aD`!J2rE64q[0phq,"8F0!!U1:T6q[;h\1AppugUQ0$d#;IN[J44rWt(2D?BfCDsXJBl0e_>3sX,[P=^PBD/r!l.#ml#d'nl1.GFH!"?L\X^1^?`SMC#%\G;<p\G\^ZqY#PGZ^cGh.`=C[HnMqi.A-PYUc[U&4T*;Sc8Zr^*)p+[]>*YN\Z>6fW'fbXanVD.Zief=-Z#+f7Z<NnuC1h36j_ZN'E/+qWIKAnbu[/%loq*Hp=*39-$,GX'tK;;o3g]YaCbE++\QG&,**2'472f<E`K5cO1*4C<P9sV-ijU7`bK4E.>[prB53o83%a3NXt^,::Tc5\?)5*mBmB68CSpHn+<_CmBOZ7lI$Q>,6O*>4ahRjX^f-hEQ<"=+)ZFhSe#/8r1,+n.7N\A.)/lmTAp]:^,2iZ[450bITj,CeW'=bX%o3Vhu;H2+2muAp;HaTC[_H"DtpI)3UUCce?j]5?eK[;3De<K.b:A30>l.+XF>Bmd^k0V>]CHU3rl;!IgB,BQTC,fhP#3Vgg4>mgg4:A9&&I!lKVEAk'7s-[$+,N,I&N#Z">8Q5GCC;/s"%Yc1&XEHI=YPFu8(g4C`49XrE5iY7"Q>KdF7SXa@=u$2Z9(AS^e1i6T7N(OU;op7:^=_%u?ZYNf;7];`Z-Y%!FK6.,.DMmeb4*J-iKrlkg0bP%@_6?'fVUqA>'.:i?2><0[4d!;/EMlBaRTW-j'][UUe;JPJ1IbMPP8e5.$r+#SCnZFsl:E)(H%etJfZT<IMKqXUeYS]IQShl81[ne^&+\ItEj#faKD_B42pnI!(VVH#6HJe'Vn]Ce2B:mn!iHN5.B/&PXg>_<[.9qD,iL^_&-BY=@J;-t1Z!AsPA-*h*#\E9c\r1?[DP2UDhGfs#iY^j1B\Y^j_^[4"aGd##*=B(n5n"%?(dI1d/5ebbONOYf_^!,E&67bV2^mt/L/Ns;T&>7:+P6>!rr<2Lq"-a6I`^IXF_sJ4DL>IBRs4XUik`,]VbusC/\Qkn^]hVj3\+prKU!F#AAL5P]K[7=DJFH/Imt78J(`JrV17=IR_B9-SXu@o[3XM7V%pUDrBp:%pl+Frps6gI`t7:uiuTi3qA!403/ff&bIEH<8huR:V*k,A+$+C6:38#2a5*]GhnAhJpA/doHfGsbm!WZc5A:&sg+VF:m)/>%=nn]\,>^;pG+9?"8^]352Qu+WG'.`-k^#D(+5^AZ0J=]IGrA^.9mLjF">W%8bIX^[3s8M\bfi<Q7LM+L!5MNrEK"t!ho63)']\nie:21Ng)jYM1n@B5^))/J^=7NTi-Q<5r=8Ddc>dXZ0,+s]=m+AD$YE%7gEC[>>9o8Il&<BIn4*j^MR/"kW96r0_Ep5P`iLehm(&?piT\M07]n(P_+EP;du@Of2]/=e)sK0=Pn*sZ4fOr[.H0fE=eAcpPOOkC&b"-DpTSd[=fsB?P\!o"PMr>X9hJ!RM8`H1@3mnMX_,5<p9X_,^,,c?*[nV6nXd(,UA,MXmR]MunD?gLPrq.&gOP1ih1Q@u[AoKWoBLXRZ\_i(UfO^bLjZ2\rr<N'MoD-L3]Dcb*Fm#k]tq\%Q_A,[R]ZM.JV\.o@@h\Z367&>?A?2$rJ<aK?Q&jqrr<_YKs[8Ed!QA_e[EsiJ)`GpC#RIHl/"^E@:FlqY'&Q+Tpcucg#Q+l,G+JdpCK+%rJ5h'rL#hWrlom/\+%/LIg'Q?%":eqVle&P]^[>\18k_+XD<"epXa<L"8O!I>!d[?/`Ar/Ib2M#B9@-b)He[qJYcQe8sER9r%j<@4r+c(P'FRcN99ET9:q=rR#6at9!aD>H,%T'!!p<!4t(h-ZOD>>r,'Cigp\EH@r"E?'^#&RAsp)QM5<3^pjO=.Wn##GUOg5+?WZsmSeEQi8h14"_q1G/WgE7`A,?E.f_USbl;lfKT>]<gOte^K\e2B=OJjXXbB#La+RMC4_B1cA6-(-4q![0k`,CAKLseI2p`%1Y#h3.U&_d#P6bh%jG)lg\frm!eMWmqmQ@!m';3a5RYOiU[ofY6&e$$/r<q>!?dkn[@MsL9;\Ph;4b0JQrRc`VhBj"r'(a;G48Jm+K<c!>Ur[knCUS"sma6d=*cM$9a]9N4Dn,qNlJ)U('=_#4&8K-m.-^HALIBD<j)Vi*ORVXm=ns5@Y?4#Y^pPSPlfQrr\#*&cr8l[T*\hu3Vd$1]3;NJ1`VcKp&-gintWQ''dP"K'4dU24QiI?Cu)1]u9I!rrdQPJZ8l<$0<+NuNb"/hO8V9;!M*E26@N\:Qe^engWl8XUL`SrT(.,K!D.Xs!s&,=QBF5VP.[%A+]*V!16iSP<<]3ACqe)Y5E[D+bIj%V%(dTer$X(c]$/1(alA7aZ0-]2.irr@=O%PN3.WV?k;HB4(<XK9'GJ)OZ;pVf%:Ek9n,pk%[&[@:4+ZWW2Y[d`0G1iY%/_,LJ23W;[di0*!'bhjGUBNm-G4sAA8\G149C0P$X?ct9"CpcJD#P1&4UM_="RA%0J[<oE/gC9B?+<oc1rkM["2;H/N'BWn9!eh#J,dG-b>b%C<P".P-^DHG8$Mh+8!J[:6j)B)\9R\H&O10#?^9<3\8>P=Gdu1<f2^\o3Jkdcc^Zf+Yn%u_9Q>dWQnQp.%As)&d+j?oo3+!lJi[_[Q&Ba*9qcc;%@4O?:Te((:UiP["_g<k8RTLOu8s-/8C:%RXO3[puo_.P:h\<JVTPN77M=diCDo;FZL:<sbM8%$1Bm3D1f\Hfc*nk*-e\%&4.#rPJKuu+O8DOa],.<7mgPYocV\\;<j!<?CA=R2!h)-JoRd->9Csltm&PfGheDXSj8p+iJKPFDc8oUb%V)bA#:7Y!uSN4Q,C/LKK3(bb^b"8IX"oeQ+4T>DF)#4+2rr?NrOjC6/<E^1rr(V;ZFN--*S0!$#a+)"Ap<!=7"[,*?K)Yfm^[,:Sre!Bcd(4RF?c:UTSiQUmF.V9D3UA9m1VquE-hAGW)pA6];"3ZCjnhJ2jR)GdrL<'oqU&p<p5/eL"JPhqP8X-Yf,sN_B-6h'C>Xbo/+MBn$`4mB)Dg>lp%VILrr@`gTQ2_Lq>).Xj7X_s#t+^m-8G">roUE_8[WKSO3c7h*^ASoTCQuo$o>me'V7HPihFpao]QL)^uO;o/&GZaFYdD%$0!V1]RKV8n,/iV"+Sse_B8_4%lO3UQ%--4K_/%]r-J-&i1CWd)p]&iZf3osr&_"6LM5Ci2cnRICbI#)'+Z%h1Ir,0Q#&/"0jSGZAc"L_S+^(]hr=*YINXC)9+*8lFY<u8&h=7c6/_Y;RG1-ZUQ]5%o8@k<VP:>G+k1A3UAu]/@Ju9AIqk%tjD]21MrF,0&4cXD\pnWlrr>6sT@?[7'fYhK:YJn.NQ6si.AqIK(-WF9?gGEF(=AhdnHOTM)>3G+\',b)/g6&.BhDKme8:?_(qc2"UZ_PPribj(7tei\ji]Gr%;HX4G)dXWZ*B$"'mHC0Pl6;[U/YkV2em35j)58e%fZNbZeup^\aDt@Fh$1W326SDjY3MMf?LU6_f]r:ejbft<GK[B*TgLA1n:.%#uZEiGf:PL14R+crr?khp^-J-^(C)&<blW-^D?:?D'6@#R#<$npu?-UV!<KP.S"2aXmV6?eKe-Fk++Em>V2]hrj$o<J)['NnUmAS;]p_=2KN8gl._a%l-d>lrrDf?9E+uD+J&l?$k#Q^;T.LF#R^+D)m2Xab3ROg%=_bMn4eDe"b16ifu$hZc\qHb](io,Va6e=nQ;4*g@ahBXR;eOmu"o(/N[7m61tak6nP`D[?=Zn-,"k:i]L3!DG'O\UBOHKWE0Tt2N/lVB'2oKHtuS`9dnAl4e.cEP(*"@qIf"Dj.!tu=g*E^9oOR(_;I+cbCM2'W\li)B]3s@N8KASWm@*Z$TV531<L[O_ojjQdtd@$#lalJ3j0I!Vna/!DneNE8j,2pN9Ap0V'#ITfDLj$g'do#*sNdRrrAE]Y'OUUpH@j<Y17OjX/UU$7ei&B$((K1o8<O35N%/:T83FHZke/TE:@$1!6S'@:ZLc%6,;ChZLKUI8=X&cI*04s-AV9c5FfHAhsusn49#:ggi`VsW]\eqrrCuh^[acV$m5>F)QnSZT9K9TYPpt?0<sQ]O3ktC4`U'(9)bL`!8tJ]njIp8EW6"r,?=Ykih)G4o3]\d8E:a3a4tajT?HP!iG-+3@1qm`ba&-H$"*3lhbI<pI3Wh/[=1f-K'(M;W+>I_9;U@%Q`9t:?O2H0$GIEk"9'\j#PB<+nc5o]f7T*u>46+7JdCG'ib5!B+Bh?KOX#hs!a4@7KiA%`M')h_S-*-6`NSYdqaK1B>M7^-GPJpgBkIiT[^Oce!"jT]%DBHg\h%ed"B"I,O[BOlZ,[b4U*;(eKhqt,LjhG`Dt.D6C&TLT`UQI:)LJ6TRXVI#mhK3^b)Sc!QHnMjP291u!3D;B,66?6cb[8B>X_8KcS0?m9%@ZJ6O/I<iu41te?ViF@cWd@X&6IBM#Nj\rm?00^u\['*Zr9P,Hm!@A_9*k5B!1TZuG\Qi@nA-0/Vcd$!+D^c?O5VG+@hG8Lnj,ooK([/c/[q$f`n!]FXLIiO5q"ib^4)Flos/Gd#&SAC94I1\dkFK&4L!)bdttB=GSn7@[F(;P"HHV<u@38Y0.%KhodNKRO6XrZuqgpj(d,$J&G+>K.^>nE5Sni.Y='I]'4#><K&'>fR#\0."T]`C`E!;Tg4_7UaI7Hc*GhMm^5[_gWELF\`ToK3,XEdnJ/rCE&7+;STf-J<8Mh>/r2B\a"@3#_ADdU9Pfi0DlIWrX#j3Hj.3Aj6+HU#]9Pih.a>V?4ZO(Rqot3-D.4^!p<Y7mU9me?cA@tlTL2(g</pL()Jo,1m;6O5M:MS*KA3(45j:L.H3Lf,*j.S0Jk7S5?c*;C\pUa7&`J]$7`_bBi]CVku4Ju;4Qe.TCU#1nDB%/9Fi-5*)ha;-%sDq\^"?7idB&[6Ft85B85utKoI(PQ8ZB#**-K1[gD^i(*D7+)i_jHlXQsA_r7:e<;ur7FGiT:oZ]Tr;jFSkZa3PVXgAB?4U*l>i/EWdg8)Kt[F=J\2&keT[^36HT(;1+<XBHUf$UkRbp/_^8>;*>G!#pG4f[E@HZnKK1&h7>j3uSo35=CNT,h"kQgBdn['ID(SgjH"ja9/ZaGNbGj>OG:p?gX(:Ae8iIP!gN>QHC[Y2R,Qr6:PcCM)7k$SS?#=!*?s5r>dgmA_gR;5Nu#drfCuA<\rbrr?gof8;?O!T:++inVAi3I_Ft)#Vg$Pgk,be1bq>VA:qP^Nk^U/.N/Qe[aZSP@sH]qd4_c\G`)8B]"]>'O#cpdritLh:d*m9E+uCHnhCgm(E``:$rT3_U^`)X*sf6Sk1g9p\t3r0DHT,[D.Tk+#RgNhU>6+LZ-R6-^l14mdIm5Wq_TV9.KueZs>`@6DP5AQ8=V)=7bF/dP@OGB4_FL3@s7Y!IBo2S.<9(E\%$LrI@'>++ZY^O2>6-h-*<_Y2=JQ%i9JY6@g<3]MaZg?,o,H[nCEU`P$g_`nNp$7Q-=k?P9WnEZPe0jOcAirHIP[D&>^q;8HZi;lPS<Q+eZpUJ=S8EiU_Ug-<ZnToTWBr)<GYB-&:;"D*OQ%K?EDnXa/qEH7gUM)^,,N5K4Kmk/;1NEgX8Mkpfj)H[mn8i5PZnqmAH"Ub#Hrr<B>p9FChi@@PgD;j;d<W<&PgVS23Odum!S$asZ5nsq_L8+G=E)d!Tg*o!/(&'rj&KBcfr#q[NHsQ5#=hQP'^D1j?m>hds,_X&WN'&ZpZTLbrJk#U.K(i^,:pdNBQDe$Uj6;'g/sjBR!:::(r%J#A1qQ3J]JG%[i"$T!&u[CYCN;#qLFt2`!L[d^=KcQ#@U!V_JU/;skKDfP`/SQjrrC#&L]7>g1^Ta*;o%6>dC_mJ7OTluYe5idb8GIW/T%FhIA5$K$,i/(&k6mYf5=dN`nhb,%oQ#EWgS8(F-N9#bd-;p$Bj5ac?(bhPdbY7;6:d$CQ,#qkg/n4WLMi1:CE<D33s.63,2EV:rI<c(Y"^Ddg8`$=O%b22Ii:dUJG"/[TS<DPCuj5hZ!RlT8:qn.fG\43dC)D=Wl3NDhfAYO%PiS[TKqs;T;EU8X:\3KJYX^f(3D`5`Cd7!3b>S7qQt27P+*bGo_oJSV^rj-^H$D/B<oLXt0Aurr@Y-pla+c5Pu1]iZF0X/N9;sGcSYe$1W_6Z%@AJ%oq.:*DdOh;DW*-^1*02&47igMZ,Ig!R##)J:ECBcdt:>K<MFnaRFZg)At_Y<`%nr][c!,-BamJWJ6@A:%_PWlJ=bMIb-eLrLoY(9[CXQ%e*GuWjt8V"GU]Ye>Fp84_LALF/`4Y9r?r.;[\ArV)><MaKK4'rNQ;%_)+=XC&\/7Iq6<Kp0V<e*u+M=9oJ!9Msgd70!;T(&h(KCX_o,t'[3"@M_:W1$uuRbq%Ap$+*%2;lK6sKg3]m"U:.J<NTRa\\<8gZJd>2cZV)j'@u_tb90A5$,(dae(%O8jqbqkGrLa&mr&F5%`34tX+,@5:6bj`Y]$PQ?A/Etf]b/V5o+Y@TK461W06.ChAQW!]gmm/)6Aj"%c1gV=rr<3tpmq:V7B-2KpidJQ!5gIBP05+02E(<!Hs>VmA]h4S,as^fKXB3@?_+PE4j4<AV>]6@J?/L;?c'HA`gP[J)!P"nLTccWeA^QpW(o/uV22/W:4eXfYr*uZKPA;g)o=_"<@Uq)B`?TB^E#E`qDS+a_YcI"fM'UNb4nUU_W3fsP#oQPbjeU1a2$5[.l*@ret\F:YumMjCgJJ0QoJ0Lonp)miA#JO#qqu:i2FE[;S.F8UKRPd4ostErWA$lCd'(gil0Re`V1.SZ:X$4%phU`o6`83TK8A-72j[K6Z0q>7siS%+,'Xo$Tr:rVrA5AIMmMrdO3WD;rXoG.h+\j,_%-Da-h.Mhb&dCdnS;nKU5clEdWtb':b4#><h*8_p96K<q23(i#da2*l%58MgRs=*KH>Yl-\skGo2([b9N:,f$`A12;RZLO]pJSY:T7=.;JjurrCuKhln2W^LR9D"u`sM+0kTrj'R_G+<E0*'PN]aBK"a)_nuBjQ:1<gY^r<oB\ooFF^)AoN#(+tBVYNU1sE6i%/>:C?^JbIEuNQi/2[_nb7TWMaukm31!Vi"KI*X)lro&r\92@C0D!qMGW3RuVPf=hN\'2D\==??i%['&k8Bfr<Mu)B3Ah_hh[dSO0acO1=#._BG*J`e<J9\tF0*r-:CTX?7t/S[!4-$crr?V;K&.F@<T/q(QSrilUZ.hmUC2/&587Fu^8n8-6DFg6eQZ<?(Wj)6TXM<UME=&A^[P8'!8ArPB:jh)r%dbBX<@;GnRff,9s\V<EI$Mm"jE1aCORPaNj!;DE]<5d/=a3'V7=*q@o$k<Ag@D9FseX>JfCR^ETs"`ph0ASrr@Y3r'8b\+o^0P*&$c'=nO:@%f!&B"mF,SZ%g.jnAK%=IqRJ)a)"R>I$`8:TF3'ae'(HAN:$F:!+fO'?PQS\k1(c8NYP2F`d:/!ot3r97PlRDD/uY*frC3iM:8.*0hOAppNP'#Nu*?g"Q4NCJM=I:C>%pH^c;M69A'7E@H@(OWmrmf<YLckX2Z]rSFG$J(NgmZbjd[XPoY<FT=gfc7'DIAhD+tsHqE7%9&`L3IMhkVqSu?V,VL?Tr["t1?+5UP@t]b:P>g/emis*:&)"/f"0YKu5EX"J`IC($n3K$H?Ntu+o8piC:DJ*q303QsU=(oRRr@eZ,F/c7ELnmlcr_XtJ^AU*iEe_id%uKW%/-5/W5;ZHenQW^WRo&HlVpG-([i^udTaif5=G>sk.'d8kk!bV0-*r5E>7s^\U(5VRWG&>/'YD:^BWdIGtXJ1LSIR8[s6>Q]2;8s&,lo_TD2iEO8duWd>-3M._Q,f!09:Dpmh9O#H@]mkGRL`I/a1_J+-ClrrBqEr."&4!$_,s:H7Uu]aHk!F81Xl-Ls4Y%.hU=1Q;>6T)=KEHbnV8-hAGW)peNa;"3iO!'U>^BW(d!Xq1"$!"f!\rrDR5c&_6*rWtm:lne-Qj,A5\p$jr@a4A!GrrCugH2dl!N;-dArrC$<)=>KB,[-7Hj+6jC^+8n%rWtc<is%[WrrCj$I6Zk+e\;.\fAjpL(K6CK1Z<dIk`gY^E'-Rf&3n3!hNdZ%-iX/o;`4RTYb!*>!7IM4k^N3bmJd1G75uCg`-r9t!9omM4cdhuf`(pnnC8Ve\`<Z^+2dFeDtlo2lrWqS^bV0_)0Xu'i.I*q#jqu>3TC89`IA(6Z3U;u8*odG!+h5MpE0,cC#A*MIsO8.j.PH'^ulj45,Y86hbP-)jCaVT!8,%$rrB$[3WB(l$GQZ;QFl[99YUKHWk/31?-hSErX.Q[*M7l>(]OKoE-O04>CV@A(\J0:\Lm1-fkKD`*GcNQcBc7-#d#u81M^0%$QM_]e86C/Nn+q0"oc^F!457R5A!-<RO?&2%JdJ6Z,(XXGcsFI#bgc9KXI2d[]cN"b`YB#H%'&eSNB<\gJYDcS.2F>J$r_<8)QUbIq]FG^+oCQisU+VO,5^U)Kqi"7_6sSgGTj/0"5<VUrRJQha\*Q)"XC6>J=R7_g`%9(&f$E_r/;J?P\#Dn`H;fRGs85C=DENN!tl*V[,\VRZ3e-Wb9fR.nLktZ(4jNXf`jeH@bbg*q9[L.*-17=g'G&(P0K*/UDPFhD['O<B<".h_V6)Q4tiE0:F\pLTAXpq2a^"V:UC2Vh,s=jk_ET,-R8B4AD9j43MVG(iiO5c7bqQiq"/$4HWTW@<2rp?SfLVk*6jpCgLn-p2d&87,b>H9:O\ZR):CY?//2+^^m_RSja&%O;hm7Z(=I7/,E9G!.kWArr<E'p44=Y3-[!7H2dl+:9XH_hi)kk\+;coIK7^@qK(jj:AOUel%As@1-adUrm50SV[is&Qlkl*ek]&kl$/__GW-WXZtncc?BN6+MYn)N/*KW(<IU)N.9:WTX-[gs=gY9@Wc7)aUo_-[C!+P6[-2WSn6OB9+s."Rm%eBorr=YH1\c(l!%,IIU]I#$\hg(c#G,$"NXrnq`IC_!n6OrI+o_NH$0hHi$R\mqT82Osg:ru]rr?7>?hK9Jlef0XrH!ou?5I=lQq"YrZSoKsFP#T6n#%.)^6/6XA?Qk]HkMlp2"HD;T9E!QRJg1]&,ljZq^$KR_#=l7(&jos9eUYH$YUI'inO7/9Lorf;UTD8DF>o,"#<7jR=o:f[\hDSLroS2rr@Y>J&+9q48U;Di(k>?-@ZZnT+/FuDKHs39B$>kI89)qnN938VjG$(Za1$PXBCtB!:^!Uk/G]ghKf5$;u@h!pf6h8rkol`kGUW90BqZ))8Q(j^`)5tBhs<6#ONK";ocWYHpSGrIhh1q`M[GT23mf^HHjn46e1)tD@^0T6#S7V.agX1Mf9;@^E^l\rr>7+oD1=c*7l-gb9;nJ7hpc^;,jEse#ur6W^\J&?aR^@QE<'AJ)*)uDJamMD\0X?*Z"9YK\;@jKD67;pih\e*&E,hE\-B)_934EQ?@r*0H#j$/UGjb<eJ;%oqP^lMrpjIp#oGh*?1Wg2o37dSgF.VnOLCp!#9l+E:@Y7$J4WeRrh[:Qe'O+(K&WKG:S;]Wp/nlVqe7@*`^B(]7;.'_Y?"Y>Jf8:^)-Phih(k+A%Bs6CS9<q2PF7om&$?h(]%^p!2]+MHFFY+EAE8AQlSeZ"b-V\3q-d<4rnmk`;Tl/?%eYZM*)r`l<YR`XJH?&$iMjBmA@^2;UJ*59a$gk/.tH&NNBPb`W#o@9)YcZ9@gaEq^_HN;FK!ATmu*0L(dle(Wk7&q^VB)_R?=2"H?%'*t[)Z.)O;?XYB_8dNeaVig11n2p#`G\/<5_-S2-pc?/G,XCZPM.S`i\:RtqU3d@#Kh5O/U=se_8r<Bo=`;"c?5%EPQ'%Et6auIif//B.Y1Ra[(7i^WrYCrT=UajM;%4p5)(DW-C@jMNCnC`,Ql:rr2!(paQGWg'EcQ!EN`d2k%cgl_g!!TP#miRVj!,,(/i;Sp`A^S4#BWSe>74rH<nV<#FZ.*n"A5Z:$e$PKaX$Xb27l7\or/;p2rBbm(n`G\t_n\Gjpkdujf&&jaB88?_&Sb3"Wb)\mc:b>e)9tA1LQ*mZ?;&N+WXCLZr!E9pn_UJ>6fK2I^*;mk[(=;;]M5L&P5MXBKUYuURcm$TG%)W'N^U@18NUC<&0*+%NUV]MqVH.Lc>(5gZFV*p%jnZ.b[PR/GBC'oW8I0Wam#Mt)uDr!7fL9oqhP)2_."*5r,%l%!,1MZi@@lg%rh1*eVki=9iK*qQ#Mtq<h+4+X]/T64q)3j#k7<%O,';Mpm#cr?MG1"nSX,aGbWAS[>OPSqb#:TU;!)5g=gnC8>L%Y+`1a#EtX;iAg[[prgXZ$$\S=)_]3WnKDmJSE@Sta\d!g&<>6p]"2o]i(MEotNqom@a5QdZea`Or[Xrm(nCun,O1]>gd<RpHrO(VA%c;#)EPAdcDJd,<"A]Vq!A&\7jQnK$I+\V4rr@cprNFQFgQ0=fH6;oL[6C#Y!3RC<kP91+WGsO^_L+_-T_#h=PUg-M;M6Gc3Ps_QPFU.fqarWGbc8+GUurT:7PTrR>Q4[3GVA&hO.Hqofo/$Pi4NoS]8A<[9[aZCid<c3oB2-o)\#^RKDM`\:B7?>"&>BP:6[/%XVk-<<jJ\R43.&%p8.chJuSak+1,[r?\oj10"`Y';@B*4kV>N"hVNL(6YJ=6&6R$iUS-Mc=2Za97r>6[>I9A.Z\Z9@TTd^nJ^55"hZpp\n(3UsC[.Pe@IMqIKDto[iULiVJ'=I`nh]YDjo5>4Y8I%on>"uE_Aut3627/3IhHu:=h_.H:<QB%5*p>e?/95^1q(9l#d.#C8.>#]%e[mU7`o[=GAti3_jMMpfmZAW;m.00=,N:ak.#e]76&bT-TY(X=#e6_8(q,U2]0\3>@3ih[uC5nnNRnXEG(-`,E0dFjS1$b;U)1[2K?V/=lJ]+kD@+8n[P)i$5dO.@u-C`i;KMsSOFH^BiC!Zq.'7Yi*Z7.Cd&p=LiqV.+3$MRYP`<eW-EC&*XpIZ<@<X]de*J__qN%I2Mgp,SL77G]Y*b$r6e4@$RN/=(A>1UrMC>?j788?W9NWaj8>Oh\fV6'>?^RCMEF&[h[Nc0IGu=_CDqYSU"N(]D.],\Y,cUaQ%cKS]UB41%E695`3NWB'LA:63p/BnGO5G.!WLO)ZT!Fl+,IZH4=R12piBWg)bRW,6Ik,d"MPkgBVUm=58,o--HAhd7's1$:CZ^I]U(<DDXth!QHM3n)NPEi(s9@'26b^QDL[YFNV]bN;cPPsW@&S0%mm)&@\'<bBdgsFgYSDsIm'@b*\@)i_jCku0[$eO-K3hh\9A7sM`S[bYa-5`niB^'>VurI1;Zu`[H/,Q;iPU0X4E"H0q7l9+]>?8rr>pHFZio!Vq#o?m7M%DXfUHLrpJe:88Tp995?UkUpuRWMV?Y<38h8s#`9Hr,)m<;>5L8P=T*dM!,)nsZW+3>n?7T74>ZL&mM0k?M-_O<RaXO1[LBoa3_V:GDS/D_W5m#fdmHH4)_Nc1=#(;M]F!T>]F3a1%f!ou8'lWL08HqsD,#+:'^9RP4s&5W%bn(mD)10/2cc+c.-Pic2VDSNPnfY^h#3Lfi2U.ipVl#"krK?4F\Nh57uV9O@'lE?r[+5g8ar4:_F>&k4@2K>PUuAjMUMM)q_mRN!CTj9H,mqb>jI2$4MDKMEc8*0`c8,>KO&_elKp7kqCko!?LDg3e?JG*IaXe[J"h?0HoLPa`9o.X6cEsU(Cs:P>7XX7_q;!4/"[QPT^#C%=d\2tVh7ffiBjCK';M!tUuLlgPn]uhkb$N=p)`ufq]GTHg%[3r3q&(d4'86I=2\rf"DrWlENu=J[#DZFBR2(h"H_k/F0%ZXP4ED3SD53mZ8+*f8\d=X*-%R;4`fB+\;NS.*tL4J..nTFa*nK2e)WeOGLi?5d;CN]N/b\C\Vg4B-r]9bY!Emb,6WD!n^IIE(],\0#1B]X4@/L5_u;(9m1r+!n99Dj)]of>MX'RFE`u$ER<:*YQq?&HD,TfI37O8;0N:9\odOOara@jQ-tYK2@u6hm-USJHXJF`':@t:g1uWQo`O[m?79M$-1]=Dlj8:LuUP,l(9K$Iur"m3f2ArSR39GK]#6R_k@I5F%>9-cWO2^*0lIDo#@unX\T024kWArYb5A@<^4r4*e4q%/?ijXdtTn4j$8\&+>`LToe>Oa;p1..c![VN;)8agTAC.b8&:b:):"E?.<_;C,47B-'o`1A.B<jOSeCAoL0[7u!HS_1PKJ#lu&W*QrWjHDaFJ0$\da%H4Jp=K8RrZhEq4u%f`=%Dbh_k.Ia.I`,1qb+E.['=dQ'C,G4as(+e?+Q(Ff.@WQBaYkq39*@Vc-?7,+0q5j5AP1sH4PS6qeNf^#3hI4g=O8M'1WIjCSH&_hVep^!oPM]F^85S@AMX6M'TTs99"Z6>D?MK?45`G>RutWZV9Yd.QG$3Q7!a'PbEcJ:lM5@#oTpiX_0XQ5"hm7.T<0>S!09?!0NmF58UT>8ad>f?\1C"_..O+K.FskanT23UJdA)q`2nO;PT<!WmHoL_;HJlTa5)gMN'W)ZE,Z/)iSkZB25)kIK'9MEqheCnB:MtZ11;eCF,jYnSc@7O,\fjUF_$bN]=Co!K*Bf[oTpmhoD<,)p$ZAFt<6<H0b_sB0#m8XA9;h)FoJY5GEC06*lJFd6'LeC&0HE@g_U\dn\@D@C*;L5R8<<[tZ^E)'qQoP"ff]*rc4pEVNu4q,d0bFdZ#bc*Ii,U9q2X]%,;7^Ekm5QAmu,r"NR34g(W!L\h86[g(f=4Q%7li/Ar3>$NkFA_C&KV.GM&d@dLLnQ)r0@WNMY3kTC2K]skaBm^<g!!POGp)!N&rr?O%NQK6>%9aA/IC"lTle=;p:(DU>1Q6__"F;.rrBDt-/,4\brrBmm'YGZmp^>.=%@;qL+lYRo[FV]J5Y^r6qfnuql84mE/5m"A_\C2>b*"<<X"+6%jMCir"P*I+Z2XeNn_iAbOdhCD"8_=gF9AL*:30d9E$l^g]IT:WYW1DZ3tYB)3`r=V$h\C+#==\.=aOnFP+OQMd5]g]DfgIRI4;mf]P$9.)e<2L_gFtl)+G8iiJMn$Hp2_[O/u=!6T)mD]sT5S@5/J0Ml2Gc/NH:pS7V-ZftK-=#t+^m-8G":fD[7pl+lgIX,M8=k<F_Zq!n@a"k1fq1ge-!TCPTE3U?\F'c*M/f<8M1a80KEDt)Ap*sfM&V0E7(c\H>L.H(^JB,Xg+VjiFJZhmGbF`:3\AtF0[B:;D&0.W40E)$BS@I]9L:Apc55AOG8LqYNi/F`Z>N]!pX:MhISe?qfrA%8trSo\pgeZ:F*pV\FkQ$h,DX#lOg1!bc@EF'#(j"+gU<l8CH@50XG8s#`Bf_o80*o!Kebr&,_e";qC?f>nS5=tAu^n)e2?_`quGW1uP3@5D'an"j)_:QpdM_Y4PX&F`2(ulo8fMJQ.:rHML2a%<p0Ae0b:ZCF.5j.j>rLQ(mpfr:Znc&TC2OjgI[Jf=h!$RBYH=MmDIYWjj%b:*YL&V/2T:`COK)A36pqO]G!!7NmV"g"gHDQq8U2#e7Y"L[FWp/!/c'@?=EN71_QJ1=TQ9R8T5fgK7JR;pfG)j8MS=Vp>e9B6f(!!siK&Y!d?\lO,Yuk[In?o2i33Qi:.9*IMV[m8tX!k#4AtA=+%).UJ!q@Xg]K=*C58*->*ck\E1X$&;KrL39`DN=!$'ig=3*1Bc*tM<(cE+S8m%YtL07$5o$:$QlJE)Z\\GS*H&^O/M'`S0LAUe3dnaD%%rMFrMUj8OdpjHhA?P)U@?k%+Yp`MQe25q3G/N).5jXekPS\mn+\Tc21nV-qnk<6HW!1\Au*P3Cu<@p^:ZIQ>Zm4VAE\%gDb)`rrsq^\UGCMV*T\6e%Sg>XI`-%b+mOssmP.e0cA#WP%-_thk2LU1eDBn^EHKg_t>k&HD+%6I&lLS%=F[-j,lo$iXKMcacl08f`JAA0X7(D(ODGo4PUD1n+gj1Ust<m#KB17`6^28e6U<5IT03E1rK(LIJM)hsTfE?=TEf(J@KI6.8cqL5jN07UeBM#RI/J,;P/pqspt:3<%:*8hmkkNUj<7Sipq>P9*hm!iZ?#%a14`Q*d6!lUTYY-7tX8AZj,TR[*&=2'&#rLSHHrm0.VcC+0G^cF]2/3H@HCON;=kpH*'!46XG,&;O.B7&sV\IXf:P,r>WW4m&/\Ro@JB,C?*PjoMTMTW05%*"9Qol-+K9LmW]PZ8,[CJUAHX"!?O\AlpBg@e&,:XSXpCWE"XGcR!Ik'=p.,FRZ(?4T3:<l*lPcW3*&ZV771?U@`k]7Qf48eihqV-\J)W$s-99$$pnrr@Z=N;O7^0q<7R-WJ.$r);#bK@>ePkOng\ir9!]+/sA%3U/p0S/VD,!'W,b"SbFUpI<Uo4n4$;g..11I32:&=%opMNT)7LqnUe2>f.kQeZ@`$)%:D[;N/*oUkL&VFoMGnC];5pL**bBK6!b-rM.:o5o;`M3:#>gor-g;&[IuKa=1[[]EVkP]fN[7NijD]I?RcjSFB2*e;Wg]P.L:%lM<mH%limp%i)D\4ik.*KX/h2)4,=9&f<aaB:iLi9VVg]e`B#oi2bhI.aQtJb>HHLj%8J6UA.0@n>kNF#'&QC#Nr?VnPADiSseiiO2AR@NP$6Ai/sWtT(k;.N#_dk9cZ/gZdL]-*@jjnNmCJL/F@QV)b>]-[^*5n/a]\"%Ch5QL,=kj-\WE`j#;`V\GlQpG9@F:5,4,gng^tGC=T>J8u5_!&pCid.b1J][[0U#4)&g(U&K[UfP+aar4`Is7WZE(0K;YL(Z_+U\1A[:F,)WLaXQ2H..\`;=[qX;V>SPe_/-kt\GSAH^CG_Ah@nAN]f3qdg\=_,3a1:#'u,SWD1["Z?aqhfe2k%/")1glaF8K*$SHYKF80\358s<LiP1@7/*$(*?d5JCPJPuHQf9#$p'DcuLAq6G]8H"fjTmLJ`]k[,-JXehaXf'GOt],Xa2D>>rWi5)i@S9L?P.ZEVYIX;3ok7WWM/U>]@u'KH/lHEAh^kq`@Nq[7k@S)/98boXH!f=jY-CP\*Q/$rr@dtn7Xq6bK#GGj59`Irr?7$LP@od_.B#D/>"u=j)OY-_QFXhB`2+RWIULM)K]ab&Q0(LE2c`qdYt/G-h,f=S_c;R$+Q1YHrA0N6h',m\8R)#B%?BRegh&p7l[3!_=9r$[-HZB*58:ML9!o\nT^!F%l1mW.^ZJ\!*PSWC8jGATD0hdmEab+MLVk&_J$RmW/GM"p4em]:D7GCpBgPa'$%hlDa0/eCXkm,'mr]`FqFoc/o?`J$aGD83&&<'`6d8SO"J<@`s`PL$V;ntYXmf65g)7$KhqtVQiYJ9IrRE>n4u:$cVW&3I1l/0+,"7SoE2&l!+X]hg?Pf,p9i%Kl4"[bXKjRl\O;S(Z8keaTLHpUko]Ci^Y#kZeTBVc9DtK1)f)G;(Y5%@T6'.1F8_^(b'<>+BC]pt=^[?14@p`ud7G94NU"D*[,K=Bpg]&alI['l=.;c\`T(rQ;g9#2Y?#\]e!u\0B,VI!)B@=ljb0't:#C`G&#(/*Shonc>K&]t`uG+P=?[hc]S:O4n`"0u7kDL'L2W$gd?XhjUJitmWb,D+ZK?fT>X^\OP\IrnFoMHH?br!%$2ZK*-2;O-Zr[%+S)J]g9>k9s_4/BSkW6/Y,c%HP9"29j$Q$obKiDG."6sh+m>U)r,`M;B5@2Bf@XtHm!#7b!$EBa!3!5*J.)<ku0KW4EPP+,E4\n3AaS!S9"3JN24cI?[`o?MJb4=\sMo8Z7eWXk,FfN`g[=&^\.dWmqaSu6.pj47$E7RC>nEsFO1pZJ+.Ef#E'f?i2>W,f<_dM_7.&G0JiS@)4QShCC,k[@<`B`SdA%BX0;:?a;gSQsgIM)S[_/Xo/J&4eHUVL4W1qPCs;>>@;[t]9!4Ah:qr$+BRFScd$ZDh=CL:IFA0'3Lr<+CqjTA@NFFo=&j@iSuAq[RRjik0^/qn\m=r#r1e&)mhLlo\/(0+bpbqSn5fXG5$s.&KY)KUtl"9T9e*0hiXM8K<l7)DX@F8#=,6`:=o:0$U,g3+4NJf;/\9X'r"t<3[.(1Jr1`.DB,#UX'c8d^rj&itmK<Ihb('ipHrO4?agpH^2mJ>E$M?Ehe01E4%-)Eh$uBAI6pek[UjH]sFIM=6fI`.[kBm1B.><>q]0ld.L*p>10QcZIJN)qb9j\]Rbr7CO`8;7sATe'.M_B6ZEf\X!u+>%RC02\j(b[0CVL!M>Jas,K(WTd<+7Ypik_9JLrF#BqT3;7sAM?c+IE:Sg:S(2ceZZVR^>]p9Q2NTkNAoNT6:$`sMbG%b:N5Z-Ve,i8@*CqbN$X*;XFrInsrtl0j=U#sKC-'C_!rJGp@0=&8=0KP^)F[0pg^:2?3)MXs`5gg=;8]q4A7pCeW(9ZgFU3u(6jmC;JAZApBOA^\A%o,Jf]Qf=Q>31A/('WB;-g-RTh<Rm&g>*THER^Xj.-Zn_4o1.2XkgAApJ_@dRdGg00i=7'ir[u<$K$5ud^7K7HF3H>GV]7<5VB7Y1_ZNsN<rn9(Er9c8MGgE?[5`2+N+A:Gq>4q,!5Tqp-i=n4F`/8t"gZZB-[[M3Bl8ZVBT7B!^Bn,+*Ne`\@?"gf%\3\YJfF)@2nVZn"m)L;l/_bc]<o/umUri?[^`WU[?7/n[(Lu`CR]TGOO6i,k`Wn/O@(7mYTSMu"BYFKiujinGm%Ld3q:S[4:cpK:Ro-MrlG*>Z[^"%,e3WAn:/9G-.H3<>?R.a)K**?4]>P4>/sRtO9j+["1/+a?EXn7\Vn;OVhNI$F3J,h0nRGSVbWg8`?^YN8u8K;P"Su?PpsuD34Us)_YCP95;F9&b].pcKmZ6TKPKN3:;'C>c>`Q[AjK2"8P4('bK"$;4Nf=LjX/r=X[aIgU7W_=Yb`17L[]%*SOV.u@(?*.=&hH=6Nt<p`]^=SrHaPc4^5CE8^DdJ`IDF-+7Mg>fP5bsE'>3+[eXdtB7n6R/WSR'cI!TrNn\l=#O06(Deo,^rr<2urK"Z,?<c]$'DN[.2q>%`?4C,W8U9=-k[[A<-+ofo\^[C`FUW_D,)qX]`8\M.[u<F4$>rsn^GN,qQLUk&G[*@V]1T-+;Te^FN$S/'\bL&Hq`K72`8`"62ra61bHM=g2)02-H0/mHfj,sT3%/A59@&lMYcESV*L*FddJU?Mb!5Ajce8KpUt)Pam!LsCi'2u$=Pm'PL#T]PRi;R=goW!orIjJOhRdt$QLYKjM\U%IMo5^3rjKRRDqU'-L[;)2ilg<D_d+f[KZAAt57h-P:To#H=r-Wo5-:mA,">kj7Kp3$6#CFH!Z3+]/C3r>&A`2tE'XV'5o9n:0h.9q)@QdKN>*QZ?5+df!'hPS:B#mt*o%5*rr</Q(&9KtEQ2k71/t;pi:>TC;l,i>jX1@,2s%#qWqg4_W>k`)d>]Vm[gHBkRf<9T-g8C^4pFoV@@)=Y,3')3$"<@o=.<$[$r&2d/a]d12@?(aUQf1:[$>i-X__l-0oRhha%7gAUOW@e:AM`jgiXJ3F6f(rJb!I2*I[d.VWSsidt,j)7WFC`qK/KOo[!L-rrC!h`LkRFNkBGR^L</9I8A>#Gc)Un*QAUWSho#jKA3<-!4Ro=1Rr[0pMpK@duRj':[QW?^E%jF-]sph%Q]II36hNsp)f>5k6L98HQDs/&WtOplfn'_HZPCR0QY)&p?S;u1Xkiin+dLWa;F[;p%7;Fj3t1PJbjBM5F9hJPP)pY4h]2%oc48o]TL_C4D,a2EM(UMCa%u%GfQN=j.(;5jiQG@TF7?Yl0XFVIXSaII^hA`I%TYScV4$#PLbf84b#,`+4PBQGr0t7W'0\>f*B$9pZMV4F.]@JrGfs>G"<b9T"TDU^gkhV4+2,$H4Jam0B.&n^S(RsH=oG$PHZ>&_;c@Pn^qjWE'Cf4%mgOA"-!*ek<Amtp#p+f!+^EbJW-0lcN"Q;1!dNmpA0a>f8m^i4Us9.Pge"PcVSXRi/YQGn^k;V\H"pcrAbb9:AONB".mOn3Ae8ooA^\50RWsEiuJAF5)IUql.kiVpZp1FGk<!6*1hXbj6i,doGrE&UEY4/PE6+;F49RdT0q**32OF_*8kitr3;3Nq@A%BVN?)K:E4B'ciS/^?@2D/V(Z_5kP2Z!4klPm0"_Zb!b77@niM/XS:2I@^JK3Kn68$F`^%T'OEtufH,kAQ^Hck3SVL(lqAqrCT^BX$3R.ogGN_MG4od`j4_Oi^:E0cC1#K00h/V^E*2jibj0qdVP".WW_8\Q`;IoMdL/0s(a<s-TH49Q+dY!^(c9M1(5&>RuPE'XuTEcQ9N:u;(I!,2MHN%_#kGM#C4[X5)*:qWC]_/0D"pRZkc?"SYa$,9e14!JMe]A&[T<:2jpZJ4L!;-[!;p"FaXtW'65>7$.:>*aclpqME]fL[>Dnol?5D!F+Go_3pgNNlMl,Tu"3<YinrV5j%[n[D6c`n;e;pKV-A:>USrD+:'kIi&(#@-Gb*iIbkr=3nudEag8niDjgo5s&?%o:d_EXr<Ia#Ot^pWp)D!;23L;Fp-S+&?gm,8fmj39e3b39eafa%r'"rD,_18\)MrqR:P45WqX"-j8UD4T"g8H^t)FkCM+o"U+AEPMa+^%R1STR)_LM6?sqCTKF26F<dZ--_@"%BgEuno_%84q@B`MqW-bNkE(+?qK<+Q*HB([nN[JlrHn/WZ1L$6G3PVk1;gUDMZ3Z[6':L*an>?iF85A!V9=0,r-S?T!$-#=j+53+NoR$5f7J@uO#V$JJ!PENgHGQ:,FgT5i+%gTClY=fA"8TWfK\pS#:#3#!-\MIStqLq)?<^X`Wnl_nEp%#]T20)Y!8'CkGN=qj+R?N*V(n*a4-XP3R0_X8il/"aR?r/p`/i%qG74=iVmoQf_+2!SFE'/-enHX@"4eTLSZU_3TI;jn`k2kj7DPM1&V=pc>k[]p^VWIM?$tYI1LCjUZd+^qN6e5SNkFr_kq\OU\Q!=csZ_2n9qtR"!9i%5DMHhr^#TFl(5Yn;3&;5ca^d_(o59hl.\>le9uD#mX"WqESET`A:=V%^7"g!3Pd6#-U!N?jj/FZ5669;_<8Q<)'([XK>0XK#F\-GHLm.]*o*8u+8pTW8pbZq3TT_#HK1U-c`ngcF+]%)_q,nm\]:\h1"ZIQ%m6!Mn]+Bh!VGOXFBkF5lc+"c8$5qXan>>O-9VU_U&=H$EQS'/E&%DZalBN`a(+<C3;bS($-`H'+S@,D3U>1=mDiU(5.t[nf-e&*:7e":ale\s;fI.=#T<7>fFE/J4Ro"f`b6GZHM/R$+&;btn_E2%!S`c_@JZ":-`?Y)MF53rB09Q4ES$9',Lb51)=?mah0S`6@jf#ilcWBOE&5j\T2*:o?lXYG!+'q5j:$,pM9d7+St(.*Jk$&/]mm\E5H]"QF%d_N*;728h!d&Mq>Dbb0MY,ER3,@Ya)T-q?XZ20DOjSomQ9s"`/_@)W$ePloBm.],G4tC.0m*?O&>5phi>7n4aWKG_8uHc&#&^aq0I+>!-]^_*CbBck2^uH3Tl8[`uKC6H_*GQJ!8"r%g2'IrqC>IN:Hj%@C\?<qKL52nis,<Nq<=]-R7s/WVb>g@K$M85tH'Y7Sd?Yj8s],1&>D9#X,uK%S?-`NuWU2j0gX&KH0J9fD2%4n2_Zk!*'"Jh4O0XU`WD'#:#gAP'W3FHQJ\b@is$WVON=d6.\7)5.u6^,Hp?h:cTE^gBWb07PTjGa'S[UJ.r')e8q3Il8JYB>b?*5dnY>_^uLB;Nh&2M4*graa\W91ofO474aW,-j#m8o'*K@GHCPI,F3#GX59\8O"$Nq[4`gGk4n*HTd#Rb539*.bO8f1mBtIJj+/a-55L1?>HAYrd?npDil.`TG"7HYE$m3Cb5@/YU8o_n\f:Yrg8H/ZPk6E:I!:i.jW'=V(rr>j<^L[<el>Ub#U&P*UI=6AhTEY8(i:6gIfD>Jr>c2M]%qC\a:N?@=P%^S?!ccg6LL-bU!3P.\.HC6ro]u?`rrB5k'EEcqa#sZV"u(>pc@(/KFrZH\f_U[#e++Ld-ii[`H2^1/4E^%MrY[74*.cCbTd9<Of=u=i72,`h)*Hp][q!n_o_hQh1,=<l`rKVXG@S+"J:7Y9!4cA6"F>.@,Hh?L4Z`+/a?5&L80,bHj.Cdb;*YT5PFhSWe76sfrr@l@dZK@K#Ho5(5<SWe4V*"\'EFO<4QN(pF;b(Q3Vr\g_1k&AN]?G$FS*]QO#0^!$]o`3&in#*l>SiaUsf>]4\$K6l[teb3QJ>q.%geH)"mP=p,N5Qe.1=!8DoGu#($:L^&EJ5XV=S5'@_NFT?MgM1-\rV+J(aB51q=Q5DR"U'Mnjpglmc:Fj<clH=VGC(4jK^]mi3[J_Q.270"a^bK`,o*QQ;,Io!u>MJ5;9:T;D?Su;5ucQ$m2-iaBh#9?D9!')'M,EAFDi6F=;gi:A1_jW!H&-(;~>endstream
-endobj
-6 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 546 /Length 56520 /SMask 7 0 R 
-  /Subtype /Image /Type /XObject /Width 1271
->>
-stream
-Gb"-VKm+6_*l.;qkck;C'3nbK8<KW895uCW."rkA<$CZp&g4]r#'Y8_JkI3m_,K:JS_9Q-2E!?QZFfp]c96S=YM#InmuH2\>l4F:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+ES;3]K;@GF7et8j2^R05AF3@gn0#`DLqYo+$Vbc@[e&HI6;lQdG]_%XfKtc8+.PPS)pX%:SD*g%XF36Ap)+i2(L>^>BO(q>.a?'7b[[](S3[ToCq_QgToelb%2B2j]j'no*a_&4.,WtikC\WY.hO$q%8)u*\qER=7&mh[7P,d-E6B6.=M)(r;-#fb^J.SjqA"T8h8ocPLg,G-b^\6[U&dLiehO-2RuQ:j?@umba>tOqr[55hu?dU)'5#GW+p%`Qq_]B`jG_#\^Dbg]ZlebbuuFEX;AQeb7+]_%fimoDi38W9m5&hjJj57@B-Trl`ZYhHM'RPk`6l-kbb5IES"sM#h(<1R]9D(f8I@brlO=QnC#*$k>"6`s,Mi^]NKS%ag6A+($*,Fgc3kec:(-%r,jh(bNEs&c(D\Y7_P`-.^j-EZpU6A%V6C]6.(UNMC>QXMsdWh.GM>gF?5mW7_Z3?ma!f\p_Z)5UXRm$!07;)p).bflUk)&DH./bg-OE"/%OV.isT.,@)!,Jb8TBcSh_AJ/ss9._49]O)%UcNr3G(nS-P6RTB)==:S,5ed614,]kTDLr`:Vu'c'q(/5lD(po"&Y9(b[QF4f`)"/4ZMTkfpO:;5)N/'e+^eOj.i^WlJdEoa?nB)VU;LoQYW@[/;79s;R2NpRXtHhUn/?O["D\9.^A=Igl-[k_GbIaBWA4n!K4m4`(tCA25iZHAD0KK-p8'c3DnCPY&rqN7ZfV<_s$l2Gi)r9]#e3>Xu!Gggp9kFk!#EujOu%UT,2Agf6JFW7s:G+_A40diL:1(`6\O4l#<hq[[b.VQLD(L;$N$Ot[j^9$YR-iUD`SYuX;Z^f<#!0f0Rn/A?[1AO5bTKu9&SNNg.CTW;?*E"b=X\.RaD;->LIdJ0W*noH0cLN@(rPP<O=$@]5o%u;KaL+It5DS?aUdVt7Km1E!@1fD54`iaF5d4G"r1a%^o=;e3?\%\hDr7Xb.nZ.GKmNDoVS2FcY24uL)5@6Ui,%:uh1iF5^(Y\YRTfLW^!e8cNDG)8Dtb7S0p/Ua&'#<<pj(#*LC.=@"E.'g6*Ac!CL>lAg9sT$3tb$\rIe%l>QYE"hBc1RbtWYtoGnTmZq3hKV=DALGGC)2*;08Vq6Qd.g^8R>e>$6:ocn99:$@_Wf/[,A1F[P?lW8.s2N(Y*]9Wp+Nf`-hS2pPhd;i:p"M(J`L/jT%0pDIZO;a#qKZ?9&;!<#pJ`(TgJ$s`ceU,]#:Ru._pr^6t>L]pq@VsX7+]iK<k4-ch]lAOhrc%ph-YD<LX1KL4+#K\D$i-gl6T=8cZDCKhPr]oYh.ii\>U9sBU11l2h4_0<,@'*[i;-H?S^'D1Hku^,8<-fqRhS]8c#$&3.AsKokT^!iXSp,/r'P;VGhr>?:S6ji"V=MkRo8+$\':BifF[*nX$A5'k@=j+Y)aYhIG8PJHAtGjO_R;gb-e]6rIWLPXqD"\;)*?E=(>;db:E`"9V8uR:g:neF.;^K%]?WTd%3FHh7T/Q#D^`nS'Qsu!!;$GdU#6UKk=oQ)gtfMOTrB"h4)33Jp2Y(#hQ5ZqmuAsV[Hd1&EKQp4aNnCHT10ZfoHu#2Ud02k.WDd]'+SsFgff"'c6oL4YqECd7TVtZZW=PR!<;&baZ"1j$71d2)9El.]9T]!9I*Z$+P2gTMa`/>A!"5a14"(X.">)ClVnje"K1h042Hn[^R78=uQc>2gS(f@)/%%#]`eI52WLs*9>EBQ$NXVPCm-=(S1Hc2J/cB$biU/-p>2?]/8t@hXB26ntuQW9tkhdmi0lMf4bdpESW,3*:[Zal:53rRd5(`!C2i5kO+[LQ.ceQ.<4e>&aOkN&M1!Sh7ruqCY)P3-tU#*XEBGSQNchA#N14i'G9E#@\ZDo2`t>*0(PCYfa!,ToI7e8/'jcoa7Clp]M=gffl>p=.nql:%ICRPs!(]5BhM-j\5c2@.]Wne/7[BJJ=uH-dApm5VIPu/[7N=WmbQ;4#2;J>#7om?K*Z0;)*;TW?!!/)7;!is>ZC'N\bgK@*o87'Y&1Y<c9;ee@M^'XhNi:Y&TZda<gakmp$0(]j5o_>Er-)TO=Rq`l"R92;4<)AWUeTGRsF**+=KWM$gY@)h_S>/mOhuu,&#IODTepC8i?bKSf&>e]QELMFe%chNSA0(dm^HD#]`eI4ZdTJ]j]&N17G[G-nGdt*Q%p4>WVn\AfXV)R*PlADM+<<\+35:8afuZ'BDn*]h*Q0DU7b8ntuQ%W<N?;+$P&dOd'^R\`u\883d-]Z`*)_drjSAI2d\4o_%\sCZX@*0W<a(IaV->3*-Ph&OA$!eO@&XlFIpj^RmZ!\'l3"K%9?VCNNm)mQ91!Z('"_7M,=TQ5m#Tm-&jL>7\n1k\A\/4FQdo;],f?J#l>Y@%^qH<ZK`bbN+(uZAN_`gcAF&fXBkg1R;=F)]g5Jgt3M'b"n>;]p:`['ic#8/h/!I*jBJF3V?U[dN^f;kmT35NNR!eKEq6Y3h:[A=CppDp=u&n4G`)(BS2$oQS1N#Chi-C:^=Pr`D;3t>-34GEam6!#;Zhi#'j^i&OVLnroeh[-b$?L)EV]oPK0ksWWmJ3pN[7?4nD3N7TH#bA7pRr4BZjr\F!+@<*]X;.$+3?nWUV`8VO4H.oS6=f8[r.TC#n'JPbjJZqb5p9**Z:1b.(Z\nl[6JiLjM>hn2jZ1Xuka.-+m5E=X\Cp!fS(o>o/l26`!C!MX]d@=k@2<eFN[pdLN?ZnYSH9nP]Q_'5$k,KgM\@/InjnjFq_NVqF"M#r,a,ckBEUM0$MQ`VX`B?XkQ+Y;@MU\GI6KUIUKZdUY^e]IXG!O5>=1^cB`cY?GT.tJ)=HE`to$'\8"nh,fgfoYlnrpZkSN8<NqsH]EZb`pT"ooA/4ouN!EDZ]#Kk<fdo&H]eGjO4RHa<(,\QFMS-]["!iGHinOeoo7GFdA"rla?'RP^%7E2+W`E`"Q66Z:HMCE5Ji<Ee3B.D0ZUbiq3]4al^&Aq<dbHcPM[;N+XgWnSY.nq=,*g%cpX@pYZEUd;.e@dJsBC<n8U&JiJ"'EB;Oa#E6XFQO@ZGKN1G)KhcDs0/38>htPmIA\JhYgr=0;+(X>da$#H0;lf;=&Z!b8MuTmE(]"@#Eo_[6C3`T592t7J)Oai-B6b8G1=P%UGn/SZYA:"Hadq-StGc.l.c<5l-b85d0l"1Sfh<\@lB20DXP_3ldoCHB[W*mO9gC[pTNI1^Dj[tdb)eX`b_Xt%3;f&Q$"_\KTNO<+4Y-DUN(,UWrbH76sYr/F^-+oN1q2h[k-sPKb]?P:S5:+^#Gc24uR'oV[@@5.C^@8a9DTmkh>$$3k#N!eO5K,*On4_W[(]U&E6Fg!1uJ'`1.*`E6k"g(.YuDI[)[2dalq/1FJ5JGlRb-A#4Nks5h7C=62B/otk4h?+5h1<Z\3pU.'Z[W"kM(CdsKo*MfQBGo%nG0+_U,mCa\lK3U'I8cYm$E?dCH8<>@]5%RlsiY30UXC\,NHqaEW>L^M7CK=cq\c(+<K6OM+c+SE$\bP?ICX9u7M#V,6cJ.Yd?VZD@0mD3?mt\#\f7%][WLm@b4:<^)[1A(1alSM$74MUr"&9u[Kph-i!J6pV)trKX*kXeABB_PG2^N?K!(+uSJp2(d-G(b_*Q,.,Ye3C;C.<k6L_2@Xm=q3^IM!>mhB,h*GLP<(6]>c[Xd!GDf^8<l?e#bL!^T<1g']U$^2PMH4F1,^Uj5;r#.Z%-Wan:0!/.A9-QY++-g*PE`E?pO?c`VeJK<';&npq7G(nC03s]kX@&&BYhLD6hDP<5s'WOcu,b8,,#BJlalC&b$!?U;O53_Fj"b>O,IU6T]SX3RX_%7jrAWkmk7*#IqgU9l"c>l_"XX\1B5XgbR/@\TN<d[*X>dm-:\cBEVe?g=,BtqIg7?HilrDkNj<t0[0B#2.Y!ON,4BI0#>T@.V!&aVt'+:)ug!'W$*HQ6'6.`?pD!2r4V%JQ;H@B2NSfC>dnoTHN4e?[TqNr@rcM'+_W]mp&h:3QW5o1uf3^9M\6<KW:^\TdAZMe>gm4.S5g/GJDpS(F9>4TAshesk[;fY%4;QAsMBSU#>;g@L(1$B'd*3h=)`nEt-jG#nUM/%LEjF#L+B=0edi;^WXA](,^gUK:Hk96\Im<P%V$JK3_d(;.i%STk$IDW\\"okU^HhVeB!Nui>FhO0Rms7T0Ldhr8gRuA2m[cBOb!aZP''&c;34R2PlN+)q#HAMq"A\gIUC+=W,?@1,+$eV"S04G\;*BS<%f3^0?Wu(.bj$##gBo@Y94jk^:fp!%r6F=OV5B#3T4HXn0Kp?E8jidB?5#`58M2(,Mgc)DD5A:)ZQdRfs)IeLF;:j,Dk=QH,\h&^,hm;qJ?h4ee)nkL*Dpk,_9_b?*)%.'XWu2N+1ql>t-,TqjR6,K9ZDH_PX5<$?/.Klg8lbU`B@ViX;WIL9II_^9Na#(p-g1H>pQoSUJ"<ikqNUBAU^un.1aW1]7pN[ko'B_,%i_g_A&fml2^XWh_8u+Xn_LdRN>f)$pGr+oDSIJm@,H8aWKP6"pep9L7cSndM_QG8BV1:MGpienO=T`37h=JjNK#A#\+]3qU@";h[Ha*iUIqM'_jL-<Q[ID7jjZk+`S#D(_@rj=%KP(AGCf\eWFsOgnf?RK5F4@]E:PQX/3cs[RiTj=BN5U0Y$UGG>kt*h<;jgVNLIh%8bF"@M?\,>>@jdC;UJYh5'1Z7Z@\E`;clGkT$%lsSe`n^_e%4d6qj>3fV")P,1g`Q)cf1LhsNR;J"=(,"8]28-W8u:nVsr)D7K4ZVl#uhY,%3[*c]_j'^(b$P)>cf,)dSJhNXe9f>A1bl`([975,J5,YlB_Th<l$7#<^1iLbnnh"!qHil`p#'6<6b_ktZl`2ToEl9l8QN/p//i`j&gi$tG[e]Z8Src,12[k$aBp3B_;c!$7-:HnCugMbs`M(<oE%i`H0C7p_/2if%BEoWGpf1Nf)nMAnT[eWDc\l&,>`G3%H`'mb.6-PdV9:qKOF37G?Bcuh4SN8?b?^p7_KN!8/aIq(pbA$5J=]G#JF+<o-krV=5C[A&57K0Sub+)g^+$4kr`/F^^+HRZS0:orGq+\GYEQe?Z>/_*AN1Y8SrU[lB6*=O.9?nGh40;&g;!,6D-CML[V'jemp=QC@#YG^q;"VW"B(b)H.3\P@JKf$hE38-'SMbh^JZg*H015[ak4VPnn![u691tIDS!]!.pKl.9\YjGr'!\QbfmNN7[J\LKN"u,'71L?NB()mChDprk"9m=k<j_FIR;('@LX]\*r\_Y2%Ni-^HKfkM_E>Z$q"L6MU+`)shY!0SJ$Mf''%'O$0=9h@'2/7q,n&J-9i=mEa`m2I]*qcC\7jf">b^Ub4F?qPY;:?[e*OQsH_n)f_7]`1-Z&1s@<(Q':$Y0?`hM$k-N>f=^I[4b/L-+)MBMPS+2:u6<ODbnD3=TNgU0]EWK:l[rA#iQOj@[PFA:"N@qla/&6)KqY"/4C\_5)NbD)4m4XN#j`fAd:oM:?"&EN,AZ0[(F)O(2G[FE*gG5LE[&]<52<3`Rgmo?EqQ18^kK"1jFD/"4\\E(H^/:Zrk!\"GR$l"!-[[S"]mF=kUC?esT7fMPS3`4mh<YR?2DjK6q62Y_\((&<YR58+DiIeubdrs;?7]Mf&`TerG0,:'"T%gG0i9f3-fo\XG:!%-a-][#La&20&]g[Dk.fE@[:-TZph.fqh>Om@)]gho+Ed)?3op$.$)1BH8<!AC_e!:<FOiRC&9=G@GY8Fe5d[-PHJ%3/Z;=FOWRW>:\8D.Zn.*m2k.ANE"IKk2tpaLO:;>#Hp1,"FRXr?D\np-(cI%*)kQH?NA!$UFJS"a4PQ5P%M8ZJX+V>N,t\:KM[="dL(gkC4uP2j1F^.7>qa4%J%0[Gnh`*e\=[?;Y6(b3K[3_ClmG^ih:ir)&RT?bp-SXCqe\!V4.R##7[)oR!eg&)FM8u$ga%iaro/MJKsC*L`Aq&SORN/\^cZ#m?NhT$'.\OAq/-]R"m\A,>tPLCiNlBZmuV3eG0=(=4u_Rj6NFJejZcPIM%RF5GE,0@l2\,(uSock,/R<ItUH_4$IC6[V_8!!;+`ug\3B)i2KDr26<)mWNCX<H<"1qBDc@NKD`+NW*V=HL/7gZZnrPNSA)0=<K.]V!:&q>J[JVD$2);,=?Vk3Z$o<QopLXt[>8T;DO[p<m&;]bR-L-d1Ek^"mG4DS52dA!tMtYcF9Vf+3pJ^\4['2Z2WcOIHr.;X)0O'':,=Ec9i_+\t)*kY4COYi=N`mt\#lp$.1g)R_0;[I@_-+J7uOp`&;V4b#PBbU,Q$T/EHK`@m&HS6tiLa(Dp`K&<ADSeo.Q9["Y/%ki-)NOk?h/Fq[C:B,X=#XPV"rWKblg%f!'Q#'0m6\Nl))`5@k2,:7]ElF*lU.'Zbd.68&qrX2abD'dNbGZJXg9"#JT>sZ%4^VL_e!D!<\sE1ISE,jYSA*12Wfn;.EYj%Sh!q-uWPa*8oq47b'fg(QX^7iJ8L;&A)7\G4:"$/509"F/6#N+O(O0Rf4`&du8L]8Q=&#gVS.Fhm1-b60-T@Yi/<U2;5t'NPZ=)MiV]H2]Q'>EZ@C7?Y+0l'N&`i4g/BF)$^+Z<?5F!$rf!N]W"oN8R.aM!lB(Rr_(ZYqPIbZ:L=AMGG]7BKbmP_+fZCe&_d!%*6Qb_Jd1As5slsFqZF_1S.rgrj-"'65Hf_o;2aGlL/PT)PrUWY_(g&!,LjITUr2V+-OOg2$CjfqKd[S=JbmC@fE,fhR`o!J!GUmlo",dH[POfnNrXV*:ldh%%;<r24=o$m8>oqJN,jqIkgM/Z\+82tmH#qSAm+BL2u6*<32`q@q18:=L\VHOaAK@6qZESP04WnPlDpY^TB]k=#5j%^V]GWp%8SGPGC:!8iZRe%(6kFm(4BR'n8A)kI^%9_`LMc6I]nXJr\KnUl?6=h^h9o_HK3:XAR*cuR9CCbI3S9e:Eg@s1i6!J)+=TZ0ELW*&]^=HM\"M&+?Hbi!jc94Cg[?J[h6YWBNe#77kk5H>rSf"gC+=*I?rMX;n,b'RT"ahe;[*,SK?9Q^Y4t(OL[t5q0\U#,!EpGQ@Olq)FZW+Ol*F8lHVGst"6*B]O[kte7O\"4bh_:mK_Nsjrob>b/142oJj28`h%:5e<c*dCqW$k4REjm[#rqGRo$Z\=N=PQFg6EEECjT`89d,>EsEjG:@[*npX_t54fE>lG\Dg`8ZQ8X*0mJn,$-h:*;Ie6M2dKL1c?G.s05#b[Bb1`gX_31&.,F<bK(CMYs'7sK&oEMjt)Dc`.WCeg8G;H=/biMJnrNBsoJm>/PoC)J[>^GN]bM1(]RV(9UB%6S@Fd10u(+i>4\ZprLlr'DtSp,gqS.ap2G?Ocl]:u7fUH`m7+NX6J-6(gXVjnl2mT<Q9Y/(3@](Cu;pG]XqV3>8@1i<qMqW(#Wogt826]#aaAFWH>Ir:I[S(EXY70e?.(*@UlH>U85Y(<"*#ZogNrEh;l2C$;nb>=;da92`l8V[aYj*t'5h333W`f$;YFDmQ$]QKBEj(uCPkJIOYNMT?-FWJ.aMhDnW7^g>X4*#ts49%-&SfRC`4O1^DbRF]c5,YI<g<_T[3@XZt'9SF?a)su.3q(gOa$>%cjJkX#4KA5u"(f364;RncUK7YK?N:?OSlo-paVWsig9jRgJ./#hlmD2Wp29Am2,Bk.Sot7W&`i4gX=%(5ZoqKed[leTVJTQ8*S,"3OK3K4NK?1[Fe"$2+]b_Tk\&:r%&q(Hn,0AokXS!=Sq!#PUV)#A0'Bid9@RU=+,f+T*TZLgMFrM+pJbpBTX$&a[I5#uX*!0tbJrh2+BPgn^"/Ip*@[#YG8^:7!?c@V%"aZ@[G]sZhYXbApKRN5mk/=t`>.VRMJIl6(kN)\Y$T,">c!j*B9/52de8/l=fZmiL%N>s[3%_<dV&.G/UeI0(sjWt=&5HYcQe55l9.t`nr*L+;HD*N.5)PKioF%7H<A,UUB^I)ngDMD(Uu04-[3CsIK%ehq%[5PHtjtENK$&<X>3!RjEd@]pUF)\36tT7o]B<H<F^9h]^eE;`1/OZ6N]Rr]6*#R\%PjBqVVaLjAPAh5CW5OesHeZ"M&jSd?CU[HTj7arTrm7Zat#&FapFFL*3t0n9oAKWroo..2'd*6+oo2bC>!<jpUjn],Habl^N!%`tC"2Gg\kK$;4qu_5_1L:;`GO>uHFe=Z^*f]'kEWrI3D1DV`e-8V)E_(c$'1a=[+'>uTX/ph6<arU7icE,LRVpVOJ]AcKId5IH^LUc)6ghEacaCI`R3\7F6R2*VLR-RsMbTJatt-7VeVF]H&L&_BY51N1hc]dJY?BEu*6<dTGRZHk;VX7C2?VsA^(<T=$0^1qE4NG@'Rn_c^6jf@O!iTp@6a_30l3Qg6DS3`h<Xt0P-iSh%#]T[Ei2A\XB&P_.`G4&+CCPjNH8]1Enkh7o]^qOW_CE<BuaOSJH+BN;VeZPj[aAoQk7pTW6'Y+Z2BoMK!?.Ea.Xt7ec[aRL&C.?p&cfYas+c2NIqJ#EbF/cXheT8\.rDjh#BB546C)6j@e/_aP?8(o`@d^Q]HZn9FFiNhbdU#JE6Knc#jjHR9)RO<JOR"B!(3-F[np>DdCqOZ`3gK!(8[J2As#>8"eC&2Ph\I4mHr!^aPNMC!LJT2MZ2RI:rbOl^labTBP;]2A+P6+pqFY[)5!a)*rg:1PV.\m'jlf;iI.c3U_hYBh?ZJ%P42:F^^OQ:@fi&Ctrd!_nY%]2c)P*_-Z"W4fFiJlD!!m8pVU"MZ*u=ct5Wj3Q%FbqmP=duWX',%IV($&IX`Be_+BL30HZGBZ[U+2pf<2**#HaR[@EXml>6b[DeZEUj"*NLkIn-I[*qSTh'H%dG"Kh(5ok%q,XulK?+rt@,C1St!qpkE+]j,Jd*EFiYp<=DbMRGM7PkUj_WM(%I;7ue(FJ76b+8ts&R>!<%Xg7Wa;e"P(E-Wlakp;0ZF1Y_<d2Fm!]:2`l[jE[4E[r#smJ\\P7>a0/RJE9NlX!l3XL\U(qL7).JqA1](Kj/<$g-i[dicZ,SnD>=;?&ftrcdO.g68#7jD:Z8X*7ZL`M:%n;XnT"o'],I:Hkj'SHF1f6-krt1Lf@rc1a&ea]g]0n(;W:VsO7McAT&Fq^mfJ!e?s6l'$@d.1`hA%go41fj;![PgU?]m%LTQ?kTU0k_2NlE[sRjHqs/TaOSK6+LekI+Y7ZPn9%qn>k:@V,s?POC>J/*_hP8c1`cPIBgmC7[nKg5=&sq%0%*XHmOuu?EDp@Eh$,T;6dATTSpFLE:L#5:5X,Z]l]^^nbOn!l9oJ-?0%EqVaue^uiK?_6qQ9BM4d>!Ls')!$<P0HWNplhJ1if<_-el:@F^H8'"h>qV*nQ?ah)9QFa:3VPa:p#+\/a(1>["o)b*&RL,3g77B%+6&='R5Q-b!I?$j2o;l!I%Rr&X8(eGGJHh_+$D1F((\qlhou?(Gt,r)dD#U?dQSPYUngA&U[O+6X^=*q;[i..P.MAUUJ>gq<\F,;sJM-Kh1VCZtX=CK.Jd2!%,^E*K\CgqPekpD_'T;C\R;ahY*[Xa%82Drj&JT3f^K<'Gh?[sq3)KDR<mc@qJMgrc*EH$aE(*O!j^;N<-d`GE^U8MQ@JSin[1IWC^2D>3G3PIWm\LM%:]lK)Z?X)o'c)Ruf[l%D5g1VQr:Ab)b[8Un<)j;Nq':Y9Ela>V8aPstXu`2-t^@"`p/`Gm8bQ#$Bc]t/+,`a0I;E6LRcP^G%P&2@3Bg!&\BQ.&4Sg!ZT`_UGFZ<m*EPaHc3G,0gg45I`r45ju?^<:j%Z4_3JCWDc%Xg6GpV7pP]\@@+>Imd45("u9GPV*V8oH/?45>bkR_b"29q]bLK<maflfFhN,T^N[0FrnW/]^K++hRr;QTI9B]+q4=.d%GbXP-dOa-denC:YVc07Z)^?im=$^"%j:B7r$G]3WhrPFG3D2Ods5qrL^O1Y4gS:l`8Vq*--%^+[8__[8\Nc.c_.'$h:%[fSe'q-[]HsM$IQdqZgq!YBg1@V5OYm6?hPV`e]U4>X'St4I.3%4M\;blXi@>$1OkT41;-C8je1GAVA_(mD*b=<!8#W5@;`9?bB+an\XW9=]V^[//.qiobcdgjY4hY<X!Z*NFZ5\alYE@82k1aMm<#<SGKZ=<7>DZY<B>H#c37\e#Iu.H=d(5?Nnij]L32nAr?m%C@mTPW7X'LtpHtd0dXRPe\QX+@QDXEA)#W3)Z]74sn/>S6NREUZ:%rc"lhbu"e.ge"\'da7I%)-8Ee>g[#8"r\8gB&Ne?SVnfZ<)QGn\`&U5phR0D+\G]XhkAYIj\)QLj'PM-I>:[]LJi.p<i]&)VH>o'G<&/1;7rAnU6*5%e5$WMLl<ht.H<$[`)fH5Z.mFa5Y?Q-4=:m],]sMNV"31(`W[,O7Bf#5Y6.[KX4YaC4C>HKN/&57X_-F\uA8\D!(h*$tH^I'js_Z$r:=YA6"1Tru,oi`#ISo@C/a3bYqlgM's/VoGI&h=[lmD8JKIihrju\_<"UO5I_P:[_cK8fhS>hl6?h<kJQY4NQp<2-!]]ME`07J#+TL5(<.<JJX1&mlPYoS86,Hn^#W6$Wlj\qFE3)Yk[84oqV!3eNKNF5]Diu"'&:=FEJPB9V/cegmPJ"L^6.T%^NZfrlK)bpU+k);IY%YLIX+d==N6fg6$g\A0`OmnpMraQ$0nWXgKl.2q4iD<T8-hNCEGO'BFJ3joi5Lg<Us3rc?``7>@tE?cqT"e,"FYhgNOIOmNQtf<;ce[sH"80Dsk'h?2#cL@WK62H>2?n+bjodb#i45u"g@qB?*RXkpctMUl@9b,8e@DGEKBUKG(;Xs(lG:u9234/1a]Vk6,_ie)C=74IDYYu/Z$GAiD.)sPIe?R@p_kSk@HOfBD^:)UgcV.Wi11;*Y&hCMS\+</s/`t$hG<MOaD"G!.$:^V5C2i$B`9)PU#]*u-UJqB;DZY1f4T!>n+kG=2,]-UMOOA`d]fO7/!`[j/se%=5$:KcKQ;?c&bdDQqYBMEJb];kPim`D$5:]@[s)SAe+X-^(6=)Na%oa^.8?E-c<AYhTJMZ3LK2f<X`l1^(e3(CIn4+l=T"n11/R8#,3lo3bKoH!(XB+n;4@qik'pX"2M6O.W?"RI=L>^'1TE@U":m&^!p,M-[8`6l`Bg<4GsX$eA*f:+\L=.,7f@*F8HfJ:!L59HqBOIQ"(D9J6VHf88m%CK+%[j#?@E;b5M`8GTY!5W,PJ)<BiI0-I`I56g&]^'YtSTjW%PK867%/t-ee!@tj@b%Hr/QA0]@\=$)XfR6TCXe@/ga.+.Uog@WA]ebL61+%'7tV#K.Pn_;*a\L"(=raVY5U>HW3fJN*r'+3'p\0+=^J':N5Ln5)<;-GIbpp1@9G`Eo!k!'7rKZY<UV97dL#sB!e($dEjr[Ccn[otpI5WKJ&BOJQgY@don*IM.e,)*`c:td<u.EskJnlOVJggb0H>(j+R@HEhsGE#<b6p=:$]!Jq$8T7H.O3Xfd\^@:WI!kNP:b1c.7%9[V1dgK*hm$V1[ROG@Qd3pKMp?j<f*=%ZXBN-e#0$i8*@EGN5HZ:E7!GA*9\2_IKul3N"U^X;B]u9p,eD(<ei_*h\8^h$>_qg%hC4X=sIQ6HPFW+Lej=#]fSC\\hB.])&CIkG8B7gkfN")`sS761.$W#O)2&aW'Y]fN>T%U=h>G=8L1a_rXC&4J^j$EUW*r34F*mAU;5sOnS.SD5>`4,GI_gZ%Ff\\9[\!8lri/(^kALiS!\Wqn#slO'edP0G\ZO=fU@5-?\k3'&RBk=JdPejNa4&;qKb@q#sa9?\ePDFD8@2gids4fi<4Sa@iU*R5l+A)_h=h<"S+?lNo)25>E-3jbY_p<-jR(OZ9h%;EhVjo"a+`V+IR$bhYL'gucET=*<bjg9Pj!m=m>><qX`_POH'p`MmH;=M<o:oqIq`9^)'?d_:-1N#fH+Zu(ud:2X6bmE4O'77A<Aa@=^Ym:+q\MPpsrmjiHt.rOkijHc_RJm;U%Q)\WuWltC-fmE#`]AT?Bf!"fN2SAa_bsAN%:%pL36)YcgFR?_?j-PZ[VeL4#B9%NQeuP./eYo6iV<DiEYL$W\RN+D:mgJC@f:JB`_BRNG%p&V$0\V`Vc;I-cH.0s+^@[qU%`*22iQe!\l<5O[6rbh[<R.b-SNL*m\Sk^kmJu7-)`3GcQXe-X:N,,)[JMFBD`oY3pM=SFjVh2cePJPn>I*)El)^u<0IFbc>GqmM57J/9R:r'QH2QsQmC\)KZO^X0pnWNIh!*CLkDpZ"^;t`oZ)i0cMQIi$[q_E!D+/,A30>>m\2FV5FZ+T`S&X@#BA1qqq[H78leBV@ME3X!\Z.`@@a#,\I@qK[ek0:iej+5nVf\29rT_Ss]u?gjP;k#H>BW;>V.h9J+RM6Af%rnDQT@i^WJq(lipSt;?i84<4^Ug.E;sM0-?05NF-ZT!##gA)Mck-Y4"K4\9NIg$"hEK*s8(:$](Mh`$`Du/.bb/%SRd*]n4HEC\5i.TOpF'4lKt^1F+M\:nSi&^S?&59g9]tJldq_0rp?E?djI4qJ_Y0.9@MA0NnW^fY+2SA:CVp2in>Nre_0j>0uUH(b+IeO=7u;V)X\oY^F/d$Xh=K>A+UOUb(M?M^3n_W%=5e"7E`WYDi/WO@K()F_h1*D\u$fMf_Y>oK6)Lp4_Nmu'@XU$p\m@#s&\S(=.1F:ajp+aRd[u1[6-DW"hE&\nS&3*MH=PuGEH51WC/&RWFh^"+bS@I83?k@6(p^b<i]CiY1L[9=*<A*h5AVDrDuH?4?@hDa]HaR?Zn+!qf&/k/+d)fmel_EP@;U0!$Esq*9<D\l:kG,r]]]?D+&!_X*F<kP/K/`BessTi6iV%.SoOF%<<Q%oWRWK$$,2BjD$j;N2\m4.'oqWZ]i[K\`/\I"Ab+0N;A":h?&/Z2Q>,$<(&,D)TQUljp:dPkPVtcDuPM$=_"6HdF<:UI$=Q!SpFaOdt]H#cBGAZSL:6_q7M/6=.YDGpK-iU8ro[9C=S7ADW%PYKh&K;PanL#:UW$X\Pgt0>e/]Rqb$1"*iWA)(+$Y\nCPh4$-"7mTh'*`lZ8gB3+*I?C;WiD)]R6QDg-K)ho]`gkW1Le1<@.Oj$f>JGaP)VO;\j`3>CPs^MJ'o^3b8d5D*5>N=`chY5H>7nRbh<A\EFD&+(K`q^*Nq+E(FjalY\U5\Q-aX6b8&\Mm/k[ZsV6Dn;b_H3cuBRIk&[jF>Yi)`/>c=HM:9C&G<8Y:KWrUZTnUVqgn:rta^fAo\6Z)`?ike]DeYICGJ#6WFM7AU7EY\)kKSIFU/mQ'h=DXXV!dJ,j+>aAo[mWtuhhah1pN;!!oM?:7'.jm/`IhTDjj>Tk!G5($2Z[!@8;`f/EA&0L`4a))=Kr62-qea".;VK(esf3^WjnJ^V70c&iQ?6Ln-A)<,lGsc4M-ZF#.\Z]=fB\tF2H[$`!4!opC<:SQMO`h)\>&WsY]\R^J_Ya0#]=14G^J+@9&(0&Uo&%3#n\@dJH?+B,>->>P[IRX>I<t.)*E6ooh>^F`@oc%1[2[,E+1(3NAr_`$YF7b[4HmkV1Z,D-UrK,EXcr>Igd*Qf&:or(:QR+*Ms'W8@,?@1Mh7V2G1G]co)-5]d<ZDTI+LWar5f\:612FVJd.2D/^I=)d5]Ca4BBPYT.O\CB?hb"]Wi:]EnC0&ZuS_]+63cMB's['RFWke\8ftWV-C'D$hM6Ga#[6<p27\a+*gOMVPVoppXu%u/JCLE\_^BoE[uK$@k>\A?eJ'Y_j"Lm4"J'_gEb+%jDTNc)5j2ig?mC8WEEYAeI6I-2]VuJM>W,fMncHS7:a=l&9:IT;opuc+,6tGqmOF".pe6%]79f>ABJl!:^qFQ$Jp31F,L0t6@/C7X;=?YeA_:8aRpgX7@KBag@0(kp>fgj19p2<X%&1to([k&[<0>]no:!CQ2GVj,LbDmN*UO)HdjTj%G.R$IIi3]/]FnuH<RA#^4ilp0Y,Mt5$H8M@mTOQR="SWXTA0:$<jo1.f#[b8?1USlC"?:4"iaA^u&I(K%qJCmX^1R@W1MGB`JDSVVJ/8KpOlD>&mEHqZ]>=1n$+AZRHK([EoA'Kq:Go)%1JS[RbZ@kga=$<pcLUbALVAI,6-ngg!oCF&R#6$$%m=g&E2hZZiLMp?U=1iJ+euI$:_<'[#RT,DYU>*`mOTr0*TBFAI#iZm>3,6=#uop.6,0EYn[skd)j"O9bMeb0/k3R7#6R4D?4.e7]FgQ\A>b%'-*gmJoDV#m)lmLF]i+b^70r>TdRFof>j)F.9R2\9.7TnGsI-K!HeAV:Vn8a=!Z1&T5"<%WY!7@&0*a$hNT@H_,/\l]P4rio,Mj)iMs03d0RjnMfaW3C0gf,+B5+-?qGmeM1OD<rM4p>7u:4hh)/S%$Y4\4IKBNo4K-aRP5dbalVB1e2-R-dQ#aK+P1@#hWOjK<uG0m:+Es#%r+k20&?&-N"<q2;F.JV",04+gUYcGZ[N&X!Q`26-i`d5N2g)HHJb<qch-:m1(PH@G*=#prXDWoH#eURO?6`OFBX0b8<[9@lr1X=c3lEU/&,u3c@&[*^LOssES93^57DWW&`d[XZCaFcr6'n3\T&9'F2m</a$u:JMtZW8#BY?SoMr"s,o.3-e!Fo#hr4bp2Uss`P554rjg&@S.=6YO[;2,$%3N0i\p'!(6_cps9bGM\RS'*NpJ+XEKA?J)6=IBEp[79Xr<`N+OJrmD,*Z;eLiX*nc#UC7#\]8?(:J"FU:dE`n];NG6#M(WN_NMG4jA+&4DTfhWTRMDoPX-`g%2RdQW/GE9ouE\aStnoH@'&?NSL29UkAO>2RYhtpt2jh@_LYTCYDNnH-af`gS/ggO>kc9F9SAS''.3<>^STuk?[XJgD5LS8t>e)JkQ8,XAV?e@ec%m6%7@olf%`7CJFU2!!FX,<Y#c!q*j[A\N^o*>jD!,:3M*`G".cpdW4c0C63f+5`Ru#fKc!`jN.#hS^C;Oi_uUBXS:o)"M#G/Cs$^.6%"_U.RV6dU/p?O$VrmWQ\+>t]C-Rb_>umHmIpD.F0fKBXMH16^s_:"T;C:YV&b]7($*MD^3lQeo\@4_X(k18bLOLt9rUK+c8BPm<6ZP0o(Xd@`odJ&E^*-n9\_*6LLGs'8@!,i4I<DWqu493:)=KC5s=#qDGEKQp5;Z6_c9IE:^qI:?G$_c(2r,_Q()aQ7r>Un_^CL00[TLZnu`;jn"5':WsNf((>5c3=89AU'&Csa*s^?R0^Zntg:op;Z+Cn=nQ5-L4aZBpccr;VU>A]s5a&eQQ+K`@Ca%kUOK5m@[idEnAD]Qgea!o>]C(4oW\*Cm-2Ce\pJji5J,05<WYsms0mCCkf<'Ufk06d]'j*^*#W^H>\agu??Gi-4qm&?iiuS9dSU>e1E(&/&=Ets_Tc2u!6bd[qiagulJG@V1@1i&k::@jDShPJcI!]ktr2j7&LZ"#ap\d*56*A3Oq]Fl7Y88I&R&d,@[nG?4Jb1T'hL5'.ZJOk=N&fimjsQ2DXRC<X]n)S2G4T)4&'UWMg[R+1l43@1gGcP.KG)d#Y!S@33T8KWTkisb>H<*HHfNEdQhQg](Qkkj<37:pgPXI,X-%a(qtJ?;pt)3HJ)9;^<?q)(e"gj[D]f3+OBK9MRJ?@B-?1uI5Bj]3#RH-<n,)fb@9nOj/_#DXd6]O1_9+F%7#Yqd<ql%12t#0CX0(,%jlbl49#q6'Y/VZTfTU[]bbJq$c_kbC>WDmY;fg]jl[&/0^L>?W>LMeIH=!>Ght'87F'.TG8_Vs7rRLJRhAI5=?3Oo%>Q0]\psH-qQkR0/mF=>4])$?+l8qe&DYfYPW)>paEfTPEPGPtBdT]lK<AS^-_7B0gnW`69--N[s#Y$`=kUjN`rDtEYm_>hc2[FONLTbc%1J1eu^4gNfHh?ejQZlW9hE$nU,YO=rgQU0Zh:%>E;pOZ(hUte]&`d[XZAClM0PGusB8R[0-l8uZrh-$hISf`n2*+V`F'lBLhIgC5!C%rj4")M0gp6]C-&46sL.JqA\boR4?[T;.=QFJpc=N9?;F.JFH1%0!Rchu+]P@gslEoXNqu9>=[CM*4JWOD0O=N8"#5$#V\u]l'bb'+$cZe\!ghNN(j9j^c2JJ&4F<rgRO1BDN40m8>)$I_P[*rutML:Sg1:6GJ)F:OG,+BP4-HD\,Qj73+W:oUV`!>26.;I]`_>RLGSZ9i6fI\&F\W?$rRJc8WTrPZ+l&6@,gn\Z>j%$:HW\[k59TWI*;7^Z$dYpD(UfWBP/1@);?KpT`_&26^kBE"<o^A!;pUDF7gN?$c\<csN`jh@B;gpT9aT5D/%7..;F&R7_s(lB#9*DZ`pldU(\CEo)aAjj\R"\%pCY$:aQ/],WG?XQ"pPj;ueN[?_2i"Ni,l.JWT-.3FOj+>UT0@_S8H4FTf<=?)hK`=D7>^7'<T+2W;>k:QNYnd;585O\MYuYAr:/]kRY>pH/"8PIVm0Hfr:4BmGL'MGJhb@>^F**=QC^LU*pDVP7h/m-q,[ZK)=/3CXLb[W6l^9Z`,NMS6[*<jBBiWGZ;h:g+BNR[k)4Q6=t<(CaPB&[[b!91FC;Pa-"m1%Rir=?=>4B[s#D7DeQ?@'K3Vij[$6dJ'0uKcS=+_99"k7.53;@,`j9=E2C68GMiR)&2u,"AdjE2bQUMYr]c^DTP!Sp<l-_?CqEclS@=.]QVZ#_p(uu/F\B=j3Sj)sHn!aIUmk^6J81bT^Dk@#scCUW_C8u^G`"U_d6Gljun%EPj1=9ZTHD]O5nj0E47HY_GW[*SDPkq)fmCiGR4-QR4.1r^I5@7OKW2l8WIJ1:06BJ7QaJK3QgG[s9RuQpWZ$#A&lhX0F>*5_C5ELrikGaW8Q![&-d?TXRk:,.[W3>dR5'o)6o(EIS*h2qq+W09h/7[5'#PVR`eha$c?.d_FP7-s;X57PNYC\LMeJ6&)i*4I\Dn/h;n'O;s_hX;MA=u&+B'rg4gtrDk!.pbY6*>6XleH2GhM\j<QQ)5hRKp`Q2Y-f2a$Mu24a-J3hdaFW:%So9(14\BlhOGN!M::NJ#`KaOgO\cJ%rBQ=&]'(E_8f_X0KaC#J!1aN]K)BFh[tm0r*mMK&g"1]mHQER,NnMG#s"1?FlnseFS,1>$9ajoR@c:@_Ks\)3g#o%s$!dH?eMt?2<B;]tTRUGC6T<'Y:cXXkP0;jCrJ-3$..0h'H(i^kqoI4Yt7ZS2_9'EQk8'm02bAd.GEq^)`)mek9r/4Q4]*6I5\NbZpf5Z8p!kmr+C;CiR&AYY!p5L]%_'F>m&`50+JYNnW^sPq0SBDZ/dp\<Ec(?WYuPZm>oLTq">3ZlHX+XquNbRQ3Hi&`d[XZ5#[n+*71gXP50tHB,p6+#bpl>;om;qhdj,@r$`dCtj!J`1/7:[AN'XX%<E"56kAR>:TKZFu?`pG\m?JR+u?BU#>?-KT$*`U8;;V,]j:%?R?R'B\gGInK><ArgmAW;NjgWB)gPj2_CiEij@V:PsKi@P]h,e73,I4RK7hbf/mOD1Jjq#*TS\CV_XF2$93,';6;lVG"0!lW^)Xr5Glc!I2lich+#K;A"VW$`>=h"9UYb^Q>2PrHWq3[mudIp*+=>?W-"r+-?#\NOK5Y--3h$'3HP#Udq[aQY,o.Q)`ESuaiZOmgTph9Y0c!m/(\33`5ZqKD4Bk?Tm#U"?B6/lSnlIf'Wb!Cn@?DR?]>+;aSfA</>D&sjV>4>/F(eDe^*ohjW0$`S6`8N,\\?=k'2tL=D'AM0XFF8V5>72\(UX`RWm]\WJ#d$o])_[Vi>f\.$r6Vp]!sUZrQe%<LQ`<FbfF`!)sgo#J&j>,Mum5[7JBj4<+Vmb4oR-I\`&9EY\3/m.7u<4X3ClL;CY+X$g1jod``E;VeqSiii._RPg0#2XpXuqcLQaZu2H,m$VQ<q%2V%/@$!R\Y$!oV]`]s`6bohB6a02gU_,q52hcu.DK'Q.LZ8;jI%.W%34Fr1hn"W`Jh@m!>jgC?+og1=n;bB@kMJfVTnZI;>T+YQE,A([J.0O4"YaTVW`)_bfLk]EeF@#8eXQ=R4pAVrk4ZhC?dk"9<54ad6DHgHZ#W.kjr+oe,!j^gE`ag'.J\J%tZQ$![-Pad$*e/cVJ-!E_'Cgmsos*]I'.V<@5e8o;8I]SsbZ$[<C%o09JXa;`$TPrcr2KqJ-nm57pcUMqg8eH#L$qnrFd)Q]ZH?m]=*MqQ-Vq0?VbN;l3Ih&`icsn1^[n6BJ7Qa;+riW@;J%AO]`9D(ut+<(n>VX?@q'_d4s0p[7:D:-LLXBG"5j`LUi,D5`f8:0l<1?iD^9*gf6rLu2FG:+?jLG\_HgkY4jF][lt6djK&m2UFm?C9X;KLE-nGkKMS\pF9)C^r[7uqS-0;jM+2iqFC+dIi@SMC5Z,LCKFe"I.U]+DMdORRI=>@@b,H7;g_TnP7(>9I=!V+p)ri\a`jOdgMaVY;<GYb"LD#S*n6EXAWE9ao4D!Z+BR412lh7l^@l;q.73:LQ.$OlU?X[tXku*5Ufn4;Wi9H9s5.5*,Kc7Ja94YQ;eeU[X0K_]"hFGSDjs?>rUQq!f)/eCKq17U[]!-eqUO@*NFE@P\<Ic@.kG/Jn9*JD?.U,ZS3QUY_;+u@>:3Es=c*/>DU_/O;hcg<i?5V2.-'I_kH2BInG=81Wms->@Nte3r9eE!l-GYu&-"1?B]'&PZ8L16BfdjEIPo/uh"\s#"s*ff(nQa.QRkoqs0C,ojFY%RLC`740QqNJP@mlI[iXASrOQ`Y/F(qH20JFlm3?n^Zgnc=:WW-i.h8i'J*kU3nLJH$PQ6B"mt\!Pk[f,&2d#hFR-(J[O$MZ@^^QMu#e6s#Oii&\<frtYfg6A'1bQCK:gW_-G@'^7;;V`7[SG>ddYgQt\JgBB;33=+13JB*B;YP-s7PP\T.M"0(a&-J\Aln:K]72DbuuHMJ2B:cjMCfJf<40uH2K/\q:c^rDfVJ`\T'4qjK\S+ZC![eCWB1Ce8LX&#SWHZ\&?o4`S&f!1Z`jWDWqJK9ft'rb.+])P:K(:ffJAi57V;]cE#mHc_#R^Sc&--rr>r33,S1gpNMmmnl[$SKA;IPXr;WiW+4$U:#c$BaV[6Se&66q^E:%qGHYS;RsCm*9`K*:H&#EMkN).<e`EFFculI\rs]me%NW2/-M#g'h01KAHi3ZdX8KW>ceUsFhIYNb';t9peX(cXZ`h]a.r*Um/q,'[q#1Sp<A.56cNU<Qn^sBdAs:Yd[<[<GO^]+IFh/&j*pM@?Off0Hll3)Y+1,D4N!K)a.[d7CL(.H6G9PX?eUAk@5,6?GWa.P5o0A?#eO#@uZ,kK"\U$3YeWSlE_BLV&207YWL!jEP0uV/a1Y#*W?<5JjFeY>588-['8VCg&>:%j"[EnM0I)R2ZW#`EmpDq/jF?IWEhjH-)HJ5*`5$X_;<F,jYX:s-ja0M\.[RDi3Z?#c[mFuM29fWlnkifAq[rq),VY'0lB["Q,U[UaX&+7-\?5gk:h"u:')X6)j\9PT/[BN2o!B`P[R_7HPA^AiHIuN`ii:?kGr=^^Sfsl<TX#BB=VH)C3>4V6=qHp]]mk,BUB$E+r(T9C'CqSW+AV).HDQB([\`PJ$"32,kII,<5`U*#^8fhF3X8Z:FUZ/%E<1_'jo/ubAQ`lb0=m'DqE$b?TbXR\pZ,kK"\O,K)AtGFMWs8:hh%mp38crDrQ\Q(YgU']'Rr+cfB5s8=3>$r:?^4['ei-S!<R\6bU:BKJQ.>[QfB__`B5Lg"l4/`p&'+TqUZ.\#0j<IbE6!T9TmQMjMsgVa6#N)_7_V(qPGbc,H/7cVRF+k1<F_i2f__c?m.OFj?@W->4am0QaP\r<^3/%hMT;;31bALpOQ"6MJYW^aC=b)WB+l872HUAK&+72KdPT7pReQi;POCE\/SIM5X0Ka3#.Y=q*AZrK,'W[t8"$nNY+#31+`8Y")oUs"^Jq2FbHOAFRaL3!LEYQWp>jc9Q\n65'',WEr@#=8hHO$6:F256Iu=9,5D*Q(pLieA80A&G^X(d&9TWJa9Ct[@Rr>l@'lNpEj!kH3hp^%K%j7,73BpHQ?*!/5=a7]]Z)Bs@QohcLcEcCl>B%/t\"JkWAQoQiDkJq7aBD%TSNHGA=YnCR2Z),'deJ0ggDa2.i$-7m=Cb'Wgkuu?R'ei@p_"/S4aL3YJ$W-V]_CZsHfsdbdT4l?Le?j6+R_X6nsd=B(M"F4?[s[i[Ffi/]"I-F4Gh:@rdMQ;!X1oPHh?ej=7J\!1Fof[+P2AS+e,r5%+Nn2dbCH]CJ:gT!5W58qLpSu>Cgg!Yk5@K2g8mbD;A![LfT,ZS=b#Y3>+T+XO!F)3I.XgRA5'QFSb(9`_F.1ZN;r.<CODRVsg^[=T0PdeQ??TK3Vi`)&q_\Vp.Wu:f;Y=:Edc2gu:7o;M<f)Fje8#:HTL(St93[?$c):/[c02X6Anbga);_Kr\CBak7e<WQot@:)Tqdp@SX#6M?t_2JnVA37m[.a.!>.<E$Y@b`6PL4;jtO"fRUXm^a&YD1\au93;hl.P&ipD%Ld[qK&RX%DQH0a_MH*=#[9@:l>2F89#,aAkAJ3I.`a]-ee87MD\`2Sfb,JD(3[rOK5Y-<X6/ce+NYNV9^#*X4oO<QbV"t(L$5[pYJTPDRpmd1F0=[.5-Lklb>2>cat++cMLpu$s/`h(q\ItJ$gJYC,Im1b\-mPQGZ#V8'a@_/(2_DHH&ZP#(g+=`jOu:[S:qu^<B5q^T[37kk$<VgK4O`,mQ5IC=S0HqT80=)nYQ'^X(TrFJ7Z[hgXBscQK(DXYf$43aHF^H$VqZ%Gen<p\ju$38Sa./%MkU05<tX=fD`R/UK?@OK5Y-<X61]F5O?<Ol5EO7!uXWqo/+B>!?JljOW_XC"Q7NL#MYl!7*2q5PG0hKHSm[@"PkFk=Q6pVd:Sr:QqCtGrNmnGt2m1aH]P#Dhe/_>40)eS+[QI(Z_Trmci1Zno@jP<k:1DaV@"4jEmT#3U@-(,4e&pK80B,]V-W?.!MBEjW]>f5H`/c3Q5pg;OWGPp"1Od9p-&d'c0d!DMGMeWR&1uRi<=3P<mJfRkKt$STnO<%1qT8/@*elmUm1kb]UsMF+2eZF[!uik>kp@/u_J!g>?S1&)EmugpYHdr%(J`"M$_IY.@k2)E_V95c!2(jOMID$sR@(o78SC=*@tiQKbR\N:l6]-B@ce;!Gn+,5K:X+tV`G"U@c'B)nW6e,!kRoETY&k+]Q4Ad2\6>@k]V=mVlX2@P^J,2E"dqeNEIj7S/TqP?pt[e02W9c1M<`UgRI'qZUMA!(U6Eqf"5UWStl]7_1'S@<*WgkmP=[(grl1i:BYFc5(MG=TC9$,(\b$m3(Sal?J%QRDidgs=D2M]P%0eZTRd=HH.S>L3;Qdc#Wp^Vuh8#>U@2/Ge,BB!iB:et4'd8;oVJ<k"#H(m_iGQd6Pq<R[Z%P,!g$R8pp#6;2dN$/=IpT&6>*?!MI+bph;QrRTuH;h+di@-XPi,DN<@2.F6i,DNCk3-MV6ck9haCtj?t?;?(#3AjOo:.phL]To%umO-VN$!ZMD<md20oQZMq7[`r3l-ctNeTCKQ,uV'MM46G/ZaoE*\JgBB6]`h>4e]le,N=?.#->0TPEjk4rDm]J$XIm$>7cg[BW/CXS[;h]<O7PoQpIl+ipXcBC.DI`V<a/7]rqqFq8;)R^46Q2KfLs`PWD$gT:CXg>kJk]f<=?1QIa#qq+bTYDch.])Qm@!H==pZQM(B1dXM"+8#]^Vq+6&!m,+;oFE%b9p[5f6#Ofs-[C9e0oX`KI99lC.%:d-?]QD0C*P6ONIf9+qdj6\7%PpOA?fJ&"6/t@Yn_Ua9_=i@Y;:[.Obl-4c3\OK.4A.?gC*hVr[H^3\n_8V]"n,(Hb%_'i)N/E-O;n/e&S",0SB:P>X1$(!b'R^5.fAf5S:*9ViO+tV:rPN3enZ,/Y]OudF(8Gs!>smt"/;::T78e=Q)\^H9RJ:eN!0inm?brSOf`00YWrS:Kt4NPEN]?1$N(3NIB5t$hlLC`FcW6U``:9>nRFI?Hr*r)nBAcR:lZUQ/`5JjIel_V]@lGSl?;>khY]D2^1s"o)oe0`dT5cFg"Y%7F5"q!/Ko_gfH3""A'?Je4^,<g<-HA7(5.=p/Q?a>'".CJY&rosVJZ^-s%ClnDP,Np&2SaWp:K#R9#b\L#Bc+Y8ua%[K%q(Wc-=7imoF5MK:Iob]pB["<c\+0"%D(OeW(bR">=m:`9=3.-'R:^igr>^D*oX#k<4gDM>bW)Sb5tN1]<lGTt5D8C=,*,YMV-a)sV#H61,Q;m8V\5@!,8J3mJK6n&akD-_nUYd_+j^fHdW<ZMa\6pJh;3?+Q:eY-;O"V1st>rNA9Pn``8UX8I3RqW,7:iiBp,$.6dt[RjBsZ6im8Fi%W9:Y9^LdSlcs&DdJe^mWZ4l:[%3RGTJHGrols/H/e&1hJSSFsV@l\BWQ>8,Ds.M/]G3e,orY3g?%2k2?A_FDf[s]E[?GSf>i<pFWfaGmupK[bppipprN7jfGi6r-pf%DJ=4Z]Mu6]9pn60O/4:<I,@#"8BXq+DL;poF\?FBI=!P%G-&3p@g7h'dCc0W'cSlDXb#iLgbTZBRPefM7h6!&(EMns/ZhEq93kBUceaZN.;ABSM5$9LC&PH6U5p)Oq<4Na?g.Lr(B%sfE+L,(:-P1*IFjg^?6F$2Yc<JCaJj6Ie:d$!H)@_QTY*tIPnka=2DG_RHBJ):er8F-l:7o?9ktD2?#R`8h"%RNEH1K@e`u*)RX`o0dQ_OGn<bAOetaR]HMkkCLCShW($f^#=W#4N2m2d!B:UYjjU)CP9q/e$\^UDii0(C2S")tHYi4Hpi0^bgA':$6mRQXYn";,@DZ0:erlb*#irf.]XP]uCU%MtSaNHP?eIDD9SX.Ke\g)/pq)EZZ_8L=t`-(qJe/_`@:Hr`d3bdnoZPS*dN^#OIe4,FC&8BpuNA6R9N#h4\B$THD>BLZ`r;G`8^)\:23HF?OV"%[-KrhsG6s7NjhAA4"<I$3eIJh^p"+C'JB\Y^VDnOPl8Y#S6DmT1Mma$@Z[`Ia8B&1Run^ELIPI>6+'h40b^O+"<X#!eJUAmE6'B&Vqqtp"gdD3AWT(Z,B4Jlc;A[?%;;$JD;leImu5E=VVmDj(t:[';A[iRb[hhoXBp?5pnjM+32p/kA%?F6k]CXP=Rkb'f-i?o-`Yi6D0Le5SQEQ#)(D;$>Kb'^:TTB\:kmFj-d<9D2C=._Y_R[t)kJ\u-Uj.HE'>un*n-$S!9(qn&-,&=H(`Pk<cMq4=3gdS/#<"c0Vh5H!?mk-U$*7bR`[Uccu]Tpg#YJ*U]E+3-dkj]N$+IWP)emFn2BA\5g)(f&?eZ,g`+VY^FYXr*?N_@BOhNXILk0er2JN;-YYZ!je3t\MG8NK"Ik+3ZLY8bi<A]N(hgO,Fe<P&s->.73=!S>]7CF5(rr7gRdb>Z_-4`[a=-9BaWC!WBb(:!.fj>1jim2\!'_fl2aFm5'h<3Q(`:7[[ZkdPTnn9&ebmR]u0-"?HNpKh$i+2;]>p<F;q](JD.KE(pjE;\ooK*JLD.b.`bDnUST-2"kNX%*,n@G\*!ktB>C4a^%qam+pkRaq0$s#YT(;9#mLJ,XV!r"pl0?.24&/,u\fgEqFKp!SBn<fJ$&Ibq8T`Po67:Y,Ieklh%uTLu>(EVe``q/)Ut*Hpl8=+U3S:-?qB*EWVd4f]`/<YZef)n[M*CZDb.C1</`;:_9N/oNmhh/lpd+q6cse<b5ZY>)t"II0Yp[`pbZQCNq<GXSntI[[Y2V]WBBS%O1GjR#knD>eUsmY--2MN9s+DUi=Ge1>*uA,n7M&\p&US7cd%aQJ:>/hhD&J:!1uc?>,OAEe4N6rubfAMk/N-XiZRGm_kL7Eure$NU3_[]ZUcQXr[1/(;g+?-k?;BB=?"Q`-1(k*GG_2Vc?T$BmX1/H7s*.tq#@P0T\@@"V!%(B/;MW=Wj.]*?97g?<WE&ZkU^cb.LJ`uB/I1LMcONYbWdODi'lHi`mgj5`$Gp:'+i&&@pd&p&*4R0fMn\=6FD5[$r]M9)d^\ars9,S6OfB2:a,fd]kTJSRVNk!)nM*P$%1NT/^rbS+X-&:N<.kWU*DHdG/d^%0D3JcYoP!!kGSUcDN1C0VM4RMb<Za?a^a%Z>1+Im^h8#Og78/1tf,nk/"t]'_O:/E#OCXP8$nV0/'*Mu(DZ:Ru%qdZ+;-!!&\%FsU3rS]7DN7NSg^p>eT=$gJnX>MnElE[n%"n]tC150[@pDE1uE`AXp7lEYG9Ab"kjFeUJml;2<t!!!!BA(m_q(A?WW"*>2c:/meqlTKVlf^>dSl\9%f9V*!%C+QCB0IH+/hWMZk_EE&$<k2hD=F*X.^Rf&R%Xe<W!!(s;i.2m:$H#o_FRC8q`3?XEQdT`t^f=-h;D'b^b]N0>p8[V7dhUoojm/aDS-(B^8OY[\aKr3]+9_?;!!!!c=O/&3/DN4^`hLa!Q["POguQq<IibmNQ8b,bDZD,DgJW=b/L/<*[r9!Zn!U(iHs,_),$ap`(ta=LnPKBr%Pe"a!.YWH&pMdP+Lc[QW(Rqu3*<ufB-2oZG3>Zi?#(m)8b+!1Ok-VHjB0r'n`K+q9,>5BOG9hQmj(>T$NL/,^gbp!k16PFh==M4(h_[i.h3>65i3"!].$I5F5+)sIf8!B6-K;P5@Ea8A'LL`5C*0!3?5r%!<<*"=D`k,^8b1Qgql8c3`WPoPV[kL:g'@E0*2&TOQfaC#bun%?ti^AO5j5-ZK]I7!!!",]g$sepZ8refg/)To;E8e*@]Tq%j*lW>%6aiYGTfFKCIO[4*cic;,P`]YM(Y<.*.Z\0<@j^i(25q!!!!u=m&OEE_1="/W+X2F]q[g-;5_HM+rgkWU@b8fMGZ1nF-/XCp"tm;t\!*QOPM#4'6lIh=+Nd#eQ!!!!!"lC<Lu'[WU=MlQVn^c/W0n^U([[I=!PI(WqV0@/WmlM!iirPMWr$ZEJ",IJPA*#WR&O8,eK!qW[nN?=@37z^h_/Mp!uPm2<mT#4n[1a&fj2_?e(,TU&&E;,rqU@;pX-%77'JtH0aTDMm**Xf=gko$31&+!<2s\;i5\@%g1o1C>7ki2O24m[*bu>]9Ep3Afn0O/WFaZk41_E%U(\0>Q3G7Q8'O!!!!"L"'.%d?r;uVr3^63cIuNtYGEPC*04F6f2A@jE=X-*g0@:WVX:an)n0FmW!d5[gKYp&!!!!1:7lc-]l'&lnW%rfX+0Nm7Hhgd]7IY::`1FM86\#ZZa5sN$)9F^(Z`#ASb02NUWk(dzTcjA@dq8,N`&mP,9(QZ_Z*QF\]#p%gXu_`Q](N.sGM-+l6N;KbXUB/roiu*ME<#t=!'nr*UK-?$`RdkVYf4nnr%r+lO9N0m/Ih'Ud`u#/^A0,3\fZ@UW/W\O#64`(!#,M?XKlA3Xq^=u*4OVHZLm?h<U==3OP@KTb/[<Oe^D(=7@cIm[4]Oka3r*1!!!"h1Ob::dk_4<>\.,*hS9)o7>lh,%!$,BN4F64\SW)SpsH.>Q;s1Eg6b<!D(>to!!!#oQoJuiFn&5A^)=?o,UY[g60$VU$?BG/[AQcjG[O`E4aln4H-8VAIe8kX;mqqpzI/H0@T69[!IiE$i?Ffj<<eHdt$?DDhg2>Z"_U\t&>;oltXXjGP!!(sIaYO=sT*5J%S!.W#OLoF,QFp>)j$B`.^i4pS]*LQJqRTf[l\!tg2GQ%4zYJ93A#`YE\&R,Fj-FkE)_iP7H!<<*"^dcIe^)$D&g)oDDhs9OKFZCJL<qRSZP<6kaB]jupzi:ZDph4YGA?Ff^8<rM5)mE+0rkF>e8KA;FX$au<(zHs!tkEo0(SXfd'7er.,u_7/ou4N.*;Tt@a5eDj'&RP_Km$_c4oA%%X+zI#K&ZcFS75kb'fA'u[d]Y%<Lq>8lSRWZQZLRXP(o(;>1r<VsbdrTJb2SnVD3z^dl]lbH-VG-B6brB3BQR[&P[C#.\)iRJcJIOe!6;ZU_TL5Phb/g[-O"z\4JcpI/Nc=Fk\2-igm'4[b4f\8X9h![OT.ZC2&3XK=YWB^0P1'O8f+)[5Jg+zj<-DYG$Y9ok-9fIrH$hE43OujiKUr*[@E:a[3fTJkSZVPYd9XK&QXohn'lW^c,B\`!!!#PY3i^"g07SbhkCl-Z*QCpp1=K[<k36g[r&EtA(`<k[oaI-2K+_>TD-q!&cht4!.YWekbpSgWYo5BppOqV7@Qs"WIn2D.TmGuenl7fPEg'-/^9io8#dk.IWt=iLGEpe/eJ'`!!!;R->g)l7o.(K#PM``>b[i;D@N`kGKbm92HQ$&&:MEi/oR*+K:a--df)Q6!!!"tieiUWG3tH-?'&9o@Ebhmp?de`4.)EL/0gJBHnIuQjj(=l7G87"JMsXFC0`EJYFYX`/t7_#z?6THQ?73n,8>gUb,l7qD$5.]6A(CQ<-Dpgnnk<E8bBml//UdWr;6$OPkF[E1q9sQVSn;W/z5Y-bqBk_cts*cI=.9CP[L#k)!MWXrMf9%O4I/1Kro6BSMqHEQdZZ#"e;D\@R!!$$MLga?O,9o]>Z_ff?B(a&sO.A?a&K1A9[$Qltl!Us4qIpcfPC:Ib$%B6s['J[1bPJj42[h/*-)]kY2BEe;!!#9LFT65Ej2Q'SKfS^+gskE6:6f^2dcnR8b]U,71iMLt#HGc_Cg+D:Qh]]?:+W=I!!!"lb$(3^hU362Uk8oBgde5CO(I/LR_M^[5=p;+n7C@M_SZ'@=,YL</2+5D5li4k'-KD"p25&fI)M*>G>nYE!!&s,#5$)8#4u(2jL/fgQuD/N8tS<C%#@&dr4s2tFuC,$d@\Pn.;eTX-**'EJ313rP]L<UE,MZ;doBr^zl^U!2Ye&>VBO)T:YeMup:9"3^gAuT3?H3.P<H:TZ@n1EY\o'\rH2O[V1TT)uP0\].I5<tj@mVdJ!!!!LrA&MNQ1J"P$)b,"QuH5$^HNNU8\P(f:'J9B9'Fm3_rA^t?9):GDVt.o@J,`T_[#Wk>tP(s!!"21hVEbfiN_r5?MF@oZf=50]#i`om:7A)I?K?chmo<0VG0s=X?\);;7fTQPtOoDX;R9,F7ra<1\0&UT-eDt\s*0p!!#@@mrE(d%H=d)5,S,GAh=Xe4F-=95s<MaGuV+VPSDA&3Gqu1TOsanm9=JL\I+"dR.fp]@qi?,0<\SEqW>1jV[Eh3!!"-P4aL5/bf#_j>gq_<pRK\S!atmBeND2g8+)((S_"?@\F)MF!c0$Wgh1P/[S4&Si;/sNFuru+z+`#Z9SQ9skM3JQm_Wc[K3dgF7_a\[:)^2DoCrr]oWq]=p-XVNqXBBhjkrL61aPlG9NW%tag`+k:QT-J\:g)$#HJSKO!._'l:nMsc+5cWrR^5/4GD`$d^G#KA!U#t5p!>#Pm:'d+;l>*:SQdb;/o)?mgraEi0#aFTQ<i?=W?O39&pH%YaXr,qO:ZJ"cD5U!^A.7j@lK`6.^qg0BR)(a-Xb>OTCQ=$]liB2h<b&T=*'ED^3BA1h+Qq'grmeUs6$_$D^tUrlGj6b1%kTtngJ_H&A2:QflF=']%k?S)cTk2e-;?OHilts:o4'srYa48V5=(/b$j,!!8'ETLN51rqkiS(WUJ9`mVI//0DR#EqlI;O\%pD>=6*[_6(N`b<knA?C&abUVor7D'Y\sEr94*u8Z1asg,!@%L44P+3d4oa\nt@4L,&@j`.^eSe)_J,obtm$WZU&kFjelI;T58f+2)CfS:):>(XARs,d%iZb5hSsM?\,^hS9*Zc'tGODi;PDY38+5hr5CdICt""`O=#MQD^=8>'OSo]E<Z^T)%"9"90pn>`sJHj1;:(:-Eur>P>[B:S,i1Xi8oSAEA_]gZj_jmOZW=s7buMJ'L8$rgApgC>J/*ViEudr92[d%j0%ZDC>h-[nHfoWTW?PPB,^7\feJNe4lGM)fT;Ph,NjfdSeBg^V0O6CEdKf!<*Kl`W?K*7-qUF,3mk-hTt&jGC$1Z.TJ`!YTO4GK"W?6.OZ(N!f@=U;(U%(2nNl=#Wl6XpjGBu\bFs-8@E'Pr,u[bfWND4KKE\\AbLbmanNlMX1E2T.#[5[<,j**ma9(.n^2K%hbB$Ibu\Ud4u\un?+b[=`BRr[oQ:[&*J(>XDEc'=e`PbNjL]M2C4OW)&pQ!oV+g&#!!#ici:^@FjC?K3Qe/C)[J+]!pJpYCQ^.,r1F8a]=R_m3/'a.p'et)H`2M(G6\gBAS8i#qY)DQ"LnIptna'21s6V*?;orcrl/?:8G213]VcUX+.A"T3X>h0[GDg!<p)=]a[3p;\4skcsRWDuY6ot#5\%,,F4aI?l)],o*jk1mY>ePOT`OBbMPZ\;_dFcffo1&P@b7l>^jm3f09'if)XSjYon@k7c,;52Jn)G0cp<%h'/pZpBeh1<M8pCeB,l@1?3-TOD8[72B<'-+_+o\rMn&!?1WL[6J!gUVd=#Hd!'p1?<l5%mdD5^[>8%$<ckMK1H:;5d^7ZNMaYpG=CYlXoUrEHu5N:-:0-rm`%,rMYmg4&hmo@KZ<\_VT9fLTj)q50e7.-f[$o9NokB9uYN/c,h-`e3Jm55b_@VC"M_D4M<I92]]c]]"7a5-=/qgZubAT)F8$*knMeW]1?K12-PVP!@g9/jo(BDjR=pN`A1"Z42!#(>?U7b+e"\]jJjf@g^\&-YK<bhr55]nR"s]_<f+41*nR5gf(nqN5F=.[;JZ+;Z#)h7C/J>j(RQEaR'r.CKIA*EXT7!\>no!AoVXJ*u>Z2oZ"r&hr.!K0*$Nn=<VpPmf4Xo6-AD^?YdE%9oUs]I.5<4ikXtT9)f/dlq=kL?TqH?X]fm;(`oZF=,_XQ--ZNR01oIep,4M$>3t!dWD!!JSNpOd0WidaM(qWh/I+R.Y)B?_f'jHu`\lrO?Ld`%gW&gh%A)]:VdA*A@_F^eg4Ob@[Va0/*tVnI(RQhGr$gFC1?A:6eGjm,"g20Tk1Z(U]sgIg<D-+,<:.`OjkPtCNn)X,dsH/j)2mF?P4Zi=.o(>^WqsX'KjUQiT>7QJcBjhr[BdLH!2)PHCWY\l/ud'dPpkcaaZk[_p[9Virt)9eb:hZVL'WC,:FE2L<T85DIO4R[Ms$][9oS%38_.lj0FgC4+FfXr#$Q&T&aXES5$.-?Y^pNPd<fq'BsG@N[cZ?/PfK9EAP<p_m:>he#ekEFmQ50*jN=<sP7e5;Hu9M++?O](I&Z?[VsZi[Hn6u7O$pZ?\%Nupp^%V."clkFMRTGrSGai0(tm$MDtEgap[>hb<pnSCp2[MB!-A>L\H,3=:p`u<3L?O=`IEfIo?Z'H-/3`Ti0Gd:LI_rd>T7S;rHGrCc=!3-GZtV#f)e:A#-p"U8aUslH$D,F?XL6/^)at<g<A\O^*rrMEUKgpJ(HW]cWIpBeGM>Kj2ONMHnfhgdaCR`)qLVPqsXBLPfHQ@IC+CRT)75b=5TW0/rDeeeB:PjY5*FfHCVt6E/2oES)oh\`Q77;Ugt'\@s7)M&/4lT@Vl,G5^+52j>Jpq(d9d8[Y]e;rQK!Gb5MrRF'gBE=t3cKR3D<Ml0#lM_A%B$Nf\#W+]iNiDNsm+p9;-Q4jKps`m$[1rHhJL::lF/&BI!'A00s6HUD<sp&D#B,KLH&dUMm9`f5JEoC).HqU8"72.t6-I.d&gm0s(-$\o1A&it9Y9hm)N))6f0A9M*9b"[3WVS$O)cnK%':<W+/4P_MonPqos'gfuAe`3A7`gK4oDO][DYut_+@-h-OgifU\A,X2/Tc19Nno)5FqVGa!NME=-kKc;6lQ9pRXg^3;:%i.GQeh`LYm&CQNgp06i+`7bPR\aT8YoBi.hDI*;<?qi>dHcm?U8;Fp&"3hifD=rE\/EpWi$uSU0mq.bpp_D5s8KO*^-S]/fU)1G&.,\Mb:[R@B2@HkM0Hp]:;c%?ecO+PIWtp3OG$0@d:Y>CAAar^gae`!!g%L5SkG'jA'1h<USAZA/VflG@6cUZ&;>d4(.KQQYJX[Q4n:G^&6<V%perC\Om.<63t+O\Tm)D$T!VqGA=J92\iN:#)mlq&B\<Zp[0!!ErYjqma1<cs"O:$>C$+CenaPj9ni^Jpc:[_n.E]uf]QN?!d/YCe'A^U`]YS)<SJfGl-Y@?Jd;&,l+P4>m9<'k\R'8\`1YiejAY[5-7eX#/6[!jNV4\Z+nkukS>!eL+litRjJjB^G_$Mah3F9BT,p/o9:d!`'/:!#MAD`UD"k@Gg)W:\Hg\n]l$@9W*P%X9b0AEFUNm%og'?"d('?AX\?rdf^k%c;<P+YplYO1Lq?rVn!*M@-aRq<B>jBQ]T3Cl"MZ!FFTD-'XZRQ]1aW\.-^53eI9)2IRa;%%_<S[$0g"O3T7i&RHgP*(;%bcQ%022=HN'3'K5Br,[@G^5?RX2WPZ;0kjfADG[LL!UbWS2@"KY7`k]e;nEh$J8c9mKIjIR.g]gMY9"O(/TA!1>lmaS#6bNiaS#-:9uimt"a>q`j#[FiCu4)7VQ"$G$';J*^QJ11NY/]+cF?!^a&A8H$AH3cer@2GHDHE<?H#IeZaCpC72BO=Ou8D,L81bE#mr._t5m'O.Y4L[#fi)0Sf#pM!."\(8;C]-/-Ei[k?gH2FJi:%UsgjNk8P33W'+"12te4QPqdIR1h$56g3RSsnqi>btIKWfSa$_LDC%9SHN(HgaY48dMso#e<Q!N.9Kn=+F\/)N?d:ZBq,tUGqi%!MBQJ93-OV*5W,jr',@X.)FG-c!kG(=h?HVldtV%mKm/=$b7d8$.iRR<`k7n=n,t6$?8(MfqMHZG:hGNKNnM:FmtJclGaG<*Vi6=BAYe[hT4LJ(%8oK0n!-aDn&5EgBFBq=.VN/7bT=HFctlfM&'/!+]epm<tTe'?K>:>1qepSNA[;k@bK;IpmI.mbIQ$Z3]&;Vc%#ZsL>9<4>2MK:Z1-[5m'^[bMR&;9B^p_X>Eu)[%L2kTj8s"rK887YqPKsNn"6npXVp!cnooOTdNcjSKD@I:9Vo@>Vs_8'B=#g/?mkXBcS(o?G&m8BOh7)aanQjf4&Z9_1u1fUrT5dFEYZu"G6fcQB^?n5Q17Q:*<8^k+'-UU(=-VG:$8]g0'mqoGG)FXUVcK/P].?tMd(GcC:bnkC[sJ%n)ja=/qCr&GfV3/O&/LUbMTP,>q(uPo8ifj<V"FJ=(B[sR"1qjaN?Vpp5.kZOsa7rZX4[[\[u9e]"uL$n+LRT[:,LXZI5@;\C%W?'D@&'7R\<PF89:ro;BQ-A<iaOI*0]Z'cZgRqrUS56(q5T*1+Ft*!Sa4,%f(^Ti.N_Q@AtPDh6:h*S?XI=,,j=]J[Ak)Z/L?5GDsaK\[]pUcr3/fZN)ibo,3I2j%mJ^lbB9k0-HQZn>k7Nf1aQ\&3jeL'?B>%D5F/oD5lZjF8@t/na;IY9<6/..W1HY;Sd=jQX.s6%90N!#h%7EXhqKE%Q3.e[09GOHNQg@4*UrIo;YT"a;f0mS!h&PQ0=>bTkeX)pV*gZ]e2XlQ:L8jfsdus7ES1]WCrgAM;1khj`&cAs89tF7KVI\8C9Llfu3J)#ipW%uM*BBF)/+cm@b9-$o1o2N9Z74<XKWrlP^`k>lae+g'q20nrr$o<>\;70Sr>>l5"^pMf6^3j(6bfu_im>5Z-b?V*Ido(l@oR$Ai(VrSMF4#U^\*uQ6'>pupdbZZTcVp)N#cqYbF!bb8YOD@W<+guo=qjH/PF`l_<VOf>t]&j+%2Q->&HPPjgZs[dWJS?I(\q-$*$lfuXlK+A`^/e!?gGDEr\9@9%Tr#=AFmBiclXkFChtu^U&qDim>X`<GEqr@8_K!EBVSe@BgS'#prc@GY.#j:j:)t\BIeZ`(G"e\tM>(tC@mQ%m(Zf`5g9Zqll"g"Y=751:,jc'_(2eH`CDtSqqMJ#;4AKW0b3_<)Ih6W$1aXg8)Op,!rVkZ?'Bjf7kb5'RQc%GSqr]G3T-o[`dVV3M2>u5#e+_a84o<s%Vq]\lG]PP"?bbY,2g31Sg-+?*Dd^D6pJ_N8HTeoV=gR+hpuB15B\bjpne(n%oR!<b6HE/[jrr>YAR2dVGpF97iB"3uS6&=*VPQ>u4$q"oZ7o:']9+h6Z74XV:-!2T#Et8&WG6j^ZMH63^AU$\qIJ%8=GphM,)^02pT@#a:6,;NWBlrc#430m/qCqeLKp2&!L4B0135U.htpC'&06nBE;iFIYP@A=$)EY&3ci;trOX]tk#[r<JA7>:[BQ@=C#l2u\q%]J[>t/P1Na:@&mr4(7JnX'k1AgCFS2rg_Cn3??R1;07;*HWq2WT2`^SG-I+*GS5pM0ZkHGgoZf.fC6HBTD1_$?6D&;`W"oBSJLP/6G=\5F5F&+/XMWImka*KUH?:3k@m5[3#b@`)*0S\As#e9pROrSLhoEfW,OK4<)lGau7_^TKn9UtJ&-fE88)T>d4O/7b/O4Gb?"B*O9[e9,0>(_p;#gG[gqadVX2kPG@hWhf%TEY>336OBL&9:bmKZ`7@DX"LR4deqbm;iC/eK3[_LKi>BeCJC)cm^IB524nOmCd=Dm`V`8/_<Y+Z(XaAFT_O8rnZ1T*XK:Vg-Ng195Vq_@De/R"rq[(<->=U]dS2'Z[J+p4G$.,;g#2^'gf&IZjF;@Ug:E!<s+5pon4c>;Up\"2_#n]r+YTO+a<qP,\]?h^n$F#2rMF<_&"k"q6*f[`<#Rj>H_Dcba=u0C=75_>:\[?_UO>+)-^n(jTD^XFC6E6<A&^<hXM1u!TZVheVger]57!d<S,B7MY34/D620a;%]h2Oon(m<J1Q"f>,'NY[K-G%-gsigm!8r7'fY3NZE0#U@\2@b-[oZ)[$anr7Irg(&BdjZd-k.Qk:5?Rp]*G@bYj35?4-E;T=VW*F*c"WVA+B#e9s++lqoW>0(!\-rng*RS"ZB-V]IqFd3p`6EVLhBur6`>%`0%RhgkCQk%"2L\C]@R[hu#WD7NT$b:)lqc`lF"EWUenZ9NN14";d<I`D;Yi>/6].K(7`r*m!P>#i'lrG)*M(&Wi]O:bD'E`\+j9!DWOK02?OR'g@fp=7sUQE[5U54m])+(JMZtRSKHBcq'[:qN#Ha[WoL@).D8f_i1(NN[Y*kXfs9X3^IAKp2oC%:)qs3uBoI]"GS''<H5M4*-g)sZhQ4^:+3A(Z+ET^j_pHNO+Rp1f*3(BJjh\K^bY4(#X8qpP,]&q2AhIp]g6ElC49PP@G8@m,i>aH]36\Ke4&f<.GXVtSZ(C\;0D:LqWYBpr!0&98MZ?HD5`;sr=#T]CrgBfEkZbk^9%hbR73K\OUg6Z-IHh1,ML'$aP:K_<fl`OEN+Xe[3W20WNuAst;BXX<1R(g$P1Wr5tf[G%\Zq[VU=!d52sRsQAVI`/DAgF>(aO0V7u57<E4dN9pj)2)6.c$r?=>W!pQ*CInb5?&!##-P-rcX$X_3Nr)39!B*@oh?)I7'lV^KNp#,m("[@^*,TVa,GnSYd93Wnd/7?284i]Qh0/sp-dahDHuk$`g8?mjQF4+QsW/%KDY,/Q$doXmd%?#5I=WN5qSh)TkW!^\mG7,'65[dI7X(mZ]ZfD=4uD6OS>@5m11<(<BS^r3GllB2f2;cnuGbkeertFH_t/0S/kC`X2n(>=8-!Q(!oSY&%N#e>uD2OKNs5=r^2eE?$TRq@=drHCqLlTGYe=PlrA29hK'JWj=3L8Q<^<HRZdS>mnEr^6>?n'7n61pCEa9O`s]FbCVLB#*%(&PrEjd/53_4rS,_FFDu444&['$$IiJ8m:S&PAROs>29Hemq&$)]Qa]0[qC\%/k9j-YO*Bok&FA]'9BC):biNCD<PqUFcIVp2MUW5dJT9Dsc@q=ddbrY$8rVCrNkpGL:reb,c+d_PraKU$G2eC:(P=.$ODB?X>Y5Z;ole3_js.I`Dj.dF7:#<<-1Zm?gdLoQ'01f^Ip@Bne$r'G\aX'ftmjBL<m@33g^,J!QbEt(9ERa2CpOT%!/.heqh-BpTGm'0F))63PM05lJI/^gFHguf"ls=!'&%O_faApR`G@+:3MY?DH8FC\4MZs\$n(fXq1Xh\lq3p(tOPC)_h/Mn9Phk*#:W,DD>un)tH6VE"6B.)M2B.dA)#qsi(rpr""XIRgK/_mLA&h!++*`YH?AAs"UloOVVki\kk3<s&F@YeZBN\'S2j/6S'R_\4Y=c8e?+WumI)I`Pdj@bE(/r:]NZAp)._<d*dY>0m"q1tT\IPEs5@2&lp8eh-YBa0gZaD=4qK[`"n*a^X-YM=Vj.d.Qc$>[`+a<T_8##b!&]^\IZZg<#T\bR67X1E7J+kPJ5Ee6?4**>KMUL=I<"9H+c[!SoQr47t\Km:H*_LDTNZT?+BLpbj27mAo*P(,`0Qa&Q<?e:>^lZ5kQ+tD(LjD8`.1*H#aAHSVknR@BWO-F9R?YXa07#PZ.0:[e6>#KOOV-YX-iW&r(_iEcl(uVcf%,9h5(\6*AX0/)RcY@:IRA#;dnbE_Y0[(ldA^2tKN#LPX8h8&Z%ihMk1tB^bmG]V.RL+rCG=YlUa.6#lFh1F^L!7,NuAb,7P=gu%(S0k)(/jZ1oR^bW]"crU>B+IZVr4n8[tsd%&iN-9V6X$FreS`M,[m!<]N)nmbsP<;.e#:js09oZ`O)NqBM,u;2alZh[k;7ApKKqXbb?9Cl+"i$hD!AF^sQIjuF8_a/2#jaeq[u4)qnU1@uXfc,+KP`;%Xis'(?M%iZJLFi-,p\(+h(_h.<<Wh&6]!O554D"i*rnsqWgnT+=2=_fFi?uE9''4L9cZV%?M"`f^/,KA1Jo&D40)H@mFs8Di;TV:=F^Db'7-S0]%K=>_X?hX&KJh*f`KNrPb8N8]UVEU<Vgon-C-%t(8Zm"'!g=>=#gRG0t:p#mDK\W)U0BUMRmb5R[-UoJ'"*jA=L'V^^Sl=WD-5Q,7XOr$-pj_BmaAmo!/\))J#2R8O2\j#jTe3'H@EQ-TLC4lCRQFWmI;nX\2s0s1].;Mt'tnnu'L2SqpI9t5?GG:f2!U3]8@b,\>hRYpc3t:YFYJjq(F=-r(3q\\X^i\uhU,Ba>J&h"A^\MaoBB&?(F-NMHe6gVX]?77?5`_i]('mh^ef%pP.??N+"HUMm'oU7%=PHtj#A<<<%m^sIae4a;P#?8hd7'k2r*QZIg0N`aWGkSKR?Y[IJM>@O!V`d@DfrtQs%Gi,JX6Wh3VCD"=eF]R#X>4<p\o,\+-YDm5m?Y"X3X$M*fo(&JK2WM#$W6ZR(6ZKR$9T5';`cRH>5K`UgT<:ZeJXd6i#]O&j>7]r&ePI%b[#0KAE$aPG`SA%4ZPWLE5q5AkkU`SZ#f`K>(^@87K9?/a3n@/@6TlYX!]jK9d.*>=>=,J!9(+!9<d_5DchC4/\7^MW&qaQD?Z.R;'TKYen!>hjZ%kAX]acp\ggHiNO"<6nYK74XP"K@%G$mU9_i+=W?QR(Ckb]pJEK!r[9&ONSjbjL)&:pug<0P<4t0o@S&1Xa\hCM>;F=4`'l[]Z;,M_P5-%^o,`2bqucfd%TDUeIi,Z(>dud6gj[8(F755$4a/XmbZ5a5.e::2`8^Js(hPB.,'<8PaI7hj+inKO+:2F%<R"tN4WQN2Qe\orV?eL2,_chD>pRb>M*l^k3@0S5VE)S[A1"n&9:b[\M;.mgNium?R_`7@t1/J%f^fuhf`f6$"54(<FYrp@[/99<34c^q!lCMF1>O,Q9V"[1YqD\cL#Am.ECo5H#$T`U6eB'>X^%REXgeWmd:\2pK)ROEFV6__?6S$lh@rrP8&:qcCa5/(34&6e+F:cmL$H&_%lFRrba)ZSC!F7]c'LsgaA.HndW+G]=d3[9*WRh2r4,<p@.Z8E^Tb^OgDHlMR<#%M"l'`Q9/VZGdZ%_bBj!^1]+2@<GflKjrUt`+m^DmNfA?3DceK<LK!T=e]U_2=_N^WI&QL03A$[SloY+$])MQ8UrrrA$1b.%UZbgV#pl@LYcm)cd?+qfTE"*b+]mK])jr'5pam:j4?[CG0$R#VhgNVR*pbSAbdgT4pV*,4/)A2ZC5/st9%0[caSN<SN#<7QgV?7#V:X2:@\&q-O1pAZjN:ZtQ6>6<6;GTZR/bN>;rd4]JeD`M2Qb0\Y=N^2P;lUa,o,,d;Yhm?YWXmKHs58*FmtK^SQ4slhCb)Z1==g,a6pP7F-B%)OF8^9>V-:%E[A3U&gn?N9LC,,^13Y%7=+V5bdmL8ni@RMXJC:C_8(.S/6BF;mA]/:,0rl)hm1k@.?e7Q0)%ch_]DKY:^p0T:4fG![C^?6gE>?J[(h^'oGFJEL0RH2=i_=+GX+Tu^Fj;5%(Y6c68%lT#iC05jdItU+9/=?V0=tr2X_jN.RJSW0)POK>'<Ba=VS^2KE^2rb"Qtg]VRY^n*K4F+ZG^t%n\fQa[\m%Q;hPNmqERi\a&G#+ZC_3;&AAqe4sFgiSR430K5D*!TUH:qMi5fL>7:PkH`-b2ES>\QhAE4]/]V^Ss2FKc.kMrBobVZ_?+XK?6W0i+^2H*<W#X2i790ls-Ao2EXUaG]`YF\nOC[pbup>_B<Msd9+JKb]`YVP\SBp[&9>0`,mb_rfOa^3S[S\*Kkg5#;-<Uk=<7Q2KHhkcKTN5?aW\.(Z[FbSs.^:!df<R8S+Fd4@&V9SljaeOf<%fCX_.'N8*=k@_epu%Rd"c7Qi,jeO.L^oAJ\udN@QUY\5-R'qeW/RGQ$6:H=\E%pe3nV,%8`Q.!A3<b,Y>j3D%X7B84#6Q+sJAEsn^**W!>NQG&I6T\S2HZtMa_`m5r7r8G^sh0Ok/+mC/ZNt*=7%1'LJY*,<@goU+n]'ugIHL+OQ'70?^:hmj)KNpr:%_:r6g1+O3/T*&[%c1.fMQ!ZU2OeDl0M%WnUm&]MghE#%YFB\:o3Cg1e-#D;E,KitON[[Z:EFrN`T7@/a$HF\#`nn)eRGX3[)\9O-X:\CdP`__Hc_$b38JC#B@/nE20_Z:):lp=YX#I-OlN2Y#ZdVcdDjg5?FDPQG!Z%W[pWOJNX<1?S2Y%#Q7eog&FE'XY1u+sBlV\LT>)j+lTSu[hS8qk?f,C!Bgj*^+QR:J8s2PZ>]`/V]?t2&$4?Yk8\h_aA^WJ)#U*7]P!Z>9XfEb+;TZ>cm-D1D!rtCELQ12Rl^c_K+Sm78*@^'8^&6<:ZE]&>#u3Y^9:pYgI8Pba.m$_Oj]O_id4RtqOi5-^\?N(FoBe0krjA21_pt_D:q2;$Nf*W2?-7E8lV1YQ`%TM_h[`\hf+pH>*Z+e/q"=I!/Mk^9D>UA<17rtnYFEB2?VC=UQu1N\k+#=2;^KjYY47kDmb;YFLrZ18rW>#-A3CS?SN<0mOK7Im;28DR@["[BgAaATYIQ*o+\p=sA5BMs.(P08+]f7T+d]r'pZN>'(S.c(\i[3`c\met<V#b<:RDtDTgPItL"mX!?;"&ie%Oc5?@=o`!CQ;4qf6fC:WpL3g9Z"=bo=ZG7b`._p(_V%6fdK=fW;G\8lj*JoTFAba<+3H,^7T_<lpPd0"n4LDdu7*2#WMV'3r+&7Iak]:3E#oc`b?]X9t+-Ek1(#it<5U=7JG(OK7Im8SH5ZOBLkm%&52VH\Si>4377,+!1FP`>@7Q&OOQ=KXd-0,Fn1:iV\nVQXW!`:Isk3\K/qrV_$a*Y'4L`0BJ5B2QIUR'QTDs$7+GFN2Psd/QTcYFC6+@j?>/uEp9Q6?,[qp)W8O%4c;6g>J#^!UQA\eh_]^oQsOR_ifCtElHG3"if=QJGF13NReCD?ji4^[ig816^E_>VZm5%nHJu>hq_*;ln]0AoDPS^10>@dQl:t)+9Ud@(\)VPtR8iDQLoF*DaOU,l+<`]1T&P(s+]lieU(+Ye%kCp6A"[O=UAq!Yc'^`T"P)X:5fcqnRitiMD`n;Z$L9:Pa3<mH)B40fi;_a7]CY3W`^Jl.3HXrPhTP4cV_)2=\mjo<Ei59`-Y`/4=RuKp>(1)ZdaK_4SDLLsld14<Yb4(U:-Q73U\n9:VqTjC/Uhu#9t2a[A,i'CdNFp3de:)iO[AJuJ$)DBA$Gh[4SXrnX)CKh>0(!aMRG=@eRbABhp]0hrZHF[R9EVE]R$u\O@q^[YFp<5Ppq<L,hTBML)hrubRXC.)Ha!,('!X2Cg]a.'7WuC^H]@qLLM.'Qo=Us<U(iZgr7sU5hnK._O=&D9Kq!`DnUKZ[FHZSq6sl.kE$iq<?LPgmnu"cj<EZ"\Os4Pf?5sNnuA.5;eZ+fB957X.OkDrI>)EoKFi/=@4UCG%KIkX^O<^H26cQB"*=6KB9`\thV>b-A'V0o;55@Ag]@pCcPP?4>>P:X,E@n-I+>MY,U94Z/Kp&!HRnbWU:meJG4EH@nP$P^Rs,iB$FuZ*8s^<6adIM?K#.Pj?0b<1pJ#p-hgSI0jlQno*HUf95;72rK]j<&';eQ`+#POBX/hjHTNP>8f`13_5#Vr+5)"LbEe'H\<drp&rZ8m4]3!L16#q[:rHLY&^1fg@R<,n==T%r(=.0G:g#%#GW!KEZAaTJf\(ke>'\bT_]%@?DJ##6OYNXdiJ1=9_(#]V8]C4[O@H/`ROPB`Xkm?Ci8,")>g:=i!n8sc!']UC'#mR*/X%1kL\Ho`LY#:`4=*Snm[3Gu2F7G1KMeh4cd:4Au9K>:T:9pd1/?-tikTd%Pb?+nXd+sgFW=VD!,$GAbr9Lh_SUB"i4Sq`Whf?b&WW^A;*fs>_fe^&uF6p;:;;h_:'V6*Vs"5_UN2=L89O]ZS?>`l7*Z]_0;.6<X>H\WK[Vbt$:Nj_8@H"Z\KT6aeQ^HotUqX4IoEcpmM0$+.LC1R(+a9d7;OD6^RsP],M=05Le'MLr@.Vpl0B=&HkPUMJDHo1#*97e$qUK2]L`0'%RiQt3?-"=L*`fk?*[B<DmH+fRJ:XE#B:`5?k1med3<?iQ"-24\A^C):'h_>dqNZX/9?A,.@p2"^<Y,Y,!JdXX<(Y3RIN`-&4ArfRmZlcIarHTg!S"IJc7h?9V"BF^m2\H@TS1r!EqfV-m>(2Saf.Q9KCIe\MuHCiEq-Iq*SULAo*([[Z,]V_#e:5O>-=%`QJ@_#+p7QL!nG17@I*=!M(sMKbIM`RH%jdj=!&pXZ85.qom->R#\d@PIVan0;MU3#aAmn)a;&el-Kk'm-)[=sqPa-LC8IbqfU'nnRH[LkDn@]@CfHbhAe0ApCX,c;A@EtX]DIU*'sW1.f&c67_HSUa#<PnOk,;eaLN66nGkCQ.'o*++hTPtq&rrTum_LbfUs/fe6!2L)?>b<]L5$3XISA;?Vgn3+=c(T'PB<ab]5mEj$*@9V8mOFVA9D)]:W\g#L"qof#'NHTk/K\R'CFNAflj(.#DR7OZi%8==U#BHqu!FEG+FK1O$<4)DedT5]WgbOah/\F[t!nYeS//(cY@6!IN*u@=AZ86A#9oD]qfSpAUfEH]5N1WD[L%CG;7/+F$F-g]9H[R[Z0GrlnP(Z4/*kJ"g).YS+7JtV>).C+nZ%Vr9_(<pYE19@`A5J@[:$fo#kC@cZS?Il(kD'P>@/[.t%tOocW=1'6:LQdu#]#hl]W'X7T69OA#84X/M-'>d_WfHP#eo#^*fAmd-`5IpVb,mAE]C*]Zi%e7Cje,.>:onh`"E,314?(il*arQ`.#Q_*V1n^^<B6W6HXadSK-h$8X;</Pe.*!qPDT[4-`cXgaS$A0r+f+&C6\P!)$JW`eC2KrQkY!6`V_-o[uKQ0j%%QX*BZ"'Oc4!"kcm5!B0&kT+VFuRRk!'3lr-'s<O6c,YL;TPb:/ib6U.bdbF/nMd71#a$S#pfP@4>H!afC,U::%St'GNVCn2:=r+?-O-aX)*5.gP)Njd@iqFX/T9C"l!&Hi;EYlqmkJb(8c?BmL^)qGH8,)DfNg\>#"T>iDaGQZRpO4>nFOYr6hX\1qM.Y]f$<>C-/cVE8sQYa>;5ZmoACVH(&IscV$Lsl7Jj-1:qG\?Lb5_Hc"RMo6(uBo[S2.d4CVII3M"CcY,'WjJj/>q+"+1(@GU4>>`eTDLD1OOlaARVOGG/d+CuXhVGZs>(8k0qts/JUlUluGuBTgrO-os[Y,S>4%s"j*e+)P2e`eTVB<Qr1CL%m17KV:)\YfT`8:j2$CT.l>e]k%#UVcIach`(DsuS3]7"`9>>)?5eC[,#?Gm$Y$fA9RS"G\@A%HWnFSV*KVVYceC%2dHHSf^Dh=.??L!J0=\7R8ehqqLKWrWhDriSa]N/BknY&393e\1ha8ipi[/s@t'^oCtDNG3B'=ECAn&Wa$hOB;;N;tg%8ge0;)/G]%tV'\D^^*,qoj?`cin\Wc\pYT8uH.CV-PEMJ:HL"%G;j3GkAm#Z9/,G[fF+"I%Q):Ug0=`hsI5gKJb)V3%k0_Z?ohoBN15MMZb[U)#D&Y5=1qin@FiuH\3a98a)pd!p-K^V,3T=US[Va6ah19t>s#PW*>5E4r^OH,F@iF,#L8*Dk5P*:?lj#k[WZa;Oj4WWNOgAYkYUFR*-dA0$_HHdV>?mK\k7L$E4*t#&oljT(OeX+0,4hm;M-Q&'bt7Jp)CPGm&ejEO8gN<LduA7D#P,p<I0.M,[^eS4&X+Q\Yf!Bn<`i2G?.,6/`r4p=FR;[<h%:d>#UH#jm)n[-W^X6qQ$?ob"KF)@#e>h[mM4(I"C>DSd1LY2K`h6.'c#29iom-c='%=%O*WM)/'dLdQ2.gna(_EQc7-TIZ#2bdRWe*mEFXX]%h$tB(#hr5NUMAK-VQ3Om-`]$XmLG67<6J?,jpMf,.%chjOW*_B5B)oD5Ze]+nsC%8nVc,+PQ,rq8cTVh,#\HIU1e([4B`$(rH<V,,]a$e*F=)50OD=<3M>M'N&5#^pMC=)rd'U%rUg4\f^b2J,pg1f:smOiN`g*b84'kN)0GeHV],g&#da>IPJ1YF=Rs0+KioFb,*+T<SGp+WTiU8iSb!DO*=fd1JL@sB!eNX`-UUUk]uE*=8IbBfE]KEXR7+g#P-m!S=X,]H0L^2i1unV'ok,'OK3-;[@t%kg[O1B-uN/2EgJCBeb3(61Nig6I2]FLA?&q/GZA:deE9oo-M",!K@tHGp)bVZP97%G$JL,RriANA/Od`\"M%Ma?'Ld2DIe3Oo]:/3O[E4+R&BHY8R4+D.Mh':Nu/aS/EC\=Lq5M"^0*X8k(t>_>h+0iPVGHraRp/&m7.b%aV@U(OB_YXUYsEg=#UKpZH$[W?G67\T`nlj#$LDS;CO)sAG[sj%gXV4qFUZ&^3oI)^,b%pih'#1d_InpI_sk`K1"C@ESK3X1W9R0c;A]>YZV2[Va`F\$$R887VL29c])G%QhY5uHr_`(!_Pc"eLfk5IN(J&,33p1)KMfNo:d0L7.H@C=]sqE?gR(nh"r>9e`buW8)8pSMEmf'Zor9Y^X'OdNbUic\Vg1]?$];Kp?qmkY<04!kfJmLgeP.lbNCVsFZfq`#5[1kIP\.E&3c'N.AQp:?(nBJnnfJ?PI9`PL6*pW"sN_\d>.-p5<%;95LunuX6fO0_YunTOaHoc'[Ph6RA$5e63#f00rFdGHVMA_Hk4WMa),'^nqf[f?S8uHY?c.&[RIooZS0ki!f[X`UR;-[`U>k]#!-aOo[c.a[AD.<^r7F_%cIShbtU)R2Rs"*/ut;KBE]R?lI_7]N2@nf?1*l0WGR-m$ra&Df-TMKf+@s,f;/Ypk$pc8?E&kFT4G-8U@5>+$g,/DF?L$EE^@"W<=ShK>r$QfCHkP&D&9?`GJKkJ3ul4+@h(1*QfRSW6\^>22QJ]%Y':k<gsW*m,kTVtQdqk/s5Us,D(e7\m3:U@m`s'tb3GMeikKJM\qFW05Q9k71LVoJLM99,rpm%>SR:$b5)U)`'\[GRRHL14c+"suTIQN!Rn^5ZM`qB6g\9B#4.8eJ+Vu;'8?\,uRl*?[lM3%/m-)d+e78L4<`i2GNP/`J4KnAIUhb9AaAiZ?A>>n.chmT`Gjq9<I-5$qM7;g`c5l(a+c/J^0^2u#k0HVbQ<*jl"b*P[SGGr+#eAr/&98^/RKa12`e:637Y#lDe0=6r5-jksEg>@(F`lRjq^_NaWT>a=E0>ATp[&dhp'ntpAc,Z9VCuZLcHH2AmI[o(<h,<!N8$In\@dP;iNHVdpnP0rfLH0?n2L>u(=PtC$R$<0=%J[>bF_]Dm_>NF+-uhE(M@)R#92?5\Er.)m([I@F,h_f)jl2IM]Pc<8jUN%>1]pAN>WDoBW\b\,@($4>c[:EH-%^H:sXmC*na]P>QH@Ad8ehf0C1<?ZnHr#L6*pW2Y6!)B;Sb-9t:*_ro>:!^n+#0BO;oa61ZLsENrSlC!0,/In811bT&*306*0u8\7!rqZXZ_-YfM^hFRK%)+hA_8$RO*6H^-A$m<R0mE$$L)c!)$#e:5O6Me.OLAKejnGI%O;S(Q%C_5/O+5D2jrdr6fd<edH.ip6p>S++89B3V6Bb&gBgVu8!<(4CknFQVI]&#XQ:h-C7V6+73a8$UT]"K9JMPj1i4gZl_+CdlZG2&?954u_h3Jk^B,gDo03D@L/dmQq@mmi(saX7FV*4jkM,D:6@-]F+P[VjXGN<>S?iC,AWX["M+,;rJa$<o/BMP7E0mpEgZNG9srB>:*tl>2MpV0b#h;A4t%00=UY"hf@r0<aK[$b8H1k,MI^1l#=)VZK0*(",&%cCLLOiVD#hgfI+MJ-@Tp]tn%%W5d1Oa9@]$V`aD5*_^qLF.cuWde0+MCXH;%nX;W^9X*d/--[HrCW&HE5=_3.7*$*=Ruj+\Oh.R=(]KgY.@m#WkKQR^Hg41.SXor:[GR&r-InEqr0!1C&fuF5gW%IjZP)(!KQQJ;-`t"CS<-D1g6+ntCkV_k;c!GQa!)i^,*t(">7s[re!)nf@nULND$ebNPf+cf43]Z]:$jHW0\B.U!0Wc7p@=B/jH+-g]JcThM%%(up`;]A("0"l13XHR4tN4Ikqf1aaPQ,]mGE?6+Dqm;r^B/Rk@k44cl0W1nb)5B^K-tj<afsC_Dg_BJ,12!@D/GO5+Q>\).ai+1r/\IAW$0/YmhjX4DdD;0kk)*<F@O3VGB'F:H!/_f_3RX2m0hpG&N2dIRC9Gl7\.mH1+[qM@T(!=nH@LW6p_[I0'g/<nce6-tC>h+?edl]'u6X*+A7a8,g4Hk0)r:\&+(BEK#&Sf`#&R9/1P_h6\eee5pj1a\oS6fq(oq#>P(T]1OdiH.5'M3i%I7nr[gmIf":po_J78i<-WG1b%JeV;U"g4G6r_*F!RQh0Ibc].`R"-VfU\Ep2f^bmL)sUl[s(I@WdMZ,))uj4/00br#qR(Mk<t]OB$J+(8a,e4r:o,YPa"r&+m3\u&ZsX?R?TPh5-tq`rp,+1u5>>h$N;f;!tRKn&pRTYX6`C(0JSGO\U6>&4m>Y"2-(%qRqM0JJh'iUg[I5t,h4q=LTB^AUlOce-Tn6Z-2cp[YWTm**mCT:>.IV0R@*ocFktSD7@o7PGWnrqE-(**B`$E^K24mb%lb/V`%TB!gApnh@hqi']_;bWgG,ZQF+l6(IrWDf<444G>/p>".4,aPWl:8,bT;CYCDST0c0\\NTcl<`Wljnt@@O=&t<@+ZCjDOQm>48MJ;?HH!6BEH;GK^N],gr'Bt2TEr)9K<a0ol)r_M`_=a\n7TGH8+>X,(OH*Rcit-H7So,?_I)V"\Z4B<-pi\",34WX=i_oOr/iDdaK`-.JdR.NT[8[6dhUb)/S\W9pZ%&*1T?EGm(TiK;<k+-O^28k>H/U@E`\DGEeAaWEr0"h)R>k(i-lVTh"gqrNG>L'9NQKPNN#tXgUA8WL4h"&b\LREe^X9c;GD"p+]hMH\O&?3>hV+Km')TEGNfe9[(&`h-6qT'ODkQ&2(R"Q>*iq&`DftLp:nl@4g7_?k"1t0M#E1`b*(I7_N[7_P^]Jh/*#<:o;,nghS".)k-07MRFWmWG5r4q`HtW`jY=P1E`$m&OmG_ros8Z/M]=a!p%br?b3gZ$]*c*NSP>`V)A;'O0)dZG[;TG'cht37cS%*8nrkW2rTcjXBE$c227^/9V3raCJ_7btcnb?V',9cW1u>oo;qn3'`Rn5b=igHC:i8BtR1OBNEeSTD\bgSVD!._)W@Q0".qKn`)'KftIJR(72)UDr<-6bOE5eFZUo[cp2gcobC`e"@Qh5mdf[5hYDc*kHQ]SQW]jYb==*LC>4<W]_ah@V8heHY;;>QHs-b+%Wr0As-<TBX[hf]lXKnoWiWWmL,p0uTLfN1B9)j'uZ9.]lp7=648*MR%J5"+);P^DYkKN%>A#k]<,&+_<AHMY,BR]pf'f;pq^o1)ae67tU-OH(K.oD/k#342<ihh;[d(G$79<"(Mknpgr"[L<,Dh&eEcC8r6Grq2pq\b)(pQjV=%G3\-5p3TbUcDCJ[DL<;d\e@C_XYZqP3ihu6#1k]egpXhBaf2afC6dLY/@u8"6=4NCs0Fqf-U2WNF0O3X#,Ff24e)"E_O6RX<Q]dGqGP+(BZ9tUR,DmjVU;@S*Kg+l>`Xe,3'0OL?+'ThC"lU63%5J,/jc_&NZiV/k_F)">7bg@Nlr5G\FcLW*]e,r8)IeT?Y7NkiQ')J@jigR<;!NQ@j'TLRJa7)0FeIXe*Bd[I)r.T+U'#j'N-k*<0+4h.<G4hQI[..VO4)q?h[r>pR?Sc>d@FdE!%&J+3AX'',3!TK\Y;8D^-ZFf08Qj;nKK,k'sc%g@>.=:YJYLa<,>*F&'T@)b5\O7Q7uF*>Ys[Io4K$X<*%"KNoZ@6git-*-1jM0ATn3o(1^rggl(Ci2)tsmc!FaU"YIB^LT92@-IQ9D2]P<\ld"c@kQ`\[:j*U+!%L1Q]%Bf\)aj9m;i3]jQ=ap_F:DB0d.hgn9/S/JX4"n\&DY\!Cq'1[GHdI\(2KT%Ha-&AY*/[+d^ihm/l\3*]Q-\WTg>Fo7A&F40qo'H$A[MZ%UZAG,:.gC0%=o=dMJ+J)@D%npa%r+QOa-$L-6,]:^1">^#1U@iq!8_;]f&+li\T4sjWGInl6j@QX\g\Hgs(UWQe`+:['VE]iW<i!?6jgTlgLIsA"R+1a9L0'%%p$+YHD)T`J!a%&'Y?.Bj:g$]ID^"L%21-/aq91pnH#m^30Q?gNUNiiRjo*S?2[3?dgf(IX#BP&l,fCj=/A*^>P[#X-?3qdkWRNG+O;Xre.Zun\s/7e^3rGKaS!>U6KMi]HbA&qre.+J>nm@f0M`,@Ct0)QL7s#\*I\*=]W6Hl$L!n!TTDa%5[\4c+lgki(]7YF[#ih@oU>k+kg85$*^g8QH@Ag_`\?HH7nlLOE@V^+Eg^V][WEZ+at?SX#cYb@,#YU)NVTV:?9k9fZSSpfUC_:Z"iZs0Y'a<eJ]A#Zoacr(tG0:s2=%AfH@LHTI6E3mL2.P.N3p[@/uHQXIY^Nll%I4Z6Y(EljNa,irskO&/rAf?iPZnb*XM\'nj0(-#@C29Bps#W46<.((')fSTD;,T\BMb]GiQn,h&H8SoFln@QJU\9X5@W^7a4*/CJh*Wg\BlV[Sh3UTjN\h,HMI'*2"7LA8[EMY$4ll0H9VC8paU,Gq[T]tBP:">Q=F0i5J_X0O+$G,IWNPYN^YIMKk[lkV0][tUAu2;jfs\XcaG1<!`Xd-oKV(u8*lG"YZZ!Y^Z1"bs+K<MCni3n`_X=RcZkCi*r/Hf=1PB!V*CK8P9`LOSqDP(SBlD4k)'];.[tDl7oWj7QTD;oV6'W05A=%UeKTq:aYo;,"O[O-F/=-r9N4%u*o1nSX.4o3T+h*q:m\Q8mDYSkk@ODTG=$rtTb,mh]+;`H8J#.KGj3e=`Xs/K;(_=:@MbhH"Ilhp'Q^i]p1KEsl`qY?]ODR('pEf]^`q4r/lSG9QmpE\)7]J1$(@=7:?E]IfqGhZFRXNJ!i5pX=iKqoO'k8p-oe1`d]V_QuK851S\4BdfI*f@`>^R^dk>M^S/jc_&NZg>Dp^Z\jD*=r3mY0p26HJP5"HPC34Sm\4@k"HZaGq8qin3Fo"s&21YV>5N\jerk+-a=c+4u"`oNcdh9[Q$jDV(XtVrZE/K\jK@lL$simG+@<9<JFrVn/,cI*[h2j2ORs.gF#DE,L+<K_CZBp.MRN^+q=9I1ABYRl-b>X#Y[d\b$21[JW_8nUdKjQ"3+;?_W5!m7N(;@[YnBE,?+':&^NU>5mOs'm9K.0tl=JF6:Z6I2*Rk5gDF:RRqL]1pB2@GMbXJT-QYJdRC.HQhb]d=0FU\VVGKi3^CbTa;*,XjIW6=g8krh@G(?V]'e`=>KG>D-6c7`-6qSp=QSX%,:R7O5bTaKqSonAa(oIM<AHZ"h[7-ESM$eQaRb+87kuESiYnkhp(DD,KdcRG1R%:qhL6^.2Q]]p'tSO_I-9&g"1YdF3N]mZJ[]7ERC8I93dV.COeMNJIQROfg[J;@-`KlLa"a?B;/N^m+ZK@YnU`"bQ#6*4DJhc%>jq=;a?7&Han-\g5<WnBG&5;X:qfOqo#o9nYEdaK%L=3o+]h4TODA[bU3u!mr:,XjV\N@G/eE%b'Of;HhJ:#F5q3WPPB0eXD9%tKa"r'3!`]t1=P-f$B."ci`WD=Fr^/<mY-`%E-MqdccZt!<@R#=s<:-Ta0<#k1c!JaTDeX')BSqdq5^'[5I\V?<KRC48^S$YSgR=;X6cf5DS)VrX'CKiXm?/P@le"D^<*QIqaCPm>T1qPj0X#;Ns4td=7u,u3^LSDW6Eun@`_Reh@BGdYEK0`lN#@G7iqR%Zo=[5kjmP$]KTM+R/#6[r,t9[L,H@TPd7i5'D\-qN'YZ?2@riFcGT"CJX&0:W=pHMVm*!fNV[$N4Qdd9FhI/X?P#S7GL2?c<?/q$9G3Xp;<n'-Z8:O"Rg7Rt4;YPCc]Hu/jc::CcolUd'd*HAM4QK%=;=Z4$*ch'8ii/@Pp[>aCEI#dWLA\^YCl]L7X]DGJQbDAGg6*cQ4QUK!1VDbi#>:\<EYVqEj.6Q^b`k2apRPN,3mimTagN<fR]'=O>Rij^0nk^IO=R,FaBc4?%-7rJGUZ0G?D,dTa@5pA%RR=NC[$)"%&<,EVKlTV/>@OBh&+dES$5e&@Fm2)0V!q>hM=7X'oPl04T=$k1n*R_&B/pAa(lZ804hn[&99l,n1-&g:h5dIPh3G<UE983qiKR,MMf!5VDhDL>cGdL&+7+^H0MnqgjM8iWOAAqnZZH\%1Q2F<;sm]L3X#`[bY<,m`NKH4)[2:?RoaQD#:WHWunlB`'loKT1+ZCo<DdLRslc)GF:]Xmh0]V5+1($g^j-=*^VJGY)k7ZQTlQ*@e.()OlF55I9O;=c)+iJ73LYP4Gs=(md2shH<:TRC_t&7[!"?f1_N>3:gRIJZY(Se=E8`dRWEt\8g@p'lEmrLe)ntJT'i.'DL?Q`rk[0<^R;f7mu:ca>Arcl(ARI>(S-Qf0_;g<K8\iai_k5(;YKHjDJA+V2<2G"1b;Xb(OQj^\D_P*FF9>nEXNr$n&juUg*Q1@OsPMe#^4&3_q-.rSZn<>9@VQPGqh/rBoTZ=Q:ZSrJNi-50<3bcBCaq&ZgKPjEibY)s3EMgQZ;8>X\NY<\tm<KUi*V;532_*`k/!\_@H:O[;K!5QqnT,MW$aApjg<IE@l"aQmlIY:%aH&I@fd#X:47G/.R2R'VZ1[&TWTtD973,o#X>i>-@6bo)H4&HOL6Uf<.8igl>tbjn/31'oRnl89+5,SiJrBlc.0DR/B%ThN1p/E4Wq&OW33TG@0t0]h:pJ3k.+]`f(StaK*S)%[qV;$cPg.K]Z:dHYhOK86AeOo$:=XD/.)MgmiH!^#JfY9U)`,=WJlN++4taN1K!]l1dkr0$=R3(%8p2mk8^_=0j4HE:n]YoKhW2+D6"Mk3StYI+_<:-*CT,UM^P([UQi;!^]J+aQ6m.EJ[m6C<<TVW,lU3S2MHO$EI/=U%dV!oP<jg_1TYl+lopBk)-bgq67P^#7Ln&mclI&):uZ/`7Xe@_L,q+9\d;[>3&Q74D$SEpEZ4YZ3%0(oWd9I^[(SLEj?Mf\Ho`4qM&87c[!W3/&52.7ZWG*Tc)EfJsaWla=ubFY?^`;+h&]S/,$T`?*K7BB0PRRVe>AT"1^FY?@M_*f(bXW-?cSlDS2/(lJK@[9UZsUR>W5oif*55Wfo5C]k=t1kT'!REO5g%L0R$iSOl&8M4jWc&kjJ3g,gFqs0fnPe.ChjX1O93T5Y7pRS[;*-&5`7r&D9:N1II_jJ)HJVAL(,hlKt+QL2@7@1"&E6>g3t`J`0jo"Ts'SmQpsVKp-P?79Y`Y/,LB1-6l=]D[KLh,sBFS^"fR.f!%QUF#;C/8BjnMK`DrGI.$XIXp"/5K?3p[^%R$HV]WrCA2Am_9'[bg6FDs=2VmAk*>irle>>Q'Hn89=%KNVbMPul&rUEF['EbO<JO`&3aZWL;V0b!BlTDi?]1$#EEp_6:4HY%?hi,2EFOmqJ(I>bcl^T.lWQ^\Q&#(rN#iXH0^m#_9Apih1=MjnD_e8aUpu;!Q^$1.JcB<%NK7+`:08RJ4XJ*2*&TcTra@?6j=W<ZpQKLp#eP9/$LkSTH.s&?\V1PE?$cg$nJsArQodB$>0-C1QMt@Co4O[eSXK1Xn'o6.5OZ;`9hmq-4>++1eAhLXWKWBm9+AF=4u\L0lF.D[r=ojR`7br=g0>MRs&JtNeEgq698%mI*$0?[p5EM-oV"Xh?GBO;V3OcbCl&M6YJqd9J<5\N/#6CjjY!A%ohACq/=Wdrbk(c2]._95'5Npf^?EDG#t9a7UmO(;E/KF4gHdYS1l\4L3F(fXC;'#^dsq2Adl4Y);_RJ7Zh\[+FcX+M*FS64LrRFV>&HO2-97dHF@\7?-`+3F$iAdVRM;6U:fuIua.=%smB+'Bq!uB?hg_g=)B*LTh>Nr6ejqCsVOIj>gK_OVl]RGY.D*#oTNr`R*cfjT@mFje+]kmhSj!&%cQef_LW'X!f`*A1EHAublBY\`?.DS;9CD\$?eksA8B<@J=)fn5rj$i!;Y9*!*\X2`q3\MQ^ONCYhVMOB01]crmA*q,28src\l"T.*]PQInl3IXC1q9!3J&k+0ZEh)%3?/UR/Za]ZS;p5OdbPlYBX"3G'E!?G3S.1lXm]oXjhrmONY?DoBk9C].-NL5H4>V6EZF<h3EhIUGlk9&cQ2r5Q2hVj$t&<*#9fET#P%2f<%Y\orfefjE;*342)'2f='!50&Cd9m^mamL5tkB'c'ack9&["812fGb*=MoVe&G"I8IiLmFcl;P(,U`%oPqFg9`IWrCh4]7k&MK^*rq")1$5XS7JN=Ie)O$g%j:nk`B632DVdZf<1?0b7:)5I604i5H1`u/uob:B61kt$;K($NN8ErU7BDnba)L3?15hCpbSBnEC.mMQP'Ocj(Hf6gB;+=B$HRs+1:@RYHa<Zk45pKjS0LZ#d#U/r9n=t5HuAuq:[`e*8qjQ1M<4km0dchNl[F5m]UHJj`enX0p1bVKoO.6L,J->lmUVK"\WRRAbTX-?3+k0]R59Z[p2VWeE6#)aT">NCfERH,K7scqN2P6NL-+%^-dX0%j,e-kjW(LLP6]IBa:K@M]_=?mg-Hjp(27[C;(-g`[d^^oC-sWV2J5UChtu"M(LmgA7$+YnG(B9p8p%O2d?I"Le.+<)'kj7#e:rVWE+.QmXogs]$='bldq_TrMl-OXg[ZQH8B>;U4JeY8GdhP?L@4;H)o-NK=/Z+;Y]/ss*3Is&6o#)$^rk%ER0Z'UuHe_qo//>T0I_%-asp*3kg%>dFe6Se&V<oDeeatIZnrdf_</HJ#u>4id'=9laikHdhns6iG>M6dQWQOO^$RriSd`P'@U<WSfnsF9^f]H]=2F:?"%5/Y?lT:Hna0#5_su<3Dn'>-TU6'(/t\\'\XPR\4pr,l0iiW\sRCY(HUN_DUm1adOrMY47?P@d^F`bc&:j=9@Ifl$nO#[_AU_Sgg9=HQl,jbY+!0i0=jD5lYAU=7u!OWIl1DMJ(%2f,^tG=\XN+^nJ*Ccj?uT.O7P6Z2(R-ZGfnW1#6='7-QsgdprE`T%W(ik1=oW+fiEL$'dk`s$I/^"/">,<?&0&4L$TuD&i%Gp96_)j=)Wg%$U5lr#:b/uC&OKA#4;M@o><(+;_>u1`U@OoG>48U*!ATG8$IMl"\b7>fCe?,YIFi3hs%fbN.e[eoWoi2L4r8[a-G@71M$uZ$AoB9&"`.c-Lt>5X^3omRd7MR:Y23;0"h@A$k4:C/o&UtaO-b-Hh@bel4kE],`R9TUY,)`(nm:\Um;q]`*9]3NN199Pr27IV/pifDt!IL4"j&F]:YPi-omtT-*\jV12kM4m-2t4\oLNtnj@uhOSe,/`rQ9Gmc)Em)u9<Xdn7Q.iLtZ[;Qi+#STaed'a\*\A+R+8*D"?4KrHXfRVQa;62ir+.Vr'VZSP6gT@gA6aho>kI)jjYL8M'lcHEl#Wu#f7*`dGr]%Y:hSul(=M@+K6<bD2,qYb,S>0(lU,+#p4>;&e^qu$BF-f=s,ZS,Du>'Um#i*I%\e#-IjP!cCk0"$mP%(VT7!$PFb:."Aej4%[tFDK<PoetXE-Voas3*ma,(#!T`IUm%Q>I+$'QgVT)$]@<TLecaEJ&%`($JFmD,NLmJe)a$9AmE'``i4`#E5:kL=&C?@7^T#&7\o9CKO&98Z$%pFL;P7f;Jt8tH&[Q\SInn$3O`1\5H*3haj)`]IXcmo9ptl.qg>Ao5"DiD"hG_K:s>7AEhAVEEcVbs^,Rr6F65Bse+5PUkB1-Kh<:IH="W?b"d%;o91nWKQSO$!htqS&Pl1$(?%FWR^152RDch@(qrURM86pGbXMfZW_E'K&&0BKhe\7uTZE&n^)4$aB;;?2=pC.N=\mrA8c\E&(!PUJt1*,jphX"2J\QheG6H[D36knZIpoh?.+1CRlP!tp<XA3h7Vk)gmI/iV-kKXd*YlFDk/O/r76UT?"G@)FTX@t]]Hsl[pDsmfV(UJQA2@^JqDmH^JS,9T=1ZTHX\ZP'q&9;?fT9*8T>h+`MNDOYn(Ugi#KWJ=%2CeY(eLP3BYGuB<)u2qPe9icpqW[k,1@i2_=`LnM^ej!"HlL7?].kk*-Y60[+bX+@@o4&03'LNhKZeSDR63L\G'?>9Odksbe0WOZ0<(FdftB4Y=En[7pM(tNc.*cD(lfPNR<.b(7VVZ'>:4k897LMbZ1OP3V%[@>CFBV(.ZDRr+ljCS<:k+*%G1I"g!\1kAEfgf&i\+350h;qQ>sA.6H6@AR/GdpZb=$23jXm]V=qMZ0\sWW^>Y2(A`a8,C#c`lGjl^m9;`]Sds@_d4[N1$5N@7S7f&P4oB2^BT.M5d9T4IGE6mWKIjFaQ)^qTC,]Ztee<3IXe%b!ZA'_ApldF7sjRL:JWkFktoB3:`P](UN$ieSC0:f`Pp?j"bC/i-I8[5)b5%7KERn!bAZGSnM(AU$Ia$t#&ZNlH1Sb1Me]6[+OM3_C..L<R?fh][8Nl`6iZ'3/o]B`>G5(Vcq2.9r&=m$+OUB_;=n'5H;o<Z'rYAG?DC(E8KQ)(`)+kNtfK\k2KlH137>;p0Z^$-4\.dH/8Ds;!OC4+Ya_kDK=H>br'qcqZZb.5+0-*:i80\n4A:PaG$Z;(7fdB8oTChu:8a=SmCADb;$\Jhj20J.SKg$@p0)&"^/?G69bUSklT/W%_6flkGBZ1sQjODFclLj"9EDKDh4g^bLlh3^LP'NnH0_"_tgZK^+DHW#1]7_&nJjG9G;\(/q':FU^&qlWH&]qiuWV)F!3KNo\4$G"*TAS:d!O3Frb@-d/ks$k.Uc7)>GKI]`]FqJa8&pjm@rV/6bKTq;pV%r]Sm,I@N*Kd8o%M6V=9\Hc4@WTgpI?43.];qQNOD24=[,fqrO!!X7Y[adh9g\6Y-("'QfZte0<)ZLq..9]::E&fM8J@i/)i)+.hP`d/h:llERUV'`<C]@;07Bqjo(!#B1L=.RHkdOP@+L8M.bt]j%(YOr5G>4CMVl+<KYoRgh@T?H0!Y5UFN&\1AoF29FF%1JJnmf\ddK>eAmUStPOU<hDVo8VZu/si\A&Vr&TZ.L6c^"6,7P)V?;p)hWQ!>j`IA[<.3Y.^-hm!Ipp@P'g6NrD3Z`bH_FUOA=/G*R/KPbSY5VSe\[Q'tRDorK[lY)GHCi0=^cVIB>aoh&QF1Y/g]eZnf%8XEF6=faH1%V.pnseAhXQkrE^t&PG4sE!D*'u'3m5Hsgtg^;aJk<%n4GPo6-S&(MYq4?^,K&lDmpU)an9g>dnN0G!Roam>&7<Jo8m_pqat*taHm;V'Zs/Uf&@)Ynd-BAqtte8Ki>_]:mCmcr#f'<iV#7T"[Xh.Y)kf">RNDHhaX(^3)fcM4_]],,jq*pH^-t>F^WA+2qR1hiS;mH\#!49lo*q5-mbjk$^2&W$b:]^#"kJ.'@a@2;l2uhZs@dujbg%RCWhJ(lKt=R/'eQld^7[lQ8=AR43PQt>]RG8%7-l3r*n4r9@dXhJ<8p6'N,n0g$A/!B:jMC1#;AbrOpnn\\FuTOXfTsOBtpc46.#!-,,u+_Q%L92ldXps8KR/d\ADa?YH\C+HpaL%1.CPk[WB%TK.[1KNoZ^%(X-@2_"MV8T[2:/2j,b!+1QbAg6:s+Joo"H]/QAKl&O/eN:QAjp@33>["OOU*:!!]00BeNJ83:8*'@,`Jg3-DocKA$f?5j>hBd=$+E@rohD3L=Y,8jgo2<:%J7Os;2*f_bY.fm"?BPELE"L%)B8RK*\U@Z=!P1mK4:#tS*a`j+d^C71VMfPG9mu>;uClUZk"ZD#e<HmW$m.NPB-9kCK4Hdg<i8hmAcK\]/$^*T(r)SGsYhOA(7F[+Vu;'a::QiHb-j=YMnZ3d/B*@l2?jL8%Ws=NK;2J]P.Y^NbZD#,Rn3$RrDYZqWGqhgVVg;8pRL4c8A<$jq71[;hNpG%4ug.>W&)jT=fU%;ReY$kKZhK>un)DrjdLFFa$o:4uB5Z$/*pOqM?0c=SO?!d?QqEXT)d"JrZ+A^:3nZmKo6^ol_Zr4tHHiip*H:`D'$!0(CX1_RYH#\V(Z"-22jS*m>I1<1d&Mj?>&plmdA!>iV:Z;r^h_cdp$&jQUeY[(*cQX0HHp"^UhS8-la3\O-!*EeS_'b0%<;P@Cq9j_;8E0-CZD)Kt<;)`_,XOR&#!oA47Z4l`SOB2Ti;]uA.SHe,0EVOKVV*5/'?(.5,4m`k"5*UUFDp=h!mGjEd*+A+WnZMFZlSOliJ*CDPob.4mB<MiA5`<YWo0"9<<DpI>mo31#@q+E5&Q4CN-8i9E7NH#;CPfSqZUa/0&qg^Eg^hu?HQX?mtHJ74BmVh,aBNZ#2Z9.P?25eL&A:>i8P4P]W>7bXl;<CC_liC"49g;i+>VUS?_DOX#7E?4L[ueenc^g?F2,fio<]K-li]gAUIJY1/UC_Gddan(/)B>@ZT?d0!^8+p!h/cJqhO=o8bVM[rI`:sD>go:89eaKr3W%EsF.YYI\%YGVmiqK*VBcn]o>%@B#2'HE3bBABSS_l5qQ-'GgL=)1M=>E]['%WB'(.)8-XnkB.Af\cPhRVV+dWIB`kPF?d`R#aCt&QmXQa=;Ud]]4]o^DJ%i#oR5gCE)0S<aqJ+cI1ob?H:M_?m^9;8;K@FO=u*5aG$J$rH0KNtnm6EX#U)0.<HIpkWeS6Yt#oIgHk5IsDMm1s@q98h<?oa&*gVn0HZ&7l(ug;4BnY]dug]f0"u9E%W4XGJFugf*5W0pdtB,AD&FkX^].DX2_$S#91.ot<GrAG,5MM(IJ8ks_[u(h=jR\`(PJ0BPt&<[Hh8k!N_911lPJ6h:\W5&.a<`*ZT*NHBrY.eLokluQ0ZQfiA)(<Ja.BgV6+D@UlCdVfA[NYY^2"R\_@BjUKJE`lBalTHYCh-6uA16np",5E7idC"a@AQYoReER`(SK7,#6<'I78SJI@#e<:q)02jE4S^sRC7I21RJ6g28QiY"'M5/oD$<8/j%5%Y;#-J8c1*i49]Ys:5PaEpePHcKq=q4DJ@\Mb\<1LIWP'uSn'-R;#p)9`"l1%Q,`E8$(:=qf7Vq!!h5.aPTCYjI%6d/1;lAe(Douj-E%O.,+9/X=jYq8KS0VO,bm\GV/h80K`;E,lq]g.YLRU`!]>Y:$(4Lo55ukUq<`_5+HH)C$:!(N5\FSTE'Hrgac7F,4#aV_[RtpYp#`b38AtBQo=7:!%+]jKcE$b&H5L-W7lZKK@DtboWIpTcA[JA=VbVD@;o:>BkFm0pNDq?:Yeti!@+Vu;'W4djh<qNZoDZ,2&\ZN>G"B1pgSeRBPrBf318'#g8o9au?l90:Kh\XJYGh0N,a)-=Mc$@jY8a[]E@SSFd=23b8p,E-UQn!4?#C1&^OdB,hIsi*^mZalu31GUE[L=,gG$rYXOsa9dV!EFU*XfO5Mg\`(EiZ?N9>/%!04^AP/4/B_>TQIj!Cq(<1Jb\fHc/4T<_erFX)$V.UK.i6C-Of8ZJg2snO1l-n2iWmn@!&%gK\I\.'<CCSUJCZ>'kh>%NI\cl?rG,Mac8u9.l.Y4VuD1RKn5F4.gn2d%Ja?qBf3DP1Iksj`>#]=e$DM+%UEP`;GME]3iqASJThDnlor:\Ho`4p)e>.$TNVNYH.OAi,c7)^l[^M;/Uk8++sCBmH#'9I(A+DBSC1V#e:ElpX2^nOeZ79YpG<8W$=4ZRQ5a<=.?n7CTCa%&dd.Wgj6;J9@cr%:+AL'[!XqHI.Mm)@I)O890ZA1nk#a'_I\jekWercqXKVr7JDWRhF$JP9thltW%6Z[BhTh(Wf/#58\5_S-(=f0cX4d#Ko>q(EFOZf(B!CEJ(>4,+q>^-;Gj,`"[4=2"lH+K<IkbU0f'Y60%5tVIh5r";E!,^+18dq@0i;_2(g2[M#Tg#mko6.Cn$387@C*m,8".i?,TLj+e``0W9F-4b/o/&If&8$G5QCff0el%Gs2!,0)dXQ/ipbE\l%pUPA&qQPM4M.1b5'Hd`p'bK'?T4>L(A4dBr1K]t<2\,dPXdSKr9e[S</,6b>sSa(s)3`3u,'Dc,KfNDGoFGA>:0?-H&\Epji.2JUQum(@Zp:-V?;Y)E+H>"i)6.S[TV!]a#I.%EC[G/:iP5NeU8F8ebk5F!iWV^JQPI\o`\nSRpLf[.!N>mAu$2>3rIbWe,4/'_rb<G4Tfn@<Z"q6j"c'.1Y>@>AX&.,oi2`T'\$34\fYRM<)<F4TI>(W$skbZ<YgOq0bl;-3KT2DT3rX@,r\'n:9B2*,dHNf+Di]XRFUqfcE<nqn*1EfiSP0SiYscgE:>IjLAh'h_:4+)su!h\TG,p@'"[/o&kH%!(E*/QYMq"6S=&Z8F/X\p7-($%'2dc'ippp[C'!7&=?pChZ1a`JuNQUW5c[?aT^Gco!?&84L%mP^PVH:89gQVG3$pk8Mm*89QbnBZcS"<-O3'F-HWkO\fHW"OS5MpWo^#=hjggaO-+SV\ZFL[S-@drY$WuOAk1]b2^fJm=')h5i8'[]])YnZM%WP9o>cnqjt<`qheW&aIu7Hd@P[^er=^<HbR5.C#`RbjF!X^rI#/_PIXrQ8?=&V"3n!)e$o.ji^3UN\B=!lCZG`fm7r)9+N7hek^n(-Nukm$T;TXslr-p%ZGi_RcTEA"LJOI]r#"N-%KOjA4>6Y\njMI1bulj#-O^n+k!]4`Z(%foJAGZDbWN.WHZi$0UK9+_[(TGN@\0u!(d+EkEbKsJMP[4B=s#p`UAr$U^@&gcgk3`INhfjA5rPmhL^Losi4b(EFOek4iti"B.7ls`%cf6LEm!,eSnup'iQ$9=%sHt?$,Rt%c(&c_p$sp"cc@1m/$\ASD?mo,IOAhgaR@^V2<RM)CrFDN_*c,^01@dm&%<]la%"=EPI+b8HAMUg.ljfi^\b%h$N0htlX>62FSPfORkj0P8fTW6Eq$;Pj3lb9qt:OA4>^m6`0dBZ;ZH^mb159K,YTYsBM][/2'*K5VC"Mg\CZ!%PM5'\dDd98GJ>9kS+c4ce:1lILf"aoa%+IJRnQ_^hiSj\):-H3[^Rb.5f`K,Wo;B[kN"8"Fi4"YF-=S)M^!A#INB[![@7#7f^ND3I%NSSIc]#,#PMCtN.6*Pmb?H=gEcq%!/,*&^HF4G5cSZU&UF@GY&E-`\Rg0nWM4`d-d8$)Js>NV$&]RpOF%-+n%OR\OeA&4<`8Rodb\<?;q@k-ol%ughRp"jG22t#6UT>W2mmHF0sIXVjX,6L7q+.IZ/3/OD@$'9p)ESigCLSpZ4:D(>5)QHa8lel)`aY8bGsI5W?kUG9rC)U!0pPbe?S`Uo$>;[8$9i3zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!!#7hoRBaKD#4~>endstream
-endobj
-7 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 546 /Length 203 
-  /Subtype /Image /Type /XObject /Width 1271
->>
-stream
-Gb"0;!=]#/!5bE.WG`:P'EA+5zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz!'^\^[af!~>endstream
-endobj
-8 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /DCTDecode ] /Height 137 /Length 18297 /Subtype /Image 
-  /Type /XObject /Width 150
->>
-stream
-s4IA0!"_al8O`[\!<E1.!+5d,s8E!T7VQ[M+Eqj?FED)3+E_a>DJ((^Ea`p#ATAo&Gp#UqCh.*p+B*2jFE_/6AKXZ?6SADn!(-_e!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E6$gAjSA!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%!<E3%s1eUH#QT\]Q3..3!!3`5!tbS6_uLkZ!!*6(!<E3%!<<*"z!!*-'"9eu7#RLhGs24oF&-)b4!s8T-!sJi2"98E&I/sBO!!El;&g8tq"qsjB#9n.%14bR]#U;[@_%fkqn0Bf!Ee4T)()If*)C6^X-n-W&2)[BQ3BBMq77Kd<8P2o\<E<1'=^#<GAS,RgBkh^2F`qtRH$Y*rKnbA=M2II[Pa.Q$R$jD;USO``Vl6SpZEppG[^WcW]#)A'`Q#s>ai`&\eCE.%f\,!;ioB+]k3(smlLFH:o_%qPq"add_uLk[!!<6&!<E3%!<E3$z!!*-'"9eu7#RLhGs24oF&HDk5!X&W.":#)5"98H(G5qXF!tbY>+Ya065u@kqE>'NOJHurVOeK%r#pV6(n.fDQd0^X71uTbN(Dn#.-7:2j.Q'+C3&s#e6q'R884cEP<)lt#=BSg;A7]@cBPD4&FEMbNG^4UeK7nr5LPUeEP*;,qQC!u,R\HRQV5C/hWN*81['d?O\@K2f_o0O6a2lBFdaQ^rf%8R-g>_/RjlYail0@j2o_%qPq"addg&MN`!<<05!tbMt!<2sGU5Aq!U5Aq!U5Aq!c9M7qrr=P3r)Ma[%eq9d]$H:^?*3@?)t;1/[/6t0>h=,!fJMtK9@I^OC$r/XDf2A.hVJNI7X("u'gNV]8/;'+IbWcLEgMPD0rsSg!W@k&&#T7l2P4il](jh9[Crs:K3_!Y(p85uiHQ7]:W1hhar3[u[<_Cm13?WqZF8<NVTAH$N/KO=CJ'UkKp?9YHWm`RhB%_:_Wo^8jc;9k/7[!d=euk.IPu2<AU,"*>;F17LH:d,Uoc]Ngil_2Vp.;/-Jp@QBfS,Hric("9]NlJ+&9P`LJuoYlFfqVTTA5"5>(qU0e\Dkn5M(9-qD9]WUDrhqcJ5JM.DoTg;h#j[C=%j+t23A/#IP0gHr1B4=CqD9,rqu/<`0;R1G2MGP8NEXL-a4f"<O18,gm$H6mb6d*R4eGlIb@bfWRL,bE=Z]16a7R#Xp/%&i".hc'$B13AcHk1C"u)V,M<@k1K:\jtM(l7VN!C,]2H]ao[dMYV:kiCbTC.`!uVqck[%8iP<nJlSV8m+oFhO7cTX*f$ppJ#7Pk'Xdp`?aK5!(T76>)t4MGZ%L%<'.j,CpeDZo,k)>a/ItXbe?0H01Ko%L:"+4a!$&mq!!no-QWhq05a`]g\N'okeGfN#GlIc[@t/+JgWJDJn7#(?')[5;%s+[s+RrJ(0/fm)<KHP!^&loD>?Z9d9S);2aTON5`Ng%nFK9Jm0?`O+';&g"VhqH@36W@+4AH&ZW2[e]o@B`d`iV3^HsF"0]"F6?^7-D.S;TM0Yk4sA#E!59d)UJo18uVfa\$;cSOm/RQ^T\@G)"''bnQ%Z!.B.QOcJ5kj1fnDq'55mMC>,!MC>,!MC>,!MC>,!MC>,!U7,&5-^n(8N]#\]`%%c?/Bl-8<",'<i!bgg94+!7n6&!0K2DN3IpbL#*]3BRl*0]UN:d!3KcUT4M28dKf=iHOHp@S5A?'j]c@r0$hWlng\KBI-=U7DUl+pdXj7/LA%1@N!Ag36RPA9>S[7J3'Y0]pbI?Y[s*16Y8/AD@Ha&dG\KYuBZ:V0T*b'^88;WNH$RTlE,hu"8ErX,"O+55?+c\R'`?\CTi\[;='^)$$YH7l/MA]2qC`P3C,;k%W6<n3ag\LtNFTP@;.BmL8U+d1.Ak18]rShf\JOFBNFcTeak`F%>Wa5?BiIMD#^f6<NaI(K=XMYp&IhaO=842=#n[$!;r]NaDjIcUHs8("D8M9aeXYN=MQVV9j2aKa?O,W@XjYhHuPjmC!E'Gg6,QKIW+k!5%uVjE]rM;:I-\`B&Ca"57qfgkB\rr<2u]O)"j=8#=l\!t8R?AkZT9B*/BV=>J@-rXLC8&UH'l&b4W+2J>3f[tr-IN@[^&D<OcP']i=8pgMDaHkl-a7NCjXp]lf=r9@Q.7)FX3C]i6:.d^rQg5Lbl1.H[G<1uaA"p#1]c&VEV["&g.d!.ZB:`Vu@pU4bBpn*CauBg1/#?9gUPd*$C"K>:bMcc(S9"P6#D^4VELECR8oG5k_cEa^@^0$:08TW.BA_@rp3$.EiY]<mn8$sBX8@,=@^<3iWVfB`L#Lj,r$p.f'V,k<n5$m653)"=3`Wi.Mbb#]gK0R#ktG[\nS9l`qs.,K(]4u&_Ra5_BHIA[49M@t'?i:_L#3/b)e_.\d)MJ.Y*7hX-<m3E<"5#./^(@,`LdQgV&tGA$2ahnJ&=/c&GUD,I3ZW*%\4#I_eH"%`s^2?`fV4@l\.WEI=!H:1L49X/CGS4irFBK:"dT)-`2,Q:e+l!7=I[_j!rTa'<(DBEH1/Y<QlpoX^7fAU\8Z+$n`Vp-pnN#N%)^oY'jk7X+u:0p1]'>c[8=D9WK7=%W<rWaC-i?K.`[h(E*uf8or7`04<4]Z+60/.bL'o9A*0qiu!7^>5nTCY8-A)Q_#2lp[Fs:#K>G2kBhVm_k.^Y%esKRFu's@p7kmAoXtdSg*OsiEa$dcJk4r+=>nTmn\:*6@:+aR'BN#HJ$@5+ifAXTZqlH7(@``*q`JW-._O<54@?)^nf-Z&p^?V$na(BM,K13D]XhI$4A-P.AHnd'lCecka7cM0;LZXc!"2#*rr<D`=EoTnZI-=#Deh$(,9B%tXQ#:GdI..Og!].fd3R7!P0?ti::c^bA7fM&R6ntZP+RV]%=D[T8)d$prZ-6t(Xfs#i8%OGH]'m*0]?.eoSmoa\5JJ@(Uj>DB%1WENKrLHg0`*XYkm2sc=gesF25=tfXc'#`8K,<Qo`T<=/gkCk=62@DXa["$<W+aM5Mj\rr<2^bVtB-$YD@*REfk\Nqb[X>#]Hcb^[%sh(%p%7u+('f,p5hOMe'I_UPEC`F[]D64`AL1i(NH\_lmG+8@9cZhn>32=VL!^Q(%WL&4aF">T+h37I?UQVZ,DA)[;F%[1hk/$1Sd3+]>Gi70Ds[%A0!C7?bs=B=Nd,JI9RrPYo!RmQYXh[P$!Ia2<i;?$V+U`(>2r!2aV_8!>NmA1kj5M2Y!Vo(0EP$<0H_S6q1Rl$!NDY6pOCJPl*Pg%j9K;;hs,@+VK)?/-fY$nuP\%B(g/\TXg>X9j$<_-h^AVro!nudqQ&&!?D(1kuLH%Nun.=GP4O7nc^<A%rmn[)jEj)EMEDgI&$8m%T?S,NU862T0-IpmS7`H8W%L+mn<3q!Xe;Pbi[M=S["HmI4:7Tc$Dnj=4JX[a+m@oO6h`SdaqKqVhA-_cJKjc@d*MC>,!MC>,!MC>,!MC>,!^R9$83Vqn6Iq8$$rmid@9tC4rj-&r^I&?2diQmM.N(h$I)(*%Y.H$SG*0a]X9f;^Prr<5frL<JPg(4/hoC2n^!5fQbl5hAK*N\LT)g&]=FI%9Q[*K'5l5&52L<e3_%sN:XK/HAK/YQ.+r6hbgD'C++U#A+&/2%Xs[AukcS8m'=.D&b9X=I,"D<R=nX\S8jUO1g"1Zs"kKksNok;7/JF/phqGt&/8P,7O2:+FAt\5Jl\:AhQ,f_uY9@h/oNpuh@brKfW$H0#ts6f[@HX,T_#^h@XCSL;Dq:9gkadXoQ9C0Gb>c'%2/cSFHar29K<^LIcTc/ESo13e^TN`"e3MOlZp\&D,S>[.7VRU6nVNr&bU7t@oJ-e[iK5Q-p[B+ql_Xl;c9T_&.oT*)`Q+2[K+Ig/(c9.\8%nE])C_nR7!)gN>\T1nahM_pE3;RS-05EgGlg.uQHA9kWT9-/&l^XZuUVQ8[XF5c;5[@[Y0_5VZL=R_Z4ohPs1(='5?hY;9o!)'`2d;GYG5ZqTh9pXL$OC6/2(k>0[msJ*#+qr./q3;ljX%#h?dB//AWCiY'8Z0k2Q0g1o/ln`iq2^7)$oTIL="pU%9+dH,'2K&IDg=i2UP,Hnl8EDW!*@#u8nk9Bg<(DX1Qn)E72/ha-gh(D4'N_FT?E]&I6ZYsT+:4(orj"_'^VrqMXsl,>OZ7:1+([,QG>ecBX9cCrSpAR?U.dj],ICm$98$:hZ6:r"6lEVQ2"M^!!TCm9q(iei.lqpE,Tk0&9sDWD\rIG*M/au_.amPW?K\=VSAQZRqYohhFP`sKHHoH8^rcMJ`OH*FX&bePGRX,l>nPG8O^8Xe98R@Lj^K2@&s&i`K(t\]nJSX&V?RW3dHB7>U2#OV.A;Mh-.0i9(&6BX$ie&_g`-KNtm%%rMKQ3?/bG5+9'KV(ZpGf<d]/$iR`jWi`C^b@RXj85/UOmb=`eqIT"p%+l,rfO75($qbm2Jn>B+52h,OJHoph/c2Qk\heS_!Q4dF8h8tqLPNkn&2>j1t_Oh&[q!7J/^)tHBQ?k`qnB^*bL9[a(??5<(hBDB3UZ!J`UC="h5OacX,]T,I+h&u4EXRA(*ZrfScnnHE7(39bqF6r_V8-(t09`<f6YRDD$/<"""=PX236rI+cQ(pfopdWM$=)lKRAZg=C/U<&[rnI1.8u^>2VNRX4q$S@9,B2ab],N#5H:g^1;[F(q5ihtGV!/E6WY!t(s:<!6et\+:UMYCCsbZdn>Gqe;+20!;+20!;+20!;+2X>*Cq8M"TU,Qe8-]/>78\3;7;)N:Xj6YZ+dQTM.X6.[(;6i\@.tF"XSnJ?/h//"^N"2JHUVr?gTZHH@EtcZ5/LFXF,Ejh;H$Oa_I</_eX]Y^DYp#ZoZ%$pd7GT6c:pIaJ9N1/O(L$faF+L_V^;:n8dE>%/3q$m(N9JHrBaA,H6_unTTn#]^Y';F#8l7H#7pjUM1Y?^Nj_;$H[X7Th7nl!0mfCbIDaYbrKEfbAe2khO'b%Qs;\[T/+>oVhTi4NB1sX]$]=Y_T]NN,g+oAj)O^"=5j"h,s5KW\#$gBKn^qK^$O9?dTX$,=$I7Gi3<4]n4\<GI_st]23/Z#-UZC+&(u0dQF2(=p_UjUNH5>VFmW(PD`(=G>4eaufu7_i`3OVkmc["Arg+gCn.RsK7Xn_D!8rGnn5\oa7H#m0I`$ZB2i/a*p"]Z*_r*2.r'@:WH<.eS9d,fELAId@GDN=XSJ#!XpfHiA*`fD?b9!!fa`1`'&puA&p\+C^!.rRHg0P<[?c-_Jp/T^dhh?M<Z+JF;]K+qhfpBYrSYao"FoYl2>k,Hj,FN[&ifP,g;bMNs==-=TBHWB[:X*`8rX!TE!!Nq`U0G5_fcT6B+t&7]AY6lhC%i4^N$X(#I/0G,3MMWO8E<L._^_E)7o2_B[4l^/INF5@`L-"dQ9KquW++t&GWN7scBKOl(l:9&N+5a>?I'9SSE1+B5C+!-S:;E:,8$2\'@$;N!LqZ`lRIq/%hY,fBMk:7<-#*rK2cJD;O#q:6F<_i6;8gF.)d:md&sMP<`T?6'fcC.#WWlF#cCbpPQ(Ucg%bOG!!T4o/`R@r^BB%"J(]b>(WClTf@l7GiFh\aN?a'Ln\;tY(2]/RX&%aHF$)W/dBlP8<LUg0ZC=^5M'7XSLM2[^V*C!T'6S5H*t:>.j8BY,rZq9(W9?.Jo3-At_Qau$NETPEW3*MFA%0%4-nU``GBYle[kAc/19s1j0%9U0AWp0<EO>4.(P'PQGt[GtN#"%">#cg7>r[189mp2`7cRXj.nQ^42NdkP(PqRgEf=%;Mo0-EI2iCt\;YPM<X0B,ke`#[f;e&^UIMq5@SqflS8biN<Lr(`8^4cK7.D(LoPY-$g:"cU/OmoQd.CN]NC-XpFUP/8D(MdU&Z*"/ib8aq;9'Rf=LN:)"*">@!$D4@[b'mm0C:Rcb?aY/KTaC6D$gs8Nr[j/&W1,GFQqn&NE110OpQ9u60Hb9E[YU<jL7ogm=/n9gKXB)rM&JhnCNV@bPqQt?Ou)/@h6KC*A^gHQ=m\K"3!<eTc@"spFs$[bOR3+eG0u(jcKqC$N6IlC[a^,rr<Z'cP-4nn3;^m,PYnEQJUoQ5k+cLV*SnqUCG.X[sHVrW//o.Y_-iee!!Y5=+'heGb@BPpP68-GslFXnISg8GHu4bKu2-#7gR6da[W;0m,_9G\Z[hu)!IOFDtlQ:Y8K%N-K[<q"m!1cljaY_B1Ab,SS,<LQl+kg1o2[DYumM'_bV4A/B_$cocZZ)*F^`_M*emh@3J3/5It4k8RL/_;tt;#lWa/9isdH=4@AX)/YMUP]]>Q_56L0<o%RJB&Q%&BCR;>&F<Pd0NLdJIL#+9=g\VpsS\G]Mi22"/^Pcs%YoaOli<>\,$Zm;*N-$(I_mYkNYVAF\(9$qDU<!p5Y00Jk().)]<Pbl9[,9SUp4(X.?VU=AnCHYUL0_MGd9#ESE%E9HNKYTajWEINftBN&(QPVT`b"qf2(MD/#D]K2dtE/'E/^&B7T"js*FgNFq465R^[$@Y0n(/4f*Q".3Q#*)_qBbX0#Ju6'i-g3TjJ[rXXR;jj(m%eateZU<[+@)>&]+l:)%BOhNXN(MCZ[nrLj,q_1n<9kJOXKJ?a@66C!StnZj[s@X8ReP'^i<>1,Slp]JGjXhTTJRJ^,;QRclV_jX?$X4l=?+.)@rf!]F,D&M->\=Rs';3top)i'V,(#uBoer&AAV)W2>g2VbNZb;RUT;,?1np8`;BP*ZM,'=i(iJ5J3Yqhi8nVhG>XA#G_=sVhY8hmuFY0fq&M]sr+7V,IpMO%.1+RL_j#EB*3L7_TiRWh?t=4AXmM?Xbl70$070@rn%]=p2TGFrK!8X@rI+$T,OOF4:e`K^l`N'\t:=O`ni3Zr#VSfb=nho%_nl'!3GrrBF`L]7?`^Or^,Ro'+bKO8$Sh7(CR&8A,1\[T3@[tr#KO5T>>X*'RC@doDCW9Z?^H%mCQ86l@*U6i)9c)&?14SHW_,su`ilQ+1Va?c*u)&u-jIIq!-"0.Lo0jg2,\&AmQ,R(*,0)S)sO,UiZ08b3*kW4HtVd4*<!#5D\p`%600[R31^%1iU2VRcBRb"NbTENb]Lq1rU`RF1UmNF<]S3C%@l"-mfq>H%'\u+L7n2MiUlVlD,05XIm)O9#k1TO!?N3+MIntXIRUqN"$.em`cV_i=L`_-V5H<nP_j\DpHCH4]rBt6_'E_9&uS(\jsn3i=khC-nO;t/u.B8cciCi>4Dhh9O-AN,4RH1AMc)ZHc]!jgd/PN!3BU$I/SU<'h;VW1EGaL87O(*W?WJc>]R#k?c8%DIto48oPYnO(4jBj8ZPoDBlJ%C$Js5UEnKP0:cB'R8Q)@>%1CD_5M<EQmLMO4Gt9T,U"-hi0ZdV(]UpM>mPa^*IB`(7NiLeR.9ZM0qJG/Mf_bl5,c3b42hHMi2?W-\<3]JdDQKj,)Fi<B.nkXnu6"bF\hu7qpp(N5)_1_B4J\._jE+f5,h!j8T+8*Z=IMYB?U9F`h10X)DFJ?eX;YVos?sH#"GK+bf>9DBW(7'T,)KVK\?VWpoJ31ORL\#BmG6+jMfeLBsieVh*$1=:@>=bH$S8/m.\ICILhoH^jN.'B:5Sfft:[%M6H5Pspf(IgfD<<oh_Mbk(aE3io5,boUQT%Sa>=[ZA_prO"k.)p91YfRIF3[>YEfN]DJOj,#.C&Qs^2:Hc@s36'>2!h%_-869bhH,d8hEIYemFSU"X!"@$r2XICu4F[n>CH,:9B%ZMtP\pR+WS5OWV*b;7oJcaj4o59SrNe_#J&C;*JBq"rCIA$^['ZJ#-njp;Y2;[GB]$5dm,tB`=!T=4<^.Du&TMk:*!!7](9Ym"S9g^t,GfJEfnD!//X?bF^mKQkY2J<G4LUQ*LrH:7\RsDWgX,)@;Nl'W:RU#dF6>#tIDf&\rrA&Q`W":?MNd,ZR&Z<I;K?`OK;WLcdns$)MJ:%8.t2\V5O_N7gG6oC(W=(pSt?b1E5cfJe+cSq%[ul3KJFg:8MAa':RhUa,Z%=[0EH*b]G^_L"W,atL9e8X-c.n1k*9I]W@Vs@TSY!j]-=tpOeVnnD6G/tnpoX0C\6XPfDIekSN[Ke_n*jOYN[ucM/BX@*rabhZ+*/Q)Cq:;-%\Q.kN.fd*gefspHm98#fM%LR:1R`OB$48mB0Ga7j(M>nkM",?cbEGiMVYqNEWab(WW%i$<NG(BP./WOmrnoN2#bX`gpgPCX\2b<E8-@75aMgrC_lcI*3su24AM;5DeSLPBd!h%ZO)BdoB<O"UR1>hL>%HnNJTjZsU]=)qm\B=7F0^iK=kc4\nl$28,ko]c9o,_Mb[O&FN[m40kXjSe#0&H2@a>Xtb"WDh?gS[K).0/)^M:+_E_r`e3@S2k1sA=a)bh,::"J(&lfLn4l1YCV&,O]Nb8%I`m$RM"D]_o1IWA9j?U9_u2AmdWK=SRN(Q%7`oR?/"92dBpGF&JnX25.28S8XLPFFiFe!3@aEag[JPH+5!Ja5nT"1)Z#:5nnE7gf:PoX@RXp^U*DJ@2:@)(7fs[76k&lJP@XWs=*./b:'E+Rd38lD1M]N7GAdU8NQ!Pa*kDXXlV^/+b$Eh*/Ni@e3W21=s`Y@Ysa[mr(d[/`^#N4H`ef-j4Q]/%n<eVE1en%_E(Gr(&3'-^FpGocpgJWWe9:&GEB)!,@!!Ku9+)C@Y_eh3&!qEonVC(?p!(G]4U@ZAq)*#WWc6f=UrrE$))<#hbp8+V`"H;),&T`AI5,g1%r`Ui+2;Qa,9;a2bac,\"g!+rWXFA7*!4CDhW;%Ps:Djc0>*L1dcRn6`WuQc"JSh6&#iK4PYDcE[!5Tt2Aj'HN:Q?JBp_Vm"&q97JnG`KH]LR2*?%%p2:FCi@T3KeRC-YWXks5u9/cc>eY&MZroWlEcUPIhWpd&1L7:*G6jut,$YnCn$3RPXn_`DL<nPGcfI35ggkG8XjqBOq_`tat\^Ct&2;Om!uiI;3u;s'.Sb-BUs2'kuRa]*@s\>J>d[^f`g&+,GX!!M3K:9eTnIt9fg?fKCmVRO()9(9%#J(aPm=4XO.XO16jrn"pSrgBTc>KLj-*#JI;Z"n#Y*`'-KdA3tU4r3q2p4rFBD5QW&cbfWBp3,qacb*pT/(F4k!#9lYRa6>/OXJU?3@t.>n?_(`&mN)Tib;F">mK%8'9A?i!WN-'?2jnV9mC\9nE5B&!,18C4q4_hJK!3UrYP)HK_1UqI%GE'h@Zur)h7tW/g`gp(3Wpr?_Q?bIPq$Apt;H3i]i(q!#.O)nM<Lq@kO\;Y7p.!,-t.VQ/;@K`9%g==]m'Yb0%lL),5Rb6S%0o2_H>40ib5Rjg:uFZCG6.JPJu*;QZ<e`a^LhVNbLMe1U,I&$eqh54G#,(]-#+D@+0k]!YTrc?P*LSn=2Nrm-hiH#F5_k$JoG<iSXrS75mdGh5jE*jH=pePs)"WYCZILuWKp5%a*#*3glMe<Eg9LX')To526D^\fjm>nRJmU4<S!U4=AtrrA*qO8@forekOk!%.^GNY%oZiUO\DO8_dB`Lls<L]2$)M#FCQA1kXWg>i1B:&b3fg:tbYj+$un%upShp0'X3J*Oo@*IbQX6Yd:*=g`W@#s1&Kqs6u>f2TKGf_g6<YMeIlVmjlU\nQr:gJ9?3G.Y/bn,7BY_6'Z:n8n<*_P7&1`QIt$SZ&Oo4rs.okQ(V_ldt;Ar#F(>IrE)V.V"F$q^m%lmV("(rr@tHnM`EQEM!11SUQWL_6)Vc7mCbGq^Gk_5P6#d"b(Ik!5ZnZ!:kWS$pX+0Hn53sX#K$TG3**%FL,'#l?N&P[on.]cMQL#f;n?.ad[e%XNJ<E-SJgSNm)V;d:p%I9bkF7r=d)[^PR)K*<X3**i7jJHW694oXtc$dVa2U@oAjAP';Yu9[hq0]tK[SMFgKBcq>aQ)nt..8F-1Xn8%%(J@*kX4Ep:ei]i%%=XT6ZC>LQ3#E$/KVDZ;fGuis%ehi:(:HhZANY=VN,R%3o$N#b\#n*eIq@EK<U\7L7HpOdsH7"QJGgF=Wl8l)UI;,SC<`#ED4u/*D]YD4I)`qSEhC.E0jZq9WBV`6g5MP)n'OUQjrK+/]!+QPn)U%+N`BT!h+L9RI(AQ'Cd/6$CMgQu5%9m!*:8+E<>53!]6IK]=Dsul>J$u/WQIb'De=-aV0'&<8i+Z9W\:][D3AtZ=AX%5X\G0R-:/e,aVC.snWJP^0N%*_d;Jenr>En'@(q1ipO-@Y0>7[7c)4"i81kl43#'F>m<?[->l7.$LiZdJFR$q#"bhK"XKUeTt@eDs;rrC]pp@/$T5@K%tRNIMQ%X?T/:CBIfg0AmKiD&a<4T5KRer$d]g[s;h8!qP>VeS$B#$W['9M8YdcK/GXSnh>lg0aKSrLU_^pdb%@p`8kEj1g-jP"uC3;t+seiuJkH+P^2UCDLmE[@PD<)k/:F93[&l'p^3N<96XG6`*7d)jB@`7jId6#F!4g;p"3r-O.?5rrE$(Kk%+8J&*d&ARh_HZ[^pS>?B:B?pTuEebi@JC)SY.k9&pYl.6^>DFYa@-Jt.)o%keVQmcA5m*_FSFKr-k]HpaC;2"HrV*_"_e;R@,8sJES^M>.?aYsZ0X6Vl!bd!>NA$X7BC=L)?#96Gt:!.FK<Y_<"q`.6idY1fFhMbedS.sD0dJj1KT=3fXTA(miWFCu&IQi-P-Zho4rr@qBpQA(h3<85*\]oUnrrDP(&uaC]!,NuM<%VtVV-@D_cIMG5ahSe>8]P:9Xa`@'[bq"S:[M$Z!+kWYBE"^9[J_"n_5r.W)?$d(l\E@'jl0J<pnbau*kniVa!P$(]oH@b^=V%S\g-At9u$AiJ,,IE?\M2%g@(q6FOJaFqFCPc"m,aaJq\IDp+c=Wi;We4^BO:5r&sS*j5'F8V.mY!Yor<Q"7VV-DehPMY%ap#/5b_:Md=;tkgr_Pl";MOh'?i"0U;VD(-`FVho+H,f0!L%:Ddl0`Z<e)?1BS)]LAr.XD"Hcc[2YVg84`2TU'k9SjaYpC\nS@!/$k-BE%sf?7GA6^b=CX_ceYcZf%I1(S3&EVo3AO'U!t@7;TV1\o$#LY?o$^G?lua;73p_mr->VI6ERr>tU#p)'?n[LAXQFGXKCf(Q3YmX'Y!R,k0BgVec8Qf/2_SX5,:.d]T=Ye$U,d#\4TPh*Dar*F:ZRZ;c)%PfJP=>TH!H_r@n^Tfcn3ig)4';0=*iSP#$@6F>1+84#03Pa!a=e#;Dnm[DnKCdp%d&llhYV-.3qnAG3*Qb9</1P@,Z]a2l03R-&r@d5R]:7?fTZTZ(_GO0bT<r<lb>?L[,q_rn5n.(>Ak425V`*NVtf1*6W$=0ef2/PMt6VGmj<:=h*h:aom8PiE;YPTZEa$!)hJbW%"T@oFJ4tuIr`P3L>cbo_pn@$*i4_jjd^U9D3^5=qSmq'sQ_/Z15p8L6NX2h0ZFesMHejmH_Rb;4TrP&%Crr<9MIaXf%d<*,0rm@>D4raELd&j$sb>n'9R%(p`1Y(h(;.c.kZ";Ft)ldXn._3KDDhkE,OaqS*6S\O]rr@XqHtNBYJjb(=5IC-<n`Sh#_d+qRBC0uBphRhAoDCc&D$PaVelQ10dQMANdWDTTl;%QXT3]q<qg5AbXCs#N]N.(RVtRX_O"sr*RILK.QXFh%38qs/V]$;@/65t\AiY&tUF9"9eJbg.[0Sca8ogIO-oc8$e)l[9B+Eu_Si[,SNPqiV7p:hQKZpED6S_W9-r.P-CJq2OFlsJ\=N6l[P+%].c):LAGUH)61`ltt;a^'Z]mJb@G=M)aMkt2q-e)Y7MZ3[p>.1!!g0/5Pjn)SN>M6u>X'S.VrQKGH6#;`\,/F[b"c[hsC9V(O"!$6Z7i:mYY(%ZkYNM6)G:@7p8lBh).e8h"m$3`*aeY**8L:Y?(DN*CQ.eeTgMPUo/%;R&>J4AA6Ad1e0VXFQ!Xl4,p:1,&XqQ<K[]f7Dptu)O-,\bmrK`M&?i%">7pkQuFoMF_f,s\&DuCI%r_>Zt,`$heptqKK?hh;V(:qS>rb<7*q"rlr[JK'?$+r`OALIK'K%_u0o(NgN1\(JF(9QqD*EJH3(TU2!6OL#t>$k'22a=JF!;JF`r^c5>>Q4\7/)f[jURiU3c9M(aTDhX\iJ7B#c\6lAB)GB,d@^1k[Rf<6n*O3he^+.EYD8OuG6.^D'^(8_/@f->lX-0sn8h/irP(N5(6UNS!/t(MY70]or^q+Ic>Z>7S7gFuW34pVr_Abm])>P]<pP76Aa7k'pX7X+oWcH+J'"b6r388/IS"$j#2A]?VgYYtVt7l_@M'iR=)o$"[u+n_G38odXjQ<TlbmJ]NcBW3aXsbQ29hu9<tOH40C<XomNV6-/<O8Z*79TI7eK1_"X#N-Jbi+@!!IYVe$W!H.>R8TVeR"@3gG]VNP%lm2HOm&hV1f)nDhMdTUOSGQ5K`rM'@cfKlgC$14h`<J)KD&fW.N+iQoE6gC*!'Ke2l.T82%'GQZs1d'UE34)''_YM?1'CW%-QZAp5"d5C.uR3g)Bb-5XM8%ClcYI2Dj*Zm#o%'q+\LN&Pl6.MlmF,Er_3RjlpNCnSUVse1k78MVfF%(++dln]O_t]b>LU0,7%>[o:>?t1.K8hm4eYK1nQ!2P7Uu<[i<f:p=h4YaMk?OOTo=+`""Q]N<m_<[ig1/%8"2EeSd!Q4p`FCibHt.N%?AQ6[WH^d"\[OWNS)Bi!@i\LdF2KCkN6sqgff[uinhODTV#LEfT8.jqn@-9<!VfUP[t41@>mJ4F#LIRr$i"L,ZA_4fVWc_kS/+!uYf<=c/9!qD^r%m=lGQd";>_"#dGln5oA\rNmu<qK[:o4$)Z2Pa-&7=6=[(8D\%FW&[e!#="E#,P03PT+o]u:.+eY@8;^?@grrAspm!\b.GRsMerLNp-r."Kk3\H]XI23c]91EX_k.gE#M(O7enHXd@A@@e7LJlNB.-J"01?U'j8qj%*)#ea=Sf9N[fk)RPPk(Zs:))___-sUN9:g90O1t,uXJs?\gea7qX]bKJKijkMd`:=G_*^%a[451A??_7BVR]\`hn/5)hqCOMhWKki4V@[/^UE%tSkn`Nrr?X!ib/7d\$c/QJ&/49neqD15O4*AcfO.irc15?aW_h8:[LseYl[*QHqXZ"MPM?h8T/p,62(0,oPOU.#-jG1BD01Lb4rF?=e1K^<UhL?+Ri,fit_67<uK&0X%C0"4:Y'6EKX,l3HA/;>?@O_7tb_34]1@$hIE-jS6OFEBmg\um<*nWp<W^FM>mPZ)YbKQ$2A;pQ\W:/GRf4\qL?Nb!#")^B>ct:ZA22hRLb/(p4[m$ibQ4\;c^0Qj0L[FG1N*Vj4gH5,aU2PE3mE]rrA7+rrDO\chJbMr"Oo^\bMTi(4:&2pd_N&5dmZM^B86)IFXpMX3*Qh/N'_c4u3gdrZ%BaG00CT!du9;:FLJsIWPMhK(XT/rrBO+`;]hk6X9SdFKYr*Ht<!aVKc$-nBZ^Y^P8eflM`((EMD^F>[D0,pk-B@B"jR*93/R5]t<eNLX)Z5G+W>?6J"e%3/mk;bO1Xsl[BDs@F__j>?^N_M=e>b-nk5Yh*])Kon;j,M'@uB#qWIi,Y8]N_7Tiek)HSNnMjm1B[t2n36[G>/)[aZ;lMlj>THpUE:T7T.4d))0<!U=)B>uGe0."icI8&B?U;X.9j3R&Nksn+4[U6S6?/oVVi.B64s`ZJ0pX<rNe4Tt,(.ju)je/DGNIEU!3JKT;4mV.VoKnS-`;]84soS:4Rc^s5D0rYM<oU;D;pNn)nul-RnhN,=KZ5`in"#VIm*-i%H#iNKO&:Q`i+K-,fpe489TG[pcle_,kta+cOKeDn8>:RTm4&^3o6Femg\S$FNk!OT<)^-.=Z+q&u-lYZn2uLEg"BeO[uR6_"Ku(^-6p\poC8oB\sPR1AjW:Kqdfj@f&gHHu%ao='a93ld$lZ`QasErR?otE$0EL'*L(dE_*4q*J+'VrX&8t!!N2oeba^k@IWH5r"%b79&&<"Qf:.S^+=Y1^TtJ\n>D!<0b)Vk)SLj%W:nPOWVEr!e+^hTkVhkW?!Kp`h8sB/`H?A0hU/<YbHe.3i[esX'06`DrG*2V%g,:u)Gs*`AO=&EGug^SVeT%m.SatgX5\U0<h0ZF25M?6bH\E!<cgO/KQZ=5Y>5_,SP"dQ.'I2W%b"1Ke=d/ioB@)VoTT%hj'09T*sR0,HpbZ&D6LTtnAi=N1qg=kCq%(I:PEnMEon(UITWJ^OVa4uN_`U=Q-X\R_jYe%r&*Hj$0]t+Bqoo_6IL6CUfsDl/[Wb<_V\):mF=M<=D]WuMug^%`u(t6^R$F[3ji6MUJ=g(b+)A=/NHk4-neR,5sI2U<RX]"l,HoL0S5MFnkk:1]ld+WWm@V@72;5!72/Q$F)CJZh=l<+h8XnLV`]1`4En!PNtH*@n4d,*LCsH.nNZC?!:YO69>k0L[6FfNpk&7uf7tt3S&PC-n<E3A%]srTT[IA\>@FX:?dF/#aBh(Z8UDZr-*-\SjC[-(!(ek:!$%2ifO+a*I5,)fRQnXW)/<NaT>JnTG_b8G]6trs[Jmk=Gb;ltqBaA3rr<=*Xmo3,QW*0qNMM\k9cE%_e0)><dL9gnbVKG4Jj#'m&H1\OLr<`h?OKW'_r@7+<G5?l1"99)C%F;VS0XVhUDG2PDKUHSGk3o?o%E!#ACq;;/u<rZ5K-R#N6A86(j['[(E(*">e2eX)KV(:;u9c:;RIp_euMRS3g>kp(:/eR^CR"9S,N]gbJX>[$[re7(W"u>[4dF6(8^&<)h.k_;bbX20+_jS(kU"EeF0QILi)N+Sh#4m+0dr.m3E=LM=uAdRljpF1\Mg`q=-74K?!ok!YaSEWBRj7_X.`ja+un[htXt&&$&!sgtJZ[/A<:_kW4F)G4td_e`)_R-C8Rn29WY;L3ZQ"nA!o5`\3!P[Ela_"R6nS\)T,nIKAp[`@3tbGj]h<RVa:er[D\.CEJ8e,1L.K!1Uigfe/WMl^P=i[V4)mWuptHLj@U*Cd'4k2ra"SoInn<iEts_n>c(_potUBnSdB)O6j5JF7t'hn>;n[?!MWh`1@q<7/%KjVI&+08#khCG[BcT)Y.n^9ge'E^6KZI-W7W]=R*:K$O!^KnUFi0.&Bf#S<bLDlc0YCkg?45;uQW(29B#N<M_,A5!+f"Q8GoBf#_EedX4oJa`6!-Z3n.N3`Ekt*/%abe#A&!P\(b&Mp*tLd**Yk^uB>o>rl,K!]-DY1Vm#^r=d5$Y[>8nMDc6!(&a9&IgUR'd&o6q^CFNDA+ipPo^<FkT1QSA%or-)L2O)7#dkVB*EqR,Rp4>8fu\)V)"ZH3TWRi>`ZNoii$>n#NP5^H7eh8hhh\_PAqQfBT+F+L@IScb*tWfSBq]d'h!03$G`pq(:=O.?KL]_Ic#7lE\g_K'jRXSL-Lj<Rr(1o*G^Lt1S2q.T-\XD'g$doILT#!fB-V,6Ra.VdcOS94Vb_HEb=g$GD=2%k(AXCI?,53%3dBuLfBl93!496&A)e)O)MXO9.t(LX^VaaWL[f#0?Wsf+cD./uRd`@FLUC9'D/AQW/`^>S/CQt1'K6h/mr8r!2R[S&K#LLr;RL8eW3Y\jW7A)?<Ki,^j'bMUVc$-_kc/W]lZ0fjb#K+>@0ijHN-9Qg).a5q@Hg\1o't!]+GDqaK(+u-4HfrdG`:J@CBZiP",=h='8Um\^Y78Wd%SX<R_qn/.h_&5\W>^9r"Eu-07t'EBC,B^.ot-u4mLW;2oCR@2rP:%B"$3-X`U&GB&Y?!g/Lu7?Y?^N\Ok6?.&=>aM61?H3C*c2Ns4hkZd6FZ&pVITYJYhnBO;9&4?;>dpt=Y&%sTbE<k9?(qCTtAqCL@+IqHZ:@s+kG-A^$l$H;_<+LQpYON9r1GM`fk;;lGG+0cp+Ift-_pk.QF07_n8^@ADF?N]R3C_1tjFR_SN[@Jhdo@iE64dDT*p7L=b<p'4bq^GP`o^E?^AkdgM^(Z.=rr<tO,_"*iZj!qV:E9-K_4%k"g3sWY1J@9#OSTcPr)'ZOh=uV0^XOFrd$B$j$OGh.[aT';dmlRob<&3"<P^1oUJd@LZc;!E(hbI"-ge1];-;OTPq!VC:7SB7S=K)4X&]]EV[!q!mGO1+gBGTbil'ep1<T)c1Mg%cEuTk-L<4G8'f^OX_-#LQ50'a(E&8t0SeHon@C#n5hd\*:V)j^R]EN'#@469p2hM&0i1;#,4r8"l[-N)Sp`lha7cH"L`4dblDhriYpge.0h!&k)g?lni\!gioNN.9o8CJI18a`.sQ)+!cRCj"!F7qNe&b*uZT,2qgHn;YoGDACr%8PYKnE$"Rhh7tAih%$%<`/.CBkMkQrr<O2`McKgZ<1j2(hSeB,/`bE^M3M5iRdFSnU5L4L0bG?XC"9g$h60mh@/rKm/u<A8cI&9fm)hug-WU3(Xoa:!1)KZa-Ti@*k:_c<oG6Gd^9TC6f,mpa75e>rr=-S?aB.e@;@6CIO\H*p^?)q[As#%+,7KN>Mk5X&^k4"n_(D$[&krohCEl-]<\nGSMgjK`kjo)4\H*6Y:.b#Q89+JVCb]#*a%[L2"6U#N9#\+b-Q`"9,!%p/d]GK\o')[e%^fBNVMZEK:Y:>_Y?6rV@SBUMSs!hYpVP@pjqTj,n+*=!gG0TALeq`$q3]`Y6j3$RUL4*Y+?R^`2]H)?guX=%c[8!j8T+:])Mbb4t-1r_Oh=4[@:ME2Y_(ID[Pd=0]$V:jO&(_B%#Dn>)aRkMJ'4-#i1/M"8o(<r[`:9p(-rQU\lV32oM>@575+QfR.ko2#dOdp_Ukm*WXTq45F+<e[2s5>1kO9\8@tjlp8&.mR3o>4NJn+_'E_;.Qff3hsc_T8,\HtBQ"7Q@nlotr)r"`9e=rMHu\YP^7!trj)ojK:%g4KgK7Za-D=pf*Lk;3ok>P:Z+jdgM5l$NT+ZSeHuAnQ4?qbB&*gaPm/=&6C!ci.8RiHU>flJJ`\I6Y>dj/TQQ..OFrge<g?<:;d"17l)X#g+@8JRS\Zki[2&_`k$r)*R+r.A1OcCnjV(+HP&(V@n@9H>_B3%lOq3tAEAP,2$EJsHDHuHueNWN1c]H7\r=M1OUqSk9.7-`))S*'WS/?2_5Kr7LNYo-gU[Y?,h2sTpe>dh;L=cO\q^e58CT9@+]6iIB2nE8d^^)F6SK5[OTf9r[8D5=Z-oAe..c)Y#]g5L29T!b>-3f;fbWT\MlYAPW9Coend7(B^LQ7/UsrrA`RYO+LB"5kf+h[;P$i#`cPSeKL.*H/lF*r&=rIpLU3?\`qtM!\DDdcL!^^P-d9CS=IFC9lWQ,7E=m;UWN'&o+n7]H?-K^Y@AuQ],dg*E$e_Bg2X4/*P]a]bR'>UtFtdT8<C_Ff4Ku2dgnc?<tBaFX=CIGK>le<"KA>R"&i[42cFe`QoWN_r4,'Dq\.++!,Rl5>BRR-fZk7p,XjaIM.$4\C*4/D;hksLSj>Lc_Y=K<\hab?/=)4B5)d(BJ(p>/fI(8oSTQ8e\Y4f?SKGJi+%R^`+G:8e#-R,2#X2O=u3!ASN'5?E.mLTk)?30dS5jmBDbcI=:G30*Ca0p0C8ZkQ:m!u%M4U.7OopaQ/V9$Xp1I8@VB9Aq!;<K%tgWI*Er]#Y-=2T@<']=.oD9Zf3K=r[F[7[4'/[B23t4OCT,rDf(3(hD6I?-jo[KKb"$Gi09n$_OA?j;7/9Da7oH*[\?C\4igDnHi>Far"hh[0AFR<jr[WT=&RcK4)c!_VC-+,Ea]i?+9useGb:&;QM;8tfm;(hK77)$PZVcsM[$9+*VNn$[VQ>tZ8LZ!WQ-\8?FerFOL93GbK^.Ocok+W=h&<Mg>WiG"NEQfjF=Ka[A>_`CWp%]"PH-o\bfV?.T]le3U4<f6JiuC?ES&ud5.)2kUlI0^Sf$M&?i\M9:JMEs0f9XPfD_-41-[ETEVL32p$>2XpmMsP]5Rrj,^SO'5,5+'-T*1a4b'C/J*%`^>40YmI_0\pqRIP7(k[Ck,bJC'+0KQPHfm5W?O*H(f,2R"rr<OM;UI`XUo_=(YFWGSf:`5$iBYEg3B8I\j.>&dl1kPin-D!6a&9sMY&j67BVX_g3dTPqQu]="g:DHFl!'l_Z<^YBY?!J4"onYnguJ"lO$QGo"34`GW>tjjJ,NpLbtCJegL.MLgJ?::95M3OLf]Or>k2iTm>c2k%Xn:i=s-AO(`oKEF.DinHNVb-#96^M;V+unn(mt0EJr[&o[PS]p?p].D=66?o"\X'@?.61l-o]Z&2D005QrO$94ZuYfc9Pe8`8M<H1f8:B7Wt.7GY(hYLR=\^A`P-U%5D,qmC@RbGS>_U5C?9;+20"s4I~>endstream
-endobj
-9 0 obj
-<<
-/BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 115 /Length 7915 /Subtype /Image 
-  /Type /XObject /Width 436
->>
-stream
-Gb"/l:M:bMQH$>s?0G!M<hlct$$[[!1QY<a!jctanM2%r0f3#AM)Ukt@[PMu+`SXCJQXu@"e,(XBcGJWaCBs8H8=,j@h``mlu&%)H/,2#@4/@O]_V6t7V@bMXf>Ikkrn:aqL0.<WW(\aFmIU[kF?nbhSHuE@uN.^(h8LZ`Y`3E0ub&?N%r<h@uN.^(h8LZ`Y`3E0ub&?N%r>>Vi=3-*o4R1_rl4bSDS_hn]_;OY4'%#j^S[6=O1%A\b=:cs*=+O6"ejf@qL>b&@k1):1!cLQB`t]/U:9$3"!(#:)[W6)N[?t9tD^/]5[Wj.`Zk$45YLZ(Y5gI"Vm:c=U6AS8gG#'K>'*NN0se_%"2VO$k^1p9KnI\*V?S_8UdG,aQ_3\D2^2*!i&N<_WeYINF"WNBn\C`4R"sHJnAcF^Z-Xb9/<!!BVn.Z`gA+Z[DF>LLaC`_-itj*m$VmSABN(BOdTO60uiPl<)/V/TnaXLg#!("6A>Mdk5()I87Tj`U=PM7,dCCkrddI\N]89g,_A&*CGa%ur_,s"-ak0OgjU(m2TO,8@Z<+>&,Ode7SA4mO?LL34MU.MUG:oH^oeX"%TKY#geJl'ATRu,%d]g[Ld5,bNA1Z)+*2FR2X!D(.@hHZ)&cM^4;q]>KTX,2`@mn3eT(J2?asru1rel@h9@Rnjue%^9MX(uj/*](bWaB^1%nR8p=\<ZhL(j*GOOtdlqB@=BXk-6GO.'(b`k"o*9fa6L)V'NB@!/4q>)&NNZC3-o]Y;oi_Q0An[#hIH1(JE?[VC^M%cd_TDn2`caL9jVNP@JfC+1QDW/U&ktm01g01=7X>3JfX&lL-XK9)(_@$`=Slthcj+:$@iA\A#/M3Z[kK]Vc<;1V\C7=tnVEJ^)b[/*q`8[duf#$'OO5V4VCm^$PL]"qgA.>ErlK[Zf`.oF`Gj<eXf3We5dh*O^4f+A?=C,<G.j"Fk/k6q/r6;W(AhRNsT"/0^rb?A_A!ksBolX5/WlSP+7`5j6H"9a6XmEsaR$stJ7$9t-\5C>("-Nrbb*B_ff(76ZA;kdH_3IJZ$>U2EWJ.VIn?&fEbWi'NZGpf.n_Us+'BFhA&4o!".3sDj><MOLY%kFO`a*nL0b]'A2NIN3(l`CLLm0JC/LdiY.c.g`F"4^e%mqLC0H_`97tF/har"X.7<AJD.gr,W9c-Zu4tR<Akg?0XMGqh?_A`qF#k%oQZ'=.CUG6@3cooUQ\p:k@)J`2Zc)FX>Ufo9!/!G8*IG!E5eqjss='g0KXU4m]K5]IA5hM4>q2@@PDJinr:WqB+4$,O"\ZrCo`AH?-G"b(!K)B]INt:3ijia"Fp/I]3(9clEDa+-lgpqJ^4iJtF19@U[Fd/J3"Ac?U*1*.m)]_f[)"Dbuq:XqQ^f_A#6lp-/qt'd2pV1tKdatU$pY@KHk4;4`SnK`kNt364KfC1eqKH^jM_rbO4fa'XF.I^WNLi_('+FR5Va_C](V2=rIRasQh8R@Pf7k\eK1ORs@'3dRk:(#9&^ER@aik&@T@MKBK?hOOL8GfdV(Xp[NVs]hlH]6;S`*hD;9j<tp#<*[Dd>Krai9g0#%V3or&cYJD7k5i/r@M>$<$t6$sO4p>[Cb)R1omh<<#nC65pLt>u#K=OR^62'.6Nh40tO435r55_5l`jZl>j$Vb`pKk_qVq+;\la,;+.0Qr17*.rP@rorD/t8fm;q)>*i60:hn$J,_S=8Bf0O=L<&X-R^OQ0d6gHPSA'7Tb(DGHF@GAO?at)@91>X[\AaONum*pU/Mc^U1+R%;6V<7@<McFOCI<[0T6=fg8N6IN]%,_#90is+5:Dj82H0+6//poT2<R:\2r`)r7;1Z1+k8:!\Dd'G>lmHDTrELJN@;*I+tc9NK+q1n!?.A*MP[Jg).5r4.S_H>1(oO)o9PJH_nLmA"9^$cl^1o]cV$RohU(JL,T%SkC;A;O,=S:=#Tr=[8F6FRV7/mDZQFSFfH8(55VF!5t$-T^/A%$8hc?nc-)sQ5Y4R`o$/Xu@to9O@NUc]M_Zaa&"S$FMX8OL"$=/'>u'G?:Z>VGW#>Kn!\%U+W,"S&I[O(hGnUF;kb16=)k2jMpO!eXGUmS[ngV*0fSrO9c[6)fB&o?bW[NW.I11jq+hE%PU_gsVgCoA2KqQ<njOF$h+tfC8@t0C"q!mCLQ/?rg#43j,*WOhWWKW:jhDA5'O6skKC8QTS7rhMb<d\Yh;=[gNf5oSJ?#/K;d%.g.7(nt0RJP/aaSLu%mKh,Zd_p&]=K!JC_QH\W)N7-Kj*F$.Wh;b9)#NNZk7-'W<62*#6'HF:#<]@jk9XUd$sTP=Ed2Rpo7=K*Fefof5TKWRoghU),njJ$aJlRI=$^^a(SrLM<2GkRMq"u&XXZ@<F]<;PcAb.k\P`>pqAcR,f5@nd'Sg<18fek.(I@+MB9uBU]?fH+2p,1D)9&FUTgU*;S5D::,.bA4;Mpf-UP)W\ght6oaO37OaCoDe-G%I?d]L`3c\"R7U\;@;FQDm\^]2>`lPtr/;eol$W+;_tH)T..!+F"@8@#--XGAeNs2q7"1cr'aYko9GjYlFcd#H*^Cu-Wn,sQ_(oAcn_8;m-%!9TpufDB!.)CPtfq96"K8s6<fr8JW+%C/R;AQe0)A5cs/1FXKth$IrB.tu9Ig*gg^)<3t-QO?Y0=^a#MF'@\0GU^^7UeFalOX=j'=(C``'R3tqhd70GD,d3?Dd?PXT</<=NgckIY'ej0K*L`r<iSdM7Q#p6p)/S3E3ANN+GhioOiNBhb,917W3nA3H**5"W+*sMV+TpKDi39$d2#YnD_O"*,DXbXF`UjG,pZ?n+=i-[g-0VA2Wg>ZCDM[V%12We92JPpS4b'A<^#n?0O.fsJl=^d'%pd(Ghl3#'Q;sUZbLYhD%%pI:9?4+[ZW@6G9[:B8/l]T$R*sZ+In\>iPP1$l-7))%Ym@qZ*_IV<QIVPPTF%C,DFGIXs^MqR_eD'?6'MfA",p^.C77P)!Is#gF.!qr=><VP".(F"3FkFqJ2jLk!=o=&li3Jo)<<t1oH-cld:ouV-GT!:a,i'&>!..SHu'tWR35\jce<7lp>H-<=MpS9^1`hnX)t]$Mb.3E\M<c@5iW3YLecVS73q+Y"WN(]Vi`hiRDmCCMf<l37ntr[aq(ZdZ]ukOAtn/jmo0I82\L(6C6H+FiedOXc7lYjr;L[e@k1H3<oU]1o=dQU/uuT[#q3YXQPJGZr'@?oRoiu`mr)']Am":@hBtcrfohl=LI(?RPgs0'k2[Xd_]lM2'ZV1dBM-T:tg_ba$\[-Y!tWQ\l9N1MRc<]WSnQ._W/m+lp,=.9PC2;/_TOaffQRGd;C33XJ$WD*4afEV5O:paoM=jmH1h&Sct=Jn03r?gi7rV/aBpriD;J--a=-m*A#T^V-&d/SP;U*aTKXk+8Tb_D7&o_=3&:Bg6_tF]M5]\W\Wq9NQOW9<Dqd5j\W5&/9d7+ffYG'5UWRk+5&Y&B@2R7BEsbcA?F>H>KnQ(<E'r@P:TOo.CUjY\cq._/JktqF1eu<2\rh;Ke-)9dmf!]#A0a%h8kl@X8F8Rq5U:SXMH)43d)te=h!Oo<@H`+Q*YM36H`q(MsdQ?/omo2l3PWTUoq#I@<4XjX_8^l$pTp^D.LJA4HR5KTt`Lc21aq%@u0J%$&-;/I3Z/T:9?qF8[1jaNZK^)Xe]5bP(bf7`l?<);@dfBL@",+U)ZeVcp5kk;PUk!'6+e1X5dQ4F,a`Tq_0eI\bO#?1,X3rC3#;^3$Y.<VN_FCe#="UReTl*.T4bcRH1QoLI*4[afc%SR:M<*bjEo+$QqFO?>b7,dmgI%NPV)NSJZKFFeE8;+$[&2_PiQYD@.akkt0kQgR!&*S5+p>*#;F6[4X-L)V8X);Q,;\*lGF=[`I<-BRU)OY.uN*71?)5X62M.=DMDqM<?`Y>X^$LCduPh>Y+f46Q;jpYs7L6/ps1@LGs*':T0^3g,dYQ0m"uDOLP.5eCN2OmQO-q6RAOHZ&+ZfoO6l3E[E)S,_bg-<F\isPTms!!h2u@W9-u0HB>/A9r+0bR5C\MP+VXfNrD[$LYN?EYq7<R8G!%3k'%C2,,1_CZqr>LQ[:<-N*q0:kFetA!Y+%EUS=b>$t"(&*'sG#JYJ`DSgh?!7h27aq,;S(J>DU.Y3/c7g5K[RdmI.dG]MQQUsQ0Hma#kO`]KlR/AJdqoD[?'=#>s.1%IcjB8=0&$f-S^C`ViSm!3ZnaPE_bPFe24\/6U:=T?j0gsbf5Jd=:.+4$#M7*9cGN\!b4XU#S[LtikS:Pb_03BF%(@hCP`%=m"!=p9b)F<!V0l`h-VI=3`[eW!kNNA3n97'a'9@MILu^[\M,[8CtrfL[rULkSP$$,5rJTH+njS7f=b(j"VK&F=VU*2=ZH9m(kR+=XZp@BPXiOQqB1cLSp-W"4lG0IBgE[URh-q<nQ+N&`<9&2Vn]Uig=,2@=<>O'Z.!mcY0a1d+O6NItY<@!?Z#b9n6I:6;b9jtNH7hd[,+JDp7H_N4O%m$tI\h)WJig>7`GEhYUMnaU#ZjDi8g(t4;JENBX4F^Ng^4[U0"'/k:ReqUPOZI/?sf%*<*,Asosd2:?Rb*DG8e]-.ieYT+=51@>YD9SWU#5Ga-,u/Pgo"]I<oq81!/A[trHU/A%GgOIM0lN%+7bZKQBj`16`]bEO7qs9*eERi%i3F;Ai=#0d)**H"p5i`pXc74umQcE?kVkFH5&J2Ki&>kX=>UE]`2DAFguL"-HJ6RL'A/9mh?8"34iUbPlFs4SH\j[>;JY;TIoq-W/>OrJp"Ii4h+A,:Ros'(hTL,QlMiP=eE,p[iMKc%b\6^e"PSYT\%&q-Y2-$r72dPe$8_tIm'JLe!4Ol[@3L&2.,iVCT!,\Ed?rR-pkA^KOZ(M&+K-V3D&fUI3fhA3:!n_d,DD/J2(:_'RCY<-D)(a`436-3C2r_7>M@^adk8+39m)dU?Y6c`9N#`mTjh.r-.04ZlJfcHW[I_;^4ftcK7E4OQ",<,@Oq?:Y$rXqJK9_8>N_E>CarlqUo@;Y6LmY+3_S9QWBh][PT?ecHa/k/0n``NULEj<[8W.:^JTVDN;T&h:hc\rWK%L(1ml(;['B&VkdHjrZ2eLSAu+7=MOlkO.M"8=YWI5uL<Re%a".P--\FlB;iEd&5`?j"_^7d;W%*&a`M?Ho8tU+..=]4\c;?0Oq8Mi[Uf"'@]A^`i$fTu*1dir$p<PO?j\8]j&h,1!;YH!!"[()Jr#fim)k_"arMpHXrPrBD.U/Od;Z4k5CecH^iB$M4#&_R<s649.nQh(hpYkA0brCqG,%#W*I\@c=<`o!*Q2'Qi-k0+@bqj*j7TPI>'aMYM4q09B@CQNR2(+Fp`")!ulpD4J+#QQ0!@V*NT8#+ZfW"3o$("+0MMVMI[$\F_Q`7>E^>tHe773lh1PR8$Oe4c-j7&se%lA\a)cd!m,Nm3$8`b57-G<JmqHu%$Hr'^l7lPnj5q,MHkb]EFTgh0gMcQ=7N0:b<Ff")sk"pW.)cXSN6<[0MCE.,!giuoj4gh\;,i.2,Liu$&;2KZ+)A6De0;Lm&ncT;R2Wh>1)U:6Cb`%VgSs;3GT9N8fJ#XU2k"]9PECL\Q*dq+P<=/5S6])8t0"L?!Qk2AqIQi[)EgFF%KVRReo8*[[D&e=d$Mi-)=+:!As&C/;M(1tA:+am>S&K\J1WRD=4@HM)Bf@Mh4;"Zr7jj3Lb/S;Fbd5;'P9Y&6rJ)OW4EP?`G7[?Vq`*:Q.q,N9O]V/8K6!1K]@Ou`/Bt+nHrQr-P$'[Xb/ns0;7*TqJ30qX="(!/.uXN!(=I:SH*hNrG]mVnNBAX..>;S+3i!Wl650M[%]kXc!h,DnD/>_hqJT1/-e`f\l[H)f7^h3P>Y]qC2r6"'iF.^(29qq0]!\f</Z)_kARaoSL-?<SGP8#rE62KB8r6Tk1Tb:l.'t_@3E[<_23YLZ$3&K*p!h!tmdT'!?_l.6/V:BMT$co*NSVA&KJp.6p<nF,S%,@U:%L8G9K.)=oqeklcRV5pq64i_`C%q0ZuIdY0d7D@>XtPqToI_UY@h;blin1NQkO7FLg,kY.ICh.b$&K-2f%Fe8m=4qbXL3EFi\PVXM&n^\iJs"pG\"$@rA)+F+)(mF\T>'G/S_tC83mfA1\0mLGfWc6[%-_d8U9IWen,\6-C7?aWGKpeAdl<-_Eh[X$jVJg@uqfk*UH#a3[;Ag8p0'h"E7fH_MAL]*L<8mFK:GDJ_cuMWlT%-qR%5N>ROuNHCpd^Q(88'P&L>cA=)F.bRO#)mqES@VTbu@?3;2U-hg(X8&UbYc$:odh&QuO'2kcXj/qA*bs3E=;0M:\[8o9dFcCahh=7I2Y)'/rN#e1`Yna;PM2`0h<$Aul1Y&t`Z!S*n.8ON(\#'^#X$haO/$uh#/f:K75osI%KDSX2O:QR&M^78)H@:qJo-5HWc*qFm>=W:FAWcU,>2%m%eFr9BOe<%e#At#g1<+oLZ\'HNB$!bZY+.)=[LJEN^A\2SrU<AKK$IK#qglg3YC].\B2"2n?\d5-:3`KA6p?p0e=ukIAK-3ma<e]FSFY.C`]YC].rI;T[CN4*oPG$8#G;_f,M:&o%m=sHG=J]#o@NND/5glk8;F^9>MHT7%7EZZO\siNGU7&fTnKAffb`^)F'"6<Z"Q;kXK;s9Hu<bC:F%l?iMk9l8I*gOlS^T`uG@*7cRn?:ikT:DYG&Z%Zn[:#8+l#7[@-5CEBnGgpqKOI_ba[UTq$?ZdFSkN%d<FBT22KYnK)$<=!))KCrW]]ApQ3ZIRjL7"=[Ame;nD,/tJKNB0*9/MaBApd6q[)a>J[-XVA`fWeq7`WP*?M@ZZ]rN#6KO0-Je7P]lBC1BprNM^4E<qEr.;+AWQS-S3qD`Ws1LbKT#Y0(DtCJ\AJbb:jflM0Xkf*]j8*n2oH>?a2[h",q`^7?^?LtQHhs,3680Xciq2NBt3N%m2L%G$6t.!_m!TEl)uXN+f"Pl9ZeS%n;$`kcQb^db(RVEaA:=4gK_ULSM7*jNDl]s=qar:og\T2IIp3\=FE&4S;!7\_\M!p!MIc7O=sM7drOj'^O4;58='RmQ92(Ogb;nRaM]\!g]@1`BjN6NWDiA_,GIC6Zbgqu)=B/eCLsmJ`SN5Fq%t(k;D*[89<k`b6!Q#cQHj1r`3Sh-,BKp$-nUC3f10oU+=cg-Q`uZr^=1f@JLa9\)nB_iJ&:/a%&bdl;oO#!$TAaO_8=HD82bDR3qLD)Y'.=+BaqSjUh@Df=OGH#nC^>n^qGPPj(n-\iLVSUKh`OnZV8R3-:pW[c4PmY%pd(fMYHWsChral?$4?YSgA5&2hjEMtrG%FbBdD6ns7A'DGR*coLnh5.%5qD`EQoB=RH%Dp[UAXG3l9SU4-$b%4Aa$snS"1"]rj$"-n=H>4JN%o\?cF;]kP@f*YI7=<#%*2N-]7rWnX::SOd@GH>0s^kNq=s*)X>&kp>9D[7PK0mNnZibTr?'I=lrb0b1&JkrD]YX7=m.OL-%d3F.5MU!`#7GSS^\'N(.MfX^4AFJcUb".bW6Fn6rIOU@W6A/gA4lAWs"W?+8U2B3W/g#"*N5#0H+F2*5kQ(G.0dR;ONldq1m;c_+/rfdt&Kg2+bFM`>CBqTTE9.qLYTB:575WdC>ORbOP>EO*5^fA'>pEr?dZFERsW?[?^O9iO%4(Rd@K'+='.bbXF*rY5<9SA'DT<kb1t"^AV@M74nFAa"8Zh'[CV\N9Hu`Rl88+E_s^_\,TeMokgJK7:XQ87K&#L<HN?1(iqZ&rG\C([7).D<RDY)fYBem7)X(/F+#E?M/$o'r/NpRA'EE>SSu9`r57AYhtVcpj[JJi%Q1P0ejEKDeWOU)H&>JZ2.g:\,goaFXCMura_oZs@uN.^(h8LZ`Y`3E0ub&?N%r<h@uN.^(h8LZ`Y`3E0ub&?N%r<h@uP]uq-T(`Zqg~>endstream
-endobj
-10 0 obj
-<<
-/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
->>
-endobj
-11 0 obj
-<<
-/BaseFont /Helvetica-BoldOblique /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font
->>
-endobj
-12 0 obj
-<<
-/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 18 0 R /Resources <<
-/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject <<
-/FormXob.120a85b25e09f27df74ed3dd6376b1f0 8 0 R /FormXob.2c142ae4a83dfb816cc592166ec9ee0a 5 0 R /FormXob.731334a9cbac82f848bea22b06a6c4a7 9 0 R /FormXob.85d01d3946b8319a1d268e97a52ee385 4 0 R /FormXob.c51b94b7f6c2506fc5af23c42fcb8aa7 6 0 R
->>
->> /Rotate 0 /Trans <<
-
->> 
-  /Type /Page
->>
-endobj
-13 0 obj
-<<
-/Outlines 15 0 R /PageLabels 20 0 R /PageMode /UseNone /Pages 18 0 R /Type /Catalog
->>
-endobj
-14 0 obj
-<<
-/Author () /CreationDate (D:20210716084258-01'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20210716084258-01'00') /Producer (ReportLab PDF Library - www.reportlab.com) 
-  /Subject (\(unspecified\)) /Title (OhmPi project) /Trapped /False
->>
-endobj
-15 0 obj
-<<
-/Count 2 /First 16 0 R /Last 17 0 R /Type /Outlines
->>
-endobj
-16 0 obj
-<<
-/Dest [ 12 0 R /XYZ 62.69291 450.0636 0 ] /Next 17 0 R /Parent 15 0 R /Title (Citing OhmPi)
->>
-endobj
-17 0 obj
-<<
-/Dest [ 12 0 R /XYZ 62.69291 375.0636 0 ] /Parent 15 0 R /Prev 16 0 R /Title (Introduction to OhmPi)
->>
-endobj
-18 0 obj
-<<
-/Count 1 /Kids [ 12 0 R ] /Type /Pages
->>
-endobj
-19 0 obj
-<<
-/Length 4546
->>
-stream
-1 0 0 1 0 0 cm  BT /F1 12 Tf 14.4 TL ET
-q
-1 0 0 1 62.69291 741.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 4 Tm /F2 20 Tf 24 TL 166.5949 0 Td (OhmPi project) Tj T* -166.5949 0 Td ET
-Q
-Q
-q
-1 0 0 1 62.69291 711.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 3 Tm /F2 15 Tf 18 TL 194.0924 0 Td (Partenaires) Tj T* -194.0924 0 Td ET
-Q
-Q
-q
-1 0 0 1 255.6378 641.0236 cm
-q
-84 0 0 60 0 0 cm
-/FormXob.85d01d3946b8319a1d268e97a52ee385 Do
-Q
-Q
-q
-1 0 0 1 62.69291 623.0236 cm
-q
-BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Authors:) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 617.0236 cm
-Q
-q
-1 0 0 1 62.69291 593.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.49622 Tw (R\351mi CLEMENT,Vivien DUBOIS,Nicolas Forquet, INRAE, REVERSAAL, F-69626, Villeurbanne Cedex,) Tj T* 0 Tw (France.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 581.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Yannick FARGIER, GERS-RRO, Univ Gustave Eiffel, IFSTTAR, Univ Lyon, F-69675 Lyon, France.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 569.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Julien GANCE, IRIS Instruments, 45100 Orl\351ans, France.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 557.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (H\351l\350ne GUYARD, IGE Grenoble, Universit\351 Grenoble Alpes, Grenoble.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 557.0236 cm
-Q
-q
-1 0 0 1 62.69291 539.0236 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Parteners:) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 533.0236 cm
-Q
-q
-1 0 0 1 62.69291 516.0636 cm
-q
-1 1 1 rg
-n 0 16.96 469.8898 -16.96 re f*
-0 0 0 rg
-BT /F1 10 Tf 12 TL ET
-q
-1 0 0 1 6 6.712 cm
-q
-12 0 0 7.248 0 0 cm
-/FormXob.2c142ae4a83dfb816cc592166ec9ee0a Do
-Q
-Q
-q
-1 0 0 1 116.3529 8.805004 cm
-q
-12 0 0 5.154996 0 0 cm
-/FormXob.c51b94b7f6c2506fc5af23c42fcb8aa7 Do
-Q
-Q
-q
-1 0 0 1 240.9449 3 cm
-q
-12 0 0 10.96 0 0 cm
-/FormXob.120a85b25e09f27df74ed3dd6376b1f0 Do
-Q
-Q
-q
-1 0 0 1 351.2978 10.79486 cm
-q
-12 0 0 3.165138 0 0 cm
-/FormXob.731334a9cbac82f848bea22b06a6c4a7 Do
-Q
-Q
-q
-1 J
-1 j
-0 0 0 RG
-.25 w
-n 110.3529 0 m 110.3529 16.96 l S
-n 234.9449 0 m 234.9449 16.96 l S
-n 345.2978 0 m 345.2978 16.96 l S
-n 0 16.96 m 469.8898 16.96 l S
-n 0 0 m 469.8898 0 l S
-n 0 0 m 0 16.96 l S
-n 469.8898 0 m 469.8898 16.96 l S
-Q
-Q
-Q
-q
-1 0 0 1 62.69291 516.0636 cm
-Q
-q
-1 0 0 1 62.69291 498.0636 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Creation date : Juillet 2020.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 480.0636 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Update : 21 ao\373t 2020.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 462.0636 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Status of document: In progress.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 429.0636 cm
-q
-BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Citing OhmPi) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 387.0636 cm
-q
-BT 1 0 0 1 0 26 Tm .425984 Tw 12 TL /F3 10 Tf 0 0 0 rg (R\351mi Clement, Yannick Fargier, Vivien Dubois, Julien Gance, Emile Gros, et al.. OhmPi: An open) Tj /F1 10 Tf ( ) Tj /F3 10 Tf (source) Tj T* 0 Tw 1.36784 Tw (data logger for dedicated applications of electrical resistivity imaging at the small and laboratory) Tj /F1 10 Tf ( ) Tj /F3 10 Tf (scale.) Tj T* 0 Tw (HardwareX, Elsevier, 2020, 8, 24 p. ff10.1016/j.ohx.2020.e00122ff.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 354.0636 cm
-q
-BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Introduction to OhmPi) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 288.0636 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 50 Tm /F1 10 Tf 12 TL 1.130751 Tw (This documentation presents the development of a low-cost, open hardware resistivity meter to provide) Tj T* 0 Tw 1.370697 Tw (the scientific community with a robust and flexible tool for small-scale experiments. Called OhmPi, this) Tj T* 0 Tw .732706 Tw (basic resistivity meterfeatures current injection and measurement functions associated with a multiplexer) Tj T* 0 Tw .086905 Tw (that allows performing automatic measurements with up to 32 electrodes.OhmPi's philosophy is to provide) Tj T* 0 Tw (a fully open source and open hardware tool / to the near surface scientific community.) Tj T* ET
-Q
-Q
-q
-1 0 0 1 62.69291 276.0636 cm
-Q
-q
-1 0 0 1 62.69291 205.0636 cm
-q
-.960784 .960784 .862745 rg
-n 0 71 469.8898 -71 re f*
-0 0 0 rg
-BT /F1 10 Tf 12 TL ET
-BT 1 0 0 1 6 45 Tm  T* ET
-q
-1 0 0 1 16 40 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2.5 Tm /F4 12.5 Tf 15 TL (Note) Tj T* ET
-Q
-Q
-q
-1 0 0 1 16 16 cm
-q
-0 0 0 rg
-BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Everyone willing to get involved is welcome in OhmPi Project!.) Tj T* ET
-Q
-Q
-q
-1 J
-1 j
-.662745 .662745 .662745 RG
-.5 w
-n 0 71 m 469.8898 71 l S
-n 0 0 m 469.8898 0 l S
-n 0 0 m 0 71 l S
-n 469.8898 0 m 469.8898 71 l S
-Q
-Q
-Q
-q
-1 0 0 1 62.69291 199.0636 cm
-Q
- 
-endstream
-endobj
-20 0 obj
-<<
-/Nums [ 0 21 0 R ]
->>
-endobj
-21 0 obj
-<<
-/S /D /St 1
->>
-endobj
-xref
-0 22
-0000000000 65535 f 
-0000000073 00000 n 
-0000000136 00000 n 
-0000000243 00000 n 
-0000000355 00000 n 
-0000015380 00000 n 
-0000044178 00000 n 
-0000100904 00000 n 
-0000101315 00000 n 
-0000119802 00000 n 
-0000127908 00000 n 
-0000128024 00000 n 
-0000128144 00000 n 
-0000128605 00000 n 
-0000128711 00000 n 
-0000128982 00000 n 
-0000129056 00000 n 
-0000129170 00000 n 
-0000129293 00000 n 
-0000129354 00000 n 
-0000133952 00000 n 
-0000133993 00000 n 
-trailer
-<<
-/ID 
-[<870bb68092b857292686b2b33a691c37><870bb68092b857292686b2b33a691c37>]
-% ReportLab generated PDF document -- digest (http://www.reportlab.com)
-
-/Info 14 0 R
-/Root 13 0 R
-/Size 22
->>
-startxref
-134027
-%%EOF
diff --git a/doc/source/source_rst/Ohmpi.rst b/doc/source/source_rst/Ohmpi.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3d59a033d7aafb73bbfbe8b9f8d6426e1057cfcd
--- /dev/null
+++ b/doc/source/source_rst/Ohmpi.rst
@@ -0,0 +1,74 @@
+*************** 
+OhmPi project 
+***************
+
+    .. image:: ../img/logo/ohmpi/logo_ohmpi.JPG
+        :width: 250 px
+        :align: center
+        :height: 180 px
+        :alt: Logo OhmPi
+
+
+|  
+
+**Authors:** 
+------------
+| Rémi CLEMENT, Vivien DUBOIS, Nicolas Forquet, INRAE, REVERSAAL, Villeurbanne, France
+| Olivier KAUFMANN, Arnaud WATLET, Université de Mons, Mons, Belgium
+| Yannick FARGIER, GERS-RRO, Univ Gustave Eiffel, IFSTTAR, Lyon, France
+| Hélène GUYARD, IGE Grenoble, Université Grenoble Alpes, Grenoble, France
+| Guillaume BLANCHY, ILVO, Merelbeke, Belgium
+
+
+**Partners:**
+-------------
+
+.. table::
+   :align: center
+  
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   |   .. image::../img/Logo/parteners/logo_inrae.jpg     |  .. image::../img/Logo/parteners/logo_univ_gustave.png |   .. image::../img/Logo/parteners/logo_ilvo.png   |
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   |   .. image::../img/Logo/parteners/logo_univ_mons.png |  .. image::../img/Logo/parteners/ige.png               |                                                   |              
+   +------------------------------------------------------+--------------------------------------------------------+---------------------------------------------------+
+   
+  
+
+**Citing OhmPi:** 
+-----------------
+
+|
+
+*Rémi Clement, Yannick Fargier, Vivien Dubois, Julien Gance, Emile Gros, et al.. OhmPi: An open*
+*source data logger for dedicated applications of electrical resistivity imaging at the small and laboratory*
+*scale. HardwareX, Elsevier, 2020, 8, 24 p. ff10.1016/j.ohx.2020.e00122ff.*
+
+|
+   
+**Introduction :** 
+------------------
+
+.. warning::
+    OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. 
+    OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be
+    held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. 
+    The OhmPi team cannot be held responsible if the equipment does not work after assembly. You may redistribute and 
+    modify this documentation and make products using it under the terms of the CERN-OHL-P v2. This documentation is 
+    distributed WITHOUT ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING OF MERCHANTABILITY, SATISFACTORY QUALITY AND FITNESS
+    FOR A PARTICULAR PURPOSE. Please see the CERN-OHL-P v2 for applicable conditions.
+
+
+
+
+
+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 meter\
+features current injection and measurement functions associated with a multiplexer \
+that allows performing automatic measurements with up to 64 electrodes.\
+OhmPi's philosophy is to provide a fully open source and open hardware tool\
+to the near surface scientific community.
+ 
+
+.. note:: 
+   Anyone who wants to get involved is welcome to join the OhmPi project!
diff --git a/doc/source/source_rst/V2023.x.x/V2023.rst b/doc/source/source_rst/V2023.x.x/V2023.rst
new file mode 100644
index 0000000000000000000000000000000000000000..daac2d421e8502671baf0cdff237fe67e18d580b
--- /dev/null
+++ b/doc/source/source_rst/V2023.x.x/V2023.rst
@@ -0,0 +1,326 @@
+********************************************
+OhmPi V2023 (64 electrodes and 12V)
+******************************************** 
+
+.. warning::
+  **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. figure:: ../../img/v2023.x.x/image_ohmpi_2.jpg
+     :width: 400px
+     :align: center
+     :height: 350px
+     :alt: OhmPi V: 2023.0.0-rc1
+     :figclass: align-center
+
+.. note:: 
+   In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+   This new version is made up of:
+
+   1. A measurement board for four-point measurement
+
+   2. 4 multiplexer cards
+
+   3. A box
+
+  The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.
+
+The philosophy of OhmPi
+========================
+
+The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one. 
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.
+
+=============================================================================================================================================================
+
+Hardware
+========
+
+Specifications
+--------------
+
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+| **Parameter**                 |       **V1.0x**       | Units     |       **v2023**       | Units     |
++===============================+=======================+===========+=======================+===========+
+|Electrodes                     |32                     |           |64 to 128              |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Operating temperature          |-0 to 50               |°c         |-25 to 50              |°C         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Power consumption of CPU and   |18.5                   |W          |18.5                   |W          |
+|control system                 |                       |           |                       |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Voltage injection              |12                     |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Battery                        |9                      |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Current                        |0 to 40                |mA         |0 to 40                |mA         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Min pulse duration             |150                    |ms         |150                    |ms         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Input impedance                |80                     |MOhm       |80                     |MOhm       |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Data storage                   |micro SD card          |           |micro SD card          |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Resolution                     |0.01                   |Ohm        |0.01                   |Ohm        |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+
+Building an OhmPi V2023 step by step
+------------------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   V2023_step_01
+   V2023_step_02
+   V2023_step_03
+   V2023_step_04
+
+
+Software and operation
+======================
+
+System architecture
+-------------------
+
+The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.
+
+.. figure::../../../img/architecture.png
+
+     Software architecture of OhmPi V2023.
+
+The general system configuration is defined in the `config.py` file covered in the `Configuration file`_ section.
+The acquisition settings (i.e. injection duration, stacks...) are defined in a separate JSON file (default: ohmpi_settings.json).  
+
+The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the `Loggers`_ section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see `Interfaces and applications`_).
+
+Loggers
+-------
+
+Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see `MQTT interface`_ for more details) and one for creating zipped rotated logs on disk).
+
+Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.
+
+By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the `Configuration file`_.
+
+Advanced users may write new handlers and edit the `setup_loggers.py` file to customize the logging mechanisms to their needs.
+
+Configuration file
+------------------
+
+The configuration of the OhmPi file `config.py` allows to configure the OhmPi.
+A default version of `config.py` is provided in the repository.
+This file should be edited to customize the configuration following the user's needs and preferences.  
+
+The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options...)  
+
+One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.
+
+
+
+Interfaces and applications
+---------------------------
+
+Different interfaces can be used to interact with the OhmPi.
+
+Available interfaces are:
+- `Web interface`_ (=HTTP interface): run in bash: `bash run_http_interface.sh`
+- Python API: import the OhmPi class from Python script: `from ohmpi import OhmPi` (see `Python interface`_)
+- MQTT: IoT messaging through a broker (see `MQTT interface`_)
+
+
+Web interface
+.............
+
+This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.
+
+The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the 'index.html' interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.
+
+To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
+
+Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
+to access the interface.
+
+.. figure:: ../../img/http-interface-pseudo-section.png
+
+    Web interface with its interactive pseudo-section.
+
+
+.. figure:: ../../img/http-interface-evolution.png
+
+     Evolution of quadrupole apparent resistivity with time.
+
+
+.. figure:: ../../img/http-interface-rs.png
+
+     Contact resistance check.
+
+
+
+Python interface
+................
+
+This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.
+
+By importing the `OhmPi` class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
+
+To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).
+
+
+.. code-block:: python
+  :caption: Example of using the Python API to control OhmPi
+
+  import os
+  import numpy as np
+  import time
+  os.chdir("/home/pi/OhmPi")
+  from ohmpi import OhmPi
+
+  ### Define object from class OhmPi
+  k = OhmPi()  # this loads default parameters from the disk
+
+  ### Default parameters can also be edited manually
+  k.settings['injection_duration'] = 0.5  # injection time in seconds
+  k.settings['nb_stack'] = 1  # one stack is two half-cycles
+  k.settings['nbr_meas'] = 1  # number of time the sequence is repeated
+
+  ### Update settings if needed
+  k.update_settings({"injection_duration":0.2})
+
+  ### Set or load sequence
+  k.sequence = np.array([[1,2,3,4]])    # set numpy array of shape (n,4)
+  # k.set_sequence('1 2 3 4\n2 3 4 5')    # call function set_sequence and pass a string
+  # k.load_sequence('ABMN.txt')    # load sequence from a local file
+
+  ### Run contact resistance check
+  k.rs_check()
+
+  ### Run sequence (synchronously - it will wait that all
+  # sequence is measured before returning the prompt
+  k.run_sequence()
+  # k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately
+  # time.sleep(2)
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Run multiple sequences at given time interval
+  k.settings['nb_meas'] = 3  # run sequence three times
+  k.settings['sequence_delay'] = 100 # every 100 s
+  k.run_multiple_sequences()  # asynchron
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Single measurement can also be taken with
+  k.switch_mux_on([1, 4, 2, 3])
+  k.run_measurement()  # use default acquisition parameters
+  k.switch_mux_off([1, 4, 2, 3])  # don't forget this! risk of short-circuit
+
+  ### Custom or adaptative argument, see help(k.run_measurement)
+  k.run_measurement(nb_stack=4,  # do 4 stacks (8 half-cycles)
+                    injection_duration=2,  # inject for 2 seconds
+                    autogain=True)  # adapt gain of ADS to get good resolution
+
+
+
+MQTT interface
+..............
+
+This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.  
+
+This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.  
+
+An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.  
+
+MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as `MQTT Explorer <http://mqtt-explorer.com/>`_.
+
+Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:
+
+.. code-block:: json
+  :caption: Updating acquisition settings.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+    "kwargs": {
+      "config": {
+        "nb_meas": 2,
+        "nb_electrodes": 10,
+        "nb_stack": 2,
+        "injection_duration": 2,
+        "sequence_delay": 100
+      }
+    }
+  }
+
+
+.. code-block:: json
+  :caption: Check contact resistances
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "rs_check",
+  }
+
+.. code-block:: json
+  :caption: Running a sequence.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_sequence",
+  }
+
+.. code-block:: json
+  :caption: Running same sequence multiple times (nb_meas).
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_multiple_sequences",
+  }
+
+.. code-block:: json
+  :caption: Interrupt current acquisition.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "interrupt",
+  }
+
+Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as `Node-red <http://mqtt-explorer.com/>`_.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component. 
+
+Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :
+
+.. code-block:: JSON
+     node-red basic_ohmpi_flows_node-red.json
+
+These examples may require installing some additional node packages in order to work properly. This can be done in the `Palette Manager <https://nodered.org/docs/user-guide/editor/palette/manager> within Node-RED.
+
+.. figure:: ../../img/node-red_flow.png
+
+     Example flow in node-red to interact with an OhmPi.
+
+
+.. figure:: ../../img/node-red_interface_control.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.
+     
+.. figure:: ../../img/node-red_interface_data.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.
+
+
+For more documentation dedicated to node-red, please refer to the Node-red `cookbooks <https://cookbook.nodered.org/>`_.
diff --git a/doc/source/source_rst/V2023.x.x/V2023_step_01.rst b/doc/source/source_rst/V2023.x.x/V2023_step_01.rst
new file mode 100644
index 0000000000000000000000000000000000000000..29fb91978ca852edbb6344f7ef12176fab67d8d3
--- /dev/null
+++ b/doc/source/source_rst/V2023.x.x/V2023_step_01.rst
@@ -0,0 +1,156 @@
+**STEP n°1** : Raspberry Pi  configuration 
+*******************************************
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**PART A:** OS installation  
+=============================
+
++----------------------------------------------------+---------------+
+| **Required components**                            | **Quantity**  | 
++----------------------------------------------------+---------------+
+|Raspberry Pi 4 Model B                              |              1|
++----------------------------------------------------+---------------+
+|Micro SD 32 Go                                      |              1|
++----------------------------------------------------+---------------+
+|HDMI Cable                                          |              1|
++----------------------------------------------------+---------------+
+|Computer mouse                                      |              1|
++----------------------------------------------------+---------------+
+|Computer Keyboard                                   |              1|
++----------------------------------------------------+---------------+
+
+
+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 
+
+1. Watch the video `how to set up your raspberry Pi <https://www.youtube.com/watch?v=wjWZhV1v3Pk>`_.
+
+2. The authors recommend installing the latest stable and complete version of Raspberry Pi OS (Previously called Raspbian) by using Raspberry Pi Imager.
+
+3. or you can visit this `website <https://projects.raspberrypi.org/en/projects/raspberry-pi-setting-up>`.  
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+
+     .. figure:: ../../img/v2023.x.x/step_n_1/raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated and **I2C option** must be activated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+**PART B:** Virtual Environment and packages
+============================================
+
+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.
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+     
+     export CFLAGS=-fcommon
+     sudo pip install RPi.GPIO adafruit-blinka numpy pandas adafruit-circuitpython-ads1x15 adafruit-circuitpython-tca9548a adafruit-circuitpython-mcp230xx gpiozero
+
+Check that requirements are met using 
+
+.. code-block:: python
+
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+
+     deactivate
+
+
+**PART C:** Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)
+====================================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: ../../img/v2023.x.x/step_n_1/thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: ../../img/v2023.x.x/step_n_1//thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+8- Close the window by clicking on **ok**.
+
+9- Close Thonny to save modifications
+
+ 
diff --git a/doc/source/source_rst/V2023.x.x/V2023_step_02.rst b/doc/source/source_rst/V2023.x.x/V2023_step_02.rst
new file mode 100644
index 0000000000000000000000000000000000000000..ca79eaeb05e427b2a5fc56ffed080b5316cc7820
--- /dev/null
+++ b/doc/source/source_rst/V2023.x.x/V2023_step_02.rst
@@ -0,0 +1,476 @@
+
+**STEP n°2**: Measurement board
+****************************************************
+
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**PART A** Assembly of the measurement board
+======================================================
+
+
+Required components 
+----------------------------------------------------
+
+.. figure:: ../../img/v2023.x.x/step_n_2/a/00_mes_board_components.jpg       
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+
+
+
+.. csv-table:: List of components
+   :file: ../../img/v2023.x.x/step_n_2/a/measure_board_list_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1
+   
+Description
+------------------  
+
+.. figure:: ../../img/v2023.x.x/step_n_2/a/schema_measurement_board.jpg       
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+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
+is a 16-bit ADC (Analog-to-Digital Converter), with an adaptable gain. The advantage of ADS1115 is that the 
+input signal value could lie between - to + 6.114 V. For the current measurement we have directly integrated the INA282 component, 
+which allows to realize precise current measurement around a shunt resistor. The assembly are described in the following steps:
+
+
+
+.. table::
+   :align: center
+   
+   +--------+-------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/a/01_mes_board.jpg|
+   |      1 +-------------------------------------------------------------+
+   |        | Installation of female header, 1 by 10  pins, for ADS1115   | 
+   |        |                                                             |                                                                       
+   +--------+-------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+-------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/a/02_mes_board.jpg|
+   |2       +-------------------------------------------------------------+
+   |        | Soldering of 4 dual-in-line socket (2 by 2 pins) for        | 
+   |        | optical relay, AQY211EH.                                    |                                                                       
+   +--------+-------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/03_mes_board.jpg|
+   |3       +------------------------------------------------------------+
+   |        | Soldering of 1 dual-in-line socket (2 by 9 pins)           | 
+   |        | for MCP23008.                                              |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/04_mes_board.jpg|
+   | 4      +------------------------------------------------------------+
+   |        | Soldering of 1 dual-in-line socket (2 by 4 pins)           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+ 
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/05_mes_board.jpg|
+   |5       +------------------------------------------------------------+
+   |        | Soldering of 2 dual-in-line socket (2 by 4 pins)           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/06_mes_board.jpg|
+   | 6      +------------------------------------------------------------+
+   |        | Traco Power Supply 12V to 5V, TDH15 - 1211N                | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/07_mes_board.jpg|
+   |7       +------------------------------------------------------------+
+   |        | Four screw terminals for 12V inpout et 5V output           |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/08_mes_board.jpg|
+   |8       +------------------------------------------------------------+
+   |        | Traco power Supply 12V to 24V, TRN-1215                    | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+    
+
+.. table::
+   :align: center
+  
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/a/09_mes_board.jpg|
+   |9       +------------------------------------------------------------+
+   |        | Two screw terminals electrodes M and N                     | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/10_mes_board.jpg|
+   |10       +------------------------------------------------------------+
+   |         | Four screw terminals, for 12V power supply and for         | 
+   |         | electrodes A and B                                         |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/11_mes_board.jpg|
+   |11       +------------------------------------------------------------+
+   |         |  Soldering three capacitors (100nF)                        | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. warning::
+     
+     In this version, we used a shunt resistor of 2 ohms, which limits the current measurement to 48 mA. If the current is higher than this value, you just have to decrease the value of the shunt resistor. Don't forget to change the shunt value in the config.py file (value associated to key 'R_shunt' in the OHMPI_CONFIG dict).
+
+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/12_mes_board.jpg|
+   | 12      +------------------------------------------------------------+
+   |         | 2 ohms shunt resistor pre-adjustment                       | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/13_mes_board.jpg|
+   |13       +------------------------------------------------------------+
+   |         | Soldering 2 ohms shunt resistor                            | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/14_mes_board.jpg|
+   |14       +------------------------------------------------------------+
+   |         | 1 MOhm resistors                                           |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+  
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/15_mes_board.jpg|
+   |15       +------------------------------------------------------------+
+   |         | Soldering tow 1 kOhm resistors                             |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/16_mes_board.jpg|
+   |16       +------------------------------------------------------------+
+   |         | Soldering two 1.5 kOhm resistors                           |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/17_mes_board.jpg|
+   |17       +------------------------------------------------------------+
+   |         | Soldering two 1.5 kOhms resistors                          |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/18_mes_board.jpg|
+   |18       +------------------------------------------------------------+
+   |         | Female header 2 by 20 pins for Raspberry Pi connection     | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/19_mes_board.jpg|
+   |19       +------------------------------------------------------------+
+   |         | View of the female  header 2 by 20 pins installation       | 
+   |         | for Raspberry Pi connection                                |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/20_mes_board.jpg|
+   |20       +------------------------------------------------------------+
+   |         | Fixing MCP23008 component (Dot mark on the top left corner)| 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/21_mes_board.jpg|
+   |21       +------------------------------------------------------------+
+   |         |Mounting optical relay, AQY211EH (Dot mark in the top left  | 
+   |         |corners)                                                    |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/22_mes_board.jpg|
+   |22       +------------------------------------------------------------+
+   |         | Mounting LM158 operational amplifier                       |
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/23_mes_board.jpg|
+   |23       +------------------------------------------------------------+
+   |         |  Mounting ADS115 board                                     | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+  
+   +---------+------------------------------------------------------------+
+   |         |   .. image::../../img/v2023.x.x/step_n_2/a/24_mes_board.jpg|
+   |24       +------------------------------------------------------------+
+   |         | Fixing the INA282 (Dot mark in the top right corner)       | 
+   |         |                                                            |                                                                       
+   +---------+------------------------------------------------------------+
+  
+  
+**PART B** Start-up of the measurement board
+====================================================== 
+
+
++------------------------------------------------------------------------+
+| **Required components**                                                | 
++------------------------------------------------------------------------+
+
+.. csv-table:: List of components
+   :file: step_n_2/b/test_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/001.jpg         |
+   |1       +------------------------------------------------------------+
+   |        | Shutdown the raspberry Pi and unplug the power supply      | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/001.jpg                       |
+   |2       +--------------------------------------------------------------------------+
+   |        | Mounting the bottom spacers on the Raspberry Pi (male/female, 11mm, M3)  | 
+   |        |                                                                          |                                                                       
+   +--------+--------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------+
+   |        |   .. image::../../img/v2023.x.x/step_n_2/b/002.jpg                       |
+   |3       +--------------------------------------------------------------------------+
+   |        | Mounting the upper spacers on the Raspberry Pi (female/female, 11mm, M3) | 
+   |        |                                                                          |                                                                       
+   +--------+--------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/003.jpg        |
+   |4       +------------------------------------------------------------+
+   |        | Mounting the OhmPi's measurement board on the Raspberry Pi | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/004.jpg        |
+   |5       +------------------------------------------------------------+
+   |        | Mounting the OhmPi's measurement board on the Raspberry Pi | 
+   |        |                                                            |
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/b/005.jpg        |
+   |6       +------------------------------------------------------------+
+   |        | Plug the power supply into a socket and connect it to your | 
+   |        | Raspberry Pi's power port.                                 |
+   +--------+------------------------------------------------------------+  
+
+
+**PART C** Check the measurement board
+====================================================== 
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     i2cdetect -y 1
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/i2cdetect.png  |
+   |1       +------------------------------------------------------------+
+   |        |If everything is working, three I2C addresses should appear | 
+   |        |on the screen.                                              |                                                                       
+   +--------+------------------------------------------------------------+
+
+
+
+Setting up an equivalent electronic circuit, for this you will need: 
+ * 4 1kOhm resistor (R2)
+ * 1 220 Ohm resistor (R1)
+ * 1 small padboard
+ * Spool of solder
+ 
+ .. table::
+   :align: left
+ 
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/ref_circuit.png|
+   |2       +------------------------------------------------------------+
+   |        | Schematic of equivalent electronic circuit test            |                                                                       
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_122820.jpg |
+   |3       +-----------------------------------------------------------------+
+   |        | Prepare the equivalent electronic circuit test                  |                                                                       
+   +--------+-----------------------------------------------------------------+ 
+
+  
+.. table::
+   :align: center
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_123034.jpg |
+   |4       +-----------------------------------------------------------------+
+   |        |  Prepare the battery connections and the terminals.             |                                                                       
+   +--------+-----------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20210905_132856.jpg                |
+   |5       +--------------------------------------------------------------------------------+
+   |        | Soldering cables and terminals                                                 |                                                                       
+   +--------+--------------------------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI.jpg        |
+   |6       +--------------------------------------------------------------------------------+
+   |        |Install the red cables on the +12V terminal and black cable                     |                                                                       
+   |        |on the ground terminal. Connect to two different 12V                            |
+   |        |batteries                                                                       |
+   +--------+--------------------------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+ 
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/Inked20211206_150522_LI2.jpg       |
+   |7       +--------------------------------------------------------------------------------+
+   |        | Connect the equivalent electronic circuit test                                 |                                                                       
+   |        |                                                                                |
+   +--------+--------------------------------------------------------------------------------+
+   
+   
+.. table::
+   :align: center
+ 
+   +--------+-------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/thonny_first_interface.jpg        |
+   |7       +-------------------------------------------------------------------------------+
+   |        | Run the Thonny Interpreter                                                    |                    
+   |        |                                                                               |
+   +--------+-------------------------------------------------------------------------------+   
+
+
+.. table::
+   :align: center
+ 
+   +--------+------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_2/c/20211206_144334.jpg              |
+   |7       +------------------------------------------------------------------------------+
+   |        | Run sample_measurement_example.py example, if everything                     |                    
+   |        | works you should  get the following result (220 Ohm)                         |
+   +--------+------------------------------------------------------------------------------+ 
diff --git a/doc/source/source_rst/V2023.x.x/V2023_step_03.rst b/doc/source/source_rst/V2023.x.x/V2023_step_03.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c268d128380cdaf9e750e66e02edff5dfd22acfd
--- /dev/null
+++ b/doc/source/source_rst/V2023.x.x/V2023_step_03.rst
@@ -0,0 +1,289 @@
+
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+**STEP n°3:** MUX board
+****************************************************
+The multiplexing of the channels is a mechanical multiplexing based on OMRON's manufacturing relays (G5LE-1-VD 12 VDC). Each relay is combined with 
+a ZVN4206A power MOFSET. The raspberry has only 30 GPIOs, which is not enough to activate all the 64 electrodes, which represent 512 GPIOs. 
+We used gpio expander I2C (MCP23017). We have associated these components with an I2C multiplexer of type type TCA9548A from adafruit.
+This combination allows to go up to 512 GPIOs and up to 128 electrodes. Each card has its own digital address between 0X70 and 0X77. 
+In the following presentation for an OhmPi 64 electrodes, we will use the addresses 0X70 for channel A, 0X71 for channel B, 0X72 for channel M and 0X73 for channel N.
+0X73 for the N channel. 4 MUX board will be needed to multiplex an OhmPi 64 electrodes.
+
+**PART A** Assembly of MUX board
+======================================================
+
+
+Required components 
+----------------------------------------------------
+
+.. figure:: ../../img/v2023.x.x/step_n_3/a/MUX_board_components.jpg
+       :width: 600px
+       :align: center
+       :height: 650px
+       :alt: alternate text
+       :figclass: align-center
+
+
+.. csv-table:: List of components
+   :file: step_n_3/a/MUX_board_list_2_xx.csv
+   :widths: 30, 70, 70, 70, 70, 35, 35
+   :header-rows: 1 
+   
+   
+.. table::
+   :align: center
+   
+   +--------+--------------------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_00.jpg                         |
+   |      1 +--------------------------------------------------------------------------------+
+   |        |Mux board pcb                                                                   | 
+   |        |                                                                                |                                                                       
+   +--------+--------------------------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_01.jpg     |
+   |      2 +------------------------------------------------------------+
+   |        |Installation of the 100 kOhm resistors                      |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+   
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_02.jpg     |
+   |      3 +------------------------------------------------------------+
+   |        |Installation of the MOSFET ZVN4206A                         |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+      
+   
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_03.jpg     |
+   |      4 +------------------------------------------------------------+
+   |        |Installation of the diode 1N4007                            |
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+    
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_04.jpg     |
+   |      5 +------------------------------------------------------------+
+   |        |Installation of the relay                                   | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_05.jpg     |
+   |      6 +------------------------------------------------------------+
+   |        |Installation of the terminal screw                          | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_06.jpg     |
+   |      7 +------------------------------------------------------------+
+   |        |Installation of generic male header                         | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_07.jpg     |
+   |      8 +------------------------------------------------------------+
+   |        |Installation of Pin strip (6 pins)  and pin strip (16 pins) | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_08.jpg     |
+   |      9 +------------------------------------------------------------+
+   |        |Installation of DIP Dual In Line Socket 2*14                | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_09.jpg     |
+   |     10 +------------------------------------------------------------+
+   |        |Installation of Adafruit TCA9548A                           | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/a/MUX_10.jpg     |
+   |     10 +------------------------------------------------------------+
+   |        |Installation of MCP23017                                    | 
+   |        |                                                            |                                                                       
+   +--------+------------------------------------------------------------+  
+   
+.. note:: 
+     This step must be duplicated 4 times for every Mux card.
+
+
+**PART B** MUX board address
+====================================================== 
+To build an ohmpi it is necessary to have 4 MUX boards, with 4 different addresses. It is therefore necessary to identify each board, by assigning an address, which will be allocated in the OhmPi code.
+We present here the addresses selected by default.
+
+For the A electrode board, we suggest addressing it with address 0x70:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/A_0x70.jpg     |
+   |     1  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (A).                        |                                                                       
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/A_0x70-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+   
+
+  
+
+   
+For the B electrode board, we suggest addressing it with address 0x71:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/B_0x71.jpg     |
+   |     2  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                       
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/B_0x71-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+ 
+
+For the N electrode board, we suggest addressing it with address 0x72:
+
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/M_0x72.jpg     |
+   |     3  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                     
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/M_0x72-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+ 
+
+For the M electrode board, we suggest addressing it with address 0x73: 
+  
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/N_0x73.jpg     |
+   |     4  +------------------------------------------------------------+
+   |        |Mount the jumpers and note the value of the address and the |
+   |        |electrode name on the mux board (B).                        |                                                                     
+   |        +------------------------------------------------------------+  
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/b/N_0x73-a.jpg   |
+   |        +------------------------------------------------------------+
+   |        |Zoom on the jumper                                          | 
+   |        |                                                            |   
+   +--------+------------------------------------------------------------+    
+
+**PART C** Validation of MUX board
+======================================================
+The first step is to test the Mux boards before assembling them definitively.
+To test the Mux boards, it will be necessary first to make a simplified assembly of the Mux board and the measurement board.
+
+The first thing to do is to prepare a 50 cm long flat wire with two 6-poles connectors.
+
+
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20211207_115706.jpg |
+   |     1  +-----------------------------------------------------------------+
+   |        |Build a cable with 6 contacts with 6 pins connector.             |
+   |        |                                                                 |                                                                     
+   +--------+-----------------------------------------------------------------+ 
+ 
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_142929.jpg |
+   |     2  +-----------------------------------------------------------------+
+   |        |Prepare the measurement board and the first mux board by         |
+   |        |example the card with address 0x71.                              |                                                                     
+   +--------+-----------------------------------------------------------------+
+
+   +--------+-----------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_143105.jpg |
+   |     3  +-----------------------------------------------------------------+
+   |        |Connect the 12V power supply cables to the MUX board             |
+   |        |without powering the board.                                      |                                                                     
+   +--------+-----------------------------------------------------------------+   
+
+   +--------+------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220207_154111.jpg  |
+   |     4  +------------------------------------------------------------------+
+   |        |Connect the 12V power supply screw terminal of the mux            |
+   |        |board to the 12V screw terminal power supply of the               |
+   |        |measurement board.                                                |
+   +--------+------------------------------------------------------------------+   
+
+   +--------+------------------------------------------------------------------+
+   |        |   .. image:: ../../img/v2023.x.x/step_n_3/c/20220124_143823.jpg  |
+   |     5  +------------------------------------------------------------------+
+   |        |Connect the 6-contact cable                                       |
+   |        |                                                                  |                                                                     
+   +--------+------------------------------------------------------------------+
+   
+
+Start your 12V power supply, the raspberry must start. 
+
+Run the terminal and write:
+
+ .. code-block:: python
+
+     i2cdetect -y 1
+
+Three addresses should appear, including the address of the MUX board you have selected. This implies that your board has been detected.
+
+Open the script called "test_mux_board.py".
+
+Run the script
+
+   
+   
\ No newline at end of file
diff --git a/doc/source/source_rst/V2023.x.x/V2023_step_04.rst b/doc/source/source_rst/V2023.x.x/V2023_step_04.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d7d17b4a2b28006aa3a41fe607c6a7a628556188
--- /dev/null
+++ b/doc/source/source_rst/V2023.x.x/V2023_step_04.rst
@@ -0,0 +1,461 @@
+
+.. warning::
+    **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+
+
+
+**STEP n°4:** assemble the OhmPi
+****************************************************
+   
+.. table::
+   :align: center
+   
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_1.jpg                         |
+   |      1 +------------------------------------------------------------+
+   |        |Cut 4 ribbon cables composed of 16 wires each to the proper | 
+   |        |length (about 1.5m). Each wire corresponds to an electrode. |                                                                      
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_2.jpg                         |
+   |      2 +------------------------------------------------------------+
+   |        |Crimp the ribbon cable on the corresponding idc connector   | 
+   |        |with a suitable clamp. Pay attention to the direction of    |
+   |        |the cables. Unbalanced IDC connector. The ribbon cable must |
+   |        |be perpendicular to the connector.                          |
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_3.jpg                         |
+   |      3 +------------------------------------------------------------+
+   |        |Example of IDC connector mounting. The wires should run as  | 
+   |        |perpendicular as possible to the IDC connector.             |                                                                      
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_4.jpg                         |
+   |      4 +------------------------------------------------------------+
+   |        |Same for a 6 wires ribbon cable of 1 m length.              | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_5.jpg                         |
+   |      5 +------------------------------------------------------------+
+   |        |Cut the ribbon cable flush with the IDC connector.          | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_6.jpg                         |
+   |      6 +------------------------------------------------------------+
+   |        |Position 9 spacers above the MUX board, and 9 spacers below |
+   |        |                                                            |                                                                      
+   +        +------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_7.jpg                         |
+   |        +------------------------------------------------------------+
+   |        |Profile view for mounting the spacers above and below.      | 
+   |        |                                                            |                                                                      
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_8.jpg                         |
+   |      7 +------------------------------------------------------------+
+   |        |Cut a 50 cm long wire of any color (here yellow). Strip and | 
+   |        |tin each end of the wire. Install the wire "A" on the screw |
+   |        |terminal of MUX board « A ».                                |                                                                                       
+   +--------+------------------------------------------------------------+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_9.jpg                         |
+   |      8 +------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of 50 cm length. Strip, tin | 
+   |        |and position the wires on the left screw terminal as shown  |
+   |        |in the picture: i)Red wire 12 V, ii) Black wire GND         |                                                                                       
+   +--------+------------------------------------------------------------+
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_10.jpg                        |
+   |      9 +------------------------------------------------------------+
+   |        |Mount the 4 ribbon cables (16-wires each) with IDC          | 
+   |        |connectors. A small noise is often heard when the IDC       |
+   |        |connector is clipped in place.                              |                                                                                       
+   +--------+------------------------------------------------------------+
+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_11.jpg                        |
+   |      10+------------------------------------------------------------+
+   |        |Mount the ribbon cables with 6-wires with the corresponding | 
+   |        |IDC connectors                                              |
+   |        |                                                            |                                                                                       
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_12.jpg                        |
+   |      11+------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of 10 cm length. Strip and  | 
+   |        |tin the wires at the ends. Mount the red wire on the 12V    |
+   |        |input and the black wire on the GND input on the right      |
+   |        |screw terminal.                                                   |
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_13.jpg                        |
+   |      12+------------------------------------------------------------+
+   |        |Mount and fix the second MUX board "B" on the first with    | 
+   |        |the help of 9 spacers.                                      |
+   |        |                                                            |
+   |        |                                                            |                            
+   +--------+------------------------------------------------------------+   
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_14.jpg                        |
+   |      13+------------------------------------------------------------+
+   |        |Cut, strip and tin a red wire and a black wire of 10 cm     | 
+   |        |length. Mount the wires on the left screw terminal.         |
+   |        |Red wire 12V input, black wire GND input.                   |
+   |        |Connect the red and black wires from board A to the right   |                            
+   |        |screw terminal of board B. Red wire 12V input. Black wire   |   
+   |        |GND input.                                                  |
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_15.jpg                        |
+   |      14+------------------------------------------------------------+
+   |        |Crimp a 16 wires IDC connector on the ribbon cable at about | 
+   |        |15 cm from the previous connector. Please, pay attention to |
+   |        |the direction of the cable before the crimp procedure.      |
+   |        |Mount the ribbon cable on the IDC connector on the board.   |                            
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_16.jpg                        |
+   |      15+------------------------------------------------------------+
+   |        |Repeat the operation for the other 3 ribbon cables.         |                  
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_17.jpg                        |
+   |      16+------------------------------------------------------------+
+   |        |Repeat the operation for the 6 wires ribbon cable.          |                  
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_18.jpg                        |
+   |      17+------------------------------------------------------------+
+   |        |Cut a 50 cm long wire "here purple" (Color not relevant but | 
+   |        |to be defined). Strip and tin the wire at its ends.         |
+   |        |Position the wire on the input B of the screw terminal of   |
+   |        |the multiplexing board B.                                   |
+   +--------+------------------------------------------------------------+ 
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_19.jpg                        |
+   |      18+------------------------------------------------------------+
+   |        |Repeat all these operations for the third MUX board         | 
+   |        |called "M".                                                 |           
+   +--------+------------------------------------------------------------+    
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_20.jpg                        |
+   |      19+------------------------------------------------------------+
+   |        |Repeat the operations for the fourth MUX Boards. Attention, | 
+   |        |it is necessary to position 5 different spacers (here nylon |
+   |        |screw hex spacers) in between the “M” board and the “N” MUX |
+   |        |Board (as shown on the photograph). Refer to the following  |                            
+   |        |photographs for more details on the assembly of the spacers |
+   +--------+------------------------------------------------------------+
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_21.jpg                        |
+   |      20+------------------------------------------------------------+
+   |        |When mounting the 4th MUX board ("N"), screws can be placed |
+   |        |on the nylon spacers to fix the boards together. Note that  |
+   |        |the other spacers could be used for this purpose.           |
+   |        |Connect ribbon cables (16 wires) from board 3 to board 4 as |
+   |        |previously described. Connect the red wire (12V) of MUX     |                                                 
+   |        |board "M" to the 12V terminal of the right screw terminal   |   
+   |        |of MUX Board "N". Connect the black wire (GND) of MUX board |
+   |        |“M” to the GND screw terminal on MUX board “N”.             |  
+   +--------+------------------------------------------------------------+   
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_22.jpg                        |
+   |      21+------------------------------------------------------------+
+   |        |Cut a red wire and a black wire of one meter length. Place  | 
+   |        |the red wire on terminal “12V” and the black wire on        |
+   |        |terminal “GND” of the left screw terminal. Tie the wires    |
+   |        |together.                                                   |                            
+   +--------+------------------------------------------------------------+   
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_23.jpg                        |
+   |      22+------------------------------------------------------------+
+   |        |Tie the A, B, M and N wires together                        |                            
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_24.jpg                        |
+   |      23+------------------------------------------------------------+
+   |        |Cut a PVC plate with the following minimum dimensions :     |  
+   |        |200 mm * 150 mm * 5 mm                                      |                       
+   +--------+------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_25.jpg                        |
+   |      24+------------------------------------------------------------+
+   |        |Drill the plate to mount it on the remaining metal spacers. |  
+   |        |Do not tighten the assembly.                                |                       
+   +--------+------------------------------------------------------------+    
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_26.jpg                        |
+   |      25+------------------------------------------------------------+
+   |        |Position the Raspberry Pi (RPI) board on the plate so that  |  
+   |        |you can access the USB ports. Mark the holes of the RPI     |
+   |        |board on the plate for mounting.                            |
+   +--------+------------------------------------------------------------+
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_27.jpg                        |
+   |      26+------------------------------------------------------------+
+   |        |Add spacers on the PVC plate.                               |     
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_28.jpg                        |
+   |      27+------------------------------------------------------------+
+   |        |Attach the PVC plate to the metal spacers with washers      |     
+   |        |and nuts.                                                   |                                
+   +--------+------------------------------------------------------------+  
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_29.jpg                        |
+   |      28+------------------------------------------------------------+
+   |        |Position and fix the RPI card on the spacers                |     
+   +--------+------------------------------------------------------------+     
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_30.jpg                        |
+   |      29+------------------------------------------------------------+
+   |        |Add spacers on the RPI board. The red (12V) and black (GND) |     
+   |        |wires coming out of the "M" MUX board must pass under       |    
+   |        |the RPI board.                                              |        
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_31.jpg                        |
+   |      30+------------------------------------------------------------+
+   |        |Place the measurement board on the RPI GPIO outputs and on  |
+   |        |the pre-positioned spacers. Note that LEDs are present on   |
+   |        |this measurement board with an associated resistance simply |
+   |        |for testing purposes (do not consider this temporary        |
+   |        |modification of the board). Same for the orange wire        |
+   |        |present on the board.                                               |
+   +--------+------------------------------------------------------------+  
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_32.jpg                        |
+   |      31+------------------------------------------------------------+
+   |        |Connect the wires " A " (here yellow), " B " (here purple), |
+   |        |" M " (here brown) and " N " (here blue) on the             |
+   |        |corresponding terminal blocks on the measurement board.     |
+   |        |Connect the 6 wires ribbon cable on the measurement board   |
+   |        |by passing under the PVC plate.Connect the red and black    |                                                 
+   |        |wires to the 12 V and GND terminal block.                   |   
+   +--------+------------------------------------------------------------+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_33.jpg                        |
+   |      32+------------------------------------------------------------+
+   |        |Top view of the assembly. Add clips to secure the wires     |     
+   |        |together.                                                   |
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_34.jpg                        |
+   |      33+------------------------------------------------------------+
+   |        |Second view.                                                |     
+   +--------+------------------------------------------------------------+    
+   
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_35.jpg                        |
+   |      34+------------------------------------------------------------+
+   |        |Zoom in on the connection of the M and N wires.             |     
+   +--------+------------------------------------------------------------+ 
+   
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_36.jpg                        |
+   |      35+------------------------------------------------------------+
+   |        |Zoom in on the connection of the A and B wires.             |     
+   +--------+------------------------------------------------------------+ 
+
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_37.jpg                        |
+   |      36+------------------------------------------------------------+
+   |        |Zoom in on the connection of the « 12V » and « GND » wires. |     
+   +--------+------------------------------------------------------------+ 
+
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_38.jpg                        |
+   |      37+------------------------------------------------------------+
+   |        |Fixing the measurement board on the spacers present on the  |
+   |        |RPI board.                                                  |
+   +--------+------------------------------------------------------------+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_39.jpg                        |
+   |      38+------------------------------------------------------------+
+   |        |Place the SD card containing the OS and the pre-installed   |
+   |        |programs. Connect a mouse and a keyboard to the USB inputs  |
+   |        |of the RPI board. Connect a monitor to the HDMI output of   |
+   |        |the RPI board.                                              |                                                  
+   +--------+------------------------------------------------------------+   
+
+   
+.. table::
+   :align: center
+
+   +--------+------------------------------------------------------------+
+   |        |   .. image:: step_n_4/step_4_40.jpg                        |
+   |      39+------------------------------------------------------------+
+   |        |Connect the red and black cables of board A to a 12V        |
+   |        |battery or other laboratory power supply delivering a 12VDC |
+   |        |voltage.                                                    |
+   |        |Enjoy 😊                                                    |
+   +--------+------------------------------------------------------------+  
+
+   
+   
\ No newline at end of file
diff --git a/doc/source/source_rst/V2024.x.x/V2024.rst b/doc/source/source_rst/V2024.x.x/V2024.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3b7c7486058b2f5aa91443199dcae18cabbc1b4c
--- /dev/null
+++ b/doc/source/source_rst/V2024.x.x/V2024.rst
@@ -0,0 +1,326 @@
+********************************************
+OhmPi V2023 (64 electrodes and 12V)
+******************************************** 
+
+.. warning::
+  **OhmPi is a participative project open to all, it requires skills in electronics and to respect the safety rules. OhmPi must be assembled in a professional context and by people competent in electronics. The OhmPi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OhmPi. The OhmPi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. figure:: image_ohmpi_2.jpg
+     :width: 400px
+     :align: center
+     :height: 350px
+     :alt: OhmPi V: 2023.0.0-rc1
+     :figclass: align-center
+
+.. note:: 
+   In this version, we have developed two new board types that allow the assembly of OhmPi v2023, a measurement board and a multiplexer board.
+   This new version is made up of:
+
+   1. A measurement board for four-point measurement
+
+   2. 4 multiplexer cards
+
+   3. A box
+
+  The OhmPi V2023 software has been adapted to handle this new boards and also includes many new functionalities.
+
+The philosophy of OhmPi
+========================
+
+The philosophy of OhmPi V2023 is to offer a new DIY multi-electrode 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 its experience and wishes to improve and offer a more and more robust tool to the community. OhmPi 2023 is completely different version from the previous one. 
+We will stop the development on the version V1.0x, to dedicate our efforts on this new version.
+
+=============================================================================================================================================================
+
+Hardware
+========
+
+Specifications
+--------------
+
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+| **Parameter**                 |       **V1.0x**       | Units     |       **v2023**       | Units     |
++===============================+=======================+===========+=======================+===========+
+|Electrodes                     |32                     |           |64 to 128              |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Operating temperature          |-0 to 50               |°c         |-25 to 50              |°C         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Power consumption of CPU and   |18.5                   |W          |18.5                   |W          |
+|control system                 |                       |           |                       |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Voltage injection              |12                     |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Battery                        |9                      |V          |12                     |V          |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Current                        |0 to 40                |mA         |0 to 40                |mA         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Min pulse duration             |150                    |ms         |150                    |ms         |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Input impedance                |80                     |MOhm       |80                     |MOhm       |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Data storage                   |micro SD card          |           |micro SD card          |           |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+|Resolution                     |0.01                   |Ohm        |0.01                   |Ohm        |
++-------------------------------+-----------------------+-----------+-----------------------+-----------+
+
+Building an OhmPi V2023 step by step
+------------------------------------
+
+.. toctree::
+   :maxdepth: 2
+
+   Ohmpi_V2023/V2023_step_01
+   Ohmpi_V2023/V2023_step_02
+   Ohmpi_V2023/V2023_step_03
+   Ohmpi_V2023/V2023_step_04
+
+
+Software and operation
+======================
+
+System architecture
+-------------------
+
+The OhmPi V2023 software is designed around a new architecture whose main components are summarized in the figure below.
+
+.. figure:: img/architecture.png
+
+     Software architecture of OhmPi V2023.
+
+The general system configuration is defined in the `config.py` file covered in the `Configuration file`_ section.
+The acquisition settings (i.e. injection duration, stacks...) are defined in a separate JSON file (default: ohmpi_settings.json).  
+
+The central software component is the ohmpi.py file that contains the OhmPi class that interacts with the hardware. Other python files include utils and handlers (see the `Loggers`_ section for more details).
+A communication layer (I/O interface) on top of OhmPi allows for different user interfaces depending on the use cases (see `Interfaces and applications`_).
+
+Loggers
+-------
+
+Loggers have been introduced in this release. They use the excellent logging python package.
+Specific handlers have been implemented for running with ohmpi.py (one for logging to an mqtt broker (see `MQTT interface`_ for more details) and one for creating zipped rotated logs on disk).
+
+Two loggers have been defined. The first one is dedicated to log operations execution. It is named exec_logger. The second one, named data_logger, is dedicated to log data. A third one is planned to log the state of health (SOH) of the system in a future version.
+
+By default, logs are written to the console (print-like), stored locally in files (a zip is created after some time i.e. every day and/or when the size of the log exceeds a maximum size) and sent to an MQTT broker. Different logging levels may be defined for the different logs and handlers in the `Configuration file`_.
+
+Advanced users may write new handlers and edit the `setup_loggers.py` file to customize the logging mechanisms to their needs.
+
+Configuration file
+------------------
+
+The configuration of the OhmPi file `config.py` allows to configure the OhmPi.
+A default version of `config.py` is provided in the repository.
+This file should be edited to customize the configuration following the user's needs and preferences.  
+
+The configuration includes setting the logging level desired for the different loggers and handlers, setting the mqtt broker(s) used for logging and control of the OhmPi and defining the options used for MQTT communication (i.e. username, password, security options...)  
+
+One should make sure to understand the parameters before altering them. It is also recommended to keep a copy of the default configuration.
+
+
+
+Interfaces and applications
+---------------------------
+
+Different interfaces can be used to interact with the OhmPi.
+
+Available interfaces are:
+- `Web interface`_ (=HTTP interface): run in bash: `bash run_http_interface.sh`
+- Python API: import the OhmPi class from Python script: `from ohmpi import OhmPi` (see `Python interface`_)
+- MQTT: IoT messaging through a broker (see `MQTT interface`_)
+
+
+Web interface
+.............
+
+This is a user friendly graphical interface for new users as well as running quick and easy acquisitions.
+
+The Raspberry Pi of the OhmPi is used as a Wi-Fi Access Point (AP) and runs
+a small webserver to serve the 'index.html' interface. Using a laptop or
+a mobile phone connected to the Wi-Fi of the Raspberry Pi, one can see this
+interface, upload sequences, change parameters, run a sequence and download data.
+
+To configure the Raspberry Pi to act as an access point and run
+the webserver automatically on start, see instructions on `raspap.com <https://raspap.com/>`_ and in 'runOnStart.sh'.
+
+Once configured, the webserver should start by itself on start and once
+connected to the Pi, the user can go to `10.3.141.1:8080 <http://10.3.141.1:8080>`_
+to access the interface.
+
+.. figure:: img/http-interface-pseudo-section.png
+
+    Web interface with its interactive pseudo-section.
+
+
+.. figure:: img/http-interface-evolution.png
+
+     Evolution of quadrupole apparent resistivity with time.
+
+
+.. figure:: img/http-interface-rs.png
+
+     Contact resistance check.
+
+
+
+Python interface
+................
+
+This interface offers a more direct access to the software components especially well suited for testing or automation on the Raspberry Pi.
+
+By importing the `OhmPi` class from the ohmpi.py, one can control the OhmPi using interactive IPython.
+Typically, it involves using the terminal or an Python IDE such as Thonny on the Raspberry Pi. One can also connect using
+ssh and run the Python interface (see PuTTY on Windows or ssh command on macOS/Linux).
+
+To access the Python API, make sure the file ohmpi.py is in the same
+directory as where you run the commands/script. The file ohmpi.py can
+be found on the OhmPi gitlab repository. We recommend downloading the
+entire repository as ohmpi.py import other .py files and default configuration
+files (.json and .py).
+
+
+.. code-block:: python
+  :caption: Example of using the Python API to control OhmPi
+
+  import os
+  import numpy as np
+  import time
+  os.chdir("/home/pi/OhmPi")
+  from ohmpi import OhmPi
+
+  ### Define object from class OhmPi
+  k = OhmPi()  # this loads default parameters from the disk
+
+  ### Default parameters can also be edited manually
+  k.settings['injection_duration'] = 0.5  # injection time in seconds
+  k.settings['nb_stack'] = 1  # one stack is two half-cycles
+  k.settings['nbr_meas'] = 1  # number of time the sequence is repeated
+
+  ### Update settings if needed
+  k.update_settings({"injection_duration":0.2})
+
+  ### Set or load sequence
+  k.sequence = np.array([[1,2,3,4]])    # set numpy array of shape (n,4)
+  # k.set_sequence('1 2 3 4\n2 3 4 5')    # call function set_sequence and pass a string
+  # k.load_sequence('ABMN.txt')    # load sequence from a local file
+
+  ### Run contact resistance check
+  k.rs_check()
+
+  ### Run sequence (synchronously - it will wait that all
+  # sequence is measured before returning the prompt
+  k.run_sequence()
+  # k.run_sequence_async()  # sequence is run in a separate thread and the prompt returns immediately
+  # time.sleep(2)
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Run multiple sequences at given time interval
+  k.settings['nb_meas'] = 3  # run sequence three times
+  k.settings['sequence_delay'] = 100 # every 100 s
+  k.run_multiple_sequences()  # asynchron
+  # k.interrupt()  # kill the asynchron sequence
+
+  ### Single measurement can also be taken with
+  k.switch_mux_on([1, 4, 2, 3])
+  k.run_measurement()  # use default acquisition parameters
+  k.switch_mux_off([1, 4, 2, 3])  # don't forget this! risk of short-circuit
+
+  ### Custom or adaptative argument, see help(k.run_measurement)
+  k.run_measurement(nb_stack=4,  # do 4 stacks (8 half-cycles)
+                    injection_duration=2,  # inject for 2 seconds
+                    autogain=True)  # adapt gain of ADS to get good resolution
+
+
+
+MQTT interface
+..............
+
+This is an interface designed for an advanced remote usage of the OhmPi such as remote automation, data consumption by multiple processes and interaction with other sensors in the scope of a monitoring. It is based on the MQTT protocol, designed for the Internet of Things (IoT), to interact with the OhmPi.  
+
+This option allows interacting remotely with a single OhmPi, a network of OhmPis, as well as auxiliary instruments and sensors. The communication is based on a publish/subscribe approach and involves a MQTT broker.  
+
+An example of MQTT broker that can be used is `Mosquitto <https://mosquitto.org/>`_. Depending on the monitoring needs, an MQTT broker can be set up locally on the Raspberry Pi, on a local network or any remote server reachable through the net. A local Mosquitto broker can be set up and enabled to run as a service on the OhmPi using the bash script install_local_mqtt_broker.sh.  
+
+MQTT messages include logging messages from the OhmPi and commands sent to the OhmPi. These messages can be examined easily using a third party software such as `MQTT Explorer <http://mqtt-explorer.com/>`_.
+
+Commands sent on the broker are received by the ohmpi.py script that runs on the OhmPi (make sure ohmpi.py starts on reboot) and further processed.
+MQTT commands are sent in JSON format following the Python API with kwargs as illustrated below:
+
+.. code-block:: json
+  :caption: Updating acquisition settings.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "update_settings", Depending on the experiment needs, MQTT brokers can be set up locally on the Raspberry Pi or on a local or remote server.
+    "kwargs": {
+      "config": {
+        "nb_meas": 2,
+        "nb_electrodes": 10,
+        "nb_stack": 2,
+        "injection_duration": 2,
+        "sequence_delay": 100
+      }
+    }
+  }
+
+
+.. code-block:: json
+  :caption: Check contact resistances
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "rs_check",
+  }
+
+.. code-block:: json
+  :caption: Running a sequence.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_sequence",
+  }
+
+.. code-block:: json
+  :caption: Running same sequence multiple times (nb_meas).
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4Yw",
+    "cmd": "run_multiple_sequences",
+  }
+
+.. code-block:: json
+  :caption: Interrupt current acquisition.
+
+  {
+    "cmd_id": "3fzxv121UITwGjWYgcz4xw",
+    "cmd": "interrupt",
+  }
+
+Custom processing of messages and tailor-made dashboards for monitoring experiments may be designed using a browser-based flow editor such as `Node-red <http://mqtt-explorer.com/>`_.
+This may help designing complex IoT experiments and monitoring systems in which OhmPi is a component. 
+
+Examples incorporating execution commands and data outputs from OhmPi can be found in the OhmPi examples. Once Node-RED is installed on the OhmPi, these examples can be accessed separately by running a command in the console such as :
+
+.. code-block:: console
+     node-red basic_ohmpi_flows_node-red.json
+
+These examples may require installing some additional node packages in order to work properly. This can be done in the `Palette Manager <https://nodered.org/docs/user-guide/editor/palette/manager> within Node-RED.
+
+.. figure:: img/node-red_flow.png
+
+     Example flow in node-red to interact with an OhmPi.
+
+
+.. figure:: img/node-red_interface_control.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - control tab.
+     
+.. figure:: img/node-red_interface_data.png
+
+     Example of a dashboard UI created with node-red to interact with an OhmPi - data visualization tab.
+
+
+For more documentation dedicated to node-red, please refer to the Node-red `cookbooks <https://cookbook.nodered.org/>`_.
diff --git a/doc/source/Ohmpi_V2024/mux_2024/mux_2024_address_jumpers.png b/doc/source/source_rst/V2024.x.x/mux_2024/mux_2024_address_jumpers.png
similarity index 100%
rename from doc/source/Ohmpi_V2024/mux_2024/mux_2024_address_jumpers.png
rename to doc/source/source_rst/V2024.x.x/mux_2024/mux_2024_address_jumpers.png
diff --git a/doc/source/source_rst/api.rst b/doc/source/source_rst/api.rst
new file mode 100644
index 0000000000000000000000000000000000000000..c5c9a92aca74518508821f8a32c77fe20aa3f902
--- /dev/null
+++ b/doc/source/source_rst/api.rst
@@ -0,0 +1,9 @@
+API reference
+=============
+.. toctree::
+   :maxdepth: 2
+   :caption: Contents:
+.. automodule:: ohmpi
+   :members:
+
+
diff --git a/doc/source/source_rst/v1.xx/V1_01.rst b/doc/source/source_rst/v1.xx/V1_01.rst
new file mode 100644
index 0000000000000000000000000000000000000000..474ea7091e8488a305cecd947b1db10e4ec4c63c
--- /dev/null
+++ b/doc/source/source_rst/v1.xx/V1_01.rst
@@ -0,0 +1,531 @@
+*****************************************
+OhmPi V 1.01 (limited to 32 electrodes)
+***************************************** 
+
+.. warning::
+    This version corresponds to the version published in the Hardware X journal.
+    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.
+    
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.**
+
+    
+
+
+The philosophy of Ohmpi 
+**************************
+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
+
+
+Technical data
+***************
++-------------------------------+--------------------+-----------+
+| **Parameter**                 | **Specifications** | Units     |
++-------------------------------+--------------------+-----------+
+|Electrodes                     |32                  |           |
++-------------------------------+--------------------+-----------+
+|Operating temperature          |0 to 50             |°C         |
++-------------------------------+--------------------+-----------+
+|Power consumption of CPU and   |18.5                |W          |             
+|control system                 |                    |           |
++-------------------------------+--------------------+-----------+
+|Voltage injection              |9                   |V          |
++-------------------------------+--------------------+-----------+
+|Battery                        |12                  |V          |
++-------------------------------+--------------------+-----------+
+|Current                        |0 to 50             |mA         |
++-------------------------------+--------------------+-----------+
+|Min pulse duration             |150                 |ms         |
++-------------------------------+--------------------+-----------+
+|Input impedance                |36                  |MOhm       |
++-------------------------------+--------------------+-----------+
+|Data storage                   |micro SD card       |           |
++-------------------------------+--------------------+-----------+
+|Resolution                     |O.O1                |Ohm        |
++-------------------------------+--------------------+-----------+
+
+Raspberry Pi  configuration
+****************************************** 
+OS installation  
+================
+
+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 
+
+1. Watch the video "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk)
+
+2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). 
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+     
+     .. figure:: raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+
+3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. 
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     cd /boot/
+
+4. Open config.txt with GNU nano editor
+
+ .. code-block:: python
+
+     sudo nano config.txt
+
+5. At the end of the file write : 
+
+ .. code-block:: python
+     
+     gpio=8=op,dl
+     gpio=7=op,dl
+
+6. Press Ctrl +O to save the modifications and press enter
+7. Press Ctrl +x to escape and return to the terminal
+8. Close the terminal
+
+
+
+Virtual Environment and packages
+================================
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+    
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+     
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+     
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+     
+     pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas
+
+Check that requirements are met using 
+
+.. code-block:: python
+     
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+      
+     deactivate
+
+
+Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi) 
+======================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+       
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center 
+
+8- Close the window by clicking on **ok**.
+
+9- Close thonny to save modifications
+
+ 
+Assembly of the measuring/current injection cards, and connection with the Raspberry Pi
+***************************************************************************************** 
+
+Electrical resistivity measurements board
+==========================================
+
+a) Description
+-----------------------------
+
+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 
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. 
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test 
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. 
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute 
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which 
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, 
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been 
+set at 50 ohms in order to ensure:
+•	a precise resistance,
+•	a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) 
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. 
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the 
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included 
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge 
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, 
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking 
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials 
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve 
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the 
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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.
+
+.. figure:: schema_measurement_board.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board
+   
+b) Implementation
+--------------------------------
+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 :
+
+* Step no. 1: test divider bridge
+     For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..
+
+    .. math::
+        coef po = (R1 + R2) / R1
+        
+    .. math::	
+        coef p1 = (R3 + R4) / R3
+        
+    .. math::	
+        coef p2 = (R7 + R6) / R7
+        
+    .. math::
+        coef p3 = (R9 + R8) / R9
+        
+    .. code-block:: python
+        :linenos:
+        :lineno-start: 36
+
+         """
+         hardware parameters
+         """
+         R_ref = 50 # reference resistance value in ohm
+         coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V
+         coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V
+         coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V
+         coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V
+
+    The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.	
+
+
+* Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1%. 
+* Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%. 
+* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks 
+* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code
+* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the direction).
+
+1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a weaker 
+or stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors. 
+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.
+
+.. figure:: measurement_board.jpg
+   :width: 800px
+   :align: center
+   :height: 500px
+   :alt: alternate text
+   :figclass: align-center
+
+   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
+   
+.. figure:: measurement_board-2.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board installation with Raspberry Pi
+   
+Current injection board
+=======================
+
+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 
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This 
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts 
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open 
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected 
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse 
+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.
+
+.. figure:: current_board.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wiring of the 4-channel relay module board for current injection management
+
+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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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.   
+
+.. figure:: installation_current_board.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Current injection board installation with Raspberry Pi
+   
+   
+Congratulations, you have build a 4 electrodes resistivity-meter.
+
+
+First four electrodes resistivity measurement
+=============================================
+
+
+Under construction !
+
+Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit
+
+   
+Multiplexer implementation
+**************************
+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 
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of 
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.
+
+
+We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay 
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested 
+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.
+
+.. figure:: multiplexer_implementation.jpg
+   :width: 800px
+   :align: center
+   :height: 500px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Schematic diagram of the wiring of two 16-channel relay shields
+
+   
+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. 
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.
+
+Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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.
+ 
+ .. figure:: connection.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Connection to the 16-channel relay shield
+ 
+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.
+*	Follow the diagram and solder the pins as shown in Fig.
+*	Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.
+
+For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.
+
+
++-------------------------------+-------------------------------------------+---------------------+
+|                               |Relay shield n°1                           |Relay Shield n°2     |                      
+|                               +----------+----------+----------+----------+---------------------+
+|                               |Pin 1     |Pin 2-3   |Pin 4-7   |Pin 8-16  |Pin 1- 16            |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer A                 |12        |16        |20        |21        |26                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer B                 |18        |23        |24        |25        |19                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer M                 |06        |13        |04        |17        |27                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer N                 |22        |10        |09        |11        |05                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+    
+    Connection of the GPIOs to each multiplexer
+
+
+Electrode connection
+*************************
+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.
+
+.. figure:: cable.jpg
+   :width: 800px
+   :align: center
+   :height: 300px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wire cabling for multiplexer and terminal screw connection
+
+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.
+
+.. figure:: electrode_cable.jpg
+   :width: 800px
+   :align: center
+   :height: 800px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Example of a multiplexer connection to the screw terminal for electrode no. 1.
+ 
+.. warning::
+    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.
+
+Operating instruction
+*************************
+
+Preliminary procedure (Only for the initial operation)
+======================================================
+The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) 
+or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. 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.
+ 
+ 
+Startup procedure
+==================
+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 
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”, 
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py” 
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be 
+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.
+
+Electrical resistivity measurement parameters description
+==========================================================
+
+.. code-block:: python
+    :linenos:
+    :lineno-start: 27
+
+     """
+     measurement parameters
+     """
+     nb_electrodes = 32 # maximum number of electrodes on the resistivity meter
+     injection_duration = 0.5 # Current injection duration in second
+     nbr_meas= 1 # Number of times the quadrupole sequence is repeated
+     sequence_delay= 30 # Delay in seconds between 2 sequences
+     stack= 1 # repetition of the current injection for each quadrupole
+
+The measurement parameters can be adjusted in lines 27 to 30 of the ohmpi.py code.
+
+Complete list of components
+*******************************
+.. warning::
+   The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date  
+
+
+.. csv-table:: Table Title
+   :file: list.csv
+   :widths: 30, 70, 70, 70, 70,70
+   :header-rows: 1
+
+
diff --git a/doc/source/source_rst/v1.xx/V1_02.rst b/doc/source/source_rst/v1.xx/V1_02.rst
new file mode 100644
index 0000000000000000000000000000000000000000..6dad02c86ccf2e61b98712c1b419467572497792
--- /dev/null
+++ b/doc/source/source_rst/v1.xx/V1_02.rst
@@ -0,0 +1,546 @@
+***************************************
+OhmPi V 1.02 (limited to 32 electrodes)
+***************************************
+
+
+.. warning::
+    **Ohmpi is a participative project open to all, it requires skills in electronics and to respect the safety rules. Ohmpi must be assembled in a professional context and by people competent in electronics. The Ohmpi team cannot be held responsible for any material or human damage which would be associated with the use or the assembly of OHMPI. The Ohmpi team cannot be held responsible if the equipment does not work after assembly.**
+
+
+
+.. note::
+
+     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.
+
+
+
+
+The philosophy of Ohmpi 
+***********************
+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
+
+
+Technical data
+***************
++-------------------------------+--------------------+-----------+
+| **Parameter**                 | **Specifications** | Units     |
++-------------------------------+--------------------+-----------+
+|Electrodes                     |32                  |           |
++-------------------------------+--------------------+-----------+
+|Operating temperature          |0 to 50             |°C         |
++-------------------------------+--------------------+-----------+
+|Power consumption of CPU and   |18.5                |W          |             
+|control system                 |                    |           |
++-------------------------------+--------------------+-----------+
+|Voltage injection              |9                   |V          |
++-------------------------------+--------------------+-----------+
+|Battery                        |12                  |V          |
++-------------------------------+--------------------+-----------+
+|Current                        |0 to 50             |mA         |
++-------------------------------+--------------------+-----------+
+|Min pulse duration             |150                 |ms         |
++-------------------------------+--------------------+-----------+
+|Input impedance                |36                  |MOhm       |
++-------------------------------+--------------------+-----------+
+|Data storage                   |micro SD card       |           |
++-------------------------------+--------------------+-----------+
+|Resolution                     |O.O1                |Ohm        |
++-------------------------------+--------------------+-----------+
+
+Raspberry Pi  configuration
+****************************************** 
+OS installation  
+================
+
+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 
+
+1. Watch the video "how to set up your raspberry Pi" (https://www.youtube.com/watch?v=wjWZhV1v3Pk)
+
+2. The authors recommend installing the latest stable and complete version of Raspbian by using NOOBS (a simple-to-use operating system installer). 
+
+.. note:: 
+     All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian:
+
+     .. figure:: raspbian_version.jpg
+       :width: 800px
+       :align: center
+       :height: 400px
+       :alt: alternate text
+       :figclass: align-center
+
+
+
+.. warning::
+     Once the OS has been installed,  **1-wire, spi and GPIO remote option** must be deactivated via the Raspbian GUI settings menu. Failure to carry out this task may cause damage to the relay shield cards during measurements.
+
+
+
+
+3. When the relays are connected to the GPIO, make sure that all the GPIOs are in the low position when the raspberry starts up. If not, the relays will activate unexpectedly. 
+To ensure that the GPIOs are in Low position, you will need to modify the /boot/config.txt file.
+
+ Run the terminal, and write
+
+ .. code-block:: python
+
+     cd /boot/
+
+4. Open config.txt with GNU nano editor
+
+ .. code-block:: python
+
+     sudo nano config.txt
+
+5. At the end of the file write : 
+
+ .. code-block:: python
+
+     gpio=8=op,dl
+     gpio=7=op,dl
+
+6. Press Ctrl +O to save the modifications and press enter
+7. Press Ctrl +x to escape and return to the terminal
+8. Close the terminal
+
+
+
+Virtual Environment and packages
+================================
+
+All dependencies are specified in requirements.txt
+
+.. note:: 
+     All instructions below should be typed in the terminal
+
+It is first necessary to ensure that the libatlas-base-dev library is installed:
+
+.. code-block:: python
+
+     sudo apt-get install libatlas-base-dev
+
+We strongly recommend users to create a virtual environment to run the code and installed all required dependencies. It can be done either in a directory gathering all virtual environments used on the computer or within the ohmpy directory.
+
+Create the virtual environment:
+
+.. code-block:: python
+
+     python3 -m venv ohmpy
+
+Activate it using the following command:
+
+.. code-block:: python
+
+     source ohmpy/bin/activate
+
+Install packages within the virtual environment. Installing the following package should be sufficient to meet dependencies:
+
+.. code-block:: python
+
+     pip install RPi.GPIO adafruit-blinka numpy adafruit-circuitpython-ads1x15 pandas
+
+Check that requirements are met using 
+
+.. code-block:: python
+
+     pip list
+
+You should run you code within the virtual environment
+to leave the virtual environment simply type:
+
+.. code-block:: python
+
+     deactivate
+
+
+Activate virtual environment on Thonny (Python IDE)  (on Raspberry Pi)
+======================================================================
+
+If you decided to use a virtual environment, it is necessary to setup Thonny Python IDE the first time you use it.
+
+1- Run the Thonny Python IDE software, Click on raspberry access **menu > programming> Thonny pythonIDE**
+
+2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3))
+
+.. figure:: thonny_first_interface.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+3-Click on **Run>select interpreter**, a new window opens click on interpret
+
+.. figure:: thonny_option.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+4-On the new open windows select **alternative Python3 or virtual environment**
+
+.. figure:: thonny_interpreter.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+5- New buttons appeared, selected **"locate another python executable "**
+
+6- A new window opens, find the folder where there is the python 3 file in the virtual environment folder previously created **/home/pi/ohmpi/bin/python3**.
+
+7- In the **known interpreter** tab the path of the virtual environment should appear
+
+.. figure:: thonny_interpreter_folder.jpg
+       :width: 600px
+       :align: center
+       :height: 450px
+       :alt: alternate text
+       :figclass: align-center
+
+8- Close the window by clicking on **ok**.
+
+9- Close thonny to save modifications
+
+ 
+Assembly of the measuring/current injection cards, and connection with the Raspberry Pi
+***************************************************************************************** 
+
+Electrical resistivity measurements board
+==========================================
+
+a) Description
+-----------------------------
+
+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 
+input signal value could lie between - to + 6.114 V. The ADS1115 is mounted on a board adapted from an in-house design. 
+Figure 5 shows the general diagram for the electronic measurement board developed. This figure also displays the test 
+circuit used to test the board in the laboratory, which mimics the behavior of a soil subjected to current injection. 
+In this test circuit, resistance R11 represents the soil resistance.
+Soil resistance R11 is connected to electrodes A and B for the current injection. Resistors R10 and R12 constitute 
+the contact resistances between soil and electrodes; they are typically made of stainless steel. The battery, which 
+allows for direct current injection, is connected in series with resistors R10, R11 and R12. In this part of the board, 
+resistance R9 has been added to measure the current flowing between electrodes A and B. This resistance value has been 
+set at 50 ohms in order to ensure:
+•	a precise resistance,
+•	a resistance less than the sum of resistors R10, R11 and R12; indeed, R10 and R12 generally lie between 100 and 5,000 ohms.
+To measure the current intensity between A and B, the electrical potential difference at the pole of the reference resistor (R9) 
+is measured. The intensity (in mA) is calculated by inserting the resulting value into the following: ?
+To measure the potential difference needed to measure current intensity, the ADS 1115 is connected to the ground of the circuit. 
+In our case, the ground reference is electrode B. The analog inputs A1 and A0 of the ADS1115 are connected to each pole of the 
+reference resistor (R9). In order to increase input impedance and adapt the signal gain, tracking amplifiers have been included 
+and completed by a divider bridge (R5, R8, R6 and R7) located between the two amplifiers. The resistance of the divider bridge 
+ensures that the signal remains between 0 and 5 V, in accordance with the ADS1115 signal gain. To measure the potential difference, 
+the M and N electrodes are connected to analog inputs A2 and A3 of the ADS 1115. Between the ADC and the electrodes, two tracking 
+amplifiers and a divider bridge have been positioned so as to obtain a potential lying within the 0-5 V range at the analog input of the ADS 1115.
+Let's note that the potential difference value would equal the potential measured with ADS1115 multiplied by the voltage reduction
+value of the divider bridge (see Section 5.2). Despite the use of high-resolution resistance (i.e. accurate to within 1%), it is
+still necessary to calibrate the divider bridge using a precision voltmeter. For this purpose, the input and output potentials 
+of the divider bridge must be measured using an equivalent circuit for various electrical potential values. These values serve 
+to calculate the gain. With this electronic board, it is possible to measure the potential and intensity without disturbing the 
+electric field in the ground, with the total input impedance value being estimated at 36 mega-ohms.
+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.
+In version 1.02, we have improved the electronic board of measurement. we have added a DC/DC converter to supply the operational amplifiers 
+(2 Traco power DC/DC converter TRN3-1215). These converters allow to limit the suppression of the signal when the injected voltage is higher than 10V.
+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.
+
+.. figure:: schema_measurement_board1_02.png
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board (Ohmpi version 1.02)
+   
+.. note::
+     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.
+   
+   
+   
+b) Implementation
+--------------------------------
+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 :
+
+* Step no. 1: test divider bridge
+     For each measurement channel, we have installed a bridge divider, it is necessary to test with ohmmeter the value of the resistances, to adjust  each coefficients (coef_p0, coef_p1, coef_p2, coef_p3) in the Ohmpi.py code..
+
+    .. math::
+        coef po = (R1 + R2) / R1
+
+    .. math::
+        coef p1 = (R3 + R4) / R3
+
+    .. math::
+        coef p2 = (R7 + R6) / R7
+
+    .. math::
+        coef p3 = (R9 + R8) / R9
+
+    .. code-block:: python
+        :linenos:
+        :lineno-start: 36
+
+         """
+         hardware parameters
+         """
+         R_ref = 50 # reference resistance value in ohm
+         coef_p0 = 2.5 # slope for current conversion for ADS.P0, measurement in V/V
+         coef_p1 = 2.5 # slope for current conversion for ADS.P1, measurement in V/V
+         coef_p2 = 2.5 # slope for current conversion for ADS.P2, measurement in V/V
+         coef_p3 = 2.5 # slope for current conversion for ADS.P3, measurement in V/V
+
+    The coefficient parameters can be adjusted in lines 40 to 43 of the ohmpi.py code.
+
+
+* Step no. 2: installation of the 1-KOhm resistors with an accuracy of ± 1% (b-in the figure).
+* Step no. 3: installation of the 1.5-KOhm resistors with an accuracy of ± 1%(C-in the figure).
+* Step no. 4: installation of both the black female 1 x 10 header and the 7-blue screw terminal blocks (c-in the figure)
+* Step no. 5: installation of the 50-Ohm reference resistor ± 0.1%, please check the value and correct the line 39 in ohmpi.py code (d-in the figure)
+* Step no. 6: addition of both the ADS115 directly onto the header (pins must be plugged according to the figure) and the LM358N operational amplifiers (pay attention to the orientation) (e-in the figure).
+* Step no. 7: installation of the 10-MOhm resistors with an accuracy of ± 5% (f-in the figure).
+* Step no. 8: installation of the two DC/DC converter TRN3-1215 (h-in the figure).
+* Step no. 9: installation of the four capacitor on 100-nF/50vDC and the fuse of 10-A (h-in the figure).
+ 
+1-KOhm and 1.5-KOhm resistors apply to the divider bridge. If, for example, you prefer using a stronger power supply, it would be possible to adjust the divider bridge value by simply modifying these resistors.
+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.
+
+.. figure:: measurement_board1-02.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+
+   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
+   
+.. figure:: measurement_board-2-V1-02.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Measurement board installation with Raspberry Pi
+   
+Current injection board
+=======================
+
+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 
+in current circulating into the ground. The current is injected through electrodes A and B (see Fig. 2). This 
+injection is controlled via a 4-channel relay module board connected to the Raspberry Pi. The mechanical relay
+module board is shown in Figure 4. Relays 1 and 2 serve to switch on the current source. The common contacts 
+of relays 1 and 2 are connected to the positive and negative battery poles, respectively. The normally open 
+contacts of both relays are connected to the common contacts of relays 3 and 4. Relays 1 and 2 are connected 
+to the GPIO 7 on the Raspberry Pi and therefore activate simultaneously. The role of relays 3 and 4 is to reverse 
+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.
+
+.. figure:: current_board.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wiring of the 4-channel relay module board for current injection management
+
+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
+purpose, it is necessary to solder together the two pins on the 4-channel relay shield module and connect them to the Raspberry Pi GPIO-7 (Fig. 10). The same must be performed for inputs In3 and In4 with GPIO-8. Connect the GND and 5Vdc pins of
+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.   
+
+.. figure:: installation_current_board_1_02.jpg
+   :width: 800px
+   :align: center
+   :height: 700px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Current injection board installation with Raspberry Pi
+   
+   
+Congratulations, you have build a 4 electrodes resistivity-meter.
+
+
+First four electrodes resistivity measurement
+=============================================
+
+
+Under construction !
+
+Describe the way to validate the first part of the instruction.
+Electrical resistivity measurement on test circuit
+
+   
+Multiplexer implementation
+**************************
+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 
+of measurements conducted on different electrode arrays. A multiplexer is therefore used to connect each channel to one of 
+the 32 electrodes stuck into the ground, all of which are connected to the data logger.
+
+
+We will describe below how to assemble the four multiplexers (MUX), one per terminal. A multiplexer consists of 2 relay 
+modules with 16 channels each. On the first board, on each MUX, 15 relays out of the 16 available will be used. Please note that the suggested 
+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.
+
+.. figure:: multiplexer_implementation.jpg
+   :width: 800px
+   :align: center
+   :height: 500px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Schematic diagram of the wiring of two 16-channel relay shields
+
+   
+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. 
+As a final step, connect the cables to the correct connectors. This operation must be repeated in order to carry out all the wiring shown in Figure below.
+
+Once the operation has been completed, the 16 control pins of each 16-channel relay shield card must be prepared. Each card actually contains 16 input channels
+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.
+ 
+ .. figure:: connection.jpg
+   :width: 800px
+   :align: center
+   :height: 400px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Connection to the 16-channel relay shield
+ 
+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.
+*	Follow the diagram and solder the pins as shown in Fig.
+*	Lastly, solder 0.5-mm² wires 1 m in length to the test circuit.
+
+For relay shield no. 2, follow the same procedure, but solder all the pins together (d-e-f).
+This same operation must be repeated for the other three multiplexers as well.
+The next step consists of connecting the relay card inputs to the Raspberry Pi according to Table 5 for all four multiplexers.
+
+
++-------------------------------+-------------------------------------------+---------------------+
+|                               |Relay shield n°1                           |Relay Shield n°2     |                      
+|                               +----------+----------+----------+----------+---------------------+
+|                               |Pin 1     |Pin 2-3   |Pin 4-7   |Pin 8-16  |Pin 1- 16            |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer A                 |12        |16        |20        |21        |26                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer B                 |18        |23        |24        |25        |19                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer M                 |06        |13        |04        |17        |27                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+| Multiplexer N                 |22        |10        |09        |11        |05                   |
++-------------------------------+----------+----------+----------+----------+---------------------+
+    
+    Connection of the GPIOs to each multiplexer
+
+
+Electrode connection
+*************************
+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.
+
+.. figure:: cable.jpg
+   :width: 800px
+   :align: center
+   :height: 300px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Wire cabling for multiplexer and terminal screw connection
+
+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.
+
+.. figure:: electrode_cable.jpg
+   :width: 800px
+   :align: center
+   :height: 800px
+   :alt: alternate text
+   :figclass: align-center
+   
+   Example of a multiplexer connection to the screw terminal for electrode no. 1.
+ 
+.. warning::
+    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.
+
+Operating instruction
+*************************
+
+Preliminary procedure (Only for the initial operation)
+======================================================
+The open source code must be downloaded at the Open Science Framework source file repository for this manuscript (https://osf.io/dzwb4/) 
+or at the following Gitlab repository address: https://gitlab.irstea.fr/reversaal/OhmPi. 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.
+ 
+ 
+Startup procedure
+==================
+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 
+(for laboratory measurements) or a power bank (5V - 2A for field measurements). At this point, you'll need to access the Raspbian operating system. Inside the previously created folder “ohmPi”, 
+the protocol file “ABMN.txt” must be created or modified; this file contains all quadrupole ABMN numeration (an example is proposed with the source code). Some input parameters of the main “ohmpi.py” 
+function may be adjusted/optimized depending on the measurement attributes. For example, both the current injection duration and number of stacks can be adjusted. At this point, the9 V and 12-V battery can be 
+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.
+
+Electrical resistivity measurement parameters description
+==========================================================
+
+In the version 1.02, the measurement parameters are in the Jason file (ohmpi_param.json).
+
+.. code-block:: python
+    :linenos:
+    :lineno-start: 1
+
+
+     nb_electrodes = 32 # maximum number of electrodes on the resistivity meter
+     injection_duration = 0.5 # Current injection duration in second
+     nbr_meas= 1 # Number of times the quadrupole sequence is repeated
+     sequence_delay= 30 # Delay in seconds between 2 sequences
+     stack= 1 # repetition of the current injection for each quadrupole
+     export_path= "home/pi/Desktop/measurement.csv"
+
+
+
+Complete list of components
+*******************************
+.. warning::
+   The list evolve a little bit after the publication of the article, it is necessary to refer to this list, the article is out of date  
+
+
+.. csv-table:: List of components
+   :file: list - 1_02.csv
+   :widths: 30, 70, 70, 70, 70,70
+   :header-rows: 1
+
+