trykmkmの備忘録

自称組み込みエンジニアのブログ

このブログについて

このブログは、自称組み込みエンジニア(崖っぷちエンジニア)trykmkmが調査したことを、記録として残していくものです。

 

思うがままに追記していくので、見づらいと思いますが、ご了承ください。

 

誤字、脱字、誤記など沢山あるため、一度掲載した記事でもちょくちょく更新します。

注意してください。

Raspberry PiでFT232Hのi2cデバイス制御(6)

 今回は、AdafruitのFT232Hスクリプトを使って、試験基板のDRV8830を制御していこうと思います。

 ラズパイは、前回のFT232Hスクリプトのインストールが完了している状態で、かつ、カレントディレクトリはホームディレクトリです。

 

  まず、Adafruitが公開しているi2cデバイススキャンプログラムを動かします。コードは、下記URLリンクにある、I2C Device Enumerationにあるものです。

I2C | Adafruit FT232H Breakout | Adafruit Learning System

 手順を下記します。

 

①ターミナルに下記コマンドを入力します。

(サンプルコードダウンロード)

 

②ターミナルに  mv download i2cScan.py 入力

(サンプルコードのファイル名変更)

 

③ ターミナルに  sudo python i2cScan.py 入力

(サンプルコード実行)
成功すれば、DRV8830のデバイスアドレス0x60が表示します。下記キャプチャ参照。

f:id:trykmkm:20171104000751p:plain

 

 次に、DRV8830にデータをリードライトするテストプログラムを動かしてみたいと思います。

 手順を下記します。

 

①ターミナルに vi testDRV8830.py 入力

 

②ターミナルに i を入力し、VIを挿入モードにし、下記コードをコピペし、esc キー押下し、wq を入力してVI終了。

import Adafruit_GPIO.FT232H as FT232H
import time
import sys

# Temporarily disable FTDI serial drivers.
FT232H.use_FT232H()

# Find the first FT232H device.
ft232h = FT232H.FT232H()

 

# Set i2c instance as DRV8830.
i2c = FT232H.I2CDevice(ft232h, 0x60)

 

# check DRV8830.
if i2c.ping():
    print 'DRV8830 Found'
else:
    print 'DRV8830 is not found. Program end!!'
    sys.exit()

 

# write FAULT registor clear
i2c.write8(0x01, 0x80)

 

# read CONTROL registor clear
value = i2c.readU8(0x00)

 

# CONTROL register value check & write CONTROL registor
if value == 0x66:
    # 2V reverse -> 1V forward
    i2c.write8(0x00, 0x35)
    print 'Output 1V Forward'
else:
    # 0V/1V forward -> 2V reverse
    i2c.write8(0x00, 0x66)
    print 'Output 2V Reverse'

 

③ターミナルに  sudo python testDRV8830.py 入力

(テストプログラム実行)
実行するごとに、DRV8830の出力が-2V⇒1V⇒-2V⇒1V⇒・・・となります。

テスターでDRV8830のVout1,Vout2端子を確認すれば、出力値を確認できます。

キャプチャの様子を下記します。

f:id:trykmkm:20171104003328p:plain

 

 以上で、Adafruit のFT232Hスクリプトを使用したi2cデバイス制御はできました。

 よって、このブログ記事の目的は果たせました。

 次回以降も、引き続き別の方法でFT232のi2cデバイス制御をトライしていきたいと思います。 

 

 

 

 

Raspberry PiでFT232Hのi2cデバイス制御(5)

 今回は、Adafruitが公開しているFT232Hスクリプト をインストールします。

 

 ラズパイに電源投入後、試験基板を挿入し、カレントディレクトリはホームディレクトリ(/home/pi)の状態から始めます。(OSは(3)、試験基板は(4)を参照)

 

 基本的には、Adafruitが公開している手順に沿って進めます。

 下記に手順を記載します。 

 

①ターミナルに sudo apt-get upgrade 入力

 (インストールされてるパッケージの更新)

 

②ターミナルに sudo apt-get update 入力

 (サーバからパッケージの入手)

 

③ターミナルに下記コマンドを入力

  sudo apt-get install build-essential libusb-1.0-0-dev swig cmake python-dev libconfuse-dev libboost-all-dev

(FT232Hスクリプトに必要となるライブラリ、パッケージ類を一括インストールします)

途中で  Do you want to continue? [Y/n] と聞かれるので、 Y を入力

 

④ターミナルに下記コマンドを入力

 (FT232Hスクリプトの元となるライブラリのソースコードダウンロード)

 

⑤ ターミナルに  tar xvf libftdi1-1.2.tar.bz2 入力

 (上記ライブラリのソースコードを解凍)

 

⑥ ターミナルに  cd libftdi1-1.2 入力

 (上記解凍ディレクトリ内に移動)

 

⑦ ターミナルに  mkdir build  入力

 (ビルドファイル生成用のディレクトリ作成)

 

⑧ ターミナルに cd build  入力

 (上記ビルドファイル生成用のディレクトリ内に移動)

 

⑨ターミナルに下記コマンドを入力

  cmake -DCMAKE_INSTALL_PREFIX="/usr/" -DPYTHON_INCLUDE_DIR="/usr/include/python2.7" -DPYTHON_LIBRARIES="/usr/lib/python2.7/" ../

 (コンパイル設定)

 

⑩ ターミナルに make 入力

 (ビルド開始)

 

⑪ターミナルに sudo make install 入力

 (ビルドしたファイルをインストール)

 

⑫ターミナルに cd  入力

 (ホームディレクトリに移動)

 

⑬ターミナルに下記コマンドを入力

 (FT232Hスクリプトダウンロード)

 

⑭ターミナルに unzip master.zip 入力

 (FT232Hスクリプト解凍)

 

⑮ターミナルに cd Adafruit_Python_GPIO-master  入力

 (FT232Hスクリプト解凍ディレクトリ内に移動)

 

⑯ターミナルに sudo python setup.py install  入力

 (FT232Hスクリプトインストール)

 

 インストール作業は⑮で終了です。⑯以降は、インストールの成功・失敗を判定するための確認作業になります。

 

⑰ターミナルに python  入力

 (python起動)

 

⑱ターミナルに import Adafruit_GPIO 入力

 

⑲ターミナルに import ftdi1  入力

 ここで、エラー等の応答が無ければOKです。

 

⑳ ターミナルに quit ()   入力

  (python終了)

 

 ⑰~⑳の流れは下記キャプチャ参照

f:id:trykmkm:20171103175959p:plain

 

 上記キャプチャより、インストール成功と判断します。2017年6月頃に同じ手順でFT232Hスクリプトのインストールを試しましたが、エラーが出て失敗しました。時間があったら、6月と今月の結果の原因を探ってみたいと思います。

 よって次回は、FT232Hスクリプトを使用して、試験基板向けのサンプルプログラムを動かしていきます。

 余談ですが、AdafruitのwebページはPDFドキュメントが公開されており、プリントするときは、こちらを使用した方がいいです。

Raspberry PiでFT232Hのi2cデバイス制御(4)

 今回は、Raspberry Piに接続するFT232H+i2cデバイスのハードを作成します。

 使用するFT232Hモジュールは、Adafruit製のものを使用します。制御対象のi2cデバイスは、秋月製DRV8830モジュールを使用します。

 回路は、ここのページ記載の通り、D1とD2をショート、D1はSDAとして使用しプルアップする、D0はSCLとして使用しプルアップします。

 

 図1に回路図を示します。

f:id:trykmkm:20171103000232p:plain

 図1 FT232H試験回路

 

 図1の回路図をブレッドボードに配線した基板を図2に示します。

 

 

f:id:trykmkm:20171103001941j:plain f:id:trykmkm:20171103001952j:plain

図2 FT232H試験基板(左:モジュールなし 右:モジュール実装)

 

今回使用した部品を下記に記します。

FT232H使用USB⇔GPIO+SPI+I2C変換モジュール: 半導体 秋月電子通商 電子部品 ネット通販

ブレッドボード EIC−801: パーツ一般 秋月電子通商 電子部品 ネット通販

DRV8830モータードライバモジュール: 組立キット 秋月電子通商 電子部品 ネット通販

 

 最後に、上記基板がRaspberry Piで認識するか確認します。

 下記に手順を示します。

 

 ①まずは、前回環境を構築したRaspberry PiをFT232Hを接続していない状態で起動します。SSHで接続するので、Raspberry Piにディスプレイ、マウス、キーボードは不要です。下記の図の通りに接続して下さい。

f:id:trykmkm:20171017221343p:plain

 

 ②PCのteratermからSSHで接続し、ログインします。

 

 ③ログイン後、FT232H試験基板を接続します。

 

 ④コマンド dmesg を入力します。

 

  ⑤コンソール" Detected FT232H "が表示されていれば認識しています。

  (下記キャプチャ参照)

f:id:trykmkm:20171017221806p:plain

 

 以上になります。

 次回は、Adaftuit製FT232H pythonライブラリをトライしてきます。

Raspberry PiでFT232Hのi2cデバイス制御(3)

 前回の続きでRaspberry Piの環境を構築していきます。

 

 前回SDカードにRaspberry PiのOSはインストールしたので、今回はRaspberry Piの設定をしていきます。

 

 まず、下記の通り、Raspberry Piを接続します。

f:id:trykmkm:20171014183303p:plain

 

 ①OSインストール済のSDカードをRaspberry Piに挿入し、電源を投入します。

 

 ②しばらく待機すると、デスクトップ画面が表示します。

 

 ③デスクトップ画面表示後、

  Menu⇒Prefarence⇒Raspberry Pi Configurationをクリック。

f:id:trykmkm:20171015230812p:plain

 

  ④SystemタブのBootをTo CLIに変更。

f:id:trykmkm:20171015233504p:plain

 

 ⑤SSHを有効にする

f:id:trykmkm:20171015233744p:plain

 

  ⑥LocalisationタブのSet KeyboardをJapaneseにセットする。

  (KeyboardLayoutのOKボタンクリック、Raspberry Pi ConfigurationのOKボタンをクリック)

f:id:trykmkm:20171015235317p:plain

 

 ⑦再起動

   Menu⇒Shutdown⇒Rebootをクリック。

 

 ⑧コマンドで、ipアドレスを設定。(詳細略 下記リンク参照)

  Raspbian(jessie)の固定IPアドレス設定方法

 

 以上で、Raspberry Piの設定は終了です。

 今後は、USBマウス、キーボードを取り外した状態で、SSHでリモート接続した状態で作業をします。

 次回は、制御対象のハードを作成します。

 

 なお、ここまでの設定内容からやり直せるように、下記URLの方法で、SDカード内容をPCに保存しておきましょう。

  SDカードのコピー方法 | Making Mugbot マグボットの作り方

 

Raspberry PiでFT232Hのi2cデバイス制御(2)

 今回は、Raspberry Piの環境を構築します。

 

 使用するRaspberry Piは、"Raspberry Pi 1 Model A+ 512MB"です。

 element14 RASPBRRY-MODA+-512M 【本体】Raspberry Pi Model A+ 512MB

 また、上記モデルはネットワークのポートが無く、USBポートが無いため、USBハブとUSB LANアダプタを使用します。

 10/100M USB2.0用 LANアダプター | LUA3-U2-ATX

 また、運用上SSHWinSCPを想定していますが、初回起動時は、Raspberry Piを直接操作しないといけないため、USBマウス、USBキーボードを使用します。

 構成は図1の通りになります。

 

f:id:trykmkm:20171014183303p:plain

 図1 Raspberry Pi環境

 

 

 まず、microSDカードにOSをインストールします。

 手順は、Etcherを使用した方法(下記URL)でインストールします。

 Noobsは時間がかかるため、Etcherにしました。

Installing operating system images - Raspberry Pi Documentation

 

1.下記URLよりイメージファイルをダウンロード

  Download Raspbian for Raspberry Pi

  DownLoad Zipをクリック。

f:id:trykmkm:20171014165848p:plain

  (2017/10/14現在、2017-09-07-raspbian-stretch.zipが最新版となります)  

 

2.Etcherをダウンロード。

  Download for ・・・をクリック

f:id:trykmkm:20171014170149p:plain

 

3.Etcher-Setup-1.1.2-x64.exe2を実行し、Etcherをインストール。

4.Etcherを起動

5.EtcharのSelect imageで2017-09-07-raspbian-stretch.zipを指定 。(下記キャプチャ参照)

f:id:trykmkm:20171014170431p:plain

 

6.microSDカードをPCに差し込み、Etcherのchangeで指定。(上記キャプチャ参照)

7.EtcherのFLASH!ボタンクリック。上記キャプチャ参照)

 

 これで、SDカードへのOSインストールは完了しました。

 今回は一旦終了します。

 次回は、Raspberry Piの基本的な設定をしていきたいと思います。

 

 

 

Raspberry PiでFT232Hのi2cデバイス制御(1)

 数ヶ月前、raspberry piでFT232Hを介したi2cデバイス制御をトライする機会がありました。(下図参照)f:id:trykmkm:20171006211938p:plain

図1 FT232Hを介したi2cデバイス接続

 

 結果は、失敗でした。オシロスコープで波形を見た限りでは、FT232HのSDA,SCLラインから、信号は出力していたので、どうやらデバイスからのACK bitの受信ができてないような感じでした。

 

 今回の記事では、その時のトライの備忘録を記載していきます。また、リベンジとして、raspberry piでFT232Hを介したi2cセンサ制御の実現を目指します。

 

 Raspberry PiでFT232のi2cデバイスを制御する方法ですが、Adafruitが一覧を公開しており、下記5つの方法があります。

 

 ①Adafruit Python GPIO library

 ②libmpsse library

 ③libFTDI library

 ④FTDI's?LibMPSSE-I2C?and?LibMPSSE-SPI?libraries.

 ⑤FTDI's official D2XX drivers and libraries.

 

 ①から順に実施していこうと思いますが、まずはRaspberry Piの環境を構築していきます。

 また、記事のコメント欄にアドバイス等を残して頂ければ幸いです。

 よろしくお願いいたします。