IntelからAtom搭載の小型マイコンedisonが登場です。
以前、Intel galileoでニキシー管時計製作
Nゲージの制御
といった工作をしてきました。
今回はEdison kit for Aruduinoを使ってニキシー管を使った温湿度計を作ります。
果たしてGalileoの時と同変わったのか?
edisonでの開発は簡単なのか?
いろいろ試行錯誤しながらedisonの魅力を体験していきたいと思います。
まずはedisonってどんなものか見てみましょう。
intel edison kit for Aruduinoはedisonモジュール、aruduino互換拡張ボード、そしてスペーサが入っています。
Gallileoの時のようなACアダプタは付属していません。
小さい巨人
小さいと評判のEdisonですが、本当に小さい。
さすがに10円玉よりは大きいのですが、どれほど小さいかわかりますよね?
このEdisonのモジュールはなんと20x35.5(mm)しかないんです。
しかしこんなに小さいのにAtomが搭載され500Mhzのデュアルコア、デュアルスレッドで動作します。
そして、GPIOは40個。
1 GB の LPDDR3、4 GB の EMMCを搭載し、wifiまでついているのです。
詳細を以下に並べておきます。
サイズ : 35.5×25×3.9mm
SoC(CPU) : 500 MHz Intel Atom Silvermont dual-core processor
RAM : RAM:1GB(LPDDR3 POP memory 800 MT/sec)
Flash : 4GB eMMC(v4.51 spec)
wifi : IEEE 802.11a/b/g/n 2.4GHz/5GHzデュアルバンド
Blutooth : Bluetooth 4.0+2.1 EDR
入力電圧 : DC3.15~4.5 V
これ・・・もう超小型PCでいいんじゃない?ってスペックです。
ただ、コネクタがヒロセ超小型コネクタDF40seriesとなっており、そのまま取り付けるのはちょっと難しそうです。
DIPコネクタへの変換基板でもあればもっと使いやすそうですが、Breakout boardと呼ばれる拡張基板を使ってもピン数が多く間隔がきつくて、プリント基板を自作しないとちょっと超小型での埋め込みは苦労しそうです。
もちろん今回私がつかうようなEdison kit for Arduinoのような拡張基板があれば開発は簡単そうです。
せっかくedisonが小さいのに普通のマイコンボード並みになってしまうのが残念ですが、性能を考えると非常に楽しみなモジュールですね。
評価としてはスペックとサイズ的には夢のようなのですが、電子工作という分野で、Edison単体でそのサイズを活かすのは敷居が高そうなので星は4つです。
ニキシー管温湿度計を作る
今回はまたしてもニキシー管を使った工作で、温湿度計を作ります。
以前のGalileoで時計を作ったときにはIOの速度が遅かったため、ちらつきがどうしても残ってしまう状態でした。
果たして今回のedisonではどうなのでしょう?
開発準備
まずは開発環境の入手です。
IDEはインテルのサイトからダウンロードすることができます。
Galileoの時と同じく、普通にフォルダ内で解凍しようとすると、文字数が長すぎるとのエラーで正常に解凍できませんでした。
圧縮ファイルを短めに変更してやれば大丈夫みたいでしたが・・・
そしてその後、ドライバもインストールしておきます。
それでは早速edisonにつないでみましょう。
edisonを使うにはACアダプタを使うか、USBを2本挿す必要があります。
USBは1本が電源供給用(J16)、1本がPCとのデータ通信用(J3)になります。
接続すると一部ドライバの読み込みにエラーがでますが、気にせず続けていいようです。
認識されるとこのようにポートのところにintel edisonが現れます。
ここまで、準備ができたら解凍したフォルダ内のarduino.exeを起動します。
galileoの時と同じようなツールが起動します。
まずはedisonを使うための設定です。
まずはツールのマイコンボードからintel edisonを選択します。
次にツールのシリアルで先ほどデバイスマネージャでintel edison virtual com portとして出てきたcom番号を選択します。
私の場合はcom19だったのでcom19を選択します。
さて、これでPCとedisonがつながりました。
しかし、初期のFirmwareではバグがあるとの報告があります。
なので早速Firmwareも更新しておきましょう。
まずはIntelのサイトからLinuxイメージをダウンロードします。
解凍してできたファイルをEdisonとして認識している外付けドライブにコピーします。
コピーができたらシリアルでつないでやります。
私はTeraTermを使っていますが、edisonに接続するときはシリアルポートの設定でボー・レートを115200に設定します。
それでedisonのlinuxに接続することができます。
login:のところにrootといれればログインすることができます。
ログイン後”reboot ota"と打てば再起動が始まり、Firmwareのアップデートが始まります。
時間がかかりますので、電源を切らないよう待ちましょう。
更新前のバージョンが8/20にビルドされたバージョンのようです。
更新後がビルドされたのが10/14になってますね。
これでファームウェアの更新は完了です。
Galileoほどお手軽ではありませんが、それほど悩むようなものでもありませんね。
ちなみにwifi等の設定はコマンドで”configure_edison --setup"でできます。
wifiにつながっていれば"configure_edison --upgrade"でfirmwareのダウンロード、更新が
できるようです。
まずはLチカ
それではまずは最初にLチカをやってみましょう。
スケッチの例のBasicからBlinkを呼び出します。
そして矢印のボタンを押せば自動でコンパイルしてedisonにスケッチが転送されます。
これでArduino互換拡張ボード上のLEDがチカチカ点滅を始めます。
ボード真ん中くらいの緑のLEDがチカチカしているのがわかりますね。
ここまでくればedisonもgalileoも同じように扱えそうです。
さて、機能的な違いについては後々開発を進めていくにつれて見えてくるでしょう。
温度湿度の計測
それでは 今回の製作の一番のポイントともいうべき温度と湿度を計測させます。
今回はAM2321というモジュールを使用します。
I2Cでデータを取得できるのが便利でいいですね。
ただしAM2321はピッチが1.27mmというところが曲者ですが・・・
リード線を半田付けしてedisonとつなぎます。
それでは早速edisonにI2Cでデータを読み込ませるスケッチを書いてみます。
I2Cは以前のGalileoでも使ってたのでそこは簡単ですね。
AM2321のデータは小数点1桁目が1の位として出力されます。
なので、実際には10で割ってやった値が本当の値ということですね。
しっかり温度、湿度を計測できました。
毎回”Reomote I/O error”が出てるのはこのモジュールはデータを送った後スリープ状態に入るので、Activeにするための信号を送るのですが、そのリターンが無いために発生します。
まぁ、きちんとデータを読めてるので問題ないでしょう。
基板設計
さて、ここまで来たら次は基板設計に入っていきます。
今回もp板.comに基板製造依頼をする予定ですので、基板CADはCADLUSを使います。
まずはCADLUS Circuitで回路図を描いていきます。
基本はニキシー管時計を利用しています。
ということでまずはDCDC回路等のベースボードからです。
基本は前のGalileoの時計と同じですが、今回は5Vの降圧回路を省略してモジュールを使うようにしました。
なので5Vの部分がかなりスッキリしましたね。
そして今回は時計用にも流用できるようにちょっとPICやらRTCまわりの回路も残しています。
続いてニキシー管が載る基板の設計に入ります。
今回は温度湿度計ということですので、搭載するニキシー管は4本です。
数字3桁と記号1つの4本ですね。
使用するニキシー管はIN-14と
IN-19Aです。
というのもIN-19Aは”%”や”℃”を表示できる珍しいニキシー管なんです。
そしてこのIN-19Aとサイズをあわせると、どうしても数字表示管はIN-14になっちゃうんですね。
なので、回路も前の時計と似ていますが、ニキシー管が4本に減ったことと、小数点用のFETが追加になっています。
それでは回路ができたので、アートワークに入りましょう。
まずはベースボードのアートワークからです。
基板サイズを前より小さくしたので少し集積度があがりましたね。
次にニキシー管の搭載ボードのアートワークを行います。
こちらはニキシー管の数が減った分かなりすっきりした感じです。
基板発注
それではアートワークが完成したので今回もP板.comに基板の製造依頼をします。
Cadlus Xで作成したデータはそのままP板.comに送ることができます。
2種類の基板を1枚に面付けしてもらって、1セット、5枚の製造です。
今回ちょっと設計に時間がかかってしまったので基板の到着は28日の予定になってしまいました。
それでは基板が届くまでに必要な部品を集めておきましょう。
基板組み立て
1月28日に予定通り基板が到着しました。
今回の基板はNPの印字があったり、レジストに埃?らしきものがかんでいたりと前回の品質からするとちょっと落ちた気がします。
それでも十分使用には耐えられる品質ですので組み立てていきましょう。
まずはベースボードからの組み立てからです。
制御部はedisonで行うので取り付け部品はDCDC回路部分のみとなります。
5Vの降圧はモジュールを使ますので多少は小型化できたような気がします。
続いてニキシー管搭載基板も組み立てていきます。
さて、無事組み立ても無事完了しました。
そしてベース基板とedisonもつないでおきます。
今回は修正は2ヶ所。
といっても1ヶ所は部品を変えればOKだし、もう一箇所はedison接続側のコネクタでGNDが切れてただけなので修正も簡単です。
前回のことを思えば上出来ですね。
なんせ前回はボトムビューとトップビュー間違えて上下逆についてましたからね・・・・
edisonでニキシー管を表示させる
さて、あとは無事に動いてくれればいいのですが、とりあえず点灯用のスケッチを作成するとしましょう。
表示はダイナミック点灯方式です。
loopにはAM2321の読み込みスクリプトが入ってます。
delay関数で待機とか入っているので、ここにダイナミック点灯の処理を入れるとI2C通信が完了するまでニキシー管表示ができなくなってしまいます。
そのため、ニキシー管のダイナミック点灯処理はタイマー処理でまかなうことにしましょう。
そしてドキドキの点灯。
おぉ!
あっさり点灯して表示もばっちりです。
ついでに湿度表示もさせてみました。
湿度点灯もばっちりですね。
ただ、計算したら点灯周期が200msだったので、ちょっとちらつきます。
ということでタイマーの値を修正して50msに修正したらずいぶんきれいに表示されました。
まだ若干ちらつきガ見えますが、これ以上はゴースト消去部分をつめていかないと難しそうです。
このあたりの調整を突き詰めればコレだけでも十分使用に耐えられそうです。
今回はGalileoの時のようなOUTPUTFASTは入れていません。
なのに、Galileoの時ほどちらつきがでないということは、edisonのピン出力はGalieoより早いようです。
実際の速度はその手の計測器を持っていないのでわかりませんが、間違いなくGalileoより使いやすくなってます。
やはりこうなってくるとしっかりした周波数カウンタやオシロが欲しくなりますね。
それではもうちょっと手を加えて、温度、湿度を定期的に切り替えて表示するようにしましょう。
そしてAM2321からデータを更新させるのは10秒ごととさせます。
またしても動画ではちらついているように見えますが、カメラによるもので、実際はほとんどちらつきはありません。
温度、湿度の表示間隔はもう少しあいていてもいいかな?
ですが、とりあえずedisonでI2Cのモジュールとの通信とニキシー管の表示ができました。
最後に
最後に今回edisonで工作をしてみて、基本的な開発はやはりAruduino互換というだけあって非常に作りやすい仕様になっています。
そしてLinuxが動いていてwifiも使えることから、ネットワークを利用したもっと複雑なこともさせられるのじゃないかという展望も感じられます。
さらに、Galileoで悩んだピン出力の速度ですが、計測器が無いのではっきりとはいえませんが、私の感じた限りでは、他PIC等に比べるともう少しといった感はあります。
しかし、十分に使える速度になってきたので、開発のしやすさやや多機能さをさしひいても十分だと思います。
となるとこんなハイスペックなedisonを使ってやっていることが温度湿度の計測と表示だけってちょっと寂しいかな?
Galileoと共にこういった組み込み機器が身近になってくるのはとてもうれしいですね。
CR-Xさん
2015/01/31
ニキシー表示ユニットに組み込むとそのユニットの温度/湿度になるので、Aruduino(これは表示ユニットに組込むでも別でも良くて)から図りたい所まで有線接続って事で良いんですよね?
eulerさん
2015/01/31
AM2321自体にセンサーが入っているのでモジュールの場所の温度・湿度を計測します。
基本的にこの基板は熱を持つような箇所はないので基板上に設置しても問題はないと思ってます。
ただ、ケーシングとかを考えるとAM2321は有線でケース外に出してやったほうがいいかもしれませんね。
ちなみに私はedisonから有線で10cmくらい横に放り出してます。
CR-Xさん
2015/01/31
しかし、プログラム組んで基板まで作って工作をしたのが実用的に動いてると言うのが素晴らしいです。しかも以前のニキシー管時計とお揃いのデザインだし(^o^)丿
CR-Xさん
2015/01/31
CR-Xさん
2015/01/31
jakeさん
2015/01/31
ガリレオから実装が簡単に移植できるんですねー、ソースコードの互換性は案外高そうですね。
ちばとどさん
2015/01/31
自作部分の電源で、市販ユニットを活用するのもよいアイディアですね。
eulerさん
2015/02/01
今回のニキシー管も170Vです。
ただ、DCDC回路による昇圧ですのでFETもひんやりしていて発熱は問題なさそうです。
ケーシングした際のデータ補正はアリかもしれまんせが、データ取るのがめんどくさいかも(w
eulerさん
2015/02/01
ニキシー管のあの温かみのある表示はいいですよね。
galileoもedisonもarduino互換なので、ほぼそのままで流用できます。
この点は過去の資産を流用できる点で非常にありがたいですよね。
eulerさん
2015/02/01
やっぱりgalileoの入出力の遅さは問題があったんでしょうね。
edisonではしっかりそのあたりも改善されてて使いやすくなってます。
5V電源部は93%の高効率って部分に惹かれて組み込んじゃいました。
170Vの昇圧部分はなかなかモジュール使おうかと思うようなものがないですね。
ここも小型化できればもっと小さくできるんでしょうけど・・・