ADS1015 について
Raspberry Pi には A/D コンバータが内蔵されていません。デジタル入出力、アナログ出力に加えてアナログ入力を行うためには外部 IC を利用する必要があります。ここでは I2C デバイスの ADS1015 を利用します。事前に I2C 設定を行っておいてください。
Python ライブラリを用いたサンプル
ADS1015 を扱うための専用ライブラリが Python で提供されています。
以下のコマンドでインストールします。
sudo pip install adafruit-ads1x15
以前は Adafruit-Raspberry-Pi-Python-Code レポジトリで提供されていましたが、管理が煩雑になったため分離されて pip での提供に変更になったようです。
Over time we found it difficult to manage so much code in a single repository, and couldn't easily put the code on Python's package index for simple installation. Now we've broken out all of the previous Python code into individual GitHub repositories, and we've loaded all of these repositories on the Python package index so they can be installed with pip.
回路図は以下の通りです。10k 可変抵抗で A/D 変換を試してみます。
sample.py (公式ページにもサンプルコードがあります)
#!/path/to/python
# -*- coding: utf-8 -*-
import Adafruit_ADS1x15
import time
CHANNEL = 0
GAIN = 1
adc = Adafruit_ADS1x15.ADS1015()
while True:
print(adc.read_adc(CHANNEL, gain=GAIN))
time.sleep(0.5)
GAIN の値は A0 端子に入力される電圧によって変更します。
- 2/3: 0.0V - 6.144V
- 1: 0.0V - 4.096V
- 2: 0.0V - 2.048V
- 4: 0.0V - 1.024V
- 8: 0.0V - 0.512V
- 16: 0.0V - 0.256V
上記設定における ADS1015 の分解能は 11bit (2048) です。3.3V のアナログ入力がなされた場合の値はおおよそ 2048*(3.3/4.096) = 1650
です。
他の言語で利用するための検討
残念ながら Python 以外の言語で I2C 通信を行うためのライブラリが充実していません。データシートをもとに i2cget と i2cset コマンドを実行する方法も考えられますが、仕様が複雑です。リアルタイム性が損なわれますが、例えば python スクリプトをコマンド化して、それを各言語のシステム関数で実行するという方法も考えられます。
adc.py
!/usr/bin/python
# -*- coding: utf-8 -*-
import Adafruit_ADS1x15
print(Adafruit_ADS1x15.ADS1015().read_adc(0, gain=1))
sample.rb
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
while true do
system "./adc.py"
sleep 0.5
end
実行例
pi@raspberrypi:~ $ chmod +x adc.py
pi@raspberrypi:~ $ ruby sample.rb
0
179
539
963
1340
1615
1645
関連記事
- 任意の言語で Raspberry Pi デジタル入出力、アナログ出力 (PWM)python を用いた例 書籍や公式ドキュメントなどを見ると、Raspberry Pi は python を (発音が似ているからでしょうか) 標準的な言語としてサポートしているように思われます。python には GPIO を操作するライブラリが標準で導入されています。 デジタル出力 #!/usr/bi
- Android Things による LED 点灯 (Raspberry Pi 3)電子工作や製品のプロトタイピング (例『地球規模で遠隔操作できるブルドーザー』) で利用される Raspberry Pi 3 について、 Android Things アプリケーションを開発できます。 本ページでは、簡単な例として LED を点灯させるアプリケーションを扱います。より実用的なアプリケーションを開発する際には [GitHub (Android Thin
- Raspberry Pi 無線接続時の IP 固定wlan0 の IP 固定方法 Raspberry Pi の SSID とパスワード設定は終わっている前提で以下のファイルを編集します。 $ sudo vi /etc/network/interfaces 以下の 4 行を一番最後に追加します。適宜自分の環境用に IP を変えてください。 iface wlan0 inet static address 192.168.179.1
- Raspberry Pi ピン配置などを公式ドキュメントで調べる公式ドキュメント Raspberry Pi 公式ドキュメントにはインストール方法や初期設定などが記載されています。 Raspberry Pi Documentation ピン配置 / GPIO [GPIO: Models A+, B+, Raspberry Pi 2 B and Raspberry Pi
- 地球規模で遠隔操作できるブルドーザー(インターネット経由でスマホによるラジコン操作)スマートフォンから操作できるブルドーザーロボットです。前進、後退、回転が可能です。Qoosky WebSocket API を利用しています。制作費は Raspberry Pi が既に手元にあれば追加でおおよそ 1 万円です。センサー機能が搭載されていないため正確な操作はできませんが、学校や職場から自宅のロボットを動かすこともできます。