投稿

動作確認(1') 見直しました

イメージ
前回、Wコマンドの返り値を表示するようにしました。これでWコマンドによるエラーが検出できるようになります。

YouTubeチャンネル開設しました

イメージ

PythonからmacのUSBポート入出力

イメージ
PythonからMbed経由でI2Cセンサーにアクセスするための事前準備です。

macにUSB接続した外部ボード(ここではArduino互換機)に、Pythonから入力した文字をそのままecho backさせました。まずはArduinoのスケッチ。
===
void setup() {
  Serial.begin( 9600 );
}

void loop() {

  if( Serial.available() ){
    char c = Serial.read();
    Serial.print( c );
  }
}
===
次にmacで動かすPython
===
import serial

ser = serial.Serial('/dev/tty.usbserial***',9600,timeout=None)
while True:
    ch1 = input()
    ser.write(bytes(ch1, 'UTF-8'))
    ch2 = ser.read()
    print(ch2)
=== 結果はこんな感じです。 0を入力したらb'0'が出力され、1を入力したらb'1'が、、、の連続です。
※ボードを変えると"tty.usbserial***"の部分が変わるので注意が必要です。('18.11.19記す)
=== ここまで






pySerialのインストール

イメージ
Pythonからシリアルポートアクセスするためには、pySerialというパッケージをインストールします。

$pip3 install pyserial

Successfully installed pyserial-3.4 (バージョンは'18/11/12当時)
が出ればOKです。

いきなりI2C-COMの基板を繋ぐ前に、PythonからUSBポートに入出力できるか、確認します。

まずUSBポートから"Hello"を連続入力してPythonの画面に出るか?
macのUSBポートにテキストを連続に流し込むArduinoのスケッチ(Mbedにまだ慣れてない)
===
char ch1 = 0;

void setup() {
Serial.begin(9600);
}

void loop() {
    Serial.println("Hello");
    delay(1000);
}
=== mac側で受けるPythonは === import serial
ser = serial.Serial('/dev/tty.usbserial-***',9600,timeout=None) while True:     ch1 = ser.read()     print(ch1) === 結果は となりました。時間になったのでPython -> USBは明日にします。
ここまで



macにPython3をインストールする

I2Cを手入力と目視で制御できるようになったので、次はいよいよプログラムからI2Cを制御できるようにします。まずプログラミング言語を決めないといけないのですが、ここではPythonを選びました。なぜPythonなのか?

これから多種多様なI2Cセンサーの動作を記述してどんどん資産が増えていきますから、今後廃れそうな言語は避けたいところです。これから末長く生き延びるだろうことを現時点で予測するのはどんな技術でも難しいことですが、①書店で書籍を多く見かける、②ざっと見たところ言語仕様が初心者でも取っつき易そう(新しく覚えることが比較的少なそうだしデバッグも容易に思えた)、③RasPiのPiはPythonのPiらしい(RasPiを立ち上げた人が意識していたことは間違いない)、等々の理由により選びました。因みにNode-REDにもwebにも使えるJavaScriptが次点でした。

さて、macOSには最初からPython2がインストールされているのですが、ここではPython3を新たにインストールします。これから新しくプログラムを書こうという人が進歩が止まった言語に執着する理由はありませんから。

Pythonのインストーラーはここにあります。2018.11.12現在macOS用のverionは3.7.1でした。インストールが終わったらターミナルから$python3 -Vでバージョンをチェックします。

次に使いやすいMicrosoftのテキストエディタをインストールします。Visual Studio Codeの中でPython用のプラグインもインストールしておきます。

ここまで








動作確認(2)(古くなりましたが記録として残します)

イメージ
動作確認(1)で確認したのはレジスタリード動作なので、ライト動作も確認しておきます。 (レジスタリード動作の中でもデバイスにはレジスタアドレスを書き込んでいますがdata sheetに記載のあるプロトコルを確認する意味があります)
レジスタ03hはRAM_byteで、汎用に読み書きできるようなので、ここに適当なパターン、ここでは5ahとa5hを書いて読み出してみます。

今回は1行1行説明しませんが、"5a"を書いた後、"5a"が読めて、"a5"を書いた後は"a5"が読めていることが確認できました。

ここまで