<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/geomagneticfield/">
    <title>Raspberry Piで地磁気を測ってみる</title>
    <link>http://w.atwiki.jp/geomagneticfield/</link>
    <atom:link href="https://w.atwiki.jp/geomagneticfield/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>Raspberry Piで地磁気を測ってみる</description>

    <dc:language>ja</dc:language>
    <dc:date>2014-06-10T01:30:59+09:00</dc:date>
    <utime>1402331459</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/14.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/2.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/13.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/12.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/11.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/10.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/9.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/geomagneticfield/pages/3.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/14.html">
    <title>センサー出力の読み取り</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/14.html</link>
    <description>
      *磁力計の出力読み取り
レジスタマップによれば、磁力計の出力は0x03-0x08の6つのレジスタ、温度計の出力は0x31-0x32の2つのレジスタに入るらしい。また、磁力計のデータが準備できたかどうかの情報がはいるレジスタ(0x09)もあるらしい。
**レジスタアドレス0x03-0x08, 0x09 (OUT_X_H_M, OUT_X_L_M, OUT_Z_H_M, OUT_Z_L_M, OUT_Y_H_M, OUT_Y_L_M, SR_REG_M)
まずは、磁力計の出力の説明。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-11.png,width=300)
2アドレスを構成する16ビットのうち、下位12ビットで測定値を表している。注意しないといけないのは、
　(1) 12ビットは符号付2進数であること
　(2) アドレスの順に、&amp;bold(){X}, &amp;bold(){Z}, &amp;bold(){Y}軸の計測値となっていること
である。
次は、計測値有効・無効フラグの説明。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-12.png,width=400)
こちらは下位2ビットだけを見ることになる。0x01か0x03となっていれば新しいデータとみなしてよいのだろう。

**レジスタアドレス0x31-0x32 (TEMP_OUT_H_M, TEMP_OUT_L_M)
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-10.png,width=400)
温度も12ビットだが、上位から12ビット分を読まないといけない。磁力計のデータの格納の仕方と違うので注意が必要だ。ここには、温度計の分解能も記載されていて、8 LSB/degなので、0.125℃の分解能であることがわかる。

**レジスタ値を読み出してみる
レジスタ値を読み取るために、i2ctoolsでは、i2cgetというコマンドが用意されている。上記レジスタの値を読みだしてみる。
#highlight(xml){{
% sudo i2cget -y 1 0x1e 0x03
0x01
% sudo i2cget -y 1 0x1e 0x04
0x25
% sudo i2cget -y 1 0x1e 0x05
0xfe
% sudo i2cget -y 1 0x1e 0x06
0x7f
% sudo i2cget -y 1 0x1e 0x07
0xff
% sudo i2cget -y 1 0x1e 0x08
0xf9
% sudo i2cget -y 1 0x1e 0x09
0x03}}
X軸の計測値は、0x0125なので、1*256+2*16+5=293である。
Z軸の計測値は、0xFE7Fである。符号付12ビット整数であれば、11ビットで最大の数(0x07FF)を超えると負になるので、この計測値は、14(=E)*256+7*16+15(=F)-4096=-385である。
Y軸の計測値は、0xFFF9である。10進数に直すと、15(=F)*256+15(=F)*16+9-4906=-7となった。
最後のレジスタ値は、0x03となっているので、データは新しく計測されたものと判断できる。

磁場の計測値を物理単位に直すと、
　X軸: 293/1100*1E5=26636 (nT)
　Y軸: -7/1100*1E5=-636 (nT)
　Z軸: -385/1100*1E5=-39286 (nT)
と求まった。

次に温度の方を読んでみる。
#highlight(xml){{
% sudo i2cget -y 1 0x1e 0x31
0x03
% sudo i2cget -y 1 0x1e 0x32
0x80}}
計測値は0x0380で、上から12ビットを使うのだから、0*256+3*16+8=56となる。温度に直すには、8で割ればよいので、56/8=7℃。なんかおかしい。夏なんですけど。。。温度センサーはおまけみたいなものだから、使い物にならないのかもしれない。

*加速度計の出力読み取り
加速度計の出力は0x28-0x2Dの6つのレジスタに入るらしい。
**レジスタアドレス0x28-0x2D (OUT_X_L_A, OUT_X_H_A, OUT_Y_L_A, OUT_Y_h_A, OUT_Z_L_A, OUT_Z_H_A)
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-14.png,width=300)
磁力計とは、軸の順番、上位・下位バイトの順番が異なるので混乱しそうだ。注意する必要がある。
2アドレスを構成する16ビットのうち、どの12ビットで測定値を表すかについての明確な記述がなく戸惑ったが、Z軸の出力値が1G近くになるようにビットを選ぶことで、上からの12ビットで測定値を表しているという推定ができる。磁力計のデータ格納方法とは異なるので、ここも注意する必要がある。(温度センサーと同じ格納の仕方ではあるが。)

**レジスタ値を読み出してみる
磁力計と同じように、i2cgetでレジスタ値を読み取ってみる。
#highlight(xml){{
% sudo i2cget -y 1 0x19 0x28
0xf0
% sudo i2cget -y 1 0x19 0x29
0xff
% sudo i2cget -y 1 0x19 0x2a
0x40
% sudo i2cget -y 1 0x19 0x2b
0x02
% sudo i2cget -y 1 0x19 0x2c
0xc0
% sudo i2cget -y 1 0x19 0x2d
0x40}}
上位バイトと下位バイトが逆順であることと上位12ビットが計測値であることに注意して、
X軸の計測値は、0xFFF0なので、15*256+15*16+15-4096=-1である。
Y軸の計測値は、0x0240なので、0*256+2*16+4=36である。
Z軸の計測値は、0x40C0なので、4*256+0*16+12(=C)=1036である。

加速度の計測値を物理単位に直すと、1 mg/LSBであることを使って、
　X軸: -1/1=-1 (mg)=-0.001 (g)
　Y軸: 36/1=36 (mg)=0.036 (g)
　Z軸: 1036/1=1036 (mg)=1.036 (g)
と求まった。

----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-10T01:30:59+09:00</dc:date>
    <utime>1402331459</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/2.html</link>
    <description>
      
&lt;h3 id=&quot;id_b7a6c500&quot;&gt;メニュー&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/9.html&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;はじめに&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/10.html&quot;&gt;準備&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/11.html&quot;&gt;センサーモジュール&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/12.html&quot;&gt;センサーモジュールとの通信&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/13.html&quot;&gt;センサーの初期設定&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/pages/14.html&quot;&gt;センサー出力の読み取り&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&quot;id_453df200&quot;&gt;リンク&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://atwiki.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;@wiki&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atwiki.jp/guide/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;@wikiご利用ガイド&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&quot;id_c0085a49&quot;&gt;他のサービス&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://atpages.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料ホームページ作成&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atword.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料ブログ作成&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atchs.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;2ch型掲示板レンタル&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atbbs.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料掲示板レンタル&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atpaint.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;お絵かきレンタル&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sns.atfb.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料ソーシャルプロフ&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide&quot;&gt;wikiの編集方法についてはこちら&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide/pages/25.html&quot;&gt;左メニューの編集方法についてはこちら&lt;/a&gt;&lt;br /&gt;
 &lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;http://www63.atwiki.jp/geomagneticfield/editx/2.html&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;ここを編集&lt;/font&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;　&lt;/div&gt;
&lt;div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/div&gt;
    </description>
    <dc:date>2014-06-10T00:41:30+09:00</dc:date>
    <utime>1402328490</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/13.html">
    <title>センサーの初期設定</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/13.html</link>
    <description>
      *レジスターマッピング
LSM303DLHCのデータシートによると、レジスターのアドレスとその意味は次のようになっている。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-1.jpg,width=400)
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-2.jpg,width=400)

加速度計の方はかなり沢山の設定項目(Type=rwのところ)があるが、磁力計の方は0x00, 0x01, 0x02の3つのレジスタを設定するだけのようである。

*磁力計の設定
**レジスタアドレス0x00 (CRA_REG_M)
最初の設定レジスタは、温度センサーによる測定の可否と磁場測定のサンプリングレートを決めるためのものである。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-3.png,width=400)
温度センサーを有効にして、サンプリングを15 Hzにするためには、
　10010000
というビットを立てればいいので、&amp;color(red){0x90}を書き込むことにする。

**レジスタアドレス0x01 (CRB_REG_M)
次のアドレスは、磁場計測のレンジを決めるところで、大変重要なものである。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-4.png,width=400)
レンジを最も狭くして感度を上げたいので、
　00100000
というビットをたてることにする。16進数では、&amp;color(red){0x20}となる。
この場合、レンジは±130000 nTで、分解能は12 bit(±2048)であるが、実際にはX軸とY軸は、1100/1E5 LSB/nT, Z軸は、980/1E5 LSB/nTであるので、1 LSBあたり、大体100 nT程度になるようだ。(LSB=Least Significant Bit(?), 量子化単位) 

**レジスタアドレス0x02 (MR_REG_M)
最後の設定項目は、観測実施モードについて。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-5.png,width=400)
連続して観測したいので、
　00000000
というビットを立てる。16進数では、&amp;color(red){0x00}となる。

**レジスタへの書き込み
じゃあ、上で決めた値をレジスタに書きもう。
#highlight(xml){{
% sudo i2cset -y 1 0x1e 0x00 0x90
% sudo i2cset -y 1 0x1e 0x01 0x20
% sudo i2cset -y 1 0x1e 0x02 0x00}}
何もメッセージは出てこないが、レジスタ値をダンプ(i2cdump)してみると、きちんとレジスタ値は書き変わっていた。

*加速度計の設定
加速度計のほうはやたらと設定項目があるが、さしあたって最初の設定が必要そうなのは、0x20と0x23の2か所のようである。
**レジスタアドレス0x20 (CTRL_REG1_A)
このレジスタは、加速度測定のサンプリングレートと各軸の計測可否を決めるためのものである。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-6.png,width=400)
全ての軸の測定を可能にして、サンプリングを10 Hzにするためには、
　00100111
とすればよい。すなわち、&amp;color(red){0x27}を書き込むことになる。

**レジスタアドレス0x23 (CTRL_REG4_A)
このレジスタは、加速度測定のレンジを指定する。
#image(http://cdn63.atwikiimg.com/geomagneticfield/pub/RM-7.png,width=400)
一番レンジの狭い±2gとして、&quot;High-resolution output mode&quot;に切り替えたいので、
　00001000
というビット、すなわち、&amp;color(red){0x08}を書き込む。
センサーの感度については、この表には記載がないが、他のページにの情報によれば、順に1 mg/LSB, 2 mg/LSB, 4 mg/LSB, 12 mg/LSBとなっている。
ちなみに、&quot;BLE&quot;にあるBig/Littleエンディアンの設定は、0=Big Endian(LSB@lower address), 1=Little Endian(MSB@lower address)のどちらかを選ぶ。

**レジスタへの書き込み
磁力計への書き込みと同様に、加速度計にも上で決めた値をレジスタに書む。
#highlight(xml){{
% sudo i2cset -y 1 0x19 0x20 0x27
% sudo i2cset -y 1 0x19 0x23 0x08}}
同じく何もメッセージは出てこないが、レジスタ値をダンプ(i2cdump)してみると、きちんとレジスタ値は書き変わっていた。
----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-09T23:34:09+09:00</dc:date>
    <utime>1402324449</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/12.html">
    <title>センサーモジュールとの通信</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/12.html</link>
    <description>
      *I2Cバス番号について
26ピン外部端子上に出ているI2Cのバス番号はRev. 2のRaspberry Piでは1となっているらしい(Rev 1なら0らしい)。実際には、もう一つのバス番号0もあるそうだが、26ピン外部端子には対応付けられていないそうだ。その証拠に、
#highlight(xml){{
% ls /dev/i2c-*}}
とすると、
#highlight(xml){{
/dev/i2c-0  /dev/i2c-1}}
2つのデバイスファイルが見つかる。以下のI2Cデバイスとの通信に関係してバス番号を指定するときは、1を使うことになる。

*スレーブアドレスの確認
i2cdetectコマンドを使ってデバイスが認識されるか確認する。
#highlight(xml){{
% sudo i2cdetect -y 1}}
スレーブアドレスが帰ってくることは帰ってくるのだが、
#highlight(xml){{
　    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --}}
となったり、
#highlight(xml){{
　    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- 19 -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --}}
となったりして、出力結果が安定しない。。。一抹の不安を覚えたが、マスターとスレーブの間の通信のタイミングによって、こうした問題が起こるのだろうと勝手に納得して先にすすんだ。しかし、やはりこの状態ではスレーブデバイスからデータを得ることができなかった。

調査の結果、&amp;color(red){「RaspberryPiのI2Cポートはプルアップ済み」}であるという情報を得た(例えば[[ここ&gt;http://airwhite.net/?p=296]])。MLSM303DLHCのジャンパーJ1, J2をショートして、モジュール上のプルアップ抵抗を有効にしていたことが問題を引き起こしていた原因と考えられる。はんだを吸い取って、再度試してみると、出力は安定し、常に0x19と0x1eを認識できるようになった。
#highlight(xml){{ 
　    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- 19 -- -- -- -- 1e --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --}}
スレーブアドレスは、0x19と0x1eであることが分かる。0x19は加速度センサーで、0x1eは磁気センサーになる。データシートのTable 14とTable 16の「7-bit slave address is 0011001b」および「7-bit slave address is 0011110b」という記述にも一致している。

*デバイスのレジスタ値を読み取る
スレーブデバイスの内部レジスタ値をダンプしてみる。
#highlight(xml){{
% sudo i2cdump -y 1 0x1e}}
しかし、出力がどうもおかしい。。。。
#highlight(xml){{
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX 00 00 02 48 34 33 00 00 3c    XXXXXXX..?H43..&lt;
10: 00 00 01 XX XX 00 00 00 00 00 00 XX 00 00 e8 10    ..?XX......X..??
20: 00 00 00 00 00 00 00 XX XX 00 00 00 00 00 00 00    .......XX.......
30: 00 00 00 00 XX XX 00 00 00 00 00 00 00 00 00 00    ....XX..........
40: 00 01 XX XX 00 00 00 00 00 00 00 00 00 00 00 00    .?XX............
50: XX 00 00 00 00 00 00 00 00 00 00 00 00 XX XX 00    X............XX.
60: 00 00 00 00 00 00 00 00 00 00 00 XX XX 00 00 00    ...........XX...
70: 00 00 00 XX 00 00 00 00 00 00 00 00 00 00 00 00    ...X............
80: XX 20 01 00 00 00 00 00 00 02 48 34 33 XX XX 3c    X ?......?H43XX&lt;
90: 00 00 00 00 00 00 00 00 00 00 1f XX 00 00 e8 10    ..........?X..??
a0: 00 00 00 00 00 00 00 7f XX 00 00 00 XX XX 00 00    .......?X...XX..
b0: 00 00 00 00 00 00 00 00 00 00 XX 00 00 00 00 00    ..........X.....
c0: 00 00 00 00 00 00 00 XX 00 00 00 00 00 00 00 00    .......X........
d0: 00 00 00 00 XX 00 00 00 00 00 00 XX 00 00 00 00    ....X......X....
e0: 00 00 00 00 00 00 00 XX 00 00 00 XX XX 00 00 00    .......X...XX...
f0: 00 00 00 XX 00 00 00 00 00 00 XX 00 00 00 00 00    ...X......X.....}}
XXって、レジスタに値が入っていないってことだよな。。。

かなり悩んだが、上記のようにパーツ上のショートさせていたジャンパーを無くしてみたところ、
#highlight(xml){{
% sudo i2cdump -y 1 0x1e}}
#highlight(xml){{
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 10 20 03 fe 84 fe b6 00 9a 03 48 34 33 00 00 3c    ? ?????.??H43..&lt;
10: 00 00 00 00 00 00 00 00 00 00 00 c4 14 03 e8 10    ...........?????
20: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00    ........?.......
30: 00 00 00 1c 83 58 76 00 a0 00 07 00 00 00 00 00    ...??Xv.?.?.....
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 10 20 03 fe 84 fe b6 00 9a 03 48 34 33 00 00 3c    ? ?????.??H43..&lt;
90: 00 00 00 00 00 00 00 00 00 00 00 c4 14 03 e8 10    ...........?????
a0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00    ........?.......
b0: 00 00 00 1c 83 58 76 00 a0 00 07 00 00 00 00 00    ...??Xv.?.?.....
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................}}
のように、正常そうな値を読み取ることができた。

*デバイスにレジスタ値を書き込む
i2c-toolsを使って、レジスタ値を操作してみる。バス番号1につながっている地磁気センサー(スレーブアドレス=0x1e)の中の0x00というアドレスを持つレジスタに0x90という数値を書き込む。0x00というアドレスは、CRA_REG_Mという名前がついていて、地磁気センサーに内蔵されている温度センサーを有効にするかどうかやデータ出力のレートを指定するためのレジスタである。0x90は、温度センサーを有効にして、出力レートを15 Hzに指定する値である。
#highlight(xml){{
% sudo i2cset -y 1 0x1e 0x00 0x90}}
しかし、最初はジャンパー設定の不具合により、
#highlight(xml){{
Error: Write failed}}
というエラーメッセージが帰ってくるだけであった。

その後、ジャンパーの半田を吸い取ったところ、
#highlight(xml){{
% sudo i2cset -y 1 0x1e 0x00 0x90
% sudo i2cset -y 1 0x1e 0x01 0x20
% sudo i2cset -y 1 0x1e 0x02 0x00}}
というように、素直にレジスタ値を設定してくれるようになった。
#highlight(xml){{
% sudo i2cdump -y 1 0x1e
No size specified (using byte-data access)
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: 90 20 00 00 ee fe b3 00 d1 03 48 34 33 00 00 3c    ? ?.???.??H43..&lt;
10: 00 00 00 00 00 00 00 00 00 00 00 c4 14 03 e8 10    ...........?????
20: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00    ........?.......
30: 00 00 00 1c 83 58 76 00 a0 00 07 00 00 00 00 00    ...??Xv.?.?.....
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
80: 90 20 03 00 ee fe b3 00 d1 03 48 34 33 00 00 3c    ? ?.???.??H43..&lt;
90: 00 00 00 00 00 00 00 00 00 00 00 c4 14 03 e8 10    ...........?????
a0: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00    ........?.......
b0: 00 00 00 1c 83 58 76 00 a0 00 07 00 00 00 00 00    ...??Xv.?.?.....
c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................}}
ダンプしてみると、きちんと書きこまれているのが分かる。
----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-09T23:33:49+09:00</dc:date>
    <utime>1402324429</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/11.html">
    <title>センサーモジュール</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/11.html</link>
    <description>
      *MLSM303DLHCについて
地磁気センサーモジュールとして、マルツパーツ館の[[MLSM303DLHC&gt;http://www.marutsu.co.jp/shohin_137793/]]を選択した。地磁気だけでなく、加速度センサーと温度センサーもパッケージされている。STMicroelectronics社のLSM303DLHCの小型ICと共に、プルアップ抵抗やコンデンサーを基盤に載せて、8ピンパッケージに変換したモジュールとなっている。
他には、Strawberry Linuxから[[同様の品が&gt;https://strawberry-linux.com/catalog/items?code=12114]]発売されているようだ。
**仕様
|検出範囲(磁場)|±130000 nT, ±190000 nT, ±250000 nT, ±400000 nT, &amp;br()~±470000 nT, ±560000 nT, ±810000 nT (ソフトウェアで選択)|
|検出範囲(加速度)|±2 g, ±4 g, ±8 g, ±16 g (ソフトウェアで選択)|
|分解能|16 bit|
|サンプリング周波数|100 kHz, 400 kHz|
|電源電圧|2.16-3.6 V|
|インターフェイス|I2C|
データシートの最初のページによれば、分解能は16 bitとなっているが、実際のGain settingには、出力は12 bit(-2048から+2047)となっている。そのまま計算すれば、磁場の検出レンジをもっとも狭いもの(±130000 nT)にしたとき、12 bitでは、260000 nT/(2&amp;sup(){12})=&amp;color(red){63.4765625 nT}となる。ただし、Gain settingの記述では、X,Y軸については1100 LSB/Gauss(=0.011 LSB/nT)、Z軸については980 LSB/Gauss(=0.0098 LSB/nT)ということなので、分解能はそれぞれ&amp;color(red){90.9 nT}、&amp;color(red){102.04 nT}になるようである。
サンプリング周波数のほうも、実際のアウトプットとしては、0.75 Hz-220 Hzの間の8段階でしか選択ができない。デフォルトでは15 Hzである。
*配線

----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-09T23:33:32+09:00</dc:date>
    <utime>1402324412</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/10.html">
    <title>準備</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/10.html</link>
    <description>
      *I2Cを使えるようにする
**/etc/modulesの編集
次のように/etc/modulesにi2c-devの一行を加える。
#highlight(xml){{
% sudo vi /etc/modules}}
#highlight(xml){{
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with &quot;#&quot; are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
# Added on 2014/05/25
i2c-dev}}
**/etc/modprobe.d/raspi-blacklist.confの編集
i2cのブラックリスト宣言をコメントアウトする。
#highlight(xml){{
% sudo vi /etc/modprobe.d/raspi-blacklist.conf}}
#highlight(xml){{
# blacklist spi and i2c by default (many users don&#039;t need them)

blacklist spi-bcm2708
# Commented out on 2014/05/25
###blacklist i2c-bcm2708}}
**確認
システムを再起動した後、
#highlight(xml){{
% sudo reboot}}
i2cデバイスモジュールが読み込まれているか確認する。
#highlight(xml){{
% dmesg | grep i2c}}
次のようなログが残っていればOK。
#highlight(php){{
[    5.610982] bcm2708_i2c_init_pinmode(0,0)
[    5.745891] bcm2708_i2c_init_pinmode(0,1)
[    5.907390] bcm2708_i2c bcm2708_i2c.0: BSC0 Controller at 0x20205000 (irq 79) (baudrate 100000)
[    6.112551] bcm2708_i2c_init_pinmode(1,2)
[    6.221454] bcm2708_i2c_init_pinmode(1,3)
[    6.304421] bcm2708_i2c bcm2708_i2c.1: BSC1 Controller at 0x20804000 (irq 79) (baudrate 100000)
[   14.069487] i2c /dev entries driver}}
**i2c-toolsのインストール
bashからi2cデバイスへのアクセスを行うためのツールをインストールする。
#highlight(xml){{
% sudo apt-get install i2c-tools}}
*無線ネットワークIPの固定
IPアドレスを固定しておけば、Raspberry Piにリモートログインできるので、USB接続のキーボードやマウスおよびHDMIによる外部ディスプレイが不要になる。
#highlight(xml){{
% sudo vi /etc/network/interfaces}}
以下の例では、IPアドレスを192.168.1.200に固定している。
#highlight(xml){{
auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
iface default inet static
address 192.168.1.200
netmask 255.255.255.0
gateway 192.168.1.1}}
----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-09T23:33:06+09:00</dc:date>
    <utime>1402324386</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/9.html">
    <title>はじめに</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/9.html</link>
    <description>
      このページでは、Raspberry Piを使って地磁気を測ってみることを目標に試行錯誤したことを記録していきます。
----
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　
　    </description>
    <dc:date>2014-06-09T23:32:53+09:00</dc:date>
    <utime>1402324373</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/1.html</link>
    <description>
      &lt;h3&gt;このウィキの使い方　～4つのステップ～&lt;/h3&gt;
&lt;h4&gt;■ログインしてみよう！&lt;/h4&gt;
&lt;p&gt;デザインを変えたり、サイト名を変えたりするためには、ログインしないといけないよ。&lt;/p&gt;
&lt;p&gt;ログインの方法は、下の手順でログインしてみよう！&lt;/p&gt;
&lt;p&gt;わからない場合は&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide/pages/4.html&quot;&gt;こちらのページ&lt;/a&gt;も参考にしてね。&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;画面の右上にある「ログイン」をクリック！&lt;/li&gt;
&lt;li&gt;ユーザ名に「geomagneticfield」、パスワードには、登録の時に設定したものを入力しよう。&lt;/li&gt;
&lt;li&gt;画面の右上に「geomagneticfield」と表示されればログイン完了！&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;■サイト名を変更しよう！&lt;/h4&gt;
&lt;p&gt;サイト名はどこから変えれるの？下の手順にそえばサイト名を変えれるよ！&lt;/p&gt;
&lt;p&gt;わからない場合は&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide/pages/5.html&quot;&gt;こちらのページ&lt;/a&gt;も参考にしてね。&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;ログインしたら、右上にある「設定」をクリック！&lt;/li&gt;
&lt;li&gt;表示されたページの左メニューにある、「基本設定」をクリックしよう！&lt;/li&gt;
&lt;li&gt;そうすると、一番上の「サイト名」と書かれた右側に、今のサイト名が書かれています。&lt;br /&gt;
ここを好きな名前に書き換えよう！&lt;/li&gt;
&lt;li&gt;書き換え終わったら、一番下にある「設定変更」ボタンをクリック！&lt;/li&gt;
&lt;li&gt;右上の 「（設定したサイト名）」へ戻る　をクリックすると、サイト名が変わったことが確認できるよ！&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;
&lt;div&gt;
&lt;h4&gt;■新しいページを作成しよう！&lt;/h4&gt;
&lt;p&gt;新しくページを作成するにはどうすればいいのか、下の手順にそってやってみよう！&lt;/p&gt;
&lt;p&gt;わからない場合は&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide/pages/7.html&quot;&gt;こちらのページ&lt;/a&gt;も参考にしてね。&lt;/p&gt;
&lt;/div&gt;
&lt;ol&gt;&lt;li&gt;画面の左上にある「＠メニュー」にマウスを持って行くと、さらにメニューが表示されます。&lt;/li&gt;
&lt;li&gt;表示されたメニューから「新規ページ作成」をクリック！&lt;/li&gt;
&lt;li&gt;表示されたページで、作りたいページの名前を入力して、&lt;br /&gt;
編集モードは　&lt;span style=&quot;color:rgb(255,0,0);&quot;&gt;【初心者向け】ワープロモード&lt;/span&gt;　を選択しよう。&lt;/li&gt;
&lt;li&gt;真ん中の枠の中に、自由に書き込めるよ！　&lt;/li&gt;
&lt;li&gt;作り終わったら、「ページを保存」をクリックすれば、新しいページの作成は完了！&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;■このページを編集しよう！&lt;/h4&gt;
&lt;p&gt;最後に、このトップページを編集しよう！&lt;/p&gt;
&lt;p&gt;ページ編集の方法がわからない場合は&lt;a href=&quot;http://www1.atwiki.jp/wpmode_guide/pages/9.html&quot;&gt;こちらのページ&lt;/a&gt;も参考にしてね。&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;左上にある「編集」にマウスを持って行くと、さらにメニューが表示されます。&lt;/li&gt;
&lt;li&gt;表示されたメニューから「ページ編集」をクリック！&lt;/li&gt;
&lt;li&gt;編集画面が表示されるので、自由に書き換えてみよう。&lt;/li&gt;
&lt;li&gt;書き換え終わったら、「ページを保存」をクリックすれば、トップページの編集は完了！&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;もし、wikiで議論する場や掲示板が欲しい場合は？&lt;/h3&gt;
&lt;p&gt;@wikiの姉妹サービスである@chsをご利用ください。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://atchs.jp/new_regist.php&quot;&gt;登録はこちらから&lt;/a&gt;　←　ここをクリックしてください。&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&quot;id_a57b2f4f&quot;&gt;分からないことは？&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://atwiki.jp/guide/&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;@wiki
ご利用ガイド&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atwiki.jp/guide/category1.html&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;よくある質問&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sns.atfb.jp/view_community2.php?no=112&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料で会員登録できるSNS内の@wiki助け合いコミュニティ&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www1.atwiki.jp/guide/pages/264.html&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;@wiki更新情報&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atwiki.jp/helpdesk&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;@wikiへのお問合せフォーム&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;等をご活用ください&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&quot;id_9a589d71&quot;&gt;その他お勧めサービスについて&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://atpages.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;大容量１Ｇ、PHP/CGI、MySQL、FTPが使える無料ホームページは@PAGES&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atword.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料ブログ作成は@WORDをご利用ください&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atchs.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;2ch型の無料掲示板は@chsをご利用ください&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atbb.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;フォーラム型の無料掲示板は@bbをご利用ください&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atpaint.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;お絵かき掲示板は@paintをご利用ください&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://atbbs.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;その他の無料掲示板は@bbsをご利用ください&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sns.atfb.jp/&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5F441A&quot;&gt;無料ソーシャルプロフィールサービス @flabo(アットフラボ)&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;h3 id=&quot;id_c06b13d0&quot;&gt;バグ・不具合を見つけたら？ 要望がある場合は？&lt;/h3&gt;
&lt;div&gt;お手数ですが、&lt;a href=&quot;http://desk.atfreaks.com/tickets/form/atwiki/&quot;&gt;お問い合わせフォーム&lt;/a&gt;からご連絡ください。&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;    </description>
    <dc:date>2014-05-31T23:30:57+09:00</dc:date>
    <utime>1401546657</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/geomagneticfield/pages/3.html">
    <title>右メニュー</title>
    <link>https://w.atwiki.jp/geomagneticfield/pages/3.html</link>
    <description>
      **カウンター
|今日|&amp;counter(today)人|
|昨日|&amp;counter(yesterday)人|
|&amp;bold(){合計}|&amp;bold(){&amp;counter()人}|

現在&amp;online()人が閲覧中。

**更新履歴
#recent(30)    </description>
    <dc:date>2014-05-31T23:30:57+09:00</dc:date>
    <utime>1401546657</utime>
  </item>
  </rdf:RDF>
