株式会社インデペンデンスシステムズ横浜システム開発エンジニアの西田五郎が運営しております。その他新規開発案件のご依頼をお待ちしております。2017年5月24日ArduinoでのSPI通信についてです。Interface:SPI)はマイコン系と周辺デバイス間の短距離間で利用されている同期型のシリアル通信の一種です。同様の通信方法としては、I2cがあります。Piの周辺デバイスでは、LCDやADコンバータ等で採用されていると思います。I2Cと同様に使いこなしたい通信方法の一つだと思います。Unoを以下のように接続してマスタとスレーブにしてごく簡単な通信を確認しました。UnoはそれぞれPCに接続しています。以下を参考にしました。ありがとうございます。ArduinoリファレンスArduinoリファレンス日本語訳ArduinoでSPIの双方向通信をしてみたここから具体的な内容です。Uno間の配線についてSPIでは以下の配線を使います。Select):スレーブデバイスを選択、つまりマスタへのデータ転送を可能にするためのピン。SSのピンがSPIの特徴の一つでこのピンを利用して複数のスレーブを制御することになります。このピンがLowの場合にマスタとの通信が有効になり、Highの場合はマスタとの通信を無視することになります。マスタ、スレーブそれぞれ以下のように接続しました。Pin13以下はマスタ側ですが、スレーブ側の同じピンに接続します。スケッチの内容Arduinoでは、SPI.hをインクルードして、SPIライブライが利用出来ます。以下のようなスケッチを書きました。処理としては、マスタ側のIDEのシリアルモニタから入力した文字をそのままスレーブ側から送信します。このようなスケッチで単純な通信の確認が出来たという内容です。}SPIライブラリを利用していますので、詳細が必要な場合は上記の参考にしたサイトを参照して頂ければと思いますが、要点は以下です。初期設定で以下を設定しています。UARTで文字入力があれば、スレーブ側へ送信しています。ここでの要点は、やはりSSピンの設定です。SSピンをLOWに設定してこのマスタをスレーブの通信を有効にしています。実際には必要なタイミングに応じてHIGHにも設定してまたLOWに設定する処理になると思います。ここでは単純にLOWに設定しているだけです。これだけでここでは通信が出来ました。repeatedly:}MISOを出力に設定して、マスタ側と同様に初期設定をして割り込みを有効にしています。割り込み処理で受信データをそのまま送信しています。部分的にレジスタも使っています。(※必要な場合は以下等を参照して下さい。以下のようにマスタ側のシリアルモニタで確認出来ました。Hello!と送信すると1文字ずつ返ってきました。この時にシリアルモニタの下の部分で「改行なし」に設定すると分かりやすいです。これで単純な通信がとりあえずは確認出来たということで、次回は以下で実際のデバイスの温度センサADT7310を使ってみます。(Make:PROJECTS)AdSenseAdSense-Arduino執筆者:joekool55jp関連記事ESP-WROOM-02でもセンサネットワーク稼働試験ESP-WROOM-02でもセンサネットワークを稼働してみます。Leafonyとは以下の公式ページによりますと「超小型、電池で動く、組み立て簡単なオープンイノベーション・プラットフォーム」とのことです。「温度管理システム的なものを作ってみる」の1回目です。AndroidでUSBシリアル通信の記事を書きました。(1回目はこちらから。)次は、その少し応用的な内容で書きたいと思いました。...AndroidでUSBシリアル通信(その2)ライブラリサンプルのArduinoスケッチAndroidでUSBシリアル通信の2回目です。前回はハードウェア構成、ソフトウェア構成等全体的な内容について書きました。Ethernetシールドの旧製品版を使ってみました。シールドを使ってみました。株式会社インデペンデンスシステムズ横浜システム開発エンジニアの西田五郎が運営しております。その他新規開発案件のご依頼をお待ちしております。