第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年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
----------------------------------
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()を呼び出す必要があるわ
けです。
第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側が応答しない)
という事象が発生してしまいました。(乱数では動いていたのですが)
第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が落ちてしまうので完動していません
第7章 完成
Edison キット For Arduinoは、Arduino IDEを利用することで、初心者でもハードウェアを制御
するプログラムが作成できるという面で、とても良いものだと思います。
ただし、他のシングルボードコンピュータと比べると、入手できる情報が少なく、トラブルが発生
した時に解決することが非常に難しいものとなっています。
今回はロジックアナライザーがあったので、いくつかのトラブルも解決することができました。
周辺ハードウェアの制御を行うような時には、ロジックアナライザーは必須のアイテムだと思い
ます。
今回のレビューでは、いろいろなトラブルが発生しましたが、他のレビューアーの方の助言を頂い
たりしながらひとつひとつ進んでいく過程が、とても面白かったです。
最後に情報面の課題が解決されれば、ネットワークを標準装備している Edisonは、IoTやWoTへの
活用がもっともっと加速されるのではないかと思います。Intelさん解決をお願いします。
まだ試作機は完成していませんが、中締めとしたいと思います。
mr_osaminさん
2015/08/17
yosyos888さん
2015/08/17
突然、抜擢されました。
でも9月まで自分では公開出来ないフラグが立っていたのに
突然リリースされるとは、もうちょっと修正したかったのに…
harmankardonさん
2015/08/17
Arduino関連の登録があったので,選出されているんだろうと思っていました.
yosyos888さんの所でも,IDEでシリアルポートが選択できなかったのですね.私と一緒です.ここで,かなりの時間をロスしました.
そして,コミュニティがあったことを初めて知りました.
残りも頑張ってください.
mr_osaminさん
2015/08/17
yosyos888さん
2015/08/17
私もIDEでシリアルポートが選べないところでロスしています。
その他色々な罠がありますね。
でも会社の人間に言わせると、Linuxとしては使いやすいとのことでした。
Arduinoコンパチという先入観を捨てれば良いのかもしれません。
mr_osaminさん ありがとうございます。
DACチップの制御ならEdisonですよ。
mr_osaminさん
2015/08/18
>DACチップの制御ならEdisonですよ。
むむっ、なんと!
ってダメですよ、ハードルが高くて私ではお手上げです。
yosyos888さん
2015/08/20
クロックが500MHzなので、Arduinoよりやっぱり速いことがわかりました。
yosyos888さん
2015/08/22
yosyos888さん
2015/08/28
あちゃんでいいのにスケッチがロードできません。
harmankardonさん
2015/08/29
yosyos888さん
2015/08/29
RESETピンの半田付け忘れでした。凡ミスを宣伝してしまいました。
恥ずかしいです。
KOUKOUさん
2015/08/30
やり始めると他のことが手につかなくなるので皆さんのレビューを見てやった気分に浸ります。ニヤニヤ
スペアナ完成楽しみにしてます。
yosyos888さん
2015/08/30
Raspberry PIやArduinoと比べてEdisonだけが罠が多いのでは無く、
情報が少なすぎるのですよね。
罠が罠をよぶことも多くて...
でもそれが楽しいのでしょうがないです。
まだ難問の通信制御(Wifi、I2C)が残っています。頑張ります。
eulerさん
2015/08/31
lcd.init(1, 12, 255, 11, 5, 4, 3, 2, 0, 0, 0, 0);
この1行追加でうまく動きました。
一応参考までに・・・
yosyos888さん
2015/08/31
レビューを拝見させて頂きました。
再確認しようとおもいます。
でも何処でこれを発見されたのでしょうか?
eulerさん
2015/08/31
ここで発見して私の環境では無事表示できました。
yosyos888さん
2015/08/31
灯台下暗しというか、不親切というか…
でも、このlcd.initって自動的に走りそうなのですが、非互換なのですかねぇ
yosyos888さん
2015/09/01
させると書いてありましたが、もしかすると、一度自動的に実行されるけど
Edisonの処理が速すぎるので、液晶自体の初期化の前に一度目のlcd.init
が実行されてしまうので、ダメ押しで2度目を入れているのかもしれませんね。
eulerさん
2015/09/01
yosyos888さん
2015/09/02
yosyos888さん
2015/09/03
みました。
yosyos888さん
2015/09/06
eulerさんの助言でLCDシリーズのサンプルスケッチが動くようになりました。
ありがとうございました。
yosyos888さん
2015/11/09
一応、中締めにしたいと思います。(トラブルシューティングは続けます)