trykmkmの備忘録

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

このブログについて

このブログは、エンジニアtrykmkmが調査したことを、記録として残していくものです。

 

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

 

一度掲載した記事でも、ちょいちょうい更新したりするので、注意してください。

Raspberry PiでFT232の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でFT232の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でFT232の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の環境を構築していきます。

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

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

超音波・レーザ測距センササンプルプログラム(終)

 今回で、超音波・レーザ測距センササンプルプログラムシリーズも最終回にしようと思います。

 最終回は、(6)で作成したハード(ブレッドボード基板)を、ユニバーサル基板で実装しようと思います。プログラムは(7)で作成したものが動きます。

 

 基板は、秋月電子で販売している片面ガラス・ユニバーサル基板を使用します。

 また、マイコンモジュール、センサ類がとり外せるように、ピンヘッダを使用します。

 Nch MOSFETは、BSS138を変更します。そのまま実装できる2KS4017を使用します。ただし、パッドが超音波測距センサに接触するので、基板中央側に足を曲げて少し倒します。

 

 基板に使用する部品一式は下記の通りです。

 ・片面ガラス・ユニバーサル基板(ブレッドボード配線パターンタイプ): パーツ一般 秋月電子通商 電子部品 ネット通販

 ・NchパワーMOSFET 2SK4017(Q) (60V5A): 半導体 秋月電子通商 電子部品 ネット通販

 ・分割ロングピンソケット 1x42 (42P): パーツ一般 秋月電子通商 電子部品 ネット通販

 

 基板配線図は下記の通りになります。

f:id:trykmkm:20171003000548p:plain

 

 図1 基板配線図

 

 実物は下記写真の通りになります。

f:id:trykmkm:20171003005111j:plain f:id:trykmkm:20171003005124j:plain

図2 部品実装基板(左:表面 右:裏面) 

 

 上記基板に部品を実装していきます。

 超音波測距センサ(SRF02)は、グラつくので下記部品を使用して固定します。

 

 ・プラスチックナット+連結(6角ジョイント)スペーサー(10mm)セット: 電子工作便利商品 秋月電子通商 電子部品 ネット通販

 ・【共立エレショップ】>> ジュラコン中空スペーサー M3×1mm[RoHS]★受注単位有★: 【能動・受動・機構パーツ】 << 電子部品,半導体,キットの通販

 ・3mmプラスチックネジ(7mm)+ナットセット: 電子工作便利商品 秋月電子通商 電子部品 ネット通販

 

f:id:trykmkm:20171003010705j:plain f:id:trykmkm:20171003010724j:plain

図3 部品装着基板(左:横 右:真上) 

 

 最後に、基板を土台に固定します。

 土台は、下記の部品を使用しました。

 

 ・アクリル板強化透明 180×320×1.0mm IR001SS1の通販ならマルツオンライン(120mm x 130mm にカット)

 ・樹脂ネジ M3 8mm(西川電子部品)  2個

 ・樹脂スペーサー M3 3mm(西川電子部品) 2個

 ・樹脂ナット M3 (超音波測距センサを固定したものと同じ) 2個

 ・PD.2125BL | RS Pro ゴム足 黒,高さ:3.5mm, 粘着剤付き | RS Pro 【通販RS】

 ・https://ec.cando-web.co.jp/item/4521006213936

 

仕上がったものは、下記になります。

f:id:trykmkm:20171003013951j:plain

図4 測距ユニット 横置き

 

f:id:trykmkm:20171003014545j:plain

図5 測距ユニット 縦置き (ブックエンドに輪ゴムで固定)

超音波・レーザ測距センササンプルプログラム(7)

 今回は前回変更したハード上で動作する、超音波測距センサ(SRF02)とレーザ測距センサ(VL530X)の同時測定サンプルを作ります。

 

 (4)で動かしたレーザ測距サンプルをベースに、超音波センサのロジックを組み込みます。

 手順を下記に示します。

 

 ①ベースになるプロジェクトをコピー( (4)で使用したHelloWorld_53L0A1を右クリックし、名前を付けて保存)

f:id:trykmkm:20170927210522p:plain

 

 ②任意の名称を入力し、OKボタンクリック。(ここでは、UltraSonicAndLaser2とする。)

 f:id:trykmkm:20171001003418p:plain

 

 ③UltraSonicAndLaser2のmain.cppのコードを下記の通りに書き換え。(超音波センサのリードロジック追加。SRF02シリアルモードの詳細)

//This software includes the work that is distributed in the Apache License 2.0

#include "mbed.h"
#include "x_nucleo_53l0a1.h"
#include <stdio.h>

/* This VL53L0X Expansion board test application performs a range measurement in polling mode
on the onboard embedded top sensor. */

//#define VL53L0_I2C_SDA D14
//#define VL53L0_I2C_SCL D15
#define VL53L0_I2C_SDA p28 //D14->p28変更
#define VL53L0_I2C_SCL p27 //D15->p27変更

DigitalInOut pin(p12); //リセット制御ピン

Serial uart(p13, p14); //SRF02 UART通信

static X_NUCLEO_53L0A1 *board=NULL;


//UARTデータ送信
void SendCmd(const char address, const char cmd)
{
    uart.putc(address); //データ送信
    wait_us(100); //100us待機
    uart.putc(cmd); //データ送信
    wait_us(100); //100us待機
}


//超音波距離取得
uint16_t getUssDistance(void)
{
    uint16_t distance = 0;
    SendCmd(0x00,0x51);//cmモード設定コマンド送信
    wait_ms(70);//70mS待機
    SendCmd(0x00,0x5E);//データ取得コマンド送信
    wait_ms(10);//10mS待機
    distance = (uart.getc() << 8); //測定データ(MSB)取得
    distance = distance | uart.getc(); //測定データ(LSB)取得
    wait_ms(250); //250mS待機
    return distance;
}

 

/*=================================== Main ==================================
=============================================================================*/
int main()
{
    int status;
    uint32_t distance;

    DevI2C *device_i2c = new DevI2C(VL53L0_I2C_SDA, VL53L0_I2C_SCL);

 

    //センサリセット処理追加
    pin.output();
    pin = 1;
    wait(0.1);
    pin = 0;

/* creates the 53L0A1 expansion board singleton obj */
    //board = X_NUCLEO_53L0A1::instance(device_i2c, A2, D8, D2);
    board = X_NUCLEO_53L0A1::instance(device_i2c);//インスタンス生成方法変更

/* init the 53L0A1 expansion board with default values */
    status = board->init_board();
    if (status) {
        printf("Failed to init board!\n\r");
        return 0;
    }

    while (1) {
        status = board->sensor_centre->get_distance(&distance); //レーザ測距センサデータ取得
        if (status == VL53L0X_ERROR_NONE) {
            printf("LASER (VL5310X) : %4d [cm]\n", distance/10); //レーザ距離表示(cm単位に変更)
            printf("ULTRASONIC (SRF02) : %4d [cm]\n\n", getUssDistance());//超音波距離取得&表示
        }
    }
}

※本来は、通信エラー時の処理を入れるべきですが、あくまで動作確認用のためプログラムの記述は成功ルートのみで済ませました。

 

 ④保存ボタンクリック後、コンパイルボタンをクリックして実行ファイル(UltraSonicAndLaser2_LPC1768.bin)生成。

 

 ⑤mbedをPCに接続し、mbedにUltraSonicAndLaser2_LPC1768.binを保存。

 

 ⑥teratermでmbed Serial portを指定し、ボーレート9600bpsに指定すれば、センサの測定データが連続で出力します。下記にキャプチャを示します。

f:id:trykmkm:20171001005521p:plain

 

超音波・レーザ測距センササンプルプログラム(6)

 前回、音波測距センサ(SRF02)とレーザ測距センサ(VL530X)の同時測定サンプルプログラムの作成にトライしましたが、実現できませんでした。

 

 よって今回は、前回とは別の方法でプログラム作成を模索したいと思います。

 方法は下記2つです。 

 

 ①ST-micro以外のライブラリ・APIを使用

 ②超音波センサをi2cではなく、uartモードで使用。

 

  まずは、①の方法を実施してみたいと思います。

 VL530X用のAPIを公開しているユーザさんのリンクを下記します。

  ・GitHub - dbaba/vl53l0x-mbedos: Pololu mbed OS 5 library for VL53L0X time-of-flight distance sensor

  ・GitHub - ARMmbed/VL53L0X-mbedOS

 

 両APIを使用してみて、付属のサンプルや、簡単なサンプルを作成して実行ファイルを生成してみましたが、プログラムが動作しませんでした。

 どうやらデータのi2cの受信でコケている感じです。

 

 よって、②の方法で行きたいと思います。

 

 ②はSRF02をuartで使用するため、ハードを変更します。

 回路図は下記の通りです。

 SRF02をUARTで接続するのはもちろんですが、modeピンをGND接続する必要があります。

f:id:trykmkm:20170930001256p:plain

図1 超音波・レーザ測距センササンプルプログラム用回路図2

 

 基板配線はブレッドボードを使用しました。実物は下記になります。

f:id:trykmkm:20170930005712j:plain f:id:trykmkm:20170930005735j:plain

図2 超音波・レーザ測距センサ用基板2(左:部品あり 右:配線のみ )

 

 次回は、音波測距センサとレーザ測距センサの同時測定サンプルプログラムの作成します。