From 1e8e6fe51a5b1804043b0c0a74e788002105d12c Mon Sep 17 00:00:00 2001 From: "remi.clement" <remi.clement@inrae.fr> Date: Tue, 28 Nov 2023 11:04:56 +0100 Subject: [PATCH] update V1.02 --- doc/build/doctrees/environment.pickle | Bin 70912 -> 70786 bytes doc/build/doctrees/index.doctree | Bin 8005 -> 8057 bytes .../V2023.x.x/V2023_step_02.doctree | Bin 98750 -> 103294 bytes .../V2023.x.x/V2023_step_03.doctree | Bin 39110 -> 70901 bytes .../developing_hardware_components.doctree | Bin 0 -> 10104 bytes .../doctrees/source_rst/v1.xx/V1_01.doctree | Bin 87301 -> 110558 bytes .../doctrees/source_rst/v1.xx/V1_02.doctree | Bin 90286 -> 114606 bytes doc/build/html/_sources/index.rst.txt | 1 + .../V2023.x.x/V2023_step_02.rst.txt | 2 +- .../V2023.x.x/V2023_step_03.rst.txt | 2 +- .../developing_hardware_components.rst.txt} | 0 .../_sources/source_rst/v1.xx/V1_01.rst.txt | 2 +- .../_sources/source_rst/v1.xx/V1_02.rst.txt | 30 +-- .../html/developing_hardware_components.html | 2 + doc/build/html/genindex.html | 1 + doc/build/html/index.html | 2 + doc/build/html/objects.inv | Bin 571 -> 571 bytes doc/build/html/py-modindex.html | 1 + doc/build/html/search.html | 1 + doc/build/html/searchindex.js | 2 +- .../source_rst/V2023.x.x/V2023_step_02.html | 40 ++++ .../source_rst/V2023.x.x/V2023_step_03.html | 174 ++++++++++++++++ .../html/source_rst/V2024.x.x/V2024.html | 1 + .../developing_hardware_components.html | 144 +++++++++++++ doc/build/html/source_rst/v1.xx/V1_01.html | 162 ++++++++++++++ doc/build/html/source_rst/v1.xx/V1_02.html | 197 ++++++++++++++++-- doc/source/index.rst | 1 + .../source_rst/V2023.x.x/V2023_step_02.rst | 2 +- .../source_rst/V2023.x.x/V2023_step_03.rst | 2 +- .../developing_hardware_components.rst | 46 ++++ doc/source/source_rst/v1.xx/V1_01.rst | 2 +- doc/source/source_rst/v1.xx/V1_02.rst | 30 +-- 32 files changed, 796 insertions(+), 51 deletions(-) create mode 100644 doc/build/doctrees/source_rst/developing_hardware_components.doctree rename doc/{source/developing_hardware_components.rst => build/html/_sources/source_rst/developing_hardware_components.rst.txt} (100%) create mode 100644 doc/build/html/source_rst/developing_hardware_components.html create mode 100644 doc/source/source_rst/developing_hardware_components.rst diff --git a/doc/build/doctrees/environment.pickle b/doc/build/doctrees/environment.pickle index fc06bd3fd53069e9c17089c9ccf70e9300d54479..d8334135f0ed4c5adc033502222c9b37045fc315 100644 GIT binary patch literal 70786 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 literal 70912 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 diff --git a/doc/build/doctrees/index.doctree b/doc/build/doctrees/index.doctree index e5db6f599715ceca5ab03251834caf6409b382b6..95cb54e02f92af0201de828886c5f1231e683780 100644 GIT binary patch delta 134 zcmX?V_tTE0fpu!$MizZB9lsvU;{4L0<ka}0;u8Io)Uwo^{DRE9^!SX#qLlK)qSW~0 z{M>^4ywtps;>iYLCQMm2n-j&FnYpW(7#Mo^Qj3c6izaWB6yD4vb&Odx6eyS#1SE=k hIP(&7Q%fofQj4e5PRRmEbQWhw0+~UZ-^xZX0syLkE`9(2 delta 72 zcmexqchruhfpx0YMizas$w^{{n`ekMFf&$emXvzTtQyS3z>pOHB#L`D^AdAYODYRe Xi>K61$pT4q7H3ETnE{&><sujXQj!+_ 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 index a31a2a4a70f6ed4b0dad4a3ddf2122af9c00323c..72f991a7a58907d9b43deabcbea6fa60799b27d3 100644 GIT binary patch delta 4648 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 delta 3790 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 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 index 136c7da98b05ccab8ffb45ec739be033a8b58e63..effb95c67c42d018fc570322ba67fb9bdf154911 100644 GIT binary patch literal 70901 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 delta 7736 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 UK0!7By2NKxmbij@5>fvD04@LnnE(I) diff --git a/doc/build/doctrees/source_rst/developing_hardware_components.doctree b/doc/build/doctrees/source_rst/developing_hardware_components.doctree new file mode 100644 index 0000000000000000000000000000000000000000..115d0129a2d1ca304d5c08d0fb80afe6f947d5f4 GIT binary patch literal 10104 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 SCJ5kE2@a#?R#JUA9Q*^h_M`Ox literal 0 HcmV?d00001 diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_01.doctree index 1322858b88f4bd093f11f25f6d831a74a4b0289c..58b3cec9414e338bb08a07b9037e4811b8ae4bba 100644 GIT binary patch delta 10033 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 delta 918 zcmcb2pRIKjYr_;qKBo5}TLl;=I#2$)mTP;$LdHK#Oz#A@$1P!e%*=jLkbxoVnBa7e z6^t8Y4uUxQfJA8zXI^4%YDr~5YVnlXDH>TP1*eOyWX$CQspu@tPy~qqbxl~wxPfV( z;B==|jN#K4uVVbf_6MlIn`8Ry)r?mdL#8KsFzPc)X9Z3V^kkHu?!BH-aQdY+jPgwW zLX#KRN-zZoO%Ghh=rKKXEn@;>0Zer+T(uBWmeBP0^^8&w4I*surAb*3O)D6?Vd^_@ zs;^H2t7l-)Yy|ltgEfOKgFP0=Fo6m56a^IJC*`E(7AurzmSiX>B^Q_JmLvj2loV1j zi&B$IGRsmG3KB~)thl0Gi;D8{6^vpP{PGowOOrDc(lT>W74nOqD)WmftrXOY^Gl18 zQ}w}AeQJDBafyDJp<YFWeokg_i5}2+b-gJdM`VcgRH54as9_G=_D2nK$+Q1a!wiHA z)POF*;(|vFGxeslPJx7pbk;I(K-NoVEfxaCd{R~rD<Z&pQuOo`;I6W=QV0QsjY3Ff zNlq%4f`Wn-C<v?+V15G&m1m}uWE5K|7#rv)n4@BI1F(vW)Wnq3BHg0=a-cFpE-p}j z)Pq8VKDI%;o*|vJ1?b`8q{Iw)VB(nk%Rx@KG($Tp5a@lN94Ig{WHWRoJ4(oaQZA<h zOAiYuLrm#m3w8~24RW2*!;+Jkmpa9lkEw?Z66jMhbU;S<gY-&gO#$YG44DjOkTDr@ Le$ywcXY>OAzsfK! diff --git a/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree b/doc/build/doctrees/source_rst/v1.xx/V1_02.doctree index aa197d0ba2b8b70ae1f4d0393a37d6ff6b55cdff..266ee95ac39e61c8ac36c9455adf5ee9f3c661f1 100644 GIT binary patch delta 11212 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 delta 1635 zcmchXacCP=9LMu+Nw(yAwYfkYO_#pLg_tf)F14&KpjfaVR!dvi*l0(ZrdMBLlPh<Z zc15%)vOk0{ly`D&D1#{?2y^w6)VZ1o)hYOg)=tEtgNUMtbeqD24(7Y0OYS;F|MHJq z?tb_AzTfx#-tTv3Z`sd&WV7aNFZC{3zYK%l@hF#VbUMRfIGK7fC-Siv)J7w}0OmPk z2#-eBTz*N&iAg>#N^)c-8a{SR>+ZVZXI?Xb9f$vL?b{CG;9-yUz>yA$Ic0*M9r@Me z+YW1)(H@F9Z3555oAG7-TUX!?`0e<08}o(<UgB@K!rMVy<h}Tlc%yb@@>+noXcTC_ zop1p<T36toP6V{z3qzev7Rq8Vp{JIID7vGLY8xfDmAPbM+E#W0+F$^0ly+lor9q2- z{AUC6wTYEi1AsP^Ks)`_!wzQ6$h`BNAJE-~l)>-6XkxxGBKXm(UVMC&!xJ0pbfk{r zyEgn9x_ZOGyk)}Uo3CTI>ANF(lWwbvwfN2Zt<;gR_f7(>on1CAkW7qE@pxgiTRr0g zm+6+esQC0fVA{s48|mV%AP50^Z=F&>5VRDBI{@^nc@EIUz#`bBs7bcC_g(PAj-9=% z#gcxIRU4PUV(S6@VL!R#3XW_d!^?Biyrev%+?(!Y)%7KiY1E15bEsX95!Iph!8vL_ ztL{1v5~_3_T(`>v=y#}3eE`;|&snwi0^q36SbXhnuj(lQmwM&`XluPhAmm98TghK5 z+JW|<5c2kq<i^vVvTFN>;1Sio492LRxAZ^O^ek0o)kq1n{KFE7+7fT7D+d9m-Z}_; zdg7XJ{_k_6iqK*SF6i4uHe^RTkCL12+kwK|peT@|$VhNDB_rrdN;93ZemFijkrMf& zoSNa`bV5ck=SZI@W(C-F6b=Yb$|VsQ_$eL=A|dB>R1oK4aBIK}Jyad_$W%&_VJD2n zxvntD5(q207t~x>Fk2|+U#XcW=U@GAHu|@G)NGXVFIT(eUyYRWC&S8drCK3R+Uu^I z?!3oM`ei&lWUE)NAd;r6c_ZJs$Mh`;lQ1b{riCn@l_e*HFs7F!2Dk0E@@6(QAtNaU z@8d$S$NcNzDg@#a6TH|d&I_}Ii#naRtMotS)>AiCa#zbjdOGCB7Y}&xV87FyL;KQ$ zq$(t;*GTVj{9<#f-j0rktOct+T}r|JMBkyl;Xb8col0eS<?%gK!CpNO1%>n_wi>oU OpPAaQ45(uzFz^?cR4sD= diff --git a/doc/build/html/_sources/index.rst.txt b/doc/build/html/_sources/index.rst.txt index eadff7d2..69402149 100644 --- a/doc/build/html/_sources/index.rst.txt +++ b/doc/build/html/_sources/index.rst.txt @@ -39,6 +39,7 @@ Contents: source_rst/V2023.x.x/V2023 source_rst/V2024.x.x/V2024 source_rst/api + source_rst/developing_hardware_components.rst 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 index ca79eaeb..03554807 100644 --- 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 @@ -301,7 +301,7 @@ which allows to realize precise current measurement around a shunt resistor. The +------------------------------------------------------------------------+ .. csv-table:: List of components - :file: step_n_2/b/test_2_xx.csv + :file: ../../img/v2023.x.x/step_n_2/b/test_2_xx.csv :widths: 30, 70, 70, 70, 70, 35, 35 :header-rows: 1 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 index c268d128..f77e9b5e 100644 --- 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 @@ -30,7 +30,7 @@ Required components .. csv-table:: List of components - :file: step_n_3/a/MUX_board_list_2_xx.csv + :file: ../../img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.csv :widths: 30, 70, 70, 70, 70, 35, 35 :header-rows: 1 diff --git a/doc/source/developing_hardware_components.rst b/doc/build/html/_sources/source_rst/developing_hardware_components.rst.txt similarity index 100% rename from doc/source/developing_hardware_components.rst rename to doc/build/html/_sources/source_rst/developing_hardware_components.rst.txt 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 index 3c8d9594..1829d683 100644 --- 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 @@ -524,7 +524,7 @@ Complete list of components .. csv-table:: Table Title - :file: list.csv + :file: ../../bom_list/list.csv :widths: 30, 70, 70, 70, 70,70 :header-rows: 1 diff --git a/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt b/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt index 6dad02c8..a486b855 100644 --- a/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt +++ b/doc/build/html/_sources/source_rst/v1.xx/V1_02.rst.txt @@ -64,7 +64,7 @@ For this step, the installation instructions are well described on the Raspberry .. note:: All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: - .. figure:: raspbian_version.jpg + .. figure:: ../../img/raspbian_version.jpg :width: 800px :align: center :height: 400px @@ -164,7 +164,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3)) -.. figure:: thonny_first_interface.jpg +.. figure:: ../../img/thonny_first_interface.jpg :width: 600px :align: center :height: 450px @@ -173,7 +173,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 3-Click on **Run>select interpreter**, a new window opens click on interpret -.. figure:: thonny_option.jpg +.. figure:: ../../img/thonny_option.jpg :width: 600px :align: center :height: 450px @@ -182,7 +182,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 4-On the new open windows select **alternative Python3 or virtual environment** -.. figure:: thonny_interpreter.jpg +.. figure:: ../../img/thonny_interpreter.jpg :width: 600px :align: center :height: 450px @@ -195,7 +195,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 7- In the **known interpreter** tab the path of the virtual environment should appear -.. figure:: thonny_interpreter_folder.jpg +.. figure:: ../../img/thonny_interpreter_folder.jpg :width: 600px :align: center :height: 450px @@ -253,7 +253,7 @@ We also added 4 capacitors on the +12v inputs of the fast operational amplifiers 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 +.. figure:: ../../img/v1.xx/schema_measurement_board1_02.png :width: 800px :align: center :height: 400px @@ -317,7 +317,7 @@ 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. -.. figure:: measurement_board1-02.jpg +.. figure:: ../../img/v1.xx/measurement_board1-02.jpg :width: 800px :align: center :height: 700px @@ -326,7 +326,7 @@ place a fuse holder with a 1.5-A fuse for safety purposes. 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 +.. figure:: ../../img/v1.xx/measurement_board-2-V1-02.jpg :width: 800px :align: center :height: 700px @@ -350,7 +350,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. -.. figure:: current_board.jpg +.. figure:: ../../img/v1.xx/current_board.jpg :width: 800px :align: center :height: 400px @@ -367,7 +367,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. -.. figure:: installation_current_board_1_02.jpg +.. figure:: ../../img/v1.xx/installation_current_board_1_02.jpg :width: 800px :align: center :height: 700px @@ -404,7 +404,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. -.. figure:: multiplexer_implementation.jpg +.. figure:: ../../img/v1.xx/multiplexer_implementation.jpg :width: 800px :align: center :height: 500px @@ -423,7 +423,7 @@ Once the operation has been completed, the 16 control pins of each 16-channel re 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 + .. figure:: ../../img/v1.xx/connection.jpg :width: 800px :align: center :height: 400px @@ -465,7 +465,7 @@ At this point, all that remains is to connect the electrodes of each multiplexer 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 +.. figure:: ../../img/v1.xx/cable.jpg :width: 800px :align: center :height: 300px @@ -478,7 +478,7 @@ the next figure provides an example of multiplexer relay connections for electro 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 +.. figure:: ../../img/v1.xx/electrode_cable.jpg :width: 800px :align: center :height: 800px @@ -539,7 +539,7 @@ Complete list of components .. csv-table:: List of components - :file: list - 1_02.csv + :file: ../../bom_list/list - 1_02.csv :widths: 30, 70, 70, 70, 70,70 :header-rows: 1 diff --git a/doc/build/html/developing_hardware_components.html b/doc/build/html/developing_hardware_components.html index e28d5865..ed12e565 100644 --- a/doc/build/html/developing_hardware_components.html +++ b/doc/build/html/developing_hardware_components.html @@ -44,6 +44,8 @@ <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> diff --git a/doc/build/html/genindex.html b/doc/build/html/genindex.html index 789d4a25..b092dc4d 100644 --- a/doc/build/html/genindex.html +++ b/doc/build/html/genindex.html @@ -46,6 +46,7 @@ <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> +<li class="toctree-l1"><a class="reference internal" href="source_rst/developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> diff --git a/doc/build/html/index.html b/doc/build/html/index.html index d599edb2..0710a34a 100644 --- a/doc/build/html/index.html +++ b/doc/build/html/index.html @@ -48,6 +48,7 @@ <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> +<li class="toctree-l1"><a class="reference internal" href="source_rst/developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> @@ -155,6 +156,7 @@ <li class="toctree-l1"><a class="reference internal" href="source_rst/api.html">API reference</a><ul class="simple"> </ul> </li> +<li class="toctree-l1"><a class="reference internal" href="source_rst/developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> </section> diff --git a/doc/build/html/objects.inv b/doc/build/html/objects.inv index 563884303f8ca27ef05f71cc6597eab4f03aef54..3a79775be92018ddb7d39dabeed8654e352c3648 100644 GIT binary patch delta 463 zcmV;=0Wki%1iJ)~c7KlAFc8P@JjF=c!|s8UIME(*>!DIPAfoPvdW%dv5LfYsY{SA^ z^%?qPYj7wI%g552lbQeg?7zpO8lgGpO(7Ipwg@AzYH4b$jCEhB=1Jp3dl!PkFEAV| zP;$v|4c4)ur88_{n8N<=E*-|(<=~LURJ~1#GNwN!<+y;UMt|7>fl3By``u8(-l#z^ zXt{NK#ocBo(4iUleVl-6AMOI7`XrnsY$J+Zk(C?QDA`wAq^55A!tgI>o<h8&3minw zO?S3NXFra0HZ-F2?i=+RYZvQZ$%tghI$4L+nMy}lam^sRf6M_}U)v~#c4u))ULP)y zD(g^Jqx5sceSdc6#q;+P<ljFj6!4Q;JwszQ;5P%cl5@UT8tS-`*XiUYI_c9%0TZNl zX;7eaFjKyrt|POXkXav@dF0El&!Y01P<bDf7eK8=G4mbj8Vt96%*_8)xx|XH{;PB7 z*$&^&4fs}${VSfML0R|S2g4P%N^`lW_RqblmC#E1J4mx<%3c<AKB>9e4G%8;z?f4% zSeychZ-=pRki<J$rODd6k)H4UD5K{Wq>0zuw_I?CY>UfC<lVz*3b{%lA1LG!<sIYJ F_ec3b??(Ut delta 463 zcmV;=0Wki%1iJ)~c7JZ$Fbv1<ehLEHp*_TnWn%~5b{Nncf*AWKb~6-<i8WXskd!oe zt3AV>Y;xqZa@HixZj#79e-uecwL){y`%);j=@6!1)y6bf8|xmZ=4tCh_aPW3A7PR( z++wFRm+QKvhCNe*b)$q<5~Z_X9V?k?V3NUQ&qHANrdF;u0DqSb&5AY%PJzT{I7;AE zlB`j3$#8d|baaVb&pDokh_il~yt)m^L>`OBc{M9xp-~Q(1u7Y+e*Z!>Xt{NK%iVq= z(C3!;8oUA5-aHsW^m(XbNF%adkyU%wDmhkLq^4=d!f-YeFW4)(#w6<6;?UCQ?x(h) z46Ueq=Z*S>jem>vPh?8+beHbJ>P(~)uQ+Cq-F+$mJ0II9hW1e6j6B_6Al25PuBX}i zh)3_C7T>>AApiW%poFi~>LnVp2cL|eAGzY|jiHV!d7VyfqLVS5lrTqXHwJ|tSXe4Q zPS=t7O~`zV%sukQ&-bE=n^46VRg^%jMX~e~>RJrlK1gL2FHtVBBCr3N9C~)bkAD_? zu4eufuh5`uM(<;rr902g&QDt8G0G0I)NAfKF1SP1|5Q1NGQEGBLatKCKNNC_@)ujm F?pF&8=j;Fg diff --git a/doc/build/html/py-modindex.html b/doc/build/html/py-modindex.html index ff96db77..16a9f551 100644 --- a/doc/build/html/py-modindex.html +++ b/doc/build/html/py-modindex.html @@ -53,6 +53,7 @@ <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> +<li class="toctree-l1"><a class="reference internal" href="source_rst/developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> diff --git a/doc/build/html/search.html b/doc/build/html/search.html index 3e55a587..860e74ff 100644 --- a/doc/build/html/search.html +++ b/doc/build/html/search.html @@ -49,6 +49,7 @@ <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> +<li class="toctree-l1"><a class="reference internal" href="source_rst/developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> diff --git a/doc/build/html/searchindex.js b/doc/build/html/searchindex.js index 1512b690..c21c7d27 100644 --- a/doc/build/html/searchindex.js +++ b/doc/build/html/searchindex.js @@ -1 +1 @@ -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, 7, 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, 7, 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, 7, 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, 7, 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, 7, 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, 7, 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, 7, 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, 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, 7, 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, "led": 7, "consid": 7, "temporari": 7, "orang": 7}, "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 +Search.setIndex({"docnames": ["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/developing_hardware_components", "source_rst/v1.xx/V1_01", "source_rst/v1.xx/V1_02"], "filenames": ["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\\developing_hardware_components.rst", "source_rst\\v1.xx\\V1_01.rst", "source_rst\\v1.xx\\V1_02.rst"], "titles": ["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", "Software interface to new hardware components", "OhmPi V 1.01 (limited to 32 electrodes)", "OhmPi V 1.02 (limited to 32 electrodes)"], "terms": {"r\u00e9mi": [0, 1], "clement": [0, 1], "vivien": [0, 1], "duboi": [0, 1], "nicola": [0, 1], "forquet": [0, 1], "inra": 1, "reversa": [1, 10, 11], "villeurbann": 1, "franc": 1, "yannick": [0, 1], "fargier": [0, 1], "ger": 1, "rro": 1, "univ": 1, "gustav": 1, "eiffel": 1, "ifsttar": 1, "lyon": 1, "h\u00e9l\u00e8ne": [0, 1], "guyard": [0, 1], "ig": 1, "grenobl": 1, "universit\u00e9": 1, "alp": 1, "olivi": [0, 1], "kaufmann": [0, 1], "arnaud": [0, 1], "watlet": [0, 1], "de": 1, "mon": 1, "belgium": 1, "guillaum": [0, 1], "blanchi": [0, 1], "ilvo": 1, "merelbek": 1, "julien": 1, "ganc": 1, "emil": 1, "gro": 1, "et": [1, 4], "al": 1, "an": [1, 3, 4, 5, 6, 9, 10, 11], "open": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "sourc": [1, 3, 9, 10, 11], "data": [0, 1, 2, 7], "logger": [1, 10, 11], "dedic": [1, 2, 7], "applic": [1, 9], "electr": [1, 4], "resist": [1, 2, 4, 6, 7], "imag": [1, 3], "small": [1, 2, 4, 6, 7, 10, 11], "laboratori": [1, 2, 6, 7, 10, 11], "scale": 1, "hardwarex": 1, "elsevi": 1, "2020": 1, "8": [1, 2, 3, 4, 5, 6, 7, 10, 11], "24": [1, 4, 5, 6, 10, 11], "p": [1, 4, 5], "ff10": 1, "1016": 1, "j": 1, "ohx": 1, "e00122ff": 1, "particip": [1, 2, 3, 4, 5, 6, 7, 10, 11], "all": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "requir": [1, 2, 3, 6, 7, 9, 10, 11], "skill": [1, 2, 3, 4, 5, 6, 7, 10, 11], "electron": [1, 2, 3, 4, 5, 6, 7, 10, 11], "respect": [1, 2, 3, 4, 5, 6, 7, 10, 11], "safeti": [1, 2, 3, 4, 5, 6, 7, 10, 11], "rule": [1, 2, 3, 4, 5, 6, 7, 10, 11], "must": [1, 2, 3, 4, 5, 6, 7, 10, 11], "assembl": [0, 1, 2, 3, 7], "profession": [1, 2, 3, 4, 5, 6, 7, 10, 11], "context": [1, 2, 3, 4, 5, 6, 7, 10, 11], "peopl": [1, 2, 3, 4, 5, 6, 7, 10, 11], "compet": [1, 2, 3, 4, 5, 6, 7, 10, 11], "The": [0, 1, 3, 4, 5, 6, 9], "team": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "cannot": [1, 2, 3, 4, 5, 6, 7, 10, 11], "held": [1, 2, 3, 4, 5, 6, 7, 10, 11], "respons": [1, 2, 3, 4, 5, 6, 7, 10, 11], "ani": [1, 2, 3, 4, 5, 6, 7, 10, 11], "materi": [1, 2, 3, 4, 5, 6, 7, 10, 11], "human": [1, 2, 3, 4, 5, 6, 7, 10, 11], "damag": [1, 2, 3, 4, 5, 6, 7, 10, 11], "which": [1, 2, 3, 4, 5, 6, 7, 10, 11], "would": [1, 2, 3, 4, 5, 6, 7, 10, 11], "associ": [1, 2, 3, 4, 5, 6, 7, 10, 11], "us": [1, 2, 3, 4, 5, 6, 7, 10, 11], "equip": [1, 2, 3, 4, 5, 6, 7, 10, 11], "doe": [1, 2, 3, 4, 5, 6, 7, 10, 11], "work": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "after": [1, 2, 3, 4, 5, 6, 7, 10, 11], "you": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "mai": [1, 2, 3, 7, 10, 11], "redistribut": 1, "modifi": [1, 9, 10, 11], "thi": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11], "document": [1, 2, 7, 10], "make": [1, 2, 5, 7, 9, 10, 11], "product": [1, 4, 5], "under": [1, 6, 10, 11], "term": [1, 9], "cern": 1, "ohl": 1, "v2": 1, "http": [2, 3, 4, 5, 7, 10, 11], "ch": [], "distribut": 1, "without": [1, 5, 10, 11], "express": [1, 9], "OR": 1, "impli": [1, 5], "warranti": 1, "includ": [1, 2, 3, 5, 7, 9, 10, 11], "OF": 1, "merchant": 1, "satisfactori": 1, "qualiti": 1, "AND": 1, "fit": 1, "FOR": 1, "A": [1, 2, 6, 7, 9, 10, 11], "particular": 1, "purpos": [1, 6, 10, 11], "pleas": [1, 2, 6, 7, 10, 11], "see": [1, 2, 7, 10, 11], "condit": 1, "present": [1, 5, 6, 9, 10, 11], "develop": [0, 1, 2, 3, 4, 7, 9, 10, 11], "low": [1, 2, 7, 10, 11], "cost": [1, 4, 5, 9, 10, 11], "hardwar": [1, 10, 11], "meter": [1, 2, 6, 7, 10, 11], "provid": [1, 2, 7, 10, 11], "scientif": 1, "commun": [1, 2, 7], "robust": [1, 2, 7, 10, 11], "flexibl": 1, "tool": [1, 2, 7], "experi": [1, 2, 7, 10, 11], "call": [1, 2, 3, 5, 6, 7], "basic": [1, 9], "meterfeatur": 1, "current": [0, 1, 2, 4, 7], "inject": [0, 1, 2, 7], "measur": [0, 1, 2, 3, 5, 6, 7], "function": [1, 2, 7, 9, 10, 11], "multiplex": [0, 1, 2, 5, 6, 7], "allow": [1, 2, 4, 5, 7, 10, 11], "perform": [1, 3, 9, 10, 11], "automat": [1, 2, 7, 10, 11], "up": [1, 2, 3, 5, 7, 10, 11], "64": [0, 1, 5, 10, 11], "electrod": [0, 1, 4, 5, 6], "s": [1, 2, 4, 5, 7, 10, 11], "philosophi": [0, 1], "fulli": 1, "toolto": 1, "surfac": 1, "anyon": 1, "who": 1, "want": [1, 11], "get": [1, 2, 3, 4, 7, 10, 11], "involv": [1, 2, 7], "welcom": [1, 9], "join": 1, "ohmpi": [3, 4, 5, 9], "project": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "compon": [0, 2, 3, 7], "quantiti": [3, 10, 11], "4": [2, 3, 4, 5, 7, 10, 11], "model": [3, 4, 10, 11], "micro": [2, 3, 7, 10, 11], "sd": [2, 3, 6, 7, 10, 11], "32": [0, 2, 3, 6, 7], "go": [2, 3, 5, 7], "hdmi": [3, 6], "cabl": [3, 4, 5, 6, 10, 11], "comput": [3, 10, 11], "mous": [3, 6, 10, 11], "keyboard": [3, 6, 10, 11], "first": [2, 3, 5, 6, 7, 9], "start": [0, 2, 3, 5, 7, 9, 10, 11], "board": [2, 3, 6, 7, 9], "oper": [0, 3, 4, 6, 9], "system": [3, 9, 10, 11], "For": [2, 3, 4, 5, 7, 10, 11], "instruct": [0, 2, 3, 7], "ar": [2, 3, 4, 6, 7, 9, 10, 11], "well": [2, 3, 7, 10, 11], "describ": [3, 4, 6, 9, 10, 11], "websit": [3, 10, 11], "watch": [3, 10, 11], "video": [3, 10, 11], "how": [3, 10, 11], "set": [2, 3, 4, 7, 10, 11], "your": [3, 4, 5, 9, 10, 11], "author": [0, 3, 10, 11], "recommend": [2, 3, 7, 9, 10, 11], "latest": [3, 10, 11], "stabl": [3, 10, 11], "complet": [0, 2, 3, 4, 7], "version": [2, 3, 4, 7, 9, 10, 11], "previous": [3, 6, 10, 11], "raspbian": [3, 10, 11], "can": [2, 3, 6, 7, 10, 11], "visit": 3, "raspberrypi": 3, "org": [2, 3, 7], "en": 3, "test": [2, 3, 4, 5, 6, 7, 9, 10, 11], "were": [3, 4, 10, 11], "3": [2, 3, 4, 6, 7, 9, 10, 11], "we": [2, 3, 4, 5, 7, 10, 11], "follow": [2, 3, 4, 5, 6, 7, 9, 10, 11], "onc": [2, 3, 7, 10, 11], "ha": [2, 3, 5, 7, 10, 11], "been": [2, 3, 5, 7, 10, 11], "wire": [3, 5, 6, 10, 11], "spi": [3, 10, 11], "gpio": [3, 5, 6, 10, 11], "remot": [2, 3, 7, 10, 11], "option": [2, 3, 7, 10, 11], "deactiv": [3, 10, 11], "i2c": [3, 4, 5], "via": [3, 10, 11], "gui": [3, 10, 11], "menu": [3, 10, 11], "failur": [3, 10, 11], "carri": [3, 10, 11], "out": [3, 6, 10, 11], "task": [3, 10, 11], "caus": [3, 10, 11], "relai": [3, 4, 5, 10, 11], "shield": [3, 10, 11], "card": [0, 2, 3, 5, 6, 7], "dure": [3, 10, 11], "wai": [3, 9, 10, 11], "have": [2, 3, 4, 5, 7, 9, 10, 11], "multipl": [2, 3, 7], "parallel": 3, "instanc": 3, "interpret": [3, 4, 10, 11], "each": [3, 5, 6, 10, 11], "differ": [2, 3, 4, 5, 6, 7, 10, 11], "contain": [2, 3, 6, 7, 10, 11], "discret": 3, "copi": [2, 3, 7, 9], "its": [2, 3, 5, 6, 7, 10, 11], "support": 3, "util": [2, 3, 7], "It": [2, 3, 5, 7, 9, 10, 11], "also": [2, 3, 7, 9, 10, 11], "protect": 3, "case": [2, 3, 7, 9, 10, 11], "problem": 3, "depend": [2, 3, 7, 10, 11], "specifi": [3, 10, 11], "txt": [2, 3, 7, 10, 11], "below": [2, 3, 6, 7, 10, 11], "should": [2, 3, 4, 5, 6, 7, 9, 10, 11], "type": [2, 3, 5, 7, 9, 10, 11], "termin": [2, 3, 4, 5, 6, 7, 10, 11], "necessari": [3, 5, 6, 9, 10, 11], "ensur": [3, 10, 11], "libatla": [3, 10, 11], "base": [2, 3, 5, 7, 9, 10, 11], "dev": [3, 10, 11], "librari": [3, 10, 11], "sudo": [3, 10, 11], "apt": [3, 10, 11], "strongli": [3, 10, 11], "user": [0, 2, 3, 7, 10, 11], "creat": [2, 3, 7, 9, 10, 11], "run": [2, 3, 4, 5, 6, 7, 10, 11], "code": [3, 5, 9, 10, 11], "done": [2, 3, 7, 10, 11], "either": [3, 10, 11], "directori": [2, 3, 7, 9, 10, 11], "gather": [3, 10, 11], "within": [2, 3, 7, 9, 10, 11], "python3": [3, 10, 11], "m": [3, 4, 5, 6, 10, 11], "venv": [3, 10, 11], "command": [2, 3, 7, 10, 11], "bin": [3, 10, 11], "suffici": [3, 10, 11], "meet": [3, 10, 11], "export": 3, "cflag": 3, "fcommon": 3, "pip": [3, 10, 11], "rpi": [3, 6, 10, 11], "adafruit": [3, 4, 5, 10, 11], "blinka": [3, 10, 11], "numpi": [2, 3, 7, 10, 11], "panda": [3, 10, 11], "circuitpython": [3, 10, 11], "ads1x15": [3, 10, 11], "tca9548a": [3, 5], "mcp230xx": 3, "gpiozero": 3, "check": [2, 3, 7, 10, 11], "met": [3, 10, 11], "list": [0, 3], "leav": [3, 10, 11], "simpli": [3, 6, 10, 11], "If": [3, 4, 9, 10, 11], "decid": [3, 10, 11], "setup": [3, 10, 11], "time": [2, 3, 5, 7, 10, 11], "softwar": [0, 3, 10, 11], "click": [3, 10, 11], "access": [2, 3, 6, 7, 10, 11], "program": [3, 6, 10, 11], "pythonid": [3, 10, 11], "2": [2, 3, 5, 6, 7, 9, 10, 11], "root": [3, 10, 11], "7": [3, 4, 5, 6, 10, 11], "usr": [3, 10, 11], "select": [3, 5, 10, 11], "new": [0, 2, 3, 7, 10, 11], "window": [2, 3, 7, 10, 11], "On": [3, 10, 11], "altern": [3, 10, 11], "5": [2, 3, 4, 5, 6, 7, 10, 11], "button": [3, 10, 11], "appear": [3, 4, 5, 10, 11], "locat": [3, 10, 11], "anoth": [3, 10, 11], "execut": [2, 3, 7, 10, 11], "6": [3, 4, 5, 6, 10, 11], "find": [3, 10, 11], "folder": [3, 10, 11], "where": [2, 3, 7, 9, 10, 11], "file": [3, 4, 9, 10, 11], "home": [2, 3, 7, 10, 11], "In": [2, 3, 4, 5, 7, 9, 10, 11], "known": [3, 10, 11], "tab": [2, 3, 7, 10, 11], "path": [3, 9, 10, 11], "close": [3, 10, 11], "ok": [3, 10, 11], "9": [2, 3, 4, 5, 6, 7, 10, 11], "save": [3, 10, 11], "modif": [3, 6, 10, 11], "number": [2, 4, 5, 7, 10, 11], "per": [4, 5, 10, 11], "unit": [2, 4, 5, 7, 10, 11], "total": [4, 5, 10, 11], "manufactur": [4, 5, 10, 11], "refer": [0, 2, 4, 5, 6, 7, 10, 11], "web": [4, 5], "raspberri": [0, 2, 4, 5, 6, 7], "pi": [0, 2, 4, 6, 7], "1": [0, 2, 4, 5, 6, 7, 9], "58": [4, 10, 11], "75": 4, "www": [4, 5, 10, 11], "mouser": [4, 5], "fr": [4, 5, 10, 11], "productdetail": [4, 5], "seeed": 4, "studio": 4, "102110421": 4, "qs": [4, 5], "7mvldsj5uaxen3lyyh3sqw": 4, "3d": [4, 5], "lm158n": 4, "amp": [4, 10, 11], "o": [2, 4, 5, 7, 10, 11], "14": [4, 5, 6], "texa": [4, 10, 11], "instrument": [2, 4, 7, 10, 11], "lm358an": [4, 10, 11], "nopb": [4, 10, 11], "lm158j": 4, "x1j7hmvl2zh8vpefml8": 4, "2ffq": 4, "print": [2, 4, 5, 7, 10, 11], "circuit": [2, 4, 5, 7, 10, 11], "12": [2, 4, 5, 6, 7, 10, 11], "asler": [4, 5, 10, 11], "ads1115": [4, 10, 11], "11": [4, 6, 10, 11], "23": [4, 5, 6, 10, 11], "1085": 4, "2fha2pyfaduh": 4, "2fogzutwiq9iz5vjaqfoyugqalgxpeckigrqvf4hn": 4, "252bg": 4, "capacitor": [4, 11], "100nf": [4, 11], "50vdc": [4, 11], "10": [2, 4, 5, 6, 7, 10, 11], "ceram": [4, 11], "0": [2, 4, 5, 7, 10, 11], "kemet": [4, 11], "c320c104k1": [4, 11], "c320c104k1r5ta7303": 4, "c4uyot": 4, "2flq1th4mcyoetma": 4, "resistor": [4, 5, 10, 11], "kohm": [4, 5, 10, 11], "5w": [4, 10, 11], "te": [4, 5, 10, 11], "connect": [0, 2, 4, 5, 6, 7], "h81k0bya": [4, 10, 11], "holsworthi": 4, "2fha2pyfaduhuylh7az": 4, "2fmjfh2xjoums6wztux4som": 4, "252bii": 4, "h81k5bya": [4, 10, 11], "2fha2pyfadugy9twham3ru9hmijohywhbin95knm": 4, "252bx": 4, "2fm": 4, "vishai": [4, 5], "ccf071k50gke36": 4, "dale": 4, "qkeozdl6eqpa6lzrlqfvow": 4, "mohm": [2, 4, 7, 10, 11], "762": 4, "524": 4, "cmf651m0000fkek143": 4, "ciayqk2gdckzia2levalkg": 4, "ohm": [2, 4, 7, 10, 11], "shunt": 4, "42": 4, "ohmit": 4, "41f2r0e": 4, "im6toxqzgoauedprb19mha": 4, "dual": [4, 5, 10, 11], "screw": [4, 5, 6, 10, 11], "08": [4, 5], "mm": [4, 5, 6, 10, 11], "pitch": [4, 5, 10, 11], "648": [4, 5, 10, 11], "cui": [4, 5], "devic": [4, 5, 9], "tb009": [4, 5], "508": [4, 5], "02be": [4, 5], "vlwxofp3u2wcfk5uckwtka": [4, 5], "dc": [4, 5, 10, 11], "convert": [4, 10, 11], "24v": [4, 11], "15": [4, 5, 6, 10, 11], "31": [4, 5, 6], "16": [4, 5, 6, 10, 11], "tracopow": [4, 11], "trn": [4, 11], "1215": [4, 11], "traco": [4, 11], "power": [2, 4, 5, 6, 7, 10, 11], "yca": 4, "2faaymw02gquicgqj0ta": 4, "dip": [4, 5], "line": [4, 5, 10, 11], "socket": [4, 5], "72": [4, 11], "mill": 4, "max": 4, "110": [4, 5, 10, 11], "43": [4, 10, 11], "308": 4, "41": [4, 5], "001000": 4, "iggadovctstu": 4, "2fqaur8narg": 4, "mgh": 4, "vip": 4, "gclid": 4, "eaiaiqobchmin_taxbcx8wivq5nvch2qaqfpeayyccabegjk1_d_bw": 4, "aqy211eh": 4, "84": [4, 5], "36": [4, 6, 10, 11], "panason": 4, "industri": 4, "wktuvitrialgiu8hcm7dvq": 4, "449": 4, "796": 4, "preci": [4, 5], "83": 4, "304": 4, "001101": [4, 5], "2fha2pyfadujqkqx4wauig": 4, "2fmgndxmcnv": 4, "2f33nj0gbxroculucynpyong": 4, "mcp23008": 4, "593": 4, "sgaepimzzmskedp9slc0yyv4kpdpmd1hts4slctivmw": 4, "header": [4, 5, 10, 11], "1x10": [4, 10, 11], "samtec": [4, 10, 11], "ssw": [4, 10, 11], "02": [0, 4, 10], "g": [4, 10, 11], "ru5fayqh": 4, "252be0w1orxzibqpw": 4, "smt": 4, "breakout": 4, "pcb": [4, 5, 9, 10, 11], "soic": 4, "1212": 4, "gurawfaegucaqqfvnvtyeg": 4, "eaiaiqobchmit8zjzr6x8wivgdnvch2vbwvseaqyayabegjqg_d_bw": 4, "ina282aid": 4, "ze4": 4, "2fufuz19ilfayzxocfra": 4, "thd": 4, "1211n": 4, "39": [4, 5, 6, 10, 11], "2fha2pyfadugpyeg4idvm": 4, "2fmsr": 4, "252b7an": 4, "2f0t3ruis9pcaqjlt4": 4, "252bnrpuooeq": 4, "20": [4, 6, 10, 11], "53": [4, 11], "ssq": 4, "120": [4, 5], "d": [4, 10, 11], "252be1bmvd": 4, "252bdzonqg": 4, "pin": [4, 5, 10, 11], "strip": [4, 5, 6, 10, 11], "ejector": [4, 5], "35": [4, 6], "blk": [4, 5], "10120550": [4, 5], "conrad": [4, 5], "com": [2, 4, 5, 7, 10, 11], "bkl": [4, 5], "contact": [2, 4, 5, 7, 10, 11], "space": [4, 5], "254": [4, 5], "row": [4, 5], "pc": [4, 5], "741435": [4, 5], "searchterm": [4, 5], "searchtyp": [4, 5], "suggest": [4, 5, 10, 11], "searchsuggest": [4, 5], "male": [4, 5], "femal": [4, 5, 10, 11], "spacer": [4, 5, 6], "5m": [4, 6], "hexagonal": 4, "87": [4, 5], "48": [4, 10, 11], "harwin": 4, "r25": 4, "3002002": 4, "w0yvoo0ixfenuv0hsdc4": 4, "2fq": 4, "86": [4, 5], "437": 4, "1108331841001101": 4, "318": 4, "ftmup6kvi2tnqoeziaq": 4, "2fpa": 4, "figur": [2, 4, 7, 10, 11], "show": [4, 10, 11], "gener": [0, 2, 4, 5, 7, 10, 11], "schemat": [4, 11], "plug": [4, 10, 11], "plai": 4, "To": [2, 4, 5, 7, 10, 11], "two": [2, 4, 5, 7, 9, 10, 11], "one": [2, 4, 6, 7, 10, 11], "voltag": [2, 4, 6, 7, 10, 11], "propos": [4, 10, 11], "florsch": [4, 10, 11], "bit": [4, 10, 11], "adc": [4, 10, 11], "analog": [4, 10, 11], "digit": [4, 5, 10, 11], "adapt": [2, 4, 7, 9, 10, 11], "gain": [2, 4, 7, 10, 11], "advantag": 4, "input": [2, 4, 6, 7, 10, 11], "signal": [4, 10, 11], "valu": [4, 5, 10, 11], "could": [4, 6, 10, 11], "lie": [4, 10, 11], "between": [4, 5, 6, 10, 11], "114": [4, 10, 11], "v": [0, 2, 4, 5, 6, 7], "directli": [4, 10, 11], "integr": 4, "ina282": 4, "realiz": 4, "precis": [4, 10, 11], "around": [2, 4, 7], "instal": [2, 4, 5, 6, 7], "solder": [4, 10, 11], "optic": 4, "suppli": [4, 5, 6, 10, 11], "12v": [0, 4, 5, 6, 10, 11], "5v": [4, 10, 11], "tdh15": 4, "four": [2, 4, 7], "inpout": 4, "output": [2, 4, 6, 7, 10, 11], "three": [2, 4, 5, 7, 10, 11], "limit": [0, 2, 4, 7], "ma": [2, 4, 7, 10, 11], "higher": [4, 11], "than": [4, 10, 11], "just": [4, 11], "decreas": 4, "don": [2, 4, 7], "t": [2, 4, 5, 7], "forget": [2, 4, 7], "chang": [2, 4, 5, 7, 9], "config": [2, 4, 7, 9, 10, 11], "py": [2, 4, 5, 7, 9, 10, 11], "kei": 4, "r_shunt": 4, "ohmpi_config": 4, "dict": 4, "pre": [4, 6], "adjust": [4, 10, 11], "13": [4, 5, 6, 10, 11], "17": [4, 6, 10, 11], "18": [2, 4, 6, 7, 10, 11], "19": [4, 6, 10, 11], "view": [4, 6], "fix": [4, 6], "dot": 4, "mark": [4, 6], "top": [2, 4, 6, 7], "left": [4, 6], "corner": 4, "21": [4, 6, 10, 11], "mount": [4, 5, 6, 10, 11], "22": [4, 6, 10, 11], "lm158": 4, "amplifi": [4, 10, 11], "ads115": [4, 10, 11], "right": [4, 6], "3x11": 4, "wurth": 4, "elektronik": 4, "971110321": 4, "305": [4, 5], "apm": [4, 5], "hexseal": [4, 5], "rm3x8mm": [4, 5], "2701": [4, 5], "jjse": [4, 5], "2f12mkns3vxsdryxuhw": [4, 5], "shutdown": 4, "unplug": 4, "bottom": [4, 10, 11], "11mm": 4, "m3": [4, 5], "upper": 4, "port": [4, 6], "write": [2, 4, 5, 7, 9, 10, 11], "i2cdetect": [4, 5], "y": [4, 5], "everyth": 4, "address": [2, 4, 10, 11], "screen": [4, 10, 11], "equival": [4, 10, 11], "need": [2, 4, 5, 7, 10, 11], "1kohm": 4, "r2": [4, 10, 11], "220": 4, "r1": [4, 10, 11], "padboard": 4, "spool": 4, "prepar": [4, 5, 10, 11], "batteri": [2, 4, 6, 7, 10, 11], "red": [2, 4, 6, 7, 10, 11], "black": [4, 6, 10, 11], "ground": [4, 10, 11], "thonni": [2, 4, 7], "sample_measurement_exampl": 4, "exampl": [2, 4, 5, 6, 7, 10, 11], "result": [4, 10, 11], "channel": [5, 10, 11], "mechan": [2, 5, 7, 10, 11], "omron": 5, "g5le": 5, "vd": 5, "vdc": 5, "combin": 5, "zvn4206a": 5, "mofset": 5, "onli": [5, 9], "30": [5, 6, 10, 11], "enough": [5, 10, 11], "activ": [2, 5], "repres": [5, 10, 11], "512": 5, "expand": 5, "mcp23017": 5, "from": [2, 5, 6, 7, 10, 11], "128": [2, 5, 7], "own": 5, "0x70": 5, "0x77": 5, "0x71": 5, "0x72": 5, "0x73": 5, "140": 5, "560": 5, "62": 5, "92": [5, 10, 11], "1580994": 5, "tru": [5, 10, 11], "diod": 5, "1n4007": 5, "256": 5, "091": 5, "296": 5, "incorpor": [2, 5, 7], "sgaepimzzmueqxo7l": 5, "2fbpyakboruumren": 5, "56": 5, "776": 5, "205": 5, "46": 5, "103321": 5, "5twgzeq9e7hsylqaljjyrw": 5, "i": [2, 5, 6, 7, 10, 11], "40": [2, 5, 7, 10, 11], "732": 5, "sgaepimzzmskedp9slc0yfx16nydmpxjueeogolbldi": 5, "27": [5, 6, 10, 11], "325": 5, "over": 5, "503811": 5, "mosfet": 5, "nchannel": 5, "471": 5, "576": [5, 10], "vhuuswq2": 5, "252bsz9b": 5, "2ff6fcxt7g": 5, "100k\u03c9": 5, "061": 5, "616": 5, "beyschlag": 5, "mba02040c1003frp00": 5, "mzrxyrlhvdt9crf7zyf": 5, "2f5q": 5, "89": 5, "2717": 5, "sgaepimzzmsyydr3r27av4eqf73yoh": 5, "252baqg": 5, "252bz3hvktao": 5, "10120558": 5, "54": 5, "No": 5, "51": 5, "741727": 5, "10120862": 5, "connector": [5, 6, 10, 11], "strain": 5, "relief": 5, "44": [5, 10, 11], "742063": 5, "10120158": 5, "ribbon": [5, 6], "x": [5, 10, 11], "mm\u00b2": [5, 10, 11], "multi": [2, 5, 7, 10, 11], "colour": 5, "1012015810": 5, "127": 5, "008": 5, "1548658": 5, "hex": [5, 6], "25": [2, 5, 6, 7, 10, 11], "79": 5, "49": 5, "keyston": 5, "24300": 5, "uwqyq": 5, "2f2czwu0ejpozmzc2a": 5, "745": 5, "846": 5, "614": 5, "25515": 5, "2f2czwuxuhumfr": 5, "252bzuq": 5, "55": [5, 10, 11], "328": 5, "uqd7xcvsscnr3hwd6fta8g": 5, "100": [2, 5, 7, 10, 11], "duplic": 5, "everi": [2, 5, 7], "build": [5, 10, 11], "therefor": [5, 10, 11], "identifi": 5, "assign": 5, "alloc": 5, "here": [5, 6, 11], "default": [2, 5, 7], "jumper": 5, "note": [5, 6, 10, 11], "name": [2, 5, 7, 9, 10, 11], "zoom": [5, 6], "befor": [2, 5, 6, 7, 10, 11], "them": [2, 5, 7, 10, 11], "definit": 5, "simplifi": 5, "thing": [2, 5, 7], "do": [2, 5, 6, 7, 9], "50": [2, 5, 6, 7, 10, 11], "cm": [5, 6, 10, 11], "long": [5, 6], "flat": 5, "pole": [5, 10, 11], "detect": 5, "script": [2, 5, 7, 9], "test_mux_board": 5, "cut": 6, "compos": 6, "proper": 6, "length": [6, 10, 11], "about": 6, "correspond": [6, 10], "crimp": [6, 10, 11], "idc": 6, "suitabl": [2, 6, 7, 10, 11], "clamp": 6, "pai": [6, 10, 11], "attent": [6, 10, 11], "direct": [2, 6, 7, 10, 11], "unbalanc": 6, "perpendicular": 6, "possibl": [6, 10, 11], "same": [2, 6, 7, 10, 11], "flush": 6, "posit": [6, 10, 11], "abov": [6, 10, 11], "mux": [2, 6, 10, 11], "profil": 6, "color": 6, "yellow": 6, "tin": 6, "end": [6, 10, 11], "shown": [6, 10, 11], "pictur": 6, "ii": 6, "gnd": [6, 10, 11], "nois": 6, "often": 6, "heard": 6, "when": [2, 6, 7, 9, 10, 11], "clip": 6, "place": [6, 9, 10, 11], "second": [2, 6, 7, 10, 11], "b": [2, 6], "help": [2, 6, 7, 9], "previou": [2, 6, 7], "procedur": 6, "repeat": [2, 6, 7, 10, 11], "other": [2, 6, 7, 10, 11], "purpl": 6, "relev": [6, 9], "defin": [2, 6, 7, 9], "third": [2, 6, 7], "fourth": 6, "nylon": 6, "photograph": 6, "more": [2, 6, 7], "detail": [2, 6, 7, 10], "4th": 6, "togeth": [6, 10, 11], "tie": 6, "pvc": 6, "plate": 6, "minimum": 6, "dimens": 6, "200": 6, "150": [2, 6, 7, 10, 11], "drill": 6, "remain": [6, 10, 11], "metal": 6, "tighten": 6, "so": [6, 10, 11], "usb": 6, "hole": [6, 10, 11], "26": [6, 10, 11], "add": [6, 10, 11], "attach": 6, "washer": 6, "nut": 6, "28": [0, 6], "29": [6, 10, 11], "come": 6, "pass": [2, 6, 7], "brown": 6, "blue": [6, 10, 11], "block": [6, 10, 11], "secur": [2, 6, 7], "33": 6, "34": 6, "37": [6, 10, 11], "38": [6, 10, 11], "os": [2, 6, 7], "monitor": [2, 6, 7, 10, 11], "deliv": [6, 10, 11], "12vdc": 6, "enjoi": 6, "publish": [2, 7, 10], "journal": 10, "howev": [9, 10, 11], "correct": [10, 11], "bug": 10, "exist": [9, 10, 11], "explain": 10, "miss": 10, "point": [2, 7, 10, 11], "invit": 10, "v1": [2, 7, 10, 11], "offer": [2, 7, 10, 11], "commerci": [10, 11], "avail": [2, 7, 9, 10, 11], "field": [2, 7, 10, 11], "specif": [9, 10, 11], "temperatur": [2, 7, 10, 11], "c": [2, 7, 10, 11], "consumpt": [2, 7, 10, 11], "cpu": [2, 7, 10, 11], "control": [2, 7, 10, 11], "w": [2, 7, 10, 11], "min": [2, 7, 10, 11], "puls": [2, 7, 10, 11], "durat": [2, 7, 10, 11], "ms": [2, 7, 10, 11], "imped": [2, 7, 10, 11], "storag": [2, 7, 10, 11], "resolut": [2, 7, 10, 11], "o1": [10, 11], "step": [9, 10, 11], "youtub": [10, 11], "wjwzhv1v3pk": [10, 11], "noob": [10, 11], "simpl": [10, 11], "sure": [2, 7, 9, 10, 11], "unexpectedli": [10, 11], "boot": [10, 11], "cd": [10, 11], "gnu": [10, 11], "nano": [10, 11], "editor": [2, 7, 10, 11], "At": [10, 11], "op": [10, 11], "dl": [10, 11], "press": [10, 11], "ctrl": [10, 11], "enter": [10, 11], "escap": [10, 11], "return": [2, 7, 10, 11], "wa": [10, 11], "introduc": [2, 7, 9, 10, 11], "Its": [10, 11], "studi": [10, 11], "hous": [10, 11], "design": [2, 7, 9, 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": [2, 7, 10, 11], "typic": [2, 7, 9, 10, 11], "made": [2, 7, 10, 11], "stainless": [10, 11], "steel": [10, 11], "seri": [10, 11], "part": [2, 9, 10, 11], "r9": [10, 11], "ad": [2, 7, 10, 11], "flow": [2, 7, 10, 11], "order": [2, 7, 9, 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": [2, 7, 10, 11], "a1": [10, 11], "a0": [10, 11], "increas": [10, 11], "track": [9, 10, 11], "divid": [10, 11], "bridg": [10, 11], "r5": [10, 11], "r8": [10, 11], "r6": [10, 11], "r7": [10, 11], "accord": [9, 10, 11], "n": [2, 7, 10, 11], "a2": [10, 11], "a3": [10, 11], "obtain": [10, 11], "ly": [10, 11], "rang": [9, 10, 11], "let": [10, 11], "equal": [10, 11], "multipli": [10, 11], "reduct": [10, 11], "section": [2, 7, 9, 10, 11], "despit": [10, 11], "high": [10, 11], "e": [2, 7, 10, 11], "accur": [10, 11], "still": [10, 11], "calibr": [10, 11], "voltmet": [10, 11], "variou": [10, 11], "These": [2, 7, 10, 11], "serv": [2, 7, 10, 11], "With": [10, 11], "disturb": [10, 11], "being": [10, 11], "estim": [10, 11], "mega": [10, 11], "shortcut": [10, 11], "excess": [10, 11], "whose": [2, 7, 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": [2, 7, 10, 11], "onto": [10, 11], "illustr": [2, 7, 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": [9, 10, 11], "addit": [2, 7, 10, 11], "lm358n": [10, 11], "appli": [10, 11], "prefer": [2, 7, 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": [2, 7, 10, 11], "fig": [10, 11], "modul": [9, 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": [9, 10, 11], "manag": [2, 7, 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": [2, 10, 11], "conduct": [9, 10, 11], "manual": [2, 7, 10, 11], "practic": [9, 10, 11], "ert": [10, 11], "sever": [10, 11], "ten": [10, 11], "thousand": [10, 11], "arrai": [2, 7, 10, 11], "stuck": [10, 11], "enabl": [2, 7, 10, 11], "smaller": [10, 11], "hand": [10, 11], "entir": [2, 7, 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": [2, 7, 9, 10, 11], "protocol": [2, 7, 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": [2, 7, 10, 11], "scienc": [10, 11], "framework": [10, 11], "manuscript": [10, 11], "osf": [10, 11], "io": [10, 11], "dzwb4": [10, 11], "gitlab": [2, 7, 10, 11], "irstea": [10, 11], "unzip": [10, 11], "master": [10, 11], "readm": [10, 11], "assist": [10, 11], "disconnect": [10, 11], "handl": [2, 7, 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": [2, 7, 10, 11], "quadrupol": [2, 7, 10, 11], "numer": [10, 11], "some": [0, 2, 7, 9, 10, 11], "main": [2, 7, 10, 11], "optim": [10, 11], "attribut": [10, 11], "stack": [2, 7, 10, 11], "the9": [10, 11], "hear": [10, 11], "characterist": [10, 11], "sound": [10, 11], "permut": [10, 11], "csv": [10, 11], "nb_electrod": [2, 7, 10, 11], "maximum": [2, 7, 10, 11], "injection_dur": [2, 7, 10, 11], "nbr_mea": [2, 7, 10, 11], "sequenc": [2, 7, 10, 11], "sequence_delai": [2, 7, 10, 11], "delai": [10, 11], "repetit": [10, 11], "evolv": [10, 11], "littl": [10, 11], "public": [10, 11], "articl": [10, 11], "date": [0, 10, 11], "sainsmart": [10, 11], "canal": 10, "pour": 10, "arduino": 10, "dsp": 10, "avr": 10, "pic": 10, "arm": 10, "99": [10, 11], "199": [10, 11], "sain": [10, 11], "smart": [10, 11], "101": [10, 11], "70": [10, 11], "103": [10, 11], "018": [10, 11], "1x1": [10, 11], "66": [10, 11], "1568649": [10, 11], "1x0": [10, 11], "71": [10, 11], "1565235": [10, 11], "68": [10, 11], "rs": [10, 11], "pro": [10, 11], "897": [10, 11], "1332": [10, 11], "858": [10, 11], "627": [10, 11], "52": [10, 11], "upw50b50rv": [10, 11], "1083": [10, 11], "7ah": [10, 11], "537": [10, 11], "5488": [10, 11], "lr20": [10, 11], "9v": [10, 11], "185": [10, 11], "4686": [10, 11], "ferrul": [10, 11], "500": [10, 11], "piec": [10, 11], "weidmul": [10, 11], "9004330000": [10, 11], "966067": [10, 11], "car": 10, "littelfus": [10, 11], "fhac0002zxj": 10, "96": 10, "improv": [2, 7, 9, 11], "upgrad": [2, 7, 11], "01": [0, 2, 7, 11], "replac": [9, 11], "trn3": 11, "suppress": 11, "10v": 11, "fast": 11, "decoupl": 11, "last": 11, "veri": [9, 11], "prevent": 11, "overh": 11, "toler": 11, "orient": 11, "h": 11, "nf": 11, "tabl": 11, "jason": 11, "ohmpi_param": 11, "json": [2, 7, 11], "export_path": 11, "desktop": 11, "0251001": 11, "pat1l": 11, "box": [2, 7], "mani": [2, 7], "dii": [2, 7], "laps": [2, 7], "seek": [2, 7], "share": [2, 7, 9], "wish": [2, 7], "2023": [0, 2, 7], "stop": [2, 7], "0x": [2, 7], "effort": [2, 7], "paramet": [2, 7], "80": [2, 7], "virtual": 2, "environ": 2, "packag": [2, 7], "id": [2, 7], "summar": [2, 7], "cover": [2, 7], "acquisit": [2, 7], "separ": [2, 7], "ohmpi_set": [2, 7], "central": [2, 7], "class": [2, 7, 9], "interact": [2, 7, 9], "handler": [2, 7], "layer": [2, 7], "releas": [0, 2, 7], "excel": [2, 7], "log": [2, 7], "implement": [0, 2, 7, 9], "broker": [2, 7], "zip": [2, 7], "rotat": [2, 7], "disk": [2, 7], "exec_logg": [2, 7], "data_logg": [2, 7], "plan": [2, 7], "state": [2, 7], "health": [2, 7], "soh": [2, 7], "futur": [2, 7], "By": [2, 7], "written": [2, 7], "consol": [2, 7], "like": [2, 7], "store": [2, 7, 9], "local": [2, 7], "dai": [2, 7], "size": [2, 7], "exce": [2, 7], "sent": [2, 7], "level": [2, 7], "advanc": [2, 7], "edit": [2, 7], "setup_logg": [2, 7], "custom": [2, 7], "desir": [2, 7], "usernam": [2, 7], "password": [2, 7], "One": [2, 7], "understand": [2, 7], "alter": [2, 7], "keep": [2, 7], "bash": [2, 7], "run_http_interfac": [2, 7], "sh": [2, 7], "api": [0, 2, 7], "import": [2, 7, 9], "iot": [2, 7], "messag": [2, 7], "friendli": [2, 7], "graphic": [2, 7], "quick": [2, 7], "easi": [2, 7], "wi": [2, 7], "fi": [2, 7], "ap": [2, 7], "webserv": [2, 7], "index": [2, 7], "html": [2, 7], "laptop": [2, 7], "mobil": [2, 7], "phone": [2, 7], "upload": [2, 7], "act": [2, 7], "raspap": [2, 7], "runonstart": [2, 7], "itself": [2, 7], "141": [2, 7], "8080": [2, 7], "pseudo": [2, 7], "evolut": [2, 7], "appar": [2, 7], "especi": [2, 7], "suit": [2, 7], "autom": [2, 7], "ipython": [2, 7], "ssh": [2, 7], "putti": [2, 7], "maco": [2, 7], "linux": [2, 7], "found": [2, 7], "np": [2, 7], "chdir": [2, 7], "object": [2, 7], "k": [2, 7], "load": [2, 7], "nb_stack": [2, 7], "half": [2, 7], "cycl": [2, 7], "updat": [2, 7], "update_set": [2, 7], "shape": [2, 7], "set_sequ": [2, 7], "n2": [2, 7], "string": [2, 7], "load_sequ": [2, 7], "rs_check": [2, 7], "synchron": [2, 7], "wait": [2, 7], "prompt": [2, 7], "run_sequ": [2, 7], "run_sequence_async": [2, 7], "thread": [2, 7], "immedi": [2, 7], "sleep": [2, 7], "interrupt": [2, 7], "kill": [2, 7], "asynchron": [2, 7], "given": [2, 7], "interv": [2, 7], "nb_mea": [2, 7], "run_multiple_sequ": [2, 7], "taken": [2, 7], "switch_mux_on": [2, 7], "run_measur": [2, 7], "switch_mux_off": [2, 7], "risk": [2, 7], "short": [2, 7], "argument": [2, 7], "autogain": [2, 7], "true": [2, 7], "good": [2, 7], "usag": [2, 7], "process": [2, 7], "sensor": [2, 7], "scope": [2, 7], "internet": [2, 7], "network": [2, 7], "auxiliari": [2, 7], "subscrib": [2, 7], "approach": [2, 7], "mosquitto": [2, 7], "server": [2, 7], "reachabl": [2, 7], "net": [2, 7], "servic": [2, 7], "install_local_mqtt_brok": [2, 7], "examin": [2, 7], "easili": [2, 7, 9], "parti": [2, 7], "explor": [2, 7], "receiv": [2, 7], "reboot": [2, 7], "further": [2, 7], "format": [2, 7], "kwarg": [2, 7], "cmd_id": [2, 7], "3fzxv121uitwgjwygcz4xw": [2, 7], "cmd": [2, 7], "3fzxv121uitwgjwygcz4yw": [2, 7], "tailor": [2, 7], "dashboard": [2, 7], "browser": [2, 7], "node": [2, 7], "complex": [2, 7], "properli": [2, 7], "palett": [2, 7], "noder": [2, 7], "doc": [2, 7], "guid": [2, 7], "ui": [2, 7], "visual": [2, 7], "cookbook": [2, 7], "draft": 9, "TO": 9, "BE": 9, "review": 9, "intend": 9, "advic": 9, "best": 9, "contribut": 9, "maintain": 9, "promot": 9, "exchang": 9, "reus": 9, "contributor": 9, "ideal": 9, "few": 9, "distinguish": 9, "deal": 9, "compli": 9, "Such": 9, "focu": 9, "reduc": 9, "newli": 9, "expos": 9, "minim": 9, "hardware_system": 9, "discuss": 9, "ohmpi_hardwar": 9, "initi": 9, "earli": 9, "stage": 9, "investig": 9, "strategi": 9, "readi": 9, "conceiv": 9, "kicad": 9, "schema": 9, "alwai": 9, "branch": 9, "python": 9, "similar": 9, "hardware_compon": 9, "abstract": 9, "abstract_hardware_compon": 9, "method": 9, "configur": [0, 9], "hardware_config": 9, "dictionari": 9, "config_xxx": 9, "xxx": 9, "nov": 0, "juli": 0, "2016": 0, "target": 0, "research": 0, "statu": 0, "matur": 0, "progress": 0, "offici": 0, "guidelin": 0, "tutori": 0, "content": 0, "partner": 0, "cite": 0, "introduct": 0, "technic": 0, "v2023": 0, "tow": 4, "led": 6, "consid": 6, "temporari": 6, "orang": 6, "interfac": 0}, "objects": {"": [[8, 0, 0, "-", "ohmpi"]]}, "objtypes": {"0": "py:module"}, "objnames": {"0": ["py", "module", "Python module"]}, "titleterms": {"ohmpi": [0, 1, 2, 6, 7, 10, 11], "project": 1, "author": 1, "partner": 1, "cite": 1, "introduct": 1, "step": [2, 3, 4, 5, 6, 7], "n": [3, 4, 5, 6], "1": [3, 10, 11], "raspberri": [3, 10, 11], "pi": [3, 10, 11], "configur": [2, 3, 7, 10, 11], "part": [3, 4, 5], "A": [3, 4, 5], "os": [3, 10, 11], "instal": [3, 10, 11], "b": [3, 4, 5, 10, 11], "virtual": [3, 10, 11], "environ": [3, 10, 11], "packag": [3, 10, 11], "c": [3, 4, 5], "activ": [3, 10, 11], "thonni": [3, 10, 11], "python": [2, 3, 7, 10, 11], "id": [3, 10, 11], "2": 4, "measur": [4, 10, 11], "board": [4, 5, 10, 11], "assembl": [4, 5, 6, 10, 11], "requir": [4, 5], "compon": [4, 5, 9, 10, 11], "list": [4, 5, 10, 11], "descript": [4, 10, 11], "start": 4, "up": 4, "check": 4, "3": 5, "mux": 5, "address": 5, "valid": 5, "4": 6, "v": [10, 11], "01": 10, "limit": [10, 11], "32": [10, 11], "electrod": [2, 7, 10, 11], "The": [2, 7, 10, 11], "philosophi": [2, 7, 10, 11], "technic": [10, 11], "data": [10, 11], "current": [10, 11], "inject": [10, 11], "card": [10, 11], "connect": [10, 11], "electr": [10, 11], "resist": [0, 10, 11], "implement": [10, 11], "first": [10, 11], "four": [10, 11], "multiplex": [10, 11], "oper": [2, 7, 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": 10, "titl": 10, "02": 11, "v2023": [2, 7], "64": [2, 7], "12v": [2, 7], "hardwar": [0, 2, 7, 9], "specif": [2, 7], "build": [2, 7], "an": [2, 7], "softwar": [2, 7, 9], "system": [2, 7], "architectur": [2, 7], "logger": [2, 7], "file": [2, 7], "interfac": [2, 7, 9], "applic": [2, 7], "web": [2, 7], "mqtt": [2, 7], "api": 8, "refer": 8, "new": 9, "open": 0, "sourc": 0, "meter": 0, "summari": 0, "document": 0, "center": 0}, "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/V2023.x.x/V2023_step_02.html b/doc/build/html/source_rst/V2023.x.x/V2023_step_02.html index 3f2f0ca2..6f76d7dd 100644 --- 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 @@ -575,6 +575,46 @@ corners)</p></td> </tr> </tbody> </table> +<table class="docutils align-default" id="id2"> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id2" 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>Spacer 3x11 mm</p></td> +<td><p>8</p></td> +<td><p>0.39</p></td> +<td><p>3.12</p></td> +<td><p>Wurth Elektronik</p></td> +<td><p>971110321</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>Screw</p></td> +<td><p>4</p></td> +<td><p>0.305</p></td> +<td><p>1.22</p></td> +<td><p>APM HEXSEAL</p></td> +<td><p>RM3X8MM-2701</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/APM-HEXSEAL/RM3X8MM-2701?qs=JJSE%2F12mKnS3VxSDrYXUHw%3D%3D">https://www.mouser.fr/ProductDetail/APM-HEXSEAL/RM3X8MM-2701?qs=JJSE%2F12mKnS3VxSDrYXUHw%3D%3D</a></p></td> +</tr> +</tbody> +</table> <table class="docutils align-center"> <tbody> <tr class="row-odd"><td rowspan="2"><p>1</p></td> 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 index f3c7e95c..81f98e48 100644 --- 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 @@ -110,6 +110,180 @@ In the following presentation for an OhmPi 64 electrodes, we will use the addres <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-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>Printed circuit board</p></td> +<td><p>4</p></td> +<td><p>140</p></td> +<td><p>560</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>Pin strip no ejector 16 pins</p></td> +<td><p>16</p></td> +<td><p>0.62</p></td> +<td><p>9.92</p></td> +<td><p>BLK electronic</p></td> +<td><p>1580994</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/tru-components-1580994-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-16-no-of-rows-2-1-pcs-1580994">https://www.conrad.com/p/tru-components-1580994-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-16-no-of-rows-2-1-pcs-1580994</a></p></td> +</tr> +<tr class="row-even"><td><p>diode-1n4007</p></td> +<td><p>256</p></td> +<td><p>0.091</p></td> +<td><p>23.296</p></td> +<td><p>Diodes Incorporated</p></td> +<td><p>1N4007-T</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Diodes-Incorporated/1N4007-T?qs=sGAEpiMZZMueQxo7L%2FBPyAkbORUUMREn">https://www.mouser.fr/ProductDetail/Diodes-Incorporated/1N4007-T?qs=sGAEpiMZZMueQxo7L%2FBPyAkbORUUMREn</a></p></td> +</tr> +<tr class="row-odd"><td><p>Pin strip no ejector 6 pins</p></td> +<td><p>4</p></td> +<td><p>0.39</p></td> +<td><p>1.56</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">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</a></p></td> +</tr> +<tr class="row-even"><td><p>Dual screw terminal (5.08-mm pitch)</p></td> +<td><p>12</p></td> +<td><p>0.648</p></td> +<td><p>7.776</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>Generic male header - 3 pins</p></td> +<td><p>12</p></td> +<td><p>0.205</p></td> +<td><p>2.46</p></td> +<td><p>TE Connectivity</p></td> +<td><p>4-103321-5</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/TE-Connectivity/4-103321-5?qs=5TwgZeq9E7HSYLqaljJYrw%3D%3D">https://www.mouser.fr/ProductDetail/TE-Connectivity/4-103321-5?qs=5TwgZeq9E7HSYLqaljJYrw%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>MCP23017 I2C I/O Expander</p></td> +<td><p>16</p></td> +<td><p>2.5</p></td> +<td><p>40</p></td> +<td><p>Adafruit</p></td> +<td><p>732</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/732?qs=sGAEpiMZZMsKEdP9slC0Yfx16nYdMpXJueeOGoLBlDI%3D">https://www.mouser.fr/ProductDetail/Adafruit/732?qs=sGAEpiMZZMsKEdP9slC0Yfx16nYdMpXJueeOGoLBlDI%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>Omron G5LE-1-VD 12 VDC PCB relay 12 V DC 8 A 1</p></td> +<td><p>256</p></td> +<td><p>1.27</p></td> +<td><p>325.12</p></td> +<td><p>Omron</p></td> +<td><p>G5LE-1-VD 12 VDC</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/omron-g5le-1-vd-12-vdc-pcb-relay-12-v-dc-8-a-1-change-over-1-pcs-503811">https://www.conrad.com/p/omron-g5le-1-vd-12-vdc-pcb-relay-12-v-dc-8-a-1-change-over-1-pcs-503811</a></p></td> +</tr> +<tr class="row-even"><td><p>ZVN4206A MOSFET-NCHANNEL</p></td> +<td><p>256</p></td> +<td><p>0.471</p></td> +<td><p>120.576</p></td> +<td><p>Diodes Incorporated</p></td> +<td><p>ZVN4206A</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Diodes-Incorporated/ZVN4206A?qs=vHuUswq2%252Bsz9b%2Ff6fcXt7g%3D%3D">https://www.mouser.fr/ProductDetail/Diodes-Incorporated/ZVN4206A?qs=vHuUswq2%252Bsz9b%2Ff6fcXt7g%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>100kΩ Resistor</p></td> +<td><p>256</p></td> +<td><p>0.061</p></td> +<td><p>15.616</p></td> +<td><p>Vishay / Beyschlag</p></td> +<td><p>MBA02040C1003FRP00</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Vishay-Beyschlag/MBA02040C1003FRP00?qs=mzRxyRlhVdt9crF7Zyf%2F5Q%3D%3D">https://www.mouser.fr/ProductDetail/Vishay-Beyschlag/MBA02040C1003FRP00?qs=mzRxyRlhVdt9crF7Zyf%2F5Q%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>Adafruit TCA9548A</p></td> +<td><p>4</p></td> +<td><p>5.89</p></td> +<td><p>23.56</p></td> +<td><p>Adafruit</p></td> +<td><p>2717</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Adafruit/2717?qs=sGAEpiMZZMsyYdr3R27aV4EQf73yOH%252Baqg%252BZ3hVktao%3D">https://www.mouser.fr/ProductDetail/Adafruit/2717?qs=sGAEpiMZZMsyYdr3R27aV4EQf73yOH%252Baqg%252BZ3hVktao%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>BKL Electronic 10120558 Pin strip no ejector Contact spacing: 2.54 mm Total number of pins: 16 No. of rows: 2 1 pc(s)</p></td> +<td><p>16</p></td> +<td><p>0.51</p></td> +<td><p>8.16</p></td> +<td><p>BLK electronic</p></td> +<td><p>10120558</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/bkl-electronic-10120558-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-16-no-of-rows-2-1-pcs-741727?searchTerm=741727&searchType=suggest&searchSuggest=product">https://www.conrad.com/p/bkl-electronic-10120558-pin-strip-no-ejector-contact-spacing-254-mm-total-number-of-pins-16-no-of-rows-2-1-pcs-741727?searchTerm=741727&searchType=suggest&searchSuggest=product</a></p></td> +</tr> +<tr class="row-even"><td><p>BKL Electronic 10120862 Pin connector + strain relief Contact spacing: 2.54 mm Total number of pins: 6 No. of rows: 2 1</p></td> +<td><p>16</p></td> +<td><p>0.84</p></td> +<td><p>13.44</p></td> +<td><p>BLK electronic</p></td> +<td><p>10120862</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/bkl-electronic-10120862-pin-connector-strain-relief-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-742063">https://www.conrad.com/p/bkl-electronic-10120862-pin-connector-strain-relief-contact-spacing-254-mm-total-number-of-pins-6-no-of-rows-2-1-742063</a></p></td> +</tr> +<tr class="row-odd"><td><p>BKL Electronic 10120158/10 Ribbon cable Contact spacing: 1.27 mm 16 x 0.08 mm² Multi-coloured 10 m</p></td> +<td><p>1</p></td> +<td><p>27</p></td> +<td><p>27</p></td> +<td><p>BLK electronic</p></td> +<td><p>10120158/10</p></td> +<td><p><a class="reference external" href="https://www.conrad.com/p/bkl-electronic-1012015810-ribbon-cable-contact-spacing-127-mm-16-x-008-mm-multi-coloured-10-m-1548658?searchTerm=1548658&searchType=suggest&searchSuggest=product">https://www.conrad.com/p/bkl-electronic-1012015810-ribbon-cable-contact-spacing-127-mm-16-x-008-mm-multi-coloured-10-m-1548658?searchTerm=1548658&searchType=suggest&searchSuggest=product</a></p></td> +</tr> +<tr class="row-even"><td><p>spacer 5.5 HEX 25 mm M3 male/female</p></td> +<td><p>31</p></td> +<td><p>2.79</p></td> +<td><p>86.49</p></td> +<td><p>Keystone Electronics</p></td> +<td><p>24300</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Keystone-Electronics/24300?qs=UWqYQ%2F2cZWu0ejpOzmZC2A%3D%3D">https://www.mouser.fr/ProductDetail/Keystone-Electronics/24300?qs=UWqYQ%2F2cZWu0ejpOzmZC2A%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>Screw</p></td> +<td><p>9</p></td> +<td><p>0.305</p></td> +<td><p>2.745</p></td> +<td><p>APM HEXSEAL</p></td> +<td><p>RM3X8MM-2701</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/APM-HEXSEAL/RM3X8MM-2701?qs=JJSE%2F12mKnS3VxSDrYXUHw%3D%3D">https://www.mouser.fr/ProductDetail/APM-HEXSEAL/RM3X8MM-2701?qs=JJSE%2F12mKnS3VxSDrYXUHw%3D%3D</a></p></td> +</tr> +<tr class="row-even"><td><p>spacer 5.5 HEX 25 mm M3 female/female</p></td> +<td><p>9</p></td> +<td><p>0.846</p></td> +<td><p>7.614</p></td> +<td><p>Keystone Electronics</p></td> +<td><p>25515</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Keystone-Electronics/25515?qs=UWqYQ%2F2cZWuxuhUmfr%252BZuQ%3D%3D">https://www.mouser.fr/ProductDetail/Keystone-Electronics/25515?qs=UWqYQ%2F2cZWuxuhUmfr%252BZuQ%3D%3D</a></p></td> +</tr> +<tr class="row-odd"><td><p>DIP dual-in-line 2*14</p></td> +<td><p>16</p></td> +<td><p>1.55</p></td> +<td><p>24.8</p></td> +<td><p>Preci-dip</p></td> +<td><p>110-87-328-41-001101</p></td> +<td><p><a class="reference external" href="https://www.mouser.fr/ProductDetail/Preci-dip/110-87-328-41-001101?qs=uQD7XCvsSCNr3HWD6fta8g%3D%3D">https://www.mouser.fr/ProductDetail/Preci-dip/110-87-328-41-001101?qs=uQD7XCvsSCNr3HWD6fta8g%3D%3D</a></p></td> +</tr> +</tbody> +</table> <table class="docutils align-center"> <tbody> <tr class="row-odd"><td rowspan="2"><p>1</p></td> diff --git a/doc/build/html/source_rst/V2024.x.x/V2024.html b/doc/build/html/source_rst/V2024.x.x/V2024.html index 204abc78..e0123cbb 100644 --- a/doc/build/html/source_rst/V2024.x.x/V2024.html +++ b/doc/build/html/source_rst/V2024.x.x/V2024.html @@ -71,6 +71,7 @@ </ul> </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="../developing_hardware_components.html">Software interface to new hardware components</a></li> </ul> </div> diff --git a/doc/build/html/source_rst/developing_hardware_components.html b/doc/build/html/source_rst/developing_hardware_components.html new file mode 100644 index 00000000..7ee431e6 --- /dev/null +++ b/doc/build/html/source_rst/developing_hardware_components.html @@ -0,0 +1,144 @@ +<!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>Software interface to new hardware components — 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="API reference" href="api.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"><a class="reference internal" href="api.html">API reference</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Software interface to new hardware components</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">Software interface to new hardware components</li> + <li class="wy-breadcrumbs-aside"> + <a href="../_sources/source_rst/developing_hardware_components.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="software-interface-to-new-hardware-components"> +<h1>Software interface to new hardware components<a class="headerlink" href="#software-interface-to-new-hardware-components" title="Permalink to this heading">ïƒ</a></h1> +<p><a href="#id1"><span class="problematic" id="id2">**</span></a>* DRAFT VERSION - TO BE REVIEWED * +This section is intended for developers of a new hardware component as part of an OhmPi system.</p> +<p>It presents some advices and best practices that should help developing new hardware components to work +within an OhmPi system.</p> +<p>OhmPi is an open source system and contributions in terms of hardware and software are welcome. However, in order to +maintain the project on tracks and promote exchange and reuse, it is necessary that contributors +Developing a new hardware component should ideally follow a few basic steps.</p> +<p>Two cases should be distinguished when dealing with hardware development components:</p> +<p>1- Developments of a hardware component that comply with the way the OhmPi Hardware System works. Such developments typically +focus on improving an existing component (reduce cost, improve performance, adapt range to specific applications, +design with easily available parts…). The newly created hardware component will expose the minimal functionalities required +by hardware_system for this type of component.</p> +<p>2- Developments of a hardware component that introduce changes in the way the OhmPi Hardware System works. Such +developments do not only focus on improving a single component but also on the way to operate the system. A +discussion with developers of the OhmPi_Hardware and OhmPi classes should be initiated at a very early stage to investigate +the best ways to design and implement a working solution.</p> +<p>If you are dealing with case 1 or have designed a development path and strategy, you are ready to start.</p> +<p>First the hardware board/device should be conceived and designed. The Ohmpi team recommends that contributors design or +import their boards within KiCAD and that both schemas and PCB are shared.</p> +<p>When developing a new component Class, always start your development in a new branch. +1- Create a new python file or make a copy and modify an existing similar component file. All hardware component modules +are stored in the ohmpi/hardware_component directory. +In the newly created python file, define a new class based on the relevant abstract class of abstract_hardware_components.py. +Implement the abstract methods to interact with your hardware. Name the file according to the name of the component. +Make sure to place this new python module in the ohmpi/hardware_component directory.</p> +<p>2- Create a new configuration file or make a copy and modify an existing configuration file. All existing config files +are stored in the ohmpi/hardware_component directory. +In this newly created config file, describe your system including the new component in the HARDWARE_CONFIG dictionary. +Name it config_XXX.py where XXX should be replaced by an expression describing the system. +Make sure to place your new config file in the ohmpi/configs directory.</p> +<p>3- Create a new script or make a copy and modify of an existing script for testing the component. +In this script, write python code where you will conduct the tests of the required functionalities of the new component.</p> +</section> + + + </div> + </div> + <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> + <a href="api.html" class="btn btn-neutral float-left" title="API reference" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + </div> + + <hr/> + + <div role="contentinfo"> + <p>© 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 index 7ad64b08..8a6d66e0 100644 --- a/doc/build/html/source_rst/v1.xx/V1_01.html +++ b/doc/build/html/source_rst/v1.xx/V1_01.html @@ -574,6 +574,168 @@ are displayed on the screen. A measurement file is automatically created and nam <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> +<table class="docutils align-default" id="id9"> +<caption><span class="caption-text">Table Title</span><a class="headerlink" href="#id9" 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: 18%" /> +</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> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>Raspberry Pi 3 Model B+</p></td> +<td><p>1</p></td> +<td><p>37</p></td> +<td><p>37</p></td> +<td><p>Raspberry</p></td> +<td><p>Raspberry Pi 3 Model B</p></td> +</tr> +<tr class="row-odd"><td><p>Raspberry Pi 1 2 and 3 Power Supply</p></td> +<td><p>1</p></td> +<td><p>8.37</p></td> +<td><p>8.37</p></td> +<td><p>Raspberry</p></td> +<td><p>Raspberry Pi 1 2 and 3 Power Supply</p></td> +</tr> +<tr class="row-even"><td><p>SainSmart 16-Channel Canal 12V Relay Relais Module pour Arduino DSP AVR PIC ARM</p></td> +<td><p>8</p></td> +<td><p>24.99</p></td> +<td><p>199.92</p></td> +<td><p>Sain Smart</p></td> +<td><p>101-70-103</p></td> +</tr> +<tr class="row-odd"><td><p>4-Channel 5V Relay Module</p></td> +<td><p>1</p></td> +<td><p>7.99</p></td> +<td><p>7.99</p></td> +<td><p>Sain Smart</p></td> +<td><p>20-018-101-CMS</p></td> +</tr> +<tr class="row-even"><td><p>cable 1X1 mm2 (50 m)</p></td> +<td><p>1</p></td> +<td><p>19.66</p></td> +<td><p>19.66</p></td> +<td><p>TRU COMPONENTS</p></td> +<td><p>1568649</p></td> +</tr> +<tr class="row-odd"><td><p>cable 1X0.5 mm2 (100 m)</p></td> +<td><p>1</p></td> +<td><p>29.71</p></td> +<td><p>29.71</p></td> +<td><p>TRU COMPONENTS</p></td> +<td><p>1565235</p></td> +</tr> +<tr class="row-even"><td><p>Printed circuit board (packaging quantity x 3)</p></td> +<td><p>1</p></td> +<td><p>12</p></td> +<td><p>12</p></td> +<td><p>Asler</p></td> +<td><p>0</p></td> +</tr> +<tr class="row-odd"><td><p>Header sets 1x10</p></td> +<td><p>1</p></td> +<td><p>2.68</p></td> +<td><p>2.68</p></td> +<td><p>Samtec</p></td> +<td><p>SSW-110-02-G-S</p></td> +</tr> +<tr class="row-even"><td><p>Dual screw terminal (3.5-mm pitch)</p></td> +<td><p>7</p></td> +<td><p>0.648</p></td> +<td><p>4.55</p></td> +<td><p>RS PRO</p></td> +<td><p>897-1332</p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 1 Kohm 0.5W +- 0.1%</p></td> +<td><p>4</p></td> +<td><p>0.858</p></td> +<td><p>3.44</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K0BYA</p></td> +</tr> +<tr class="row-even"><td><p>Resistor 1.5 Kohms +- 0.1%</p></td> +<td><p>4</p></td> +<td><p>0.627</p></td> +<td><p>2.52</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K5BYA</p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 50 +- 0.1%</p></td> +<td><p>1</p></td> +<td><p>8.7</p></td> +<td><p>8.7</p></td> +<td><p>TE Connectivity</p></td> +<td><p>UPW50B50RV</p></td> +</tr> +<tr class="row-even"><td><p>LM358N AMP-o</p></td> +<td><p>4</p></td> +<td><p>0.8</p></td> +<td><p>2.4</p></td> +<td><p>Texas Instruments</p></td> +<td><p>LM358AN/NOPB</p></td> +</tr> +<tr class="row-odd"><td><p>ADS1115</p></td> +<td><p>1</p></td> +<td><p>11.9</p></td> +<td><p>11.9</p></td> +<td><p>Adafruit</p></td> +<td><p>1083</p></td> +</tr> +<tr class="row-even"><td><p>12V battery 7ah</p></td> +<td><p>1</p></td> +<td><p>19.58</p></td> +<td><p>19.58</p></td> +<td><p>RS PRO</p></td> +<td><p>537-5488</p></td> +</tr> +<tr class="row-odd"><td><p>Battery Holder Type D LR20 (9V)</p></td> +<td><p>1</p></td> +<td><p>3.43</p></td> +<td><p>3.43</p></td> +<td><p>RS PRO</p></td> +<td><p>185-4686</p></td> +</tr> +<tr class="row-even"><td><p>Ferrule Crimp Terminal (1 mm2) (500 pieces)</p></td> +<td><p>1</p></td> +<td><p>30.48</p></td> +<td><p>30.48</p></td> +<td><p>WEIDMULLER</p></td> +<td><p>9004330000</p></td> +</tr> +<tr class="row-odd"><td><p>Electrical Crimp Terminal (0.5 mm2) (100 piece)</p></td> +<td><p>1</p></td> +<td><p>6.38</p></td> +<td><p>6.38</p></td> +<td><p>AMP - TE CONNECTIVITY</p></td> +<td><p>966067-1</p></td> +</tr> +<tr class="row-even"><td><p>Car Fuse 1.0 A</p></td> +<td><p>1</p></td> +<td><p>0.2</p></td> +<td></td> +<td><p>LITTELFUSE</p></td> +<td><p>LITTELFUSE</p></td> +</tr> +<tr class="row-odd"><td><p>Fuse holder (576-FHAC0002ZXJ)</p></td> +<td><p>1</p></td> +<td><p>4.96</p></td> +<td><p>4.96</p></td> +<td><p>LITTELFUSE</p></td> +<td><p>FHAC0002ZXJ</p></td> +</tr> +</tbody> +</table> </section> </section> diff --git a/doc/build/html/source_rst/v1.xx/V1_02.html b/doc/build/html/source_rst/v1.xx/V1_02.html index a53c97a3..9abfed13 100644 --- a/doc/build/html/source_rst/v1.xx/V1_02.html +++ b/doc/build/html/source_rst/v1.xx/V1_02.html @@ -187,7 +187,7 @@ For this step, the installation instructions are well described on the Raspberry <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> +<a class="reference internal image-reference" href="../../_images/raspbian_version1.jpg"><img alt="alternate text" src="../../_images/raspbian_version1.jpg" style="width: 800px; height: 400px;" /></a> </figure> </div> <div class="admonition warning"> @@ -265,21 +265,21 @@ to leave the virtual environment simply type:</p> <p>1- Run the Thonny Python IDE software, Click on raspberry access <strong>menu > programming> 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> +<a class="reference internal image-reference" href="../../_images/thonny_first_interface2.jpg"><img alt="alternate text" src="../../_images/thonny_first_interface2.jpg" style="width: 600px; height: 450px;" /></a> </figure> <p>3-Click on <strong>Run>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> +<a class="reference internal image-reference" href="../../_images/thonny_option1.jpg"><img alt="alternate text" src="../../_images/thonny_option1.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> +<a class="reference internal image-reference" href="../../_images/thonny_interpreter1.jpg"><img alt="alternate text" src="../../_images/thonny_interpreter1.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> +<a class="reference internal image-reference" href="../../_images/thonny_interpreter_folder1.jpg"><img alt="alternate text" src="../../_images/thonny_interpreter_folder1.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> @@ -328,7 +328,7 @@ We also added 4 capacitors on the +12v inputs of the fast operational amplifiers 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> +<a class="reference internal image-reference" href="../../_images/schema_measurement_board1_02.png"><img alt="alternate text" src="../../_images/schema_measurement_board1_02.png" style="width: 800px; height: 400px;" /></a> <figcaption> <p><span class="caption-text">Measurement board (Ohmpi version 1.02)</span><a class="headerlink" href="#id1" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -383,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="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> +<a class="reference internal image-reference" href="../../_images/measurement_board1-02.jpg"><img alt="alternate text" src="../../_images/measurement_board1-02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> <p><span class="caption-text">Measurement circuit board assembly: a) printed circuit board, b) adding the 1-KOhm resistors ± 1%, c)adding the 1.5-KOhm resistors ± 1%, d) adding the black female 1 x 10 header and the 7-blue screw terminal block(2 pin, 3.5-mm pitch), e) adding the 50-ohm reference resistor ± 0.1%, and f) adding the ADS1115 and the LM358N low-power dual operational amplifiers</span><a class="headerlink" href="#id2" title="Permalink to this image">ïƒ</a></p> </figcaption> </figure> <figure class="align-center" id="id3"> -<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> +<a class="reference internal image-reference" href="../../_images/measurement_board-2-V1-02.jpg"><img alt="alternate text" src="../../_images/measurement_board-2-V1-02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> <p><span class="caption-text">Measurement board installation with Raspberry Pi</span><a class="headerlink" href="#id3" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -410,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="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> +<a class="reference internal image-reference" href="../../_images/current_board.jpg"><img alt="alternate text" src="../../_images/current_board.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> <p><span class="caption-text">Wiring of the 4-channel relay module board for current injection management</span><a class="headerlink" href="#id4" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -423,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="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> +<a class="reference internal image-reference" href="../../_images/installation_current_board_1_02.jpg"><img alt="alternate text" src="../../_images/installation_current_board_1_02.jpg" style="width: 800px; height: 700px;" /></a> <figcaption> <p><span class="caption-text">Current injection board installation with Raspberry Pi</span><a class="headerlink" href="#id5" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -449,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="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> +<a class="reference internal image-reference" href="../../_images/multiplexer_implementation.jpg"><img alt="alternate text" src="../../_images/multiplexer_implementation.jpg" style="width: 800px; height: 500px;" /></a> <figcaption> <p><span class="caption-text">Schematic diagram of the wiring of two 16-channel relay shields</span><a class="headerlink" href="#id6" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -463,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="source_rst/v1.xx/connection.jpg"><img alt="alternate text" src="source_rst/v1.xx/connection.jpg" style="width: 800px; height: 400px;" /></a> +<a class="reference internal image-reference" href="../../_images/connection.jpg"><img alt="alternate text" src="../../_images/connection.jpg" style="width: 800px; height: 400px;" /></a> <figcaption> <p><span class="caption-text">Connection to the 16-channel relay shield</span><a class="headerlink" href="#id7" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -528,7 +528,7 @@ The next step consists of connecting the relay card inputs to the Raspberry Pi a 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> +<a class="reference internal image-reference" href="../../_images/cable.jpg"><img alt="alternate text" src="../../_images/cable.jpg" style="width: 800px; height: 300px;" /></a> <figcaption> <p><span class="caption-text">Wire cabling for multiplexer and terminal screw connection</span><a class="headerlink" href="#id8" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -537,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="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> +<a class="reference internal image-reference" href="../../_images/electrode_cable.jpg"><img alt="alternate text" src="../../_images/electrode_cable.jpg" style="width: 800px; height: 800px;" /></a> <figcaption> <p><span class="caption-text">Example of a multiplexer connection to the screw terminal for electrode no. 1.</span><a class="headerlink" href="#id9" title="Permalink to this image">ïƒ</a></p> </figcaption> @@ -587,6 +587,175 @@ are displayed on the screen. A measurement file is automatically created and nam <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> +<table class="docutils align-default" id="id10"> +<caption><span class="caption-text">List of components</span><a class="headerlink" href="#id10" 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: 18%" /> +</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> +</tr> +</thead> +<tbody> +<tr class="row-even"><td><p>Raspberry Pi 3 Model B+</p></td> +<td><p>1</p></td> +<td><p>37</p></td> +<td><p>37</p></td> +<td><p>Raspberry</p></td> +<td><p>Raspberry Pi 3 Model B</p></td> +</tr> +<tr class="row-odd"><td><p>Raspberry Pi 1 2 and 3 Power Supply</p></td> +<td><p>1</p></td> +<td><p>8.37</p></td> +<td><p>8.37</p></td> +<td><p>Raspberry</p></td> +<td><p>Raspberry Pi 1 2 and 3 Power Supply</p></td> +</tr> +<tr class="row-even"><td><p>SainSmart 16-Channel 12V Relay</p></td> +<td><p>8</p></td> +<td><p>24.99</p></td> +<td><p>199.92</p></td> +<td><p>Sain Smart</p></td> +<td><p>101-70-103</p></td> +</tr> +<tr class="row-odd"><td><p>4-Channel 5V Relay Module</p></td> +<td><p>1</p></td> +<td><p>7.99</p></td> +<td><p>7.99</p></td> +<td><p>Sain Smart</p></td> +<td><p>20-018-101-CMS</p></td> +</tr> +<tr class="row-even"><td><p>cable 1X1 mm2 (50 m)</p></td> +<td><p>1</p></td> +<td><p>19.66</p></td> +<td><p>19.66</p></td> +<td><p>TRU COMPONENTS</p></td> +<td><p>1568649</p></td> +</tr> +<tr class="row-odd"><td><p>cable 1X0.5 mm2 (100 m)</p></td> +<td><p>1</p></td> +<td><p>29.71</p></td> +<td><p>29.71</p></td> +<td><p>TRU COMPONENTS</p></td> +<td><p>1565235</p></td> +</tr> +<tr class="row-even"><td><p>Printed circuit board (packaging quantity x 3)</p></td> +<td><p>1</p></td> +<td><p>12</p></td> +<td><p>12</p></td> +<td><p>Asler</p></td> +<td><p>0</p></td> +</tr> +<tr class="row-odd"><td><p>Header sets 1x10</p></td> +<td><p>1</p></td> +<td><p>2.68</p></td> +<td><p>2.68</p></td> +<td><p>Samtec</p></td> +<td><p>SSW-110-02-G-S</p></td> +</tr> +<tr class="row-even"><td><p>Dual screw terminal (3.5-mm pitch)</p></td> +<td><p>7</p></td> +<td><p>0.648</p></td> +<td><p>4.55</p></td> +<td><p>RS PRO</p></td> +<td><p>897-1332</p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 1 Kohm 0.5W +- 0.1%</p></td> +<td><p>4</p></td> +<td><p>0.858</p></td> +<td><p>3.44</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K0BYA</p></td> +</tr> +<tr class="row-even"><td><p>Resistor 1.5 Kohms +- 0.1%</p></td> +<td><p>4</p></td> +<td><p>0.627</p></td> +<td><p>2.52</p></td> +<td><p>TE Connectivity</p></td> +<td><p>H81K5BYA</p></td> +</tr> +<tr class="row-odd"><td><p>Resistor 50 +- 0.1%</p></td> +<td><p>1</p></td> +<td><p>8.7</p></td> +<td><p>8.7</p></td> +<td><p>TE Connectivity</p></td> +<td><p>UPW50B50RV</p></td> +</tr> +<tr class="row-even"><td><p>LM358N AMP-o</p></td> +<td><p>4</p></td> +<td><p>0.8</p></td> +<td><p>2.4</p></td> +<td><p>Texas Instruments</p></td> +<td><p>LM358AN/NOPB</p></td> +</tr> +<tr class="row-odd"><td><p>ADS1115</p></td> +<td><p>1</p></td> +<td><p>11.9</p></td> +<td><p>11.9</p></td> +<td><p>Adafruit</p></td> +<td><p>1083</p></td> +</tr> +<tr class="row-even"><td><p>12V battery 7ah</p></td> +<td><p>1</p></td> +<td><p>19.58</p></td> +<td><p>19.58</p></td> +<td><p>RS PRO</p></td> +<td><p>537-5488</p></td> +</tr> +<tr class="row-odd"><td><p>Battery Holder Type D LR20 (9V)</p></td> +<td><p>1</p></td> +<td><p>3.43</p></td> +<td><p>3.43</p></td> +<td><p>RS PRO</p></td> +<td><p>185-4686</p></td> +</tr> +<tr class="row-even"><td><p>Ferrule Crimp Terminal (1 mm2) (500 pieces)</p></td> +<td><p>1</p></td> +<td><p>30.48</p></td> +<td><p>30.48</p></td> +<td><p>WEIDMULLER</p></td> +<td><p>9004330000</p></td> +</tr> +<tr class="row-odd"><td><p>Electrical Crimp Terminal (0.5 mm2) (100 piece)</p></td> +<td><p>1</p></td> +<td><p>6.38</p></td> +<td><p>6.38</p></td> +<td><p>AMP - TE CONNECTIVITY</p></td> +<td><p>966067-1</p></td> +</tr> +<tr class="row-even"><td><p>Fuse 1.0 A</p></td> +<td><p>1</p></td> +<td><p>0.2</p></td> +<td></td> +<td><p>LITTELFUSE</p></td> +<td><p>0251001.PAT1L</p></td> +</tr> +<tr class="row-odd"><td><p>Capacitor 100nF 50Vdc 10% Ceramic</p></td> +<td><p>4</p></td> +<td><p>0.2</p></td> +<td><p>0.8</p></td> +<td><p>KEMET</p></td> +<td><p>C320C104K1</p></td> +</tr> +<tr class="row-even"><td><p>DC/DC converter 12 to 24V</p></td> +<td><p>2</p></td> +<td><p>26.72</p></td> +<td><p>53.44</p></td> +<td><p>TracoPower</p></td> +<td><p>TRN 3-1215</p></td> +</tr> +</tbody> +</table> </section> </section> diff --git a/doc/source/index.rst b/doc/source/index.rst index eadff7d2..69402149 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -39,6 +39,7 @@ Contents: source_rst/V2023.x.x/V2023 source_rst/V2024.x.x/V2024 source_rst/api + source_rst/developing_hardware_components.rst 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 index ca79eaeb..03554807 100644 --- a/doc/source/source_rst/V2023.x.x/V2023_step_02.rst +++ b/doc/source/source_rst/V2023.x.x/V2023_step_02.rst @@ -301,7 +301,7 @@ which allows to realize precise current measurement around a shunt resistor. The +------------------------------------------------------------------------+ .. csv-table:: List of components - :file: step_n_2/b/test_2_xx.csv + :file: ../../img/v2023.x.x/step_n_2/b/test_2_xx.csv :widths: 30, 70, 70, 70, 70, 35, 35 :header-rows: 1 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 index c268d128..f77e9b5e 100644 --- a/doc/source/source_rst/V2023.x.x/V2023_step_03.rst +++ b/doc/source/source_rst/V2023.x.x/V2023_step_03.rst @@ -30,7 +30,7 @@ Required components .. csv-table:: List of components - :file: step_n_3/a/MUX_board_list_2_xx.csv + :file: ../../img/v2023.x.x/step_n_3/a/MUX_board_list_2_xx.csv :widths: 30, 70, 70, 70, 70, 35, 35 :header-rows: 1 diff --git a/doc/source/source_rst/developing_hardware_components.rst b/doc/source/source_rst/developing_hardware_components.rst new file mode 100644 index 00000000..fa97c06a --- /dev/null +++ b/doc/source/source_rst/developing_hardware_components.rst @@ -0,0 +1,46 @@ +Software interface to new hardware components +============================================= + +*** DRAFT VERSION - TO BE REVIEWED * +This section is intended for developers of a new hardware component as part of an OhmPi system. + +It presents some advices and best practices that should help developing new hardware components to work +within an OhmPi system. + +OhmPi is an open source system and contributions in terms of hardware and software are welcome. However, in order to +maintain the project on tracks and promote exchange and reuse, it is necessary that contributors +Developing a new hardware component should ideally follow a few basic steps. + +Two cases should be distinguished when dealing with hardware development components: + +1- Developments of a hardware component that comply with the way the OhmPi Hardware System works. Such developments typically +focus on improving an existing component (reduce cost, improve performance, adapt range to specific applications, +design with easily available parts...). The newly created hardware component will expose the minimal functionalities required +by hardware_system for this type of component. + +2- Developments of a hardware component that introduce changes in the way the OhmPi Hardware System works. Such +developments do not only focus on improving a single component but also on the way to operate the system. A +discussion with developers of the OhmPi_Hardware and OhmPi classes should be initiated at a very early stage to investigate +the best ways to design and implement a working solution. + +If you are dealing with case 1 or have designed a development path and strategy, you are ready to start. + +First the hardware board/device should be conceived and designed. The Ohmpi team recommends that contributors design or +import their boards within KiCAD and that both schemas and PCB are shared. + +When developing a new component Class, always start your development in a new branch. +1- Create a new python file or make a copy and modify an existing similar component file. All hardware component modules +are stored in the ohmpi/hardware_component directory. +In the newly created python file, define a new class based on the relevant abstract class of abstract_hardware_components.py. +Implement the abstract methods to interact with your hardware. Name the file according to the name of the component. +Make sure to place this new python module in the ohmpi/hardware_component directory. + +2- Create a new configuration file or make a copy and modify an existing configuration file. All existing config files +are stored in the ohmpi/hardware_component directory. +In this newly created config file, describe your system including the new component in the HARDWARE_CONFIG dictionary. +Name it config_XXX.py where XXX should be replaced by an expression describing the system. +Make sure to place your new config file in the ohmpi/configs directory. + +3- Create a new script or make a copy and modify of an existing script for testing the component. +In this script, write python code where you will conduct the tests of the required functionalities of the new component. + diff --git a/doc/source/source_rst/v1.xx/V1_01.rst b/doc/source/source_rst/v1.xx/V1_01.rst index 3c8d9594..1829d683 100644 --- a/doc/source/source_rst/v1.xx/V1_01.rst +++ b/doc/source/source_rst/v1.xx/V1_01.rst @@ -524,7 +524,7 @@ Complete list of components .. csv-table:: Table Title - :file: list.csv + :file: ../../bom_list/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 index 6dad02c8..a486b855 100644 --- a/doc/source/source_rst/v1.xx/V1_02.rst +++ b/doc/source/source_rst/v1.xx/V1_02.rst @@ -64,7 +64,7 @@ For this step, the installation instructions are well described on the Raspberry .. note:: All the development tests were performed on Raspberry Pi 3 Model B, we used the following version of Raspbian: - .. figure:: raspbian_version.jpg + .. figure:: ../../img/raspbian_version.jpg :width: 800px :align: center :height: 400px @@ -164,7 +164,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 2- Thonny opens, Python runs on the root (Python 3.7.3 (/usr/bin/python3)) -.. figure:: thonny_first_interface.jpg +.. figure:: ../../img/thonny_first_interface.jpg :width: 600px :align: center :height: 450px @@ -173,7 +173,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 3-Click on **Run>select interpreter**, a new window opens click on interpret -.. figure:: thonny_option.jpg +.. figure:: ../../img/thonny_option.jpg :width: 600px :align: center :height: 450px @@ -182,7 +182,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 4-On the new open windows select **alternative Python3 or virtual environment** -.. figure:: thonny_interpreter.jpg +.. figure:: ../../img/thonny_interpreter.jpg :width: 600px :align: center :height: 450px @@ -195,7 +195,7 @@ If you decided to use a virtual environment, it is necessary to setup Thonny Pyt 7- In the **known interpreter** tab the path of the virtual environment should appear -.. figure:: thonny_interpreter_folder.jpg +.. figure:: ../../img/thonny_interpreter_folder.jpg :width: 600px :align: center :height: 450px @@ -253,7 +253,7 @@ We also added 4 capacitors on the +12v inputs of the fast operational amplifiers 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 +.. figure:: ../../img/v1.xx/schema_measurement_board1_02.png :width: 800px :align: center :height: 400px @@ -317,7 +317,7 @@ 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. -.. figure:: measurement_board1-02.jpg +.. figure:: ../../img/v1.xx/measurement_board1-02.jpg :width: 800px :align: center :height: 700px @@ -326,7 +326,7 @@ place a fuse holder with a 1.5-A fuse for safety purposes. 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 +.. figure:: ../../img/v1.xx/measurement_board-2-V1-02.jpg :width: 800px :align: center :height: 700px @@ -350,7 +350,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. -.. figure:: current_board.jpg +.. figure:: ../../img/v1.xx/current_board.jpg :width: 800px :align: center :height: 400px @@ -367,7 +367,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. -.. figure:: installation_current_board_1_02.jpg +.. figure:: ../../img/v1.xx/installation_current_board_1_02.jpg :width: 800px :align: center :height: 700px @@ -404,7 +404,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. -.. figure:: multiplexer_implementation.jpg +.. figure:: ../../img/v1.xx/multiplexer_implementation.jpg :width: 800px :align: center :height: 500px @@ -423,7 +423,7 @@ Once the operation has been completed, the 16 control pins of each 16-channel re 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 + .. figure:: ../../img/v1.xx/connection.jpg :width: 800px :align: center :height: 400px @@ -465,7 +465,7 @@ At this point, all that remains is to connect the electrodes of each multiplexer 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 +.. figure:: ../../img/v1.xx/cable.jpg :width: 800px :align: center :height: 300px @@ -478,7 +478,7 @@ the next figure provides an example of multiplexer relay connections for electro 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 +.. figure:: ../../img/v1.xx/electrode_cable.jpg :width: 800px :align: center :height: 800px @@ -539,7 +539,7 @@ Complete list of components .. csv-table:: List of components - :file: list - 1_02.csv + :file: ../../bom_list/list - 1_02.csv :widths: 30, 70, 70, 70, 70,70 :header-rows: 1 -- GitLab