レビューメディア「ジグソー」

インテル(R)Edison キット for Arduino(スケッチ サンプル活用編)~ インテル 入ってる?

  第0章 はじめに


 

 今回、ZIGSOWプレミアムレビューをさせて頂く製品は、「インテル(R) Edisonキット  for Arduino」

 です。(以下 Edison)

 Arduino互換ボード、Raspberry PI B、Raspberry PI B+、Raspberry PI 2 B、STM 32 Nucleo等いろ

 いろ持っていますが、Edisonは初めてです。

 

テーマ

 Edison-Labで公開されているスケッチ(プログラム)のサンプル群の中から最低3種類を活用し、インテ

 ル(R) Edison キット for Arduinoをベースとしたオリジナル試作機を開発する。

 

【試作機の構想】

 Edisonの特徴は何と言ってもWi-FiやBuletoothの通信機能だと思います。

 そこでその通信機能を生かしたスペクトラムアナライザーを作りたいと思います。

 

更新: 2015/10/04
初心者へのお勧め度

初心者には少し難易度が高いです

[インテルのホームページ](2015年7月31日現在)

 インテルのホームページを参考にする場合、以下の点に注意して下さい。

 ・最初は「初期化のガイド」を見て下さい。

 ・リンクがいきなり英語のページになりますが、躊躇しないでじっくり進めて下さい。

 ・Intelのホームページ内の整合性がとれていないところがあります。

 

[ハードウェア設定での注意点]

 ・まず母艦PCにドライバーをインストールしてからUSBを接続する。

 ・USBのバスパワーに頼らず、セルフパワーのHUBか電源を接続する。(7V~15VのACアダプター)

 ・eMMCの中のLinuxが壊れた時のリカバリーが難しいですが動かなくなった時はあきらめず、情報をさ

   がして復活させてやって下さい。

 

[関連情報の豊富さ]

 ・インターネットの情報もさることながら本が無いです。

 

 

  第1章 開梱


 

【Intel 知ってる?

基礎知識

 基礎的な知識を得るには、まずは本!ということで、本屋へEdisonの本を探しにいきました。

 でも、一冊も見つかりませんでした。しかたなく同じIntelのGalileo Gen2の本を購入しました。

 Galileo Gen2はX1000というX86アーキテクチャのCPUを搭載しEdisonと同じYocto Linuxが稼動し、

 Arduinoと互換のGPIOを持つCPUです。

 

ハードウェア(本体)

 EdisonはIntelが "IoT"用に開発した切手サイズの超小型コンピュータです。

 ・CPU Intel Atom SoC(500MHzデュアルコア)

 ・RAM 1Gbytes

 ・フラッシュメモリ 4Gbytes eMMC

 ・Wi-Fi IEEE802.11 a/b/g/n、2.4Ghz/5Ghz

 ・Bluetooth Bluetooth 4.0

 ・入出力 40本(UART、I2C、SPI、I2S、GPIO等)

 ・サイズ 35.5×25.0×3.9mm

 

ソフトウェア

 ・OS Yocto Linux

 ・開発環境 Arduino IDE、C/C++、Python、Node.js等

 

拡張ボード

 ・インテル(R) Edison キット For Arduino ←レビュー対象

 ・インテル(R) Edison Breakout ボードキット

 

母艦の仕様

 Edisonを接続する母艦の自作PCの仕様も記載しておきます。

 ・CPU AMD Phenom II X2 555(を4Coreとして動作)

 ・RAM 4GB×2

 ・ディスク 1TB×2

 ・OS Windows7 Professional 64bit

   →8月17日にWindows10 Pro 64bitにアップデートしまた。念の為、FTDIとEdison USBドライ

    バーを再インストールしました。

 

【Intel 入ってる?

外箱

 こんな箱で送られてきました。Edisonなので電球ですね。「おい、アイデアだせや!」と言われているよう

 な気もします。バックの絵はグラサンをかけたエジソンなのでしょうか?

 

 

 

 上蓋を開けるとEdison本体が入っています。宝箱のようです。

 本当に宝物がはいっているのか調べてみたいと思います。

 

 

 SDカードと比較してみましたが、ちょっと大きいですね。

 でもこのパッケージに、3つのCPUとWi-Fi、bluetooth、メモリー、Intelが入っているんです。

 

 

 Arduino拡張ボードです。本体に比べて大きいですね。

 

 

 他のCPUボードと比較してみました。Arduino互換ボードとSTM32 Nucleoです。

 

 

  第2章 初期設定


 

【Intel 動かしてみる?

先人の知恵

 以下のサイトを参考にしました。

 ・インテル(R) Edison キット For ArduinoのGetting Startedガイド

 ⇒http://edison-lab.jp/gettingstarted/edison-arduino/windows/

  

 ・パソコン実験工房 - Edisonマスターへの道(不定期連載)

 ⇒http://www.pc-koubou.jp/blog/edison_master.php

 

USB・シリアル変換チップのドライバインストール

 最初にインテルのガイドに従ってUSBケーブルを2本繋いでみました。

 

 

 ケーブルを繋ぐと、LEDが光って何やらインストールが始まりましたが...

 母艦に外付けデバイス Edisonが出てきません。何か失敗しているようです。

 

 

 インテルのガイドのページの下の方に「初期化のガイド」へのリンクがありました。

 これはもっと最初の方に書いてほしいですね。

 でも、このガイドでも「外付けデバイスとして認識される」から始まっています。

 そんなの出てきてないんですが...

 

 ※気を取り直してUSBケーブルは2本とも外し、母艦へのドライバーの導入から始めます。

 

FTDIドライバをインストールする

 ・UARTは定番のFTDI社製チップなのでドライバーはここです。

  ⇒http://www.ftdichip.com/Drivers/CDM/CDM%20v2.10.00%20WHQL%20Certified.exe

 

 ・ソフトをダウンロードして実行すると正しくドライバがインストールされました。

 

 

 ※でもここまでやっても、Edisonが外付けデバイスとして認識されせんでした。

 

セルフパワーHUBに繋いでみる 

 もしかするとバスパワーが原因がと思い、セルフパワーのHUBに繋いでみました。

 

 

 すると Edisonが Dドライブとして認識されました。

 ※USBのバスパワーだけでは力不足なのかもしれません。最終的にはACアダプターを使いました。

 

 

 念のため手持ちのUSB電圧/電流計で測ってみると、60mA程度しか流れていませんでした。

 (それでも力不足だと?)

 

 

Intel Edison Driver をインストールする

 インテルのガイドに戻ります。

 Intel(R) Edison Board Software Downloads

 ⇒https://software.intel.com/en-us/iot/hardware/edison/downloads

 ※インテルのガイドのリンクから飛ぶページは、ガイドで説明されているページと違っています。

 (2015年7月31日現在)

 

 とりあえず「Windows 64 bit Integrated Installer」をインストールしてみました。

 

 

 ダウンロードした「iotdk_win_installer.exe」を実行すると以下の画面が出てきます。

 

 

 Licenseの承諾を行ってNextボタンを押していくと、インストールするドライバー等の選択画面が表示さ

 れます。

 

 

 Nextボタンを押していくと、色々なソフトウェアがインストールされます。

 Edison Firmware Updateは失敗したようで、手動で実施せよというメッセージが表示されました。

 この後、また外部デバイスとして認識されなくなりました。

 

 ※上記でダウンロードしたものはIntegrated Installerなので、関連するツールが全て同時にインストー

  ルされてしまうようです。

  このステップでは、まず一番上のDriverだけチェックしてインストールするか、

  「Windows Standalone Driver」をインストールした方が良かったかもしれません。

  

別のEdisonで試してみる

 同じ環境で、もう一台のEdisonを接続してみました。

 すると、Dドライブとして「Edison」が表示されました。※とりあえずこれで進めます。

 

最新のイメージファイルに更新する

 ①インテルのガイドの「Edisonを最新にしよう」のSTEP3から続けます。

 ②ダウンロードページから「Edison Yocto complete image」をダウンロードします。

 ③ZIPファイルを解凍します。

 ④解凍後の全ファイルをEdisonドライブにコピーします。

 ⑤PuTTYやTera Term等のシリアル接続ができるターミナルソフトでEdisonのLinuxにrootでログイン

  します。

 ⑥「reboot ota」と入力してリターンキーを押します

 

 

 ・これによりeMMCの中のLinuxのイメージが最新化されます。

 ※5分程度の時間がかかります。電源が切れないように注意して下さい。

 

付録:動かなくなった Intel Edisonをリカバリする

 FirmwareとはeMMCに書き込まれている Yocto Linuxのことらしいです。

 Updateが失敗したので、Linuxが完全に立ち上がらず外部デバイスとして認識されなくなったようです。

 こんな場合は、USBのDFU(Device Firmware Update)機能を使ってFirmware(Yocto Linux)の再書

 き込みが必要です。再書き込みはこのページを参考にしました。

 

 動かなくなったIntel Edisonをリカバリする。

 http://qiita.com/rerofumi/items/2b327434f514ee7a6058

 

 Windowsのコマンドプロンプトを「管理者として実行」して、Linuxを解凍したディレクトリーで

 flashall.batを実行します。

 そして、Edisonのボード上のRESET(SW1UI5)ボタンをクリックします。

 運がよければ、ログが出て、Linuxのイメージがダウンロードされます。

 

シリアルポートの状況

 ここまでで、シリアルポートは以下のように3つ出来ています。

 ・Intel Edison USB Composite Device →用途不明

 ・Intel Edison Virtual Com Port →スケッチのロード用

 ・USB Serial Port →ターミナル接続用

 

 

Wi-Fiの設定

 最後にWi-Fiを設定します。

 まず、Tera Term等でEdisonのシリアルポートに接続して、rootでログインします。

 上の例だと、USB Serial Port(COM6)になります。ボーレートは、115200bpsに設定します

 

 

 Edisonの基本セットアップコマンドを入力します。

  # configure_edison --setup

 

 

 パスワードを聞いてくるので、2回リターンキーを押すと、Edisonに付ける名前を聞いてきます。

 5文字以上の英数字の必要があるので、ここでは「editson1」にしました。

 [Y or N]にYを入れると、Wi-Fiの設定に移ります。

 

 

 ・Wi-Fiのスキャンで認識できたSSIDが表示されます。

 ・接続したいSSIDの番号をいれるてパスワードを入力します。

 ・正しいパスワードの入力で、DHCPが有効ならばIPアドレスが

  割り当てられて、Wi-Fiの初期設定が終わります。

 

Wi-Fiでの問題(その1)

 Wi-Fi設定の最後にIPアドレスが表示されて、ブラウザで確認しろと表示されます。

 しかしそのとおりのアドレスをブラウザから入力しても接続できません。

 

 いろいろ調べると、USBの方にもIPアドレスが関連づけられていました。

 それを停止したら接続できるようになりました。コマンドは

  # ifconfig usb0 down

 USBのアドレスがローカルアドレスと競合していたのだと思います。

 ※家庭内のIPアドレスを192.168.2.*に設定している場合は注意して下さい。

 

 USB0にアドレスを割り当てないようにするには、以下のファイルを修正すると良いようです。

 修正するファイルは、/etc/systemd/network/usb0.network です。

 

 ファイルのアドレス指定の部分をコメントアウトしました。

 

  [Match]
  Name=usb0

 

  [Network]
  #Address=192.168.2.15/24

 

Wi-Fiでの問題(その2)

 Wi-Fi設定の確認として、インターネットの先の外部サーバーへのPINGコマンドの投入を行ってみまし

 た。(google.com等)しかし接続ができません。

 

 いろいろ調べるとデフォルトゲートウェイが設定されていないことを発見しました。

 通常は無線ルーターからDHCPでIPアドレスを受け取る時に設定されるはずです。

 

 またまた調べてみると、一台のPCに2つ以上のネットワークI/Fがあると自動設定されないようです。

 手動で設定しましたが、これもUSBのIP接続の問題かも知れません。

 

タイムゾーンの設定

 初期設定では、タイムゾーンの設定がUTC(世界標準時)になっているので、それを日本標準時に変更し

 ました。

 Edisonにシリアルターミナルソフトで接続し、以下のコマンドを投入します。

  # timedatectl  ・・・ 現在のタイムゾーンを表示する

  # timedatectl set-timezone Asia/Tokyo  ・・・ JSTに合わせる

 

 

Wi-Fiの設定(自動スタート)

 Wi-Fiが自動スタートするように以下のコマンドを投入しました。

  # systemctl enable wpa_supplicant

 

デフォルトルートの設定

 Edisonからインターネットにアクセスできるように、デフォルトルートを設定しました。

  # route add default gw 192.168.2.1

  ※通常、ルーターのアドレスを指定します。

 

 

 自動的に設定されるように設定ファイルを編集しました。

 設定ファイルは、/etc/wpa_supplicant/wpa_cli-actions.sh です。

 

 ファイル中のネットワーク接続部分に赤字の行を追加しました。

 

 ----------------------------------

  if [ "$CMD" = "CONNECTED" ]; then
     kill_daemon udhcpc /var/run/udhcpc-$IFNAME.pid
     udhcpc -i $IFNAME -p /var/run/udhcpc-$IFNAME.pid -S
     route add default gw 192.168.2.1
  fi

 ----------------------------------

更新: 2015/10/03
互換性

Arduinoとの互換性は微妙です

[Arduinoのサンプルスケッチとの互換性]

 ・サンプルスケッチに動作しないものがあります。

  ※37個中4個が動きませんでしたが、ソフトウェアやハードウェア同士の相性や、私の準備作業に問題

   があるのかもしれません。

 ・サンプルスケッチの説明に誤りが数箇所あるので、全て鵜呑みにせず試してみて下さい。

 

[市販のシールドとの互換性]

 ・割り込みやアセンブラーを利用しているライブラリーの移植は困難です。

 

 

  第3章 開発ツールの導入からLチカまで


 

 Edisonの開発ツールはいろいろありますが、今回はArduinoボードなので、Arduino IDEを使って開発し

 たいと思います。

 

【Intel 動いてる?】 

ソフトのダウンロード

 インテルのガイドに戻ります。

 Intel(R) Edison Board Software Downloads

 ⇒https://software.intel.com/en-us/iot/hardware/edison/downloads

 

 今度こそ、「Windows 64-bit Integrated Installer」をダウンロードします。

 ダウンロードした「iotdk_win_installer.exe」を実行して、ライセンスの承諾をすると、インストールする

 ツールの選択画面が出てきます。

 

 

 ここで、「Arduino Software」にチェックを入れて、Nextボタンを押してください。これで「Arduino IDE」

 がインストールされます。

 

IDEの起動

 スタートメニューやデスクトップのリンクから「Arduino IDE」を立ち上げてください。

 ※通常のArduino IDEを導入済みの場合には、起動するソフトウェアを間違わないように。

 

 

 見慣れた? ArduinoのIDE画面が出てくるはずです。

 

いよいよLチカ

 メニューを「ファイル → スケッチの例 → 01.Basics → Blink」とたどってください。

 

 

 Blink(LEDチカチカ)がロードされます。

 

 

スケッチのコンパイルとEdisonへの転送

 IDE画面の上左のチェックマークのボタンでコンパイルします。

 無事コンパイルが終わったら、上左の矢印マークのボタンでEdisonへ転送します。

 

 

 この時IDE画面の右下のCOMポートの番号が重要です。

 Windowsのデバイスマネージャーの画面で、「Intel Edison Virtual Com Port」と割り当てられている

 ポートの番号を指定して下さい。(下の例では、COM7です)

 

 ポート番号の変更は、ツールメニューから行います。

 

またもやトラブル

 ツールメニューから、ポート番号を変更するのですが、その選択メニューがグレイアウトして変更できな

 いトラブルが発生しました。

 ZIGSOWのコミュニティでも解決できていないトラブルでした。

 ※Arduinoのホームページから、最新版のIDE(Arduino 1.6.5-r2)をダウンロードして再インストールし

  たところ、直ったようです。

 

インストールしたソフトウェアまとめ

 ・FTDIドライバー v2.10.00

 ・Edison USBドライバー v1.2.1

 ・Intel Edison Board Firmwaer Release 2.1

 ・Intel Arduino IDE 1.6.5-r2

 ・Windows 64-bit Integrated Installer V2015.01.20

 

 

  第4章 サンプルを使ってみる 


 

【Intel サンプる?】http://edison-lab.jp/examples/

 

 レビューのテーマが「Edison-Labで公開されているスケッチのサンプル群の中から最低3種類を活用しオ

 リジナルの試作機を作る」ということなので、まずはサンプル群を吟味したいと思います。

  ◎:問題無く動いたもの

  ○:問題はあったが動いたもの

  ×:動かなかったもの

 というフラグを付けています。

 ※ソフトウェアやハードウェア同士の相性の問題や、私の準備作業に問題があるのかもしれません。

 

 A. Basic 基本

 01. Analog Read Serial

 02. Blink LED

 03. Digital Read Serial ◎

 04. Fade ◎

 05. Read Analog Voltage ◎

 

 B. Digital デジタル

 01. Blink Without Delay ○

 ※シリアルモニタで観測できるとコメントされています。

 02. Push Button ◎

 03. Debounce ◎

 04. Digital Input Pull-up 

 ※必要なハードウェアの説明でPULL-UP抵抗が10Ωになっています。

  何かが壊れてしまわないでしょうか?

 ※ロードするスケッチ名が、Debounceになっています。

 05. State Change Detection ◎

 

 C. Analog アナログ

 01. Analog In Out Serial 

 ※手順02でブレッドボードの上下の電源ラインのジャンパー線がありません。これでは動作しません。

 ※動作は正常でしたが、ハードウェアに書いてある220Ωの抵抗が手順の図にはありません。LEDには抵

  抗を付けました。

 02. Analog Input ◎

 03. Calibration ○

 ※プログラムの説明不足で正しく動作しているのかわかりませんでした。

 04. Fading ◎

 

 D. Communication 通信

 01. ASCII Table Arduino Example

 02. Graph ○

 ※シリアルモニタで数値を見ることができますが、どこがグラフなのかわかりません。と思いましたが、

  IDEの前身のProcessingのコンソールではグラフが出るようですね。

 03. Physical Pixel ×

 ※文字を入力すると何かアボートしているような文字列が表示されます

 ※説明文に使用していないポテンションメータの記述があります。

 

 

 04. Virtual Color Mixer

 ※スケッチの説明には、シリアルモニタ上の画面背景色として表示となっていますが、そんな機能はある

  のでしょうか?これもProcessingなのかもしれません。

 

 E. Control コード制御

 01. Arrays ◎

 

 02. For Loop ◎

 

 03. If Statement Conditional

 04. Switch Case 

 ※CDSは利用しない予定なので検証していません。

 05. Switch Case 2 ×

 ※文字の入力はできますが、症状はD-03と同じです

 06. While Statement Conditional  

 ※CDSは利用しない予定なので検証していません。

 

 F. Strings 文字列

 01. Character Analysis ×

 ※文字の入力はできますが、症状はD-03と同じです。 

 02. String Length ×

 ※文字の入力はできますが、症状はD-03と同じです。

 

 G. Liquid Crystal Display(LCD) 液晶画面

 01. Autoscroll 

 02. Blink 

 03. Cursor 

 04. Display 

 05. Hello World 

 06. Scroll 

 07. Serial Dsiplay 

 08. Set Cursor 

 09. TextDirection 

 ※サンプルスケッチのままでは、LCDシリーズは動きませんでした。詳細は後に書きます。

 

 H. Wi-Fi 無線ネットワーク

 01. Simple Web Server ○

 ※回路図はD13にLEDを接続することになっていますが、スケチはD9になっています。

 ※アドレスを入力してもブラウザから接続できません。

 ⇒Wi-Fiのところで書いた "ifconfig usb0 down"コマンドを入力したところ正常に動き出しました。

 02. Web Server ○

 ※これも上記 "ifconfig usb0 down"コマンドが必要でした。

 ⇒シリアルモニタには以下のように表示されます。初期化に時間がかかります。気長に待って下さい。

 

 

 ブラウザには以下のようにA0~A5ポートで読み込んだ値が表示されます。

 A1~A5は何も接続していないので不定です。

 

 

LCDシリーズが動かない

 LCDシリーズは動きませんでしたが、ピンをそのままArduinoに繋ぎ直すとちゃんと表示されますので、

 LCDが悪いわけではなさそうです。

 こんな時のために、これ(ロジックアナライザー)があります。

 

 でも、普通(Enable信号をトリガーにする)に見ても信号は見ることができませんでした。トリガー無し

 で生の信号をそのまま見たのが下の画像です。RSとEnableが出ていないようです。

 ※この問題は後で検討しようと思います。

 

 

(2015年8月19日追記)

LCDシリーズのトラブルシューティング

 ArduinoのCPU直結のGPIOに対し、EdisonのGPIOはCPU外付けの為、遅い可能性があります。

 LCDシリーズでRSを出力しているD11の不良の確認も含めて、ちょっと実験してみました。

 Lチカ(Blink)のスケッチをD11に変えて、delayをコメントアウトして、フルスピードにしてみました。

 まずはEdisonからロジアナでD11ポートを測定してみました。約1.4Mhzのパルスを出せています。

 

 

 

 次にArduinoでも同じことをしてみました。

 約97.5KHzでした。Edisonが約15倍のスピードだということがわかりました。でもクロックの比率からす

 るとEdisonは遅いですね。

 ただし、パルスの周期はArduinoの方が安定しているようです。

 EdisonはリアルタイムではないLinuxの上で動いている為でしょうか?

 

 ※11ピンの不良でもなく、スピードのせいでもなさそうです。

 

 (2015年9月6日 追記)

LCDシリーズのトラブルシューティング(その2)

 eulerさんから教えて頂いた方法でLCD関係のスケッチが動くようになりました。

 ありがとうございました。以下のページに書いてあった方法を見つけられたそうです。

 

http://edison-lab.jp/blog/2015/07/switch-science-trial-kit.html

 

 このページは見た覚えもあるのですが、Adafruitの製品専用のカスタマイズかと思っていましたが、以下

 の記述がありました。

 

 >今回のスケッチとArduino IDEサンプル・スケッチの違い
 >今回のスケッチには、液晶の動作を安定させるために、setup()

 >関数の中で液晶を初期化している。lcd.initで始まる部分がそうだ。

 

 このコメントの通りに、setup()に初期化を追加しました。

   lcd.init(1, 12, 255, 11, 5, 4, 3, 2, 0, 0, 0, 0);

 

 ロジアナで確認しましたが、RSもEnableもデータもきちんと出力され、LCDへの表示も確認できました。

 

 

 (2015年9月29日追記)

LCDシリーズが動かなかった理由(たぶん...)

 IDEでスケッチを作成すると、以下のようなモジュールが作られます。この時にコーディングした

 setup()とloop()やライブラリーにmain()関数が付け加えられます。

 

 このmain()関数から、setup()やloop()が呼び出されることで作成したスケッチが動くわけです。

 

 実はこのmain()関数の中で、Arduino互換のGPIOの初期化等が行われています。

 その為、main()関数が実行された後でないとGPIOを正しく使うことができないことになります。

 一方 C++の仕様では初期化部分は、プログラムがロードされた時に実行されてしまいます。

 LCDシリーズのライブラリーでは、この初期化部分にGPIOの初期化(上で追加している "lcd.init()"です)

 が入っています。

 

 本物のArduinoでは、main()の前に動いてもかまわないのですが、Arduino環境をシュミュレーションし

 ているEdisonでは、それでは具合が悪く、setup()関数の中で、改めて lcd.init()を呼び出す必要があるわ

 けです。

更新: 2015/11/09
拡張性

 

  第5章 プロトタイプ作成


 

 (2015年8月22日 追記)

LED MATRIX部分のプロトタイプ

 LED MATRIXは、Adafruitのこれを使います。 秋月で売っているので便利ですね。

 フルカラーLEDを搭載していますが、Arduinoでドライブする時は CPUの処理能力の関係か、4x4x4

 ビットで64カラーになりま す。ちょっともったいないですね。 (4ビットは16なので16x16x16=)

 4096カラーになります。

 

 AdaFruitが作成したデモンストレーションです。 

 

 

LED MATRIXとArduinoの接続

 LED MATRIXとArduinoの接続は、専用インターフェースを使います。

 忘れないように回路図を置いておきます。(電源 5Vとグランドは省略しています)

 

 本当はこのLED MATRIXパネルもEdisonで動かしたいのですがArduinoでは割り込み処理の中で、PWM処

 理をしているので移植は諦めました。まぁ相応の役割分担ということで、リアルタイム的な処理はArduino

 に任せます。

 Arduinoといっても、aitendoの「あちゃんでいいの」なので、CPUと込みでも、166円+380円=546円

 (税別)です。

 

 「あちゃんでいいの」にスケッチをロードする為に、USBシリアル変換キットを購入しました。

 でも、ここでもトラブってしまいロジアナが活躍しました。

 

 半田付けのアクシデントがありましたが、何とか「あちゃんでいいの」でLED Matrixのインターフェース

 ができました。(でも、もう一つ作らないといけないです。ステレオ嫌い)

 

 

 Arduino→LED Matrixのハードウェアはできたので、デモプログラムを作りました。RANDOMで値を作っ

 ています。

 

 

 (2015年9月6日 追記)

I2Cのプロトタイプ

 EdisonとArduinoを接続する為にI2Cを使おうと思っています。

 露頭に迷わないよう、まずEdison側の確認をする為、I2C接続の温度センサを試してみました。

 

 

Adafruitのサンプルスケッチでのテスト

 Adafruitのラーニングページにサンプルスケッチがあったので、そのスケッチでテストしました。

  ①サンプルスケッチをダウンロード(Adafruit_MCP9808)

  ②ファイルを解凍しIDEのlibrariesにコピー

  ③MCP9808とEdisonを配線(5V、GND、SDA、SCL)

  ④サンプルスケッチのコンパイルとロード

 温度が摂氏と華氏で表示され動作が確認できました。

 

 

 EdisonでI2Cの通信を行う場合、ArduinoのWireライブラリとC言語用のmraaライブラリの2つがあるよ

 うですが、まずは I2Cデバイスとの通信ができたWireライブラリを使ってみることにします。

 ※スピード上で問題が出た時は、mraaを試してみます。

 

 (2015年10月4日追記)

EdisonとArduinoとLED Matrixの接続

 EdisonとArduino(あちゃんでいいの)とLED Matrixを接続しました。

 Edisonで2チャンネル分の乱数を発生させ、I2CでそれぞれのArduinoに送っています。

 Edisonには状態モニター用のLCDを付けています。

 百均で購入したメッセージボードに取り付けています。

 

 初期化時にアニメーションを表示するようにしています。(オーバーオールを着たおじさんを走らせ

 ています。

 

 

 LED Matrix部分のアップです。

 

 

 

EdisonとMSGEQ7の接続

 EdisonとMSGEQ7を接続する為のプロトタイプを作成しました。

 MSGEQ7は7周波数帯のスペクトラムアナライザー機能を持つLSIです。

 

 これも百均のメッセージボードに取り付けています。

 配線はこれからです。

(2015年10月6日追記)

Wi-Fiでエラーが発生しているようです

 立ち上げてしばらくすると、Wi-Fiが落ちます。dmesgで見ると、何かエラーが発生しているようです。

 どのあたりからエラーなのかよくわかりませんが、BUSがDOWNして、chipがcrashしているような...

 メッセージが出ています。

 

 [    9.094980] CFG80211-ERROR) wl_update_wiphybands : bw_cap failed, -23
 [    9.226813] CFGP2P-ERROR) wl_cfgp2p_add_p2p_disc_if : P2P interface registered
 [    9.266633] WLC_E_IF: NO_IF set, event Ignored
 [   10.432656] FAT-fs (mmcblk0p7): Volume was not properly unmounted. Some data may be    

   corrupt. Please run fsck.
  ~途中省略
 [   13.811810]
 [   13.901221] wl_bss_connect_done succeeded with 00:01:8e:a9:2d:28
 [   13.999165] wl_bss_connect_done succeeded with 00:01:8e:a9:2d:28
 [   14.490486] ip (325) used greatest stack depth: 5336 bytes left
 [  219.194208] systemd-fstab-generator[335]: Checking was requested for "rootfs", but it is

   not a device.
 [  525.312515] INTERNAL ERROR: FIRMWARE HALTED : set BUS DOWN

 ~途中省略

 [  530.300332] wl_android_wifi_off in
 [  530.300350] dhd_prot_ioctl : bus is down. we have nothing to do
 [  530.324426] wifi_platform_set_power = 0
 [  530.326321] CFG80211-ERROR) wl_cfg80211_hang : In : chip crash eventing
 [  530.332599] cfg80211: Calling CRDA to update world regulatory domain

 

 

(2015年11月8日追記)

Wi-Fiのエラーが解決しないので方針変更

 Wi-Fiのエラーが解決しないので、1台のEdisonで全部実行するように修正しました。

 MSGEQ7の出力を受けて、I2CでArduinoにデータを渡すのを1台にまとめました。

 しかし、今度はI2C側でトラブルが発生しました。

 マスター(Edison)側から書き込み要求を出してもACKが返ってこない(Arduino側が応答しない)

 という事象が発生してしまいました。(乱数では動いていたのですが)

 

更新: 2015/11/09
オリジナル試作機の開発

 

  第6章 オリジナル試作機


 

活用したサンプルスケッチ

  ① Analog :Analog Input | アナログ入力の実験

  →MSGEQ7のスペクトラムデータの入力で活用しています。

 

  ② Communication :Swich Case | "switch-case"構文(多分岐選択)

  →①のスペクトラムデータの値を判断してバー表示を制御しています。

 

  ③ LCD : Hello World | "Hello World!"を液晶画面に表示する

   →Edisonのステータス表示で活用しています。

 

  ④ Wi-Fi : Simple Web Server | LEDをネット経由で制御する

   →スペクトラムデータをEdison間でやりとりする部分で活用しています。

    ※残念ながらWi-Fiが落ちてしまうので完動していません

更新: 2015/11/09
総評

 

  第7章 完成


 

 Edison キット For Arduinoは、Arduino IDEを利用することで、初心者でもハードウェアを制御

 するプログラムが作成できるという面で、とても良いものだと思います。

 ただし、他のシングルボードコンピュータと比べると、入手できる情報が少なく、トラブルが発生

 した時に解決することが非常に難しいものとなっています。

 今回はロジックアナライザーがあったので、いくつかのトラブルも解決することができました。

 周辺ハードウェアの制御を行うような時には、ロジックアナライザーは必須のアイテムだと思い

 ます。

 今回のレビューでは、いろいろなトラブルが発生しましたが、他のレビューアーの方の助言を頂い

 たりしながらひとつひとつ進んでいく過程が、とても面白かったです。

 

 最後に情報面の課題が解決されれば、ネットワークを標準装備している Edisonは、IoTやWoTへの

 活用がもっともっと加速されるのではないかと思います。Intelさん解決をお願いします。

 

 まだ試作機は完成していませんが、中締めとしたいと思います。

コメント (23)

  • mr_osaminさん

    2015/08/17

    最近、静かだと思ったらコレだったんですねw
  • yosyos888さん

    2015/08/17

    そうなんです。
    突然、抜擢されました。
    でも9月まで自分では公開出来ないフラグが立っていたのに
    突然リリースされるとは、もうちょっと修正したかったのに…
  • harmankardonさん

    2015/08/17

    お疲れ様です.
    Arduino関連の登録があったので,選出されているんだろうと思っていました.

    yosyos888さんの所でも,IDEでシリアルポートが選択できなかったのですね.私と一緒です.ここで,かなりの時間をロスしました.
    そして,コミュニティがあったことを初めて知りました.

    残りも頑張ってください.
他20件のコメントを表示

ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。

YouTube の動画を挿入

YouTube の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ニコニコ動画の動画を挿入

ニコニコ動画の URL または動画の ID を入力してください

動画の ID が取得できません。ID もしくは URL を正しく入力してください。

ZIGSOWリンク挿入

検索対象とキーワードを入力してください

    外部リンクを挿入

    リンク先の URL とタイトルを入力してください

    URL を正しく入力してください。

    画像を挿入(最大サイズ6MB)

    画像を選択してください

    ファイルサイズが6MBを超えています

    別の画像を追加

    ほかのユーザーのレビュー

    ZIGSOW にログイン

    ZIGSOW会員登録(無料)はこちらから