Opensourcetechブログ

OpensourcetechによるLinux・オープンソース・IT技術などに関するブログです。

ADコンバータMCP3002で、半固定抵抗による電圧の変化を測定する

 

 

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 

今回は、ADコンバータMCP3002で 半固定抵抗による電圧の変化を測定してみます。

 

 

基本的には、以下の記事をベースにしたものですので、先に見るとスムーズに読めるかと思います。

opensourcetech.hatenablog.jp

 

 

 配線図

上記の記事では MCP3002のCH0を使っていましたが、今回はCH1に半固定抵抗を接続しています。

f:id:opensourcetech:20190321171109p:plain

 

 

 Pythonプログラムの実行

以下を実行します。

https://github.com/kujiraitakahiro/RaspberryPi/blob/master/temp_analog.py

pi@raspberrypi: ~cat data_analog.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

import spidev
import time

spi = spidev.SpiDev()
spi.open(0, 1)
spi.max_speed_hz = 1000000 #must spidev3.3

while True:
try:
resp = spi.xfer2([0x78, 0x00])
value = (resp[0] * 256 + resp[1]) & 0x3ff
volt = value * 3.3 / 1023
print("Value: ",value," Volt: ",volt,"V")
time.sleep(0.5)
except KeyboardInterrupt:
break

spi.close()

 

 実行。半固定抵抗のつまみを回すと電圧が変化します。

※ctrl + cで終了。

pi@raspberrypi: ~./data_analog.py
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 388 Volt: 1.2516129032258063 V
Value: 389 Volt: 1.2548387096774192 V
Value: 365 Volt: 1.1774193548387097 V
Value: 120 Volt: 0.3870967741935484 V
Value: 50 Volt: 0.16129032258064516 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 1 Volt: 0.0032258064516129032 V
Value: 87 Volt: 0.2806451612903225 V
Value: 176 Volt: 0.567741935483871 V
Value: 270 Volt: 0.8709677419354839 V
Value: 309 Volt: 0.996774193548387 V
Value: 522 Volt: 1.6838709677419355 V
Value: 547 Volt: 1.764516129032258 V
Value: 741 Volt: 2.390322580645161 V
Value: 774 Volt: 2.496774193548387 V
Value: 987 Volt: 3.1838709677419352 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 1023 Volt: 3.3 V
Value: 998 Volt: 3.219354838709677 V
Value: 935 Volt: 3.0161290322580645 V
Value: 832 Volt: 2.6838709677419352 V
Value: 732 Volt: 2.361290322580645 V
Value: 692 Volt: 2.2322580645161287 V
Value: 646 Volt: 2.083870967741935 V
Value: 646 Volt: 2.083870967741935 V
Value: 646 Volt: 2.083870967741935 V
Value: 646 Volt: 2.083870967741935 V

 

 

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Blockchain関連情報源をまとめてみた

 

 

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 

Blockchain関連の情報って、色々あるがどこで入手すればいいんだろうと思ったので、

とりあえずこの辺りかなというものをまとめてみます。

 

「ここにもあるよ!」って方は、情報お待ちしてます!!

 

 

 

メディア

仮想通貨Watch

https://crypto.watch.impress.co.jp/

仮想通貨という名前ですが、実はブロックチェーン 関連の記事が結構掲載されてます。

 

 

 

協会・団体など

経済産業省

https://www.meti.go.jp/press/2016/04/20160428003/20160428003.html

 

総務省

http://www.soumu.go.jp/johotsusintokei/whitepaper/ja/h30/html/nd133330.html

 

日本仮想通貨ビジネス協会

https://cryptocurrency-association.org/

 

日本ブロックチェーン協会

https://jba-web.jp/

 

ブロックチェーン推進協会

https://bccc.global/

 

Blockcchain Council

https://www.blockchain-council.org/blockchain/what-is-quorum-how-is-it-different-from-other-blockchain/

 

Linux Foundation

https://www.linuxfoundation.org/

 

 

 

勉強会・イベントなど

JDDStudy

https://japan-d2.connpass.com/

Japan Digital Design開催の勉強会。ブロックチェーン・ILP(InterLedger Protocol)・仮想通貨などに精通した社員やゲストによる 俯瞰的な内容や技術ゴリゴリの内容など様々です。

 

Hyperledger Tokyo Meetup

https://www.meetup.com/ja-JP/Hyperledger-Tokyo/

Linux Foundation主催のMeetup。グローバル・国内のユースケースやHyperledgerを中心とした内容のセッションが特徴です。また、インタラクティブセッションでは参加者からの質問に参加者が答えるという 全員参加型というのも面白いところです。

 

日本仮想通貨ビジネス協会 勉強会

https://cryptocurrency-association.org/study/

こちらは参加したことがないのですが議事録を見ると、元金融庁の方・法律に詳しい方・取引所の方・仮想通貨の財団の方・技術者など様々な方が登壇されています。また、2015年から開催されており勉強会としての歴史も長めなのが特徴というところでしょうか。

 

Open Source Summit Japan 2018 / 2019

世界中で開催されるLinux Foundation主催イベントの一つで、基本的にはLinux kernelなどを中心の内容ですが、昨年ボランティアとして運営を手伝いつつ、IBMやHitachiなどの登壇者がHyperledgerやBlockchain関連のセッションを発表しているのを見させてもらいました。

https://events.linuxfoundation.jp/events/open-source-summit-japan-2018/program/slides/

今年も7/17-7/19の間に虎ノ門ヒルズで開催予定。

https://events.linuxfoundation.jp/events/open-source-summit-japan-2019/program/agenda/

 

 

 

Blockchain Frameworkなど

Hyperledger

https://www.hyperledger.org/

Fabric・Iroha・Indyなど本日時点で12のFramework/Toolがあります。

 

Corda Enterprise

https://www.r3.com/corda-enterprise/

 

QUORUM

https://www.blockchain-council.org/blockchain/what-is-quorum-how-is-it-different-from-other-blockchain/

 

 

 

 Certification(資格)

Certified Blockchain Expert  Version2

https://www.blockchain-council.org/certifications/certified-blockchain-professional-expert/?utm_source=blockchain-council&utm_medium=blog&utm_campaign=in-post

Blockchain Councilの資格です。

 

edX Professional Certificate Program(Blockchain for Business)

https://www.edx.org/professional-certificate/linuxfoundationx-blockchain-for-business

https://www.linuxfoundation.org/press-release/2018/09/new-hyperledger-training-course-and-certification-exams-expand-accessibility-of-enterprise-blockchain-education/

Linux Foundationの資格です。トレーニングも開催されています。

 

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

アナログ温度センサーLM61BIZとADコンバータMCP3002で、温度を測定する

 

 

こんにちは、LinuCエバンジェリストこと、鯨井貴博@opensourcetechです。

 

今回は、アナログ温度センサーLM61BIZと ADコンバータMCP3002を使って、

温度を測定します。

 

 

 使用部品

アナログ温度センサー LM61BIZ

左から電源+(今回は3.3V)、データ出力、GNDとなります。

-25℃〜85℃の範囲を測定出来る温度センサーです。

なお、0℃時 600mV(0.6V)のオフセットがあるのでプログラム作成時には考慮する必要があります。

f:id:opensourcetech:20190320235559p:plain

高精度IC温度センサLM61BIZ: センサ一般 秋月電子通商-電子部品・ネット通販

 

ADコンバータ MCP3002

アナログ温度センサーから受信したデータを、デジタルデータに変換する役割を持ちます。

下の中央2つの端子でデータを受け付けることが出来ます。

f:id:opensourcetech:20190320235911p:plain

10bit 2ch ADコンバータ MCP3002−I/P: 半導体 秋月電子通商-電子部品・ネット通販

 

 

 配線図

以下のように、Raspberry Pi(今回はzero wを使用)・MCP3002・LM61BIZを接続します。

※26番の代わりに、24番を使ってもOKです。

※電源+/GNDを逆に接続すると、温度センサーがむちゃくちゃ熱くなる(マジで火傷しそうなくらい熱くなります)ので間違えないように注意しましょう。

f:id:opensourcetech:20190320235319p:plain

 

それぞれの端子の意味や製品仕様については、以下からチェックしましょう。

LM61BIZデータシート

http://akizukidenshi.com/download/LM61biz.pdf

MCP3002データシート

http://akizukidenshi.com/download/ds/microchip/mcp3002.pdf

 

 

 Raspberry Pi zero w側の準備

SPI通信を使用するので、Raspberry Pi側でSPIが使えるように準備をします。

 

SPIの有効化

pi@raspberrypi:~ $ sudo raspi-config
5 Interfacing Options -> P4 SPI と進み有効化します。
※Rasbianのバージョンによって設定箇所が異なる可能性あり。

f:id:opensourcetech:20190321002846p:plain

f:id:opensourcetech:20190321002915p:plain

f:id:opensourcetech:20190321002943p:plain

f:id:opensourcetech:20190321003005p:plain

 

 その後、SPIモジュールが認識されていることと、spidev0.0とspidev0.1の2つのMCP3002からのデータ受信用のファイルが/devにあるか確認します。

pi@raspberrypi:~ $ lsmod | grep spi
spi_bcm2835 7424 0
pi@raspberrypi:~ $ ls -la /dev/spidev0.*
crw-rw---- 1 root spi 153, 0 3月 19 23:26 /dev/spidev0.0
crw-rw---- 1 root spi 153, 1 3月 19 23:26 /dev/spidev0.1

 

その他、python(バージョン3)・pip3・python-spidev・wiringpiなど必要なソフトウェアをインストールします。

※apt/apt-get/pip3コマンドでインストールします。

pi@raspberrypi:~ $ sudo apt-get install python-spidev
pi@raspberrypi:~ $ sudo pip3 install wiringpi
 

 なお、以下のようにpythonが2.系と3.系が同居している場合は、

パスの指定など間違えないように注意しましょう。

この記事の中では、python3.系を使ってます。

pi@raspberrypi:~ $ python
Python 2.7.9 (default, Sep 17 2016, 20:26:04)
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
pi@raspberrypi:~ $ python3
Python 3.4.2 (default, Oct 19 2014, 13:31:11)
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()

 

 

 温度データ取得

データの取得には、Pythonを使ってMCP3002に入力されたデータを読み取ります。

以下のようなPythonプログラムを作成し、実行できるように実行権限も付与しておきます。

なお、Raspberry Piの26番ではなく24番を使う場合は、「SPI_CH = 0」としてください。

また、MCP3002のCH1を使う場合には「Buffer = 0x7800 | ( 0x1800 * READ_CH )」としてください。

※0x6800がMCP3002のCH0のデータ開始位置、0x7800がCH1のデータ開始位置を示します。

ここにもアップしてあります。

https://github.com/kujiraitakahiro/RaspberryPi/blob/master/temp_analog.py

pi@raspberrypi:~ $ cat /home/pi/temp_analog.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-

#Import wiringgpi for Control GPIOs, Import time for Using Sleep function.
import wiringpi as pi
import time

#Select SPI channel on MCP3002(ADconverter)
SPI_CH = 1
READ_CH = 0

pi.wiringPiSPISetup( SPI_CH, 1000000 )

Offset = ( 0.6 / 3.3 ) * 1023 #LM61BIZ offset is 0℃ = 0.6V(600mV)

#for LM61BIZ
while True:
Buffer = 0x6800 | ( 0x1800 * READ_CH )
Buffer = Buffer.to_bytes( 2, byteorder='big' )
pi.wiringPiSPIDataRW( SPI_CH, Buffer )
Value = ( Buffer[0] * 256 + Buffer[1] ) & 0x3ff
Volt = ( Value - Offset ) * 3.3 / 1023
Temp = round(Volt * 100, 3)
print ("Value: ",Value," Volt: ",Volt," Temperature: ",Temp,"℃ ")
time.sleep(1)
pi@raspberrypi:~ $ ls -l /home/pi/temp_analog.py
-rwxr-xr-x 1 pi pi 774 3月 20 22:04 /home/pi/temp_analog.py

 

 

温度の測定は、作成したPythonプログラムを実行します。

温度センサーを指で触るなどして温めると少しずつ温度が上昇し、

保冷剤などを温度センサーにつけると少しずつ温度が下降します。

Pythonプログラムの停止は、ctrl+cで行います。

※以下は、見やすく整形しているので実際にはもっと沢山出力されてジワジワ温度変化するように見えると思います。

pi@raspberrypi:~ $ /home/pi/temp_analog.py
Value: 249 Volt: 0.2032258064516129 Temperature: 20.323 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 249 Volt: 0.2032258064516129 Temperature: 20.323 ℃
Value: 249 Volt: 0.2032258064516129 Temperature: 20.323 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 249 Volt: 0.2032258064516129 Temperature: 20.323 ℃
Value: 248 Volt: 0.19999999999999998 Temperature: 20.0 ℃
Value: 249 Volt: 0.2032258064516129 Temperature: 20.323 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 250 Volt: 0.2064516129032258 Temperature: 20.645 ℃
Value: 253 Volt: 0.2161290322580645 Temperature: 21.613 ℃
Value: 253 Volt: 0.2161290322580645 Temperature: 21.613 ℃
Value: 254 Volt: 0.2193548387096774 Temperature: 21.935 ℃
Value: 254 Volt: 0.2193548387096774 Temperature: 21.935 ℃
Value: 257 Volt: 0.2290322580645161 Temperature: 22.903 ℃
Value: 257 Volt: 0.2290322580645161 Temperature: 22.903 ℃
Value: 256 Volt: 0.22580645161290322 Temperature: 22.581 ℃
Value: 256 Volt: 0.22580645161290322 Temperature: 22.581 ℃
.
.
省略
.
.
Value: 251 Volt: 0.20967741935483872 Temperature: 20.968 ℃
Value: 248 Volt: 0.19999999999999998 Temperature: 20.0 ℃
Value: 247 Volt: 0.19677419354838707 Temperature: 19.677 ℃
Value: 244 Volt: 0.18709677419354837 Temperature: 18.71 ℃
Value: 243 Volt: 0.18387096774193548 Temperature: 18.387 ℃
Value: 242 Volt: 0.18064516129032257 Temperature: 18.065 ℃
Value: 240 Volt: 0.17419354838709677 Temperature: 17.419 ℃
Value: 239 Volt: 0.17096774193548384 Temperature: 17.097 ℃
Value: 238 Volt: 0.16774193548387095 Temperature: 16.774 ℃
Value: 237 Volt: 0.16451612903225804 Temperature: 16.452 ℃
Value: 236 Volt: 0.16129032258064516 Temperature: 16.129 ℃
Value: 235 Volt: 0.15806451612903225 Temperature: 15.806 ℃
Value: 234 Volt: 0.15483870967741933 Temperature: 15.484 ℃
Value: 233 Volt: 0.15161290322580645 Temperature: 15.161 ℃
Value: 232 Volt: 0.14838709677419354 Temperature: 14.839 ℃
Value: 231 Volt: 0.14516129032258066 Temperature: 14.516 ℃
Value: 230 Volt: 0.14193548387096774 Temperature: 14.194 ℃
Value: 229 Volt: 0.13870967741935483 Temperature: 13.871 ℃
Value: 228 Volt: 0.13548387096774192 Temperature: 13.548 ℃
Value: 227 Volt: 0.132258064516129 Temperature: 13.226
Value: 226 Volt: 0.12903225806451613 Temperature: 12.903 ℃
Traceback (most recent call last):
File "/home/pi/temp_analog.py", line 25, in <module>
^C time.sleep(1)
KeyboardInterrupt

 

 

 おまけ

以下にある方法とcrontabを組み合わせると、定期的にデータを確認できます。

LINE notify による通知連携 - Opensourcetechブログ

 

 crontab

1 * * * * curl https://notify-api.line.me/api/notify -X POST -H "Authorization: Bearer *******************************************" -F "message=`/home/pi/temp_analog2.py`"
 
temp_analog2.pyについては、以下にアップしてます。

https://github.com/kujiraitakahiro/RaspberryPi/blob/master/temp_analog2.py

 

 

 おわりに

実は以前今回と同じことをやろうとして うまくいかずに挫折したことがあったのですが(半年くらい前かな?)、無事に完了できてホッとしましたw

 

電子工作って、以下のような知識と経験が身についていいですね。

・電子部品の種類や役割

・電気の知識(ボルト・アンペア・抵抗Ω・アノード・カノードなど)

・ADコンバータ(MCP3002)やアナログ温度センサー(LM61BIZ)の製品やデータシートの見方

Pythonなどデータをとるためのプログラミング技術

 

 

 

 

www.slideshare.net

github.com

www.facebook.com

twitter.com

www.instagram.com

 

 

にほんブログ村 IT技術ブログ Linuxへ
Linux

にほんブログ村 IT技術ブログ オープンソースへ
オープンソース

 

 

Opensourcetech by Takahiro Kujirai